{"version":3,"sources":["webpack:///webapp.39a6bdc7d0de5d9183da.js","webpack:///webpack/bootstrap 39a6bdc7d0de5d9183da","webpack:///./node_modules/react/react.js","webpack:///./app/enums.js","webpack:///./node_modules/console-browserify/index.js","webpack:///./config/i18n/editionMap.js","webpack:///./app/common/selectors/appSelector.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/react-redux/es/utils/PropTypes.js","webpack:///./node_modules/react-redux/es/index.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/fbjs/lib/warning.js","webpack:///./node_modules/react-dom/lib/reactProdInvariant.js","webpack:///./app/constants.js","webpack:///./node_modules/reselect/lib/index.js","webpack:///./app/common/selectors/authenticationSelectors.js","webpack:///./node_modules/bluebird/js/browser/bluebird.js","webpack:///./app/lib/util/isEmpty.js","webpack:///./app/common/selectors/pageSelector.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/object-assign/index.js","webpack:///./config/index.js","webpack:///./app/common/page/actions/index.js","webpack:///./app/lib/format/queryString.js","webpack:///./app/common/actions/appActions.js","webpack:///./app/common/injectIntl.js","webpack:///./node_modules/react-dom/lib/ReactDOMComponentTree.js","webpack:///./app/common/actions/authenticationActions.js","webpack:///./app/common/selectors/routingSelector.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/react-router/lib/routerWarning.js","webpack:///./app/common/selectors/oneIdSelector.js","webpack:///./app/common/PropTypes.js","webpack:///./app/common/selectors/bootstrapSelector.js","webpack:///./node_modules/react-helmet/lib/Helmet.js","webpack:///./node_modules/fbjs/lib/ExecutionEnvironment.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./app/lib/format/dateFormat.js","webpack:///./app/lib/omniture/index.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./app/common/actions/oneIdActions.js","webpack:///./node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/react-dom/lib/ReactInstrumentation.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/react-dom/lib/ReactUpdates.js","webpack:///./node_modules/history/node_modules/warning/browser.js","webpack:///./app/lib/api/cache/requestCache.js","webpack:///./app/lib/api/requestProxy.js","webpack:///./app/lib/util/localStorage.js","webpack:///./app/lib/auth/streamHasAuthType.js","webpack:///./app/common/selectors/selectedContentSelector.js","webpack:///./app/common/selectors/flagsSelector.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/react/lib/ReactCurrentOwner.js","webpack:///./node_modules/react-dom/lib/SyntheticEvent.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./app/lib/oneId/index.js","webpack:///./app/common/selectors/providerSelector.js","webpack:///./app/common/selectors/analyticsSelectors.js","webpack:///./app/common/actions/apiAction.js","webpack:///./app/common/selectors/heroSelector.js","webpack:///./app/common/page/common/MainContainer.js","webpack:///./node_modules/react-router/lib/RouteUtils.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./app/lib/auth/getContentId.js","webpack:///./app/lib/util/canUseDOM.js","webpack:///./app/common/selectors/selectedStreamSelector.js","webpack:///./app/common/scheduleModule/actions/index.js","webpack:///./app/lib/auth/contentContainsStream.js","webpack:///./app/lib/ui/scrollTo.js","webpack:///./app/webapp/common/playable.js","webpack:///./node_modules/react-dom/lib/PooledClass.js","webpack:///./node_modules/react-router/lib/InternalPropTypes.js","webpack:///./node_modules/history/lib/Actions.js","webpack:///./node_modules/history/lib/PathUtils.js","webpack:///./node_modules/react-router-redux/lib/index.js","webpack:///./app/lib/format/addQueryToUrl.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/loglevel/lib/loglevel.js","webpack:///./app/lib/api/cache/fallbackCache.js","webpack:///./app/lib/util/perf.js","webpack:///./app/common/ads/BannerAd.js","webpack:///./app/lib/auth/authStateKnown.js","webpack:///./node_modules/react/lib/React.js","webpack:///./node_modules/react/lib/reactProdInvariant.js","webpack:///./node_modules/react/lib/ReactElement.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react-dom/lib/DOMProperty.js","webpack:///./node_modules/react-dom/lib/ReactReconciler.js","webpack:///./node_modules/react-dom/lib/DOMLazyTree.js","webpack:///./node_modules/react-router/lib/index.js","webpack:///./node_modules/react-router/lib/PatternUtils.js","webpack:///./node_modules/lodash/intersection.js","webpack:///./app/lib/api/Bootstrap.js","webpack:///./app/lib/api/ClientAPI.js","webpack:///./app/lib/format/sanitizeQuery.js","webpack:///./app/lib/api/SearchAPI.js","webpack:///./app/lib/api/VideoAPI.js","webpack:///./app/lib/api/WatchAPI.js","webpack:///./app/lib/api/GraphQL.js","webpack:///./app/lib/auth/Provider.js","webpack:///./app/queries.js","webpack:///./app/lib/api/index.js","webpack:///./app/lib/url-adapter/toAbsoluteURL.js","webpack:///./app/common/selectors/fanSelector.js","webpack:///./app/common/ads/actions/index.js","webpack:///./node_modules/cookie-cutter/index.js","webpack:///./node_modules/lodash/uniq.js","webpack:///./node_modules/intl-format-cache/lib/index.js","webpack:///./node_modules/react-intl/lib/index.es.js","webpack:///./app/common/schedule/actions/index.js","webpack:///./app/common/schedule/StatusFilter.js","webpack:///./app/lib/auth/locationBlackedOutForContent.js","webpack:///./app/webapp/player/actions/index.js","webpack:///./app/common/selectors/fanAutoStartSelector.js","webpack:///./app/common/page/buckets/BucketListContainer.js","webpack:///./node_modules/fbjs/lib/emptyObject.js","webpack:///./node_modules/react-dom/lib/EventPropagators.js","webpack:///./node_modules/react-dom/lib/EventPluginHub.js","webpack:///./node_modules/react-dom/lib/SyntheticUIEvent.js","webpack:///./node_modules/react-dom/lib/ReactInstanceMap.js","webpack:///./node_modules/hoist-non-react-statics/index.js","webpack:///./app/lib/format/apiDateFormatter.js","webpack:///./node_modules/moment/moment.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/selectn/index.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./app/common/selectors/apiParamsSelector.js","webpack:///./app/webapp/common/video-player/player-tech/BrightcovePlayer/index.js","webpack:///./app/webapp/common/video-player/index.js","webpack:///./app/lib/auth/canPlayContent.js","webpack:///./app/lib/auth/canPlayStream.js","webpack:///./node_modules/react-dom/lib/Transaction.js","webpack:///./node_modules/react-dom/lib/SyntheticMouseEvent.js","webpack:///./node_modules/react-dom/lib/setInnerHTML.js","webpack:///./node_modules/react-dom/lib/escapeTextContentForBrowser.js","webpack:///./node_modules/react-dom/lib/ReactBrowserEventEmitter.js","webpack:///./node_modules/react-router/lib/deprecateObjectProperties.js","webpack:///./node_modules/history/lib/ExecutionEnvironment.js","webpack:///./node_modules/history/lib/useQueries.js","webpack:///./node_modules/react-router/lib/RouterContext.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./app/lib/metrics/newRelicEventBus.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./app/lib/auth/streamHasDTCPackage.js","webpack:///./app/lib/util/getBamAuthConfig.js","webpack:///./node_modules/lodash/uniqBy.js","webpack:///./app/lib/auth/shallowCheckAuthentication.js","webpack:///./app/common/LinkWithFlags.js","webpack:///./app/common/selectors/playingStreamSelector.js","webpack:///./app/common/selectors/pickerStreamsSelector.js","webpack:///./app/common/ads/InContentAd.js","webpack:///./app/webapp/lib/format/index.js","webpack:///./app/webapp/page/hero/Hero.js","webpack:///./app/webapp/common/BAMIFrame.js","webpack:///./app/common/page/common/TopLayoutContainer.js","webpack:///./app/common/selectors/playerSelector.js","webpack:///./app/common/Tag.js","webpack:///./app/common/search/SuggestionItem.js","webpack:///./app/common/search/SearchSuggestionGroup.js","webpack:///./app/common/search/SearchContainer.js","webpack:///./app/webapp/modal/messaging/ModalMessaging.js","webpack:///./app/webapp/modal/messaging/PopUpBlockerWarning.js","webpack:///./app/webapp/modal/messaging/FlashWarning.js","webpack:///./app/webapp/modal/messaging/BlackoutMap.js","webpack:///./app/webapp/modal/messaging/BroadcastPicker.js","webpack:///./app/webapp/modal/activation/IframeAuth.js","webpack:///./app/webapp/modal/messaging/Paywall.js","webpack:///./app/webapp/modal/messaging/MessagingContainer.js","webpack:///./node_modules/react-slick/lib/utils/innerSliderUtils.js","webpack:///./node_modules/node-libs-browser/node_modules/util/util.js","webpack:///./node_modules/react/lib/ReactComponent.js","webpack:///./node_modules/react/lib/ReactNoopUpdateQueue.js","webpack:///./node_modules/react-dom/lib/EventPluginRegistry.js","webpack:///./node_modules/react-dom/lib/EventPluginUtils.js","webpack:///./node_modules/react-dom/lib/ReactErrorUtils.js","webpack:///./node_modules/react-dom/lib/getEventTarget.js","webpack:///./node_modules/react-dom/lib/isEventSupported.js","webpack:///./node_modules/react-dom/lib/getEventModifierState.js","webpack:///./node_modules/react-dom/lib/DOMChildrenOperations.js","webpack:///./node_modules/react-dom/lib/DOMNamespaces.js","webpack:///./node_modules/react-dom/lib/createMicrosoftUnsafeLocalFunction.js","webpack:///./node_modules/react-dom/lib/LinkedValueUtils.js","webpack:///./node_modules/react-dom/lib/ReactComponentEnvironment.js","webpack:///./node_modules/fbjs/lib/shallowEqual.js","webpack:///./node_modules/react-dom/lib/shouldUpdateReactComponent.js","webpack:///./node_modules/react-dom/lib/KeyEscapeUtils.js","webpack:///./node_modules/react-dom/lib/ReactUpdateQueue.js","webpack:///./node_modules/react-dom/lib/validateDOMNesting.js","webpack:///./node_modules/react-dom/lib/getEventCharCode.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/react-redux/es/utils/warning.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/redux/es/createStore.js","webpack:///./node_modules/redux/es/combineReducers.js","webpack:///./node_modules/redux/es/bindActionCreators.js","webpack:///./node_modules/redux/es/compose.js","webpack:///./node_modules/redux/es/applyMiddleware.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/redux/es/index.js","webpack:///./node_modules/react-router/lib/PropTypes.js","webpack:///./node_modules/history/lib/DOMUtils.js","webpack:///./node_modules/history/lib/DOMStateStorage.js","webpack:///./node_modules/define-properties/index.js","webpack:///./node_modules/history/lib/runTransitionHook.js","webpack:///./node_modules/history/lib/deprecate.js","webpack:///./node_modules/react-router/lib/createTransitionManager.js","webpack:///./node_modules/react-router/lib/AsyncUtils.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./app/lib/auth/getAccessMethodFromAuthTypes.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/superagent/lib/client.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./app/lib/format/getMinutesUntilStart.js","webpack:///./app/lib/format/normalizeQueryString.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./app/common/actions/listingsActions.js","webpack:///./app/lib/api/PageAPI.js","webpack:///./node_modules/lodash/findIndex.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/watch-authenticators/build/Authenticator.js","webpack:///./app/common/actions/scoringActions.js","webpack:///./app/webapp/common/video-player/constants.js","webpack:///./app/webapp/common/video-player/player-tech/PlayerBase.js","webpack:///./app/lib/auth/jwtDecodeToken.js","webpack:///./app/lib/auth/hasTDA.js","webpack:///./app/common/actions/fanActions.js","webpack:///./app/lib/util/concatAll.js","webpack:///./app/webapp/player/util/getContentPlaylistFromBuckets.js","webpack:///./app/webapp/player/util/getPrerollSetting.js","webpack:///./app/lib/util/getSiteSectionId.js","webpack:///./app/webapp/player/util/getPlayerOptions.js","webpack:///./app/webapp/player/util/getPlayerBackgroundStyle.js","webpack:///./app/webapp/player/util/getAdobeDCRConfig.js","webpack:///./app/webapp/player/util/index.js","webpack:///./app/common/ads/AdContainer.js","webpack:///./app/common/Logo.js","webpack:///./app/lib/auth/isContentLocked.js","webpack:///./app/lib/auth/isStreamStatus.js","webpack:///./app/lib/auth/isUserAuthenticated.js","webpack:///./app/lib/auth/getFirstStreamUserAuth.js","webpack:///./app/lib/streamPicker/handleSingleStreamAuthentication.js","webpack:///./app/lib/streamPicker/getPlayerUrl.js","webpack:///./app/lib/streamPicker/openStreamPicker.js","webpack:///./app/lib/streamPicker/handleMultipleStreamAuthentication.js","webpack:///./app/lib/streamPicker/selectStreamForAuthUsers.js","webpack:///./app/lib/streamPicker/filterPickerStreamsById.js","webpack:///./app/lib/streamPicker/index.js","webpack:///./app/common/ResponsiveThumbnail.js","webpack:///./app/webapp/player/connectPlayer.js","webpack:///./app/webapp/common/authenticationAware.js","webpack:///./node_modules/assert/assert.js","webpack:///./node_modules/react/lib/canDefineProperty.js","webpack:///./node_modules/react/lib/ReactElementSymbol.js","webpack:///./node_modules/react/lib/getIteratorFn.js","webpack:///./node_modules/react/lib/ReactPropTypeLocationNames.js","webpack:///./node_modules/react-dom/lib/ReactDOMComponentFlags.js","webpack:///./node_modules/react-dom/lib/accumulateInto.js","webpack:///./node_modules/react-dom/lib/forEachAccumulated.js","webpack:///./node_modules/react-dom/lib/getTextContentAccessor.js","webpack:///./node_modules/react-dom/lib/CallbackQueue.js","webpack:///./node_modules/react-dom/lib/ReactFeatureFlags.js","webpack:///./node_modules/react-dom/lib/isTextInputElement.js","webpack:///./node_modules/react-dom/lib/ViewportMetrics.js","webpack:///./node_modules/react-dom/lib/setTextContent.js","webpack:///./node_modules/fbjs/lib/focusNode.js","webpack:///./node_modules/react-dom/lib/CSSProperty.js","webpack:///./node_modules/react-dom/lib/DOMPropertyOperations.js","webpack:///./node_modules/react-dom/lib/ReactDOMSelect.js","webpack:///./node_modules/react-dom/lib/instantiateReactComponent.js","webpack:///./node_modules/react-dom/lib/ReactNodeTypes.js","webpack:///./node_modules/react-dom/lib/ReactEmptyComponent.js","webpack:///./node_modules/react-dom/lib/ReactHostComponent.js","webpack:///./node_modules/react-dom/lib/traverseAllChildren.js","webpack:///./node_modules/react/lib/ReactComponentTreeHook.js","webpack:///./node_modules/fbjs/lib/EventListener.js","webpack:///./node_modules/react-dom/lib/ReactInputSelection.js","webpack:///./node_modules/fbjs/lib/getActiveElement.js","webpack:///./node_modules/react-dom/lib/ReactMount.js","webpack:///./node_modules/react-dom/lib/getHostComponentFromComposite.js","webpack:///./node_modules/redux/es/utils/warning.js","webpack:///./node_modules/history/lib/createHashHistory.js","webpack:///./node_modules/history/lib/createDOMHistory.js","webpack:///./node_modules/history/lib/createHistory.js","webpack:///./node_modules/object-keys/index.js","webpack:///./node_modules/object-keys/isArguments.js","webpack:///./node_modules/regexp.prototype.flags/implementation.js","webpack:///./node_modules/regexp.prototype.flags/polyfill.js","webpack:///./node_modules/react-router/lib/makeStateWithLocation.js","webpack:///./node_modules/react-router/lib/RouterUtils.js","webpack:///./node_modules/react-router/lib/Link.js","webpack:///./node_modules/react-router/lib/Redirect.js","webpack:///./node_modules/react-router/lib/createMemoryHistory.js","webpack:///./node_modules/history/lib/useBasename.js","webpack:///./node_modules/react-router/lib/useRouterHistory.js","webpack:///./node_modules/react-router/lib/createRouterHistory.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./app/lib/omniture/format.js","webpack:///./node_modules/react-router-redux/lib/reducer.js","webpack:///./node_modules/react-router-redux/lib/actions.js","webpack:///./node_modules/superagent-bluebird-promise/index.js","webpack:///./node_modules/superagent/lib/is-object.js","webpack:///./app/lib/format/removeQueryFromUrl.js","webpack:///./app/lib/format/streamSubtitle.js","webpack:///./app/lib/format/normalizeCountry.js","webpack:///./app/lib/format/getQueryParamsFromString.js","webpack:///./app/lib/format/convertV1ToV3.js","webpack:///./app/lib/format/getStreamForContent.js","webpack:///./app/lib/format/convertV3ToV1.js","webpack:///./app/lib/format/index.js","webpack:///./app/lib/format/convertQueryStringToObject.js","webpack:///./app/lib/format/convertObjectToQueryString.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/lodash/_baseFlatten.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/moment-timezone/node_modules/moment/moment.js","webpack:///./app/lib/format/getContentFromListing.js","webpack:///./app/lib/format/getSiteUrlForPath.js","webpack:///./app/lib/format/getI18nInclude.js","webpack:///./app/lib/format/getMobileGameCastUrlForContent.js","webpack:///./app/lib/format/getAdobePassRedirectUrl.js","webpack:///./node_modules/lodash/_arrayIncludes.js","webpack:///./node_modules/lodash/_baseFindIndex.js","webpack:///./node_modules/lodash/_arrayIncludesWith.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./app/lib/api/cache/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/memcached/lib/utils.js","webpack:///./app/lib/whitelist/index.js","webpack:///./app/common/selectors/whitelistSelector.js","webpack:///./config/appNames.js","webpack:///./app/common/selectors/adsSelector.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/lodash/toInteger.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./app/lib/auth/Authenticator.js","webpack:///./node_modules/watch-authenticators/node_modules/lodash.assign/index.js","webpack:///./node_modules/lodash.isfunction/index.js","webpack:///./app/lib/auth/PreAuthZ.js","webpack:///./node_modules/lodash/_baseUniq.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./app/common/page/AccountSelector.js","webpack:///./app/lib/util/getDeviceTypeFromUA.js","webpack:///./app/lib/util/isSafariBrowser.js","webpack:///./app/lib/util/getAndroidVersionFromUserAgent.js","webpack:///./app/lib/util/sortByRank.js","webpack:///./app/lib/util/getAdsConfigByEdition.js","webpack:///./app/lib/util/getPrerollConfigByEdition.js","webpack:///./app/lib/util/getAdsConfigByAdProvider.js","webpack:///./app/lib/util/hasTier.js","webpack:///./app/lib/util/hasObj.js","webpack:///./app/lib/url-adapter/isStitcherUrl.js","webpack:///./app/lib/url-adapter/isArtworkUrl.js","webpack:///./app/lib/url-adapter/isCombinerUrl.js","webpack:///./app/lib/url-adapter/canUseCombiner.js","webpack:///./app/lib/url-adapter/index.js","webpack:///./node_modules/intl-messageformat/index.js","webpack:///./node_modules/intl-messageformat/lib/utils.js","webpack:///./app/common/selectors/scheduleModuleBucketsSelector.js","webpack:///./app/common/selectors/appBaseUrlSelector.js","webpack:///./app/common/selectors/currentUrlSelector.js","webpack:///./app/common/social/EmailShare.js","webpack:///./app/common/social/FacebookShare.js","webpack:///./app/common/social/TwitterShare.js","webpack:///./app/common/social/SharePalette.js","webpack:///./app/webapp/scheduleModule/ScheduleEventCard.js","webpack:///./app/webapp/scheduleModule/ScheduleModuleContainer.js","webpack:///./app/common/BucketHeader.js","webpack:///./app/webapp/page/buckets/BucketHeaderContainer.js","webpack:///./app/common/alert/Alert.js","webpack:///./app/webapp/alert/UpcomingAlert.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/isEmpty.js","webpack:///./app/webapp/player/globalVideoElement.js","webpack:///./app/common/page/buckets/Bucket.js","webpack:///./app/common/page/search/SearchBucketsHeader.js","webpack:///./app/common/page/buckets/CollectionBucketHeader.js","webpack:///./app/common/AnchorWithFlags.js","webpack:///./app/common/page/buckets/Tile.js","webpack:///./app/webapp/common/Stamp.js","webpack:///./app/webapp/lib/format/contentSubtitle.js","webpack:///./app/lib/api/newRelicApi.js","webpack:///./app/lib/native-bridge/espnapp.js","webpack:///./app/common/page/hero/ContentMetadataLarge.js","webpack:///./app/common/page/search/SearchResultsContainer.js","webpack:///./app/lib/ui/isChromeOrSafari.js","webpack:///./app/webapp/branding/ProviderLogo.js","webpack:///./app/webapp/branding/ProviderLogoPlayback.js","webpack:///./app/webapp/branding/Logout.js","webpack:///./app/webapp/branding/ProviderSettings.js","webpack:///./app/webapp/branding/BrandingContainer.js","webpack:///./app/common/schedule/FilterGroupContainer.js","webpack:///./app/common/schedule/FilterGroup.js","webpack:///./app/common/Select.js","webpack:///./app/common/schedule/isPacRimOrCarib.js","webpack:///./app/common/schedule/ScheduleCategoryContainer.js","webpack:///./node_modules/lodash/groupBy.js","webpack:///./app/common/selectors/darkThemeSelector.js","webpack:///./node_modules/react-modal/lib/index.js","webpack:///./node_modules/react-modal/lib/helpers/tabbable.js","webpack:///./node_modules/lodash.assign/index.js","webpack:///./node_modules/lodash.keys/index.js","webpack:///./app/common/chooseProvider/ProviderDialog.js","webpack:///./app/common/search/SearchFilter.js","webpack:///./app/common/chooseProvider/Provider.js","webpack:///./app/common/chooseProvider/ProviderList.js","webpack:///./app/common/chooseProvider/Tier1Provider.js","webpack:///./app/common/chooseProvider/Tier1ProviderGrid.js","webpack:///./app/common/chooseProvider/DMVPDButton.js","webpack:///./node_modules/enquire.js/src/Util.js","webpack:///./app/webapp/syndicated/actions/index.js","webpack:///./app/webapp/syndicated/SyndicatedPlayer/index.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./app/webapp/syndicated/SyndicatedPlayerAPIProxy.js","webpack:///./app/common/page/AdobePassProxyLogin.js","webpack:///./app/lib/observe/index.js","webpack:///./app/lib/auth/providerInfoKnown.js","webpack:///./app/lib/observe/trackingObserver.js","webpack:///./app/lib/observe/observeStore.js","webpack:///./app/lib/ui/loading.js","webpack:///./app/lib/i18n/en-us.js","webpack:///./app/lib/i18n/index.js","webpack:///./app/common/IntlProvider.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./app/lib/api/AdobeClientlessAPI.js","webpack:///./app/webapp/page/Activate/util/getMarkettingOptInStatus.js","webpack:///./app/lib/api/oneIdApi.js","webpack:///./app/webapp/page/Activate/actions.js","webpack:///./app/webapp/page/Activate/reducer.js","webpack:///./app/common/ads/reducers/index.js","webpack:///./app/common/page/reducers/index.js","webpack:///./app/webapp/player/reducers/index.js","webpack:///./app/common/actions/clientActions.js","webpack:///./app/common/schedule/reducers/index.js","webpack:///./app/common/scheduleModule/reducers/index.js","webpack:///./app/common/reducers/appReducer.js","webpack:///./app/common/reducers/authenticationReducer.js","webpack:///./app/common/reducers/fanReducer.js","webpack:///./app/common/reducers/networksReducer.js","webpack:///./app/common/reducers/lastActionReducer.js","webpack:///./app/common/reducers/oneIdReducer.js","webpack:///./app/common/reducers/providerDialogReducer.js","webpack:///./app/common/NetworkLogo/reducers/index.js","webpack:///./app/store.js","webpack:///./app/lib/ui/openFeedbackPage.js","webpack:///./app/common/createLandingPage.js","webpack:///./app/webapp/routes.js","webpack:///./app/webapp/client.js","webpack:///./app/polyfills.js","webpack:///./app/lib/api/request.js","webpack:///./app/webapp/page/Activate/constants.js","webpack:///./app/webapp/page/Activate/util/getSuccessText.js","webpack:///./app/webapp/page/Activate/util/isAdobeRegCode.js","webpack:///./app/webapp/page/Activate/util/isOneIdRegCode.js","webpack:///./app/webapp/page/Activate/util/isSubscribeInEntitlementPath.js","webpack:///./app/common/middlewares/trackingMiddleware.js","webpack:///./app/common/NetworkLogo/actions.js","webpack:///./app/lib/api/NetworkImageData.js","webpack:///./app/common/reducers/index.js","webpack:///./app/common/page/Features.js","webpack:///./app/common/page/Search.js","webpack:///./app/webapp/page/Sid.js","webpack:///./app/webapp/drawer/TabPane.js","webpack:///./app/webapp/drawer/TabContainer.js","webpack:///./app/webapp/drawer/Drawer.js","webpack:///./app/webapp/page/hero/HeroPlaybackPage.js","webpack:///./app/webapp/page/hero/HeroPlaybackPageContainer.js","webpack:///./app/webapp/page/Player.js","webpack:///./app/common/refreshable.js","webpack:///./app/common/schedule/SectionHeader.js","webpack:///./app/common/page/Schedule.js","webpack:///./app/webapp/page/ShortStopLive.js","webpack:///./app/webapp/page/Activate/Success.js","webpack:///./app/webapp/page/Activate/Error.js","webpack:///./app/webapp/page/Activate/Activation.js","webpack:///./app/webapp/page/Activate/index.js","webpack:///./app/webapp/page/Feedback.js","webpack:///./app/webapp/page/Roadblock.js","webpack:///./app/webapp/page/UnsupportedPage.js","webpack:///./app/common/selectors/carouselSelector.js","webpack:///./app/common/page/carousel/NextNavButton.js","webpack:///./app/common/page/carousel/PrevNavButton.js","webpack:///./app/common/page/carousel/Carousel.js","webpack:///./app/common/page/Originals.js","webpack:///./app/common/page/hero/SuperHero/index.js","webpack:///./app/common/page/Catalog.js","webpack:///./app/webapp/page/AffiliatePageExample.js","webpack:///./app/common/RootApplicationShell.js","webpack:///./server/templates/dotComAnalyticsStub.js","webpack:///./app/webapp/subShell/BasicShell.js","webpack:///./app/common/ads/OverlayAd.js","webpack:///./server/fetchComponentData.js","webpack:///./app/common/ComponentDataContainer.js","webpack:///./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/date-now/index.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/react/lib/ReactChildren.js","webpack:///./node_modules/react/lib/PooledClass.js","webpack:///./node_modules/react/lib/traverseAllChildren.js","webpack:///./node_modules/react/lib/KeyEscapeUtils.js","webpack:///./node_modules/react/lib/ReactPureComponent.js","webpack:///./node_modules/react/lib/ReactClass.js","webpack:///./node_modules/react/lib/ReactDOMFactories.js","webpack:///./node_modules/react/lib/ReactPropTypes.js","webpack:///./node_modules/react/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react/lib/ReactVersion.js","webpack:///./node_modules/react/lib/onlyChild.js","webpack:///./node_modules/react-dom/lib/ReactDOM.js","webpack:///./node_modules/react-dom/lib/ReactDefaultInjection.js","webpack:///./node_modules/react-dom/lib/ARIADOMPropertyConfig.js","webpack:///./node_modules/react-dom/lib/BeforeInputEventPlugin.js","webpack:///./node_modules/react-dom/lib/FallbackCompositionState.js","webpack:///./node_modules/react-dom/lib/SyntheticCompositionEvent.js","webpack:///./node_modules/react-dom/lib/SyntheticInputEvent.js","webpack:///./node_modules/react-dom/lib/ChangeEventPlugin.js","webpack:///./node_modules/react-dom/lib/ReactRef.js","webpack:///./node_modules/react-dom/lib/ReactOwner.js","webpack:///./node_modules/react-dom/lib/DefaultEventPluginOrder.js","webpack:///./node_modules/react-dom/lib/EnterLeaveEventPlugin.js","webpack:///./node_modules/react-dom/lib/HTMLDOMPropertyConfig.js","webpack:///./node_modules/react-dom/lib/ReactComponentBrowserEnvironment.js","webpack:///./node_modules/react-dom/lib/Danger.js","webpack:///./node_modules/fbjs/lib/createNodesFromMarkup.js","webpack:///./node_modules/fbjs/lib/createArrayFromMixed.js","webpack:///./node_modules/fbjs/lib/getMarkupWrap.js","webpack:///./node_modules/react-dom/lib/ReactDOMIDOperations.js","webpack:///./node_modules/react-dom/lib/ReactDOMComponent.js","webpack:///./node_modules/react-dom/lib/AutoFocusUtils.js","webpack:///./node_modules/react-dom/lib/CSSPropertyOperations.js","webpack:///./node_modules/fbjs/lib/camelizeStyleName.js","webpack:///./node_modules/fbjs/lib/camelize.js","webpack:///./node_modules/react-dom/lib/dangerousStyleValue.js","webpack:///./node_modules/fbjs/lib/hyphenateStyleName.js","webpack:///./node_modules/fbjs/lib/hyphenate.js","webpack:///./node_modules/fbjs/lib/memoizeStringOnly.js","webpack:///./node_modules/react-dom/lib/quoteAttributeValueForBrowser.js","webpack:///./node_modules/react-dom/lib/ReactEventEmitterMixin.js","webpack:///./node_modules/react-dom/lib/getVendorPrefixedEventName.js","webpack:///./node_modules/react-dom/lib/ReactDOMInput.js","webpack:///./node_modules/react-dom/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-dom/lib/ReactDOMOption.js","webpack:///./node_modules/react-dom/lib/ReactDOMTextarea.js","webpack:///./node_modules/react-dom/lib/ReactMultiChild.js","webpack:///./node_modules/react-dom/lib/ReactChildReconciler.js","webpack:///./node_modules/react-dom/lib/ReactCompositeComponent.js","webpack:///./node_modules/react-dom/lib/getNextDebugID.js","webpack:///./node_modules/react-dom/lib/ReactElementSymbol.js","webpack:///./node_modules/react-dom/lib/getIteratorFn.js","webpack:///./node_modules/react-dom/lib/flattenChildren.js","webpack:///./node_modules/react-dom/lib/ReactServerRenderingTransaction.js","webpack:///./node_modules/react-dom/lib/ReactServerUpdateQueue.js","webpack:///./node_modules/react-dom/lib/ReactDOMEmptyComponent.js","webpack:///./node_modules/react-dom/lib/ReactDOMTreeTraversal.js","webpack:///./node_modules/react-dom/lib/ReactDOMTextComponent.js","webpack:///./node_modules/react-dom/lib/ReactDefaultBatchingStrategy.js","webpack:///./node_modules/react-dom/lib/ReactEventListener.js","webpack:///./node_modules/fbjs/lib/getUnboundedScrollPosition.js","webpack:///./node_modules/react-dom/lib/ReactInjection.js","webpack:///./node_modules/react-dom/lib/ReactReconcileTransaction.js","webpack:///./node_modules/react-dom/lib/ReactDOMSelection.js","webpack:///./node_modules/react-dom/lib/getNodeForCharacterOffset.js","webpack:///./node_modules/fbjs/lib/containsNode.js","webpack:///./node_modules/fbjs/lib/isTextNode.js","webpack:///./node_modules/fbjs/lib/isNode.js","webpack:///./node_modules/react-dom/lib/SVGDOMPropertyConfig.js","webpack:///./node_modules/react-dom/lib/SelectEventPlugin.js","webpack:///./node_modules/react-dom/lib/SimpleEventPlugin.js","webpack:///./node_modules/react-dom/lib/SyntheticAnimationEvent.js","webpack:///./node_modules/react-dom/lib/SyntheticClipboardEvent.js","webpack:///./node_modules/react-dom/lib/SyntheticFocusEvent.js","webpack:///./node_modules/react-dom/lib/SyntheticKeyboardEvent.js","webpack:///./node_modules/react-dom/lib/getEventKey.js","webpack:///./node_modules/react-dom/lib/SyntheticDragEvent.js","webpack:///./node_modules/react-dom/lib/SyntheticTouchEvent.js","webpack:///./node_modules/react-dom/lib/SyntheticTransitionEvent.js","webpack:///./node_modules/react-dom/lib/SyntheticWheelEvent.js","webpack:///./node_modules/react-dom/lib/ReactDOMContainerInfo.js","webpack:///./node_modules/react-dom/lib/ReactDOMFeatureFlags.js","webpack:///./node_modules/react-dom/lib/ReactMarkupChecksum.js","webpack:///./node_modules/react-dom/lib/adler32.js","webpack:///./node_modules/react-dom/lib/ReactVersion.js","webpack:///./node_modules/react-dom/lib/findDOMNode.js","webpack:///./node_modules/react-dom/lib/renderSubtreeIntoContainer.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-redux/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/warning/browser.js","webpack:///./node_modules/react-router/lib/Router.js","webpack:///./node_modules/deep-equal/index.js","webpack:///./node_modules/object-keys/implementation.js","webpack:///./node_modules/is-arguments/index.js","webpack:///./node_modules/object-is/index.js","webpack:///./node_modules/is-regex/index.js","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./node_modules/regexp.prototype.flags/index.js","webpack:///./node_modules/regexp.prototype.flags/shim.js","webpack:///./node_modules/is-date-object/index.js","webpack:///./node_modules/history/lib/AsyncUtils.js","webpack:///./node_modules/history/lib/createLocation.js","webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./node_modules/react-router/lib/computeChangedRoutes.js","webpack:///./node_modules/react-router/lib/TransitionUtils.js","webpack:///./node_modules/react-router/lib/isActive.js","webpack:///./node_modules/react-router/lib/getComponents.js","webpack:///./node_modules/react-router/lib/matchRoutes.js","webpack:///./node_modules/react-router/lib/getRouteParams.js","webpack:///./node_modules/react-router/lib/IndexLink.js","webpack:///./node_modules/react-router/lib/withRouter.js","webpack:///./node_modules/react-router/lib/IndexRedirect.js","webpack:///./node_modules/react-router/lib/IndexRoute.js","webpack:///./node_modules/react-router/lib/Route.js","webpack:///./node_modules/react-router/lib/History.js","webpack:///./node_modules/react-router/lib/Lifecycle.js","webpack:///./node_modules/react-router/lib/RouteContext.js","webpack:///./node_modules/react-router/lib/useRoutes.js","webpack:///./node_modules/react-router/lib/RoutingContext.js","webpack:///./node_modules/react-router/lib/match.js","webpack:///./node_modules/history/lib/createMemoryHistory.js","webpack:///./node_modules/react-router/lib/applyRouterMiddleware.js","webpack:///./node_modules/react-router/lib/browserHistory.js","webpack:///./node_modules/history/lib/createBrowserHistory.js","webpack:///./node_modules/react-router/lib/hashHistory.js","webpack:///./node_modules/react-router-scroll/lib/index.js","webpack:///./node_modules/react-router-scroll/lib/ScrollBehaviorContainer.js","webpack:///./node_modules/scroll-behavior/lib/ScrollBehavior.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/dom-helpers/query/scrollLeft.js","webpack:///./node_modules/dom-helpers/query/scrollTop.js","webpack:///./node_modules/dom-helpers/util/requestAnimationFrame.js","webpack:///./config/env.config.js","webpack:///./node_modules/react-router-redux/lib/sync.js","webpack:///./node_modules/react-router-redux/lib/middleware.js","webpack:///./node_modules/component-emitter/index.js","webpack:///./node_modules/superagent/lib/request-base.js","webpack:///./node_modules/superagent/lib/request.js","webpack:///./node_modules/moment/locale ^$","webpack:///./node_modules/lodash/pick.js","webpack:///./node_modules/lodash/_basePick.js","webpack:///./node_modules/lodash/_basePickBy.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash/_baseToString.js","webpack:///./node_modules/lodash/_baseSet.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_flatRest.js","webpack:///./node_modules/lodash/flatten.js","webpack:///./node_modules/lodash/_isFlattenable.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/size.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/isString.js","webpack:///./node_modules/lodash/_stringSize.js","webpack:///./node_modules/lodash/_asciiSize.js","webpack:///./node_modules/lodash/_hasUnicode.js","webpack:///./node_modules/lodash/_unicodeSize.js","webpack:///./node_modules/moment-timezone/index.js","webpack:///./node_modules/moment-timezone/moment-timezone.js","webpack:///./node_modules/moment-timezone/node_modules/moment/locale ^$","webpack:///./node_modules/moment-timezone/data/packed/latest.json","webpack:///./node_modules/curry2/index.js","webpack:///./node_modules/fast-bind/bind-loop.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./node_modules/debug/src/debug.js","webpack:///./node_modules/ms/index.js","webpack:///./node_modules/brackets2dots/index.js","webpack:///./node_modules/dotsplit.js/index.js","webpack:///./node_modules/lodash/_baseIntersection.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_baseIndexOf.js","webpack:///./node_modules/lodash/_baseIsNaN.js","webpack:///./node_modules/lodash/_strictIndexOf.js","webpack:///./node_modules/lodash/_castArrayLikeObject.js","webpack:///./node_modules/superagent-cache/superagentCache.js","webpack:///./node_modules/superagent-cache/utils.js","webpack:///./node_modules/superagent-cache/node_modules/superagent/lib/client.js","webpack:///./node_modules/superagent-cache/node_modules/component-emitter/index.js","webpack:///./node_modules/reduce-component/index.js","webpack:///./node_modules/superagent-cache/node_modules/cache-service-cache-module/cacheModule.js","webpack:///./node_modules/cache-service-cache-module/cacheModule.js","webpack:///./app/lib/api/cache/memcachedCacheService.js","webpack:///./node_modules/memcached/index.js","webpack:///./node_modules/memcached/lib/memcached.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/hashring/index.js","webpack:///./node_modules/simple-lru-cache/index.js","webpack:///./node_modules/simple-lru-cache/lib/simple_lru.js","webpack:///./node_modules/connection-parse/index.js","webpack:///./node_modules/hashring/package.json","webpack:///./node_modules/memcached/lib/connection.js","webpack:///./node_modules/jackpot/index.js","webpack:///./node_modules/retry/index.js","webpack:///./node_modules/retry/lib/retry.js","webpack:///./node_modules/retry/lib/retry_operation.js","webpack:///./node_modules/jackpot/ms.js","webpack:///./node_modules/snappy/snappy.js","webpack:///./node_modules/bindings/bindings.js","webpack:///./node_modules/file-uri-to-path/index.js","webpack:///./config/watchespn-web-1.0.config.qa.json","webpack:///./config/watchespn-web-1.0.config.json","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/lodash/toFinite.js","webpack:///./node_modules/watch-authenticators/build/index.js","webpack:///./node_modules/watch-authenticators/build/AdobePassAuthenticator.js","webpack:///./node_modules/lodash.difference/index.js","webpack:///./node_modules/watch-authenticators/node_modules/loglevel/lib/loglevel.js","webpack:///./node_modules/watch-authenticators/build/IpAuthenticator.js","webpack:///./node_modules/watch-authenticators/build/WebStorage.js","webpack:///./app/lib/metrics/untimelyLogoutTracker.js","webpack:///./node_modules/lodash/_createSet.js","webpack:///./node_modules/lodash/noop.js","webpack:///./app/common/selectors/networksSelector.js","webpack:///./node_modules/lodash/chunk.js","webpack:///./node_modules/lodash/_baseSlice.js","webpack:///./node_modules/react-side-effect/lib/index.js","webpack:///./node_modules/shallowequal/index.js","webpack:///./node_modules/react-helmet/node_modules/deep-equal/index.js","webpack:///./node_modules/react-helmet/node_modules/deep-equal/lib/keys.js","webpack:///./node_modules/react-helmet/node_modules/deep-equal/lib/is_arguments.js","webpack:///./node_modules/react-helmet/lib/HelmetConstants.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./app/webapp/common/video-player/player-tech/BAMPlayer/index.js","webpack:///./app/webapp/common/video-player/player-tech/BAMPlayer/Loader.js","webpack:///./node_modules/jwt-decode/lib/index.js","webpack:///./node_modules/jwt-decode/lib/base64_url_decode.js","webpack:///./node_modules/jwt-decode/lib/atob.js","webpack:///./node_modules/watch-fanapi/dist/index.js","webpack:///./node_modules/watch-fanapi/dist/FanAPI.js","webpack:///./node_modules/watch-fanapi/node_modules/superagent-bluebird-promise/index.js","webpack:///./node_modules/watch-fanapi/dist/Storage.js","webpack:///./app/webapp/page/Activate/util/generateCommerceFlowUrl.js","webpack:///./node_modules/intl-messageformat/lib/main.js","webpack:///./node_modules/intl-messageformat/lib/core.js","webpack:///./node_modules/intl-messageformat/lib/es5.js","webpack:///./node_modules/intl-messageformat/lib/compiler.js","webpack:///./node_modules/intl-messageformat-parser/index.js","webpack:///./node_modules/intl-messageformat-parser/lib/parser.js","webpack:///./node_modules/intl-messageformat/lib/en.js","webpack:///./node_modules/intl-relativeformat/index.js","webpack:///./node_modules/intl-relativeformat/lib/main.js","webpack:///./node_modules/intl-relativeformat/lib/core.js","webpack:///./node_modules/intl-relativeformat/lib/diff.js","webpack:///./node_modules/intl-relativeformat/lib/es5.js","webpack:///./node_modules/intl-relativeformat/lib/en.js","webpack:///./node_modules/react-intl/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./app/lib/ui/docReady.js","webpack:///./node_modules/redux-thunk/lib/index.js","webpack:///./app/common/actions/networkActions.js","webpack:///./node_modules/lodash/flatMap.js","webpack:///./node_modules/lodash/map.js","webpack:///./node_modules/lodash/_baseMap.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/find.js","webpack:///./node_modules/lodash/_createFind.js","webpack:///./node_modules/lodash/merge.js","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./app/webapp/player/FeedsSelector.js","webpack:///./app/webapp/player/FeedsSelectorAuthPill.js","webpack:///./app/common/selectors/initialEmbedSelector.js","webpack:///./app/common/selectors/onDeckContentSelector.js","webpack:///./app/lib/native-bridge/index.js","webpack:///./app/common/search/SearchResultAsList.js","webpack:///./app/common/DownloadLink.js","webpack:///./node_modules/file-saver/FileSaver.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./app/common/schedule/DateSlider.js","webpack:///./node_modules/lodash/_createAggregator.js","webpack:///./node_modules/lodash/_arrayAggregator.js","webpack:///./node_modules/lodash/_baseAggregator.js","webpack:///./app/lib/format/getListingNameFromStream.js","webpack:///./app/webapp/schedule/ScheduleCategorySection.js","webpack:///./app/common/schedule/ScheduleLink.js","webpack:///./app/webapp/common/schedule/ResponsiveTable.js","webpack:///./node_modules/react-modal/lib/components/Modal.js","webpack:///./node_modules/exenv/index.js","webpack:///./node_modules/react-modal/lib/components/ModalPortal.js","webpack:///./node_modules/react-modal/lib/helpers/focusManager.js","webpack:///./node_modules/react-modal/lib/helpers/scopeTab.js","webpack:///./node_modules/lodash._baseassign/index.js","webpack:///./node_modules/lodash._basecopy/index.js","webpack:///./node_modules/lodash._getnative/index.js","webpack:///./node_modules/lodash.isarguments/index.js","webpack:///./node_modules/lodash.isarray/index.js","webpack:///./node_modules/lodash._createassigner/index.js","webpack:///./node_modules/lodash._bindcallback/index.js","webpack:///./node_modules/lodash._isiterateecall/index.js","webpack:///./node_modules/lodash.restparam/index.js","webpack:///./node_modules/react-modal/lib/helpers/ariaAppHider.js","webpack:///./node_modules/element-class/index.js","webpack:///./node_modules/react-slick/lib/index.js","webpack:///./node_modules/react-slick/lib/slider.js","webpack:///./node_modules/react-slick/lib/inner-slider.js","webpack:///./node_modules/react-slick/lib/initial-state.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/react-slick/lib/track.js","webpack:///./node_modules/react-slick/lib/dots.js","webpack:///./node_modules/react-slick/lib/arrows.js","webpack:///./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./node_modules/json2mq/index.js","webpack:///./node_modules/string-convert/camel2hyphen.js","webpack:///./node_modules/react-slick/lib/default-props.js","webpack:///./node_modules/enquire.js/src/index.js","webpack:///./node_modules/enquire.js/src/MediaQueryDispatch.js","webpack:///./node_modules/enquire.js/src/MediaQuery.js","webpack:///./node_modules/enquire.js/src/QueryHandler.js","webpack:///./app/webapp/page/SyndicatedPlayerPage.js","webpack:///./app/webapp/syndicated/ProviderDialog/style.js","webpack:///./app/webapp/syndicated/ProviderDialog/index.js","webpack:///./app/webapp/syndicated/PlayerOverlay/style.js","webpack:///./app/webapp/syndicated/PlayerOverlay/index.js","webpack:///./app/webapp/syndicated/ConnectedPlayer/style.js","webpack:///./app/webapp/syndicated/ConnectedPlayer/index.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./node_modules/lodash/now.js","webpack:///./app/webapp/syndicated/SyndicatedPlayer/style.js","webpack:///./app/webapp/syndicated/SyndicatedScheduleModule/style.js","webpack:///./app/webapp/syndicated/SyndicatedScheduleModule/index.js","webpack:///./app/webapp/page/SyndicatedPlayerExample.js","webpack:///./app/webapp/subShell/PageShell.js","webpack:///./app/common/ads/connectAdInitializer.js","webpack:///./app/common/ads/AdManager.js","webpack:///./app/lib/ui/isElementVisible.js","webpack:///./app/common/ads/util/getMergedAdConfig.js","webpack:///./app/webapp/modal/authn/ProviderModal.js","webpack:///./app/lib/observe/scoringObserver.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./app/common/createCollection.js","webpack:///./app/common/Editorial.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","1","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","setTimeout","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error","s","__webpack_exports__","_defineProperty","obj","key","value","writable","AuthenticatorType","AdobePass","Api","AppEnvs","BlackoutTypes","BucketLayout","LayoutThresholds","LayoutVariant","Device","DeviceType","BucketStatus","OneIdEnv","PageType","PlayerError","PlayerEvents","Storage","ModalType","ContentType","URLPath","ContentStatus","SourceType","AuthTypes","AuthStates","Entitlements","ComScoreC3","Flags","PlayerPlacement","SyndicatedPlayerLoginOptions","BreakPoints","BucketRatio","BucketRatioCols","RenderTemplateTypes","SortOrder","DarkThemeLogos","_URLPath","_ComScoreC","_BreakPoints$MOBILE","_BreakPoints$MOBILE_L","_BreakPoints$TABLET","_BreakPoints$DESKTOP","_BreakPoints$DESKTOP_","_BucketRatioCols","ADOBE","IP","Env","PROD","STAGING","METADATA","TTL_AUTHN","TTL_AUTHZ","USERID","UPSTREAM_USERID","PACKAGE_ID","PACKAGE_TIER","Page","EVENT_QUERY_KEYS","PCC_NETWORK_NAMES","DEV","QA","prod","qa","dev","DMA","DEVICE","COLLECTION","DEFAULT","DEFAULT_UNLIMITED","HERO","TAPESTRY_LEFT","TAPESTRY_RIGHT","SixteenNineTapestryLeft","SixteenNineTapestryRight","SCHEDULE_MODULE","DEFAULT_EXPANDABLE","LARGE_EXPANDABLE","SixteenNine","FiveTwo","TwoThree","FourThree","Carousel","DTC","DESKTOP","HANDSET","TABLET","keys","reduce","acc","WEB_LIVE","WEB_UPCOMING","HOME","FEATURES","SEARCH","ORIGINALS","SID","CATALOG","AUTHORIZATION","UNSUPPORTED","ESPN_PLAYING","ESPN_PLAY","ESPN_PAUSE","ESPN_AD_POD_STARTED","ESPN_AD_POD_ENDED","ESPN_AD_STARTED","ESPN_AD_ENDED","ESPN_CONTENT_ENDED","ESPN_CONTENT_LOADED","ESPN_PROGRAM_CHANGE","ESPN_AUTOPLAY_TOGGLED","ESPN_SOCIAL_OPENED","ESPN_SOCIAL_CLOSED","ESPN_CAPTION_OPENED","ESPN_CAPTION_CLOSED","ESPN_ERROR","Analytics","IS_AUTHENTICATING","POPUP","FLASH","BLACKOUT_MAP","IFRAME_AUTH","PAYWALL","BROADCAST_PICKER","LISTING","VOD","PRODUCT","SHOW","FILM","ONDEMAND","PROGRAM","EVENT","VIDEO","TERM","COMPILATION","LIVE","UPCOMING","REPLAY","OVER","LINEAR","ONLINE","MVPD","ISP","BAM","OPEN","MVPD_PREVIOUS","ESPN_PLUS","ESPN_PLUS_MLB","ESPN_PLUS_NHL","ESPN_EXEC","ESPN_PLUS_UFC_PPV","ESPN_TDA","APP_NAME","ADOBEPASS_ENV","API_ENV","CONFIG_ENV","COUNTRY","LANG","DEBUG_AD","PLAYER_TECH","ROADBLOCK","FROM_ROADBLOCK","ROADBLOCK_NO_UNIVERSAL_LINK","HIDENAV","CLIENT_NAV","WEBVIEW","ENABLE_SEARCH","BYPASS_TOKEN","PACKAGE_FILTER","SSR","REGION","PLAYER_ID","ONEID_ENV","PARTNER","CATEGORY_ID","AUTO_DISPLAY_PROVIDER_DIALOG","SHOW_SCHEDULE_IN_SYNDICATED_PLAYER","AUTH_RETRY","XDOMAIN_BLOCKED","DEBUG","DISNEY_ENV","DISNEY_CLIENT_ID","BAM_ENV","MEDIA_LOCATION","PASS_ONEID_TOKEN","NO_SSR","EDITION","UNSUPPORTED_ERROR","VIDEO_ADS_PROVIDER","VIDEO_ADS_CMSID","VIDEO_ADS_NETWORK_CODE","VIDEO_ADS_AD_UNIT","APP_DRM_SUPPORT","MUTED","PLAYER","SELF","NEW_WINDOW","NEW_WINDOW_MANAGED","MOBILE","MOBILE_LARGE","DESKTOP_LARGE","BASIC","PAGE_SHELL","DESC","ASC","espn_free","accextra","log","info","apply","arguments","warn","time","label","times","now","timeEnd","duration","trace","message","util","format","stack","dir","inspect","consoleAssert","expression","arr","slice","assert","ok","Array","global","functions","tuple","f","getEdition","countryCode","editionMap","getFaqUrl","edition","faqUrlsFromConfig","faqMap","getAdEdition","pageShellRegion","lib","enums","ssla","brazil","caribbean","anzl","us","MX","pageShellLanguage","ad","site","dateFormat","CR","BZ","DO","SV","GT","HN","NI","PA","AR","PY","UY","BO","CL","PE","CO","EC","VE","BR","AI","AG","AW","BS","BB","BM","KY","DM","GD","GP","GY","HT","JM","MQ","LC","MF","VC","SR","VG","BQ","CW","MS","BL","KN","SX","TT","TC","AU","NZ","NL","US","queryString","bootstrapSelector","routingSelector","whitelistSelector","config","config_default","appNames","appNames_default","appSelector","app","adobePassEnvSelector","createSelector","adobePassEnv","apiEnvSelector","apiEnv","configEnvSelector","configEnv","countrySelector","country","editionSelector","isDomesticSelector","isIntlSelector","isDomestic","faqUrlSelector","faqUrls","adEditionSelector","playbackMetaSelector","playbackMeta","dateFormatSelector","isIntl","upcomingScheduleDateFormatSelector","isESPNAppSelector","appName","ESPNAPP","webviewSelector","isESPNApp","webview","hasPageShellSelector","renderTemplateType","enableSearchSelector","enableSearch","appConfig","oneIdEnvSelector","location","query","ssrSelector","path","indexOf","roadblockSelector","inWhitelist","isWebview","isMobile","options","playerTechSelector","intlSelector","lang","messages","contentIdInPlayerUrl","locationBeforeTransitions","id","pathname","eventId","hideNavSelector","intlAppSelector","hideNav","bypassTokenSelector","isSyndicatedPlayerSelector","packageFilterSelector","isSyndicatedPlayer","isSecureSelector","protocol","isAdDisabled","showDMVPDUpsellSelector","locationSelector","baseUrl","host","protocolArg","hash","tmp","split","hostname","port","origin","search","href","isLegacyAppSelector","version","appversion","ver","apiVersionSelector","isLegacyApp","upsellUrlSelector","newRelicTrackingSelector","newrelic","trackingOn","showOneIdLoginSelector","login","showHelpModuleSelector","activate","helpModuleOn","playerOptionsSelector","player","_inheritsLoose","subClass","superClass","create","constructor","__proto__","createProvider","storeKey","_Provider$childContex","subscriptionKey","Provider","_Component","props","context","_this","this","store","_proto","getChildContext","_ref","render","C","Children","only","children","Component","propTypes","storeShape","isRequired","element","childContextTypes","subscriptionShape","_assertThisInitialized","self","ReferenceError","_extends","assign","target","source","_objectWithoutPropertiesLoose","excluded","sourceKeys","createListenerCollection","current","next","clear","CLEARED","notify","listeners","subscribe","listener","isSubscribed","splice","noop","makeSelectorStateful","sourceSelector","selector","run","nextProps","getState","shouldComponentUpdate","connectAdvanced","selectorFactory","_contextTypes","_childContextTypes","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","_ref2$withRef","withRef","connectOptions","hotReloadingVersion","contextTypes","WrappedComponent","isValidElementType","JSON","stringify","wrappedComponentName","displayName","selectorFactoryOptions","Connect","state","renderCount","propsMode","Boolean","setWrappedInstance","bind","initSelector","initSubscription","_ref3","subscription","componentDidMount","trySubscribe","forceUpdate","componentWillReceiveProps","componentWillUnmount","tryUnsubscribe","notifyNestedSubs","getWrappedInstance","wrappedInstance","ref","dispatch","parentSub","Subscription","onStateChange","componentDidUpdate","notifyNestedSubsOnComponentDidUpdate","setState","dummyState","addExtraProps","withExtras","is","x","y","shallowEqual","objA","objB","keysA","keysB","hasOwn","wrapMapToPropsConstant","getConstant","constantSelector","constant","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","whenMapDispatchToPropsIsFunction","mapDispatchToProps","whenMapDispatchToPropsIsMissing","whenMapDispatchToPropsIsObject","b","whenMapStateToPropsIsFunction","mapStateToProps","whenMapStateToPropsIsMissing","defaultMergeProps","stateProps","dispatchProps","wrapMergePropsFunc","mergeProps","mergedProps","pure","areMergedPropsEqual","hasRunOnce","nextMergedProps","whenMergePropsIsFunction","whenMergePropsIsOmitted","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","handleFirstCall","firstState","firstOwnProps","hasRunAtLeastOnce","handleNewPropsAndNewState","handleNewProps","handleNewState","nextStateProps","statePropsChanged","areStatePropsEqual","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","areOwnPropsEqual","stateChanged","areStatesEqual","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","match","arg","factories","result","strictEqual","a","react","prop_types","prop_types_default","shape","func","hoist_non_react_statics_cjs","hoist_non_react_statics_cjs_default","browser","browser_default","react_is","nullListeners","unsubscribe","addNestedSub","es","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","invariant","condition","validateFormat","args","argIndex","replace","framesToPop","emptyFunction","warning","reactProdInvariant","code","argCount","argIdx","encodeURIComponent","secureCdnHost","cdnHost","GRAPHQL_API_KEY","SHIELD_API_KEY","MVPD_PREVIOUS_KEY","GEO_LOCATION_KEY","SUB_KEY","SESSION_TOKEN_KEY","USER_TRACKING_KEY","PREAUTH_LOCALSTORAGE_KEY","FORCE_REFRESH_TOKEN_RETRY_KEY","PRODUCT_API_CONFIGURATION","serviceUrl","internalServiceUrl","staging","GRAPHQL_API_CONFIGURATION","LISTINGS_API_CONFIGURATION","unknownAuthStates","clientRenderRoutes","NO_CATEGORY_ID_MAPPINGS","pt","en","loadingImageUrl","loadingImageUrlDark","secureLoadingImageUrl","securePromoImageUrl","notFoundUrl","BAM_PROXY_IFRAME_ID","BAM_PROMO_IFRAME_ID","BAM_PAYWALL_IFRAME_ID","dotComNielsenData","espnuk","apid","vc","general","ci","assetid","segB","sfcode","segA","section","segC","apn","espnza","espnau","espn","espnin","fantasy","watchespn","espndeportes","espnfc","cricinfo","NIELSEN_APPID_EPLUS","NIELSEN_APPID_TVE","_toConsumableArray","isArray","arr2","from","defaultEqualityCheck","defaultMemoize","equalityCheck","lastArgs","lastResult","_len","_key","every","index","getDependencies","funcs","dependencies","dep","dependencyTypes","map","join","createSelectorCreator","memoize","_len2","memoizeOptions","_key2","_len3","_key3","recomputations","resultFunc","pop","memoizedResultFunc","concat","_len4","_key4","params","dependency","resetRecomputations","createStructuredSelector","selectors","selectorCreator","objectKeys","_len5","values","_key5","composition","convertToSecureImage","provider","images","image","authenticationEnabledSelector","roadblock","authenticationSelector","authentication","userAuthSelector","bypassToken","authTypes","adobePassSelector","adobePass","adobePassInfoSelector","adobePassMetadataSelector","metadata","adobePassInitializedSelector","initialization","completeTime","adobePassAuthenticatedSelector","isAuthenticated","adobePassIsAuthorizedSelector","isAuthorized","checkAuthenticationCompleteSelector","checkAuthentication","ipSelector","ip","ipInfoSelector","userLocationSelector","bamSelector","bam","subscriptionsSelector","subscriptions","superBundleSelector","filter","sub","isActive","some","bundle","products","categoryCodes","item","toLowerCase","includes","bamSessionTokenSelector","session","token","bamSubReadySelector","bamSubReady","geoLocationSelector","geo","userTrackingSelector","userTracking","preauthorizedResourcesSelector","preauthorizedResources","entitlementTokenSelector","entitlementToken","canUseDOM","localStorage","getItem","parse","zipcodeSelector","zipCode","zipcode","authStatesSelector","userAuth","authStates","prevMVPDState","currMVPDState","mvpd","ispState","auth","passOneIdTokenSelector","passToken","passTokenArg","t","r","u","_dereq_","any","promises","ret","SomePromiseArray","setHowMany","setUnwrap","init","_SomePromiseArray","2","Async","_customScheduler","_isTickUsed","_lateQueue","Queue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","schedule","AsyncInvokeLater","fn","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","firstLineError","setScheduler","prev","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","process","stderr","write","exit","throwLater","invokeLater","invoke","settlePromises","_settlePromises","_drainQueue","queue","_reset","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","noConflict","bluebird","old","5","cr","callerCache","getterCache","ensureMethod","classString","toString","TypeError","caller","namedGetter","indexedGetter","Math","max","getGetter","canEvaluate","isIdentifier","undefined","propertyName","maybeGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","catchFilter","instances","cb","boundTo","predicateLoop","matchesPredicate","isObject","getKeys","j","8","Context","_trace","CapturedTrace","peekContext","createContext","longStackTraces","lastIndex","contextStack","_promiseCreated","_pushContext","_popContext","_peekContext","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","generatePromiseLifecycleEventObject","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","bindingPropagateFrom","isFulfilled","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","ignoreSelf","canAttachTrace","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","checkForgottenReturns","returnValue","promiseCreated","wForgottenReturn","_returnedNonUndefined","handlerLine","creatorLine","traceLines","cleanStack","line","nodeFramePattern","test","lineMatches","parseLinePattern","firstUserLine","msg","deprecated","replacement","shouldUseOwnTrace","warnings","Warning","activeFireEvent","formatAndLogError","reconstructStack","stacks","removeDuplicateOrEmptyJumps","removeCommonRoots","currentLastIndex","currentLastLine","commonRootMeetPoint","isTraceLine","stackFramePattern","isInternalFrame","shouldIgnore","indentStackFrames","charAt","stackFramesAsArray","title","isSoft","formatStack","String","printWarning","fireRejectionEvent","localHandler","reason","localEventFired","formatNonError","str","snip","substr","maxChars","longStackTracesIsSupported","captureStackTrace","parseLineInfo","matches","parseLineInfoRegex","fileName","parseInt","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","bluebirdFramePattern","_promisesCreated","uncycle","unhandledRejectionHandled","possiblyUnhandledRejection","getDomain","_getDomain","debugging","env","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","_setReturnedNonUndefined","_isRejectionUnhandled","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","hasLongStackTraces","fireDomEvent","CustomEvent","event","dispatchEvent","domEvent","detail","cancelable","Event","createEvent","initCustomEvent","fireGlobalEvent","emit","method","eventToObjectGenerator","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","unhandledRejection","rejectionHandled","globalEventFired","domEventFired","opts","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","handler","inherits","nodes","stackToIndex","node","currentStack","cycleEdgeNode","currentChildLength","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","11","promiseAllThis","PromiseAll","PromiseMapSeries","PromiseReduce","all","each","mapSeries","12","subError","nameProperty","defaultMessage","SubError","OperationalError","cause","_TypeError","_RangeError","es5","Objectfreeze","freeze","CancellationError","TimeoutError","AggregateError","RangeError","methods","level","indent","lines","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","names","getOwnPropertyNames","getPrototypeOf","propertyIsWritable","prop","descriptor","set","has","proto","ObjectKeys","ObjectGetDescriptor","ObjectDefineProperty","desc","ObjectFreeze","ObjectGetPrototypeOf","ArrayIsArray","14","PromiseMap","15","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","then","lastly","tap","tapCatch","handlerOrPredicate","len","catchInstances","16","Proxyable","promiseFromYieldHandler","yieldHandlers","traceParent","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","errors","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","done","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","last","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","_values","preservedValues","callback","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","isUntypedError","wrapAsOperationalError","rErrorKey","markAsOriginatingFromRejection","nodebackForPromise","multiArgs","wrapped","maybeWrapAsError","21","spreadAdapter","val","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","23","toResolutionValue","Map","resolveValueIfEmpty","asArray","_resolveEmptyArray","_iterate","getActualLength","shouldCopyValues","isResolved","24","propsFilter","noCopyPropsPattern","isPromisified","__isPromisified__","hasPromisified","suffix","getDataPropertyOrDefault","defaultPromisified","checkValid","suffixRegexp","keyWithoutAsyncSuffix","promisifiableMethods","inheritedDataKeys","passesDefaultFilter","defaultFilter","makeNodePromisifiedClosure","__","promisified","THIS","defaultThis","withAppended","promisifyAll","promisifier","RegExp","escapeIdentRegex","promisifiedKey","makeNodePromisified","promisify","noCopyProps","makeNodePromisifiedEval","copyDescriptors","isClass","25","PropertiesPromiseArray","entries","isMap","Es6Map","mapToEntries","_isMap","castValue","extractEntry","size","forEach","entriesToMap","keyOffset","26","arrayMove","srcIndex","dst","dstIndex","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","27","race","raceLater","array","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","noAsyncScheduler","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","setImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","navigator","standalone","cordova","div","attributes","toggleScheduled","div2","classList","toggle","observe","scheduleToggle","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","_howMany","_unwrap","_initialized","howMany","CANCELLATION","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","getThen","isAnyBluebirdPromise","doThenable","doGetThen","hasProp","34","HandleWrapper","handle","successClear","failureClear","afterValue","delay","ms","afterTimeout","handleWrapper","35","castPreservingDisposable","thenable","_isDisposable","_getDisposer","_setDisposable","dispose","resources","iterator","tryDispose","Disposer","data","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","NULL","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatcher","tryCatchTarget","isPrimitive","maybeError","safeToString","appendee","defaultValue","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","thisAssignmentPattern","FakeConstructor","rident","filledRange","prefix","isError","ignore","to","hasEnvVariables","globalObject","Child","Parent","T","excludedPrototypes","Function","isExcludedProto","visitedKeys","enumeration","Symbol","ArrayFrom","itResult","it","chrome","loadTimes","versions","Number","P","isEmpty","meta","formatMessage","contentType","pageId","typeQualifier","description","keywords","metaSelector","brandingSelector","isFinalSelector","competitorSelector","showPromoSelector","pagePathWithPageId","__WEBPACK_IMPORTED_MODULE_0_reselect__","__WEBPACK_IMPORTED_MODULE_1_lodash_intersection__","__WEBPACK_IMPORTED_MODULE_1_lodash_intersection___default","__WEBPACK_IMPORTED_MODULE_2__constants__","__WEBPACK_IMPORTED_MODULE_3__enums__","__WEBPACK_IMPORTED_MODULE_4__lib_format_convertObjectToQueryString__","__WEBPACK_IMPORTED_MODULE_5__bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_6__appSelector__","__WEBPACK_IMPORTED_MODULE_7__oneIdSelector__","__WEBPACK_IMPORTED_MODULE_8__routingSelector__","__WEBPACK_IMPORTED_MODULE_9__authenticationSelectors__","pageSelector","page","intl","_secondaryIntlSelector","pageName","hero","origQuery","basename","canonicalUrl","sanatizedCanonicalUrl","langQueryParam","socialUrl","socialDescription","socialTitle","socialImageUrl","noIndex","canonicalQuery","queryKeys","matchedEventQueryKeys","_intersection","imageHref","heroName","status","matchedEventQueryValue","convertObjectToQueryString","metaProps","pageEditionSelector","branding","editions","logoUrl","lightLogoUrl","packageId","competitors","oneIdLoggedInSelector","isLoggedIn","entitlements","rendered","classNames","classes","argType","inner","default","toObject","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","test1","test2","fromCharCode","test3","letter","symbols","__dirname","require","envConfig","dirs","root","_asyncToGenerator","gen","__WEBPACK_IMPORTED_MODULE_0_bluebird___default","step","clearPage","CLEAR_PAGE","createRequestPageAction","REQUEST_PAGE","requestedTime","Date","createReceivePageAction","header","icon","buckets","tracking","heroContent","carouselBucket","isFinal","noHero","RECEIVE_PAGE","receivedTime","startGetCompetitors","START_GET_COMPETITORS","startTime","completeGetCompetitors","COMPLETE_GET_COMPETITORS","fetchAllCompetitors","SearchAPI","getAllCompetitors","refreshBuckets","forceRefresh","currentPageId","refreshedBuckets","seasonId","pathParams","newPageName","getPageWithPathId","getPage","REPLACE_BUCKETS","REFRESH_BUCKETS","completePageLoad","COMPLETE_PAGE_LOAD","indexOfBucketInBucketList","bucket","contentIds","contents","content","foundIndex","bucketItem","bucketItemContentIds","fetchPageData","bucketId","getBucketPage","groupId","ignores","fetchEventData","channel","networkQuery","network","hasInvalidNetwork","getEvent","fetchVideoData","getVideo","fetchEventOrVideoByQuery","fetchBuckets","fullUrl","getPageByFullUrl","url","createFetchPageAction","perf","currentId","shouldRefreshAds","pageData","heroData","bucketsData","eventStreams","isHandlePickerCalled","gameId","contentId","isEvent","pickerApiUrl","toUpperCase","eventHeroData","streams","links","picker","handlePickerStreams","originalBuckets","newBucket","newBucketIndex","isBucketInBucketList","__replaced","tags","concrete","layout","addContentToStream","eventCalendarId","pickerUrl","initAdsConfig","oneIdAndBam","bamProxyIFrameId","requests","checkOneIDAuthentication","createSDKWrapper","createPageShellInitAction","createSmartAdobePassInitializeAction","createSmartIpAuthenticationAction","completeOneIDAuthentication","pageApi","queryParameters","requireClientRenderParams","checkSWIDAuthentication","oneIdSelector","swid","sessionToken","requireClientRender","requireGeo","requireFan","requireCheckOneId","createGetBAMAuthenticationInfoAction","newState","oneIdEntitlementsSelector","hasSuperBundle","hasTDAEntitlement","hasTDA","remove","createGetGeoLocationAction","createGetBAMSessionTokenAction","createGetUserTrackingAction","requiredActions","createSmartFanAction","actions","fetchScheduleModule","scoreAll","setPageInfo","autoPageViewTrack","PAGE_INFO_SET","replaceHero","REPLACE_HERO","setPageState","SET_STATE","getAiring","graphql","airing","singleEventPage","analyticsReady","partner","dates","thumbnail","getEventByQuery","newQuery","league","payload","streamSelect","INVALIDATE_PAGE","__WEBPACK_IMPORTED_MODULE_0_bluebird__","__WEBPACK_IMPORTED_MODULE_4__actions_listingsActions__","__WEBPACK_IMPORTED_MODULE_5__actions_appActions__","__WEBPACK_IMPORTED_MODULE_6__ads_actions__","__WEBPACK_IMPORTED_MODULE_7__actions_oneIdActions__","__WEBPACK_IMPORTED_MODULE_8__lib_api__","__WEBPACK_IMPORTED_MODULE_9__lib_util_perf__","__WEBPACK_IMPORTED_MODULE_10__lib_util_localStorage__","__WEBPACK_IMPORTED_MODULE_11__selectors_bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_12__selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_13__selectors_oneIdSelector__","__WEBPACK_IMPORTED_MODULE_14__selectors_routingSelector__","__WEBPACK_IMPORTED_MODULE_15__actions_scoringActions__","__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__","__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__","__WEBPACK_IMPORTED_MODULE_18__scheduleModule_actions__","__WEBPACK_IMPORTED_MODULE_19__actions_fanActions__","__WEBPACK_IMPORTED_MODULE_20__selectors_pageSelector__","__WEBPACK_IMPORTED_MODULE_21__lib_auth_hasTDA__","__WEBPACK_IMPORTED_MODULE_22__selectors_authenticationSelectors__","_Api$Page","pickerStream","fetchPickerStreams","encode","append","first","__WEBPACK_IMPORTED_MODULE_1_bluebird___default","displayModalMessage","messageType","messageData","DISPLAY_MODAL_MESSAGE","closeModalMessage","CLOSE_MODAL_MESSAGE","updateRoute","persistentFlagsSelector","stream","selectingStream","playbackMetaArg","selectedContentSelector","selectedStream","selectedStreamSelector","reselected","playbackState","playlist","getContentPlaylistFromBuckets","STREAM_SELECTING","play","getPlaybackMeta","selectingStreamArg","sport","franchise","playerUrlId","createAdobePassErrorAction","STREAM_SELECT","clickedTime","regex","sp","lg","show","streamUnSelect","STREAM_UNSELECT","contentSelect","contentArg","CONTENT_SELECT","contentUnSelect","CONTENT_UNSELECT","appRendered","APP_RENDERED","initData","ANALYTICS_READY","fetchExternalConfig","loadBootstrap","FETCH_EXTERNAL_CONFIG","bootstrap","mediaQuery","mq","MEDIA_QUERY","savePackageId","savePackageTier","tier","sendContentReward","rewardToken","userActivityAction","recommendedContentIds","videoPlayer","WatchESPNWebPlayer","bamPlayerOptions","containerIdArg","requestsArg","transactionId","perfName","passOneIdToken","isOneIdLoggedIn","oneIdToken","oneIdTokenSelector","createStartCheckBAMAuthenticationAction","geolocationKey","subscriptionsKey","sessionTokenKey","userTrackingKey","complete","createCompleteCheckBAMAuthenticationAction","defaultActions","removeRequest","list","entry","once","Events","GEOLOCATION_READY","body","SUBSCRIPTIONS_READY","bamSessionToken","USER_TRACKING_INFORMATION_READY","SESSIONTOKEN_READY","appContainerEl","getElementById","containerId","el","elCnt","className","eventRes","container","customProps","getBamAuthConfig","pickerStreamsSelect","pickerStreams","pickerStreamsEventId","PICKER_STREAMS_SELECT","pickerStreamsUnSelect","PICKER_STREAMS_UNSELECT","pickerStreamsSelectError","PICKER_STREAMS_SELECT_ERROR","openPickerSuccess","OPEN_PICKER_SUCCESS","openPickerError","OPEN_PICKER_ERROR","pickerStateClear","PICKER_STATE_CLEAR","INIT_APP_DATA","FETCH_EMBEDDED_OPTIONS","PICKER_AUTO_SELECT","__WEBPACK_IMPORTED_MODULE_0_react_router_redux__","__WEBPACK_IMPORTED_MODULE_1_bluebird__","__WEBPACK_IMPORTED_MODULE_2__enums__","__WEBPACK_IMPORTED_MODULE_3__constants__","__WEBPACK_IMPORTED_MODULE_4__page_actions__","__WEBPACK_IMPORTED_MODULE_5__ads_actions__","__WEBPACK_IMPORTED_MODULE_6__apiAction__","__WEBPACK_IMPORTED_MODULE_7__oneIdActions__","__WEBPACK_IMPORTED_MODULE_8__selectors_bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_10__selectors_flagsSelector__","__WEBPACK_IMPORTED_MODULE_11__selectors_pageSelector__","__WEBPACK_IMPORTED_MODULE_12__selectors_routingSelector__","__WEBPACK_IMPORTED_MODULE_14__selectors_authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_15__selectors_selectedContentSelector__","__WEBPACK_IMPORTED_MODULE_16__selectors_selectedStreamSelector__","__WEBPACK_IMPORTED_MODULE_17__authenticationActions__","__WEBPACK_IMPORTED_MODULE_18__webapp_player_util__","__WEBPACK_IMPORTED_MODULE_19__webapp_common_video_player__","__WEBPACK_IMPORTED_MODULE_20__lib_util_isEmpty__","__WEBPACK_IMPORTED_MODULE_21__lib_util_getBamAuthConfig__","__WEBPACK_IMPORTED_MODULE_22__lib_util_localStorage__","__WEBPACK_IMPORTED_MODULE_23__lib_util_perf__","__WEBPACK_IMPORTED_MODULE_24__lib_api_PageAPI__","__WEBPACK_IMPORTED_MODULE_25__lib_auth_hasTDA__","_classCallCheck","instance","Constructor","_possibleConstructorReturn","_inherits","setPrototypeOf","injectIntl","OrigInjectIntl","origInjectIntl","InjectIntl","inst","PureComponent","PropTypes","hoistStatics","__WEBPACK_IMPORTED_MODULE_0_react__","__WEBPACK_IMPORTED_MODULE_0_react___default","__WEBPACK_IMPORTED_MODULE_1_hoist_non_react_statics__","__WEBPACK_IMPORTED_MODULE_1_hoist_non_react_statics___default","__WEBPACK_IMPORTED_MODULE_2_react_intl__","_createClass","defineProperties","protoProps","staticProps","shouldPrecacheNode","nodeID","nodeType","getAttribute","ATTR_NAME","nodeValue","getRenderedHostOrTextFromComponent","component","_renderedComponent","precacheNode","hostInst","_hostNode","internalInstanceKey","uncacheNode","precacheChildNodes","_flags","hasCachedChildNodes","_renderedChildren","childNode","firstChild","outer","childInst","childID","_domID","nextSibling","_prodInvariant","getClosestInstanceFromNode","parents","parentNode","closest","getInstanceFromNode","getNodeFromInstance","_hostParent","DOMProperty","ReactDOMComponentFlags","ID_ATTRIBUTE_NAME","random","ReactDOMComponentTree","createAuthenticator","Authenticator","platform","adobe","displayProviderDialogImpl","elementId","environment","redirectUrl","refreshless","GET_BAM_AUTHENTICATION_INFO","GET_GEOLOCATION","GET_BAM_SESSION_TOKEN","GET_USER_TRACKING","START_CHECK_BAM_AUTHENTICATION","COMPLETE_CHECK_BAM_AUTHENTICATION","createStartCheckIpAuthenticationAction","START_CHECK_IP_AUTHENTICATION","createCompleteCheckIpAuthenticationAction","COMPLETE_CHECK_IP_AUTHENTICATION","directive","authType","createGetIpAuthenticationInfoAction","GET_IP_AUTHENTICATION_INFO","createGetLocationAction","GET_LOCATION","createGetLocationFromUserDataAction","getLocation","timeZone","getTimezone","createReceiveProvidersAction","providers","RECEIVE_PROVIDERS","createRequestProvidersAction","REQUEST_PROVIDERS","getProviders","passenv","providersFromState","providersSelector","providerPromise","ClientAPI","sort","compareByName","ipAuthenticator","getAuthenticationInfo","ipInfo","orderedProviders","providerIndex","findIndex","ispId","getProvider","abbreviation","unshift","providerInfo","createStartAdobePassInitializeAction","START_ADOBEPASS_INITIALIZE","createCompleteAdobePassInitializeAction","COMPLETE_ADOBEPASS_INITIALIZE","createStartCheckAuthenticationAction","START_CHECK_AUTHENTICATION","createCompletePreauthCheckAction","COMPLETE_PREAUTH_CHECK","checkPreauthResources","PreAuthZ","getResources","preauthorizeNetworksEnabled","preauthorizeNetworks","allAdobeIds","adobeAuthenticator","networks","networksSelector","uniq","adobeResource","chunkedAdobeIds","PREAUTH_MAX_LENGTH","checkPreauthorizedResources","preAuthResources","channels","setResources","espn_ui","Helpers","watchProviders","setTVECookies","createCompleteCheckAuthenticationAction","COMPLETE_CHECK_AUTHENTICATION","createStartAuthenticationAction","START_AUTHENTICATION","createCompleteAuthenticationAction","COMPLETE_AUTHENTICATION","createStartAuthorizationAction","resourceId","START_AUTHORIZATION","createCompleteAuthorizationAction","COMPLETE_AUTHORIZATION","ADOBEPASS_ERROR_EVENT","createDisplayProviderDialogAction","trackMvpdPicker","DISPLAY_PROVIDER_DIALOG","showProviderDialog","createCloseProviderDialogAction","resume","CLOSE_PROVIDER_DIALOG","previousContent","playingStream","createStartLogoutAction","START_LOGOUT","createCompleteLogoutAction","COMPLETE_LOGOUT","createAndPerformLogoutAction","removeTVECookies","deauthenticate","untimelyLogoutTracker","reEmbed","createGetAuthenticationInfoAction","entitlementsTracking","entitlementsTrackingSelector","trackAuthenticationComplete","GET_AUTHENTICATION_INFO","createGetMetadataAction","GET_METADATA","listenForAdobePassErrorEvent","onErrorEvent","errorData","initializeAdobePassAuthenticator","initialize","initialized","checkAdobePassAuthentication","getAdobePassAuthenticationInfo","getAdobePassMetadata","getMetadata","createAsyncGetMetadataAction","routerParams","providersFromApi","providerDialog","packageTier","pkg","packages","consumerKey","package","packageFilter","ttl","createAndPerformStartAuthenticationAction","redirectUrlArg","getAdobePassRedirectUrl","authenticate","createAndPerformStartAuthorizationAction","trackAuthorizationStart","providerSelector","authorize","response","trackAuthorizationComplete","errorCode","errorDetails","catch","createSelectProviderAction","adobeProvider","ID","trackProviderSelect","clearTrackingData","selectProvider","createDTCPaywallAction","analytics","oneIdAnalyticsSelector","isPromo","navmethod","navmethodSelector","oneIdParam","idParam","redirectParam","promoEl","innerHTML","hasMLB","streamHasDTCPackage","isVertical","isMatchup","matchup","matchupParam","getContentId","eventIdOrId","paywallConfig","idKey","isContentInStream","firstStream","streamObject","oneIdEnv","LOGIN_REQUESTED","oneId","streamArg","streamParam","streamHasAuthType","loginQuery","login_with_id","airingId","addQueryToUrl","launchLogin","renderPaywall","__WEBPACK_IMPORTED_MODULE_1_lodash_findIndex__","__WEBPACK_IMPORTED_MODULE_1_lodash_findIndex___default","__WEBPACK_IMPORTED_MODULE_4__lib_auth_Authenticator__","__WEBPACK_IMPORTED_MODULE_5__lib_auth_PreAuthZ__","__WEBPACK_IMPORTED_MODULE_6__lib_auth_streamHasDTCPackage__","__WEBPACK_IMPORTED_MODULE_7__lib_auth_streamHasAuthType__","__WEBPACK_IMPORTED_MODULE_8__lib_auth_getContentId__","__WEBPACK_IMPORTED_MODULE_10__lib_metrics_untimelyLogoutTracker__","__WEBPACK_IMPORTED_MODULE_11__lib_api__","__WEBPACK_IMPORTED_MODULE_12__lib_format_dateFormat__","__WEBPACK_IMPORTED_MODULE_13__lib_format_getAdobePassRedirectUrl__","__WEBPACK_IMPORTED_MODULE_14__lib_format_addQueryToUrl__","__WEBPACK_IMPORTED_MODULE_15__lib_omniture__","__WEBPACK_IMPORTED_MODULE_16__lib_util_isEmpty__","__WEBPACK_IMPORTED_MODULE_17__lib_util_getBamAuthConfig__","__WEBPACK_IMPORTED_MODULE_18__lib_oneId__","__WEBPACK_IMPORTED_MODULE_19__selectors_bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_21__selectors_oneIdSelector__","__WEBPACK_IMPORTED_MODULE_22__selectors_selectedContentSelector__","__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_24__selectors_pageSelector__","__WEBPACK_IMPORTED_MODULE_25__selectors_flagsSelector__","__WEBPACK_IMPORTED_MODULE_26__selectors_providerSelector__","__WEBPACK_IMPORTED_MODULE_27__selectors_routingSelector__","__WEBPACK_IMPORTED_MODULE_28__selectors_networksSelector__","__WEBPACK_IMPORTED_MODULE_29__selectors_analyticsSelectors__","__WEBPACK_IMPORTED_MODULE_30_lodash_uniq__","__WEBPACK_IMPORTED_MODULE_30_lodash_uniq___default","__WEBPACK_IMPORTED_MODULE_31_lodash_chunk__","__WEBPACK_IMPORTED_MODULE_31_lodash_chunk___default","__WEBPACK_IMPORTED_MODULE_32__appActions__","__WEBPACK_IMPORTED_MODULE_33__page_actions__","__WEBPACK_IMPORTED_MODULE_34__scheduleModule_actions__","__WEBPACK_IMPORTED_MODULE_35__scoringActions__","__WEBPACK_IMPORTED_MODULE_36__oneIdActions__","__WEBPACK_IMPORTED_MODULE_38__webapp_common_video_player__","_slicedToArray","sliceIterator","_arr","_n","_d","_e","_s","_i","_typeof","providerA","providerB","routing","g","eval","routerWarning","falseToWarn","warned","_warning2","_resetWarned","_warning","convertGender","gender","oneIdInitializedSelector","core","loggedIn","langPref","profile","languagePreference","_uniq","prdctEntitlements","acc2","productEntitlements","digitalAssetName","digitalAssetSourceName","oneIdEntitlementsParamsSelector","oneIdEntitlements","fanSelector","fan","cookie","unid","dateOfBirth","registrationtype","loginstatus","birthage","string","number","bool","oneOf","arrayOf","oneOfType","contentStatuses","entitlementsPropTypes","sdkHost","playerVersion","logos","syndicatedPlayer","gatedAll","gatedIE","preRoll","entitled","packagesPropTypes","sourcePropTypes","origination","linksPropTypes","web","streamPropTypes","score","adobeRSS","blackoutText","eventPropTypes","gameState","teamOneName","teamTwoName","teamTwoRank","teamOneScore","teamTwoScore","teamOneIsWinner","teamTwoIsWinner","statusTextOne","contentPropTypes","guid","subtitle","date","shortDate","utc","iconHref","style","totalCount","displayCount","scored","grouped","espnPlayerSrcFilesSelector","espnPlayerJsUrl","espnPlayerCssUrl","_interopRequireDefault","_react","_react2","_reactSideEffect","_reactSideEffect2","_deepEqual","_deepEqual2","_objectAssign","_objectAssign2","_HelmetConstants","encodeSpecialCharacters","getInnermostProperty","propsList","getTitleFromPropsList","innermostTitle","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","TAG_NAMES","BASE","reverse","innermostBaseTag","tag","attributeKey","lowerCaseAttributeKey","getTagsFromPropsList","tagName","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","TAG_PROPERTIES","REL","INNER_HTML","CSS_TEXT","ITEM_PROP","tagUnion","updateTitle","updateAttributes","TITLE","htmlTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","removeAttribute","updateTags","headElement","querySelector","tagNodes","querySelectorAll","oldTags","newTags","indexToDelete","newElement","styleSheet","cssText","createTextNode","existingTag","isEqualNode","removeChild","generateHtmlAttributesAsString","attr","generateTitleAsString","attributeString","generateTagsAsString","attributeHtml","tagContent","isSelfClosing","NOSCRIPT","SCRIPT","STYLE","generateTitleAsReactComponent","initProps","REACT_TAG_MAP","generateTagsAsReactComponent","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","getMethodsForTag","toComponent","titleAttributes","HTML","mapStateOnServer","htmlAttributes","baseTag","metaTags","linkTags","scriptTags","noscriptTags","styleTags","META","link","LINK","noscript","reducePropsToState","HREF","NAME","CHARSET","HTTPEQUIV","PROPERTY","SRC","onChangeClientState","handleClientStateChange","tagUpdates","addedTags","removedTags","_tagUpdates$tagType","NullComponent","HelmetSideEffects","_class","_React$Component","HelmetWrapper","defaultTitle","titleTemplate","peek","rewind","mappedState","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","isInWorker","moment","selectn","dateTime","tz","guess","dateToKey","oDate","paramToCalendarDatesString","sParam","paramToDate","dateStr","toDate","dateDayNamesMedium","dayNamesMedium","ISODate","showTimezone","formatsMap","dateFormats","utcMoment","localMoment","eventDateFormat","nextDayString","currentDateFormat","eventDate","momentInstance","tomorrow","clone","add","sevenDaysFromToday","eventDateFormatted","isSame","isAfter","isBefore","dateToObject","dateCompare","valueOf","NaN","dateInRange","start","end","convertDateTime","displayTime","timeFormat","isValid","getTimezoneParam","utcOffset","hour","abs","floor","min","toISOString","getISOStringWithMinPrecision","getDateTimeString","_trackPage","omnitureData","track","espnTrack","trackPage","initializing","nielsenData","nielsen","omniture","trackingQueue","queuedData","playerdomainArg","playerdomain","_sf_async_config","trackByIframe","_trackLink","trackLink","linkData","userClicked","pagename","trackingUrl","iframe","width","height","frameBorder","constants","baseOmnitureData","Site","Channel","account","ReportSuite","premium","eVar1","eVar12","Edition","prop1","prop16","removeItem","mvpdPickerData","events","eVar13","prop4","prop5","eVar11","getOmnitureAuthData","providerName","providerChosen","providerSelectData","pev2","prop9","eVar74","getOmnitureEntitlementsData","setItem","isAuthenticating","authenticationCompleteData","authorizationStartData","authorizationCompleteData","trackSearch","fromHero","searchTerm","isSuggestion","isViewAllResults","searchType","submitMethod","eVar4","prop7","eVar5","trackUntimelyLogout","actual","expected","providerAbbreviation","authnData","eVar17","prop42","eVar32","prop43","untimelyLogoutData","eVar37","userAgent","eVar81","prop37","trackSocialShareClick","socialPlatform","authData","socialShareValue","getOmniturePageName","eVar72","promoTracking","adobePassMetadata","usid","pageTrackData","prop17","eVar9","eVar85","getOmniturePageData","trackActivatePage","device","trackingLang","trackActivateCodeInvalid","mvpdId","mvpdName","invalidCode","eVar79","trackActivateSuccess","trackEspnPlayerOnAdSkipped","OMNITURE_CONSTANTS","__WEBPACK_IMPORTED_MODULE_0__enums__","__WEBPACK_IMPORTED_MODULE_1__format__","ReportSuiteQA","ReportSuiteIntl","ReportSuiteApp","TrackingServer","SecureTrackingServer","startSWIDAuthentication","START_CHECK_SWID_AUTHENTICATION","completeSWIDAuthentication","COMPLETE_CHECK_SWID_AUTHENTICATION","startOneIDAuthentication","START_CHECK_ONEID_AUTHENTICATION","createLoginAction","LOGIN_START","setOneIdData","GET_GUEST","COMPLETE_CHECK_ONEID_AUTHENTICATION","SWID_RE","logout","oneIdLogout","oneIdLaunchLogin","launchReauth","oneIdLaunchReauth","forceTokenRefresh","oneIdForceTokenRefresh","getGuest","oneIdGetGuest","clearGuest","CLEAR_GUEST","hasPageShell","disneyIDReadyPromise","disneyIDReadyAction","oneIdOn","disneyIDReady","userCreated","userInitialized","jQuery","one","memberservices","ready","userParsedTimer","guest","LOGIN_CLOSED","__WEBPACK_IMPORTED_MODULE_1_cookie_cutter__","__WEBPACK_IMPORTED_MODULE_1_cookie_cutter___default","__WEBPACK_IMPORTED_MODULE_4__lib_util_canUseDOM__","__WEBPACK_IMPORTED_MODULE_5__lib_util_perf__","__WEBPACK_IMPORTED_MODULE_6__lib_oneId__","__WEBPACK_IMPORTED_MODULE_7__appActions__","__WEBPACK_IMPORTED_MODULE_8__authenticationActions__","__WEBPACK_IMPORTED_MODULE_10__selectors_oneIdSelector__","__WEBPACK_IMPORTED_MODULE_11__lib_util_localStorage__","__WEBPACK_IMPORTED_MODULE_12__selectors_authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_13__lib_auth_hasTDA__","makeEmptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","debugTool","freeGlobal","freeSelf","ensureInjected","ReactUpdates","ReactReconcileTransaction","batchingStrategy","ReactUpdatesFlushTransaction","reinitializeTransaction","dirtyComponentsLength","callbackQueue","CallbackQueue","getPooled","reconcileTransaction","batchedUpdates","mountOrderComparator","c1","c2","_mountOrder","runBatchedUpdates","transaction","dirtyComponents","updateBatchNumber","callbacks","_pendingCallbacks","markerName","ReactFeatureFlags","logTopLevelRenders","namedComponent","_currentElement","isReactTopLevelWrapper","getName","ReactReconciler","performUpdateIfNecessary","enqueue","getPublicInstance","enqueueUpdate","isBatchingUpdates","_updateBatchNumber","asap","asapCallbackQueue","asapEnqueued","_assign","PooledClass","Transaction","NESTED_UPDATES","close","flushBatchedUpdates","UPDATE_QUEUEING","reset","notifyAll","TRANSACTION_WRAPPERS","getTransactionWrappers","destructor","release","perform","scope","addPoolingTo","ReactUpdatesInjection","injectReconcileTransaction","ReconcileTransaction","injectBatchingStrategy","_batchingStrategy","injection","cacheModuleConfig","defaultExpiration","SuperAgentCache","request","noProxy","httpProxy","expirationInSec","expiration","setSessionItem","sessionStorage","getSessionItem","selectedContent","__WEBPACK_IMPORTED_MODULE_1__whitelistSelector__","__WEBPACK_IMPORTED_MODULE_2__appSelector__","__WEBPACK_IMPORTED_MODULE_3__routingSelector__","__WEBPACK_IMPORTED_MODULE_4__enums__","playerTech","persistentFlags","currentFlag","queryKey","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","Item","argv","on","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","ReactCurrentOwner","SyntheticEvent","dispatchConfig","targetInst","nativeEvent","nativeEventTarget","_targetInst","Interface","propName","normalize","defaultPrevented","isDefaultPrevented","isPropagationStopped","shouldBeReleasedProperties","EventInterface","currentTarget","eventPhase","bubbles","timeStamp","isTrusted","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","augmentClass","Class","Super","E","fourArgumentPooler","isArrayLike","isLength","isFunction","DisneyID","oneIdInstance","did","oneIdConfig","optionalConfigs","reporting","subcontext1","responderPage","loadDisneyID","disneyIdPromise","OneIdJs","getLicensePlateDataBag","launchLicensePlate","_OneIdJs","__WEBPACK_IMPORTED_MODULE_1__enums__","clientId","cssOverride","eventName","CANCEL_BY_USER","INVALID_PAIRING_CODE","MISSING_PAIRING_CODE","UNKNOWN_ERROR","adobePassInfo","providerDialogSelector","displayProviderDialogSelector","display","yesOrNo","boolParam","getNielsenPersonalizationData","settings","activeProducts","metaData","hasFantasy","hasFavorites","preferences","hasNotifications","hasNotificationPreferences","videoAutoStart","getNielsenLoginStatusFromFan","formatNielsenData","storyId","wasPersonalized","Language","Placement","placement","PlayLocation","InsiderStatus","isInsider","networkVal","dtc","Network","getEventValueFromContent","AirDate","AirTime","AiringID","isStudio","trackingId","WasPersonalized","ProgramCode","programCode","SegC","SegA","AccessMethod","getAccessMethodFromAuthTypes","AuthenticationStatus","AffiliateName","AffiliateID","LoginStatus","Personalization","SWID","UserAgent","purchaseMethod","subscriberType","oneIdLoggedIn","PurchaseMethod","SubscriberType","DisneyPlusBundle","DTCEntitlements","DSSID","getOmnitureUserTrackingData","VideoType","getVideoTypeFromStream","ContentDuration","Sport","getNielsenValue","League","GameID","PlayerName","VideoTypeDetail","coverageType","isVOD","dateTimeArray","originalPublishDate","Embedded","Orientation","StoryID","PublishDate","PublishTime","ExpirationDate","expirationDate","DateLastModified","lastModified","CMSID","ShowCode","showCode","VideoPlaylist","isfullepisode","analyticsConstantsSelector","nielsenTrackingSelector","comscoreTrackingSelector","pageTrackingSelector","placementPrefixSelector","__WEBPACK_IMPORTED_MODULE_1_lodash_uniq__","__WEBPACK_IMPORTED_MODULE_1_lodash_uniq___default","__WEBPACK_IMPORTED_MODULE_2_lodash_intersection__","__WEBPACK_IMPORTED_MODULE_2_lodash_intersection___default","__WEBPACK_IMPORTED_MODULE_4__bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_5__appSelector__","__WEBPACK_IMPORTED_MODULE_6__providerSelector__","__WEBPACK_IMPORTED_MODULE_7__apiParamsSelector__","__WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_9__pageSelector__","__WEBPACK_IMPORTED_MODULE_10__selectedContentSelector__","__WEBPACK_IMPORTED_MODULE_11__selectedStreamSelector__","__WEBPACK_IMPORTED_MODULE_12__fanSelector__","__WEBPACK_IMPORTED_MODULE_13__oneIdSelector__","__WEBPACK_IMPORTED_MODULE_14__routingSelector__","__WEBPACK_IMPORTED_MODULE_15__lib_auth_getAccessMethodFromAuthTypes__","__WEBPACK_IMPORTED_MODULE_16__lib_auth_streamHasAuthType__","__WEBPACK_IMPORTED_MODULE_17__lib_util_isEmpty__","__WEBPACK_IMPORTED_MODULE_18__lib_omniture__","__WEBPACK_IMPORTED_MODULE_19_cookie_cutter__","__WEBPACK_IMPORTED_MODULE_19_cookie_cutter___default","fallbackValue","trim","analyticsSelector","isSecure","intlApp","storyIdSelector","isHero","bucketName","omNavmethod","_pageId","_pageName","rowName","entitlementsArg","subscriberTypes","promoTrackingSelector","showPromo","sku","productsVal","wasPersonalizedSelector","pageAPIParamsSelector","pageAPIParams","c3","c4","labels","_objectWithoutProperties","addRecommendedConentIdsToContents","dss","contentParams","parseContents","api","variables","graphqlParamsSelector","GraphQL","getSearchResults","endpoint","SEARCH_TYPES","sortBy","sortOrder","suggest","suggestApiParams","suggestApiParamsSelector","getSuggestion","listingsByCompetitor","getEventsForTeam","searchApiParams","searchApiParamsSelector","Bootstrap","paramsArg","pages","isTopLevel","pageAPILimitedParamsSelector","PageAPI","testFeed","notReplays","getPickerStreams","__WEBPACK_IMPORTED_MODULE_1__lib_api__","__WEBPACK_IMPORTED_MODULE_2__selectors_bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__","__WEBPACK_IMPORTED_MODULE_4__selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_5__selectors_authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_6__appActions__","contentSelector","heroImageSelector","__WEBPACK_IMPORTED_MODULE_1__lib_oneId__","_jsx","REACT_ELEMENT_TYPE","for","defaultProps","childrenLength","childArray","$$typeof","_owner","MainContainer","showLogin","reload","pre","isValidChild","isValidElement","isReactChildren","createRoute","createRouteFromReactElement","route","childRoutes","createRoutesFromReactChildren","parentRoute","routes","createRoutes","isObjectLike","isEventOverride","decayContentScoreWithTime","minutesUntilStart","getMinutesUntilStart","dedupeBucketContents","dedupedContents","uniqBy","scoreBucketsWithTime","scoredContents","aContent","bContent","createReceiveScheduleModuleAction","RECEIVE_SCHEDULE_MODULE_DATA","langArg","scheduleModule","paths","REQUEST_SCHEDULE_MODULE_DATA","timeScoredBuckets","completeScheduleModuleScoring","SCORE_SCHEDULE_MODULE_DATA","scoreScheduleModule","contentContainsStream","react_default","flatMap","flatMap_default","appActions","flagsSelector","playingStreamSelector","authenticationSelectors","pickerStreamsSelector","canPlayContent","isContentLocked","scrollTo","difference","scrollTop","perTick","streamPicker","globalVideoElement","Playable","blackoutClickHandler","clickHandler","isUserBlackedOut","seo","toURL","suggestion","junk","currentName","listing","userLocation","blackouts","userIsBlackedOut","dma","dmaBlackout","router","prime","_flatMap","isPurchasable","isEntitled","roadblockUrl","contentPageUrl","getContentPageUrl","enhancedContent","onSyndicatedPlayerPage","canPlay","isESPNPlus","dssContentId","syndicatedScheduleLink","syndicatedBigPlayButton","playerUrlQueryProps","frameElement","playerUrl","getPlayerUrl","absoluteUrl","open","onPlayerPage","urlParams","alertContent","rState","userInitiated","isOnTile","openStreamPicker","authRes","userAuthenticatedForContent","showLock","playerHref","newProps","selected","featured","layoutType","withRouter","connect","oneArgumentPooler","copyFieldsFrom","Klass","instancePool","twoArgumentPooler","a1","a2","threeArgumentPooler","a3","a4","standardReleaser","poolSize","DEFAULT_POOLER","CopyConstructor","pooler","NewKlass","falsy","componentName","components","history","listen","go","goBack","goForward","PUSH","REPLACE","POP","extractPath","substring","parsePath","hashIndex","searchIndex","routerMiddleware","routerActions","CALL_HISTORY_METHOD","routerReducer","LOCATION_CHANGE","syncHistoryWithStore","_reducer","_actions","_sync","_sync2","_middleware","_middleware2","finalQuery","pathAndQuery","urlQuery","convertQueryStringToObject","__WEBPACK_IMPORTED_MODULE_0____","baseGetTag","undefinedTag","nullTag","symToStringTag","getRawTag","objectToString","toStringTag","getNative","getValue","baseIsNative","definition","realMethod","undefinedType","bindMethod","enableLoggingWhenConsoleArrives","loggerName","replaceLoggingMethods","logMethods","methodFactory","defaultMethodFactory","Logger","defaultLevel","factory","persistLevelIfPossible","levelNum","levelName","storageKey","getPersistedLevel","storedLevel","exec","levels","currentLevel","getLevel","setLevel","SILENT","setDefaultLevel","enableAll","TRACE","disableAll","initialLevel","defaultLogger","_loggersByName","getLogger","logger","_log","getCacheFallback","cache","setCacheFallback","EXPIRATION","loglevel","defaultExport","mark","perfEnabled","performance","markStart","logMark","startMark","endMark","clearMarks","clearMeasures","measure","startMarkArg","endMarkArg","getEntriesByName","measureAndTime","print","getEntriesByType","__WEBPACK_IMPORTED_MODULE_0__canUseDOM__","canUsePerformance","perfDebug","__WEBPACK_IMPORTED_MODULE_1__AdContainer__","BannerAd","kvps","pos","slotType","refreshOnLoad","authStateKnown","ReactChildren","ReactComponent","ReactPureComponent","ReactClass","ReactDOMFactories","ReactElement","ReactPropTypes","ReactVersion","onlyChild","createFactory","cloneElement","__spread","React","toArray","createClass","createMixin","mixin","DOM","hasValidRef","hasValidKey","RESERVED_PROPS","__self","__source","owner","cloneAndReplaceKey","oldElement","newKey","_self","_source","checkMask","bitmask","DOMPropertyInjection","MUST_USE_PROPERTY","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","injectDOMPropertyConfig","domPropertyConfig","Injection","Properties","DOMAttributeNamespaces","DOMAttributeNames","DOMPropertyNames","DOMMutationMethods","isCustomAttribute","_isCustomAttributeFunctions","properties","lowerCased","propConfig","propertyInfo","attributeName","attributeNamespace","mutationMethod","mustUseProperty","hasBooleanValue","hasNumericValue","hasPositiveNumericValue","hasOverloadedBooleanValue","ATTRIBUTE_NAME_START_CHAR","ROOT_ATTRIBUTE_NAME","ATTRIBUTE_NAME_CHAR","getPossibleStandardName","attachRefs","ReactRef","mountComponent","internalInstance","hostParent","hostContainerInfo","parentDebugID","markup","getReactMountReady","getHostNode","unmountComponent","safely","detachRefs","receiveComponent","nextElement","prevElement","refsChanged","shouldUpdateRefs","insertTreeChildren","tree","enableLazy","insertTreeBefore","html","setInnerHTML","text","setTextContent","replaceChildWithTree","oldNode","newTree","replaceChild","queueChild","parentTree","childTree","queueHTML","queueText","nodeName","DOMLazyTree","DOMNamespaces","createMicrosoftUnsafeLocalFunction","documentMode","referenceNode","namespaceURI","insertBefore","createMemoryHistory","hashHistory","browserHistory","applyRouterMiddleware","formatPattern","useRouterHistory","routerShape","locationShape","RoutingContext","RouterContext","useRoutes","RouteContext","Lifecycle","History","Route","Redirect","IndexRoute","IndexRedirect","IndexLink","Link","Router","_RouteUtils","_PropTypes2","_PatternUtils","_Router2","_Router3","_Link2","_Link3","_IndexLink2","_IndexLink3","_withRouter2","_withRouter3","_IndexRedirect2","_IndexRedirect3","_IndexRoute2","_IndexRoute3","_Redirect2","_Redirect3","_Route2","_Route3","_History2","_History3","_Lifecycle2","_Lifecycle3","_RouteContext2","_RouteContext3","_useRoutes2","_useRoutes3","_RouterContext2","_RouterContext3","_RoutingContext2","_RoutingContext3","_PropTypes3","_match2","_match3","_useRouterHistory2","_useRouterHistory3","_applyRouterMiddleware2","_applyRouterMiddleware3","_browserHistory2","_browserHistory3","_hashHistory2","_hashHistory3","_createMemoryHistory2","_createMemoryHistory3","escapeRegExp","_compilePattern","pattern","regexpSource","paramNames","tokens","matcher","compilePattern","CompiledPatternsCache","matchPattern","_compilePattern2","matchedPath","remainingPathname","paramValues","decodeURIComponent","getParamNames","getParams","paramName","_compilePattern3","parenCount","splatIndex","paramValue","splat","_invariant2","encodeURI","_invariant","arrayMap","baseIntersection","baseRest","castArrayLikeObject","intersection","arrays","mapped","getUrl","appEnv","BOOTSTRAP_URL","getFallbackConfig","staticConfig","staticConfigQa","DEFAULT_EXPIRATION","use","DEFAULT_TIMEOUT","fallback","originalError","newRelicEmitter","UNFULFILLED_PROMISE_EVENT","getServiceUrl","CONFIGURATION","AdobePassEnv","QA_CONFIGURATION","toAbsoluteURL","endPoint","getProviderServiceUrl","intlProviderServiceUrl","INTL_QUERY","getClient","ONE_HOUR","client","clients","createProviderDomestic","rows","intlProviders","createProviderIntl","sanitizeQueryString","decodedQuery","emojiRegExp","codePointAt","authNetworks","deviceType","sanitizedQuery","qs","q","includeDtcContent","ERROR_PAGE_RESPONSE","keyword","team","getChannels","getListings","listingsHref","types","categories","subcategories","resultsLimit","ApiEnv","typesQuery","networksQuery","categoriesQuery","subcategoriesQuery","datesQuery","apiDateFormatter","limitQuery","listings","getListingsBySubcategory","subcategory","getTopCategories","getPrioritizedEventFromListings","matchedLangLiveNonE3","matchedLiveE3","matchedLangLiveE3","matchedLiveNonE3","matchedLangNonE3","matchedLangE3","matchedLangReplay","sourceLang","broadcasts","ncsId","getNetworks","makeRequest","NETWORKS","getAirings","AIRINGS","AIRING","apiKey","getBaseUrl","Bootstrap_namespaceObject","ClientAPI_namespaceObject","FULL_PREAUTH_PROVIDERS","SearchAPI_namespaceObject","DEFAULT_CONFIGURATION","VideoAPI_namespaceObject","WatchAPI_namespaceObject","WatchAPI_getServiceUrl","GraphQL_namespaceObject","GraphQL_config","GraphQL_getServiceUrl","_BOOTSTRAP_URL","loglevel_default","config_0","newRelicEventBus","requestCache","requestProxy","fallbackCache","watchespn_web_1_0_config_qa","watchespn_web_1_0_config_qa_default","watchespn_web_1_0_config","watchespn_web_1_0_config_default","appLinkBase","rank","streamLimiting","countries","appLinkQuery","appLink","adobeId","analyticsId","desktop","mobile","settop","pickerImage","negativebgcolorImage","positivebgcolorImage","websiteUrl","providerCountry","logo","whiteBackground","colorWithPositiveBackground","colorWithNegativeBackground","baseInternalUrl","includeProperties","apikey","bluebird_default","SearchAPI__extends","ENVIRONMENT_CONFIGURATION","SearchAPIConfig","VideoAPI__extends","videoApiConfig","videoApi","WatchAPI__extends","watchApiConfig","watchApi","basePath","favoriteTeamSelector","uids","sportId","teamId","favoriteSportSelector","normalizePageId","setAdsConfig","ADS_CONFIG","adSite","adSiteSelector","adEdition","pgn","PageName","adprodtest","adtar","tstAdTar","adtarParam","tstAdTarParam","pgtyp","ed","adsInitialized","ADS_INITIALIZED","adsRefreshed","ADS_REFRESHED","ADS_CONFIG_INVALIDATED","doc","ps","unescape","escape","expires","secure","baseUniq","getCacheId","inputs","orderedProps","k","_a","addLocaleData","localeData","locale","__addLocaleData","hasLocaleData","localeParts","hasIMFAndIRFLocaleData","normalizedLocale","__localeData__","UNSAFE_CHARS_REGEX","ESCAPED_CHARS","filterProps","whitelist","defaults$$1","filtered","invariantIntlContext","shallowEquals","bHasOwnProperty","shouldIntlComponentUpdate","_ref2$context","nextContext","_context$intl","_nextContext$intl","nextIntl","intlConfigPropNames","createError","exception","defaultErrorHandler","Component$$1","_options$intlPropName","intlPropName","_options$withRef","classCallCheck","possibleConstructorReturn","_wrappedInstance","_this2","intlShape","resolveLocale","locales","_resolveLocale","findPluralFunction","_findPluralRuleFunction","updateRelativeFormatThresholds","newThresholds","thresholds","second","minute","day","month","getNamedFormat","formats","onError","filteredOptions","DATE_TIME_FORMAT_OPTIONS","getDateTimeFormat","RELATIVE_FORMAT_OPTIONS","oldThresholds","RELATIVE_FORMAT_THRESHOLDS","getRelativeFormat","NUMBER_FORMAT_OPTIONS","getNumberFormat","PLURAL_FORMAT_OPTIONS","getPluralFormat","messageDescriptor","defaultLocale","defaultFormats","formattedMessage","getMessageFormat","rawValues","escaped","selectUnits","delta","absDelta","MINUTE","HOUR","DAY","getUnitDelay","units","SECOND","MAX_TIMER_DELAY","isSameDate","aTime","getTime","bTime","locale_data_ignored_","locale_data_ignored__default","intl_messageformat","intl_messageformat_default","intl_relativeformat","intl_relativeformat_default","memoizeFormatConstructor","FormatConstructor","cacheId","defaultLocaleData","ord","v0","t0","n10","n100","AwaitValue","AsyncGenerator","send","back","_invoke","return","asyncIterator","throw","objectWithoutProperties","toConsumableArray","localeMatcher","narrowShortLong","numeric2digit","funcReq","intlConfigPropTypes","textComponent","intlFormatPropTypes","formatDate","formatTime","formatRelative","formatNumber","formatPlural","formatHTMLMessage","formatters","dateTimeFormatPropTypes","formatMatcher","hour12","weekday","era","year","timeZoneName","numberFormatPropTypes","currency","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","relativeFormatPropTypes","pluralFormatPropTypes","IntlPluralFormat","useOrdinal","pluralFn","intlConfigPropNames$1","intlFormatPropNames","IntlProvider","Intl","intlContext","initialNow","_ref$formatters","DateTimeFormat","NumberFormat","_didDisplay","_config","boundFormatFns","getConfig","getBoundFormatFns","_state","FormattedDate","Text","_props","formattedDate","FormattedTime","formattedTime","FormattedRelative","_timer","updateInterval","unitDelay","unitRemainder","scheduleNextUpdate","formattedRelative","FormattedNumber","formattedNumber","FormattedPlural","other","pluralCategory","formattedPlural","FormattedMessage","nextPropsToCheck","_ref$formatMessage","formatMessage$$1","_ref$textComponent","_props$tagName","tokenDelimiter","tokenizedValues","elements","uid","generateToken","counter","part","FormattedHTMLMessage","formattedHTMLMessage","startGetSchedule","START_GET_SCHEDULE","completeGetSchedule","COMPLETE_GET_SCHEDULE","setStatusFilter","SET_STATUS_FILTER","getQueryFromParams","StatusFilter","Options","categoryId","startDate","endDate","packageMap","espn_plus","espn_plus_mlb","espn_plus_nhl","fetchSchedule","typeArg","airings","startDateTime","mediumTime","category","feedName","backgroundImageHref","purchaseImage","imageUrl","packageArray","shortName","ipAuth","isIpAuth","thumbnails","large","fetchSyndicatedSchedule","startGetCategories","START_GET_CATEGORIES","completeGetCategories","COMPLETE_GET_CATEGORIES","fetchCategories","collectionParamsSelector","getCategories","SET_SPORTS_FILTER","SET_NETWORK_FILTER","SET_DATE_FILTER","SET_REPLAY_DATE_FILTER","__WEBPACK_IMPORTED_MODULE_0__lib_api__","__WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__","__WEBPACK_IMPORTED_MODULE_2__lib_format_apiDateFormatter__","__WEBPACK_IMPORTED_MODULE_3__selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_4__selectors_apiParamsSelector__","__WEBPACK_IMPORTED_MODULE_5__actions_apiAction__","__WEBPACK_IMPORTED_MODULE_6__StatusFilter__","handleClick","onClick","option","locationBlackedOutForContent","blackout","createPlayerEmbeddingAction","embedding","PLAYER_EMBEDDING","createPlayerEmbeddedAction","embedded","PLAYER_EMBEDDED","createResetPlayerAction","RESET_PLAYER","createAutoEmbedTimerCompleteAction","AUTOEMBED_TIMER_COMPLETE","createAutoplayUpdatedAction","autoplay","AUTOPLAY_UPDATED","createStreamPlayingAction","STREAM_PLAYING","createClearPlayingStreamAction","CLEAR_PLAYING_STREAM","createFeedSelectAction","streamId","FEED_SELECT","createFeedResetAction","FEED_RESET","createPlayerReadyAction","playerPlacement","autoStart","fanAutoStart","fanAutoStartSelector","autoEmbed","videoAutoStartCookie","Cookie","action","PLAYER_READY","createAuthorizationErrorAction","AUTHORIZATION_ERROR","createProgramChangeAction","PROGRAM_CHANGE","resp","trackingData","createContinuousPlayAction","cookie_cutter","cookie_cutter_default","apiAction","analyticsSelectors","REGISTER_PLAYER","insertScheduleModuleIntoBuckets","pageType","clonedBuckets","insertIndex","__schedule_module_placeholder__","__WEBPACK_IMPORTED_MODULE_1_react_redux__","__WEBPACK_IMPORTED_MODULE_2_react_helmet__","__WEBPACK_IMPORTED_MODULE_2_react_helmet___default","__WEBPACK_IMPORTED_MODULE_3_lodash_intersection__","__WEBPACK_IMPORTED_MODULE_3_lodash_intersection___default","__WEBPACK_IMPORTED_MODULE_5__alias_ScheduleModuleContainer__","__WEBPACK_IMPORTED_MODULE_6__enums__","__WEBPACK_IMPORTED_MODULE_7__Bucket__","__WEBPACK_IMPORTED_MODULE_8__selectors_authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_9__selectors_pageSelector__","heroExcludeTags","BucketListContainer","showPromoOnHero","heroContentId","renderHeroInBucket","layoutOverride","origHideHeaderLink","hideHeaderLink","curatedBuckets","bucketContents","contentLength","uniqueKey","emptyObject","listenerAtPhase","propagationPhase","registrationName","phasedRegistrationNames","getListener","accumulateDirectionalDispatches","phase","_dispatchListeners","accumulateInto","_dispatchInstances","accumulateTwoPhaseDispatchesSingle","EventPluginUtils","traverseTwoPhase","accumulateTwoPhaseDispatchesSingleSkipTarget","parentInst","getParentInstance","accumulateDispatches","ignoredDirection","accumulateDirectDispatchesSingle","accumulateTwoPhaseDispatches","forEachAccumulated","accumulateTwoPhaseDispatchesSkipTarget","accumulateEnterLeaveDispatches","leave","enter","traverseEnterLeave","accumulateDirectDispatches","EventPluginHub","EventPropagators","isInteractive","shouldPreventMouseEvent","disabled","EventPluginRegistry","ReactErrorUtils","listenerBank","eventQueue","executeDispatchesAndRelease","simulated","executeDispatchesInOrder","executeDispatchesAndReleaseSimulated","executeDispatchesAndReleaseTopLevel","getDictionaryKey","_rootNodeID","injectEventPluginOrder","injectEventPluginsByName","putListener","PluginModule","registrationNameModules","didPutListener","bankForRegistrationName","deleteListener","willDeleteListener","deleteAllListeners","extractEvents","topLevelType","plugins","possiblePlugin","extractedEvents","enqueueEvents","processEventQueue","processingEventQueue","rethrowCaughtError","__purge","__getListenerBank","SyntheticUIEvent","dispatchMarker","getEventTarget","UIEventInterface","view","ownerDocument","defaultView","parentWindow","ReactInstanceMap","_reactInternalInstance","REACT_STATICS","getDefaultProps","mixins","KNOWN_STATICS","arity","isGetOwnPropertySymbolsAvailable","targetComponent","sourceComponent","customStatics","startDateToFormat","formattedStartDate","apiDate","endDateToFormat","formattedEndDate","utils_hooks__hooks","hookCallback","isObjectEmpty","isDate","res","hasOwnProp","extend","create_utc__createUTC","strict","createLocalOrUTC","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","getParsingFlags","_pf","valid__isValid","_isValid","parsedParts","isNowValid","isNaN","invalidWeekday","_strict","bigHour","isFrozen","valid__createInvalid","isUndefined","copyConfig","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","updateInProgress","updateOffset","isMoment","absFloor","ceil","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecateSimple","deprecations","locale_set__set","_ordinalParseLenient","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","locale_calendar__calendar","mom","output","_calendar","longDateFormat","_longDateFormat","formatUpper","invalidDate","_invalidDate","ordinal","_ordinal","relative__relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","addUnitPriority","priority","priorities","getPrioritizedUnits","unitsObj","makeGetSet","keepTime","get_set__set","get_set__get","stringGet","stringSet","prioritized","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","addFormatToken","padded","formatTokenFunctions","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","expandFormat","formatFunctions","replaceLongDateFormatTokens","localFormattingTokens","addRegexToken","strictRegex","regexes","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","daysInMonth","UTC","getUTCDate","localeMonths","_months","isFormat","MONTHS_IN_FORMAT","localeMonthsShort","_monthsShort","units_month__handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","monthsShort","months","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsShortRegex","monthsRegex","_monthsStrictRegex","_monthsRegex","defaultMonthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","isLeapYear","getIsLeapYear","createDate","h","M","getFullYear","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","day_of_week__handleStrictParse","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","weekdaysMin","weekdaysShort","weekdays","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","defaultWeekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","normalizeLocale","chooseLocale","loadLocale","oldLocale","globalLocale","_abbr","locale_locales__getSetGlobalLocale","locale_locales__getLocale","defineLocale","baseConfig","abbr","parentLocale","updateLocale","locale_locales__listLocales","checkOverflow","MONTH","DATE","YEAR","MILLISECOND","_overflowDayOfYear","_overflowWeeks","WEEK","_overflowWeekday","WEEKDAY","configFromISO","allowTime","tzFormat","extendedIsoRegex","basicIsoRegex","isoDates","isoTimes","tzRegex","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getMonth","getDate","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","w","weekYear","temp","weekdayOverflow","GG","W","local__createLocal","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","_meridiem","meridiemFixWrap","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","configFromObject","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","seconds","milliseconds","_milliseconds","_days","_bubble","isDuration","absRound","round","offset","separator","sign","offsetFromString","parts","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","matchShortOffset","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","matchOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","diffRes","aspNetRegex","isoRegex","parseIso","momentsDifference","inp","parseFloat","positiveMomentsDifference","createAdder","direction","period","dur","isAdding","getCalendarFormat","myMoment","moment_calendar__calendar","sod","startOf","calendarFormat","calendar","localInput","endOf","isBetween","inclusivity","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","moment_format__toISOString","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","creationData","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","isoWeek","getISOWeeksInYear","getWeeksInYear","weekInfo","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfYear","parseMs","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","preParsePostFormat","lists__get","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","duration_as__valueOf","makeAs","alias","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","duration_humanize__getSetRelativeTimeRounding","roundingFunction","duration_humanize__getSetRelativeTimeThreshold","threshold","withSuffix","iso_string__toISOString","iso_string__abs","Y","D","total","asSeconds","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","ordinalParse","meridiemParse","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","isoWeeks","isoWeeksInYear","isDST","zoneAbbr","zoneName","zone","isDSTShifted","momentPrototype","prototype__proto","firstDayOfYear","firstDayOfWeek","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_prototype__proto","toIsoString","invalid","relativeTimeRounding","relativeTimeThreshold","webpackPolyfill","eq","toKey","isSymbol","INFINITY","baseIsArguments","objectProto","isArguments","idx","seg","splits","dotted","curry2","baseIteratee","identity","baseMatchesProperty","baseMatches","getWhitelistedParams","whitelisted","apiConfigParams","shieldApiKeySelector","__WEBPACK_IMPORTED_MODULE_2__bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_3__appSelector__","__WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_5__oneIdSelector__","__WEBPACK_IMPORTED_MODULE_6__fanSelector__","__WEBPACK_IMPORTED_MODULE_7__lib_format_dateFormat__","apiParamsSelector","apiVersion","shieldApiKeys","shieldApiKey","domestic","apiParams","pageApiFeatureFlagsSelector","featureFlags","features","favoriteTeam","favoriteSport","video_player__objectWithoutProperties","video_player__classCallCheck","video_player__possibleConstructorReturn","video_player__inherits","PlayerBase","BAMPlayer","BrightcovePlayer","_playerTech","_options","_PlayerBase","_player","currentTime","ESPNVideoPlayer","_playerPromise","_unsubscribes","createPlayer","playOptions","embed","addPlayerListeners","removePlayerListeners","unembed","pause","muted","requestFullscreen","exitFullscreen","err2","newConfigs","PlayerTech","BRIGHTCOVE","advertising","ESPN_DRM_ERROR","ESPN_ADS_AD_SKIPPED","video_player__createClass","brightcovePlayerOptions","_bamPlayer","_brightcovePlayer","_bamPlayerOptions","_brightcovePlayerOptions","proxyEvent","tech","delete","containerEl","playerOptions","READY","destroyPlayer","getGeoLocation","sdkWrapper","loadMedia","changeFeed","deactivate","mute","unmute","getPlayerConfigs","updatePlayerConfigs","optimisitic","canPlayStream","shallowCheckAuthentication","OBSERVED_ERROR","TransactionImpl","transactionWrappers","wrapperInitData","_isInTransaction","isInTransaction","errorThrown","initializeAll","closeAll","startIndex","wrapper","SyntheticMouseEvent","ViewportMetrics","getEventModifierState","MouseEventInterface","screenX","screenY","clientX","clientY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","button","buttons","relatedTarget","fromElement","srcElement","toElement","pageX","currentScrollLeft","pageY","currentScrollTop","reusableSVGContainer","WHITESPACE_TEST","NONVISIBLE_TEST","svg","svgNode","testElement","textNode","deleteData","escapeHtml","matchHtmlRegExp","charCodeAt","escapeTextContentForBrowser","getListeningForDocument","mountAt","topListenersIDKey","reactTopListenersCounter","alreadyListeningTo","hasEventPageXY","ReactEventEmitterMixin","getVendorPrefixedEventName","isEventSupported","isMonitoringScrollValue","topEventMapping","topAbort","topAnimationEnd","topAnimationIteration","topAnimationStart","topBlur","topCanPlay","topCanPlayThrough","topChange","topClick","topCompositionEnd","topCompositionStart","topCompositionUpdate","topContextMenu","topCopy","topCut","topDoubleClick","topDrag","topDragEnd","topDragEnter","topDragExit","topDragLeave","topDragOver","topDragStart","topDrop","topDurationChange","topEmptied","topEncrypted","topEnded","topError","topFocus","topInput","topKeyDown","topKeyPress","topKeyUp","topLoadedData","topLoadedMetadata","topLoadStart","topMouseDown","topMouseMove","topMouseOut","topMouseOver","topMouseUp","topPaste","topPause","topPlay","topPlaying","topProgress","topRateChange","topScroll","topSeeked","topSeeking","topSelectionChange","topStalled","topSuspend","topTextInput","topTimeUpdate","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topTransitionEnd","topVolumeChange","topWaiting","topWheel","ReactBrowserEventEmitter","ReactEventListener","injectReactEventListener","setHandleTopLevel","handleTopLevel","setEnabled","enabled","isEnabled","listenTo","contentDocumentHandle","isListening","registrationNameDependencies","trapBubbledEvent","trapCapturedEvent","WINDOW_HANDLE","handlerBaseName","supportsEventPageXY","ev","ensureScrollValueMonitoring","refresh","refreshScrollValues","monitorScrollValue","canUseMembrane","_routerWarning","deprecateObjectProperties","defaultStringifyQuery","_queryString","useQueries","createHistory","addQuery","parseQueryString","SEARCH_BASE_KEY","searchBase","appendQuery","_extends2","searchBaseSpec","stringifyQuery","_PathUtils","listenBefore","hook","_runTransitionHook2","createPath","createHref","createLocation","fullLocation","pushState","replaceState","defaultParseQueryString","_deprecate2","_runTransitionHook","_deprecate","_deprecateObjectProperties","_getRouteParams","_getRouteParams2","_React$PropTypes","setRouteLeaveHook","listenBeforeLeavingRoute","_props2","reduceRight","routeParams","castPath","isKey","stringToPath","symbolTag","nativeCreate","ListCache","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","assocIndexOf","getMapData","__data__","isKeyable","iteratee","baseAssignValue","isIndex","MAX_SAFE_INTEGER","reIsUint","isPrototype","Ctor","NOOP","nrEmitter","ProcessEmitWarning","EventEmitter","$getMaxListeners","_maxListeners","defaultMaxListeners","_addListener","prepend","existing","_events","_eventsCount","newListener","emitter","onceWrapper","fired","wrapFn","ReflectApply","_onceWrap","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","copy","spliceOne","ReflectOwnKeys","R","Reflect","ownKeys","NumberIsNaN","setMaxListeners","getMaxListeners","doError","er","position","originalListener","rawListeners","eventNames","arrayLikeKeys","baseKeys","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","packageName","oneIdTokenObject","authObject","id_token","isEspnPlusExecAccount","isEspnPlusTDA","checkESPNPlusAuthentication","userAuthForESPNPlus","__WEBPACK_IMPORTED_MODULE_2_react_router__","__WEBPACK_IMPORTED_MODULE_3__selectors_flagsSelector__","__WEBPACK_IMPORTED_MODULE_4__lib_format_addQueryToUrl__","LinkWithFlags","toArg","__WEBPACK_IMPORTED_MODULE_1_lodash_find__","__WEBPACK_IMPORTED_MODULE_1_lodash_find___default","__WEBPACK_IMPORTED_MODULE_2_lodash_merge__","__WEBPACK_IMPORTED_MODULE_2_lodash_merge___default","matchingStream","_find","_merge","__WEBPACK_IMPORTED_MODULE_1_classnames__","__WEBPACK_IMPORTED_MODULE_1_classnames___default","__WEBPACK_IMPORTED_MODULE_2__AdContainer__","InContentAd","adClassName","TopLayoutContainer__classCallCheck","TopLayoutContainer__possibleConstructorReturn","TopLayoutContainer__inherits","classnames","classnames_default","heroSelector","ResponsiveThumbnail","connectPlayer","ContentMetadataLarge","IMAGE_WIDTHS","Hero","contentName","contentScore","contentStatus","isPlayable","contentSubtitle","playButtonClasses","blurredImage","SearchContainer","ScheduleModuleContainer","playable","BAMIFrame__jsx","BAMIFrame","authenticationActions","TopLayoutContainer__jsx","TopLayoutContainer__createClass","PlayableHero","TopLayoutContainer","promoShown","_PureComponent","heroArg","showSearch","colCClassName","autoPlaySelector","lastFeedsSelector","playerAdsConfigSelector","prerollConfigSelector","recommendMobileWebSelector","dssPlayerMutedSelector","__WEBPACK_IMPORTED_MODULE_3__pageSelector__","__WEBPACK_IMPORTED_MODULE_4__selectedStreamSelector__","__WEBPACK_IMPORTED_MODULE_6__oneIdSelector__","__WEBPACK_IMPORTED_MODULE_7__adsSelector__","__WEBPACK_IMPORTED_MODULE_8__lib_util_getAndroidVersionFromUserAgent__","__WEBPACK_IMPORTED_MODULE_9__lib_util_getPrerollConfigByEdition__","__WEBPACK_IMPORTED_MODULE_10__lib_util_getAdsConfigByEdition__","__WEBPACK_IMPORTED_MODULE_11__lib_util_getAdsConfigByAdProvider__","__WEBPACK_IMPORTED_MODULE_12__lib_util_hasTier__","playerSelector","hasTier","feeds","pathWithId","adsConfig","adProviderOverride","configByEdition","getAdsConfigByEdition","configByAdProvider","getAdsConfigByAdProvider","isActiveAdProviderGoogle","activeAdProvider","adUnit","cmsidOverride","networkCodeOverride","adUnitOverride","cmsid","networkCode","prerollConfigEditionMap","defaultInterval","intervals","exportedConfig","prerollEditionConfig","getPrerollConfigByEdition","prerollContentTypeConfig","rate","minRate","packageRate","calculatedRate","enablePreroll","getAndroidVersionFromUserAgent","dssPlayer","SearchContainer__classCallCheck","SearchContainer__possibleConstructorReturn","SearchContainer__inherits","Tag","SuggestionItem__jsx","liStyle","textAlign","SuggestionItem","handleSuggestionOnClick","handleMouseEnter","enterPressed","isSelected","handleItemEnter","handleItemLeave","formattedSubtitle","subtitleEl","metaDataClass","isLocked","liClass","focused","SearchSuggestionGroup__jsx","SearchSuggestionGroup","selectedIndex","suggestionHeader","suggestionText","SearchContainer__jsx","SearchContainer__createClass","SearchComponent","handleSearchSubmit","handleSearchTermChange","handleInputOnBlur","handleMouseLeave","handleArrowKeyDown","handleSuggestionSelected","routeToSearchTerm","setStateSearchTerm","handleFooterClick","handleMouseEnterItem","handleMouseLeaveItem","userEnteredText","suggestionBuckets","canCollapse","displaySuggestions","suggestionCount","showFooter","removeEventListener","term","cur","keyCode","newIndex","searchTermQuery","typeAhead","teamSearchQuery","sugBuckets","sum","searchClasses","margin","suggestions","suggestionElements","footer","suggestionsNode","getModalContent","headerHeight","bodyClass","modalStyles","bodyStyles","marginLeft","titleStyles","closeBtnStyles","lightboxClass","I","marginTop","top","bottom","left","right","padding","background","borderRadius","boxShadow","backgroundColor","WebkitBackdropFilter","backdropFilter","MessagingContainer__classCallCheck","MessagingContainer__possibleConstructorReturn","MessagingContainer__inherits","lib_default","PopupBlockerWarning","FlashWarning__jsx","FlashWarning","marginRight","paddingTop","BlackoutMap__jsx","fallbackUrl","BlackoutMap","fallbackImgStyle","backgroundImage","backgroundSize","backgroundRepeat","mapUrl","authenticationAware","BroadcastPicker__jsx","BroadcastPicker","getMetadataClass","renderMetaSource","renderBlackoutPill","baseClass","onSelectStreamTracking","feedSwitch","IframeAuth__jsx","IframeAuth","Paywall__jsx","Paywall","ModalMessaging__jsx","Modal","defaultStyles","renderTransparentMask","shouldShowModal","modalType","ModalMessaging","showModalMessage","closeModal","containerClass","MessagingContainer__jsx","MessagingContainer__createClass","MessagingContainer","slidesOnLeft","slidesOnRight","siblingDirection","getTotalSlides","getPostClones","getPreClones","getTrackLeft","getTrackAnimateCSS","getTrackCSS","checkSpecKeys","getSlideCount","checkNavigable","getNavigableIndexes","swipeEnd","swipeMove","swipeStart","keyHandler","changeSlide","slideHandler","initializedState","extractObject","canGoNext","getSwipeDirection","getHeight","getWidth","lazySlidesOnRight","lazySlidesOnLeft","lazyEndIndex","lazyStartIndex","getRequiredLazySlides","getOnDemandLazySlides","_reactDom","_reactDom2","spec","onDemandSlides","endIndex","slideIndex","lazyLoadedList","requiredSlides","currentSlide","centerMode","slidesToShow","centerPadding","elem","offsetWidth","offsetHeight","touchObject","xDist","yDist","swipeAngle","verticalSwiping","startX","curX","startY","curY","atan2","PI","canGo","infinite","slideCount","newObject","listWidth","findDOMNode","listRef","trackWidth","trackRef","slideWidth","vertical","centerPaddingAdj","slideHeight","listHeight","initialSlide","rtl","slidesToLoad","autoplaying","waitForAnimate","animating","fade","lazyLoad","slidesToScroll","useCSS","animationSlide","finalSlide","animationLeft","finalLeft","trackStyle","swipeLeft","indexOffset","previousInt","slideOffset","unevenOffset","targetSlide","accessibility","swipe","draggable","dragging","touches","scrolling","swipeToSlide","edgeFriction","edgeDragged","onEdge","swiped","swiping","swipeEvent","curLeft","swipeLength","sqrt","verticalSwipeLength","positionOffset","dotCount","swipeDirection","touchSwipeLength","touchThreshold","onSwipe","minSwipe","newSlide","currentLeft","breakpoint","indexes","navigables","prevNavigable","centerOffset","swipedSlide","slickList","slides","slide","offsetTop","offsetLeft","currentIndex","dataset","keysArray","trackHeight","trackChildren","opacity","transition","WebkitTransition","useTransform","WebkitTransform","transform","msTransform","speed","cssEase","unslick","targetLeft","variableWidth","verticalOffset","slidesToOffset","targetSlideIndex","trackElem","childNodes","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","styles","arrayToHash","recurseTimes","isString","primitive","formatPrimitive","visibleKeys","formatError","isRegExp","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","isNumber","isNull","numLinesEst","ar","isNullOrUndefined","re","pad","timestamp","getHours","getMinutes","getSeconds","callbackifyOnRejected","callbackify","original","callbackified","maybeCb","rej","getOwnPropertyDescriptors","descriptors","formatRegExp","objects","throwDeprecation","traceDeprecation","noDeprecation","debugEnviron","debugs","debuglog","NODE_DEBUG","pid","kCustomPromisifiedSymbol","promiseResolve","promiseReject","custom","updater","refs","ReactNoopUpdateQueue","isReactComponent","partialState","enqueueSetState","enqueueCallback","enqueueForceUpdate","isMounted","publicInstance","enqueueReplaceState","completeState","recomputePluginOrdering","eventPluginOrder","pluginName","namesToPlugins","pluginModule","pluginIndex","publishedEvents","eventTypes","publishEventForPlugin","eventNameDispatchConfigs","phaseName","phasedRegistrationName","publishRegistrationName","possibleRegistrationNames","injectedEventPluginOrder","injectedNamesToPlugins","isOrderingDirty","getPluginModuleForEvent","_resetEventPlugins","isEndish","isMoveish","isStartish","executeDispatch","invokeGuardedCallbackWithCatch","invokeGuardedCallback","dispatchListeners","dispatchInstances","executeDispatchesInOrderStopAtTrueImpl","executeDispatchesInOrderStopAtTrue","executeDirectDispatch","dispatchListener","dispatchInstance","hasDispatches","ComponentTree","TreeTraversal","injectComponentTree","Injected","injectTreeTraversal","isAncestor","getLowestCommonAncestor","argFrom","argTo","caughtError","correspondingUseElement","eventNameSuffix","capture","isSupported","useHasFeature","implementation","hasFeature","modifierStateGetter","keyArg","syntheticEvent","keyProp","modifierKeyToProp","getNodeAfter","insertLazyTreeChildAt","moveChild","moveDelimitedText","insertChildAt","closingComment","removeDelimitedText","openingComment","nextNode","startNode","replaceDelimitedText","stringText","nodeAfterComment","Danger","dangerouslyReplaceNodeWithMarkup","DOMChildrenOperations","processUpdates","updates","update","afterNode","mathml","MSApp","execUnsafeLocalFunction","arg0","arg1","arg2","arg3","_assertSingleLink","inputProps","checkedLink","valueLink","_assertValueLink","onChange","_assertCheckedLink","checked","getDeclarationErrorAddendum","ReactPropTypesSecret","hasReadOnlyValue","readOnly","loggedTypeFailures","LinkedValueUtils","checkPropTypes","getChecked","executeOnChange","requestChange","injected","ReactComponentEnvironment","replaceNodeWithMarkup","processChildrenUpdates","injectEnvironment","shouldUpdateReactComponent","prevEmpty","nextEmpty","prevType","nextType","escaperLookup","unescapeRegex","unescaperLookup","KeyEscapeUtils","formatUnexpectedArgument","getInternalInstanceReadyForUpdate","callerName","ReactUpdateQueue","validateCallback","enqueueCallbackInternal","_pendingForceUpdate","_pendingStateQueue","_pendingReplaceState","enqueueElementInternal","_pendingElement","validateDOMNesting","getEventCharCode","charCode","isOwn","unmasked","nativeObjectToString","overArg","isPlainObject","objectTag","funcToString","objectCtorString","reducer","preloadedState","enhancer","ensureCanMutateNextListeners","nextListeners","currentListeners","currentState","isDispatching","currentReducer","replaceReducer","nextReducer","ActionTypes","INIT","observable","outerSubscribe","observer","observeState","getUndefinedStateErrorMessage","actionType","assertReducerSanity","reducers","combineReducers","reducerKeys","finalReducers","sanityError","finalReducerKeys","hasChanged","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","compose","rest","composed","applyMiddleware","middlewares","createStore","_dispatch","chain","middlewareAPI","middleware","_freeGlobal","getPrototype","funcProto","_InternalPropTypes","InternalPropTypes","newObj","detachEvent","getHashPath","replaceHashPath","getWindowPath","getUserConfirmation","confirm","supportsHistory","ua","supportsGoWithoutReloadUsingHash","createKey","KeyPrefix","saveState","SecurityError","QuotaExceededErrors","readState","json","hasSymbols","toStr","origDefineProperty","supportsDescriptors","predicate","predicates","runTransitionHook","hasAnyProperties","createTransitionManager","indexOnlyOrDeprecatedQuery","deprecatedIndexOnly","indexOnly","_isActive3","partialNextState","finishMatch","_matchRoutes2","finishEnterHooks","redirectInfo","handleErrorOrRedirect","_getComponents2","_computeChangedRoutes","_computeChangedRoutes3","leaveRoutes","changeRoutes","enterRoutes","_TransitionUtils","runLeaveHooks","removeListenBeforeHooksForRoute","runChangeHooks","runEnterHooks","getRouteID","__id__","RouteGuid","getRouteHooksForRoutes","hooks","RouteHooks","transitionHook","beforeUnloadHook","routeID","unlistenBefore","unlistenBeforeUnload","thereWereNoRouteHooks","listenBeforeUnload","newHooks","redirectLocation","_computeChangedRoutes2","_isActive2","_getComponents","_matchRoutes","loopAsync","turns","work","isDone","sync","doneArgs","hasNext","currentTurn","mapAsync","doneCount","normalizeArray","allowAboveRoot","up","matchedSlash","xs","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","ext","extname","startDot","startPart","preDotState","serialize","pairs","pushEncodedKeyValuePair","subkey","parseString","pair","parseHeader","fields","isJSON","mime","Response","req","xhr","responseType","responseText","statusText","_setStatusProperties","headers","getAllResponseHeaders","getResponseHeader","_setHeaderProperties","_parseBody","Request","_query","_header","rawResponse","statusCode","new_err","del","Emitter","requestBase","getXHR","XMLHttpRequest","ActiveXObject","serializeObject","xml","urlencoded","ct","statusType","clientError","serverError","toError","accepted","noContent","badRequest","unauthorized","notAcceptable","notFound","forbidden","_responseType","accept","user","pass","btoa","username","password","attach","file","filename","_getFormData","_formData","FormData","crossDomainError","crossDomain","_timeoutError","_timeout","_appendQueryString","onreadystatechange","readyState","timedout","_aborted","handleProgress","percent","loaded","hasListeners","onprogress","upload","abort","_withCredentials","withCredentials","_isHost","_serializer","setRequestHeader","patch","post","put","baseGet","reIsPlainProp","reIsDeepProp","MapCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","funcTag","genTag","asyncTag","proxyTag","nativeKeys","DataView","Set","WeakMap","toSource","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","targetDate","eventTime","normalizeQueryString","queryObj","convertedQuery","convertedVal","SetCache","setCacheAdd","setCacheHas","cacheHas","getListingsByType","WatchAPI","hasLeague","liveData","upcomingData","replayData","__WEBPACK_IMPORTED_MODULE_1__selectors_appSelector__","getPageApiUrl","pathParamsArg","getPageBaseUrl","catalogPageTypes","isShortStopLive","ssBust","eventQuery","getPath","urlArg","ERROR_CODES","__WEBPACK_IMPORTED_MODULE_1_loglevel__","__WEBPACK_IMPORTED_MODULE_1_loglevel___default","__WEBPACK_IMPORTED_MODULE_3__format_queryString__","__WEBPACK_IMPORTED_MODULE_4__url_adapter_toAbsoluteURL__","__WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__","__WEBPACK_IMPORTED_MODULE_6__cache_requestCache__","__WEBPACK_IMPORTED_MODULE_7__requestProxy__","__WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__","__WEBPACK_IMPORTED_MODULE_9__enums__","__WEBPACK_IMPORTED_MODULE_10__config__","__WEBPACK_IMPORTED_MODULE_10__config___default","pageApiConfig","GENERIC_ERROR","PAGE_NOT_CONFIGURED","COUNTRY_NOT_SUPPORTED","COUNTRY_AND_EDITION_CONFLICT","home","video","fromIndex","toInteger","nativeMax","baseFindIndex","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","setToArray","__WEBPACK_IMPORTED_MODULE_0_eventemitter3__","__WEBPACK_IMPORTED_MODULE_0_eventemitter3___default","_EventEmitter","jwtDecodeToken","jwtToken","jwtDecode","decodeSuccess","decodeErr","startGetFan","START_GET_FAN","completeGetFan","COMPLETE_GET_FAN","getFan","fanApi","getFanForId","__WEBPACK_IMPORTED_MODULE_0_watch_fanapi__","__WEBPACK_IMPORTED_MODULE_0_watch_fanapi___default","__WEBPACK_IMPORTED_MODULE_1__selectors_fanSelector__","__WEBPACK_IMPORTED_MODULE_2__oneIdActions__","__WEBPACK_IMPORTED_MODULE_3__lib_util_isEmpty__","__WEBPACK_IMPORTED_MODULE_4__lib_util_perf__","FanAPI","sourceHeader","concatAll","theArray","results","subArray","contentIndex","headline","poster","contains","bucketContent","initializePrerollHistory","getSiteSectionId","platformType","rootName","ssid","isGoogleAdProvider","appendToken","tokenType","newUrl","tokenParam","resourceParam","getPlayerBackgroundStyle","getImageUrlWithParams","removeDimensions","cquality","nielsenTrackingData","moreCustomMetadata","isSecureProtocol","APP_MEASUREMENT","RSID","TRACKING_SERVER","TRACKING_SERVER_SECURE","ESPN_CUSTOM_METADATA","HEARTBEAT","DEBUG_LOGGING","NIELSEN_DATA","APP_INFO","CONTENT_METADATA","prerollConfig","savePrerollHistory","playedItemsInSession","getDeviceTypeFromUA","video_player","getPlayerOptions__extends","authorization","streamlimiter","comscoreTrackingData","social","settingsMenu","feedsMenu","affiliate","wasUserInitiated","conviva","adobeDCR","getAdobeDCRConfig","comscore","chartbeat","authToken","encoded","partnerName","moreOptions","clipId","customerKey","language","siteSectionId","endcard","sourceType","sourceId","asset","channelId","watchId","WATCH_BASE_URL","assetId","preroll","getPrerollSetting","shouldOverrideListings","initialPlaybackMeta","authenticator","origVideoHref","videoHref","programChangePollingInterval","usPrivacyCookie","allowAdSkip","useNewUI","iphoneplaysinline","adProviderOrder","pp","googleIMA","imaParams","custParams","cust_params","d_us_privacy","us_privacy","rdp","adEnv","adProvider","enableDRM","newStreamPicker","url_adapter","__WEBPACK_IMPORTED_MODULE_2_classnames__","__WEBPACK_IMPORTED_MODULE_2_classnames___default","AdContainer","refreshed","watchAdManager","addInstance","ads","removeInstance","collapseBeforeLoad","exclude","include","inView","isOutOfPage","refreshWhenVisible","slotKvps","adProps","includeStr","excludeStr","kvpsStr","Logo","adobeResourceArg","isStreamStatus","isUserAuthenticated","userIsAuthenticated","getFirstStreamUserAuth","isTVEAuthenticated","isBAMAuthenticated","isBAMStream","isTVEStream","handleSingleStreamAuthentication__asyncToGenerator","fetchTVEAuthAction","nextSelectedContent","useLocationPathname","queryParams","routePath","openStreamPicker__asyncToGenerator","selectPickerStreams","nextPickerStreams","nextStreams","onRowClickCallback","closePicker","handleSelectedStream","evts","ON_ROW_CLICK","isPickerReady","hasSubscribe","hasObj","hasRowClick","hasOpenPicker","handleStreamPickerOnError","selectStreamForAuthUsers__asyncToGenerator","showPicker","selectedFirstStream","requiredAuths","chooseTVEAuth","userHasAuthedMVPD","openStreamPicker__extends","useqa","_spHost","resQs","streamFromPicker","filterPickerStreamsById","onHero","maxReTries","waitTime","retry","reTryOpenPicker","setInterval","clearInterval","darkmode","pickerScriptReady","waitUntilPickerScriptReady","openPicker","triggerEvtOnNav","tvePreauthResources","retryTime","selectStreamForAuthUsers__extends","playerSideBarContent","filteredStreams","lastFeeds","lastSelectedStream","handleSingleStreamAuthentication","getSrcSetEntry","getSrcSet","srcSetEntry","__WEBPACK_IMPORTED_MODULE_1__constants__","__WEBPACK_IMPORTED_MODULE_2__lib_url_adapter__","alt","lazyload","srcSetWidths","srcProp","sizes","srcSet","imgProps","__WEBPACK_IMPORTED_MODULE_2_bluebird___default","ESPNPlayer","autoEmbedCountDown","initialAutoEmbedCountDown","deferPlayerInitialization","deferInitialStreamSelect","initializedWithAuthZError","socialOpened","showFeedsSelector","feedsSelectorMessage","onToggleAutoPlay","onContentLoaded","onSocialOpened","onSocialClosed","onProgramChange","onPlaybackError","onDrmError","onBAMAuthrizeUser","onBAMFeedChange","onBAMSettingsChanged","onBAMMediaLoaded","onBAMPlaybackError","onFeedClick","hasUserFeedSwitchedStream","playerReady","initializePlayer","unregisterEvents","registerEvents","startAutoEmbedTimer","unembedPlayer","embedPlayer","throwError","newRelicTrackingOnPlayer","onFeedCloseModal","_isMounted","_isUnMounting","_autoEmbedTimer","_isAuthorizing","primed","onDeckContent","nextPlayingStream","nextUserAuth","nextOnDeckContent","nextRecommendMobileWeb","recommendMobileWeb","nextLocationBeforeTransitions","nextLastFeeds","nextPreauthorizedResources","scoringComplete","initialEmbedContent","isVod","programChanging","selectStreamForAuthUsers","prePlayPicker","accountId","finally","mediainfo","getPlayer","configure","captionOpened","onCaptionOpened","onCaptionClosed","retryCount","isBlackout","isStreamConcurrencyViolation","startType","customErrorMessage","isEditions","appDrmSupport","appSupportsDrm","getAppLink","feed","feedStream","feedContent","mutedQuery","authPlay","dssPlayerMuted","currentStream","disableAuthPrompt","playerReadyAction","omnitureQuery","getOmnitureQuery","newrelicInsertKey","newrelicAccountId","param","streamCount","eventType","devicePlatform","newRelicTrackEvent","optimizeLive","native","AUTHORIZE_USER","FEED_CHANGE_REQUEST","SETTINGS_CHANGED","MEDIA_LOADED","PLAYBACK_ERROR","messageArg","destroy","menuItems","streamItem","streamData","playbackErrorMessage","wrappedComponent","wrappedComponentRefs","playerContainer","autoPlay","playerAdsConfig","playerOpts","locationQueryParams","currentPlayerTech","createLogoConfig","createSettingsMenuConfig","createFeedsMenuConfig","getPlayerOptions","isBamPlayer","isBrightCovePlayer","wrapperEl","streamObj","shareBaseUrl","shareUrl","ml","mediaLocation","getDSSPlayerMutedOnAuthPlay","dssAdsConfig","hudson","usPrivacy","dUsPrivacy","playlistItem","pageApiMeta","ui","audio","initialEmbedSelector","onDeckContentSelector","isNewrelicTrackingOn","__WEBPACK_IMPORTED_MODULE_2_bluebird__","__WEBPACK_IMPORTED_MODULE_3_hoist_non_react_statics__","__WEBPACK_IMPORTED_MODULE_3_hoist_non_react_statics___default","__WEBPACK_IMPORTED_MODULE_4_selectn__","__WEBPACK_IMPORTED_MODULE_4_selectn___default","__WEBPACK_IMPORTED_MODULE_5_lodash_uniqBy__","__WEBPACK_IMPORTED_MODULE_5_lodash_uniqBy___default","__WEBPACK_IMPORTED_MODULE_6_cookie_cutter__","__WEBPACK_IMPORTED_MODULE_6_cookie_cutter___default","__WEBPACK_IMPORTED_MODULE_7__constants__","__WEBPACK_IMPORTED_MODULE_8__common_video_player__","__WEBPACK_IMPORTED_MODULE_9__FeedsSelector__","__WEBPACK_IMPORTED_MODULE_11__enums__","__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__","__WEBPACK_IMPORTED_MODULE_13__common_actions_authenticationActions__","__WEBPACK_IMPORTED_MODULE_14__common_actions_oneIdActions__","__WEBPACK_IMPORTED_MODULE_15__common_selectors_bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_16__common_selectors_analyticsSelectors__","__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_18__common_selectors_playerSelector__","__WEBPACK_IMPORTED_MODULE_19__common_selectors_initialEmbedSelector__","__WEBPACK_IMPORTED_MODULE_20__common_selectors_onDeckContentSelector__","__WEBPACK_IMPORTED_MODULE_21__common_selectors_pageSelector__","__WEBPACK_IMPORTED_MODULE_22__common_selectors_selectedContentSelector__","__WEBPACK_IMPORTED_MODULE_23__common_selectors_selectedStreamSelector__","__WEBPACK_IMPORTED_MODULE_24__common_selectors_playingStreamSelector__","__WEBPACK_IMPORTED_MODULE_25__common_selectors_pickerStreamsSelector__","__WEBPACK_IMPORTED_MODULE_26__common_selectors_providerSelector__","__WEBPACK_IMPORTED_MODULE_27__common_selectors_authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_28__common_selectors_oneIdSelector__","__WEBPACK_IMPORTED_MODULE_29__common_selectors_flagsSelector__","__WEBPACK_IMPORTED_MODULE_30__lib_auth_authStateKnown__","__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__","__WEBPACK_IMPORTED_MODULE_32__lib_auth_streamHasDTCPackage__","__WEBPACK_IMPORTED_MODULE_33__lib_auth_shallowCheckAuthentication__","__WEBPACK_IMPORTED_MODULE_34__lib_auth_canPlayContent__","__WEBPACK_IMPORTED_MODULE_35__lib_auth_PreAuthZ__","__WEBPACK_IMPORTED_MODULE_36__lib_api_newRelicApi__","__WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__","__WEBPACK_IMPORTED_MODULE_38__lib_util_getBamAuthConfig__","__WEBPACK_IMPORTED_MODULE_39__lib_format_addQueryToUrl__","__WEBPACK_IMPORTED_MODULE_40__lib_omniture__","__WEBPACK_IMPORTED_MODULE_41__common_injectIntl__","__WEBPACK_IMPORTED_MODULE_42__util__","__WEBPACK_IMPORTED_MODULE_43__actions__","__WEBPACK_IMPORTED_MODULE_44__globalVideoElement__","__WEBPACK_IMPORTED_MODULE_45__lib_util_localStorage__","__WEBPACK_IMPORTED_MODULE_46__lib_streamPicker__","__WEBPACK_IMPORTED_MODULE_47__lib_native_bridge_espnapp__","__WEBPACK_IMPORTED_MODULE_48__common_selectors_apiParamsSelector__","nonAuthedActionCreator","AuthenticationAware","providerSelect","adobePassLogout","newRelicTrackingOnStreamAuth","newRelicTrackingOnSelectStream","isPaywallRendered","nextAdobePass","authenticationEnabled","checkAuthenticationComplete","nextSelectedStream","nextBamSubReady","nextCompleteTime","isUpcoming","loginWithContentID","login_with_content_eventId","login_with_content_id","login_with_pkg","streamPlaywableAfterLogin","cannotPlay","checkAuthenticationStateComplete","newContentSelected","newStreamSelected","eventOnHero","newContentClick","newStreamFeedSelect","handleMultipleStreamAuthentication","singleStream","__WEBPACK_IMPORTED_MODULE_2_lodash_uniq__","__WEBPACK_IMPORTED_MODULE_2_lodash_uniq___default","__WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__","__WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__","__WEBPACK_IMPORTED_MODULE_8__lib_api_newRelicApi__","__WEBPACK_IMPORTED_MODULE_9__lib_util_isEmpty__","__WEBPACK_IMPORTED_MODULE_10__lib_auth_authStateKnown__","__WEBPACK_IMPORTED_MODULE_11__lib_auth_canPlayContent__","__WEBPACK_IMPORTED_MODULE_12__lib_auth_canPlayStream__","__WEBPACK_IMPORTED_MODULE_13__lib_auth_streamHasAuthType__","__WEBPACK_IMPORTED_MODULE_14__lib_streamPicker__","__WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_16__common_selectors_selectedContentSelector__","__WEBPACK_IMPORTED_MODULE_17__common_selectors_selectedStreamSelector__","__WEBPACK_IMPORTED_MODULE_18__common_selectors_routingSelector__","__WEBPACK_IMPORTED_MODULE_19__common_selectors_pickerStreamsSelector__","__WEBPACK_IMPORTED_MODULE_20__common_selectors_oneIdSelector__","compare","_isBuffer","pToString","isView","arrbuf","buffer","functionsHaveNames","truncate","something","rawname","getMessage","operator","stackStartFunction","AssertionError","memos","multiline","ignoreCase","Float32Array","Float64Array","Uint8Array","actualIndex","objEquiv","actualVisitedObjects","aIsArgs","bIsArgs","pSlice","ka","kb","notDeepStrictEqual","expectedException","isPrototypeOf","_tryBlock","block","_throws","shouldThrow","userProvidedMessage","isUnwantedException","isUnexpectedException","objectAssign","generatedMessage","fn_name","next_line","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notStrictEqual","throws","doesNotThrow","ifError","canDefineProperty","getIteratorFn","maybeIterable","iteratorFn","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ReactPropTypeLocationNames","getTextContentAccessor","contentKey","documentElement","_callbacks","_contexts","_arg","contexts","checkpoint","rollback","isTextInputElement","supportedInputTypes","scrollPosition","lastChild","textContent","focusNode","focus","prefixKey","isUnitlessNumber","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixes","shorthandPropertyExpansions","backgroundAttachment","backgroundPositionX","backgroundPositionY","backgroundPosition","border","borderWidth","borderStyle","borderColor","borderBottom","borderBottomWidth","borderBottomStyle","borderBottomColor","borderLeft","borderLeftWidth","borderLeftStyle","borderLeftColor","borderRight","borderRightWidth","borderRightStyle","borderRightColor","borderTop","borderTopWidth","borderTopStyle","borderTopColor","font","fontStyle","fontVariant","fontSize","fontFamily","outline","outlineWidth","outlineStyle","outlineColor","CSSProperty","isAttributeNameSafe","validatedAttributeNameCache","illegalAttributeNameCache","VALID_ATTRIBUTE_NAME_REGEX","shouldIgnoreValue","quoteAttributeValueForBrowser","DOMPropertyOperations","createMarkupForID","setAttributeForID","createMarkupForRoot","setAttributeForRoot","createMarkupForProperty","createMarkupForCustomAttribute","setValueForProperty","deleteValueForProperty","namespace","setAttributeNS","setValueForAttribute","deleteValueForAttribute","updateOptionsIfPendingUpdateAndMounted","_wrapperState","pendingUpdate","updateOptions","multiple","propValue","selectedValue","_handleChange","didWarnValueDefaultValue","ReactDOMSelect","getHostProps","mountWrapper","wasMultiple","getSelectValueContext","postUpdateWrapper","isInternalComponentType","instantiateReactComponent","shouldHaveDebugID","ReactEmptyComponent","ReactHostComponent","createInternalComponent","getNativeNode","ReactCompositeComponentWrapper","createInstanceForText","_mountIndex","_mountImage","ReactCompositeComponent","construct","_instantiateReactComponent","ReactNodeTypes","HOST","COMPOSITE","EMPTY","getType","emptyComponentFactory","ReactEmptyComponentInjection","injectEmptyComponentFactory","instantiate","genericComponentClass","textComponentClass","isTextComponent","ReactHostComponentInjection","injectGenericComponentClass","componentClass","injectTextComponentClass","getComponentKey","traverseAllChildrenImpl","nameSoFar","traverseContext","SEPARATOR","nextName","subtreeCount","nextNamePrefix","SUBSEPARATOR","childrenString","traverseAllChildren","isNative","reIsNative","purgeDeep","childIDs","describeComponentFrame","ownerName","lineNumber","describeID","ReactComponentTreeHook","getElement","ownerID","getOwnerID","getItemIDs","addRoot","removeRoot","getRootIDs","itemMap","rootIDSet","itemByKey","rootByKey","getKeyFromID","getIDFromKey","unmountedIDs","onSetChildren","nextChildIDs","nextChildID","nextChild","parentID","onBeforeMountComponent","updateCount","onBeforeUpdateComponent","onMountComponent","onUpdateComponent","onUnmountComponent","purgeUnmountedComponents","_preventPurging","getCurrentStackAddendum","topElement","currentOwner","_debugID","getStackAddendumByID","getParentID","getChildIDs","getSource","getText","getUpdateCount","getRegisteredIDs","EventListener","registerDefault","isInDocument","containsNode","ReactDOMSelection","getActiveElement","ReactInputSelection","hasSelectionCapabilities","contentEditable","getSelectionInformation","focusedElem","selectionRange","getSelection","restoreSelection","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","setSelection","selection","selectionStart","selectionEnd","range","createRange","parentElement","moveStart","moveEnd","getOffsets","offsets","createTextRange","collapse","select","setOffsets","activeElement","firstDifferenceIndex","string1","string2","minLen","getReactRootElementInContainer","DOC_NODE_TYPE","internalGetID","mountComponentIntoNode","wrapperInstance","shouldReuseMarkup","wrappedElement","ReactDOMContainerInfo","_topLevelWrapper","ReactMount","_mountImageIntoNode","batchedMountComponentIntoNode","componentInstance","ReactDOMFeatureFlags","useCreateElement","unmountComponentFromNode","hasNonRootReactChild","rootEl","isValidContainer","ELEMENT_NODE_TYPE","DOCUMENT_FRAGMENT_NODE_TYPE","getHostRootInstanceInContainer","prevHostInstance","getTopLevelWrapperInContainer","_hostContainerInfo","ReactMarkupChecksum","ROOT_ATTR_NAME","instancesByReactRootID","topLevelRootCounter","TopLevelWrapper","rootID","_instancesByReactRootID","scrollMonitor","renderCallback","_updateRootComponent","prevComponent","_renderNewRootComponent","wrapperID","_instance","renderSubtreeIntoContainer","parentComponent","_renderSubtreeIntoContainer","nextWrappedElement","_processChildContext","prevWrappedElement","publicInst","updatedCallback","unmountComponentAtNode","reactRootElement","containerHasReactMarkup","containerHasNonRootReactChild","hasAttribute","rootElement","canReuseMarkup","checksum","CHECKSUM_ATTR_NAME","rootMarkup","outerHTML","normalizedMarkup","diffIndex","getHostComponentFromComposite","_renderedNodeType","isAbsolutePath","ensureSlash","_DOMUtils","addQueryStringValueToPath","stripQueryStringValueFromPath","getQueryStringValueFromPath","createHashHistory","getCurrentLocation","_DOMStateStorage","startHashChangeListener","hashChangeListener","transitionTo","finishTransition","_Actions","currentHash","stopHashChangeListener","unlisten","registerTransitionHook","unregisterTransitionHook","_ExecutionEnvironment","DefaultQueryKey","_createDOMHistory2","_createDOMHistory","createDOMHistory","_createHistory2","_createHistory","createRandomKey","locationsAreEqual","transitionHooks","getCurrent","pendingLocation","allKeys","updateLocation","newLocation","changeListeners","_location","confirmTransitionTo","_AsyncUtils","nextLocation","prevPath","nextPath","prevIndex","nextIndex","keyLength","_createLocation3","updateLocationState","DefaultKeyLength","_createLocation2","isArgs","origKeys","keysShim","originalKeys","shim","callee","TypeErr","dotAll","unicode","sticky","gOPD","makeStateWithLocation","createRouterObject","transitionManager","createRoutingHistory","isLeftClickEvent","isModifiedEvent","isEmptyObject","createLocationDescriptor","_PropTypes","activeStyle","activeClassName","onlyActiveOnIndex","statics","onEnter","routeIndex","parentPattern","getRoutePattern","memoryHistory","_useQueries2","_useBasename2","__v2_compatible__","_useQueries","_useBasename","_createMemoryHistory","useBasename","checkBaseHref","checkedBaseHref","baseHref","addBasename","prependBasename","pname","normalizedBasename","normalizedPathname","_useRouterHistory","isCollectionsPage","formattedPageName","formattedPageId","omniturePageName","collectionsPageData","prop35","sections","authenticated","authenticationStatus","notOnSyndicatedPlayerPage","providerPackageName","providerPackage","eVar68","sessionId","deviceId","hasSupderSundle","eVar102","eVar104","eVar87","list1","list2","__WEBPACK_IMPORTED_MODULE_1__auth_getAccessMethodFromAuthTypes__","initialState","superagent","SuperagentPromiseError","removeQueryFromUrl","streamSubtitle","normalizeCountry","usTerritories","getQueryParamsFromString","includeOnlyList","matchingQueryParams","sanitizedQueryParams","queryParamName","convertV1ToV3","v3Content","rawDate","getStreamForContent","convertV3ToV1","v1Content","getContentFromListing","getSiteUrlForPath","getI18nInclude","getMobileGameCastUrlForContent","keyAndValue","convertedString","matchingObject","_pick","currentObjectCount","lengthOfMatchingObject","_size","assignValue","objValue","hasIn","hasPath","baseHasIn","baseFlatten","isFlattenable","arrayPush","overRest","otherArgs","baseSetToString","shortOut","setToString","baseProperty","createUTC","rfc2822","weekdayMismatch","createInvalid","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","set$1","mod","modMonth","handleStrictParse","shiftWeekdays","ws","handleStrictParse$1","getSetGlobalLocale","getLocale","localeFamilies","tmpLocale","listLocales","expectedWeekday","createLocal","curWeek","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","calculateOffset","obsOffset","militaryOffset","numOffset","obsOffsets","hm","configFromRFC2822","parsedArray","RFC_2822","isDurationValid","ordering","unitHasDecimal","isValid$1","createInvalid$1","createDuration","keepMinutes","addSubtract","calendar$1","localFrom","localTo","keepOffset","mod$1","dividend","divisor","localStartOfDate","MS_PER_400_YEARS","utcStartOfDate","startOfDate","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_SECOND","isValid$2","createUnix","createInZone","get$1","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","addSubtract$1","add$1","subtract$1","valueOf$1","clone$1","get$2","relativeTime$1","ss","getSetRelativeTimeRounding","getSetRelativeTimeThreshold","toISOString$1","abs$1","toFixed","totalSign","ymSign","daysSign","hmsSign","defaultDayOfMonthOrdinalParse","kInput","dayOfMonthOrdinalParse","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","proto$1","asQuarters","proto$2","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","getAuthTypesFromBroadcasts","getPackagesFromBroadcasts","getSourceTypeFromBroadcasts","getSourceIdFromBroadcasts","getSourceFromBroadcasts","getAdobeResourceFromBroadcasts","getImageHrefFromBroadcasts","pathArg","ROOT","region","build","leagueCode","lowerLeagueCode","mobileHost","leagueCodePathMap","scoresHost","__WEBPACK_IMPORTED_MODULE_0__auth_getContentId__","ncaam","nba","nfl","ncaaf","getId","playInHero","__WEBPACK_IMPORTED_MODULE_0__queryString__","__WEBPACK_IMPORTED_MODULE_1__auth_getContentId__","__WEBPACK_IMPORTED_MODULE_2__omniture__","arrayIncludes","baseIndexOf","fromRight","arrayIncludesWith","comparator","isArrayLikeObject","cacheConfig","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","allocUnsafe","fromArrayBuffer","fromString","fromObject","assertSize","alloc","fill","encoding","isEncoding","byteLength","fromArrayLike","byteOffset","isnan","SlowBuffer","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","read","buf","indexSize","readUInt16BE","arrLength","valLength","found","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","base64","fromByteArray","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","toHex","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","stringtrim","INVALID_BASE64_RE","Infinity","leadSurrogate","byteArray","hi","lo","toByteArray","INSPECT_MAX_BYTES","foo","subarray","_augment","species","allocUnsafeSlow","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","createHash","validateArg","validate","vKey","vValue","validateKeySize","command","reallocString","maxKeySize","keyCompression","digest","fuse","handlers","merge","curry","Iterator","collection","maximum","escapeValue","unescapeValue","isSwidInWhitelist","whitelistedSwids","WEBAPP","adsSelector","baseIsEqual","customizer","baseIsEqualDeep","equalArrays","equalFunc","isPartial","COMPARE_PARTIAL_FLAG","othLength","stacked","COMPARE_UNORDERED_FLAG","arrValue","othValue","compared","arraySome","othIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseTimes","isStrictComparable","matchesStrictComparable","srcValue","toFinite","remainder","toNumber","NAN","reTrim","isBinary","reIsBinary","reIsOctal","freeParseInt","reIsBadHex","adobePassAuthenticator","AdobePassAuthenticator","IpAuthenticator","copyObject","newValue","isIterateeCall","argsTag","nonEnumShadows","assigner","sources","guard","isCommon","LARGE_ARRAY_SIZE","createSet","computed","seenIndex","AccountSelectorComponent","_AccountSelectorCompo","_AccountSelectorCompo2","__WEBPACK_IMPORTED_MODULE_4__lib_oneId__","__WEBPACK_IMPORTED_MODULE_5__lib_auth_streamHasDTCPackage__","__WEBPACK_IMPORTED_MODULE_6__lib_auth_shallowCheckAuthentication__","__WEBPACK_IMPORTED_MODULE_7__lib_format_addQueryToUrl__","__WEBPACK_IMPORTED_MODULE_8__actions_oneIdActions__","__WEBPACK_IMPORTED_MODULE_9__actions__","__WEBPACK_IMPORTED_MODULE_10__selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_11__selectors_oneIdSelector__","purchaseFlow","mode","MODE","UNKNOWN","onTVEClick","onPurchaseClick","onLogin","onCancelClick","processRedirect","processRedirectBySkip","navigateToESPNPlus","setContent","notEntitledForContent","isNotEntitledForContent","nextNotEntitledForContent","prevProps","prevPackages","alert","modeArg","hasESPNPlusBase","PURCHASE_MLB_ADDON","PURCHASE_MLB_BUNDLE","PURCHASE_NHL","PURCHASE_BASE_MATCHUP","PURCHASE_BASE","isSkip","disneyid","oneIdData","getMode","modeKnown","LABEL","entitlementsInfo","loginLabel","firstName","ACCOUNT_SELECTOR","oneIdState","lowerUa","isSafariBrowser","isSafari","vendor","androidVersion","sortByRank","firstElement","secondElement","firstRank","secondRank","contentTypeRules","tierType","strProps","isStitcherUrl","isArtworkUrl","isCombinerUrl","canUseCombiner","toSecureCombinerUrl","convertToCombinerUrl","convertToCombinerQueryString","NATURAL_THRESHOLD","IntlMessageFormat","hop","ScheduleEventCard__classCallCheck","ScheduleEventCard__possibleConstructorReturn","ScheduleEventCard__inherits","BucketHeaderContainer","scheduleModuleSelector","scheduleModuleNameSelector","EmailShare","appBaseUrl","subject","FacebookShare__jsx","FacebookShare","langParam","countryParam","TwitterShare__jsx","TwitterShare","currentUrl","original_referer","SharePalette__jsx","shareOutlets","generateClickHandler","SharePalette","clickHandlers","removeClickHandlers","setupClickHandlers","outlet","appBaseUrlSelector","currentUrlSelector","UpcomingAlert","ScheduleEventCard__jsx","ScheduleEventCard__createClass","ScheduleEventCard","displayAlert","toggleAlert","dateFormatStr","alertThreshold","minUntilStart","sourceArg","subtitleArg","tmpArr","footerText","keyClass","getDisplayTime","shouldAlertOnClick","getAlertEl","ScheduleModuleContainer__jsx","ScheduleModule","scheduleModuleName","contentLimit","placementPrefix","intlDateFormat","headerTitle","schedPageHref","targetBucket","unSortedContents","origTags","upcomingTagIndex","liveTagIndex","scheduleModuleConfig","eventDateNextDayString","contentA","contentB","aDate","bDate","cards","scheduleModuleBucketsSelector","BucketHeader","seeAllText","BucketHeaderContainer__jsx","displaySize","index_es","classModifiers","center","Alert","align","animation","onClose","finalClassName","UpcomingAlert__jsx","moreText","baseForOwn","createBaseEach","baseEach","createBaseFor","baseFor","assignMergeValue","safeGet","keysIn","baseKeysIn","mapTag","setTag","load","getBucketDimension","ratio","calculateRows","columns","generateBucketCss","row","breakPoints","ratioBreakPointMap","css","mediaFeatures","breakPointMqMap","col","layoutKey","ratioKey","collectionRowClassMap","_collectionRowClassMa","_ratioBreakPointMap","Helmet","Helmet_default","SearchBucketsHeader","CollectionBucketHeader__jsx","CollectionBucketHeader","Tile","Bucket__jsx","getExpandableThresholds","maxToDisplay","dtcItemLayouts","featureLayouts","featureLeftLayout","featureRightLayout","tablet","Bucket","getImageFormat","getLayoutType","getBucketLink","isTileFeatured","isPagePreview","shouldShowAllTiles","showMoreClickHandler","expanded","imageFormatBucket","imageFormat","imageFormatContent","apiLayout","finalLayout","bucketLink","featureLayoutsList","layoutTypeHasDefinedShreshhold","isFeaturedLeftLayout","isFeaturedRightLayout","layoutVariant","isDTCLayout","isTileNavigable","layoutThreshold","bucketRows","collectionRowClassName","collection_row","collectionClassName","expandThresholds","layoutTags","layoutTag","minimumToDisplay","maximumToDisplay","footerClass","active","collectionContents","collectionRowChildren","bucketCss","Stamp","AnchorWithFlags","FEATURED_IMAGE_WIDTHS","collectionItemOneLayouts","isNavigable","tileClassNames","isContentUpcoming","isContentLive","isContentClickable","tileClassName","collection_item","playButtonClass","activeClass","newStamp","isNew","descriptionEl","tileClickHandler","__WEBPACK_IMPORTED_MODULE_4__common_injectIntl__","isTile","stampClass","stampContent","live","useProtocolOnly","PROTOCOL","actionPath","BASE_URL","__WEBPACK_IMPORTED_MODULE_0__index__","__WEBPACK_IMPORTED_MODULE_2__format_queryString__","createNativeBridge","__WEBPACK_IMPORTED_MODULE_1__alias_Stamp__","HtmlClassMap","figcaption","PLAYBACK","__WEBPACK_IMPORTED_MODULE_2__selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_3__selectors_pageSelector__","__WEBPACK_IMPORTED_MODULE_4__search_SearchResultAsList__","__WEBPACK_IMPORTED_MODULE_5__enums__","__WEBPACK_IMPORTED_MODULE_6_react_intl__","__WEBPACK_IMPORTED_MODULE_7__buckets_Bucket__","__WEBPACK_IMPORTED_MODULE_8__injectIntl__","__WEBPACK_IMPORTED_MODULE_9__DownloadLink__","__WEBPACK_IMPORTED_MODULE_10__actions_apiAction__","overflowStyle","textOverflow","whiteSpace","SearchResultsContainer","appendScore","fillBuckets","changeSortOrder","downloadLink","queryType","containerHeader","getContainerHeader","bucketResults","isChromeOrSafari","isChrome","webstore","BrandingElement","brandingName","brandingLogoUrl","backArrowStyle","backTextStyle","marginBottom","maxWidth","selectn_default","logoutStyle","Logout","handleLogout","buttonLabel","ProviderSettings__jsx","ProviderSettings","displayLogout","handleLogin","logoutEl","ProviderLogo__jsx","ProviderLogo","imgSrc","webLink","imgStyle","providerImg","ProviderLogoPlayback__jsx","ProviderLogoPlayback","hideProviderLogo","headerClass","providerLogoEl","providerSettingsEl","verticalAlign","BrandingContainer__jsx","BrandingContainer","handleLogoutFromPlaybackPage","isPlayerPage","updateQuery","fetchAction","Select","findIndex_default","DateSlider","FilterGroup","isResponsive","onDateSelectorChange","onStatusFilterChange","onSportsFilterChange","onNetworkFilterChange","showSportOptions","showNetworkOptions","statusDefaultSelection","watchRegion","sportOptions","cat","networkOptions","sportDefaultSelection","networkDefaultSelection","hasDatesParam","startDateStr","sliderDateStr","maxDaysInFuture","today","endDateStr","sliderDate","dateSelector","replayDateSelector","needSeparator","onReplayDateSelectorChange","setDate","FilterGroupContainer","handleChange","getDefaultSelection","defaultSelection","eventValue","menuSizeClass","menuClassName","selectedOption","opt","isPacRimOrCarib","regionCode","__WEBPACK_IMPORTED_MODULE_3_lodash_groupBy__","__WEBPACK_IMPORTED_MODULE_3_lodash_groupBy___default","__WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy__","__WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy___default","__WEBPACK_IMPORTED_MODULE_5__constants__","__WEBPACK_IMPORTED_MODULE_6__lib_format_apiDateFormatter__","__WEBPACK_IMPORTED_MODULE_10__selectors_authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_11__selectors_darkThemeSelector__","__WEBPACK_IMPORTED_MODULE_12__alias_ScheduleCategorySection__","__WEBPACK_IMPORTED_MODULE_13__StatusFilter__","__WEBPACK_IMPORTED_MODULE_14__isPacRimOrCarib__","compareObjectsByName","noCategoryMapping","aName","bName","getTranslatedTab","formatMessageFn","selectedTab","translatedSelectedTab","getTranslatedDate","weekDay","ScheduleCategoryContainer","startDateValue","showSectionCaption","darkTheme","upcomingDateFormat","translateTab","otherTabs","tab","br","otherTabs1","otherTabs2","listingsGroupedByCategory","groupBy","categoryListings","dateValue","formatOfDate","showCaption","isNLEdition","dateStyles","textTransform","darkThemeSelector","createAggregator","focusable","isTabIndexNotNaN","visible","hidden","tabbable","tabIndex","isTabIndexNaN","findTabbableDescendants","assignWith","baseAssign","createAssigner","getLength","shimKeys","propsLength","allowIndexes","isProto","getTier1Providers","tierOneProviders","sortProvidersByRank","SearchFilter","placeholder","handleInputFocus","Provider__jsx","ProviderList__jsx","headerStyle","cursor","ProviderList","listHeader","Tier1Provider__jsx","intlImgStyle","maxHeight","intlAnchorStyle","Tier1Provider","providerImageUrl","anchorStyle","Tier1ProviderGrid__jsx","Tier1ProviderGrid","DMVPDButton__jsx","DMVPDButton","ProviderDialog__jsx","ProviderDialog","searchFilter","showTierOne","onFilterInputChange","onFilterInputFocus","faqUrl","upsellUrl","showDMVPDUpsell","showTierOneProviders","providerStyle","providerClass","noCost","faq","help","tier1Providers","tier1Grid","preSearch","postSearch","modalTitle","tierOne","dmvpdButton","domainCheck","ud","updateAdobeAuthentication","__WEBPACK_IMPORTED_MODULE_1__common_actions_authenticationActions__","__WEBPACK_IMPORTED_MODULE_2__common_selectors_selectedContentSelector__","__WEBPACK_IMPORTED_MODULE_3__common_selectors_selectedStreamSelector__","domainAuthStatus","__WEBPACK_IMPORTED_MODULE_4__lib_auth_authStateKnown__","__WEBPACK_IMPORTED_MODULE_5__lib_util_isEmpty__","__WEBPACK_IMPORTED_MODULE_6__common_ResponsiveThumbnail__","__WEBPACK_IMPORTED_MODULE_7__common_authenticationAware__","__WEBPACK_IMPORTED_MODULE_8__common_actions_appActions__","__WEBPACK_IMPORTED_MODULE_9__player_actions__","__WEBPACK_IMPORTED_MODULE_10__common_actions_authenticationActions__","__WEBPACK_IMPORTED_MODULE_11__ProviderDialog__","__WEBPACK_IMPORTED_MODULE_12__ConnectedPlayer__","__WEBPACK_IMPORTED_MODULE_13__style__","__WEBPACK_IMPORTED_MODULE_14__alias_Playable__","__WEBPACK_IMPORTED_MODULE_15__SyndicatedPlayerAPIProxy__","NOT_ALLOWED","ALLOWED","SyndicatedPlayer","onContinueClick","onReloadClick","authRetry","xdomainBlocked","apiProxy","SyndicatedPlayerAPIProxy","nextCanPlayContent","nextErrorMessage","prevContent","loginOption","loginWindow","recheckAccess","onParentHost","domainAuth","dialogViewItem","needPlayer","isAuthenticatableScreen","dialogView","dialogContainer","connectedPlayer","debounce","wait","invokeFunc","lastThis","lastInvokeTime","leadingEdge","timerId","timerExpired","leading","remainingWait","timeSinceLastCall","lastCallTime","timeSinceLastInvoke","timeWaiting","maxing","nativeMin","maxWait","shouldInvoke","trailingEdge","trailing","flush","debounced","isInvoking","FUNC_ERROR_TEXT","__WEBPACK_IMPORTED_MODULE_1__lib_format_normalizeQueryString__","__WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__","__WEBPACK_IMPORTED_MODULE_3__common_page_actions__","__WEBPACK_IMPORTED_MODULE_4__actions__","__WEBPACK_IMPORTED_MODULE_5__common_actions_listingsActions__","__WEBPACK_IMPORTED_MODULE_6__common_actions_appActions__","__WEBPACK_IMPORTED_MODULE_7__player_actions__","__WEBPACK_IMPORTED_MODULE_8__common_page_AdobePassProxyLogin__","__WEBPACK_IMPORTED_MODULE_9__SyndicatedPlayer__","__WEBPACK_IMPORTED_MODULE_10__common_video_player__","DOMAIN","referrerQuery","referrer","targetWindow","originResult","targetOrigin","instanceId","_onPostMessage","_onPlaying","_onPlay","_onPause","_onAdPodStarted","_onAdPodEnded","_onAdStarted","_onAdEnded","_onProgramChange","_onContentLoaded","_onContentEnded","_onError","_unsubscribe","_subscribeMessage","_publish","BRIDGE_READY","nextDomainAuth","nextProviderInfo","nextDisplay","nextEmbedded","nextQuery","nextContent","blocked","PROVIDER_SELECTED","getSelectedProvider","PROVIDER_LOGOUT","PROVIDER_SCREEN_SHOWN","_playerUnsubscribe","_removePlayerListeners","_addPlayerListeners","_selecting","selectEventById","hasBridgedParent","parentHost","_updateHeroByQuery","_x","_x2","_x3","regeneratorRuntime","_callee","queryArg","autoplayArg","_component$props2","_component$props2$pag","_ref2$page","hasAutoplay","wrap","stop","selectById","leagueName","selectEventByGameIdLeague","positionInSec","adobePassProviderId","providerHomepageUrl","providerLogoUrl","authStatus","RECHECK_ACCESS","PLAYING","PLAY","PAUSE","AD_POD_STARTED","AD_POD_ENDED","AD_STARTED","AD_ENDED","CONTENT_LOADED","CONTENT_ENDED","ERROR","_x12","_ref4","_callee2","tId","_type$split","_type$split2","apiName","_component$props4","_component$props4$ado","_this3","_context2","abrupt","Getter","AdobePassProxyLoginComponent","EVENT_LOADED","XD_LOCALSTORAGE_KEY","XD_LOCALSTORAGE_VAL","_xdomainBlocked","EVENT_CLOSED","onLoginClose","onXDomainCheckFail","EVENT_AUTHENTICATE","authSuccess","accessEnablerProxy","contentWindow","postMessage","operation","AUTHENTICATION_SUCCESS","getAuthenticationStatus","onAuthSuccess","authFailed","reloadUrl","connectedPlayerWrapper","playerBundleInstance","API","MUTE","UNMUTE","SET_CURRENT_TIME","GET_CURRENT_TIME","ENTER_FULLSCREEN","EXIT_FULLSCREEN","SELECT_BY_ID","SELECT_BY_EVENT_ID","SELECT_EVENT_BY_ID","SELECT_EVENT_BY_NETWORK_NAME","SELECT_EVENT_BY_GAME_ID","SELECT_EVENT_BY_EXTERNAL_ID","ADOBE_PASS_LOGOUT","PARENT_HOST","GET_AFFILIATE","GET_SELECTED_PROVIDER","GET_AUTH_STATUS","sendMessage","opener","getRedirectUrl","syndicated","__WEBPACK_IMPORTED_MODULE_3_bluebird__","__WEBPACK_IMPORTED_MODULE_3_bluebird___default","__WEBPACK_IMPORTED_MODULE_4__actions_authenticationActions__","__WEBPACK_IMPORTED_MODULE_6__lib_format_queryString__","redirectUrlQuery","currentMvpd","EVENT_CLOSE_REQUEST","subscribeToStore","observers","unsubscribes","unsubscribeFromStore","providerInfoKnown","trackingObserver","observeStore","currentTracking","nextTracking","initialPageTracked","uiLoadingStart","loadingClassName","uiLoadingComplete","enableUserInteraction","disableUserInteractionHandler","enUs","moment_default","ConnectedIntlProvider","innerFn","outerFn","tryLocsList","protoGenerator","Generator","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","AsyncIterator","record","__await","unwrapped","callInvokeWithMethodAndArg","previousPromise","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","GenStateSuspendedYield","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","iteratorSymbol","Op","$Symbol","asyncIteratorSymbol","toStringTagSymbol","inModule","runtime","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","isGeneratorFunction","genFun","ctor","awrap","iter","skipTempReset","rootEntry","rootRecord","rval","loc","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","defaultEnv","getSpUrl","SERVICE_PATH","getReggieUrl","reggie","checkRegCode","regCode","REQUESTOR_ID","ENDPOINTS","getAuthSuccessUrl","getAuthErrorUrl","getAuthenticateUrl","getMarkettingOptInStatus","marketing","accessToken","access_token","ePlusMarketingOptIns","shouldUpdateOptIns","getOneIdApiKey","oneIdClientUrl","oneIdApiKey","getOneIdEmail","email","isSuccess","actions__asyncToGenerator","createAuthenticateAction","authUrl","authSuccessUrl","authErrorUrl","useIframe","AUTHENTICATE","createGenericErrorAction","providerId","createInvalidErrorAction","INVALID_ERROR","regCodeUpdate","REG_CODE_UPDATE","startSubmit","START_SUBMIT","completeSubmit","COMPLETE_SUBMIT","updateOneIdMarkettingOptInAction","EPLUS_MARKETTING_OPT_IN_UPDATE","checkAdobeRegCode","chooseProvider","launchLicensePlateOnSuccess","updateOneIdMarkettingOptIn","checkOneIdRegCode","pairingCode","commerceUrlsConfig","urls","dataBag","entitlementPath","correlationId","dataBagDevice","commercePath","deviceName","authenticationFlow","commerceBase","WEB_ESPN_PLUS_PURCHASE_PATH_QA","WEB_ESPN_PLUS_PURCHASE_PATH_PROD","commerceUrl","packagesList","generateCommerceUrl","generateCommerceFlowUrl","isSubscribePath","isSubscribeInEntitlementPath","clientlessAuthenticate","origBaseUrl","iFrameRequired","innerWidth","iFrameWidth","iFrameHeight","activationReducer","GET_CONFIG","genericError","invalidError","submitting","optInUpdate","adsReducer","configured","getHero","playableBuckets","topBucketIndex","itemA","itemB","reinsertBuckets","buck","replaceBuckets","replacementBuckets","replacementBucket","completeScoring","scoredBuckets","didInvalidate","isFetching","loading","reducers__defineProperty","autoEmbedTimerComplete","startGetNetworks","START_GET_NETWORKS","completeGetNetworks","COMPLETE_GET_NETWORKS","fetchNetworks","scheduleReducer","statusFilterValue","dateFilterEndValue","dateFilterStartValue","sportsFilterValue","sportsFilterType","networkFilter","networkFilterLabel","filterType","sportsFilterLabel","scheduleModuleReducer","appReducer","selectedAiringId","lastMessageType","lastMessageData","pickerStreamsError","pickerAutoSelectStream","authenticationReducer__defineProperty","authenticationReducer__toConsumableArray","addAuthType","removeAuthType","authTypesReducer","entitlement","bamReducer","ipReducer","adobePassReducer","checkingAuthentication","authenticating","authorizing","newMetaData","authenticationReducer","fanReducer","networksReducer","lastAction","oneIdReducer","loginParams","providerDialogReducer","defaultState","reqStartTime","reqCompleteTime","networkImageData","LOAD_NETWORK_IMAGE_DATA","store__toConsumableArray","configureStore","customMiddleware","thunkMiddleware","rootReducer","devToolsExtension","TabContainer__classCallCheck","TabContainer__possibleConstructorReturn","TabContainer__inherits","HeroPlaybackPage__classCallCheck","HeroPlaybackPage__possibleConstructorReturn","HeroPlaybackPage__inherits","Activation__asyncToGenerator","Activation__classCallCheck","Activation__possibleConstructorReturn","Activation__inherits","Activate__classCallCheck","Activate__possibleConstructorReturn","Activate__inherits","Feedback__defineProperty","Feedback__classCallCheck","Feedback__possibleConstructorReturn","Feedback__inherits","openFeedbackPage","Roadblock__defineProperty","Roadblock__asyncToGenerator","Roadblock__classCallCheck","Roadblock__possibleConstructorReturn","Roadblock__inherits","UnsupportedPage__classCallCheck","UnsupportedPage__possibleConstructorReturn","UnsupportedPage__inherits","Carousel__classCallCheck","Carousel__possibleConstructorReturn","Carousel__inherits","Originals__classCallCheck","Originals__possibleConstructorReturn","Originals__inherits","AffiliatePageExample__classCallCheck","AffiliatePageExample__possibleConstructorReturn","AffiliatePageExample__inherits","BasicShell__classCallCheck","BasicShell__possibleConstructorReturn","BasicShell__inherits","createLandingPage","LandingPage","showOneIdLogin","bannerAd","loadActions","refreshInterval","onRefresh","scorePage","ConnectedRootApplicationShell","BasicShell","Activate","Feedback","Roadblock","UnsupportedPage","SyndicatedPlayerPage","SyndicatedPlayerExample","AffiliatePageExample","AdobePassProxyLogin","AccountSelector","PageShell","createCollection","Originals","Schedule","Player","ShortStopLive","Search","Sid","CatalogPage","Features","ComponentDataContainer__classCallCheck","ComponentDataContainer__possibleConstructorReturn","ComponentDataContainer__inherits","loadActionsRouterMiddleware","renderRouterContext","routerProps","renderApp","renderWithMiddleware","useScroll","appContainer","ssr","analyticsConstants","_ENVIRONMENT_CONFIGUR","react_dom","react_router_scroll_lib","react_router_scroll_lib_default","react_router_redux_lib","superagent_bluebird_promise","superagent_bluebird_promise_default","checkAuthN","androidtv","appletv","tvOS","firetv","roku","ps3","ps4","xbox","xboxone","authSystem","trackingDevice","trackingProvider","docReady","redux_es","redux_thunk_lib","redux_thunk_lib_default","reducer__extends","page_actions","schedule_actions","ads_actions","reducers__extends","page_reducers__extends","player_actions","player_reducers__extends","schedule_reducers__extends","scheduleModule_actions","scheduleModule_reducers__extends","appReducer__extends","app_constants","oneIdActions","authenticationReducer__extends","fanActions","fanReducer__extends","networkActions","networksReducer__extends","oneIdReducer__extends","providerDialogReducer__extends","NetworkLogo_reducers__extends","activation","Search__jsx","Sid__jsx","hoist_non_react_statics","hoist_non_react_statics_default","TabPane__jsx","TabPane","showAds","items","TabContainer__jsx","TabContainer__createClass","TabContainer","activeTab","onTabSelect","inferSelectedBucket","tabControls","tabPanes","isLoggedInProvider","tabControl","Drawer__jsx","Drawer","HeroPlaybackPage__jsx","HeroPlaybackPage__createClass","HeroPlaybackPage","showAlertOnMount","HeroPlaybackPageContainer__jsx","formatVideoTitle","currentContent","HeroPlaybackPageContainer","Player__jsx","Refreshable","refreshId","interval","SectionHeader__jsx","SectionHeader","searchContainerEl","Schedule__jsx","tabClassname","colBStyle","sectionHeaderTitle","appearance","ShortStopLive__jsx","Success__jsx","Success","getSuccessText","Error__jsx","Activation__extends","Activation__jsx","Activation__createClass","ActivationComponent","isAdobeRegCode","regCodeError","onCodeChange","onCodeKeyUp","onSubmit","renderHeading","which","isOneIdRegCode","activatePageType","hasError","errorClassName","isDisabled","isSubscribeActivation","buttonClasses","txtRegCode","maxLength","onKeyUp","renderErrorMessage","commerceUrls","Activate__jsx","Activate__createClass","shellVersion","ActivateComponent","isAuthSuccess","isOptInChecked","renderBrandingLogo","getPageName","oneidenv","optInStatus","styleList","rel","activationCode","deviceParam","regOrActivationCode","minHeight","Activation","showHelpModule","renderContent","renderHelpModule","getStyleAssets","Feedback__extends","Feedback__jsx","Feedback__createClass","caption","alignRight","requiredInput","commentType","commentBody","submitted","onFormChange","validationError","currentLocation","city","comment","providerOptions","categorySelect","data-state","emailInput","commentText","cols","uniq_default","espnapp","Roadblock__jsx","Roadblock__extends","Roadblock__createClass","devStyles","STYLE_HREF","appStore","ios","android","pageTitle","roadblockText","mainFeature","eventTitle","eventMeta","main","fullSite","footerA","submitButton","windowsphone","initialModal","handleLaunchClick","oneIdInitialized","sourceName","isBranchLinkInParams","updateAppLink","_branch_match_id","playChannel","playGameID","playID","isIosDevice","shouldUseProtocolOnly","storeProps","oneIdEnvArg","fullSiteLink","mobileGameCastUrl","renderRoadblockLinks","UnsupportedPage__jsx","UnsupportedPage__createClass","reselect_lib","react_slick_lib","react_slick_lib_default","NextNavButton__jsx","NextNavButton","PrevNavButton__jsx","PrevNavButton","Carousel__jsx","Carousel__createClass","setInitialized","sliderContainer","isSingleItem","autoplaySpeed","pauseOnFocus","pauseOnHover","pauseOnDotsHover","arrows","dots","dotsClass","prevArrow","nextArrow","responsive","ele","Originals__jsx","Originals__extends","Originals__createClass","carousel","carouselSelector","SuperHero__jsx","SuperHero","director","logoImage","clickHandlerArg","heroEvent","Catalog__jsx","PlayableSuperHero","Catalog","subtitleTwo","superHero","restOfParams","AffiliatePageExample__jsx","AffiliatePageExample__createClass","BASE_HREF","containerStyle","DEF_PROVIDER_VALUE","onProviderChange","onNetworkChange","onLinkClick","selectByNetwork","listStyleType","RootApplicationShell__jsx","RootApplicationShell","metaTag","crossorigin","countryRegion","hier1","convrSport","pageURL","siteType","prop58","loadPubJS","loadVidJS","authors","ABTest","isOptimizied","tScript","abtestUser","oScript","targetURLs","regexp","flag","raw","optimizely","optimizelyURLs","isFeaturePhone","cto","BasicShell__jsx","BasicShell__createClass","analyticsStub","renderTemplate","OverlayAd__extends","OverlayAd","createLandingPage__jsx","routes__jsx","preActionsArg","preActions","prePromises","preAction","ComponentDataContainer__createClass","ComponentDataContainer","onUpdate","prevRouterProps","__INITIAL_STATE__","onDefLoadStart","onLoadStart","onDefComplete","onComplete","fetchComponentData","client__jsx","client__extends","watchGlobals","__webpack_public_path__","secureCdnPath","cdnPath","ReactIntlLocaleData","enhancedBrowserHistory","trackingMiddleware","_reactInMem","isBeta","setErrorHandler","superCtor","super_","TempCtor","Timeout","clearFn","_id","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","task","tasksByHandle","nextHandle","registerImmediate","runIfPresent","currentlyRunningATask","attachTo","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","messagePrefix","onGlobalMessage","MessageChannel","port1","port2","escapeUserProvidedKey","userProvidedKeyEscapeRegex","ForEachBookKeeping","forEachFunction","forEachContext","forEachSingleChild","bookKeeping","forEachChildren","forEachFunc","MapBookKeeping","mapResult","keyPrefix","mapFunction","mapContext","mapSingleChildIntoContext","childKey","mappedChild","mapIntoWithKeyPrefixInternal","escapedPrefix","mapChildren","forEachSingleChildDummy","countChildren","ComponentDummy","isPureReactComponent","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassInterface","ReactClassMixin","mixSpecIntoComponent","autoBindPairs","__reactAutoBindPairs","MIXINS_KEY","RESERVED_SPEC_KEYS","isReactClassMethod","shouldAutoBind","autobind","createMergedResultFunction","createChainedFunction","mixStaticSpecIntoComponent","isReserved","isInherited","mergeIntoWithNoDuplicateKeys","two","bindAutoBindMethod","bindAutoBindMethods","autoBindKey","injectedMixins","getInitialState","componentWillMount","componentWillUpdate","updateComponent","ReactClassComponent","injectMixin","createDOMFactory","address","area","article","aside","bdi","bdo","big","blockquote","canvas","cite","colgroup","datalist","details","dfn","dialog","dl","dt","em","fieldset","figure","form","h1","h2","h3","h4","h5","h6","hgroup","hr","img","ins","kbd","keygen","legend","li","menu","menuitem","meter","nav","ol","optgroup","picture","progress","rp","rt","ruby","samp","small","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","tr","ul","wbr","circle","clipPath","defs","ellipse","linearGradient","mask","polygon","polyline","radialGradient","rect","tspan","PropTypeError","createChainableTypeChecker","checkType","propFullName","secret","ANONYMOUS","locationName","chainedCheckType","createPrimitiveTypeChecker","expectedType","getPropType","getPreciseType","createArrayOfTypeChecker","typeChecker","createInstanceTypeChecker","expectedClass","expectedClassName","getClassName","createEnumTypeChecker","expectedValues","createObjectOfTypeChecker","propType","createUnionTypeChecker","arrayOfTypeCheckers","createShapeTypeChecker","shapeTypes","checker","symbol","instanceOf","objectOf","ReactDefaultInjection","inject","ReactDOM","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","__REACT_DEVTOOLS_GLOBAL_HOOK__","Mount","Reconciler","alreadyInjected","ReactInjection","DefaultEventPluginOrder","ReactDOMTreeTraversal","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","HostComponent","ReactDOMComponent","ReactDOMTextComponent","ARIADOMPropertyConfig","HTMLDOMPropertyConfig","SVGDOMPropertyConfig","EmptyComponent","ReactDOMEmptyComponent","Updates","ReactDefaultBatchingStrategy","ReactComponentBrowserEnvironment","isKeypressCommand","getCompositionEventType","compositionStart","compositionEnd","compositionUpdate","isFallbackCompositionStart","START_KEYCODE","isFallbackCompositionEnd","END_KEYCODES","getDataFromCustomEvent","extractCompositionEvent","fallbackData","canUseCompositionEvent","currentComposition","useFallbackCompositionData","getData","FallbackCompositionState","SyntheticCompositionEvent","customData","getNativeBeforeInputChars","SPACEBAR_CODE","hasSpaceKeypress","SPACEBAR_CHAR","chars","getFallbackBeforeInputChars","extractBeforeInputEvent","canUseTextInputEvent","SyntheticInputEvent","beforeInput","opera","bubbled","captured","_root","_startText","_fallbackText","startValue","startLength","endValue","endLength","minEnd","sliceTail","CompositionEventInterface","InputEventInterface","shouldUseChangeEvent","manualDispatchChangeEvent","change","activeElementInst","runEventInBatch","startWatchingForChangeEventIE8","stopWatchingForChangeEventIE8","getTargetInstForChangeEvent","handleEventsForChangeEventIE8","startWatchingForValueChange","activeElementValue","activeElementValueProp","newValueProp","handlePropertyChange","stopWatchingForValueChange","getTargetInstForInputEvent","handleEventsForInputEventIE","getTargetInstForInputEventIE","shouldUseClickEvent","getTargetInstForClickEvent","doesChangeEventBubble","isInputEventSupported","getTargetInstFunc","handleEventFunc","targetNode","attachRef","ReactOwner","addComponentAsRefTo","detachRef","removeComponentAsRefFrom","prevRef","prevOwner","nextRef","nextOwner","isValidOwner","ownerPublicInstance","mouseEnter","mouseLeave","win","related","toNode","acceptCharset","accessKey","allowFullScreen","allowTransparency","autoComplete","cellPadding","cellSpacing","charSet","challenge","classID","colSpan","contextMenu","controls","coords","crossOrigin","download","encType","formAction","formEncType","formMethod","formNoValidate","formTarget","high","hrefLang","htmlFor","httpEquiv","inputMode","integrity","keyParams","keyType","kind","loop","low","manifest","marginHeight","marginWidth","media","mediaGroup","minLength","nonce","noValidate","optimum","playsInline","preload","radioGroup","referrerPolicy","required","reversed","role","rowSpan","sandbox","scoped","seamless","spellCheck","srcDoc","srcLang","useMap","wmode","about","datatype","inlist","vocab","autoCapitalize","autoCorrect","autoSave","itemProp","itemScope","itemType","itemID","itemRef","security","unselectable","ReactDOMIDOperations","dangerouslyProcessChildrenUpdates","createNodesFromMarkup","oldChild","newChild","getNodeName","nodeNameMatch","nodeNamePattern","handleScript","dummyNode","getMarkupWrap","wrapDepth","scripts","createArrayFromMixed","hasArrayNature","markupWrap","shouldWrap","selectWrap","tableWrap","trWrap","svgWrap","assertValidProps","voidElementTags","_tag","enqueuePutListener","ReactServerRenderingTransaction","containerInfo","isDocumentFragment","_node","DOC_FRAGMENT_TYPE","_ownerDocument","listenerToPut","inputPostMount","ReactDOMInput","postMountWrapper","textareaPostMount","ReactDOMTextarea","optionPostMount","ReactDOMOption","trapBubbledEventsLocal","getNode","mediaEvents","postUpdateSelectWrapper","validateDangerousTag","validatedTagCache","VALID_TAG_REGEX","isCustomComponent","_namespaceURI","_previousStyle","_previousStyleCopy","AutoFocusUtils","CSSPropertyOperations","ReactMultiChild","CONTENT_TYPES","suppressContentEditableWarning","omittedCloseTags","newlineEatingTags","globalIdCounter","Mixin","_idCounter","parentTag","mountImage","createElementNS","_updateDOMProperties","lazyTree","_createInitialChildren","tagOpen","_createOpenTagMarkupAndPutListeners","_createContentMarkup","autoFocus","focusDOMComponent","propKey","createMarkupForStyles","renderToStaticMarkup","contentToUse","childrenToUse","mountImages","mountChildren","lastProps","_updateDOMChildren","updateWrapper","styleName","styleUpdates","lastStyle","nextProp","lastProp","setValueForStyles","lastContent","lastHtml","nextHtml","lastChildren","nextChildren","lastHasContentOrHtml","nextHasContentOrHtml","updateChildren","updateTextContent","updateMarkup","unmountChildren","dangerousStyleValue","hyphenateStyleName","memoizeStringOnly","processStyleName","hasShorthandPropertyBug","styleFloatAccessor","tempStyle","cssFloat","serialized","styleValue","expansion","individualStyleName","camelizeStyleName","camelize","msPattern","_hyphenPattern","character","hyphenate","_uppercasePattern","runEventQueueInBatch","makePrefixMap","styleProp","prefixedEventNames","vendorPrefixes","prefixMap","animationend","animationiteration","animationstart","transitionend","forceUpdateIfMounted","rootNode","queryRoot","group","otherNode","otherInstance","defaultChecked","initialChecked","flattenChildren","didWarnInvalidOptionChildren","selectValue","selectParent","hostProps","makeInsertMarkup","toIndex","makeMove","makeRemove","makeSetMarkup","makeTextContent","processQueue","updateQueue","ReactChildReconciler","_reconcilerInstantiateChildren","nestedChildren","instantiateChildren","_reconcilerUpdateChildren","prevChildren","nextNestedChildrenElements","removedNodes","nextMarkup","_updateChildren","nextMountIndex","lastPlacedNode","prevChild","_mountChildAtIndex","_unmountChild","renderedChildren","createChild","instantiateChild","childInstances","selfDebugID","keyUnique","nestedChildNodes","nextChildInstance","nextChildMountImage","renderedChild","StatelessComponent","shouldConstruct","isPureComponent","CompositeTypes","ImpureClass","PureClass","StatelessFunctional","nextMountID","_compositeType","_calledComponentWillUnmount","renderedElement","publicProps","publicContext","_processContext","getUpdateQueue","doConstruct","_constructComponent","unstable_handleError","performInitialMountWithErrorHandling","performInitialMount","_constructComponentWithoutOwner","_processPendingState","_renderValidatedComponent","_maskContext","maskedContext","contextName","currentContext","childContext","_checkContextTypes","typeSpecs","prevContext","prevParentElement","nextParentElement","prevUnmaskedContext","nextUnmaskedContext","willReceive","shouldUpdate","_performComponentUpdate","partial","unmaskedContext","prevState","hasComponentDidUpdate","_updateRenderedComponent","prevComponentInstance","prevRenderedElement","nextRenderedElement","oldHostNode","_replaceNodeWithMarkup","prevInstance","_renderValidatedComponentWithoutOwnerOrContext","publicComponentInstance","getNextDebugID","nextDebugID","flattenSingleChildIntoContext","ReactServerUpdateQueue","noopCallbackQueue","domID","createComment","instA","instB","depthA","tempA","depthB","tempB","common","pathFrom","pathTo","_stringText","_closingComment","_commentNodes","openingValue","createDocumentFragment","escapedText","nextText","nextStringText","commentNodes","hostNode","ReactDefaultBatchingStrategyTransaction","RESET_BATCHED_UPDATES","FLUSH_BATCHED_UPDATES","alreadyBatchingUpdates","findParent","TopLevelCallbackBookKeeping","ancestors","handleTopLevelImpl","ancestor","_handleTopLevel","scrollValueMonitor","getUnboundedScrollPosition","_enabled","scrollable","Window","pageXOffset","scrollLeft","pageYOffset","reactMountReady","SELECTION_RESTORATION","EVENT_SUPPRESSION","currentlyEnabled","previouslyEnabled","ON_DOM_READY_QUEUEING","isCollapsed","anchorNode","anchorOffset","focusOffset","getIEOffsets","selectedRange","selectedLength","fromStart","duplicate","moveToElementText","setEndPoint","startOffset","getModernOffsets","rangeCount","currentRange","getRangeAt","startContainer","endContainer","isSelectionCollapsed","rangeLength","tempRange","cloneRange","selectNodeContents","setEnd","isTempRangeCollapsed","endOffset","detectionRange","setStart","isBackward","collapsed","setIEOffsets","setModernOffsets","startMarker","getNodeForCharacterOffset","endMarker","removeAllRanges","addRange","useIEOffsets","getLeafNode","getSiblingNode","nodeStart","nodeEnd","outerNode","innerNode","isTextNode","compareDocumentPosition","Node","NS","xlink","ATTRS","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","azimuth","baseFrequency","baseProfile","baselineShift","bbox","begin","bias","by","calcMode","capHeight","clip","clipRule","clipPathUnits","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cx","cy","decelerate","descent","diffuseConstant","dominantBaseline","dx","dy","edgeMode","elevation","enableBackground","exponent","externalResourcesRequired","fillRule","filterRes","filterUnits","floodColor","fontSizeAdjust","fontStretch","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","markerEnd","markerMid","markerStart","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","numOctaves","orient","orientation","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","rotate","rx","ry","scale","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","spreadMethod","stdDeviation","stemh","stemv","stitchTiles","stopColor","strikethroughPosition","strikethroughThickness","stroke","strokeLinecap","strokeLinejoin","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textRendering","textLength","u1","u2","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","viewBox","viewTarget","visibility","widths","wordSpacing","writingMode","xHeight","x1","x2","xChannelSelector","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlns","xmlnsXlink","xmlLang","xmlSpace","y1","y2","yChannelSelector","z","zoomAndPan","boundingTop","boundingLeft","constructSelectEvent","mouseDown","currentSelection","lastSelection","skipSelectionChangeEvent","hasListener","SyntheticAnimationEvent","SyntheticClipboardEvent","SyntheticFocusEvent","SyntheticKeyboardEvent","SyntheticDragEvent","SyntheticTouchEvent","SyntheticTransitionEvent","SyntheticWheelEvent","topLevelEventsToDispatchConfig","capitalizedEvent","onEvent","topEvent","onClickListeners","EventConstructor","AnimationEventInterface","animationName","elapsedTime","pseudoElement","ClipboardEventInterface","clipboardData","FocusEventInterface","getEventKey","KeyboardEventInterface","repeat","normalizeKey","translateToKey","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","DragEventInterface","dataTransfer","TouchEventInterface","targetTouches","changedTouches","TransitionEventInterface","WheelEventInterface","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","topLevelWrapper","useFiber","adler32","TAG_END","COMMENT_START","addChecksumToMarkup","existingChecksum","MOD","componentOrElement","emptyFunctionWithReset","resetWarningCache","getShim","elementType","exact","getStatics","ReactIs","isMemo","MEMO_STATICS","TYPE_STATICS","hoistNonReactStatics","blacklist","objectPrototype","inheritedComponent","targetStatics","sourceStatics","contextType","getDerivedStateFromError","getDerivedStateFromProps","FORWARD_REF_STATICS","ForwardRef","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","originalModule","symbolObservablePonyfill","isDeprecatedHistory","isUnsupportedHistory","_createHashHistory","_createHashHistory2","_createTransitionManager","_createTransitionManager2","_RouterContext","_RouterUtils","matchContext","handleError","_createRouterObjects","createRouterObjects","_unlisten","wrapDeprecatedHistory","_props3","_props4","isUndefinedOrNull","aIsRegex","isRegex","bIsRegex","aIsBuffer","bIsBuffer","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","theKeys","skipProto","skipConstructor","hasToStringTag","isStandardArguments","isLegacyArguments","supportsStandardArguments","regexExec","tryRegexExecCall","bound","binder","boundLength","boundArgs","Empty","define","getPolyfill","flagsBound","polyfill","tryDateObject","_slice","_fourthArg","strictUriEncode","extract","val2","routeParamsChanged","computeChangedRoutes","prevRoutes","nextRoutes","parentIsLeaving","isLeaving","paramsChanged","createTransitionHook","asyncArity","getEnterHooks","getChangeHooks","runTransitionHooks","deprecatedPathname","deprecatedQuery","onLeave","pathIsActive","currentPathname","routeIsActive","queryIsActive","activeQuery","getComponentsForRoute","getComponent","getComponents","nextStateWithLocation","_makeStateWithLocation2","_makeStateWithLocation","getChildRoutes","createParams","partialNextStateWithLocation","getIndexRoute","indexRoute","pathless","childRoute","assignParams","matchRouteDeep","_ret2","_match$routes","onChildRoutes","matchRoutes","getRouteParams","_Link","WithRouter","_hoistNonReactStatics2","_hoistNonReactStatics","_Redirect","routerWillLeave","_unlistenBeforeLeavingRoute","historyLocation","createStateStorage","memo","storage","withContext","withComponent","renderRouteComponent","makeCreateElement","baseCreateElement","previous","renderProps","_createBrowserHistory","_createBrowserHistory2","_createRouterHistory","_createRouterHistory2","createBrowserHistory","historyState","_historyState","startPopStateListener","popStateListener","useRefresh","stopPopStateListener","shouldUpdateScroll","_ScrollBehaviorContainer2","_ScrollBehaviorContainer","_ScrollBehavior","_ScrollBehavior2","ScrollBehaviorContainer","scrollBehavior","updateScroll","_off","_off2","_on","_on2","_scrollLeft","_scrollLeft2","_scrollTop","_scrollTop2","_requestAnimationFrame","_requestAnimationFrame2","MAX_SCROLL_ATTEMPTS","ScrollBehavior","_onScroll","_savePositionHandle","_savePosition","_scrollTarget","xTarget","yTarget","_cancelCheckScroll","_getKey","_getCurrentLocation","_checkScrollPosition","_checkScrollHandle","_scrollTarget2","_numScrollAttempts","_history","_oldScrollRestoration","scrollRestoration","_unlistenBefore","_getDefaultScrollTarget","readPosition","getWindow","curr","compatRaf","vendors","raf","getKey","rafKey","APP_ENV","UID","PORT","MEMCACHED_SERVERS","MEMCACHED_POOLSIZE","MEMCACHED_TIMEOUT","MEMCACHED_RETRIES","MEMCACHED_FAILURES","MEMCACHED_NAMESPACE","SECURE_CDN_HOST","SHELL_IMG_REF","CDN_HOST","CDN_PATH","DEV_STYLES","SCORETC_FRONTCHANNEL_HOST","SCORETC_BACKCHANNEL_HOST","BASE_ROUTE","SECURE_CDN_PATH","HTTP_PROXY","startsWith","NO_PROXY","noProxyHosts","baseRoute","apiHost","sCoreTcClient","sCoreTcServer","legacyServiceUrl","servers","retries","failures","clientNavigation","_ref$selectLocationSt","selectLocationState","defaultSelectLocationState","_ref$adjustUrlOnRepla","adjustUrlOnReplay","initialLocation","isTimeTraveling","unsubscribeFromHistory","getLocationInStore","useInitialIfEmpty","handleStoreChange","locationInStore","handleLocationChange","lastPublishedLocation","unsubscribed","_action$payload","_parser","_fullfilledPromise","innerResolve","innerReject","getHeader","unset","redirects","_maxRedirects","RequestConstructor","webpackEmptyContext","basePick","flatRest","pick","basePickBy","baseSet","memoizeCapped","rePropName","reEscapeChar","quote","subString","MAX_MEMOIZE_SIZE","resolver","memoized","Cache","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","reIsHostCtor","reRegExpChar","maskSrcKey","coreJsData","IE_PROTO","HASH_UNDEFINED","arrayProto","baseToString","symbolToString","symbolProto","nested","hasFunc","flatten","spreadableSymbol","isConcatSpreadable","lastCalled","stamp","nativeNow","HOT_SPAN","HOT_COUNT","stringSize","stringTag","hasUnicode","unicodeSize","asciiSize","reHasUnicode","reUnicode","rsCombo","rsFitz","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptJoin","rsSeq","rsSymbol","charCodeToInt","unpackBase60","num","whole","fractional","multiplier","arrayToInt","intToUntil","mapIndices","indices","unpack","untils","abbrs","population","Zone","packedString","_set","OffsetAt","at","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","mid","userOffsets","startYear","sortZoneScores","localeCompare","addToGuesses","guesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","resolvedOptions","normalizeName","logError","zoneScore","zoneScores","getZone","scoreOffsetAt","ignoreCache","cachedGuess","addZone","packed","normalized","zones","getNames","addLink","normal0","normal1","loadData","dataVersion","zoneExists","didShowError","needsOffset","isUnixTimestamp","abbrWrap","_z","resetZoneWrap","momentVersion","major","minor","unpacked","_index","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","offsetAt","_zones","_links","_names","defaultZone","setDefault","uncurry","boundThis","ret_","boundLen","useColors","WebkitAppearance","firebug","$1","formatArgs","lastC","save","namespaces","enable","selectColor","createDebug","prevTime","coerce","formatter","skips","disable","fmtShort","fmtLong","plural","long","brackets2dots","REPLACE_BRACKETS","LFT_RT_TRIM_DOTS","dotsplit","compact","todots","caches","strictIndexOf","baseIsNaN","utils","agent","patchedBySuperagentCache","pendingRequests","resetProps","supportedMethods","cacheableMethods","doQuery","pruneParams","pruneOptions","prune","responseProp","cacheWhenEmpty","preventDuplicateCalls","backgroundRefresh","execute","_end","curProps","scRedirectsList","_redirectList","callbackExecutor","handlePendingRequests","gutResponse","getBackgroundRefreshFunction","keyGet","keyHead","cProps","cleanParams","cleanOptions","getQueryParams","getHeaderOptions","pruneObj","cloneObject","nameSpace","uri","qsRaw","arrayToObj","stringToObj","_headers","kvArray","kvString","isOptions","newResponse","isHost","setStatusProperties","setHeaderProperties","parseBody","aborted","timeoutError","initial","cacheModule","overwriteBrowserStorage","storageMock","db","throwErrorIf","expire","expirations","backgroundRefreshInit","backgroundRefreshEnabled","backgroundRefreshIntervalCheck","backgroundRefreshInterval","backgroundRefreshMinTtl","handleRefreshResponse","lifeSpan","refreshKeys","verbose","checkOnPreviousEmpty","storageType","mget","exp","mset","tempExpiration","cacheValue","memcachedCacheService","conf","memcached","snappy","uncompress","asBuffer","snappyErr","parseError","compress","compressionErr","compressedValue","memcachedConfig","Memcached","getMulti","Client","Utils","compatibility","compatiblity","HashRing","algorithm","connections","issues","Stream","Socket","Connection","Jackpot","IssueLog","maxExpiration","maxValue","activeQueries","maxQueueSize","factor","minTimeout","maxTimeout","randomize","reconnect","failuresTimeout","idle","redundancy","nMemcached","resultSetIsEmpty","resultSet","privates","server","failed","pull","serverTokens","manager","sid","S","Manager","idleTimeout","streamError","connectionIssue","streamID","setNoDelay","setEncoding","responseBuffer","bufferArray","serverAddress","multi","queryCompiler","makeCallback","queryRedundancy","redundancyEnabled","failOverServers","issue","failure","reconnecting","reconnected","free","parsers","dataSet","errObj","notStored","dataLen","cas","versionTokens","bugfix","resultParsers","statSet","stats","identifier","allCommands","bufferedCommands","BufferStream","chunks","chunkLength","rawDataReceived","delegateCallback","master","tokenSet","execution","errorResponse","touch","lifetime","fullkey","noreply","gets","ns_key","newvalue","responses","calls","totals","setters","valuetype","incrdecr","increment","incr","decrement","decr","singles","slabs","flushAll","statsSettings","statsSlabs","statsItems","cachedump","slabid","getLens","b64","validLen","lens","placeHoldersLen","_byteLength","Arr","curByte","revLookup","tripletToBase64","lookup","encodeChunk","uint8","extraBytes","len2","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","LN2","hashValueHash","vnode","defaultport","replicas","ring","vnodes","SimpleCache","maxSize","continuum","hashvalue","crypto","extension","weight","percentage","find","hashValue","middle","char","unique","connection","notified","ListElement","before","setKey","setValue","tail","hit","cacheVal","tailKey","detach","weights","regular","extensions","parser","ping","isWin","pong","stdout","kill","locked","isScheduledToReconnect","totalFailures","totalReconnectsAttempted","totalReconnectsSuccess","Available","failuresResetId","failuresReset","attemptRetry","attemptReconnect","totalReconnectsFailed","totalDownTime","builder","pool","metrics","allocations","releases","net","regenerate","destroySoon","allocate","either","probability","probabilities","isAvailable","writePending","_pendingWriteReqs","writeQueue","_writeQueue","writes","destroyed","hard","keep","saved","RetryOperation","timeouts","_createTimeout","_timeouts","_errors","_attempts","_operationTimeout","_operationTimeoutCb","timeoutOps","try","attempts","mainError","counts","mainErrorCount","short","uncompressOpts","compressSync","isValidCompressed","isValidCompressedSync","compressed","uncompressSync","bindings","module_root","getRoot","getFileName","requireFunc","tries","arrow","fs","fileURLToPath","exists","accessSync","existsSync","NODE_BINDINGS_ARROW","compiled","NODE_BINDINGS_COMPILED_DIR","arch","nodePreGyp","calling_file","origPST","prepareStackTrace","origSTL","dummy","st","__filename","fileUriToPath","decodeURI","firstSlash","matchData","getMatchData","baseIsMatch","noCustomizer","objIsArr","othIsArr","objTag","arrayTag","othTag","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","dataViewTag","arrayBufferTag","boolTag","dateTag","numberTag","errorTag","regexpTag","convert","mapToArray","symbolValueOf","objProps","getAllKeys","objLength","skipCtor","objCtor","othCtor","baseGetAllKeys","getSymbols","keysFunc","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","resIndex","typedArrayTags","freeProcess","basePropertyDeep","MAX_INTEGER","_AdobePassAuthenticator","_AdobePassAuthenticator2","_IpAuthenticator","_IpAuthenticator2","_Authenticator","_Authenticator2","entitlementLoaded","_accessEnabler","errorEventHandlerName","requestorConfigInfo","callSetConfig","backgroundLogin","backgroundLogout","setRequestor","REQUESTOR","_resolveInitialize","setAuthenticationStatus","_loglevel2","_isAuthenticated","_resolveAuthentication","_resolveSelectProvider","_resolveDeauthentication","setMetadataStatus","encrypted","_resolveMetadataStatus","_displayProviderDialog","setToken","_resolveAuthorization","tokenRequestFailed","setConfig","sendTrackingData","trackingEventType","isTokenCached","clientType","os","authorizedResources","_resolvePreauthorizes","embedJs","scriptTag","JS_ELEMENT_ID","_accessEnablerJsUrl","Adobe","AccessEnabler","_softwareStatement","selectedProvider","aeState","AE_State","_resolveAuthenticationInfo","AEErrorHandler","_errorEventCallback","bindCallbacks","displayProviderDialog","_ref$redirectUrl","_ref$environment","Environment","PRODUCTION","_ref$refreshless","_ref$displayProviderD","_ref$errorEventHandle","_lodash2","_events2","JS_URLS","SOFTWARE_STATEMENTS","_redirectUrl","isInitialized","_lodash4","setRedirectUrl","getAuthentication","getAuthenticationInfoPromise","getMetadataPromise","authzResponse","getAuthorization","hasCallback","completions","groupedResources","resourceGroup","preauthzResources","EventType","PREAUTHORIZED","_lodash6","NOT_PREAUTHORIZED","setSelectedProvider","_lodash","_lodash3","_lodash5","_loglevel","AccessEnablerType","JAVASCRIPT","isHostObject","baseDifference","valuesLength","valuesIndex","getLoggers","getUserData","userData","_WebStorage","getJson","USER_DATA_KEY","STORAGE_TYPE","userDataPromise","_superagent2","userDataUrl","userDataResponse","setJson","checkIpAuth","ispAuthInfo","isp","_ref$partner","_ref$platform","_ref$userDataServiceU","userDataServiceUrl","USER_DATA_BASE_URL","authenticationInfo","imgUrl","authInfo","_superagent","storageAvailable","formatTimeInMillisToDays","isAuthNTtlSaved","AUTHN_TTL_STORAGE_KEY","saveInitialAuthNData","INITIAL_AUTHN_DATA_STORAGE_KEY","saveAuthNTtl","initialAuthNDataString","authNTtl","initialAuthNData","initialLoginTime","loginExpireTime","actualLoginTime","expectedLoginTime","trackUntimelyLogoutInOmniture","ex","nativeCeil","baseSlice","_interopDefault","withSideEffect","handleStateChangeOnClient","emitChange","mountedInstances","SideEffect","recordedState","React__default","compareContext","valueA","valueB","supported","unsupported","supportsArgumentsClass","EE","evt","clearEvent","ee","a5","prefixed","__WEBPACK_IMPORTED_MODULE_2__PlayerBase__","__WEBPACK_IMPORTED_MODULE_3__Loader__","geoTimeoutInSeconds","loader","_sdkHost","_playerVersion","_extensionConfig","_geoTimeoutInSeconds","_loader","getPlayerExtension","BamVideoExtension","_playerExtension","SDKData","transactionData","pertName","SDKPromises","loadPlayer","playerExtension","eventBus","geoEventName","subEventName","sessionTokenEventName","userTrackingEventName","timer","geoCallback","subCallback","tokenCallback","userTrackingCallback","geoEvent","subEvent","tokenEvent","userTrackingEvent","_playerId","playerId","readyTimer","EMBED_PLAYER_READY","insertPlayer","deactivatePlayer","deletePlayer","playPlayer","pausePlayer","mutePlayer","unmutePlayer","_unsubscribeEvents","Loader","MEDIA_PAUSED","MEDIA_RESUME","MEDIA_MUTE","MEDIA_UNMUTE","PLAYBACK_INITIALIZED","FEED_CHANGED","PLAYER_CONFIGS_RETURNED","PLAYER_CONFIGS_UPDATED","SYNDICATED_PLAYER_MUTE","SYNDICATED_PLAYER_UNMUTE","SYNDICATED_PLAYER_PLAY","SYNDICATED_PLAYER_PAUSE","SYNDICATED_PLAYER_ADD_TO_PLAYLIST","SYNDICATED_PLAYER_REMOVE_FROM_PLAYLIST","SYNDICATED_PLAYER_CLEAR_PLAYLIST","SYNDICATED_PLAYER_PLAYLIST_NEXT","SYNDICATED_PLAYER_PLAYLIST_PREVIOUS","SYNDICATED_PLAYER_GET_CONFIGS","SYNDICATED_PLAYER_UPDATE_CONFIGS","_promises","BamVideoExtensionVersioned","InvalidTokenError","base64_url_decode","b64DecodeUnicode","atob","InvalidCharacterError","bs","bc","_FanAPI","_FanAPI2","FAN_PRODUCT_PROD_HOST","_superagentBluebirdPromise2","_sourceHeader","_storage","setFan","_bluebird2","cacheExpired","_cacheDuration","updateSettingsForFanId","postData","FAN_CORE_PROD_HOST","_ref$sourceHeader","_ref$cacheDuration","cacheDuration","_Storage2","_superagentBluebirdPromise","_bluebird","_Storage","getAutoStartForFanId","updateAutoStartForFanId","videoAutoStartValue","lastUpdateSource","lastUpdateDate","updateAutoStartCache","getUidsForFanId","hasUid","preference","collectUids","StorageType","ESPN_FAN_STORAGE_KEY","ESPN","LOCAL_STORAGE","ls","storageFactory","espnStorage","getMostPermanent","inferStorageType","expiresAt","urlsMap","packageKeys","packagesWithDevice","src$core$$","src$en$$","MessageFormat","ast","__parse","_mergeFormats","src$es5$$","messageFormat","_format","variableId","src$utils$$","src$compiler$$","intl$messageformat$parser$$","objCreate","compile","pluralRuleFunction","getOption","mergedType","mergedFormats","realDefineProp","__defineGetter__","F","Compiler","StringFormat","PluralFormat","PluralOffsetString","numberFormat","SelectFormat","pluralStack","currentPlural","pluralNumberFormat","compileMessage","compileMessageText","compileArgument","compileOptions","optionsHash","peg$SyntaxError","peg$parse","peg$computeLocation","peg$savedPos","peg$currPos","peg$computePosDetails","ch","peg$posDetailsCache","column","seenCR","startPos","endPos","startPosDetails","endPosDetails","peg$fail","peg$maxFailPos","peg$maxFailExpected","peg$parsestart","peg$parsemessageFormatPattern","s0","s1","s2","peg$parsemessageFormatElement","peg$FAILED","peg$c0","peg$parsemessageTextElement","peg$parseargumentElement","peg$parsemessageText","s3","s4","s5","peg$parse_","peg$parsechars","peg$c1","peg$parsews","peg$c2","peg$parseargument","peg$parsenumber","peg$c3","peg$silentFails","peg$c4","s6","s7","s8","peg$c5","peg$c6","peg$c7","peg$c8","peg$parseelementFormat","peg$c9","peg$c10","peg$c11","peg$parsesimpleFormat","peg$parsepluralFormat","peg$parseselectOrdinalFormat","peg$parseselectFormat","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","peg$parsepluralStyle","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","peg$parseoptionalFormatPattern","peg$c27","peg$parseselector","peg$c28","peg$c29","peg$c30","peg$parseoffset","peg$c31","peg$c32","peg$c33","peg$c34","peg$c36","peg$c37","peg$c35","peg$c38","peg$parsedigit","peg$c39","peg$c40","peg$parsehexDigit","peg$c41","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","peg$parsechar","peg$c48","peg$c49","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","peg$c65","peg$result","peg$startRuleFunctions","peg$startRuleFunction","outerLen","innerLen","messageText","pluralStyle","digits","startRule","expectedDesc","foundDesc","expectedDescs","hex","SyntaxError","IntlRelativeFormat","core_1","en_1","RelativeFormat","es5_1","_resolveStyle","_isValidUnits","_findFields","relativeFormat","intl_messageformat_1","diff_1","FIELDS","STYLES","datum","_compileMessage","_locales","_fields","_getMessage","_messages","_getRelativeUnits","dateNow","diffReport","_selectUnits","diffInUnits","relativeUnits","when","arrIndexOf","daysToYears","startOfDay","dirtyDate","setHours","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","MILLISECONDS_IN_MINUTE","timestampRight","MILLISECONDS_IN_DAY","default_1","rawYears","funcName","baseObj","readyFired","readyList","readyStateChange","readyEventHandlersInstalled","createThunkMiddleware","extraArgument","thunk","withExtraArgument","baseMap","eachFunc","createFind","findIndexFunc","baseMerge","baseMergeDeep","mergeFunc","isTyped","copyArray","cloneBuffer","cloneTypedArray","toPlainObject","initCloneObject","isDeep","typedArray","cloneArrayBuffer","arrayBuffer","baseCreate","objectCreate","nativeKeysIn","__WEBPACK_IMPORTED_MODULE_1__FeedsSelectorAuthPill__","getDisplayTimeMetaData","displayClass","STATUS_TYPES","findMatchingStreamById","streamsList","FeedsSelector","feedItems","feedEntries","streamName","timeMeta","__WEBPACK_IMPORTED_MODULE_3__lib_auth_streamHasAuthType__","isStreamEspnPlusMlb","isStreamEspnPlusPPV","isUserEntitled","getAuthLabel","streamContent","labelClass","labelText","FeedsSelectorAuthPill","__WEBPACK_IMPORTED_MODULE_4__selectedContentSelector__","__WEBPACK_IMPORTED_MODULE_5__selectedStreamSelector__","__WEBPACK_IMPORTED_MODULE_6__playingStreamSelector__","__WEBPACK_IMPORTED_MODULE_7__playerSelector__","__WEBPACK_IMPORTED_MODULE_8__oneIdSelector__","__WEBPACK_IMPORTED_MODULE_11__lib_auth_streamHasAuthType__","__WEBPACK_IMPORTED_MODULE_12__lib_auth_canPlayContent__","__WEBPACK_IMPORTED_MODULE_13__lib_auth_shallowCheckAuthentication__","__WEBPACK_IMPORTED_MODULE_14__lib_util_isEmpty__","constructMessage","commandName","callBack","handleCallback","nativeBridge","NativeBridge","globalNS","isProcessing","processId","messageQueue","ns","$0","$2","$3","isIOS","isAndroid","isWindows","_processMessages","_createCallback","_transmitMessage","_next","webkit","messageHandlers","espnWebview","linklanguage","sendJSONMessage","external","_processQueue","dataName","_sendMessage","loadMinibrowserWithURL","sortByDateDescending","getSearchResultList","programmingData","copyToClipboard","copiedText","clipboardElement","execCommand","__WEBPACK_IMPORTED_MODULE_1__alias_Playable__","__WEBPACK_IMPORTED_MODULE_2__lib_format_dateFormat__","headerMappings","SearchResultAsList","sortContents","headerRows","headerMapping","clickHeader","searchResultListing","prepareCsv","csvContent","dateAndTime","__WEBPACK_IMPORTED_MODULE_1_file_saver__","__WEBPACK_IMPORTED_MODULE_1_file_saver___default","DownloadLink","File","dataString","mimeType","FileSaver","saveAs","get_URL","URL","webkitURL","save_link","can_use_save_link","click","MouseEvent","is_safari","HTMLElement","safari","is_chrome_ios","throw_outside","revoke","revoker","revokeObjectURL","filesaver","event_types","auto_bom","blob","Blob","no_auto_bom","object_url","force","dispatch_all","createObjectURL","DONE","FileReader","reader","onloadend","readAsDataURL","FS_proto","msSaveOrOpenBlob","WRITING","onwritestart","onwrite","onabort","onwriteend","__webpack_amd_options__","buildInitialState","iDayRange","iItemWidth","activeDate","displayDate","oneDay","dayRange","itemWidth","didSwipe","animate","currentPos","__WEBPACK_IMPORTED_MODULE_1_react_helmet__","__WEBPACK_IMPORTED_MODULE_1_react_helmet___default","__WEBPACK_IMPORTED_MODULE_3_moment__","__WEBPACK_IMPORTED_MODULE_3_moment___default","__WEBPACK_IMPORTED_MODULE_4__isPacRimOrCarib__","animateToDate","_throttle","selectDate","dateSelected","isReplaySlider","iDate","iNewDate","posX","posY","iCurrX","iMoved","previousCall","iItemPos","lastDateInRange","firstDateInrange","maxDaysInPast","canSlideForward","canSlideBack","iOneDay","iDisplayDate","iMinDate","iMaxDate","iMoveTo","selectedDate","onDateSelected","iNewPos","oActiveDates","activeDates","iActiveDate","iStartDate","aOptNodes","allDaysActive","cDate","iOptDate","sActiveClass","oOptDate","formatedOptDay","sDisplayValue","oSliderprops","onMouseDown","onMouseMove","onMouseUp","onMouseLeave","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","oSliderStyle","centered","getStartDate","getEndDate","dateString","getIntlDate","float","initializer","arrayAggregator","baseAggregator","accumulator","getListingNameFromStream","getNetworkImage","packageNamesArg","packageNames","networkLogoName","networkToImageName","networkAlt","networkLogoImageSource","groupBy_default","uniqBy_default","ScheduleLink","blackoutMessage","blackoutLink","ResponsiveTable__jsx","ResponsiveTable","ScheduleCategorySection__jsx","espn1","ScheduleCategorySection","selectedSubcategoryId","onSubcategorySelect","LoadBehavior","defaultLabel","isReplaySelected","listingsGroupedBySubcategory","hasDropdown","sc","h2ClassName","selectOptions","subcat","tableChildren","subcatgoryNotFiltered","subcategoryListings","filteredSubcategories","networkAbbreviation","imageNode","listingContent","listingName","ModalPortal","ariaAppHider","elementClass","Assign","SafeHTMLElement","AppElement","setAppElement","setElement","injectCSS","isOpen","overlay","appElement","onAfterOpen","onRequestClose","closeTimeoutMS","ariaHideApp","shouldCloseOnOverlayClick","renderPortal","portal","WebkitOverflowScrolling","focusManager","scopeTab","CLASS_NAMES","afterOpen","beforeClose","setFocusAfterRender","closeTimer","focusAfterRender","focusContent","setupScopedFocus","markForFocusLater","ownerHandlesClose","closeWithTimeout","closeWithoutTimeout","afterClose","returnFocus","teardownScopedFocus","handleKeyDown","requestClose","handleOverlayClick","shouldBeClosed","buildClassName","additional","contentStyles","overlayStyles","overlayClassName","onKeyDown","handleBlur","needToFocus","handleFocus","modalElement","findTabbable","focusLaterElement","baseCopy","objToString","fnToString","nativeIsArray","restParam","bindCallback","_element","hide","validateElement","shouldHide","resetForTesting","ElementClass","_slider","_slider2","_innerSlider","_json2mq","_json2mq2","_defaultProps","_defaultProps2","_innerSliderUtils","enquire","Slider","innerSliderRefHandler","innerSlider","slickPrev","slickNext","slickGoTo","dontAnimate","slickPause","slickPlay","_responsiveMediaHandlers","register","breakpoints","breakpt","bQuery","minWidth","unregister","slidesPerRow","newChildren","currentWidth","InnerSlider","_initialState","_initialState2","_classnames","_classnames2","_track","_dots","_arrows","_resizeObserverPolyfill","_resizeObserverPolyfill2","listRefHandler","trackRefHandler","adaptHeight","adaptiveHeight","ssrInit","onInit","onLazyLoad","updateState","lazyLoadTimer","progressiveLazyLoad","ro","onWindowResized","callbackTimers","onfocus","onSlideFocus","onblur","onSlideBlur","animationEndCallback","autoplayTimer","setTrackStyle","_iterator","_isArray","checkImagesLoad","onReInit","debouncedResize","resizeWindow","updatedState","_trackWidth","_trackLeft","childrenWidths","preClones","postClones","_i2","_i3","_trackStyle","childrenCount","trackLeft","imagesCount","loadedCount","onclick","prevClickHandler","onLazyLoadError","_this$props","asNavFor","beforeChange","afterChange","_slideHandler","firstBatch","clickable","selectHandler","disableBodyScroll","ontouchmove","enableBodyScroll","triggerSlideHandler","playType","pauseType","onDotsOver","onDotsLeave","onTrackOver","onTrackLeave","trackProps","onMouseEnter","onMouseOver","focusOnSelect","dotProps","Dots","arrowProps","PrevArrow","NextArrow","verticalHeightStyle","centerPaddingStyle","listStyle","touchMove","listProps","innerSliderProps","Track","currentDirection","getSlideClasses","slickActive","slickCenter","slickCloned","getSlideStyle","fallbackKey","renderSlides","preCloneSlides","postCloneSlides","childOnClickOptions","childStyle","slideClass","slideClasses","preCloneNo","_React$PureComponent","mouseEvents","getDotCount","leftBound","rightBound","dotOptions","customPaging","appendDots","prevClasses","prevHandler","prevArrowProps","_React$PureComponent2","nextClasses","nextHandler","nextArrowProps","throttle","resolvePending","leadingCall","trailingCall","timeoutCallback","requestAnimationFrame$1","trailingTimeout","toFloat","getBordersSize","positions","getPaddings","paddings","positions_1","getSVGContentRect","getBBox","createRectInit","getHTMLElementContentRect","clientWidth","clientHeight","emptyRect","getWindowOf","getComputedStyle","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","getContentRect","isBrowser","isSVGGraphicsElement","createReadOnlyRect","Constr","DOMRectReadOnly","defineConfigurable","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","_b","getInstance","instance_","SVGGraphicsElement","SVGElement","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","camel2hyphen","isDimension","feature","obj2mq","json2mq","easing","MediaQueryDispatch","matchMedia","queries","browserIsIncapable","MediaQuery","Util","shouldDegrade","isUnconditional","addHandler","removeHandler","mql","assess","QueryHandler","constuctor","qh","deferSetup","setup","initialised","unmatch","__WEBPACK_IMPORTED_MODULE_6__lib_auth_canPlayContent__","__WEBPACK_IMPORTED_MODULE_7__lib_auth_getAccessMethodFromAuthTypes__","__WEBPACK_IMPORTED_MODULE_10__lib_oneId__","__WEBPACK_IMPORTED_MODULE_11__common_injectIntl__","__WEBPACK_IMPORTED_MODULE_13__common_actions_listingsActions__","__WEBPACK_IMPORTED_MODULE_14__syndicated_actions__","__WEBPACK_IMPORTED_MODULE_15__common_schedule_actions__","__WEBPACK_IMPORTED_MODULE_16__common_page_actions__","__WEBPACK_IMPORTED_MODULE_17__common_actions_authenticationActions__","__WEBPACK_IMPORTED_MODULE_18__common_actions_oneIdActions__","__WEBPACK_IMPORTED_MODULE_19__common_selectors_bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_20__common_selectors_playerSelector__","__WEBPACK_IMPORTED_MODULE_21__common_selectors_authenticationSelectors__","__WEBPACK_IMPORTED_MODULE_22__common_selectors_providerSelector__","__WEBPACK_IMPORTED_MODULE_23__common_selectors_pageSelector__","__WEBPACK_IMPORTED_MODULE_24__common_selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_25__common_selectors_heroSelector__","__WEBPACK_IMPORTED_MODULE_26__common_selectors_routingSelector__","__WEBPACK_IMPORTED_MODULE_27__syndicated_SyndicatedPlayer__","__WEBPACK_IMPORTED_MODULE_28__syndicated_SyndicatedScheduleModule__","__WEBPACK_IMPORTED_MODULE_29__config__","__WEBPACK_IMPORTED_MODULE_29__config___default","__WEBPACK_IMPORTED_MODULE_30__modal_messaging_MessagingContainer__","__WEBPACK_IMPORTED_MODULE_31__constants__","__WEBPACK_IMPORTED_MODULE_32__common_actions_fanActions__","SyndicatedPlayerPageComponent","hovered","overlayOpened","onMouseOut","onOverlayOpened","onOverlayClosed","checkDomain","_domainChecked","hostResult","canAllowDomain","domainAllowed","canPlayContentFlag","espnPlayerSrc","showScheduleModule","class","broadcastMatch","partnerMatch","partnerRegEx","codeMatch","idMatch","nameMatch","dialogRow","alignCenter","providerListCol","providerList","continueBtn","standAlone","centeredRowStyle","tier2Providers","linkTo","xdomainMessage","reloadViewMessage","ConnectedPlayer__classCallCheck","ConnectedPlayer__possibleConstructorReturn","ConnectedPlayer__inherits","throttle_default","paddingBottom","titleText","paddingRight","logoImg","signout","paddingLeft","helper","PlayerOverlay","providerHovered","signoutWidth","onLogoutClick","onProviderMouseOver","onProviderMouseOut","setSignoutWidth","sourceLogoUrl","watchLink","titleStyle","providerLink","signoutStyle","ConnectedPlayer__jsx","ConnectedPlayer__createClass","onPlayerMouseMove","processMouseMove","showOverlay","sourceOrig","sourceObj","opened","scheduleContainer","overflowY","toggleButton","toggleButtonHide","toggleButtonHidden","toggleButtonLabel","SyndicatedScheduleModule","onToggleClick","listingsArg","buttonStyle","__WEBPACK_IMPORTED_MODULE_3__lib_format_queryString__","__WEBPACK_IMPORTED_MODULE_4__config__","__WEBPACK_IMPORTED_MODULE_4__config___default","__WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__","__WEBPACK_IMPORTED_MODULE_6__common_selectors_bootstrapSelector__","playerContainerStyle","iframeStyle","playVideo","pauseVideo","muteStream","unMuteStream","setVideoPosition","getVideoPosition","enterFullScreen","selectByEventId","selectEventByNetworkName","getAffiliate","onIdChange","onEventIdChange","onGameIdChange","onLeagueChange","onPositionChange","onThumbnailChange","onPostMessage","bridge","callAPI","searchStr","autoPlayForSelectById","autoPlayForSelectByEventId","ifmQuery","sanitizeAnchor","HTMLAnchorElement","initializeEspnChat","chatLink","htmlHead","chatScript","liveagent","_laq","showWhenOnline","startChat","insertNavItems","navItems","insertItem","navList","insertAfter","updateSubNav","$this","addClass","hasClass","removeClass","__WEBPACK_IMPORTED_MODULE_1_react_dom__","__WEBPACK_IMPORTED_MODULE_1_react_dom___default","__WEBPACK_IMPORTED_MODULE_2_react_redux__","__WEBPACK_IMPORTED_MODULE_3_react_router_redux__","__WEBPACK_IMPORTED_MODULE_4_react_helmet__","__WEBPACK_IMPORTED_MODULE_4_react_helmet___default","__WEBPACK_IMPORTED_MODULE_6__lib_util_canUseDOM__","__WEBPACK_IMPORTED_MODULE_8__common_actions_scoringActions__","__WEBPACK_IMPORTED_MODULE_9__common_injectIntl__","__WEBPACK_IMPORTED_MODULE_10__common_page_actions__","__WEBPACK_IMPORTED_MODULE_11__player_actions__","__WEBPACK_IMPORTED_MODULE_12__common_ads_connectAdInitializer__","__WEBPACK_IMPORTED_MODULE_13__common_selectors_bootstrapSelector__","__WEBPACK_IMPORTED_MODULE_14__common_selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_16__common_selectors_playerSelector__","__WEBPACK_IMPORTED_MODULE_17__common_selectors_routingSelector__","__WEBPACK_IMPORTED_MODULE_18__common_selectors_pageSelector__","__WEBPACK_IMPORTED_MODULE_19__common_selectors_flagsSelector__","__WEBPACK_IMPORTED_MODULE_20__branding_BrandingContainer__","__WEBPACK_IMPORTED_MODULE_21__modal_authn_ProviderModal__","__WEBPACK_IMPORTED_MODULE_22__modal_messaging_MessagingContainer__","__WEBPACK_IMPORTED_MODULE_23__lib_format_addQueryToUrl__","__WEBPACK_IMPORTED_MODULE_24__lib_observe__","__WEBPACK_IMPORTED_MODULE_25__lib_observe_scoringObserver__","__WEBPACK_IMPORTED_MODULE_26__lib_observe_trackingObserver__","__WEBPACK_IMPORTED_MODULE_27__lib_ui_loading__","__WEBPACK_IMPORTED_MODULE_28__lib_util_localStorage__","__WEBPACK_IMPORTED_MODULE_29__constants__","__WEBPACK_IMPORTED_MODULE_30__common_IntlProvider__","__WEBPACK_IMPORTED_MODULE_31__config__","__WEBPACK_IMPORTED_MODULE_31__config___default","mountBrandingComponent","insertProviderContainer","providerContainer","subNavEl","latestLocation","pageShell","navOverride","scoringObserver","currentPath","newPath","currentPathRegex","initPageShell","profileAnchorTags","FastClick","nextMq","get_media_query_in_use","currentMq","headerAnchorTags","secondaryNavContainer","interceptNavClick","handleSessionTokenPageRefetch","initialSessionToken","localStoredSessionToken","providerLogo","connectAdInitializer","AdInitializer","AdManager","admgr","getGPTArray","slots","getGPTSlots","slot","independent","isIndependent","inPage","refreshable","outOfPage","isCatExclusion","refreshInPageAdSlots","googletag","cmd","pubads","adManager","onMediaQueryChange","initAds","preInit","__WEBPACK_IMPORTED_MODULE_2_hoist_non_react_statics__","__WEBPACK_IMPORTED_MODULE_2_hoist_non_react_statics___default","__WEBPACK_IMPORTED_MODULE_4__AdManager__","__WEBPACK_IMPORTED_MODULE_0_lodash_debounce__","__WEBPACK_IMPORTED_MODULE_0_lodash_debounce___default","__WEBPACK_IMPORTED_MODULE_1__lib_ui_isElementVisible__","__WEBPACK_IMPORTED_MODULE_2__actions__","__WEBPACK_IMPORTED_MODULE_3__util_getMergedAdConfig__","AdType","WALLPAPER","OVERLAY","_onResize","_debounce","_onRegister","_refreshAll","getMountedInstances","_toggleListener","_initializing","_registerAd","_adManager","hasAds","_adConfig","getMergedAdConfig","_refreshAds","adSlot","registerSlot","_checkElementVisibility","slotsToClear","slotsToRefresh","gptSlots","gptSlot","shouldRefresh","activeAdInstance","getSlotElementId","isRefreshable","isIncludedInBreakpoint","_shouldShowSlotForBreakpoint","hasOutOfPageAd","refreshOutOfPageAdSlots","instancesToCheck","visibleInstances","isElementVisible","bp","shouldShow","getBoundingClientRect","innerHeight","getTargeting","getTargetingKeys","globalAdsConfig","globalKvpsMap","localAdsConfig","combinedKvpsMap","combinedKvpsArray","xl","adConfig","disableInitialLoad","onSlotRenderEnded","creativeId","divId","pageTargeting","slotTargeting","__WEBPACK_IMPORTED_MODULE_2_react_modal__","__WEBPACK_IMPORTED_MODULE_2_react_modal___default","__WEBPACK_IMPORTED_MODULE_3__common_chooseProvider_ProviderDialog__","__WEBPACK_IMPORTED_MODULE_4__common_selectors_providerSelector__","__WEBPACK_IMPORTED_MODULE_5__common_authenticationAware__","__WEBPACK_IMPORTED_MODULE_7__lib_omniture__","ProviderModal","closeAuthModal","transparentMask","currentPage","nextPage","monthsShortDot","monthsParseExact","weekdaysParseExact","renderRedirect","renderCollection","editorial","inContentAd","layoutClass","columnClass","Collection","__WEBPACK_IMPORTED_MODULE_3__page_actions__","__WEBPACK_IMPORTED_MODULE_4__scheduleModule_actions__","__WEBPACK_IMPORTED_MODULE_5__ads_BannerAd__","__WEBPACK_IMPORTED_MODULE_6__Editorial__","__WEBPACK_IMPORTED_MODULE_7__ads_InContentAd__","__WEBPACK_IMPORTED_MODULE_8__page_buckets_BucketListContainer__","__WEBPACK_IMPORTED_MODULE_9__page_common_MainContainer__","__WEBPACK_IMPORTED_MODULE_10__page_common_TopLayoutContainer__","__WEBPACK_IMPORTED_MODULE_11__selectors_heroSelector__","__WEBPACK_IMPORTED_MODULE_12__constants__","__WEBPACK_IMPORTED_MODULE_14__selectors_appSelector__","__WEBPACK_IMPORTED_MODULE_15__selectors_oneIdSelector__","Editorial"],"mappings":"CAAS,SAAUA,GCkCjB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUE,OAGnC,IAAIC,GAASF,EAAiBD,IAC7BI,EAAGJ,EACHK,GAAEA,EACFH,WAUD,OANAJ,GAAQE,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOE,KAGAF,EAAOD,QArDf,GAAIK,GAAsBC,OAAqB,YAC/CA,QAAqB,aAAI,SAA8BC,EAAUC,EAAaC,GAI7E,IADA,GAAIX,GAAUY,EAASR,EAAI,EAAGS,KACzBT,EAAIK,EAASK,OAAQV,IACzBQ,EAAUH,EAASL,GAChBW,EAAgBH,IAClBC,EAASG,KAAKD,EAAgBH,GAAS,IAExCG,EAAgBH,GAAW,CAE5B,KAAIZ,IAAYU,GACZO,OAAOC,UAAUC,eAAeb,KAAKI,EAAaV,KACpDF,EAAQE,GAAYU,EAAYV,GAIlC,KADGO,GAAqBA,EAAoBE,EAAUC,EAAaC,GAC7DE,EAASC,QACdD,EAASO,UAMX,IAAInB,MAGAc,GACHM,EAAG,EA6BJtB,GAAoBuB,EAAI,SAAuBV,GA+B9C,QAASW,KAERC,EAAOC,QAAUD,EAAOE,OAAS,KACjCC,aAAaC,EACb,IAAIC,GAAQd,EAAgBH,EACf,KAAViB,IACCA,GACFA,EAAM,GAAG,GAAIC,OAAM,iBAAmBlB,EAAU,aAEjDG,EAAgBH,WAvClB,GAAImB,GAAqBhB,EAAgBH,EACzC,IAA0B,IAAvBmB,EACF,MAAO,IAAIC,SAAQ,SAASC,GAAWA,KAIxC,IAAGF,EACF,MAAOA,GAAmB,EAI3B,IAAIG,GAAU,GAAIF,SAAQ,SAASC,EAASE,GAC3CJ,EAAqBhB,EAAgBH,IAAYqB,EAASE,IAE3DJ,GAAmB,GAAKG,CAGxB,IAAIE,GAAOC,SAASC,qBAAqB,QAAQ,GAC7Cd,EAASa,SAASE,cAAc,SACpCf,GAAOgB,KAAO,kBACdhB,EAAOiB,QAAU,QACjBjB,EAAOkB,SACPlB,EAAOI,QAAU,KAEb7B,EAAoB4C,IACvBnB,EAAOoB,aAAa,QAAS7C,EAAoB4C,IAElDnB,EAAOqB,IAAM9C,EAAoB+C,EAAI,KAAO,EAAI,iBAAiBlC,IAAUA,GAAW,0BACtF,IAAIgB,GAAUmB,WAAWxB,EAAkB,KAgB3C,OAfAC,GAAOC,QAAUD,EAAOE,OAASH,EAajCa,EAAKY,YAAYxB,GAEVU,GAIRnC,EAAoBkD,EAAInD,EAGxBC,EAAoBmD,EAAIjD,EAGxBF,EAAoBoD,EAAI,SAASjD,EAASkD,EAAMC,GAC3CtD,EAAoBuD,EAAEpD,EAASkD,IAClCnC,OAAOsC,eAAerD,EAASkD,GAC9BI,cAAaA,EACbC,YAAWA,EACXC,IAAKL,KAMRtD,EAAoB4D,EAAI,SAASxD,GAChC,GAAIkD,GAASlD,GAAUA,EAAOyD,WAC7B,WAAwB,MAAOzD,GAAgB,SAC/C,WAA8B,MAAOA,GAEtC,OADAJ,GAAoBoD,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRtD,EAAoBuD,EAAI,SAASO,EAAQC,GAAY,MAAO7C,QAAOC,UAAUC,eAAeb,KAAKuD,EAAQC,IAGzG/D,EAAoB+C,EAAI,GAGxB/C,EAAoBgE,GAAK,SAASC,GAA2B,KAApBC,SAAQC,MAAMF,GAAYA,GAG5DjE,EAAoBA,EAAoBoE,EAAI,ODM/C,SAAUhE,EAAQD,EAASH,GAEjC,YErJAI,GAAOD,QAAU,EAAQ,KF6JnB,SAAUC,EAAQiE,EAAqBrE,GAE7C,YAwCA,SAASsE,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,EAtC5KvE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOM,KACpE3E,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOO,KACpE5E,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOQ,KACpE7E,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOS,KACpE9E,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOU,KACpE/E,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOW,KACpEhF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOY,KACpEjF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOa,KACpElF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOc,KACpEnF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOe,KACpEpF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOgB,KACpErF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOiB,KACpEtF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOkB,KACpEvF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOmB,KACpExF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOoB,KAEpEzF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOqB,KACpE1F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOsB,KACpE3F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOuB,KACpE5F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOwB,KACpE7F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOyB,KACpE9F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO0B,KACpE/F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO2B,KACpEhG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO4B,KACpEjG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO6B,KACpElG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO8B,KACpEnG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+B,KACpEpG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOgC,KAEpErG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOiC,KACpEtG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOkC,KACpEvG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOmC,KACpExG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOoC,KACpEzG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOqC,KACpE1G,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOsC,KACpE3G,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOuC,IACnG,IAAIC,GAAUC,EAAYC,EAAqBC,EAAuBC,EAAqBC,EAAsBC,EAAuBC,EGlM3HzC,GACT0C,MAAO,QACPC,GAAI,MAGK1C,GACT2C,KACIC,KAAM,aACNC,QAAS,WAEbC,UACIC,UAAW,YACXC,UAAW,YACXC,OAAQ,SACRC,gBAAiB,iBACjBC,WAAY,YACZC,aAAc,SAITnD,GACToD,MACIC,kBACI,WACA,UACA,KACA,UACA,UACA,SACA,WAEJC,mBACI,OACA,QACA,QACA,QACA,WACA,UACA,eACA,MACA,UACA,WACA,QAGRZ,KACIa,IAAK,MACLC,GAAI,KACJZ,QAAS,UACTD,KAAM,SAID1C,GACTwD,KAAM,OACNC,GAAI,KACJC,IAAK,OAGIzD,GACT0D,IAAK,MACLC,OAAQ,UAGC1D,GACT2D,WAAY,aACZC,QAAS,UACTC,kBAAmB,oBACnBC,KAAM,OACN,eAAgB,eAChB,gBAAiB,gBACjBC,cAAe,gBACfC,eAAgB,iBAChBC,wBAAyB,gBACzBC,yBAA0B,iBAC1BC,gBAAiB,kBACjBC,mBAAoB,qBACpBC,iBAAkB,mBAClBC,YAAa,cACbC,QAAS,UACTC,SAAU,WACVC,UAAW,YACXC,SAAU,YAGDzE,GACT4D,sBAAkBA,GAClB,eAAgB,EAChB,gBAAiB,EACjBE,cAAe,EACfC,eAAgB,EAChBL,eAAWA,IAGFzD,GACTyD,WAAY,aACZgB,IAAK,OAGIxE,GACTyE,QAAS,UACTC,QAAS,UACTC,OAAQ,UAGC1E,EAAalE,OAAO6I,KAAK5E,GAAQ6E,OAAO,SAACC,EAAKzF,GAEvD,MADAyF,GAAI9E,EAAOX,IAAQA,EACZyF,OAGE5E,GACT6E,SAAU,WACVC,aAAc,gBAGL7E,GACTmC,QAAS,UACTD,KAAM,QAGGjC,GACT6E,KAAM,OACNzB,WAAY,aACZ0B,SAAU,WACVC,OAAQ,SACRC,UAAW,YACXC,IAAK,MACLC,QAAS,WAGAjF,GACTkF,cAAe,gBACf9B,QAAS,UACT+B,YAAa,eAGJlF,GACTmF,aAAc,eACdC,UAAW,YACXC,WAAY,aACZC,oBAAqB,uBACrBC,kBAAmB,qBACnBC,gBAAiB,sBACjBC,cAAe,oBACfC,mBAAoB,oBACpBC,oBAAqB,qBACrBC,oBAAqB,qBACrBC,sBAAuB,uBACvBC,mBAAoB,eACpBC,mBAAoB,eACpBC,oBAAqB,gBACrBC,oBAAqB,gBACrBC,WAAY,cAUHjG,GACTkG,WACIC,kBAAmB,sBAIdlG,GACTmG,MAAO,QACPC,MAAO,QACPC,aAAc,eACdC,YAAa,cACbC,QAAS,UACTC,iBAAkB,oBAGTvG,GACTwG,QAAS,UACTC,IAAK,MACLC,QAAS,UACTC,KAAM,OACNC,KAAM,OACNC,SAAU,WACVC,QAAS,UAETC,MAAO,QACPC,MAAO,QACPC,KAAM,OACNC,YAAa,eAGJjH,YACRD,EAAY0G,QAAU,WADd,IAER1G,EAAY2G,KAAO,UAFX,IAGR3G,EAAY4G,KAAO,QAHX,IAIR5G,EAAY8G,QAAU,WAJd,IAKR9G,EAAYiH,KAAO,UALX,IAMRjH,EAAYkH,YAAc,eANlB,GAUAhH,GACTiH,KAAM,OACNC,SAAU,WACVC,OAAQ,SACRC,KAAM,QAGGnH,GACToH,OAAQ,SACRC,OAAQ,UAGCpH,GACTqH,KAAM,OACNC,IAAK,MACLC,IAAK,SACLC,KAAM,QAGGvH,GACToH,KAAM,aACNC,IAAK,MACLG,cAAe,iBAGNvH,GACTwH,UAAW,YACXC,cAAe,gBACfC,cAAe,gBACfC,UAAW,YACXC,kBAAmB,oBACnBC,SAAU,2CAGD5H,YACRD,EAAawH,UAAY,YADjB,IAERxH,EAAa0H,cAAgB,SAFrB,IAGR1H,EAAayH,cAAgB,SAHrB,GAOAvH,GACT4H,SAAU,UACVC,cAAe,UACfC,QAAS,SACTC,WAAY,YACZC,QAAS,UACTC,KAAM,OACNC,SAAU,WACV5F,OAAQ,SACRX,WAAY,YACZwG,YAAa,aACbC,UAAW,YACXC,eAAgB,KAChBC,4BAA6B,UAC7BC,QAAS,UACTC,WAAY,YACZC,QAAS,UACTC,cAAe,SACfC,aAAc,eACdC,eAAgB,aAChBC,IAAK,MACLC,OAAQ,SACRC,UAAW,WACXC,UAAW,WACXC,QAAS,UACTC,YAAa,aACbC,6BAA8B,oBAC9BC,mCAAoC,iBACpCC,WAAY,aACZC,gBAAiB,aACjBC,MAAO,QACPC,WAAY,WACZC,iBAAkB,iBAClBC,QAAS,SACTC,eAAgB,KAChB7D,QAAS,UACT8D,iBAAkB,aAClBC,OAAQ,SACRjI,aAAc,OACdkI,QAAS,UACTC,kBAAmB,oBACnBC,mBAAoB,mBACpBC,gBAAiB,gBACjBC,uBAAwB,sBACxBC,kBAAmB,iBACnBC,gBAAiB,gBACjBC,MAAO,SAGEpK,GACTyC,KAAM,OACN4H,OAAQ,UAQCpK,GACTqK,KAAM,EACNC,WAAY,EACZC,mBAAoB,GAGXtK,GACTuK,OAAQ,SACRC,aAAc,YACdjH,OAAQ,SACRF,QAAS,UACToH,cAAe,cAGNxK,GACT8C,YAAa,OACbG,UAAW,MACXF,QAAS,MACTC,SAAU,OAGD/C,YACRF,EAAYuK,QADJ,SAEJtK,EAAY8C,YAAc,GAFtB,IAGJ9C,EAAYiD,UAAY,GAHpB,IAIJjD,EAAY+C,QAAU,GAJlB,IAKJ/C,EAAYgD,SAAW,GALnB,QAORjD,EAAYwK,cAPJ,SAQJvK,EAAY8C,YAAc,GARtB,IASJ9C,EAAYiD,UAAY,GATpB,IAUJjD,EAAY+C,QAAU,GAVlB,IAWJ/C,EAAYgD,SAAW,GAXnB,QAaRjD,EAAYuD,QAbJ,SAcJtD,EAAY8C,YAAc,GAdtB,IAeJ9C,EAAYiD,UAAY,GAfpB,IAgBJjD,EAAY+C,QAAU,GAhBlB,IAiBJ/C,EAAYgD,SAAW,GAjBnB,QAmBRjD,EAAYqD,SAnBJ,SAoBJpD,EAAY8C,YAAc,GApBtB,IAqBJ9C,EAAYiD,UAAY,GArBpB,IAsBJjD,EAAY+C,QAAU,GAtBlB,IAuBJ/C,EAAYgD,SAAW,GAvBnB,QAyBRjD,EAAYyK,eAzBJ,SA0BJxK,EAAY8C,YAAc,GA1BtB,IA2BJ9C,EAAYiD,UAAY,GA3BpB,IA4BJjD,EAAY+C,QAAU,GA5BlB,IA6BJ/C,EAAYgD,SAAW,GA7BnB,OAiCA9C,GACTuK,MAAO,QACPC,WAAY,aAGHvK,GACTwK,KAAM,OACNC,IAAK,OAGIxK,GACTyK,UAAW,gBACXC,SAAU,iBHoKR,SAAUlR,EAAQD,EAASH,aIzhBjC,GAyCA,QAASuR,MAET,QAASC,KACLtN,EAAQqN,IAAIE,MAAMvN,EAASwN,WAG/B,QAASC,KACLzN,EAAQqN,IAAIE,MAAMvN,EAASwN,WAG/B,QAASvN,KACLD,EAAQyN,KAAKF,MAAMvN,EAASwN,WAGhC,QAASE,GAAKC,GACVC,EAAMD,GAASE,IAGnB,QAASC,GAAQH,GACb,GAAID,GAAOE,EAAMD,EACjB,KAAKD,EACD,KAAM,IAAI7P,OAAM,kBAAoB8P,EAGxC,IAAII,GAAWF,IAAQH,CACvB1N,GAAQqN,IAAIM,EAAQ,KAAOI,EAAW,MAG1C,QAASC,KACL,GAAIjO,GAAM,GAAIlC,MACdkC,GAAIZ,KAAO,QACXY,EAAIkO,QAAUC,EAAKC,OAAOZ,MAAM,KAAMC,WACtCxN,EAAQC,MAAMF,EAAIqO,OAGtB,QAASC,GAAIzO,GACTI,EAAQqN,IAAIa,EAAKI,QAAQ1O,GAAU,MAGvC,QAAS2O,GAAcC,GACnB,IAAKA,EAAY,CACb,GAAIC,GAAMC,EAAMrS,KAAKmR,UAAW,EAChCmB,GAAOC,IAAGA,EAAOV,EAAKC,OAAOZ,MAAM,KAAMkB,KAlFjD,GAKIzO,GALAkO,EAAO,EAAQ,KACfS,EAAS,EAAQ,KACjBd,EAAM,EAAQ,KAEda,EAAQG,MAAM5R,UAAUyR,MAExBd,IAGA5N,YADO8O,GAA0BA,EAAO9O,QAC9B8O,EAAO9O,QACQ,mBAAXzD,SAA0BA,OAAOyD,QACrCzD,OAAOyD,UAiBrB,KAAK,GAZD+O,KACC1B,EAAK,QACLC,EAAM,SACNG,EAAM,SACNxN,EAAO,UACPyN,EAAM,SACNI,EAAS,YACTE,EAAO,UACPK,EAAK,QACLE,EAAe,WAGXpS,EAAI,EAAGA,EAAI4S,EAAUlS,OAAQV,IAAK,CACvC,GAAI6S,GAAQD,EAAU5S,GAClB8S,EAAID,EAAM,GACV7P,EAAO6P,EAAM,EAEZhP,GAAQb,KACTa,EAAQb,GAAQ8P,GAIxB/S,EAAOD,QAAU+D,IJ2kBY3D,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQiE,EAAqBrE,GAE7C,YKjjBO,SAASoT,GAAWC,GACvB,MAAOC,GAAWD,IAAgBC,EAAA,GAG/B,QAASC,GAAUC,EAASC,GAE/B,MAAKA,IAAsBA,EAAkBD,GAItCC,EAAkBD,GAHdE,EAAOF,IAAYE,EAAA,GAM3B,QAASC,GAAaN,GAAa,MACDD,EAAWC,GAAxCO,EAD8B,EAC9BA,eACR,OAAgB,cAFsB,EACbJ,QAEd,KAEJI,ELkiBX,GAAIC,GAAM7T,EAAoB,GAI1B8T,EAAQ9T,EAAoB,GKxnB1B0T,GACFK,KAPU,iCAQVC,OANU,oCAOVC,UANc,kFAOdC,KANY,oCAOZC,GAVU,qCAaRb,GACFc,IAAKR,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHC,IAAKb,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHE,IAAKd,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHG,IAAKf,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHI,IAAKhB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHK,IAAKjB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHM,IAAKlB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHO,IAAKnB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHQ,IAAKpB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHS,IAAKrB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHU,IAAKtB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHW,IAAKvB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHY,IAAKxB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHa,IAAKzB,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHc,IAAK1B,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHe,IAAK3B,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHgB,IAAK5B,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHiB,IAAK7B,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,iBAAmBC,WAAY,aACjHkB,IAAK9B,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,SAAUc,IAAMC,KAAM,eAAiBC,WAAY,aACjHmB,IAAK/B,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHoB,IAAKhC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHqB,IAAKjC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHsB,IAAKlC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHuB,IAAKnC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHwB,IAAKpC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHyB,IAAKrC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH0B,IAAKtC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH2B,IAAKvC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH4B,IAAKxC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH6B,IAAKzC,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH8B,IAAK1C,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH+B,IAAK3C,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHgC,IAAK5C,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHiC,IAAK7C,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHkC,IAAK9C,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHmC,IAAK/C,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHoC,IAAKhD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHqC,IAAKjD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHsC,IAAKlD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHuC,IAAKnD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHwC,IAAKpD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtHyC,IAAKrD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH0C,IAAKtD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH2C,IAAKvD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH4C,IAAKxD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH6C,IAAKzD,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,YAAac,IAAMC,KAAM,iBAAmBC,WAAY,aACtH8C,IAAK1D,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,WAAaC,WAAY,aAC3G+C,IAAK3D,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,OAAQc,IAAMC,KAAM,WAAaC,WAAY,aAC3GgD,IAAK5D,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,KAAMc,IAAMC,KAAM,WAAaC,WAAY,aAEzGiD,IAAK7D,gBAAiB,KAAMS,kBAAmB,KAAMb,QAAS,KAAMc,IAAMC,KAAM,YAAcC,WAAY,cL+pB1GkD,EAAc1X,EAAoB,IAGlC2X,EAAoB3X,EAAoB,IAGxC4X,EAAkB5X,EAAoB,IAGtC6X,EAAoB7X,EAAoB,KAGxC8X,EAAS9X,EAAoB,IAC7B+X,EAA8B/X,EAAoB4D,EAAEkU,GAGpDE,EAAWhY,EAAoB,KAC/BiY,EAAgCjY,EAAoB4D,EAAEoU,EMlvB1D,moCAUA,IAAME,GAAc,SAAC,GAAD,QAAGC,GAAH,yBAIPC,GAFb,IAAeC,yBAAeH,EAAa,SAACC,GAAD,MAASA,KAEhBE,yBAAeH,EAAa,qBAAGI,gBAEtDC,EAAiBF,yBAAeH,EAAa,qBAAGM,SAEhDC,EAAoBJ,yBAAeH,EAAa,qBAAGQ,YAEnDC,EAAkBN,yBAAeH,EAAa,qBAAGU,UAEjDC,EAAkBR,yBAAeM,EAAiB,SAACC,GAAD,MAAaxF,GAAWwF,KAE1EE,EAAqBT,yBAAeM,EAAiB,SAACC,GAAD,MAAyB,OAAZA,IAElEG,EAAiBV,yBAAeS,EAAoB,SAACE,GAAD,OAAiBA,IAErEC,EAAiBZ,yBAC1BQ,EACAlB,IACA,oBAA8BpE,GAA9B,EAAGC,QAAH,EAAgB0F,WAEPC,EAAoBd,yBAAeM,EAAiB,SAACC,GAAD,MAAajF,GAAaiF,KAE9EQ,EAAuBf,yBAAeH,EAAa,qBAAGmB,eAGtDC,EAAqBjB,yBAC9BM,EACAI,EACA,SAACH,EAASW,GAAV,MACKnG,GAAWwF,GAASpE,YAAgB+E,GAAU,aAAgB,cAK1DC,EAAqCnB,yBAC9CU,EACA,SAACQ,GAAD,MACKA,IAAU,UAAa,WAMnBE,GAFkBpB,yBAAeH,EAAa,qBAAGwB,UAE7BrB,yBAAeH,EAAa,qBAAGwB,UAA0B1B,IAAS2B,WAEtFC,EAAkBvB,yBAC3BH,EACAuB,EACA,WAAcI,GAAd,SAAGC,SAAqCD,IAG/BE,EAAuB1B,yBAChCH,EACA,qBAAG8B,qBAAiDtT,IAAoBwK,aAI/D+I,EAAuB5B,yBAChCH,EACAY,EACA,WAA4BE,GAA5B,GAAGU,GAAH,EAAGA,OAAH,UAAYQ,cAEPC,IAAUD,cAAgBlB,GAAeU,IAAY1B,IAAS2B,UAI1DS,EAAmB/B,yBAC5BH,EACA,oBAAGmC,SAAYC,KAAf,yBAAwClU,IAAMgJ,YAAc9J,IAASkC,OAK5D+S,EAAclC,yBACvBH,EACA,eAAGwB,GAAH,EAAGA,QAAH,IAAYW,QAAZ,2BAAwBC,iBAAxB,WAAoCE,gBAApC,EAA2C,GAA3C,aACIF,EAAMlU,IAAM6I,OAEPyK,IAAY1B,IAAS2B,UAAyC,IAA9Ba,EAAKC,QAAQ,cACT,IAArCD,EAAKC,QAAQ,sBAKZC,EAAoBrC,yBAC7BH,EACAa,EACAlB,IACA+B,EACA,WAA+DL,EAAQoB,EAAaC,GAAc,QAA/FC,oBAA+F,KAA7EC,EAA6E,EAA7EA,QAA6E,IAApET,QAAoE,2BAAxDC,iBAAwD,MAE9F,SAAIK,GAAeC,GAAarB,KAI5Be,YAASA,EAAMlU,IAAMoI,WACd8L,EAAMlU,IAAMoI,WAGnBsM,YAAWA,EAAQ1U,IAAMoI,WAClBsM,EAAQ1U,IAAMoI,WAGlBqM,KAkBFE,GAd2B1C,yBACpCH,EACA,YAA2D,GAAxDwB,GAAwD,EAAxDA,QAAwD,IAA/CW,QAA+C,2BAAnCC,iBAAmC,WAAvBE,gBAAuB,EAAhB,GAAgB,CACvD,UACIF,YAASA,EAAMlU,IAAM+J,oBACrBuJ,IAAY1B,IAAS2B,UAA4C,IAAjCa,EAAKC,QAAQ,iBAEtCH,EAAMlU,IAAM+J,qBAOGkI,yBAC9BH,EACAa,EACAlB,IACA,WAA6C0B,EAAQoB,GAAgB,GAAlEG,GAAkE,EAAlEA,QAAkE,IAAzDT,QAAyD,2BAA7CC,iBAA6C,MAEjE,OAAIK,IAAepB,EACR,aAIPe,YAASA,EAAMlU,IAAMmI,aACd+L,EAAMlU,IAAMmI,aAGnBuM,YAAWA,EAAQ1U,IAAMmI,aAClBuM,EAAQ1U,IAAMmI,aAGlB,gBAIFyM,EAAe3C,yBACxBH,EACA,mBAA2B+C,KAA3B,EAAGA,KAA8BC,SAAjC,EAASA,YAGAC,EAAuB9C,yBAAeT,IAAiB,YAAmC,GAAhCwD,GAAgC,EAAhCA,0BAC/DC,EAAK,KAD0F,EAE7DD,MAF6D,IAE3FE,oBAF2F,EAEhF,GAFgF,MAE5EhB,iBAF4E,MAGnG,SAAiB,MAAbgB,GAAiC,YAAbA,IACpBD,EAAKf,EAAMe,IAAMf,EAAMiB,UACC,YAAbD,IAIRD,IAGEG,EAAkBnD,yBAC3BH,EACA,oBAAGmC,QAAH,2BAAeC,iBAAf,aAAyCA,IAASA,EAAMlU,IAAMuI,eAGrD8M,EAAkBpD,yBAC3BmD,EACAzC,EACA,SAAC2C,EAASnC,GAAV,MAAqBmC,IAAWnC,IAGvBoC,EAAsBtD,yBAC/BH,EACA,oBAAGmC,QAAH,2BAAeC,iBAAf,aAAwCA,IAASA,EAAMlU,IAAM2I,gBAGpD6M,EAA6BvD,yBACtCH,EACA,oBAAGmC,QAAH,2BAAeG,IAAf,mBAAsB,GAAtB,GAA4CC,QAAQ,uBAAyB,IAGpEoB,EAAwBxD,yBACjCuD,EACA,SAAAE,GAAA,OAAuBA,IAGdC,EAAmB1D,yBAC5BH,EACA,oBAAGmC,QAAH,sBAAe2B,GAAf,EAAeA,SAAf,IAAyBxB,gBAAzB,EAAgC,GAAhC,QACiB,UAAbwB,IAC+B,IAA/BxB,EAAKC,QAAQ,eAIRwB,EAAerC,EAEfsC,EAA0B7D,yBACnCS,EACA,SAACE,GAAD,MACIA,KAKKmD,EAAmB9D,yBAC5BH,EACAN,IACA,cAA4H,QAAzHyC,QAAyH,sBAA7G+B,GAA6G,EAA7GA,QAASC,EAAoG,EAApGA,KAAM7B,EAA8F,EAA9FA,KAAgB8B,EAA8E,EAAxFN,SAAwF,IAAjE1B,iBAAiE,OAAbiC,EAAa,EAA1CnB,0BAA6BmB,KACrGC,EAAMH,EAAKI,MAAM,KACjBC,EAAWF,EAAI,GACfG,EAAOH,EAAI,GACXR,EAAcM,EAAd,IACAM,EAAYZ,EAAZ,KAAyBK,EACzBf,EAAWA,GAAGc,EAAU5B,EACxBqC,EAASnF,YAAY4C,KAE3B,QACI+B,OACAK,WACAC,OACAX,WACAY,SACAtB,WACAuB,SACAC,KATSA,GAAGF,EAAStB,EAAWuB,EAASN,EAUzCA,OACAjC,WAKCyC,EAAsB1E,yBAC/BoB,EACA7B,IACA,SAACiC,EAAD,GAAuF,QAAzEuB,0BAA6Bd,KAA4C,sBAAnC0C,GAAmC,EAAnCA,QAASC,EAA0B,EAA1BA,WACnDC,EAAMF,GAAWC,CACvB,OAAOpD,IAAaqD,GAA4B,IAArBA,EAAIzC,QAAQ,OAIlC0C,EAAqB9E,yBAC9B0E,EACA,SAACK,GAAD,MAAkBA,GAAc,KAAO,OAG9BC,EAAoBhF,yBAC7BoB,EACA9B,IACAkB,EACA,iBAAM,wDAGGyE,EAA2BjF,yBACpCV,IACA,oBAAG4F,QAAH,4BAAeC,iBAGNC,GAAyBpF,yBAClCH,EACA,oBAAGmC,QAAH,2BAAeC,KAAf,2BAAwBoD,KAAxB,wBAISC,GAAyBtF,yBAClCV,IACA,oBAAGiG,QAAH,2BAAeC,YAAf,wBAGSC,GAAwBzF,yBACjCV,IACA,oBAAGoG,MAAH,2BAAajD,OAAb,2BN81BE,SAAU1a,EAAQiE,EAAqBrE,GAE7C,YO5nCe,SAASge,GAAeC,EAAUC,GAC/CD,EAAS9c,UAAYD,OAAOid,OAAOD,EAAW/c,WAC9C8c,EAAS9c,UAAUid,YAAcH,EACjCA,EAASI,UAAYH,ECahB,QAASI,GAAeC,GAC7B,GAAIC,YAEAD,IACFA,EAAW,QAGb,IAAIE,GAAkBF,EAAW,eAE7BG,EAEJ,SAAUC,GAWR,QAASD,GAASE,EAAOC,GACvB,GAAIC,EAIJ,OAFAA,GAAQH,EAAWpe,KAAKwe,KAAMH,EAAOC,IAAYE,KACjDD,EAAMP,GAAYK,EAAMI,MACjBF,EAfTd,EAAeU,EAAUC,EAEzB,IAAIM,GAASP,EAASvd,SAoBtB,OAlBA8d,GAAOC,gBAAkB,WACvB,GAAIC,EAEJ,OAAOA,MAAWA,EAAKZ,GAAYQ,KAAKR,GAAWY,EAAKV,GAAmB,KAAMU,GAWnFF,EAAOG,OAAS,WACd,MAAOC,GAAAC,SAASC,KAAKR,KAAKH,MAAMY,WAG3Bd,GACPW,EAAAI,UAeF,OALAf,GAASgB,WACPV,MAAOW,EAAWC,WAClBJ,SAAU,IAAUK,QAAQD,YAE9BlB,EAASoB,mBAAqBtB,KAA4BA,EAAsBD,GAAYoB,EAAWC,WAAYpB,EAAsBC,GAAmBsB,EAAmBvB,GACxKE,EClEM,QAASsB,GAAuBC,GAC7C,YAAIA,EACF,KAAM,IAAIC,gBAAe,4DAG3B,OAAOD,GCLM,QAASE,KAetB,MAdAA,GAAWjf,OAAOkf,QAAU,SAAUC,GACpC,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CACzC,GAAIigB,GAAS5O,UAAUrR,EAEvB,KAAK,GAAImE,KAAO8b,GACVpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAC/C6b,EAAO7b,GAAO8b,EAAO9b,IAK3B,MAAO6b,IAGFF,EAAS1O,MAAMsN,KAAMrN,WCff,QAAS6O,GAA8BD,EAAQE,GAC5D,GAAc,MAAVF,EAAgB,QACpB,IAEI9b,GAAKnE,EAFLggB,KACAI,EAAavf,OAAO6I,KAAKuW,EAG7B,KAAKjgB,EAAI,EAAGA,EAAIogB,EAAW1f,OAAQV,IACjCmE,EAAMic,EAAWpgB,GACbmgB,EAAS/F,QAAQjW,IAAQ,IAC7B6b,EAAO7b,GAAO8b,EAAO9b,GAGvB,OAAO6b,GCJT,QAASK,KAGP,GAAIC,MACAC,IACJ,QACEC,MAAO,WACLD,EAAOE,EACPH,EAAUG,GAEZC,OAAQ,WAGN,IAAK,GAFDC,GAAYL,EAAUC,EAEjBvgB,EAAI,EAAGA,EAAI2gB,EAAUjgB,OAAQV,IACpC2gB,EAAU3gB,MAGdsD,IAAK,WACH,MAAOid,IAETK,UAAW,SAAmBC,GAC5B,GAAIC,KAGJ,OAFIP,KAASD,IAASC,EAAOD,EAAQ/N,SACrCgO,EAAK3f,KAAKigB,GACH,WACAC,GAAgBR,IAAYG,IACjCK,KACIP,IAASD,IAASC,EAAOD,EAAQ/N,SACrCgO,EAAKQ,OAAOR,EAAKnG,QAAQyG,GAAW,OCvB5C,QAASG,MAET,QAASC,GAAqBC,EAAgBvC,GAE5C,GAAIwC,IACFC,IAAK,SAA8B7C,GACjC,IACE,GAAI8C,GAAYH,EAAevC,EAAM2C,WAAY/C,IAE7C8C,IAAcF,EAAS5C,OAAS4C,EAASrd,SAC3Cqd,EAASI,yBACTJ,EAAS5C,MAAQ8C,EACjBF,EAASrd,MAAQ,MAEnB,MAAOA,GACPqd,EAASI,yBACTJ,EAASrd,MAAQA,IAIvB,OAAOqd,GAGM,QAASK,GAexBC,EACA3C,GACE,GAAI4C,GAAeC,WAEf7C,IACFA,KAGF,IAAI8C,GAAQ9C,EACR+C,EAAuBD,EAAME,eAC7BA,WAAiBD,EAAkC,SAAU7e,GAC/D,MAAO,mBAAqBA,EAAO,KACjC6e,EACAE,EAAmBH,EAAMI,WACzBA,WAAaD,EAA8B,kBAAoBA,EAC/DE,EAAwBL,EAAMM,gBAC9BA,WAAkBD,SAA+CA,EACjEE,EAAwBP,EAAMQ,yBAC9BA,WAA2BD,GAA0CA,EACrEE,EAAiBT,EAAM1D,SACvBA,WAAWmE,EAA4B,QAAUA,EACjDC,EAAgBV,EAAMW,QACtBA,WAAUD,GAAmCA,EAC7CE,EAAiBtC,EAA8B0B,GAAQ,iBAAkB,aAAc,kBAAmB,2BAA4B,WAAY,YAElJxD,EAAkBF,EAAW,eAC7BvB,EAAU8F,IACVC,GAAgBhB,KAAoBA,EAAcxD,GAAYoB,EAAYoC,EAActD,GAAmBsB,EAAmBgC,GAC9HjC,GAAqBkC,KAAyBA,EAAmBvD,GAAmBsB,EAAmBiC,EAC3G,OAAO,UAAyBgB,GAC9B,IAAU,SAAAC,oBAAmBD,GAAmB,yDAA4DX,EAAa,sBAAwBa,KAAKC,UAAUH,GAChK,IAAII,GAAuBJ,EAAiBK,aAAeL,EAAiB3f,MAAQ,YAChFggB,EAAclB,EAAeiB,GAE7BE,EAAyBnD,KAAa0C,GACxCV,eAAgBA,EAChBE,WAAYA,EACZE,gBAAiBA,EACjBE,yBAA0BA,EAC1BlE,SAAUA,EACVqE,QAASA,EACTS,YAAaA,EACbD,qBAAsBA,EACtBJ,iBAAkBA,IAMhBO,EAEJ,SAAU5E,GAGR,QAAS4E,GAAQ3E,EAAOC,GACtB,GAAIC,EAeJ,OAbAA,GAAQH,EAAWpe,KAAKwe,KAAMH,EAAOC,IAAYE,KACjDD,EAAM9B,QAAUA,EAChB8B,EAAM0E,SACN1E,EAAM2E,YAAc,EACpB3E,EAAME,MAAQJ,EAAML,IAAaM,EAAQN,GACzCO,EAAM4E,UAAYC,QAAQ/E,EAAML,IAChCO,EAAM8E,mBAAqB9E,EAAM8E,mBAAmBC,KAAK7D,EAAuBA,EAAuBlB,KACvG,IAAUA,EAAME,MAAO,mBAAsBT,EAAW,wCAAkD8E,EAAc,0EAAqF9E,EAAW,mBAAuB8E,EAAc,MAE7PvE,EAAMgF,eAENhF,EAAMiF,mBAECjF,EAlBTd,EAAeuF,EAAS5E,EAqBxB,IAAIM,GAASsE,EAAQpiB,SA2HrB,OAzHA8d,GAAOC,gBAAkB,WACvB,GAAI8E,GAMAC,EAAelF,KAAK2E,UAAY,KAAO3E,KAAKkF,YAChD,OAAOD,MAAYA,EAAMvF,GAAmBwF,GAAgBlF,KAAKF,QAAQJ,GAAkBuF,GAG7F/E,EAAOiF,kBAAoB,WACpBzB,IAOL1D,KAAKkF,aAAaE,eAClBpF,KAAKyC,SAASC,IAAI1C,KAAKH,OACnBG,KAAKyC,SAASI,uBAAuB7C,KAAKqF,gBAGhDnF,EAAOoF,0BAA4B,SAAmC3C,GACpE3C,KAAKyC,SAASC,IAAIC,IAGpBzC,EAAO2C,sBAAwB,WAC7B,MAAO7C,MAAKyC,SAASI,uBAGvB3C,EAAOqF,qBAAuB,WACxBvF,KAAKkF,cAAclF,KAAKkF,aAAaM,iBACzCxF,KAAKkF,aAAe,KACpBlF,KAAKyF,iBAAmBnD,EACxBtC,KAAKC,MAAQ,KACbD,KAAKyC,SAASC,IAAMJ,EACpBtC,KAAKyC,SAASI,0BAGhB3C,EAAOwF,mBAAqB,WAE1B,MADA,KAAU7B,EAAS,wGAAgHP,EAAa,YACzItD,KAAK2F,iBAGdzF,EAAO2E,mBAAqB,SAA4Be,GACtD5F,KAAK2F,gBAAkBC,GAGzB1F,EAAO6E,aAAe,WACpB,GAAIvC,GAAiBO,EAAgB/C,KAAKC,MAAM4F,SAAUtB,EAC1DvE,MAAKyC,SAAWF,EAAqBC,EAAgBxC,KAAKC,OAC1DD,KAAKyC,SAASC,IAAI1C,KAAKH,QAGzBK,EAAO8E,iBAAmB,WACxB,GAAKtB,EAAL,CAGA,GAAIoC,IAAa9F,KAAK2E,UAAY3E,KAAKH,MAAQG,KAAKF,SAASJ,EAC7DM,MAAKkF,aAAe,GAAIa,GAAa/F,KAAKC,MAAO6F,EAAW9F,KAAKgG,cAAclB,KAAK9E,OAOpFA,KAAKyF,iBAAmBzF,KAAKkF,aAAaO,iBAAiBX,KAAK9E,KAAKkF,gBAGvEhF,EAAO8F,cAAgB,WACrBhG,KAAKyC,SAASC,IAAI1C,KAAKH,OAElBG,KAAKyC,SAASI,uBAGjB7C,KAAKiG,mBAAqBjG,KAAKkG,qCAC/BlG,KAAKmG,SAASC,IAHdpG,KAAKyF,oBAOTvF,EAAOgG,qCAAuC,WAM5ClG,KAAKiG,0BACLjG,KAAKyF,oBAGPvF,EAAOkC,aAAe,WACpB,MAAOwC,SAAQ5E,KAAKkF,eAAiBlF,KAAKkF,aAAa9C,gBAGzDlC,EAAOmG,cAAgB,SAAuBxG,GAC5C,KAAKgE,GAAYL,GAAqBxD,KAAK2E,WAAa3E,KAAKkF,cAAe,MAAOrF,EAKnF,IAAIyG,GAAalF,KAAavB,EAK9B,OAHIgE,KAASyC,EAAWV,IAAM5F,KAAK6E,oBAC/BrB,IAAiB8C,EAAW9C,GAAmBxD,KAAK0E,eACpD1E,KAAK2E,WAAa3E,KAAKkF,eAAcoB,EAAW5G,GAAmBM,KAAKkF,cACrEoB,GAGTpG,EAAOG,OAAS,WACd,GAAIoC,GAAWzC,KAAKyC,QAGpB,IAFAA,EAASI,yBAELJ,EAASrd,MACX,KAAMqd,GAASrd,KAEf,OAAO,UAAA3B,eAAcwgB,EAAkBjE,KAAKqG,cAAc5D,EAAS5C,SAIhE2E,GACPlE,EAAAI,UA0CF,OAtCA8D,GAAQP,iBAAmBA,EAC3BO,EAAQF,YAAcA,EACtBE,EAAQzD,kBAAoBA,EAC5ByD,EAAQR,aAAeA,EACvBQ,EAAQ7D,UAAYqD,EAkCb,IAAaQ,EAASP,IChSjC,QAASsC,GAAGC,EAAGC,GACb,MAAID,KAAMC,EACK,IAAND,GAAiB,IAANC,GAAW,EAAID,GAAM,EAAIC,EAEpCD,IAAMA,GAAKC,IAAMA,EAIb,QAASC,GAAaC,EAAMC,GACzC,GAAIL,EAAGI,EAAMC,GAAO,OAAM,CAE1B,IAAoB,gBAATD,IAA8B,OAATA,GAAiC,gBAATC,IAA8B,OAATA,EAC3E,OAAM,CAGR,IAAIC,GAAQ1kB,OAAO6I,KAAK2b,GACpBG,EAAQ3kB,OAAO6I,KAAK4b,EACxB,IAAIC,EAAM7kB,SAAW8kB,EAAM9kB,OAAQ,OAAM,CAEzC,KAAK,GAAIV,GAAI,EAAGA,EAAIulB,EAAM7kB,OAAQV,IAChC,IAAKylB,EAAOvlB,KAAKolB,EAAMC,EAAMvlB,MAAQilB,EAAGI,EAAKE,EAAMvlB,IAAKslB,EAAKC,EAAMvlB,KACjE,OAAM,CAIV,UC1BK,QAAS0lB,GAAuBC,GACrC,MAAO,UAA8BpB,EAAU9J,GAG7C,QAASmL,KACP,MAAOC,GAHT,GAAIA,GAAWF,EAAYpB,EAAU9J,EAOrC,OADAmL,GAAiBE,qBACVF,GAUJ,QAASG,GAAqBC,GACnC,MAAwC,QAAjCA,EAAWF,4BAA8BE,EAAWF,kBAAkCxC,QAAQ0C,EAAWF,mBAA2C,IAAtBE,EAAWtlB,OAc3I,QAASulB,GAAmBD,EAAYhE,GAC7C,MAAO,UAA2BuC,EAAUzF,GAC1C,GAEIoH,IAFcpH,EAAKkE,YAEX,SAAyBmD,EAAiBC,GACpD,MAAOF,GAAMJ,kBAAoBI,EAAMF,WAAWG,EAAiBC,GAAYF,EAAMF,WAAWG,IAqBlG,OAjBAD,GAAMJ,qBAENI,EAAMF,WAAa,SAAgCG,EAAiBC,GAClEF,EAAMF,WAAaA,EACnBE,EAAMJ,kBAAoBC,EAAqBC,EAC/C,IAAIzH,GAAQ2H,EAAMC,EAAiBC,EASnC,OAPqB,kBAAV7H,KACT2H,EAAMF,WAAazH,EACnB2H,EAAMJ,kBAAoBC,EAAqBxH,GAC/CA,EAAQ2H,EAAMC,EAAiBC,IAI1B7H,GAGF2H,GC3DJ,QAASG,GAAiCC,GAC/C,MAAqC,kBAAvBA,GAAoCL,EAAmBK,EAAoB,6BAEpF,QAASC,GAAgCD,GAC9C,MAAQA,UAAqBZ,EAAuB,SAAUnB,GAC5D,OACEA,SAAUA,KAIT,QAASiC,GAA+BF,GAC7C,MAAOA,IAAoD,gBAAvBA,GAAkCZ,EAAuB,SAAUnB,GACrG,MAAO,UAAAkC,GAAmBH,EAAoB/B,YCb3C,QAASmC,GAA8BC,GAC5C,MAAkC,kBAApBA,GAAiCV,EAAmBU,EAAiB,0BAE9E,QAASC,GAA6BD,GAC3C,MAAQA,UAAkBjB,EAAuB,WAC/C,WCJG,QAASmB,GAAkBC,EAAYC,EAAeX,GAC3D,MAAOtG,MAAasG,EAAUU,EAAYC,GAErC,QAASC,GAAmBC,GACjC,MAAO,UAA6B1C,EAAUzF,GAC5C,GAIIoI,GAHAC,GADcrI,EAAKkE,YACZlE,EAAKqI,MACZC,EAAsBtI,EAAKsI,oBAC3BC,IAEJ,OAAO,UAAyBP,EAAYC,EAAeX,GACzD,GAAIkB,GAAkBL,EAAWH,EAAYC,EAAeX,EAU5D,OARIiB,GACGF,GAASC,EAAoBE,EAAiBJ,KAAcA,EAAcI,IAE/ED,KACAH,EAAcI,GAITJ,IAIN,QAASK,GAAyBN,GACvC,MAA6B,kBAAfA,GAA4BD,EAAmBC,UAExD,QAASO,GAAwBP,GACtC,MAAQA,UAAa,WACnB,MAAOJ,IC9BJ,QAASY,GAAgCd,EAAiBL,EAAoBW,EAAY1C,GAC/F,MAAO,UAAkCpB,EAAOiD,GAC9C,MAAOa,GAAWN,EAAgBxD,EAAOiD,GAAWE,EAAmB/B,EAAU6B,GAAWA,IAGzF,QAASsB,GAA8Bf,EAAiBL,EAAoBW,EAAY1C,EAAUzF,GAWvG,QAAS6I,GAAgBC,EAAYC,GAOnC,MANA1E,GAAQyE,EACRxB,EAAWyB,EACXf,EAAaH,EAAgBxD,EAAOiD,GACpCW,EAAgBT,EAAmB/B,EAAU6B,GAC7Cc,EAAcD,EAAWH,EAAYC,EAAeX,GACpD0B,KACOZ,EAGT,QAASa,KAIP,MAHAjB,GAAaH,EAAgBxD,EAAOiD,GAChCE,EAAmBR,oBAAmBiB,EAAgBT,EAAmB/B,EAAU6B,IACvFc,EAAcD,EAAWH,EAAYC,EAAeX,GAItD,QAAS4B,KAIP,MAHIrB,GAAgBb,oBAAmBgB,EAAaH,EAAgBxD,EAAOiD,IACvEE,EAAmBR,oBAAmBiB,EAAgBT,EAAmB/B,EAAU6B,IACvFc,EAAcD,EAAWH,EAAYC,EAAeX,GAItD,QAAS6B,KACP,GAAIC,GAAiBvB,EAAgBxD,EAAOiD,GACxC+B,GAAqBC,EAAmBF,EAAgBpB,EAG5D,OAFAA,GAAaoB,EACTC,IAAmBjB,EAAcD,EAAWH,EAAYC,EAAeX,IACpEc,EAGT,QAASmB,GAAsBC,EAAWC,GACxC,GAAIC,IAAgBC,EAAiBF,EAAcnC,GAC/CsC,GAAgBC,EAAeL,EAAWnF,EAG9C,OAFAA,GAAQmF,EACRlC,EAAWmC,EACPC,GAAgBE,EAAqBX,IACrCS,EAAqBR,IACrBU,EAAqBT,IAClBf,EAlDT,GAII/D,GACAiD,EACAU,EACAC,EACAG,EARAyB,EAAiB7J,EAAK6J,eACtBF,EAAmB3J,EAAK2J,iBACxBL,EAAqBtJ,EAAKsJ,mBAC1BN,IAkDJ,OAAO,UAAgCQ,EAAWC,GAChD,MAAOT,GAAoBO,EAAsBC,EAAWC,GAAgBZ,EAAgBW,EAAWC,IAQ5F,QAASK,GAA0BrE,EAAU3C,GAC1D,GAAIiH,GAAsBjH,EAAMiH,oBAC5BC,EAAyBlH,EAAMkH,uBAC/BC,EAAiBnH,EAAMmH,eACvBtO,EAAUyF,EAA8B0B,GAAQ,sBAAuB,yBAA0B,mBAEjG+E,EAAkBkC,EAAoBtE,EAAU9J,GAChD6L,EAAqBwC,EAAuBvE,EAAU9J,GACtDwM,EAAa8B,EAAexE,EAAU9J,EAO1C,QADsBA,EAAQ0M,KAAOO,EAAgCD,GAC9Cd,EAAiBL,EAAoBW,EAAY1C,EAAU9J,GC5DpF,QAASuO,GAAMC,EAAKC,EAAWlmB,GAC7B,IAAK,GAAIhD,GAAIkpB,EAAUxoB,OAAS,EAAGV,GAAK,EAAGA,IAAK,CAC9C,GAAImpB,GAASD,EAAUlpB,GAAGipB,EAC1B,IAAIE,EAAQ,MAAOA,GAGrB,MAAO,UAAU5E,EAAU9J,GACzB,KAAM,IAAI/Y,OAAM,+BAAkCunB,GAAM,QAAUjmB,EAAO,uCAAyCyX,EAAQsI,qBAAuB,MAIrJ,QAASqG,GAAYC,EAAG5C,GACtB,MAAO4C,KAAM5C,EpBgmCf,GAAI6C,GAAQ3pB,EAAoB,GAI5B4pB,EAAa5pB,EAAoB,KACjC6pB,EAAkC7pB,EAAoB4D,EAAEgmB,GqBzoCjD7J,EAAoB,IAAU+J,OACvC3F,aAAc,IAAU4F,KAAKnK,WAC7B2E,eAAgB,IAAUwF,KAAKnK,WAC/B4E,iBAAkB,IAAUuF,KAAKnK,WACjCuB,aAAc,IAAU4I,KAAKnK,aAEpBD,EAAa,IAAUmK,OAChC7I,UAAW,IAAU8I,KAAKnK,WAC1BgF,SAAU,IAAUmF,KAAKnK,WACzB+B,SAAU,IAAUoI,KAAKnK,ab0DZ,GRslCD5f,EAAoB,KQtlCnBse,KRwsCX0L,EAA8BhqB,EAAoB,KAClDiqB,EAAmDjqB,EAAoB4D,EAAEomB,GAGzEE,EAAUlqB,EAAoB,IAC9BmqB,EAA+BnqB,EAAoB4D,EAAEsmB,GAGrDE,EAAWpqB,EAAoB,KYjxC/B8gB,EAAU,KACVuJ,GACFtJ,OAAQ,cAqCN+D,EAEJ,WACE,QAASA,GAAa9F,EAAO6F,EAAWE,GACtChG,KAAKC,MAAQA,EACbD,KAAK8F,UAAYA,EACjB9F,KAAKgG,cAAgBA,EACrBhG,KAAKuL,YAAc,KACnBvL,KAAKiC,UAAYqJ,EAGnB,GAAIpL,GAAS6F,EAAa3jB,SA+B1B,OA7BA8d,GAAOsL,aAAe,SAAsBrJ,GAE1C,MADAnC,MAAKoF,eACEpF,KAAKiC,UAAUC,UAAUC,IAGlCjC,EAAOuF,iBAAmB,WACxBzF,KAAKiC,UAAUD,UAGjB9B,EAAOkC,aAAe,WACpB,MAAOwC,SAAQ5E,KAAKuL,cAGtBrL,EAAOkF,aAAe,WACfpF,KAAKuL,cACRvL,KAAKuL,YAAcvL,KAAK8F,UAAY9F,KAAK8F,UAAU0F,aAAaxL,KAAKgG,eAAiBhG,KAAKC,MAAMiC,UAAUlC,KAAKgG,eAChHhG,KAAKiC,UAAYN,MAIrBzB,EAAOsF,eAAiB,WAClBxF,KAAKuL,cACPvL,KAAKuL,cACLvL,KAAKuL,YAAc,KACnBvL,KAAKiC,UAAUH,QACf9B,KAAKiC,UAAYqJ,IAIdvF,KC1ELhC,EAAsB,EACtBqC,KCXAW,EAAS5kB,OAAOC,UAAUC,edqrD1BopB,EAAKxqB,EAAoB,KgBpqDd,UCRA,QC0BA,QE8DA,EAvDR,SAAuByqB,GAC5B,GAAItL,MACAuL,EAAkBvL,EAAKwL,WACvBA,WAAaD,EAA6B7I,EAAkB6I,EAC5DE,EAAwBzL,EAAK0L,yBAC7BA,WAA2BD,EAAmC,EAAkCA,EAChGE,EAAwB3L,EAAK4L,4BAC7BA,WAA8BD,EAAmC,EAAqCA,EACtGE,EAAwB7L,EAAK8L,oBAC7BA,WAAsBD,EAAmC,EAA6BA,EACtFE,EAAuB/L,EAAK2C,gBAC5BA,WAAkBoJ,EAAkC,EAAyBA,CAEjF,OAAO,UAAiBlE,EAAiBL,EAAoBW,EAAYrF,YACnEA,IACFA,KAGF,IAAI+B,GAAQ/B,EACRkJ,EAAanH,EAAMwD,KACnBA,WAAO2D,GAA+BA,EACtCC,EAAuBpH,EAAMgF,eAC7BA,WAAiBoC,EAAkC3B,EAAc2B,EACjEC,EAAwBrH,EAAM8E,iBAC9BA,WAAmBuC,EAAmC5F,EAAe4F,EACrEC,EAAwBtH,EAAMyE,mBAC9BA,WAAqB6C,EAAmC7F,EAAe6F,EACvEC,EAAwBvH,EAAMyD,oBAC9BA,WAAsB8D,EAAmC9F,EAAe8F,EACxEC,EAAejL,EAA8ByD,GAAQ,OAAQ,iBAAkB,mBAAoB,qBAAsB,wBAEzHkF,EAAsBG,EAAMrC,EAAiB6D,EAA0B,mBACvE1B,EAAyBE,EAAM1C,EAAoBoE,EAA6B,sBAChF3B,EAAiBC,EAAM/B,EAAY2D,EAAqB,aAC5D,OAAON,GAAW7I,EAAiB3B,GAEjCkC,WAAY,UAEZF,eAAgB,SAAwB9e,GACtC,MAAO,WAAaA,EAAO,KAG7Bof,yBAA0BkB,QAAQqD,GAElCkC,oBAAqBA,EACrBC,uBAAwBA,EACxBC,eAAgBA,EAChB5B,KAAMA,EACNwB,eAAgBA,EAChBF,iBAAkBA,EAClBL,mBAAoBA,EACpBhB,oBAAqBA,GACpB+D,OE9FP,gItB+iEM,SAAUprB,EAAQD,EAASH,GAEjC,YuBlhEA,SAASyrB,GAAUC,EAAWrZ,EAAQqX,EAAG5C,EAAG3jB,EAAGC,EAAG7B,EAAG4R,GAGnD,GAFAwY,EAAetZ,IAEVqZ,EAAW,CACd,GAAIvnB,EACJ,aAAIkO,EACFlO,EAAQ,GAAIpC,OAAM,qIACb,CACL,GAAI6pB,IAAQlC,EAAG5C,EAAG3jB,EAAGC,EAAG7B,EAAG4R,GACvB0Y,EAAW,CACf1nB,GAAQ,GAAIpC,OAAMsQ,EAAOyZ,QAAQ,MAAO,WACtC,MAAOF,GAAKC,QAEd1nB,EAAMd,KAAO,sBAIf,KADAc,GAAM4nB,YAAc,EACd5nB,GA3BV,GAAIwnB,GAAiB,SAAwBtZ,IA+B7CjS,GAAOD,QAAUsrB,GvBsjEX,SAAUrrB,EAAQD,EAASH,GAEjC,YwBlmEA,IAAIgsB,GAAgB,EAAQ,IASxBC,EAAUD,CA0Cd5rB,GAAOD,QAAU8rB,GxBinEX,SAAU7rB,EAAQD,EAASH,GAEjC,YyB7pEA,SAASksB,GAAmBC,GAK1B,IAAK,GAJDC,GAAW1a,UAAU3Q,OAAS,EAE9BoR,EAAU,yBAA2Bga,EAAO,6EAAoFA,EAE3HE,EAAS,EAAGA,EAASD,EAAUC,IACtCla,GAAW,WAAama,mBAAmB5a,UAAU2a,EAAS,GAGhEla,IAAW,gHAEX,IAAIhO,GAAQ,GAAIpC,OAAMoQ,EAItB,MAHAhO,GAAMd,KAAO,sBACbc,EAAM4nB,YAAc,EAEd5nB,EAGR/D,EAAOD,QAAU+rB,GzBqrEX,SAAU9rB,EAAQiE,EAAqBrE,GAE7C,Y0B5tEA,o1BAAAK,EAAA,OAIIksB,EAEApS,IAFAoS,cACAC,EACArS,IADAqS,QAGSC,EAAkB,uCAClBC,EAAiB,4BAEjBC,EAAoB,uBACpBC,EAAmB,sBACnBC,EAAU,aACVC,EAAoB,uBACpBC,EAAoB,uBACpBC,EAA2B,kBAC3BC,EAAgC,6BAChCC,GACT1kB,KACI2kB,WAAY,iCACZC,mBAAoB,kCAExB7kB,IACI4kB,WAAY,iCACZC,mBAAoB,kCAExBC,SACIF,WAAY,uCACZC,mBAAoB,wCAExB9kB,MACI6kB,WAAY,+BACZC,mBAAoB,iDAIfE,GACT9kB,KACI2kB,WAAY,gCAEhB5kB,IACI4kB,WAAY,gCAEhBE,SACIF,WAAY,sCAEhB7kB,MACI6kB,WAAY,+BAIPI,GACT/kB,KACI2kB,WAAY,+CACZC,mBAAoB,gDAExB7kB,IACI4kB,WAAY,8BACZC,mBAAoB,4CAExBC,SACIF,WAAY,8BACZC,mBAAoB,4CAExB9kB,MACI6kB,WAAY,8BACZC,mBAAoB,6CAiBfI,GATLroB,IAAOyE,QACGzE,IAAOyE,QACZzE,IAAO0E,QACR1E,IAAO0E,QACG1E,IAAO0E,QACJ1E,IAAO0E,QACpB1E,IAAO2E,QAGe,WACnB9D,IAAUsH,IADQ,WAElBtH,IAAUqH,KAFQ,WAGlBnH,IAAawH,UAHK,WAIlBxH,IAAa0H,cAJK,WAKlB1H,IAAayH,gBAGf8f,GACT,OACA,WACA,WAGSC,GACTC,GAAI,SACJC,GAAI,SACJpD,GAAI,SAGKqD,EAAqBrB,EAArB,+CACAsB,EAAyBtB,EAAzB,oDACAuB,EAA2BxB,EAA3B,+CAGAyB,EAAyBzB,EAAzB,0CACA0B,EAAc,2BAIdC,EAAsB,mBACtBC,EAAsB,mBACtBC,EAAwB,qBAExBC,GACTC,QACIC,KAAM,wCACNC,GAAI,OAERC,SACIC,GAAI,YACJC,QAAS,MACTC,KAAM,MACNC,OAAQ,MACRC,KAAM,MACNC,QAAS,MACTC,KAAM,MACNC,IAAK,WAETC,QACIX,KAAM,wCACNC,GAAI,OAERW,QACIZ,KAAM,wCACNC,GAAI,OAERY,MACIb,KAAM,wCACNC,GAAI,OAERa,QACId,KAAM,wCACNC,GAAI,OAERc,SACIf,KAAM,wCACNC,GAAI,OAERe,WACIhB,KAAM,wCACNC,GAAI,OAERgB,cACIjB,KAAM,wCACNC,GAAI,OAERiB,QACIlB,KAAM,wCACNC,GAAI,OAERkB,UACInB,KAAM,wCACNC,GAAI,QAICmB,EAAsB,wCACtBC,EAAoB,yC1BuvE3B,SAAUxvB,EAAQD,EAASH,GAEjC,Y2B95EA,SAAS6vB,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GAE1L,QAASsd,GAAqBvG,EAAG5C,GAC/B,MAAO4C,KAAM5C,EAGf,QAASoJ,GAAenG,GACtB,GAAIoG,GAAgBze,UAAU3Q,QAAU,YAAK2Q,UAAU,GAAmBue,EAAuBve,UAAU,GAEvG0e,EAAW,KACXC,EAAa,IACjB,OAAO,YACL,IAAK,GAAIC,GAAO5e,UAAU3Q,OAAQ6qB,EAAO7Y,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3E,EAAK2E,GAAQ7e,UAAU6e,EASzB,OANiB,QAAbH,GAAqBA,EAASrvB,SAAW6qB,EAAK7qB,QAAW6qB,EAAK4E,MAAM,SAAU/rB,EAAOgsB,GACvF,MAAON,GAAc1rB,EAAO2rB,EAASK,QAErCJ,EAAatG,EAAKtY,UAAMA,GAAWma,IAErCwE,EAAWxE,EACJyE,GAIX,QAASK,GAAgBC,GACvB,GAAIC,GAAe7d,MAAM+c,QAAQa,EAAM,IAAMA,EAAM,GAAKA,CAExD,KAAKC,EAAaJ,MAAM,SAAUK,GAChC,MAAsB,kBAARA,KACZ,CACF,GAAIC,GAAkBF,EAAaG,IAAI,SAAUF,GAC/C,aAAcA,KACbG,KAAK,KACR,MAAM,IAAIjvB,OAAM,wGAAgH+uB,EAAkB,KAGpJ,MAAOF,GAGT,QAASK,GAAsBC,GAC7B,IAAK,GAAIC,GAAQzf,UAAU3Q,OAAQqwB,EAAiBre,MAAMoe,EAAQ,EAAIA,EAAQ,EAAI,GAAIE,EAAQ,EAAGA,EAAQF,EAAOE,IAC9GD,EAAeC,EAAQ,GAAK3f,UAAU2f,EAGxC,OAAO,YACL,IAAK,GAAIC,GAAQ5f,UAAU3Q,OAAQ4vB,EAAQ5d,MAAMue,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACjFZ,EAAMY,GAAS7f,UAAU6f,EAG3B,IAAIC,GAAiB,EACjBC,EAAad,EAAMe,MACnBd,EAAeF,EAAgBC,GAE/BgB,EAAqBT,EAAQzf,UAAMA,IAAY,WAEjD,MADA+f,KACOC,EAAWhgB,UAAMA,GAAWC,aAClCkgB,OAAOR,IAEN5P,EAAW,SAAkBgC,EAAO5E,GACtC,IAAK,GAAIiT,GAAQngB,UAAU3Q,OAAQ6qB,EAAO7Y,MAAM8e,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACpGlG,EAAKkG,EAAQ,GAAKpgB,UAAUogB,EAG9B,IAAIC,GAASnB,EAAaG,IAAI,SAAUiB,GACtC,MAAOA,GAAWvgB,UAAMA,IAAY+R,EAAO5E,GAAOgT,OAAOhG,KAE3D,OAAO+F,GAAmBlgB,UAAMA,GAAWoe,EAAmBkC,IAUhE,OAPAvQ,GAASiQ,WAAaA,EACtBjQ,EAASgQ,eAAiB,WACxB,MAAOA,IAEThQ,EAASyQ,oBAAsB,WAC7B,MAAOT,GAAiB,GAEnBhQ,GAMX,QAAS0Q,GAAyBC,GAChC,GAAIC,GAAkB1gB,UAAU3Q,QAAU,YAAK2Q,UAAU,GAAmB2G,EAAiB3G,UAAU,EAEvG,IAAyB,gBAAdygB,GACT,KAAM,IAAIpwB,OAAM,+HAAwIowB,GAE1J,IAAIE,GAAanxB,OAAO6I,KAAKooB,EAC7B,OAAOC,GAAgBC,EAAWtB,IAAI,SAAUvsB,GAC9C,MAAO2tB,GAAU3tB,KACf,WACF,IAAK,GAAI8tB,GAAQ5gB,UAAU3Q,OAAQwxB,EAASxf,MAAMuf,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IAClFD,EAAOC,GAAS9gB,UAAU8gB,EAG5B,OAAOD,GAAOvoB,OAAO,SAAUyoB,EAAahuB,EAAOgsB,GAEjD,MADAgC,GAAYJ,EAAW5B,IAAUhsB,EAC1BguB,SAzGbtyB,EAAQ0D,cACR1D,EAAQ+vB,eAAiBA,EACzB/vB,EAAQ8wB,sBAAwBA,EAChC9wB,EAAQ+xB,yBAA2BA,CAoFnC,IAAI7Z,GAAiBlY,EAAQkY,eAAiB4Y,EAAsBf,I3B+7E9D,SAAU9vB,EAAQiE,EAAqBrE,GAE7C,cAAa,S4B1hFb,GAUO,QAAS0yB,GAAqBC,GACjC,MAAKA,IAAaA,EAASC,OAGpB1xB,OAAO6I,KAAK4oB,EAASC,QAAQ5oB,OAAO,SAACC,EAAKzF,GAC7C,GAAMquB,GAAQF,EAASC,OAAOpuB,EAI9B,OAHIquB,IAASA,EAAM/V,OACf7S,EAAI2oB,OAAOpuB,IAASsY,KAAM+V,EAAM/V,KAAKgP,QAAQ,uBAAwB,gCAElE7hB,GACR0oB,GARQA,EAZf,2qBAAAtyB,GAAA,2DAuBayyB,EAAgCza,yBACzCqC,IACA,SAACqY,GAAD,OAAgBA,IAIPC,EAAyB,SAAC,GAAD,QAAGC,cAAH,yBAEzBC,EAAmB7a,yBAC5B2a,EACArX,IACA,WAAqBwX,GAAgB,QAAlCC,qBAAkC,MACjC,OAAID,IACQntB,IAAUsH,IAAKtH,IAAUqH,MAG9B+lB,IAKFC,EAAoBhb,yBAC7B2a,EACA,oBAAGM,SAAH,0BAGSC,EAAwBlb,yBACjCgb,EACA,oBAAG7hB,IAAH,OAAqBkhB,YAArB,EAAU,KAAV,KAGSc,EAA4Bnb,yBACrCgb,EACA,oBAAGI,QAAH,0BAGSC,EAA+Brb,yBACxCgb,EACA,oBAAGM,cAAH,8BAAqBC,eAGZC,EAAiCxb,yBAC1Cgb,EACA,sBAAGS,kBAGMC,EAAgC1b,yBACzCgb,EACA,sBAAGW,eAGMC,EAAsC5b,yBAC/Cgb,EACA,oBAAGa,mBAAH,8BAA0BN,eAIjBO,EAAa9b,yBACtB2a,EACA,oBAAGoB,EAAH,0BAGSC,EAAiBhc,yBAC1B8b,EACA,oBAAG3iB,IAAH,OAAqBkhB,YAArB,EAAU,KAAV,KAGS4B,EAAuBjc,yBAChC8b,EACA,oBAAG9Z,QAAH,0BAISka,EAAclc,yBACvB2a,EACA,oBAAGwB,GAAH,0BAGSC,EAAwBpc,yBACjCkc,EACA,qBAAGG,gBAGMC,EAAsBtc,yBAC/Boc,EACA,SAACC,GACG,SAAIA,IAAiBA,EAAc3zB,SACxB2zB,EAAcE,OAAO,SAAAC,GAAA,MAAOA,GAAIC,WAClCC,KAAK,SAAAF,GAGF,MAAI,UAAYA,GACLA,EAAIG,OAIRH,EAAII,SAASF,KAAK,eAAGG,GAAH,EAAGA,aAAH,OAAuBA,IACxCniB,MAAM+c,QAAQoF,IACdA,EAAcnE,IAAI,SAAAoE,GAAA,MAAQA,GAAKC,gBAAeC,SAAS,qBAOtEC,EAA0Bjd,yBACnCkc,EACA,oBAAGgB,OAAH,2BAAcC,KAAd,mBAAsB,KAAtB,IAGSC,EAAsBpd,yBAC/B2a,EACA,oBAAG0C,WAAH,wBAGSC,EAAsBtd,yBAC/Bkc,EACA,oBAAGqB,GAAH,0BAGSC,EAAuBxd,yBAChCkc,EACA,oBAAGuB,YAAH,0BAGSC,EAAiC1d,yBAC1Cgb,EACA,qBAAG2C,yBAGMC,EAA2B,WACpC,GAAIC,SACJ,IAAIC,IACA,IACID,EAAmBz1B,OAAO21B,aAAaC,QAAQ,oBAE3CH,EADAA,EACmBhT,KAAKoT,MAAMJ,UAIpC,MAAOjyB,GACLC,EAAQC,MAAMF,GAGtB,MAAOiyB,IAGEK,EAAkBle,yBAC3Bsd,EACArB,EACA,iBAAGkC,GAAH,EAAGA,QAAaC,EAAhB,EAAgBA,OAAhB,OAA8BD,IAAWC,IAGhCC,EAAqBre,yBAC9B6a,EACA+C,EACA,SAACU,GAAoC,GAA1BT,GAA0B,0DAC7BU,SACEC,EAAgBlzB,YAAIgpB,KACpBmK,EAAgBZ,EAAiBa,KACjCC,EAAWL,EAAS/B,OAAO,SAAAqC,GAAA,MAASA,KAASjxB,IAAUsH,MAAM,EAgBnE,OAfIupB,KACAD,GAAc3wB,IAAWwH,gBAEzBqpB,IACKF,IACDA,MAEJA,EAAW31B,KAAKgF,IAAWoH,OAE3B2pB,IACKJ,IACDA,MAEJA,EAAW31B,KAAKgF,IAAWqH,MAExBspB,IAIFM,EAAyB7e,yBAClCV,IACAC,IACA,cAAqF,QAAlF4c,GAAkF,2BAA3E2C,UAAWC,WAAgE,KAAhChc,EAAgC,EAAhCA,0BAC7C+b,EAAYC,EADiE,EAE1Dhc,MAF0D,IAEzEd,iBAFyE,MAMjF,OAHIA,GAAMlU,IAAM4J,oBACZmnB,EAA8C,SAAlC7c,EAAMlU,IAAM4J,mBAErBmnB,M5B2lFc52B,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,a6BnzFjC;;;;;;;;;;;;;;;;;;;;;;;;CA4BC,SAASuB,GAA2DnB,EAAOD,QAA6M,WAAqC,MAAO,SAAUoB,GAAE81B,EAAEzzB,EAAE0zB,GAAG,QAASlzB,GAAEb,EAAEg0B,GAAG,IAAI3zB,EAAEL,GAAG,CAAC,IAAI8zB,EAAE9zB,GAAG,CAAC,GAAImmB,GAAkB,kBAAT8N,UAAqBA,OAAQ,KAAID,GAAG7N,EAAE,MAAOA,GAAEnmB,KAAM,IAAGlD,EAAE,MAAOA,GAAEkD,KAAM,IAAI4P,GAAE,GAAIpR,OAAM,uBAAuBwB,EAAE,IAAK,MAAM4P,GAAEgZ,KAAK,mBAAmBhZ,EAAE,GAAI7S,GAAEsD,EAAEL,IAAIpD,WAAYk3B,GAAE9zB,GAAG,GAAGhD,KAAKD,EAAEH,QAAQ,SAASoB,GAAoB,MAAO6C,GAAlBizB,EAAE9zB,GAAG,GAAGhC,IAAgBA,IAAIjB,EAAEA,EAAEH,QAAQoB,EAAE81B,EAAEzzB,EAAE0zB,GAAG,MAAO1zB,GAAEL,GAAGpD,QAAkD,IAAI,GAA1CE,GAAkB,kBAATm3B,UAAqBA,QAAgBj0B,EAAE,EAAEA,EAAE+zB,EAAEv2B,OAAOwC,IAAIa,EAAEkzB,EAAE/zB,GAAI,OAAOa,KAAK9C,GAAG,SAASk2B,EAAQp3B,EAAOD,GAC5xB,YACAC,GAAOD,QAAU,SAAS8B,GAE1B,QAASw1B,GAAIC,GACT,GAAIC,GAAM,GAAIC,GAAiBF,GAC3Bv1B,EAAUw1B,EAAIx1B,SAIlB,OAHAw1B,GAAIE,WAAW,GACfF,EAAIG,YACJH,EAAII,OACG51B,EAPX,GAAIy1B,GAAmB31B,EAAQ+1B,iBAU/B/1B,GAAQw1B,IAAM,SAAUC,GACpB,MAAOD,GAAIC,IAGfz1B,EAAQd,UAAUs2B,IAAM,WACpB,MAAOA,GAAI1Y,aAKTkZ,GAAG,SAAST,EAAQp3B,EAAOD,GACjC,YAOA,SAAS+3B,KACLnZ,KAAKoZ,oBACLpZ,KAAKqZ,eACLrZ,KAAKsZ,WAAa,GAAIC,GAAM,IAC5BvZ,KAAKwZ,aAAe,GAAID,GAAM,IAC9BvZ,KAAKyZ,sBACLzZ,KAAK0Z,qBACL,IAAIxY,GAAOlB,IACXA,MAAK2Z,YAAc,WACfzY,EAAK0Y,gBAET5Z,KAAK6Z,UAAYC,EAyDrB,QAASC,GAAiBC,EAAIC,EAAU1P,GACpCvK,KAAKsZ,WAAWp3B,KAAK83B,EAAIC,EAAU1P,GACnCvK,KAAKka,aAGT,QAASC,GAAYH,EAAIC,EAAU1P,GAC/BvK,KAAKwZ,aAAat3B,KAAK83B,EAAIC,EAAU1P,GACrCvK,KAAKka,aAGT,QAASE,GAAoBh3B,GACzB4c,KAAKwZ,aAAaa,SAASj3B,GAC3B4c,KAAKka,aAtFT,GAAII,EACJ,KAAK,KAAM,IAAIt3B,OAAW,MAAOR,GAAI83B,EAAiB93B,EACtD,GAAIs3B,GAAWrB,EAAQ,cACnBc,EAAQd,EAAQ,WAChBplB,EAAOolB,EAAQ,SAgBnBU,GAAM/2B,UAAUm4B,aAAe,SAASP,GACpC,GAAIQ,GAAOxa,KAAK6Z,SAGhB,OAFA7Z,MAAK6Z,UAAYG,EACjBha,KAAKoZ,oBACEoB,GAGXrB,EAAM/2B,UAAUq4B,mBAAqB,WACjC,MAAOza,MAAKoZ,kBAGhBD,EAAM/2B,UAAUs4B,iBAAmB,WAC/B1a,KAAK0Z,uBAGTP,EAAM/2B,UAAUu4B,6BAA+B,WACvCtnB,EAAKunB,cACL5a,KAAK0Z,wBAIbP,EAAM/2B,UAAUy4B,gBAAkB,WAC9B,MAAO7a,MAAKqZ,aAAerZ,KAAKyZ,oBAIpCN,EAAM/2B,UAAU04B,WAAa,SAASt4B,EAAGu4B,GACjCA,GACAC,EAAQC,OAAOC,MAAM,UAAY14B,YAAaQ,OAAQR,EAAE+Q,MAAQ/Q,GAC5D,MACJw4B,EAAQG,KAAK,IAEbnb,KAAKob,WAAW54B,IAIxB22B,EAAM/2B,UAAUg5B,WAAa,SAASpB,EAAIzP,GAKtC,GAJyB,IAArB5X,UAAU3Q,SACVuoB,EAAMyP,EACNA,EAAK,WAAc,KAAMzP,KAEH,mBAAftmB,YACPA,WAAW,WACP+1B,EAAGzP,IACJ,OACA,KACHvK,KAAK6Z,UAAU,WACXG,EAAGzP,KAET,MAAO/nB,GACL,KAAM,IAAIQ,OAAM,oEAmBnBqQ,EAAKunB,aAKNzB,EAAM/2B,UAAUi5B,YAAc,SAAUrB,EAAIC,EAAU1P,GAC9CvK,KAAK0Z,mBACLK,EAAiBv4B,KAAKwe,KAAMga,EAAIC,EAAU1P,GAE1CvK,KAAK6Z,UAAU,WACX51B,WAAW,WACP+1B,EAAGx4B,KAAKy4B,EAAU1P,IACnB,QAKf4O,EAAM/2B,UAAUk5B,OAAS,SAAUtB,EAAIC,EAAU1P,GACzCvK,KAAK0Z,mBACLS,EAAY34B,KAAKwe,KAAMga,EAAIC,EAAU1P,GAErCvK,KAAK6Z,UAAU,WACXG,EAAGx4B,KAAKy4B,EAAU1P,MAK9B4O,EAAM/2B,UAAUm5B,eAAiB,SAASn4B,GAClC4c,KAAK0Z,mBACLU,EAAoB54B,KAAKwe,KAAM5c,GAE/B4c,KAAK6Z,UAAU,WACXz2B,EAAQo4B,uBA/BpBrC,EAAM/2B,UAAUi5B,YAActB,EAC9BZ,EAAM/2B,UAAUk5B,OAASnB,EACzBhB,EAAM/2B,UAAUm5B,eAAiBnB,GAmCrCjB,EAAM/2B,UAAUq5B,YAAc,SAASC,GACnC,KAAOA,EAAM15B,SAAW,GAAG,CACvB,GAAIg4B,GAAK0B,EAAMp5B,OACf,IAAkB,kBAAP03B,GAAX,CAIA,GAAIC,GAAWyB,EAAMp5B,QACjBioB,EAAMmR,EAAMp5B,OAChB03B,GAAGx4B,KAAKy4B,EAAU1P,OALdyP,GAAGwB,oBASfrC,EAAM/2B,UAAUw3B,aAAe,WAC3B5Z,KAAKyb,YAAYzb,KAAKwZ,cACtBxZ,KAAK2b,SACL3b,KAAKyZ,sBACLzZ,KAAKyb,YAAYzb,KAAKsZ,aAG1BH,EAAM/2B,UAAU83B,WAAa,WACpBla,KAAKqZ,cACNrZ,KAAKqZ,eACLrZ,KAAK6Z,UAAU7Z,KAAK2Z,eAI5BR,EAAM/2B,UAAUu5B,OAAS,WACrB3b,KAAKqZ,gBAGTh4B,EAAOD,QAAU+3B,EACjB93B,EAAOD,QAAQk5B,eAAiBA,IAE7B,UAAU,GAAG,aAAa,GAAG,SAAS,KAAKsB,GAAG,SAASnD,EAAQp3B,EAAOD,GACzE,YACAC,GAAOD,QAAU,SAAS8B,EAAS24B,EAAUC,EAAqBC,GAClE,GAAIC,MACAC,EAAa,SAASC,EAAG15B,GACzBwd,KAAKmc,QAAQ35B,IAGb45B,EAAiB,SAAS55B,EAAGsd,GAC7BA,EAAQuc,0BACRvc,EAAQwc,eAAeC,MAAMN,EAAYA,EAAY,KAAMjc,KAAMxd,IAGjEg6B,EAAkB,SAASC,EAAS3c,GACC,IAAd,SAAjBE,KAAK0c,YACP1c,KAAK2c,iBAAiB7c,EAAQwB,SAIlCsb,EAAkB,SAASp6B,EAAGsd,GACzBA,EAAQuc,wBAAwBrc,KAAKmc,QAAQ35B,GAGtDU,GAAQd,UAAU0iB,KAAO,SAAU2X,GAC1BT,IACDA,KACA94B,EAAQd,UAAUy6B,eAAiBd,EAAMe,wBACzC55B,EAAQd,UAAU26B,YAAchB,EAAMiB,qBAE1C,IAAIC,GAAenB,EAAoBW,GACnC7D,EAAM,GAAI11B,GAAQ24B,EACtBjD,GAAIiE,eAAe7c,KAAM,EACzB,IAAIsB,GAAStB,KAAKkd,SAElB,IADAtE,EAAIuE,YAAYF,GACZA,YAAwB/5B,GAAS,CACjC,GAAI4c,IACAuc,wBAAuBA,EACvBj5B,QAASw1B,EACTtX,OAAQA,EACRgb,eAAgBW,EAEpB3b,GAAOib,MAAMV,EAAUO,SAA2BxD,EAAK9Y,GACvDmd,EAAaV,MACTC,EAAiBI,SAA4BhE,EAAK9Y,GACtD8Y,EAAIwE,aAAaH,OAEjBrE,GAAI+D,iBAAiBrb,EAEzB,OAAOsX,IAGX11B,EAAQd,UAAU+6B,YAAc,SAAU33B,YAClCA,GACAwa,KAAK0c,UAA6B,QAAjB1c,KAAK0c,UACtB1c,KAAKqd,SAAW73B,GAEhBwa,KAAK0c,WAA6B,QAAjB1c,KAAK0c,WAI9Bx5B,EAAQd,UAAUk7B,SAAW,WACzB,MAAsC,WAAb,QAAjBtd,KAAK0c,YAGjBx5B,EAAQ4hB,KAAO,SAAU2X,EAAS/2B,GAC9B,MAAOxC,GAAQC,QAAQuC,GAAOof,KAAK2X,UAIjCc,GAAG,SAAS9E,EAAQp3B,EAAOD,GACjC,YAGA,SAASo8B,KACL,IAAUt6B,UAAYu6B,IAAUv6B,QAAUw6B,GAC1C,MAAOl7B,IACP,MAAOi7B,GALX,GAAIC,EACmB,oBAAZx6B,WAAyBw6B,EAAMx6B,QAM1C,IAAIu6B,GAAWhF,EAAQ,cACvBgF,GAASD,WAAaA,EACtBn8B,EAAOD,QAAUq8B,IAEd,YAAY,KAAKE,GAAG,SAASlF,EAAQp3B,EAAOD,GAC/C,YACA,IAAIw8B,GAAKz7B,OAAOid,MAChB,IAAIwe,EAAI,CACJ,GAAIC,GAAcD,EAAG,MACjBE,EAAcF,EAAG,KACrBC,GAAY,SAAWC,EAAY,SAAW,EAGlDz8B,EAAOD,QAAU,SAAS8B,GA4D1B,QAAS66B,GAAav4B,EAAK8d,GACvB,GAAI0W,EAEJ,IADW,MAAPx0B,IAAaw0B,EAAKx0B,EAAI8d,IACR,kBAAP0W,GAAmB,CAC1B,GAAI5mB,GAAU,UAAYC,EAAK2qB,YAAYx4B,GAAO,mBAC9C6N,EAAK4qB,SAAS3a,GAAc,GAChC,MAAM,IAAIpgB,GAAQg7B,UAAU9qB,GAEhC,MAAO4mB,GAGX,QAASmE,GAAO34B,GAGZ,MADSu4B,GAAav4B,EADLwa,KAAK2S,OAEZjgB,MAAMlN,EAAKwa,MAiBzB,QAASoe,GAAY54B,GACjB,MAAOA,GAAIwa,MAEf,QAASqe,GAAc74B,GACnB,GAAIksB,IAAS1R,IAEb,OADI0R,GAAQ,IAAGA,EAAQ4M,KAAKC,IAAI,EAAG7M,EAAQlsB,EAAIxD,SACxCwD,EAAIksB,GAhGf,GAKI8M,GALAnrB,EAAOolB,EAAQ,UACfgG,EAAcprB,EAAKorB,WACJprB,GAAKqrB,aAyExBx7B,EAAQd,UAAUZ,KAAO,SAAU8hB,GAC/B,GAAIuJ,MAAUhZ,MAAMrS,KAAKmR,UAAW,EAWpC,OADAka,GAAK3qB,KAAKohB,GACHtD,KAAKuc,MAAM4B,aAAQQ,GAAsB9R,WAWpD3pB,EAAQd,UAAUwC,IAAM,SAAUg6B,GAC9B,GACIr6B,EACJ,IAFuC,gBAAjBq6B,GAUlBr6B,EAAS85B,MAPT,IAAII,EAAa,CACb,GAAII,GAAcL,EAAUI,EAC5Br6B,GAAyB,OAAhBs6B,EAAuBA,EAAcT,MAE9C75B,GAAS65B,CAKjB,OAAOpe,MAAKuc,MAAMh4B,aAAQo6B,GAAsBC,cAIjD,SAAS,KAAKE,GAAG,SAASrG,EAAQp3B,EAAOD,GAC5C,YACAC,GAAOD,QAAU,SAAS8B,EAAS67B,EAAcC,EAAcjD,GAC/D,GAAI1oB,GAAOolB,EAAQ,UACfwG,EAAW5rB,EAAK4rB,SAChBC,EAAW7rB,EAAK6rB,SAChBt7B,EAAQV,EAAQi8B,MAEpBj8B,GAAQd,UAAiB,MAAIc,EAAQd,UAAUg9B,OAAS,WACpD,IAAKrD,EAAMsD,eAAgB,MAAOrf,MAAKsf,MAAM,2BAI7C,KAFA,GAAIl8B,GAAU4c,KACVuf,EAAQn8B,EACLA,EAAQo8B,kBAAkB,CAC7B,IAAKp8B,EAAQq8B,UAAUF,GAAQ,CACvBA,EAAMG,eACNH,EAAMI,YAAYP,SAElBG,EAAMK,iBAEV,OAGJ,GAAIC,GAASz8B,EAAQ08B,mBACrB,IAAc,MAAVD,IAAmBA,EAAOL,iBAAkB,CACxCp8B,EAAQs8B,eACRt8B,EAAQu8B,YAAYP,SAEpBh8B,EAAQw8B,iBAEZ,OAEIx8B,EAAQs8B,gBAAgBt8B,EAAQu8B,YAAYP,SAChDh8B,EAAQ28B,sBACRR,EAAQn8B,EACRA,EAAUy8B,IAKtB38B,EAAQd,UAAU49B,oBAAsB,WACpChgB,KAAKigB,8BAGT/8B,EAAQd,UAAU89B,6BAA+B,WAC7C,WAAO,KAAAlgB,KAAKigB,4BACLjgB,KAAKigB,4BAA8B,GAG9C/8B,EAAQd,UAAUq9B,UAAY,SAASU,GACnC,MAAIA,KAAcngB,MACdA,KAAKigB,2BAA6B,EAClCjgB,KAAKogB,uBAGLpgB,KAAKggB,wBACDhgB,KAAKkgB,iCACLlgB,KAAKogB,wBAOjBl9B,EAAQd,UAAUw9B,gBAAkB,WAC5B5f,KAAKkgB,gCACLlgB,KAAKqgB,WAIbn9B,EAAQd,UAAUi+B,QAAU,WACnBrgB,KAAKwf,mBACVxf,KAAKsgB,gBACL18B,EAAM03B,OAAOtb,KAAKugB,gBAAiBvgB,SAAKA,MAG5C9c,EAAQd,UAAUm+B,gBAAkB,WAC5BvgB,KAAKwgB,UAAY,GAAGxgB,KAAKwb,mBAGjCt4B,EAAQd,UAAUq+B,eAAiB,WAC/BzgB,KAAK0gB,uBAGTx9B,EAAQd,UAAUo9B,eAAiB,WAC/B,MAAOxf,MAAK2gB,cAAgB3gB,KAAK4gB,gBAGrC19B,EAAQd,UAAUy+B,cAAgB,WAC9B,MAAO7gB,MAAK2gB,cAAgB3gB,KAAK8gB,eAGrC59B,EAAQd,UAAU2+B,kBAAoB,SAASC,EAAkBC,GAC7D,GAAI5tB,EAAK0d,QAAQiQ,GACb,IAAK,GAAI1/B,GAAI,EAAGA,EAAI0/B,EAAiBh/B,SAAUV,EAC3C0e,KAAK+gB,kBAAkBC,EAAiB1/B,GAAI2/B,OAE7C,aAAID,EACP,GAAgC,kBAArBA,IACP,IAAKC,EAAc,CACf,GAAIz+B,GAAIy8B,EAAS+B,GAAkBx/B,KAAKwe,KAAK+c,cACzCv6B,KAAM08B,IACNlf,KAAKkhB,kBAAkB1+B,EAAEA,GACzBoB,EAAMw3B,WAAW54B,EAAEA,SAI3Bw+B,GAAiBG,iBAAiBnhB,OAK9C9c,EAAQd,UAAUg+B,gBAAkB,WAChC,GAAIY,GAAmBhhB,KAAKohB,WAC5BphB,MAAKygB,iBACL78B,EAAM03B,OAAOtb,KAAK+gB,kBAAmB/gB,KAAMghB,IAG/C99B,EAAQd,UAAUi/B,wBAA0B,WACpCrhB,KAAKwf,mBACLxf,KAAK+gB,kBAAkB/gB,KAAKohB,aAAYA,GACxCphB,KAAKygB,mBAIbv9B,EAAQd,UAAU++B,iBAAmB,WACjCnhB,KAAKof,aAKN,SAAS,KAAKkC,GAAG,SAAS7I,EAAQp3B,EAAOD,GAC5C,YACAC,GAAOD,QAAU,SAASmgC,GAM1B,QAASC,GAAYC,EAAWC,EAAIt+B,GAChC,MAAO,UAASZ,GACZ,GAAIm/B,GAAUv+B,EAAQ25B,aACtB6E,GAAe,IAAK,GAAItgC,GAAI,EAAGA,EAAImgC,EAAUz/B,SAAUV,EAAG,CACtD,GAAI80B,GAAOqL,EAAUngC,EAErB,IAAI80B,IAASpzB,OACA,MAARozB,GAAgBA,EAAKh0B,oBAAqBY,QAC3C,GAAIR,YAAa4zB,GACb,MAAO6I,GAASyC,GAAIlgC,KAAKmgC,EAASn/B,OAEnC,IAAoB,kBAAT4zB,GAAqB,CACnC,GAAIyL,GAAmB5C,EAAS7I,GAAM50B,KAAKmgC,EAASn/B,EACpD,IAAIq/B,IAAqB3C,EACrB,MAAO2C,EACJ,IAAIA,EACP,MAAO5C,GAASyC,GAAIlgC,KAAKmgC,EAASn/B,OAEnC,IAAI6Q,EAAKyuB,SAASt/B,GAAI,CAEzB,IAAK,GADDwI,GAAO+2B,EAAQ3L,GACV4L,EAAI,EAAGA,EAAIh3B,EAAKhJ,SAAUggC,EAAG,CAClC,GAAIv8B,GAAMuF,EAAKg3B,EACf,IAAI5L,EAAK3wB,IAAQjD,EAAEiD,GACf,QAASm8B,GAGjB,MAAO3C,GAASyC,GAAIlgC,KAAKmgC,EAASn/B,IAG1C,MAAO++B,IAlCf,GAAIluB,GAAOolB,EAAQ,UACfsJ,EAAUtJ,EAAQ,SAASztB,KAC3Bi0B,EAAW5rB,EAAK4rB,SAChBC,EAAW7rB,EAAK6rB,QAmCpB,OAAOsC,MAGJ,QAAQ,GAAG,SAAS,KAAKS,GAAG,SAASxJ,EAAQp3B,EAAOD,GACvD,YACAC,GAAOD,QAAU,SAAS8B,GAS1B,QAASg/B,KACLliB,KAAKmiB,OAAS,GAAID,GAAQE,cAAcC,KAmB5C,QAASC,KACL,GAAIC,EAAiB,MAAO,IAAIL,GAGpC,QAASG,KACL,GAAIG,GAAYC,EAAazgC,OAAS,CACtC,IAAIwgC,GAAa,EACb,MAAOC,GAAaD,GAnC5B,GAAID,MACAE,IAgEJ,OA9DAv/B,GAAQd,UAAUsgC,gBAAkB,aACpCx/B,EAAQd,UAAUugC,aAAe,aACjCz/B,EAAQd,UAAUwgC,YAAc,WAAY,MAAO,OACnD1/B,EAAQ2/B,aAAe3/B,EAAQd,UAAUygC,aAAe,aAKxDX,EAAQ9/B,UAAUugC,aAAe,oBACzB3iB,KAAKmiB,SACLniB,KAAKmiB,OAAOO,gBAAkB,KAC9BD,EAAavgC,KAAK8d,KAAKmiB,UAI/BD,EAAQ9/B,UAAUwgC,YAAc,WAC5B,YAAI5iB,KAAKmiB,OAAsB,CAC3B,GAAIhvB,GAAQsvB,EAAa9P,MACrBiG,EAAMzlB,EAAMuvB,eAEhB,OADAvvB,GAAMuvB,gBAAkB,KACjB9J,EAEX,MAAO,OAcXsJ,EAAQE,cAAgB,KACxBF,EAAQ9iB,OAASkjB,EACjBJ,EAAQY,0BAA4B,aACpCZ,EAAQa,wBAA0B,WAC9B,GAAIC,GAAsB9/B,EAAQd,UAAUugC,aACxCM,EAAqB//B,EAAQd,UAAUwgC,YACvCM,EAAsBhgC,EAAQ2/B,aAC9BM,EAAsBjgC,EAAQd,UAAUygC,aACxCO,EAAyBlgC,EAAQd,UAAUsgC,eAC/CR,GAAQY,0BAA4B,WAChC5/B,EAAQd,UAAUugC,aAAeK,EACjC9/B,EAAQd,UAAUwgC,YAAcK,EAChC//B,EAAQ2/B,aAAeK,EACvBhgC,EAAQd,UAAUygC,aAAeM,EACjCjgC,EAAQd,UAAUsgC,gBAAkBU,EACpCb,MAEJA,KACAr/B,EAAQd,UAAUugC,aAAeT,EAAQ9/B,UAAUugC,aACnDz/B,EAAQd,UAAUwgC,YAAcV,EAAQ9/B,UAAUwgC,YAClD1/B,EAAQ2/B,aAAe3/B,EAAQd,UAAUygC,aAAeR,EACxDn/B,EAAQd,UAAUsgC,gBAAkB,WAChC,GAAIW,GAAMrjB,KAAK6iB,cACXQ,IAA8B,MAAvBA,EAAIX,kBAAyBW,EAAIX,gBAAkB1iB,QAG/DkiB,QAGDoB,GAAG,SAAS7K,EAAQp3B,EAAOD,GACjC,YACAC,GAAOD,QAAU,SAAS8B,EAASg/B,GA0MnC,QAASqB,GAAoCj/B,EAAMlB,GAC/C,OAAQA,QAASA,GA0FrB,QAASogC,KAAqB,OAAM,EAuBpC,QAASC,GAAoBC,EAAUvgC,EAASE,GAC5C,GAAID,GAAU4c,IACd,KACI0jB,EAASvgC,EAASE,EAAQ,SAASsgC,GAC/B,GAAwB,kBAAbA,GACP,KAAM,IAAIzF,WAAU,qCACA7qB,EAAK4qB,SAAS0F,GAEtCvgC,GAAQwgC,4BAA4BD,KAE1C,MAAOnhC,GACL,MAAOA,IAIf,QAASqhC,GAAuCF,GAC5C,IAAK3jB,KAAKwf,iBAAkB,MAAOxf,KAEnC,IAAI8jB,GAAmB9jB,KAAKohB,gBAAYA,KACpC0C,EACIzwB,EAAK0d,QAAQ+S,GACbA,EAAiB5hC,KAAKyhC,GAEtB3jB,KAAKod,cAAc0G,EAAkBH,IAGzC3jB,KAAKod,aAAauG,GAI1B,QAASI,KACL,MAAO/jB,MAAK0gB,eAGhB,QAASsD,GAAwBL,GAC7B3jB,KAAK0gB,eAAiBiD,EAG1B,QAASM,KACLjkB,KAAK8f,2BACL9f,KAAK0gB,sBAGT,QAASwD,GAA0BrE,EAAQsE,GACvC,GAAoB,IAAP,EAARA,GAAkB,CACnBnkB,KAAK8f,oBAAsBD,CAC3B,IAAIuE,GAA4BvE,EAAOI,+BAA2BA,KAC9DmE,IACAA,EAA4B,GAEhCvE,EAAOI,2BAA6BmE,EAA4B,EAEhD,IAAP,EAARD,IAAoBtE,EAAOvC,YAC5Btd,KAAKmd,YAAY0C,EAAOxC,UAIhC,QAASgH,GAAqBxE,EAAQsE,GACd,IAAP,EAARA,IAAoBtE,EAAOvC,YAC5Btd,KAAKmd,YAAY0C,EAAOxC,UAKhC,QAASL,KACL,GAAIpE,GAAM5Y,KAAKqd,QACf,iBAAIzE,GACIA,YAAe11B,GACX01B,EAAI0L,cACG1L,EAAIlzB,eAMhBkzB,EAGX,QAAS2L,KACLvkB,KAAKmiB,OAAS,GAAIC,GAAcpiB,KAAK6iB,gBAGzC,QAAS2B,GAAgCp/B,EAAOq/B,GAC5C,GAAIC,EAAet/B,GAAQ,CACvB,GAAI+N,GAAQ6M,KAAKmiB,MAIjB,aAHIhvB,GACIsxB,IAAYtxB,EAAQA,EAAMwxB,kBAE9BxxB,EACAA,EAAMyxB,iBAAiBx/B,OACpB,KAAKA,EAAMy/B,iBAAkB,CAChC,GAAIC,GAASC,EAAqB3/B,EAClCiO,GAAK2xB,kBAAkB5/B,EAAO,QAC1B0/B,EAAO1xB,QAAU,KAAO0xB,EAAOvxB,MAAM0e,KAAK,OAC9C5e,EAAK2xB,kBAAkB5/B,EAAO,oBAAmB,KAK7D,QAAS6/B,GAAsBC,EAAaC,EAAgB7gC,EAAMlB,EACnCy8B,GAC3B,YAAIqF,GAAgD,OAAnBC,GAC7BC,EAAkB,CAClB,YAAIvF,GAAwBA,EAAOwF,wBAAyB,MAC5D,IAAoC,IAAX,MAApBjiC,EAAQs5B,WAA0B,MAEnCp4B,KAAMA,GAAc,IACxB,IAAIghC,GAAc,GACdC,EAAc,EAClB,IAAIJ,EAAehD,OAAQ,CAGvB,IAAK,GAFDqD,GAAaL,EAAehD,OAAO5uB,MAAMmK,MAAM,MAC/CnK,EAAQkyB,EAAWD,GACdlkC,EAAIiS,EAAMvR,OAAS,EAAGV,GAAK,IAAKA,EAAG,CACxC,GAAIokC,GAAOnyB,EAAMjS,EACjB,KAAKqkC,EAAiBC,KAAKF,GAAO,CAC9B,GAAIG,GAAcH,EAAKpb,MAAMwb,EACzBD,KACAP,EAAe,MAAQO,EAAY,GAC/B,IAAMA,EAAY,GAAK,IAAMA,EAAY,GAAK,IAEtD,QAIR,GAAItyB,EAAMvR,OAAS,EAEf,IAAK,GADD+jC,GAAgBxyB,EAAM,GACjBjS,EAAI,EAAGA,EAAIkkC,EAAWxjC,SAAUV,EAErC,GAAIkkC,EAAWlkC,KAAOykC,EAAe,CAC7BzkC,EAAI,IACJikC,EAAc,KAAOC,EAAWlkC,EAAI,GAExC,QAMhB,GAAI0kC,GAAM,8BAAgC1hC,EACtC,WAAaghC,EAAc,yDAE3BC,CACJniC,GAAQk8B,MAAM0G,KAAWb,IAIjC,QAASc,GAAW3hC,EAAM4hC,GACtB,GAAI9yB,GAAU9O,EACV,yDAEJ,OADI4hC,KAAa9yB,GAAW,QAAU8yB,EAAc,aAC7CtzB,EAAKQ,GAGhB,QAASR,GAAKQ,EAAS+yB,EAAmB/iC,GACtC,GAAK2V,GAAOqtB,SAAZ,CACA,GACI/C,GADAnW,EAAU,GAAImZ,GAAQjzB,EAE1B,IAAI+yB,EACA/iC,EAAQ89B,kBAAkBhU,OACvB,IAAInU,GAAOwpB,kBAAoBc,EAAMngC,EAAQ2/B,gBAChDQ,EAAIuB,iBAAiB1X,OAClB,CACH,GAAI4X,GAASC,EAAqB7X,EAClCA,GAAQ3Z,MAAQuxB,EAAO1xB,QAAU,KAAO0xB,EAAOvxB,MAAM0e,KAAK,MAGzDqU,GAAgB,UAAWpZ,IAC5BqZ,EAAkBrZ,EAAS,IAAG,IAItC,QAASsZ,GAAiBpzB,EAASqzB,GAC/B,IAAK,GAAInlC,GAAI,EAAGA,EAAImlC,EAAOzkC,OAAS,IAAKV,EACrCmlC,EAAOnlC,GAAGY,KAAK,wBACfukC,EAAOnlC,GAAKmlC,EAAOnlC,GAAG2wB,KAAK,KAK/B,OAHI3wB,GAAImlC,EAAOzkC,SACXykC,EAAOnlC,GAAKmlC,EAAOnlC,GAAG2wB,KAAK,OAExB7e,EAAU,KAAOqzB,EAAOxU,KAAK,MAGxC,QAASyU,GAA4BD,GACjC,IAAK,GAAInlC,GAAI,EAAGA,EAAImlC,EAAOzkC,SAAUV,GACR,IAArBmlC,EAAOnlC,GAAGU,QACRV,EAAI,EAAImlC,EAAOzkC,QAAWykC,EAAOnlC,GAAG,KAAOmlC,EAAOnlC,EAAE,GAAG,MACzDmlC,EAAOpkB,OAAO/gB,EAAG,GACjBA,KAKZ,QAASqlC,GAAkBF,GAEvB,IAAK,GADD7kB,GAAU6kB,EAAO,GACZnlC,EAAI,EAAGA,EAAImlC,EAAOzkC,SAAUV,EAAG,CAMpC,IAAK,GALDk5B,GAAOiM,EAAOnlC,GACdslC,EAAmBhlB,EAAQ5f,OAAS,EACpC6kC,EAAkBjlB,EAAQglB,GAC1BE,GAAuB,EAElB9E,EAAIxH,EAAKx4B,OAAS,EAAGggC,GAAK,IAAKA,EACpC,GAAIxH,EAAKwH,KAAO6E,EAAiB,CAC7BC,EAAsB9E,CACtB,OAIR,IAAK,GAAIA,GAAI8E,EAAqB9E,GAAK,IAAKA,EAAG,CAC3C,GAAI0D,GAAOlL,EAAKwH,EAChB,IAAIpgB,EAAQglB,KAAsBlB,EAI9B,KAHA9jB,GAAQ+Q,MACRiU,IAKRhlB,EAAU4Y,GAIlB,QAASiL,GAAWlyB,GAEhB,IAAK,GADDqlB,MACKt3B,EAAI,EAAGA,EAAIiS,EAAMvR,SAAUV,EAAG,CACnC,GAAIokC,GAAOnyB,EAAMjS,GACbylC,EAAc,yBAA2BrB,GACzCsB,EAAkBpB,KAAKF,GACvBuB,EAAkBF,GAAeG,GAAaxB,EAC9CqB,KAAgBE,IACZE,GAAwC,MAAnBzB,EAAK0B,OAAO,KACjC1B,EAAO,OAASA,GAEpB9M,EAAI12B,KAAKwjC,IAGjB,MAAO9M,GAGX,QAASyO,GAAmBjiC,GAExB,IAAK,GADDmO,GAAQnO,EAAMmO,MAAMwZ,QAAQ,QAAS,IAAIrP,MAAM,MAC1Cpc,EAAI,EAAGA,EAAIiS,EAAMvR,SAAUV,EAAG,CACnC,GAAIokC,GAAOnyB,EAAMjS,EACjB,IAAI,yBAA2BokC,GAAQsB,EAAkBpB,KAAKF,GAC1D,MAMR,MAHIpkC,GAAI,GAAmB,eAAd8D,EAAMd,OACfiP,EAAQA,EAAMM,MAAMvS,IAEjBiS,EAGX,QAASwxB,GAAqB3/B,GAC1B,GAAImO,GAAQnO,EAAMmO,MACdH,EAAUhO,EAAM64B,UAGpB,OAFA1qB,GAAyB,gBAAVA,IAAsBA,EAAMvR,OAAS,EACtCqlC,EAAmBjiC,IAAU,yBAEvCgO,QAASA,EACTG,MAAqB,eAAdnO,EAAMd,KAAwBiP,EAAQkyB,EAAWlyB,IAIhE,QAASgzB,GAAkBnhC,EAAOkiC,EAAOC,GACrC,YAAWpiC,EAAyB,CAChC,GAAIiO,EACJ,IAAIC,EAAKyuB,SAAS18B,GAAQ,CACtB,GAAImO,GAAQnO,EAAMmO,KAClBH,GAAUk0B,EAAQE,EAAYj0B,EAAOnO,OAErCgO,GAAUk0B,EAAQG,OAAOriC,EAED,mBAAjBsiC,GACPA,EAAat0B,EAASm0B,GACQ,kBAAhBpiC,GAAQqN,KACC,gBAAhBrN,GAAQqN,KACfrN,EAAQqN,IAAIY,IAKxB,QAASu0B,GAAmBrjC,EAAMsjC,EAAcC,EAAQzkC,GACpD,GAAI0kC,KACJ,KACgC,kBAAjBF,KACPE,KACa,qBAATxjC,EACAsjC,EAAaxkC,GAEbwkC,EAAaC,EAAQzkC,IAG/B,MAAOZ,GACLoB,EAAMw3B,WAAW54B,GAGR,uBAAT8B,EACKgiC,GAAgBhiC,EAAMujC,EAAQzkC,IAAa0kC,GAC5CvB,EAAkBsB,EAAQ,wBAG9BvB,GAAgBhiC,EAAMlB,GAI9B,QAAS2kC,GAAeviC,GACpB,GAAIwiC,EACJ,IAAmB,kBAARxiC,GACPwiC,EAAM,cACDxiC,EAAIlB,MAAQ,aACb,QACD,CAIH,GAHA0jC,EAAMxiC,GAA+B,kBAAjBA,GAAIy4B,SAClBz4B,EAAIy4B,WAAa5qB,EAAK4qB,SAASz4B,GACd,4BACFogC,KAAKoC,GACtB,IAEIA,EADa7jB,KAAKC,UAAU5e,GAGhC,MAAMhD,IAIS,IAAfwlC,EAAIhmC,SACJgmC,EAAM,iBAGd,MAAQ,KAAOC,EAAKD,GAAO,qBAG/B,QAASC,GAAKD,GAEV,MAAIA,GAAIhmC,OADO,GAEJgmC,EAEJA,EAAIE,OAAO,EAAGC,IAAgB,MAGzC,QAASC,KACL,MAAoC,kBAAtBC,IAKlB,QAASC,GAAc5C,GACnB,GAAI6C,GAAU7C,EAAKpb,MAAMke,GACzB,IAAID,EACA,OACIE,SAAUF,EAAQ,GAClB7C,KAAMgD,SAASH,EAAQ,GAAI,KAKvC,QAASI,GAAUrO,EAAgBsO,GAC/B,GAAKR,IAAL,CAOA,IAAK,GAFDS,GACAC,EALAC,EAAkBzO,EAAe/mB,MAAMmK,MAAM,MAC7CsrB,EAAiBJ,EAAcr1B,MAAMmK,MAAM,MAC3CurB,GAAc,EACdzG,GAAa,EAGRlhC,EAAI,EAAGA,EAAIynC,EAAgB/mC,SAAUV,EAAG,CAC7C,GAAImpB,GAAS6d,EAAcS,EAAgBznC,GAC3C,IAAImpB,EAAQ,CACRoe,EAAgBpe,EAAOge,SACvBQ,EAAaxe,EAAOib,IACpB,QAGR,IAAK,GAAIpkC,GAAI,EAAGA,EAAI0nC,EAAehnC,SAAUV,EAAG,CAC5C,GAAImpB,GAAS6d,EAAcU,EAAe1nC,GAC1C,IAAImpB,EAAQ,CACRqe,EAAere,EAAOge,SACtBjG,EAAY/X,EAAOib,IACnB,QAGJuD,EAAa,GAAKzG,EAAY,IAAMqG,IAAkBC,GACtDD,IAAkBC,GAAgBG,GAAczG,IAIpD0E,GAAe,SAASxB,GACpB,GAAIwD,EAAqBtD,KAAKF,GAAO,OAAM,CAC3C,IAAIjzB,GAAO61B,EAAc5C,EACzB,UAAIjzB,GACIA,EAAKg2B,WAAaI,GACjBI,GAAcx2B,EAAKizB,MAAQjzB,EAAKizB,MAAQlD,MAQzD,QAASJ,GAAcvC,GACnB7f,KAAK2kB,QAAU9E,EACf7f,KAAKmpB,iBAAmB,CACxB,IAAInnC,GAASge,KAAKwgB,QAAU,YAAKX,EAAuB,EAAIA,EAAOW,QACnE6H,IAAkBroB,KAAMoiB,GACpBpgC,EAAS,IAAIge,KAAKopB,UA5sB1B,GAKIC,GACAC,EAQA5B,EAdA6B,EAAYrmC,EAAQsmC,WACpB5lC,EAAQV,EAAQi8B,OAChBkH,EAAU5N,EAAQ,YAAY4N,QAC9BhzB,EAAOolB,EAAQ,UACfiM,EAAiBrxB,EAAKqxB,eAGtBwE,EACA,2DACAvD,EAAmB,6BACnBG,EAAmB,kCACnBkB,EAAoB,KACpBQ,EAAc,KACdL,KAEAsC,IAA6C,GAA9Bp2B,EAAKq2B,IAAI,mBAKxBtD,IAA+C,GAAjC/yB,EAAKq2B,IAAI,uBACtBD,IAAap2B,EAAKq2B,IAAI,sBAEvBnH,IAA+D,GAA1ClvB,EAAKq2B,IAAI,gCAC7BD,IAAap2B,EAAKq2B,IAAI,+BAEvBtE,EAA8D,GAA3C/xB,EAAKq2B,IAAI,iCAC3BtD,KAAc/yB,EAAKq2B,IAAI,+BAE5BxmC,GAAQd,UAAUunC,4BAA8B,WAC5C,GAAIroB,GAAStB,KAAKkd,SAClB5b,GAAOob,WAAiC,QAAnBpb,EAAOob,UACV,QAGtBx5B,EAAQd,UAAUwnC,gCAAkC,WACd,IAAZ,OAAjB5pB,KAAK0c,aACV1c,KAAK6pB,2BACLjmC,EAAMy3B,YAAYrb,KAAK8pB,0BAA2B9pB,SAAKA,MAG3D9c,EAAQd,UAAU2nC,mCAAqC,WACnDpC,EAAmB,mBACW0B,SAAsCrpB,OAGxE9c,EAAQd,UAAU4nC,yBAA2B,WACzChqB,KAAK0c,UAA6B,UAAjB1c,KAAK0c,WAG1Bx5B,EAAQd,UAAUijC,sBAAwB,WACtC,MAAwC,KAAf,UAAjBrlB,KAAK0c,YAGjBx5B,EAAQd,UAAU0nC,0BAA4B,WAC1C,GAAI9pB,KAAKiqB,wBAAyB,CAC9B,GAAIpC,GAAS7nB,KAAKkqB,eAClBlqB,MAAKmqB,mCACLxC,EAAmB,qBACW2B,EAA4BzB,EAAQ7nB,QAI1E9c,EAAQd,UAAU+nC,iCAAmC,WACjDnqB,KAAK0c,UAA6B,OAAjB1c,KAAK0c,WAG1Bx5B,EAAQd,UAAUgoC,mCAAqC,WACnDpqB,KAAK0c,WAA6B,OAAjB1c,KAAK0c,WAG1Bx5B,EAAQd,UAAUioC,8BAAgC,WAC9C,OAAyB,OAAjBrqB,KAAK0c,WAAsB,GAGvCx5B,EAAQd,UAAUynC,yBAA2B,WACzC7pB,KAAK0c,UAA6B,QAAjB1c,KAAK0c,WAG1Bx5B,EAAQd,UAAUkoC,2BAA6B,WAC3CtqB,KAAK0c,WAA6B,QAAjB1c,KAAK0c,UAClB1c,KAAKqqB,kCACLrqB,KAAKoqB,qCACLpqB,KAAK+pB,uCAIb7mC,EAAQd,UAAU6nC,sBAAwB,WACtC,OAAyB,QAAjBjqB,KAAK0c,WAAuB,GAGxCx5B,EAAQd,UAAUk9B,MAAQ,SAASlsB,EAAS+yB,EAAmB/iC,GAC3D,MAAOwP,GAAKQ,EAAS+yB,EAAmB/iC,GAAW4c,OAGvD9c,EAAQqnC,6BAA+B,SAAUvQ,GAC7C,GAAIwQ,GAASjB,GACbD,GACkB,kBAAPtP,GAAgC,OAAXwQ,EACQxQ,EAAK3mB,EAAKo3B,WAAWD,EAAQxQ,WAIzE92B,EAAQwnC,4BAA8B,SAAU1Q,GAC5C,GAAIwQ,GAASjB,GACbF,GACkB,kBAAPrP,GAAgC,OAAXwQ,EACQxQ,EAAK3mB,EAAKo3B,WAAWD,EAAQxQ,UAIzE,IAAI2Q,GAAyB,YAC7BznC,GAAQq/B,gBAAkB,WACtB,GAAI3+B,EAAMi3B,oBAAsB9hB,GAAOwpB,gBACnC,KAAM,IAAIv/B,OAAM,qGAEpB,KAAK+V,GAAOwpB,iBAAmB6F,IAA8B,CACzD,GAAIwC,GAA4B1nC,EAAQd,UAAUyoC,mBAC9CC,EAA2B5nC,EAAQd,UAAU8+B,iBACjDnoB,IAAOwpB,mBACPoI,EAAyB,WACrB,GAAI/mC,EAAMi3B,oBAAsB9hB,GAAOwpB,gBACnC,KAAM,IAAIv/B,OAAM,qGAEpBE,GAAQd,UAAUyoC,mBAAqBD,EACvC1nC,EAAQd,UAAU8+B,kBAAoB4J,EACtC5I,EAAQY,4BACRl/B,EAAM82B,mBACN3hB,GAAOwpB,oBAEXr/B,EAAQd,UAAUyoC,mBAAqBtG,EACvCrhC,EAAQd,UAAU8+B,kBAAoBsD,EACtCtC,EAAQa,0BACRn/B,EAAM+2B,iCAIdz3B,EAAQ6nC,mBAAqB,WACzB,MAAOhyB,IAAOwpB,iBAAmB6F,IAGrC,IAAI4C,GAAe,WACf,IACI,GAA2B,kBAAhBC,aAA4B,CACnC,GAAIC,GAAQ,GAAID,aAAY,cAE5B,OADA53B,GAAKY,OAAOk3B,cAAcD,GACnB,SAAS5mC,EAAM4mC,GAClB,GAAIE,GAAW,GAAIH,aAAY3mC,EAAK+xB,eAChCgV,OAAQH,EACRI,YAAWA,GAEf,QAAQj4B,EAAKY,OAAOk3B,cAAcC,IAEnC,GAAqB,kBAAVG,OAAsB,CACpC,GAAIL,GAAQ,GAAIK,OAAM,cAEtB,OADAl4B,GAAKY,OAAOk3B,cAAcD,GACnB,SAAS5mC,EAAM4mC,GAClB,GAAIE,GAAW,GAAIG,OAAMjnC,EAAK+xB,eAC1BiV,YAAWA,GAGf,OADAF,GAASC,OAASH,GACV73B,EAAKY,OAAOk3B,cAAcC,IAGtC,GAAIF,GAAQ3nC,SAASioC,YAAY,cAGjC,OAFAN,GAAMO,gBAAgB,mBAAkB,GAAC,MACzCp4B,EAAKY,OAAOk3B,cAAcD,GACnB,SAAS5mC,EAAM4mC,GAClB,GAAIE,GAAW7nC,SAASioC,YAAY,cAGpC,OAFAJ,GAASK,gBAAgBnnC,EAAK+xB,eAAcA,GAAC,EACzC6U,IACI73B,EAAKY,OAAOk3B,cAAcC,IAG5C,MAAO5oC,IACT,MAAO,YACH,OAAM,MAIVkpC,GAAkB,WAClB,MAAIr4B,GAAK0nB,OACE,WACH,MAAOC,GAAQ2Q,KAAKj5B,MAAMsoB,EAASroB,YAGlCU,EAAKY,OAKH,SAAS3P,GACZ,GAAIgf,GAAa,KAAOhf,EAAK+xB,cACzBuV,EAASv4B,EAAKY,OAAOqP,EACzB,SAAKsoB,IACLA,EAAOl5B,MAAMW,EAAKY,UAAWJ,MAAMrS,KAAKmR,UAAW,SAR5C,WACH,OAAM,MAiBlBk5B,IACA1G,eAAgB5B,EAChBuI,iBAAkBvI,EAClBwI,gBAAiBxI,EACjByI,gBAAiBzI,EACjB0I,iBAAkB1I,EAClB2I,eAAgB,SAAS5nC,EAAMlB,EAASm8B,GACpC,OAAQn8B,QAASA,EAASm8B,MAAOA,IAErCrS,QAAS,SAAS5oB,EAAM4oB,GACpB,OAAQA,QAASA,IAErBif,mBAAoB,SAAU7nC,EAAMujC,EAAQzkC,GACxC,OAAQykC,OAAQA,EAAQzkC,QAASA,IAErCgpC,iBAAkB7I,GAGlB+C,GAAkB,SAAUhiC,GAC5B,GAAI+nC,KACJ,KACIA,EAAmBX,GAAgBh5B,MAAM,KAAMC,WACjD,MAAOnQ,GACLoB,EAAMw3B,WAAW54B,GACjB6pC,KAGJ,GAAIC,KACJ,KACIA,EAAgBtB,EAAa1mC,EACjBunC,GAAuBvnC,GAAMoO,MAAM,KAAMC,YACvD,MAAOnQ,GACLoB,EAAMw3B,WAAW54B,GACjB8pC,KAGJ,MAAOA,IAAiBD,EAG5BnpC,GAAQ6V,OAAS,SAASwzB,GAStB,GARAA,EAAOpqC,OAAOoqC,GACV,mBAAqBA,KACjBA,EAAKhK,gBACLr/B,EAAQq/B,mBACAgK,EAAKhK,iBAAmBr/B,EAAQ6nC,sBACxCJ,KAGJ,YAAc4B,GAAM,CACpB,GAAIC,GAAiBD,EAAKnG,QAC1BrtB,IAAOqtB,WAAaoG,EACpBpH,EAAmBrsB,GAAOqtB,SAEtB/yB,EAAKyuB,SAAS0K,IACV,oBAAsBA,KACtBpH,IAAqBoH,EAAepH,kBAIhD,GAAI,gBAAkBmH,IAAQA,EAAKlN,eAAiBtmB,GAAOsmB,aAAc,CACrE,GAAIz7B,EAAMi3B,kBACN,KAAM,IAAI73B,OACN,uDAERE,GAAQd,UAAUqqC,uBACdxI,EACJ/gC,EAAQd,UAAUy6B,eAAiBqH,EACnChhC,EAAQd,UAAUg/B,UAAY2C,EAC9B7gC,EAAQd,UAAUg7B,aAAe4G,EACjC9gC,EAAQd,UAAUwhC,4BACdC,EACJ3gC,EAAQd,UAAUsqC,SAAWjJ,EAC7B3G,GAAwBoH,EACxBnrB,GAAOsmB,gBAWX,MATI,cAAgBkN,KACZA,EAAKI,aAAe5zB,GAAO4zB,YAC3B5zB,GAAO4zB,cACPzpC,EAAQd,UAAUwqC,WAAatG,KACvBiG,EAAKI,YAAc5zB,GAAO4zB,aAClC5zB,GAAO4zB,cACPzpC,EAAQd,UAAUwqC,WAAapJ,IAGhCtgC,GAKXA,EAAQd,UAAUwqC,WAAapJ,EAC/BtgC,EAAQd,UAAUsqC,SAAW,SAAShJ,EAAUvgC,EAASE,GACrD,IACIqgC,EAASvgC,EAASE,GACpB,MAAOb,GACL,MAAOA,KAGfU,EAAQd,UAAUg/B,UAAY,aAC9Bl+B,EAAQd,UAAUg7B,aAAe,SAAUyP,KAC3C3pC,EAAQd,UAAUwhC,4BAA8B,SAASD,KAGzDzgC,EAAQd,UAAUyoC,mBAAqB,aACvC3nC,EAAQd,UAAU8+B,kBAAoB,aACtCh+B,EAAQd,UAAUqqC,uBAAyB,aAC3CvpC,EAAQd,UAAUy6B,eAAiB,SAAUgD,EAAQsE,IAmErD,IAAIrH,IAAwBuH,EAwRxB6C,GAAe,WAAa,OAAM,GAClCsB,GAAqB,uCA4DzBn1B,GAAKy5B,SAAS1K,EAAep/B,OAC7Bk/B,EAAQE,cAAgBA,EAExBA,EAAchgC,UAAUgnC,QAAU,WAC9B,GAAIpnC,GAASge,KAAKwgB,OAClB,MAAIx+B,EAAS,GAAb,CAIA,IAAK,GAHD+qC,MACAC,KAEK1rC,EAAI,EAAG2rC,EAAOjtB,SAAKA,KAACitB,IAAsB3rC,EAC/CyrC,EAAM7qC,KAAK+qC,GACXA,EAAOA,EAAKtI,OAEhB3iC,GAASge,KAAKwgB,QAAUl/B,CACxB,KAAK,GAAIA,GAAIU,EAAS,EAAGV,GAAK,IAAKA,EAAG,CAClC,GAAIiS,GAAQw5B,EAAMzrC,GAAGiS,UAAMA,KACvBy5B,EAAaz5B,KACby5B,EAAaz5B,GAASjS,GAG9B,IAAK,GAAIA,GAAI,EAAGA,EAAIU,IAAUV,EAAG,CAC7B,GAAI4rC,GAAeH,EAAMzrC,GAAGiS,MACxBme,EAAQsb,EAAaE,EACzB,aAAIxb,GAAuBA,IAAUpwB,EAAG,CAChCowB,EAAQ,IACRqb,EAAMrb,EAAQ,GAAGiT,eACjBoI,EAAMrb,EAAQ,GAAG8O,QAAU,GAE/BuM,EAAMzrC,GAAGqjC,eACToI,EAAMzrC,GAAGk/B,QAAU,CACnB,IAAI2M,GAAgB7rC,EAAI,EAAIyrC,EAAMzrC,EAAI,GAAK0e,IAEvC0R,GAAQ1vB,EAAS,GACjBmrC,EAAcxI,QAAUoI,EAAMrb,EAAQ,GACtCyb,EAAcxI,QAAQyE,UACtB+D,EAAc3M,QACV2M,EAAcxI,QAAQnE,QAAU,IAEpC2M,EAAcxI,eACdwI,EAAc3M,QAAU,EAG5B,KAAK,GADD4M,GAAqBD,EAAc3M,QAAU,EACxCwB,EAAI1gC,EAAI,EAAG0gC,GAAK,IAAKA,EAC1B+K,EAAM/K,GAAGxB,QAAU4M,EACnBA,GAEJ,YAKZhL,EAAchgC,UAAUwiC,iBAAmB,SAASx/B,GAChD,IAAIA,EAAMy/B,iBAAV,CACA7kB,KAAKopB,SAML,KALA,GAAItE,GAASC,EAAqB3/B,GAC9BgO,EAAU0xB,EAAO1xB,QACjBqzB,GAAU3B,EAAOvxB,OAEjBJ,EAAQ6M,SAAKA,KACV7M,GACHszB,EAAOvkC,KAAKujC,EAAWtyB,EAAMI,MAAMmK,MAAM,QACzCvK,EAAQA,EAAMwxB,OAElBgC,GAAkBF,GAClBC,EAA4BD,GAC5BpzB,EAAK2xB,kBAAkB5/B,EAAO,QAASohC,EAAiBpzB,EAASqzB,IACjEpzB,EAAK2xB,kBAAkB5/B,EAAO,oBAAmB,IAGrD,IAAIijC,IAAoB,WACpB,GAAIgF,GAAsB,YACtBC,EAAmB,SAAS/5B,EAAOnO,GACnC,MAAqB,gBAAVmO,GAA2BA,WAElCnO,EAAMd,eACNc,EAAMgO,QACChO,EAAM64B,WAEV8J,EAAe3iC,GAG1B,IAAqC,gBAA1BpC,OAAMuqC,iBACsB,kBAA5BvqC,OAAMqlC,kBAAkC,CAC/CrlC,MAAMuqC,iBAAmB,EACzBvG,EAAoBqG,EACpB7F,EAAc8F,CACd,IAAIjF,GAAoBrlC,MAAMqlC,iBAK9B,OAHAnB,IAAe,SAASxB,GACpB,MAAOwD,GAAqBtD,KAAKF,IAE9B,SAASzL,EAAUuT,GACtBxqC,MAAMuqC,iBAAmB,EACzBlF,EAAkBpO,EAAUuT,GAC5BxqC,MAAMuqC,iBAAmB,GAGjC,GAAIroC,GAAM,GAAIlC,MAEd,IAAyB,gBAAdkC,GAAIqO,OACXrO,EAAIqO,MAAMmK,MAAM,MAAM,GAAGhC,QAAQ,oBAAsB,EAIvD,MAHAsrB,GAAoB,IACpBQ,EAAc8F,EACdnG,KACO,SAA2B3iC,GAC9BA,EAAE+O,UAAYvQ,QAAQuQ,MAI9B,IAAIk6B,EACJ,KAAM,KAAM,IAAIzqC,OAChB,MAAMR,GACFirC,EAAsB,SAAWjrC,GAErC,MAAM,SAAW0C,KAAQuoC,GACY,gBAA1BzqC,OAAMuqC,iBAWjB/F,EAAc,SAASj0B,EAAOnO,GAC1B,MAAqB,gBAAVmO,GAA2BA,EAEhB,gBAAVnO,IACS,kBAAVA,aACPA,EAAMd,eACNc,EAAMgO,QAGH20B,EAAe3iC,GAFXA,EAAM64B,YAKd,OAtBH+I,EAAoBqG,EACpB7F,EAAc8F,EACP,SAA2B9oC,GAC9BxB,MAAMuqC,iBAAmB,CACzB,KAAM,KAAM,IAAIvqC,OAChB,MAAMR,GAAKgC,EAAE+O,MAAQ/Q,EAAE+Q,MACvBvQ,MAAMuqC,iBAAmB,gBAoB1BpoC,YAAkCA,EAAQyN,OACjD80B,EAAe,SAAUt0B,GACrBjO,EAAQyN,KAAKQ,IAEbC,EAAK0nB,QAAUC,EAAQC,OAAOyS,MAC9BhG,EAAe,SAASt0B,EAASm0B,GAC7B,GAAIoG,GAAQpG,EAAS,QAAe,OACpCpiC,GAAQyN,KAAK+6B,EAAQv6B,EAAU,WAE3BC,EAAK0nB,QAAyC,oBAAnB/3B,QAAa,QAChD0kC,EAAe,SAASt0B,EAASm0B,GAC7BpiC,EAAQyN,KAAK,KAAOQ,EACRm0B,EAAS,oBAAsB,gBAKvD,IAAIxuB,KACAqtB,SAAUA,EACV7D,iBAAgBA,EAChBlD,cAAaA,EACbsN,YAAWA,EAKf,OAFIpK,IAAiBr/B,EAAQq/B,mBAGzBA,gBAAiB,WACb,MAAOxpB,IAAOwpB,iBAElB6D,SAAU,WACN,MAAOrtB,IAAOqtB,UAElB/G,aAAc,WACV,MAAOtmB,IAAOsmB,cAElBsN,WAAY,WACR,MAAO5zB,IAAO4zB,YAElB7P,sBAAuB,WACnB,MAAOA,KAEXE,mBAAoB,WAChB,MAAOA,IAEXiI,sBAAuBA,EACvB0D,UAAWA,EACX/1B,KAAMA,EACNqzB,WAAYA,EACZ7D,cAAeA,EACf4I,aAAcA,EACdU,gBAAiBA,OAIlB,WAAW,GAAG,SAAS,KAAKkC,IAAI,SAASnV,EAAQp3B,EAAOD,GAC3D,YACAC,GAAOD,QAAU,SAAS8B,GAC1B,QAAS2qC,KACL,MAAO7tB,MAAKta,MAEhB,QAASooC,KACL,KAAM9tB,MAAK6nB,OAGf3kC,EAAQd,UAAkB,OAC1Bc,EAAQd,UAAU2rC,WAAa,SAAUroC,GAErC,MADIA,aAAiBxC,IAASwC,EAAMikC,8BAC7B3pB,KAAKuc,MACRsR,aAAUlP,IAAuBj5B,MAAOA,YAGhDxC,EAAQd,UAAiB,MACzBc,EAAQd,UAAU4rC,UAAY,SAAUnG,GACpC,MAAO7nB,MAAKuc,MACRuR,aAASnP,IAAuBkJ,OAAQA,YAGhD3kC,EAAQd,UAAU6rC,WAAa,SAAUpG,GACrC,GAAIl1B,UAAU3Q,QAAU,EACpB,MAAOge,MAAKuc,UAAMA,GACHuR,UAAqBjG,OAAQA,UAE5C,IAAIqG,GAAUv7B,UAAU,GACpBk6B,EAAU,WAAY,KAAMqB,GAChC,OAAOluB,MAAKmuB,OAAOtG,EAAQgF,IAInC3pC,EAAQd,UAAUgsC,YAAc,SAAU1oC,GACtC,GAAIiN,UAAU3Q,QAAU,EAEpB,MADI0D,aAAiBxC,IAASwC,EAAMikC,8BAC7B3pB,KAAKuc,UAAMA,GACHsR,UAAsBnoC,MAAOA,UAE5C,IAAI2oC,GAAS17B,UAAU,EACnB07B,aAAkBnrC,IAASmrC,EAAO1E,6BACtC,IAAIkD,GAAU,WAAY,MAAOwB,GACjC,OAAOruB,MAAKmuB,OAAOzoC,EAAOmnC,UAK5ByB,IAAI,SAAS7V,EAAQp3B,EAAOD,GAClC,YACAC,GAAOD,QAAU,SAAS8B,EAAS24B,GAInC,QAAS0S,KACL,MAAOC,GAAWxuB,MAGtB,QAASyuB,GAAiB9V,EAAUqB,GAChC,MAAO0U,GAAc/V,EAAUqB,EAAI6B,EAAUA,GARjD,GAAI6S,GAAgBxrC,EAAQ+H,OACxBujC,EAAatrC,EAAQyrC,GAUzBzrC,GAAQd,UAAUwsC,KAAO,SAAU5U,GAC/B,MAAO0U,GAAc1uB,KAAMga,EAAI6B,EAAU,GAC9BU,MAAMgS,aAAgB5P,GAAsB3e,SAAKA,KAGhE9c,EAAQd,UAAUysC,UAAY,SAAU7U,GACpC,MAAO0U,GAAc1uB,KAAMga,EAAI6B,EAAUA,IAG7C34B,EAAQ0rC,KAAO,SAAUjW,EAAUqB,GAC/B,MAAO0U,GAAc/V,EAAUqB,EAAI6B,EAAU,GAClCU,MAAMgS,aAAgB5P,GAAsBhG,WAG3Dz1B,EAAQ2rC,UAAYJ,QAIdK,IAAI,SAASrW,EAAQp3B,EAAOD,GAClC,YAOA,SAAS2tC,GAASC,EAAcC,GAC5B,QAASC,GAAS97B,GACd,KAAM4M,eAAgBkvB,IAAW,MAAO,IAAIA,GAAS97B,EACrD4xB,GAAkBhlB,KAAM,UACD,gBAAZ5M,GAAuBA,EAAU67B,GAC5CjK,EAAkBhlB,KAAM,OAAQgvB,GAC5BhsC,MAAMqlC,kBACNrlC,MAAMqlC,kBAAkBroB,KAAMA,KAAKX,aAEnCrc,MAAMxB,KAAKwe,MAInB,MADA8sB,GAASoC,EAAUlsC,OACZksC,EAmDX,QAASC,GAAiB/7B,GACtB,KAAM4M,eAAgBmvB,IAClB,MAAO,IAAIA,GAAiB/7B,EAChC4xB,GAAkBhlB,KAAM,OAAQ,oBAChCglB,EAAkBhlB,KAAM,UAAW5M,GACnC4M,KAAKovB,MAAQh8B,EACb4M,KAAoB,iBAEhB5M,YAAmBpQ,QACnBgiC,EAAkBhlB,KAAM,UAAW5M,EAAQA,SAC3C4xB,EAAkBhlB,KAAM,QAAS5M,EAAQG,QAClCvQ,MAAMqlC,mBACbrlC,MAAMqlC,kBAAkBroB,KAAMA,KAAKX,aAlF3C,GAsBIgwB,GAAYC,EAtBZC,EAAM9W,EAAQ,SACd+W,EAAeD,EAAIE,OACnBp8B,EAAOolB,EAAQ,UACfqU,EAAWz5B,EAAKy5B,SAChB9H,EAAoB3xB,EAAK2xB,kBAmBzBqB,EAAU0I,EAAS,UAAW,WAC9BW,EAAoBX,EAAS,oBAAqB,sBAClDY,EAAeZ,EAAS,eAAgB,iBACxCa,EAAiBb,EAAS,iBAAkB,kBAChD,KACIM,EAAanR,UACboR,EAAcO,WAChB,MAAMrtC,GACJ6sC,EAAaN,EAAS,YAAa,cACnCO,EAAcP,EAAS,aAAc,eAMzC,IAAK,GAHDe,GAAU,sHACuDpyB,MAAM,KAElEpc,EAAI,EAAGA,EAAIwuC,EAAQ9tC,SAAUV,EACS,kBAAhC0S,OAAM5R,UAAU0tC,EAAQxuC,MAC/BsuC,EAAextC,UAAU0tC,EAAQxuC,IAAM0S,MAAM5R,UAAU0tC,EAAQxuC,IAIvEiuC,GAAI9qC,eAAemrC,EAAextC,UAAW,UACzCsD,MAAO,EACPhB,cAAaA,EACbiB,UAASA,EACThB,YAAWA,IAEfirC,EAAextC,UAAyB,gBACxC,IAAI2tC,GAAQ,CACZH,GAAextC,UAAU67B,SAAW,WAChC,GAAI+R,GAASh8B,MAAc,EAAR+7B,EAAY,GAAG9d,KAAK,KACnC2G,EAAM,KAAOoX,EAAS,sBAC1BD,KACAC,EAASh8B,MAAc,EAAR+7B,EAAY,GAAG9d,KAAK,IACnC,KAAK,GAAI3wB,GAAI,EAAGA,EAAI0e,KAAKhe,SAAUV,EAAG,CAGlC,IAAK,GAFD0mC,GAAMhoB,KAAK1e,KAAO0e,KAAO,4BAA8BA,KAAK1e,GAAK,GACjE2uC,EAAQjI,EAAItqB,MAAM,MACbskB,EAAI,EAAGA,EAAIiO,EAAMjuC,SAAUggC,EAChCiO,EAAMjO,GAAKgO,EAASC,EAAMjO,EAE9BgG,GAAMiI,EAAMhe,KAAK,MACjB2G,GAAOoP,EAAM,KAGjB,MADA+H,KACOnX,GAmBXkU,EAASqC,EAAkBnsC,MAE3B,IAAIktC,GAAaltC,MAA8B,sBAC1CktC,KACDA,EAAaV,GACTE,kBAAmBA,EACnBC,aAAcA,EACdR,iBAAkBA,EAClBgB,eAAgBhB,EAChBS,eAAgBA,IAEpBL,EAAI9qC,eAAezB,MAAO,0BACtB0C,MAAOwqC,EACPvqC,UAASA,EACThB,YAAWA,EACXD,cAAaA,KAIrBrD,EAAOD,SACH4B,MAAOA,MACPk7B,UAAWmR,EACXQ,WAAYP,EACZI,kBAAmBQ,EAAWR,kBAC9BP,iBAAkBe,EAAWf,iBAC7BQ,aAAcO,EAAWP,aACzBC,eAAgBM,EAAWN,eAC3BvJ,QAASA,KAGV,QAAQ,GAAG,SAAS,KAAK+J,IAAI,SAAS3X,EAAQp3B,EAAOD,GACxD,GAAIivC,GAAQ,WACR,YACA,iBAAOrwB,OAGX,IAAIqwB,EACAhvC,EAAOD,SACHquC,OAAQttC,OAAOstC,OACfhrC,eAAgBtC,OAAOsC,eACvB6rC,cAAenuC,OAAOouC,yBACtBvlC,KAAM7I,OAAO6I,KACbwlC,MAAOruC,OAAOsuC,oBACdC,eAAgBvuC,OAAOuuC,eACvB3f,QAAS/c,MAAM+c,QACfsf,MAAOA,EACPM,mBAAoB,SAASnrC,EAAKorC,GAC9B,GAAIC,GAAa1uC,OAAOouC,yBAAyB/qC,EAAKorC,EACtD,SAAWC,IAAcA,EAAWlrC,WAAYkrC,EAAWC,WAGhE,CACH,GAAIC,MAAS1uC,eACT2lC,KAAS/J,SACT+S,KAAW3xB,YAAYjd,UAEvB6uC,EAAa,SAAUzsC,GACvB,GAAIo0B,KACJ,KAAK,GAAInzB,KAAOjB,GACRusC,EAAIvvC,KAAKgD,EAAGiB,IACZmzB,EAAI12B,KAAKuD,EAGjB,OAAOmzB,IAGPsY,EAAsB,SAAS1sC,EAAGiB,GAClC,OAAQC,MAAOlB,EAAEiB,KAGjB0rC,EAAuB,SAAU3sC,EAAGiB,EAAK2rC,GAEzC,MADA5sC,GAAEiB,GAAO2rC,EAAK1rC,MACPlB,GAGP6sC,EAAe,SAAU7rC,GACzB,MAAOA,IAGP8rC,EAAuB,SAAU9rC,GACjC,IACI,MAAOrD,QAAOqD,GAAK6Z,YAAYjd,UAEnC,MAAOI,GACH,MAAOwuC,KAIXO,EAAe,SAAU/rC,GACzB,IACI,MAAyB,mBAAlBwiC,EAAIxmC,KAAKgE,GAEpB,MAAMhD,GACF,OAAM,GAIdnB,GAAOD,SACH2vB,QAASwgB,EACTvmC,KAAMimC,EACNT,MAAOS,EACPxsC,eAAgB0sC,EAChBb,cAAeY,EACfzB,OAAQ4B,EACRX,eAAgBY,EAChBjB,MAAOA,EACPM,mBAAoB,WAChB,OAAM,UAKZa,IAAI,SAAS/Y,EAAQp3B,EAAOD,GAClC,YACAC,GAAOD,QAAU,SAAS8B,EAAS24B,GACnC,GAAI4V,GAAavuC,EAAQ8uB,GAEzB9uB,GAAQd,UAAUyzB,OAAS,SAAUmE,EAAIje,GACrC,MAAO01B,GAAWzxB,KAAMga,EAAIje,EAAS8f,IAGzC34B,EAAQ2yB,OAAS,SAAU8C,EAAUqB,EAAIje,GACrC,MAAO01B,GAAW9Y,EAAUqB,EAAIje,EAAS8f,UAIvC6V,IAAI,SAASjZ,EAAQp3B,EAAOD,GAClC,YACAC,GAAOD,QAAU,SAAS8B,EAAS44B,EAAqByF,GAMxD,QAASoQ,GAA0BvuC,EAASM,EAAMmpC,GAC9C7sB,KAAK5c,QAAUA,EACf4c,KAAKtc,KAAOA,EACZsc,KAAK6sB,QAAUA,EACf7sB,KAAK4xB,UACL5xB,KAAK6xB,cAAgB,KAOzB,QAASC,GAA6BC,GAClC/xB,KAAK+xB,eAAiBA,EAO1B,QAASC,GAAY3O,EAAKwE,GACtB,MAAyB,OAArBxE,EAAIwO,gBACAl/B,UAAU3Q,OAAS,EACnBqhC,EAAIwO,cAAc1V,QAAQ0L,GAE1BxE,EAAIwO,cAAcxR,UAEtBgD,EAAIwO,cAAgB,SAM5B,QAASI,KACL,MAAOF,GAAevwC,KAAKwe,KAAMA,KAAK5c,QAAQ85B,UAAUgN,iBAE5D,QAASgI,GAAKrK,GACV,IAAImK,EAAYhyB,KAAM6nB,GAEtB,MADA3I,GAAS18B,EAAIqlC,EACN3I,EAEX,QAAS6S,GAAeI,GACpB,GAAI/uC,GAAU4c,KAAK5c,QACfypC,EAAU7sB,KAAK6sB,OAEnB,KAAK7sB,KAAK4xB,OAAQ,CACd5xB,KAAK4xB,SACL,IAAIhZ,GAAM5Y,KAAKoyB,mBACTvF,EAAQrrC,KAAK4B,EAAQ25B,eACrB8P,EAAQrrC,KAAK4B,EAAQ25B,cAAeoV,EAC1C,IAAIvZ,IAAQ2I,EACR,MAAO3I,EACJ,aAAIA,EAAmB,CAC1Bx1B,EAAQ4mC,0BACR,IAAI/M,GAAenB,EAAoBlD,EAAKx1B,EAC5C,IAAI65B,YAAwB/5B,GAAS,CACjC,GAA0B,MAAtB8c,KAAK6xB,cAAuB,CAC5B,GAAI5U,EAAa2D,eAAgB,CAC7B,GAAIiH,GACA,GAAI6H,GAAkB,6BAG1B,OAFAtsC,GAAQ89B,kBAAkB2G,GAC1B3I,EAAS18B,EAAIqlC,EACN3I,EACAjC,EAAa0D,aACpB1D,EAAa2G,4BACT,GAAIkO,GAA6B9xB,OAG7C,MAAOid,GAAaV,MAChB0V,EAASC,SAAiBlyB,SAAKA,MAK/C,MAAI5c,GAAQivC,cACRL,EAAYhyB,MACZkf,EAAS18B,EAAI2vC,EACNjT,IAEP8S,EAAYhyB,MACLmyB,GArFf,GAAI9+B,GAAOolB,EAAQ,UACfiX,EAAoBxsC,EAAQwsC,kBAC5BxQ,EAAW7rB,EAAK6rB,SAChBsC,EAAc/I,EAAQ,kBAAkB8I,EA2I5C,OAjIAoQ,GAA0BvvC,UAAUgwC,iBAAmB,WACnD,MAAqB,KAAdpyB,KAAKtc,MAOhBouC,EAA6B1vC,UAAU++B,iBAAmB,WACtD6Q,EAAYhyB,KAAK+xB,iBAmErB7uC,EAAQd,UAAUkwC,aAAe,SAASzF,EAASnpC,EAAM6uC,EAASL,GAC9D,MAAuB,kBAAZrF,GAA+B7sB,KAAKwyB,OACxCxyB,KAAKuc,MAAMgW,EACAL,SAEA,GAAIP,GAA0B3xB,KAAMtc,EAAMmpC,YAIhE3pC,EAAQd,UAAUqwC,OAClBvvC,EAAQd,UAAmB,QAAI,SAAUyqC,GACrC,MAAO7sB,MAAKsyB,aAAazF,EACA,EACAkF,EACAA,IAI7B7uC,EAAQd,UAAUswC,IAAM,SAAU7F,GAC9B,MAAO7sB,MAAKsyB,aAAazF,EAAS,EAAGkF,IAGzC7uC,EAAQd,UAAUuwC,SAAW,SAAUC,GACnC,GAAIC,GAAMlgC,UAAU3Q,MACpB,IAAW,IAAR6wC,EACC,MAAO7yB,MAAKsyB,aAAaM,EACA,MAAE,GAEFb,EAExB,IACUzwC,GADNwxC,EAAiB,GAAI9+B,OAAM6+B,EAAM,GAClC7Q,EAAI,CACR,KAAK1gC,EAAI,EAAGA,EAAIuxC,EAAM,IAAKvxC,EAAG,CAC1B,GAAI80B,GAAOzjB,UAAUrR,EACrB,KAAI+R,EAAKyuB,SAAS1L,GAGd,MAAOlzB,GAAQG,OAAO,GAAI66B,WACtB,6DACmC7qB,EAAK2qB,YAAY5H,IAJxD0c,GAAe9Q,KAAO5L,EAQ9B0c,EAAe9wC,OAASggC,CACxB,IAAI6K,GAAUl6B,UAAUrR,EACxB,OAAO0e,MAAKsyB,aAAa9Q,EAAYsR,EAAgBjG,EAAS7sB,MACrC,MAAE,GAEF+xB,IAK1BJ,KAGJ,iBAAiB,EAAE,SAAS,KAAKoB,IAAI,SAASta,EAAQp3B,EAAOD,GAChE,YACAC,GAAOD,QAAU,SAAS8B,EACA87B,EACAnD,EACAC,EACAkX,EACAjX,GAQ1B,QAASkX,GAAwBvtC,EAAOwtC,EAAeC,GACnD,IAAK,GAAI7xC,GAAI,EAAGA,EAAI4xC,EAAclxC,SAAUV,EAAG,CAC3C6xC,EAAYxQ,cACZ,IAAIlY,GAASwU,EAASiU,EAAc5xC,IAAIoE,EAExC,IADAytC,EAAYvQ,cACRnY,IAAWyU,EAAU,CACrBiU,EAAYxQ,cACZ,IAAI/J,GAAM11B,EAAQG,OAAO67B,EAAS18B,EAElC,OADA2wC,GAAYvQ,cACLhK,EAEX,GAAIqE,GAAenB,EAAoBrR,EAAQ0oB,EAC/C,IAAIlW,YAAwB/5B,GAAS,MAAO+5B,GAEhD,MAAO,MAGX,QAASmW,GAAaC,EAAmBpZ,EAAUqZ,EAAc//B,GAC7D,GAAIwoB,EAAMsD,eAAgB,CACtB,GAAIkU,GAAW,GAAIrwC,GAAQ24B,GACvB2X,EAAkBxzB,KAAKwzB,gBAAkB,GAAItwC,GAAQ24B,EACzD7b,MAAKyzB,SAAWF,EAASd,OAAO,WAC5B,MAAOe,KAEXD,EAAS1I,qBACT0I,EAASnW,aAAapd,WAERA,KAAKyzB,SAAW,GAAIvwC,GAAQ24B,IAClCgP,oBAEZ7qB,MAAK0zB,OAASngC,EACdyM,KAAK2zB,mBAAqBN,EAC1BrzB,KAAK4zB,UAAY3Z,EACjBja,KAAK6zB,kBACL7zB,KAAK8zB,eAAyC,kBAAjBR,IACtBA,GAAczgB,OAAOqgB,GACtBA,EACNlzB,KAAK+zB,gBAAkB,KACvB/zB,KAAKg0B,sBA7CT,GAAIC,GAASxb,EAAQ,YACjByF,EAAY+V,EAAO/V,UACnB7qB,EAAOolB,EAAQ,UACfyG,EAAW7rB,EAAK6rB,SAChBD,EAAW5rB,EAAK4rB,SAChBiU,IA0CJ7/B,GAAKy5B,SAASsG,EAAcJ,GAE5BI,EAAahxC,UAAU8xC,YAAc,WACjC,MAAyB,QAAlBl0B,KAAKyzB,UAGhBL,EAAahxC,UAAU+xC,SAAW,WAC9Bn0B,KAAKyzB,SAAWzzB,KAAK6zB,WAAa,KAC9B9X,EAAMsD,gBAA2C,OAAzBrf,KAAKwzB,kBAC7BxzB,KAAKwzB,gBAAgBY,WACrBp0B,KAAKwzB,gBAAkB,OAI/BJ,EAAahxC,UAAUiyC,kBAAoB,WACvC,IAAIr0B,KAAKk0B,cAAT,CACA,GAEIzpB,EACJ,QAHI6pB,KAA0Bt0B,KAAK6zB,WAAmB,OAalD7zB,KAAKyzB,SAAS9Q,eACdlY,EAASwU,EAASjf,KAAK6zB,WAAmB,QAAGryC,KAAKwe,KAAK6zB,eAAWA,IAElE7zB,KAAKyzB,SAAS7Q,kBAbK,CACnB,GAAIiF,GAAS,GAAI3kC,GAAQwsC,kBACrB,+BACJxsC,GAAQqxC,UAAUC,eAAiB3M,EACnC7nB,KAAKyzB,SAASvS,kBAAkB2G,GAChC7nB,KAAKyzB,SAAS9Q,eACdlY,EAASwU,EAASjf,KAAK6zB,WAAkB,OAAGryC,KAAKwe,KAAK6zB,WACLhM,GACjD7nB,KAAKyzB,SAAS7Q,cAOlB5iB,KAAKg0B,sBACLh0B,KAAK+zB,gBAAkB,KACvB/zB,KAAKy0B,UAAUhqB,KAGnB2oB,EAAahxC,UAAUsyC,kBAAoB,SAAShvC,GAChDsa,KAAK+zB,gBAAkB,KACvB/zB,KAAKyzB,SAAS9Q,cACd,IAAIlY,GAASwU,EAASjf,KAAK6zB,WAAWhyB,MAAMrgB,KAAKwe,KAAK6zB,WAAYnuC,EAClEsa,MAAKyzB,SAAS7Q,cACd5iB,KAAKy0B,UAAUhqB,IAGnB2oB,EAAahxC,UAAUuyC,iBAAmB,SAAS9M,GAC/C7nB,KAAK+zB,gBAAkB,KACvB/zB,KAAKyzB,SAASvS,kBAAkB2G,GAChC7nB,KAAKyzB,SAAS9Q,cACd,IAAIlY,GAASwU,EAASjf,KAAK6zB,WAAkB,OACxCryC,KAAKwe,KAAK6zB,WAAYhM,EAC3B7nB,MAAKyzB,SAAS7Q,cACd5iB,KAAKy0B,UAAUhqB,IAGnB2oB,EAAahxC,UAAU++B,iBAAmB,WACtC,GAAInhB,KAAK+zB,0BAA2B7wC,GAAS,CACzC,GAAIE,GAAU4c,KAAK+zB,eACnB/zB,MAAK+zB,gBAAkB,KACvB3wC,EAAQg8B,WAIhBgU,EAAahxC,UAAUgB,QAAU,WAC7B,MAAO4c,MAAKyzB,UAGhBL,EAAahxC,UAAUwyC,KAAO,WAC1B50B,KAAK6zB,WAAa7zB,KAAK2zB,mBAAmBnyC,KAAKwe,KAAK4zB,WACpD5zB,KAAK4zB,UACD5zB,KAAK2zB,0BACT3zB,KAAK00B,sBAAkBA,KAG3BtB,EAAahxC,UAAUqyC,UAAY,SAAUhqB,GACzC,GAAIrnB,GAAU4c,KAAKyzB,QACnB,IAAIhpB,IAAWyU,EAEX,MADAlf,MAAKm0B,WACDn0B,KAAKg0B,mBACE5wC,EAAQg8B,SAERh8B,EAAQyxC,gBAAgBpqB,EAAOjoB,GAAEA,EAIhD,IAAIkD,GAAQ+kB,EAAO/kB,KACnB,SAAI+kB,EAAOqqB,KAEP,MADA90B,MAAKm0B,WACDn0B,KAAKg0B,mBACE5wC,EAAQg8B,SAERh8B,EAAQu5B,iBAAiBj3B,EAGpC,IAAIu3B,GAAenB,EAAoBp2B,EAAOsa,KAAKyzB,SACnD,MAAMxW,YAAwB/5B,KAKL,QAJrB+5B,EACIgW,EAAwBhW,EACAjd,KAAK8zB,eACL9zB,KAAKyzB,WAS7B,WAPAzzB,MAAK20B,iBACD,GAAIzW,GACA,oGAAoHnR,QAAQ,KAAM0a,OAAO/hC,IACzI,oBACAsa,KAAK0zB,OAAOh2B,MAAM,MAAM7J,MAAM,GAAI,GAAGoe,KAAK,OAM1DgL,GAAeA,EAAaC,SAC5B,IAAI6X,GAAW9X,EAAaP,SAEG,KAAd,SAAXqY,IACF/0B,KAAK+zB,gBAAkB9W,EACvBA,EAAa+X,OAAOh1B,KAAM,OACQ,IAAd,SAAX+0B,GACT7xC,EAAQi8B,OAAO7D,OACXtb,KAAK00B,kBAAmB10B,KAAMid,EAAaoR,UAEb,IAAd,SAAX0G,GACT7xC,EAAQi8B,OAAO7D,OACXtb,KAAK20B,iBAAkB30B,KAAMid,EAAaiR,WAG9CluB,KAAKq0B,qBAKjBnxC,EAAQqxC,UAAY,SAAUlB,EAAmBt3B,GAC7C,GAAiC,kBAAtBs3B,GACP,KAAM,IAAInV,GAAU,yEAExB,IAAIoV,GAAenxC,OAAO4Z,GAASu3B,aAC/B2B,EAAgB7B,EAChB7/B,MAAYvQ,QAAQuQ,KACxB,OAAO,YACH,GAAI2hC,GAAY7B,EAAkB3gC,MAAMsN,KAAMrN,WAC1CwiC,EAAQ,GAAIF,cAActW,GAAsB2U,EACtB//B,GAC1BqlB,EAAMuc,EAAM/xC,SAGhB,OAFA+xC,GAAMtB,WAAaqB,EACnBC,EAAMT,sBAAkBA,IACjB9b,IAIf11B,EAAQqxC,UAAUa,gBAAkB,SAASpb,GACzC,GAAkB,kBAAPA,GACP,KAAM,IAAIkE,GAAU,gCAAkC7qB,EAAK2qB,YAAYhE,GAE3EkZ,GAAchxC,KAAK83B,IAGvB92B,EAAQiyC,MAAQ,SAAU9B,GAEtB,GADAtX,EAAMkK,WAAW,kBAAmB,uBACH,kBAAtBoN,GACP,MAAOrU,GAAa,yEAExB,IAAImW,GAAQ,GAAI/B,GAAaC,EAAmBrzB,MAC5C4Y,EAAMuc,EAAM/xC,SAEhB,OADA+xC,GAAMP,KAAK1xC,EAAQiyC,OACZvc,MAIR,WAAW,GAAG,SAAS,KAAKyc,IAAI,SAAS5c,EAAQp3B,EAAOD,GAC3D,YACAC,GAAOD,QACP,SAAS8B,EAAS67B,EAAcjD,EAAqBD,EAAUj4B,EACtD2lC,GACT,GAAIl2B,GAAOolB,EAAQ,SACDplB,GAAKorB,YACRprB,EAAK4rB,SACL5rB,EAAK6rB,SAuGpBh8B,EAAQ+uB,KAAO,WACX,GACI+H,GADAsb,EAAO3iC,UAAU3Q,OAAS,CAE9B,IAAIszC,EAAO,GAAgC,kBAApB3iC,WAAU2iC,GAAsB,CACnDtb,EAAKrnB,UAAU2iC,EAGP,IAAI1c,GA4ChB,GAAI/L,MAAUhZ,MAAMrS,KAAKmR,UACrBqnB,IAAInN,EAAK8F,KACb,IAAIiG,GAAM,GAAImG,GAAalS,GAAMzpB,SACjC,iBAAO42B,EAAmBpB,EAAI2c,OAAOvb,GAAMpB,MAK5C,SAAS,KAAK4c,IAAI,SAAS/c,EAAQp3B,EAAOD,GAC7C,YACAC,GAAOD,QAAU,SAAS8B,EACA67B,EACAC,EACAlD,EACAD,EACAE,GAO1B,QAAS0Z,GAAoB9c,EAAUqB,EAAI0b,EAAOC,GAC9C31B,KAAK41B,aAAajd,GAClB3Y,KAAKyzB,SAAS5I,oBACd,IAAIL,GAASjB,GACbvpB,MAAK61B,UAAuB,OAAXrL,EAAkBxQ,EAAK3mB,EAAKo3B,WAAWD,EAAQxQ,GAChEha,KAAK81B,iBAAmBH,IAAY9Z,EAC9B,GAAI7nB,OAAMgM,KAAKhe,UACf,KACNge,KAAK+1B,OAASL,EACd11B,KAAKg2B,UAAY,EACjBh2B,KAAKi2B,UACLryC,EAAM03B,OAAOtb,KAAKk2B,WAAYl2B,SAAKA,IA6GvC,QAASgS,GAAI2G,EAAUqB,EAAIje,EAAS45B,GAChC,GAAkB,kBAAP3b,GACP,MAAOgF,GAAa,gCAAkC3rB,EAAK2qB,YAAYhE,GAG3E,IAAI0b,GAAQ,CACZ,aAAI35B,EAAuB,CACvB,GAAuB,gBAAZA,IAAoC,OAAZA,EAQ/B,MAAO7Y,GAAQG,OAAO,GAAI66B,WACV,gDACC7qB,EAAK2qB,YAAYjiB,IATlC,IAAmC,gBAAxBA,GAAQo6B,YACf,MAAOjzC,GAAQG,OACX,GAAI66B,WAAU,4CACE7qB,EAAK2qB,YAAYjiB,EAAQo6B,cAEjDT,GAAQ35B,EAAQo6B,YASxB,MAFAT,GAAyB,gBAAVA,IACXU,SAASV,IAAUA,GAAS,EAAIA,EAAQ,EACrC,GAAID,GAAoB9c,EAAUqB,EAAI0b,EAAOC,GAASvyC,UApJjE,GAAImmC,GAAYrmC,EAAQsmC,WACpBn2B,EAAOolB,EAAQ,UACfwG,EAAW5rB,EAAK4rB,SAChBC,EAAW7rB,EAAK6rB,SAChBt7B,EAAQV,EAAQi8B,MAepB9rB,GAAKy5B,SAAS2I,EAAqB1W,GAEnC0W,EAAoBrzC,UAAU8zC,WAAa,WACvCl2B,KAAKq2B,WAAOA,IAAY,IAG5BZ,EAAoBrzC,UAAUk0C,MAAQ,aAEtCb,EAAoBrzC,UAAUsyC,kBAAoB,SAAUhvC,EAAOgsB,GAC/D,GAAI8B,GAASxT,KAAKu2B,QACdv0C,EAASge,KAAKhe,SACdw0C,EAAkBx2B,KAAK81B,iBACvBJ,EAAQ11B,KAAK+1B,MAEjB,IAAIrkB,EAAQ,GAGR,GAFAA,GAAkB,EAATA,EAAc,EACvB8B,EAAO9B,GAAShsB,EACZgwC,GAAS,IACT11B,KAAKg2B,YACLh2B,KAAKyb,cACDzb,KAAKk0B,eAAe,OAAM,MAE/B,CACH,GAAIwB,GAAS,GAAK11B,KAAKg2B,WAAaN,EAGhC,MAFAliB,GAAO9B,GAAShsB,EAChBsa,KAAKi2B,OAAO/zC,KAAKwvB,KAGG,QAApB8kB,IAA0BA,EAAgB9kB,GAAShsB,EAEvD,IAAItC,GAAU4c,KAAKyzB,SACfgD,EAAWz2B,KAAK61B,UAChB5b,EAAW72B,EAAQ25B,aACvB35B,GAAQu/B,cACR,IAAI/J,GAAMqG,EAASwX,GAAUj1C,KAAKy4B,EAAUv0B,EAAOgsB,EAAO1vB,GACtDmjC,EAAiB/hC,EAAQw/B,aAO7B,IANA7G,EAAMkJ,sBACFrM,EACAuM,EACoB,OAApBqR,EAA2B,iBAAmB,cAC9CpzC,GAEAw1B,IAAQsG,EAER,MADAlf,MAAKmc,QAAQvD,EAAIp2B,KAIrB,IAAIy6B,GAAenB,EAAoBlD,EAAK5Y,KAAKyzB,SACjD,IAAIxW,YAAwB/5B,GAAS,CACjC+5B,EAAeA,EAAaC,SAC5B,IAAI6X,GAAW9X,EAAaP,SAE5B,IAA+B,IAAd,SAAXqY,GAIF,MAHIW,IAAS,GAAG11B,KAAKg2B,YACrBxiB,EAAO9B,GAASuL,EAChBA,EAAa+X,OAAOh1B,MAAqB,GAAd0R,EAAQ,MAEhC,IAA+B,IAAd,SAAXqjB,GAEN,MAA+B,KAAd,SAAXA,IACT/0B,KAAKmc,QAAQc,EAAaiR,gBAG1BluB,KAAKqgB,aALLzH,GAAMqE,EAAaoR,SAS3B7a,EAAO9B,GAASkH,EAGpB,QADsB5Y,KAAK02B,gBACN10C,IACO,OAApBw0C,EACAx2B,KAAK21B,QAAQniB,EAAQgjB,GAErBx2B,KAAK22B,SAASnjB,QAO1BiiB,EAAoBrzC,UAAUq5B,YAAc,WAIxC,IAHA,GAAIC,GAAQ1b,KAAKi2B,OACbP,EAAQ11B,KAAK+1B,OACbviB,EAASxT,KAAKu2B,QACX7a,EAAM15B,OAAS,GAAKge,KAAKg2B,UAAYN,GAAO,CAC/C,GAAI11B,KAAKk0B,cAAe,MACxB,IAAIxiB,GAAQgK,EAAM/I,KAClB3S,MAAK00B,kBAAkBlhB,EAAO9B,GAAQA,KAI9C+jB,EAAoBrzC,UAAUuzC,QAAU,SAAUiB,EAAUpjB,GAIxD,IAAK,GAHDqf,GAAMrf,EAAOxxB,OACb42B,EAAM,GAAI5kB,OAAM6+B,GAChB7Q,EAAI,EACC1gC,EAAI,EAAGA,EAAIuxC,IAAOvxC,EACnBs1C,EAASt1C,KAAIs3B,EAAIoJ,KAAOxO,EAAOlyB,GAEvCs3B,GAAI52B,OAASggC,EACbhiB,KAAK22B,SAAS/d,IAGlB6c,EAAoBrzC,UAAUo0C,gBAAkB,WAC5C,MAAOx2B,MAAK81B,kBA4BhB5yC,EAAQd,UAAU4vB,IAAM,SAAUgI,EAAIje,GAClC,MAAOiW,GAAIhS,KAAMga,EAAIje,EAAS,OAGlC7Y,EAAQ8uB,IAAM,SAAU2G,EAAUqB,EAAIje,EAAS45B,GAC3C,MAAO3jB,GAAI2G,EAAUqB,EAAIje,EAAS45B,OAMnC,SAAS,KAAKkB,IAAI,SAASpe,EAAQp3B,EAAOD,GAC7C,YACAC,GAAOD,QACP,SAAS8B,EAAS24B,EAAUC,EAAqBkD,EAAcjD,GAC/D,GAAI1oB,GAAOolB,EAAQ,UACfwG,EAAW5rB,EAAK4rB,QAEpB/7B,GAAQ0oC,OAAS,SAAU5R,GACvB,GAAkB,kBAAPA,GACP,KAAM,IAAI92B,GAAQg7B,UAAU,gCAAkC7qB,EAAK2qB,YAAYhE,GAEnF,OAAO,YACH,GAAIpB,GAAM,GAAI11B,GAAQ24B,EACtBjD,GAAIiS,qBACJjS,EAAI+J,cACJ,IAAIj9B,GAAQu5B,EAASjF,GAAItnB,MAAMsN,KAAMrN,WACjCwyB,EAAiBvM,EAAIgK,aAIzB,OAHA7G,GAAMkJ,sBACFv/B,EAAOy/B,EAAgB,iBAAkBvM,GAC7CA,EAAIke,sBAAsBpxC,GACnBkzB,IAIf11B,EAAQ6zC,QAAU7zC,EAAa,IAAI,SAAU82B,GACzC,GAAkB,kBAAPA,GACP,MAAOgF,GAAa,gCAAkC3rB,EAAK2qB,YAAYhE,GAE3E,IAAIpB,GAAM,GAAI11B,GAAQ24B,EACtBjD,GAAIiS,qBACJjS,EAAI+J,cACJ,IAAIj9B,EACJ,IAAIiN,UAAU3Q,OAAS,EAAG,CACtB+5B,EAAMkK,WAAW,gDACjB,IAAI1b,GAAM5X,UAAU,GAChB0wB,EAAM1wB,UAAU,EACpBjN,GAAQ2N,EAAK0d,QAAQxG,GAAO0U,EAASjF,GAAItnB,MAAM2wB,EAAK9Y,GACxB0U,EAASjF,GAAIx4B,KAAK6hC,EAAK9Y,OAEnD7kB,GAAQu5B,EAASjF,IAErB,IAAImL,GAAiBvM,EAAIgK,aAIzB,OAHA7G,GAAMkJ,sBACFv/B,EAAOy/B,EAAgB,cAAevM,GAC1CA,EAAIke,sBAAsBpxC,GACnBkzB,GAGX11B,EAAQd,UAAU00C,sBAAwB,SAAUpxC,GAC5CA,IAAU2N,EAAK6rB,SACflf,KAAK60B,gBAAgBnvC,EAAMlD,GAAEA,GAE7Bwd,KAAK2c,iBAAiBj3B,UAK3B,SAAS,KAAKsxC,IAAI,SAASve,EAAQp3B,EAAOD,GAC7C,YAOA,SAAS61C,GAAezxC,GACpB,MAAOA,aAAexC,QAClBusC,EAAImB,eAAelrC,KAASxC,MAAMZ,UAI1C,QAAS80C,GAAuB1xC,GAC5B,GAAIozB,EACJ,IAAIqe,EAAezxC,GAAM,CACrBozB,EAAM,GAAIuW,GAAiB3pC,GAC3BozB,EAAIt0B,KAAOkB,EAAIlB,KACfs0B,EAAIxlB,QAAU5N,EAAI4N,QAClBwlB,EAAIrlB,MAAQ/N,EAAI+N,KAEhB,KAAK,GADDvI,GAAOukC,EAAIvkC,KAAKxF,GACXlE,EAAI,EAAGA,EAAI0J,EAAKhJ,SAAUV,EAAG,CAClC,GAAImE,GAAMuF,EAAK1J,EACV61C,GAAUvR,KAAKngC,KAChBmzB,EAAInzB,GAAOD,EAAIC,IAGvB,MAAOmzB,GAGX,MADAvlB,GAAK+jC,+BAA+B5xC,GAC7BA,EAGX,QAAS6xC,GAAmBj0C,EAASk0C,GACjC,MAAO,UAASpyC,EAAKQ,GACjB,GAAgB,OAAZtC,EAAJ,CACA,GAAI8B,EAAK,CACL,GAAIqyC,GAAUL,EAAuBM,EAAiBtyC,GACtD9B,GAAQ89B,kBAAkBqW,GAC1Bn0C,EAAQ+4B,QAAQob,OACb,IAAKD,EAEL,CACH,GAAIzqB,MAAUhZ,MAAMrS,KAAKmR,UAAW,EACpCvP,GAAQgxC,SAASvnB,OAHjBzpB,GAAQgxC,SAAS1uC,EAKrBtC,GAAU,OA7ClB,GAAIiQ,GAAOolB,EAAQ,UACf+e,EAAmBnkC,EAAKmkC,iBACxBvD,EAASxb,EAAQ,YACjB0W,EAAmB8E,EAAO9E,iBAC1BI,EAAM9W,EAAQ,SAOd0e,EAAY,gCAsChB91C,GAAOD,QAAUi2C,IAEd,WAAW,GAAG,QAAQ,GAAG,SAAS,KAAKI,IAAI,SAAShf,EAAQp3B,EAAOD,GACtE,YACAC,GAAOD,QAAU,SAAS8B,GAM1B,QAASw0C,GAAcC,EAAKC,GACxB,GAAIx0C,GAAU4c,IACd,KAAK3M,EAAK0d,QAAQ4mB,GAAM,MAAOE,GAAer2C,KAAK4B,EAASu0C,EAAKC,EACjE,IAAIhf,GACAqG,EAAS2Y,GAAUllC,MAAMtP,EAAQ25B,eAAgB,MAAMlK,OAAO8kB,GAC9D/e,KAAQsG,GACRt7B,EAAMw3B,WAAWxC,EAAIp2B,GAI7B,QAASq1C,GAAeF,EAAKC,GACzB,GAAIx0C,GAAU4c,KACVia,EAAW72B,EAAQ25B,cACnBnE,WAAM+e,EACJ1Y,EAAS2Y,GAAUp2C,KAAKy4B,EAAU,MAClCgF,EAAS2Y,GAAUp2C,KAAKy4B,EAAU,KAAM0d,EAC1C/e,KAAQsG,GACRt7B,EAAMw3B,WAAWxC,EAAIp2B,GAG7B,QAASs1C,GAAajQ,EAAQ+P,GAC1B,GAAIx0C,GAAU4c,IACd,KAAK6nB,EAAQ,CACT,GAAIkQ,GAAY,GAAI/0C,OAAM6kC,EAAS,GACnCkQ,GAAU3I,MAAQvH,EAClBA,EAASkQ,EAEb,GAAInf,GAAMqG,EAAS2Y,GAAUp2C,KAAK4B,EAAQ25B,cAAe8K,EACrDjP,KAAQsG,GACRt7B,EAAMw3B,WAAWxC,EAAIp2B,GAlC7B,GAAI6Q,GAAOolB,EAAQ,UACf70B,EAAQV,EAAQi8B,OAChBF,EAAW5rB,EAAK4rB,SAChBC,EAAW7rB,EAAK6rB,QAmCpBh8B,GAAQd,UAAU41C,WAAa90C,EAAQd,UAAU61C,QAAU,SAAUL,EACA77B,GACjE,GAAuB,kBAAZ67B,GAAwB,CAC/B,GAAIM,GAAUL,WACV97B,GAAyB5Z,OAAO4Z,GAASw5B,SACzC2C,EAAUR,GAEd13B,KAAKuc,MACD2b,EACAJ,SAEA93B,KACA43B,GAGR,MAAO53B,UAIR,SAAS,KAAKm4B,IAAI,SAAS1f,EAAQp3B,EAAOD,GAC7C,YACAC,GAAOD,QAAU,WAUjB,QAAS4xC,MAgDT,QAASoF,GAAMl3B,EAAMwiB,GACjB,GAAY,MAARxiB,GAAgBA,EAAK7B,cAAgBnc,EACrC,KAAM,IAAIg7B,GAAU,uFAExB,IAAwB,kBAAbwF,GACP,KAAM,IAAIxF,GAAU,gCAAkC7qB,EAAK2qB,YAAY0F,IAK/E,QAASxgC,GAAQwgC,GACTA,IAAa7H,GACbuc,EAAMp4B,KAAM0jB,GAEhB1jB,KAAK0c,UAAY,EACjB1c,KAAKq4B,4BACLr4B,KAAKs4B,0BACLt4B,KAAKu4B,iBACLv4B,KAAKw4B,kBACLx4B,KAAKy4B,qBAAqB/U,GAC1B1jB,KAAK0iB,kBACL1iB,KAAK4sB,WAAW,iBAAkB5sB,MAqnBtC,QAAS04B,GAAaC,GAAI34B,KAAK5c,QAAQu5B,iBAAiBgc,GACxD,QAASC,GAAYD,GAAI34B,KAAK5c,QAAQyxC,gBAAgB8D,MA4ClD,QAASE,GAAUnzC,GACf,GAAI1B,GAAI,GAAId,GAAQ24B,EACpB73B,GAAEq0C,qBAAuB3yC,EACzB1B,EAAEs0C,mBAAqB5yC,EACvB1B,EAAEu0C,UAAY7yC,EACd1B,EAAEw0C,WAAa9yC,EArvBvB,GAaI6jC,GAbAuP,EAA0B,WAC1B,MAAO,IAAI5a,GAAU,wEAErB6a,EAAiB,WACjB,MAAO,IAAI71C,GAAQ81C,kBAAkBh5B,KAAKkd,YAE1C8B,EAAe,SAASgH,GACxB,MAAO9iC,GAAQG,OAAO,GAAI66B,GAAU8H,KAGpCiT,KACA5lC,EAAOolB,EAAQ,SAIf8Q,GADAl2B,EAAK0nB,OACO,WACR,GAAInC,GAAMoC,EAAQwP,MAElB,iBADI5R,IAAmBA,EAAM,MACtBA,GAGC,WACR,MAAO,OAGfvlB,EAAK2xB,kBAAkB9hC,EAAS,aAAcqmC,EAE9C,IAAIgG,GAAM9W,EAAQ,SACdU,EAAQV,EAAQ,WAChB70B,EAAQ,GAAIu1B,EAChBoW,GAAI9qC,eAAevB,EAAS,UAAWwC,MAAO9B,GAC9C,IAAIqwC,GAASxb,EAAQ,YACjByF,EAAYh7B,EAAQg7B,UAAY+V,EAAO/V,SAC3Ch7B,GAAQ2sC,WAAaoE,EAAOpE,UAC5B,IAAIH,GAAoBxsC,EAAQwsC,kBAAoBuE,EAAOvE,iBAC3DxsC,GAAQysC,aAAesE,EAAOtE,aAC9BzsC,EAAQisC,iBAAmB8E,EAAO9E,iBAClCjsC,EAAQitC,eAAiB8D,EAAO9E,iBAChCjsC,EAAQ0sC,eAAiBqE,EAAOrE,cAChC,IAAI/T,GAAW,aACXqd,KACA3X,KACAzF,EAAsBrD,EAAQ,eAAev1B,EAAS24B,GACtDkD,EACAtG,EAAQ,mBAAmBv1B,EAAS24B,EACTC,EAAqBkD,EAAcgU,GAC9D9Q,EAAUzJ,EAAQ,aAAav1B,GAE/Bo/B,EAAgBJ,EAAQ9iB,OACxB2c,EAAQtD,EAAQ,mBAAmBv1B,EAASg/B,GAE5CyP,GADgB5V,EAAMqG,cAEtB3J,EAAQ,aAAav1B,EAAS44B,EAAqByF,IACnDC,EAAc/I,EAAQ,kBAAkB8I,GACxC8V,EAAqB5e,EAAQ,cAC7ByG,EAAW7rB,EAAK6rB,SAChBD,EAAW5rB,EAAK4rB,QA0sBhB,OAjrBJ/7B,GAAQd,UAAU67B,SAAW,WACzB,MAAO,oBAGX/6B,EAAQd,UAAU+rC,OAASjrC,EAAQd,UAAiB,MAAI,SAAU43B,GAC9D,GAAI6Y,GAAMlgC,UAAU3Q,MACpB,IAAI6wC,EAAM,EAAG,CACT,GACWvxC,GADPwxC,EAAiB,GAAI9+B,OAAM6+B,EAAM,GACjC7Q,EAAI,CACR,KAAK1gC,EAAI,EAAGA,EAAIuxC,EAAM,IAAKvxC,EAAG,CAC1B,GAAI80B,GAAOzjB,UAAUrR,EACrB,KAAI+R,EAAKyuB,SAAS1L,GAGd,MAAO4I,GAAa,0DACiB3rB,EAAK2qB,YAAY5H,GAHtD0c,GAAe9Q,KAAO5L,EAQ9B,MAFA0c,GAAe9wC,OAASggC,EACxBhI,EAAKrnB,UAAUrR,GACR0e,KAAKwyB,SAAKA,GAAWhR,EAAYsR,EAAgB9Y,EAAIha,OAEhE,MAAOA,MAAKwyB,SAAKA,GAAWxY,IAGhC92B,EAAQd,UAAU+2C,QAAU,WACxB,MAAOn5B,MAAKuc,MAAMwc,EACdA,SAA2B/4B,SAAKA,KAGxC9c,EAAQd,UAAUowC,KAAO,SAAU4G,EAAYC,GAC3C,GAAItd,EAAMqK,YAAczzB,UAAU3Q,OAAS,GACjB,kBAAfo3C,IACc,kBAAdC,GAA0B,CACjC,GAAIrT,GAAM,kDACF3yB,EAAK2qB,YAAYob,EACrBzmC,WAAU3Q,OAAS,IACnBgkC,GAAO,KAAO3yB,EAAK2qB,YAAYqb,IAEnCr5B,KAAKsf,MAAM0G,GAEf,MAAOhmB,MAAKuc,MAAM6c,EAAYC,aAAW1a,OAAWA,KAGxDz7B,EAAQd,UAAU0yC,KAAO,SAAUsE,EAAYC,GAEvCr5B,KAAKuc,MAAM6c,EAAYC,aAAW1a,OAAWA,IACzC2a,eAGZp2C,EAAQd,UAAUmzC,OAAS,SAAUvb,GACjC,MAAkB,kBAAPA,GACAgF,EAAa,gCAAkC3rB,EAAK2qB,YAAYhE,IAEpEha,KAAK2uB,MAAMpS,MAAMvC,aAAI2E,GAAsBua,WAGtDh2C,EAAQd,UAAUm3C,OAAS,WACvB,GAAI3gB,IACA0L,aAAYA,EACZ+N,YAAWA,EACXmH,qBAAiBA,GACjBC,oBAAgBA,GASpB,OAPIz5B,MAAKskB,eACL1L,EAAI4gB,iBAAmBx5B,KAAKta,QAC5BkzB,EAAI0L,gBACGtkB,KAAKqyB,eACZzZ,EAAI6gB,gBAAkBz5B,KAAK6nB,SAC3BjP,EAAIyZ,eAEDzZ,GAGX11B,EAAQd,UAAUusC,IAAM,WAIpB,MAHIh8B,WAAU3Q,OAAS,GACnBge,KAAKsf,MAAM,wDAER,GAAIP,GAAa/e,MAAM5c,WAGlCF,EAAQd,UAAUgD,MAAQ,SAAU40B,GAChC,MAAOha,MAAKmuB,OAAO96B,EAAKqmC,wBAAyB1f,IAGrD92B,EAAQy2C,kBAAoBt4C,EAAOD,QAEnC8B,EAAQqjB,GAAK,SAAUoxB,GACnB,MAAOA,aAAez0C,IAG1BA,EAAQ02C,SAAW12C,EAAQ22C,aAAe,SAAS7f,GAC/C,GAAIpB,GAAM,GAAI11B,GAAQ24B,EACtBjD,GAAIiS,oBACJ,IAAIyM,GAAY3kC,UAAU3Q,OAAS,KAAMG,OAAOwQ,UAAU,IAAI2kC,UAE1D7sB,EAASwU,EAASjF,GAAIqd,EAAmBze,EAAK0e,GAKlD,OAJI7sB,KAAWyU,GACXtG,EAAIic,gBAAgBpqB,EAAOjoB,GAAEA,GAE5Bo2B,EAAIkhB,iBAAiBlhB,EAAImhB,sBACvBnhB,GAGX11B,EAAQyrC,IAAM,SAAUhW,GACpB,MAAO,IAAIoG,GAAapG,GAAUv1B,WAGtCF,EAAQ82C,KAAO,SAAUx0C,GACrB,GAAIozB,GAAMkD,EAAoBt2B,EAO9B,OANMozB,aAAe11B,KACjB01B,EAAM,GAAI11B,GAAQ24B,GAClBjD,EAAIiS,qBACJjS,EAAIqhB,gBACJrhB,EAAI0f,mBAAqB9yC,GAEtBozB,GAGX11B,EAAQC,QAAUD,EAAQg3C,UAAYh3C,EAAQ82C,KAE9C92C,EAAQG,OAASH,EAAQi3C,SAAW,SAAUtS,GAC1C,GAAIjP,GAAM,GAAI11B,GAAQ24B,EAGtB,OAFAjD,GAAIiS,qBACJjS,EAAIic,gBAAgBhN,MACbjP,GAGX11B,EAAQq3B,aAAe,SAASP,GAC5B,GAAkB,kBAAPA,GACP,KAAM,IAAIkE,GAAU,gCAAkC7qB,EAAK2qB,YAAYhE,GAE3E,OAAOp2B,GAAM22B,aAAaP,IAG9B92B,EAAQd,UAAUm6B,MAAQ,SACtB6c,EACAC,EACAnd,EAAMjC,EACNmgB,GAEA,GAAIC,YAAmBD,EACnBh3C,EAAUi3C,EAAmBD,EAAe,GAAIl3C,GAAQ24B,GACxDva,EAAStB,KAAKkd,UACd6X,EAAWzzB,EAAOob,SAEjB2d,KACDj3C,EAAQy5B,eAAe7c,KAAM,GAC7B5c,EAAQynC,8BACJ5Q,GACgC,IAAb,QAAjBja,KAAK0c,aAEHzC,EAD4B,IAAd,SAAX8a,GACQ/0B,KAAK+c,cAELzb,IAAWtB,YAAmBA,KAAKqd,UAGtDrd,KAAK4sB,WAAW,iBAAkB5sB,KAAM5c,GAG5C,IAAIonC,GAASjB,GACb,IAAgC,IAAd,SAAXwL,GAA6B,CAChC,GAAIlI,GAASnnC,EAAO40C,EAAUh5B,EAAOi5B,iBACN,KAAd,SAAXxF,IACFrvC,EAAQ4b,EAAOg3B,mBACfzL,EAAUuM,GACwB,IAAd,SAAXrE,IACTrvC,EAAQ4b,EAAO+2B,qBACfxL,EAAUwM,EACV/3B,EAAOgpB,+BAEPgQ,EAAUh5B,EAAOk5B,uCACjB90C,EAAQ,GAAIgqC,GAAkB,8BAC9BpuB,EAAO4f,kBAAkBx7B,GACzBmnC,EAAUwM,GAGdz1C,EAAM03B,OAAOgf,EAASh5B,GAClBurB,QAAoB,OAAXrC,EAAkBqC,EACD,kBAAZA,IACNx5B,EAAKo3B,WAAWD,EAAQqC,GAChCzpC,QAASA,EACT62B,SAAUA,EACVv0B,MAAOA,QAGX4b,GAAOm5B,cAAcrB,EAAYC,EAAWj2C,EAAS62B,EAAUuQ,EAGnE,OAAOpnC,IAGXF,EAAQd,UAAUo+B,QAAU,WACxB,MAAwB,OAAjBxgB,KAAK0c,WAGhBx5B,EAAQd,UAAU03C,cAAgB,WAC9B,MAAwC,KAAf,UAAjB95B,KAAK0c,YAGjBx5B,EAAQd,UAAUs9B,aAAe,WAC7B,MAAuC,YAAd,SAAjB1f,KAAK0c,YAGjBx5B,EAAQd,UAAUs4C,WAAa,SAAU7H,GACrC7yB,KAAK0c,WAA+B,MAAlB1c,KAAK0c,UACZ,MAANmW,GAGT3vC,EAAQd,UAAU63C,cAAgB,WAC9Bj6B,KAAK0c,UAA6B,SAAjB1c,KAAK0c,UACtB1c,KAAK4sB,WAAW,mBAAoB5sB,OAGxC9c,EAAQd,UAAUu4C,aAAe,WAC7B36B,KAAK0c,UAA6B,SAAjB1c,KAAK0c,UACtB1c,KAAK4sB,WAAW,kBAAmB5sB,OAGvC9c,EAAQd,UAAUw4C,cAAgB,WAC9B56B,KAAK0c,UAA6B,SAAjB1c,KAAK0c,UACtB1c,KAAK4sB,WAAW,kBAAmB5sB,OAGvC9c,EAAQd,UAAUk3C,YAAc,WAC5Bt5B,KAAK0c,UAA6B,QAAjB1c,KAAK0c,WAG1Bx5B,EAAQd,UAAUy4C,SAAW,WACzB,OAAyB,QAAjB76B,KAAK0c,WAAuB,GAGxCx5B,EAAQd,UAAU04C,gBAAkB,WAChC96B,KAAK0c,WAA6B,MAAjB1c,KAAK0c,WAG1Bx5B,EAAQd,UAAUk+B,cAAgB,WAC9BtgB,KAAK0c,UAA6B,MAAjB1c,KAAK0c,UACtB1c,KAAK4sB,WAAW,mBAAoB5sB,OAGxC9c,EAAQd,UAAU29B,oBAAsB,WACpC/f,KAAK0c,UAA6B,QAAjB1c,KAAK0c,WAG1Bx5B,EAAQd,UAAU23C,oBAAsB,WAChCn2C,EAAM62B,uBACVza,KAAK0c,UAA6B,UAAjB1c,KAAK0c,YAG1Bx5B,EAAQd,UAAU24C,YAAc,SAAUrpB,GACtC,GAAIkH,GAAgB,IAAVlH,EAAc1R,KAAKw4B,WAAax4B,KAC1B,EAAR0R,EAAY,EAAI,EACxB,IAAIkH,IAAQqgB,EAEL,gBAAIrgB,GAAqB5Y,KAAKsd,WAC1Btd,KAAK+c,cAETnE,GAGX11B,EAAQd,UAAU44C,WAAa,SAAUtpB,GACrC,MAAO1R,MACS,EAAR0R,EAAY,EAAI,IAG5BxuB,EAAQd,UAAU64C,sBAAwB,SAAUvpB,GAChD,MAAO1R,MACS,EAAR0R,EAAY,EAAI,IAG5BxuB,EAAQd,UAAU84C,oBAAsB,SAAUxpB,GAC9C,MAAO1R,MACS,EAAR0R,EAAY,EAAI,IAG5BxuB,EAAQd,UAAU26B,YAAc,aAEhC75B,EAAQd,UAAU+4C,kBAAoB,SAAUC,GAC5C,GACIC,IADWD,EAAS1e,UACV0e,EAAS/C,sBACnBh1C,EAAS+3C,EAAS9C,mBAClBl1C,EAAUg4C,EAAS7C,UACnBte,EAAWmhB,EAASL,YAAY,OAAG,KACnC9gB,IAAwBA,EAAWgf,GACvCj5B,KAAKy6B,cAAcY,EAASh4C,EAAQD,EAAS62B,EAAU,OAG3D/2B,EAAQd,UAAUk5C,mBAAqB,SAAUF,EAAU1pB,GACvD,GAAI2pB,GAAUD,EAASH,sBAAsBvpB,GACzCruB,EAAS+3C,EAASF,oBAAoBxpB,GACtCtuB,EAAUg4C,EAASJ,WAAWtpB,GAC9BuI,EAAWmhB,EAASL,YAAYrpB,YAChCuI,IAAwBA,EAAWgf,GACvCj5B,KAAKy6B,cAAcY,EAASh4C,EAAQD,EAAS62B,EAAU,OAG3D/2B,EAAQd,UAAUq4C,cAAgB,SAC9BY,EACAh4C,EACAD,EACA62B,EACAuQ,GAEA,GAAI9Y,GAAQ1R,KAAKwgB,SAOjB,IALI9O,GAAS,QACTA,EAAQ,EACR1R,KAAK06B,WAAW,IAGN,IAAVhpB,EACA1R,KAAKu4B,UAAYn1C,EACjB4c,KAAKw4B,WAAave,EACK,kBAAZohB,KACPr7B,KAAKq4B,qBACU,OAAX7N,EAAkB6Q,EAAUhoC,EAAKo3B,WAAWD,EAAQ6Q,IAEtC,kBAAXh4C,KACP2c,KAAKs4B,mBACU,OAAX9N,EAAkBnnC,EAASgQ,EAAKo3B,WAAWD,EAAQnnC,QAExD,CACH,GAAIk4C,GAAe,EAAR7pB,EAAY,CACvB1R,MAAKu7B,EAAO,GAAKn4C,EACjB4c,KAAKu7B,EAAO,GAAKthB,EACM,kBAAZohB,KACPr7B,KAAKu7B,EAAO,GACG,OAAX/Q,EAAkB6Q,EAAUhoC,EAAKo3B,WAAWD,EAAQ6Q,IAEtC,kBAAXh4C,KACP2c,KAAKu7B,EAAO,GACG,OAAX/Q,EAAkBnnC,EAASgQ,EAAKo3B,WAAWD,EAAQnnC,IAI/D,MADA2c,MAAK06B,WAAWhpB,EAAQ,GACjBA,GAGXxuB,EAAQd,UAAU4yC,OAAS,SAAUwG,EAAWjxB,GAC5CvK,KAAKy6B,kBAAcA,OAAA9b,GAAsBpU,EAAKixB,EAAW,OAG7Dt4C,EAAQd,UAAUu6B,iBAAmB,SAASj3B,EAAO+1C,GACjD,GAAsC,IAAf,UAAjBz7B,KAAK0c,WAAX,CACA,GAAIh3B,IAAUsa,KACV,MAAOA,MAAK60B,gBAAgBiE,OAChC,IAAI7b,GAAenB,EAAoBp2B,EAAOsa,KAC9C,MAAMid,YAAwB/5B,IAAU,MAAO8c,MAAKo0B,SAAS1uC,EAEzD+1C,IAAYz7B,KAAK6c,eAAeI,EAAc,EAElD,IAAI75B,GAAU65B,EAAaC,SAE3B,IAAI95B,IAAY4c,KAEZ,WADAA,MAAKmc,QAAQ2c,IAIjB,IAAI/D,GAAW3xC,EAAQs5B,SACvB,IAA+B,IAAd,SAAXqY,GAA6B,CAC/B,GAAIlC,GAAM7yB,KAAKwgB,SACXqS,GAAM,GAAGzvC,EAAQ+3C,kBAAkBn7B,KACvC,KAAK,GAAI1e,GAAI,EAAGA,EAAIuxC,IAAOvxC,EACvB8B,EAAQk4C,mBAAmBt7B,KAAM1e,EAErC0e,MAAK46B,gBACL56B,KAAK06B,WAAW,GAChB16B,KAAK07B,aAAat4C,OACf,IAA+B,IAAd,SAAX2xC,GACT/0B,KAAKo0B,SAAShxC,EAAQirC,cACnB,IAA+B,IAAd,SAAX0G,GACT/0B,KAAKmc,QAAQ/4B,EAAQ8qC,eAClB,CACH,GAAIrG,GAAS,GAAI6H,GAAkB,6BACnCtsC,GAAQ89B,kBAAkB2G,GAC1B7nB,KAAKmc,QAAQ0L,MAIrB3kC,EAAQd,UAAUyyC,gBAClB,SAAShN,EAAQ8T,EAAaC,GAC1B,GAAIzoC,GAAQE,EAAKwoC,kBAAkBhU,GAC/BiU,EAAW3oC,IAAU00B,CACzB,KAAKiU,IAAaF,GAA0B7f,EAAMqK,WAAY,CAC1D,GAAIhzB,GAAU,4CACVC,EAAK2qB,YAAY6J,EACrB7nB,MAAKsf,MAAMlsB,MAEf4M,KAAKkhB,kBAAkB/tB,IAAOwoC,GAAcG,GAC5C97B,KAAKmc,QAAQ0L,IAGjB3kC,EAAQd,UAAUq2C,qBAAuB,SAAU/U,GAC/C,GAAIA,IAAa7H,EAAjB,CACA,GAAIz4B,GAAU4c,IACdA,MAAK6qB,qBACL7qB,KAAK2iB,cACL,IAAIgZ,MACApjB,EAAIvY,KAAK0sB,SAAShJ,EAAU,SAASh+B,GACrCtC,EAAQu5B,iBAAiBj3B,IAC1B,SAAUmiC,GACTzkC,EAAQyxC,gBAAgBhN,EAAQ8T,IAEpCA,MACA37B,KAAK4iB,uBAEDrK,GACAn1B,EAAQyxC,gBAAgBtc,GAAEA,KAIlCr1B,EAAQd,UAAU25C,0BAA4B,SAC1ClP,EAAS5S,EAAUv0B,EAAOtC,GAE1B,GAAI2xC,GAAW3xC,EAAQs5B,SACvB,IAA4B,IAAX,MAAXqY,GAAN,CACA3xC,EAAQu/B,cACR,IAAInc,EACAyT,KAAaif,EACRxzC,GAAiC,gBAAjBA,GAAM1D,OAKvBwkB,EAAIyY,EAAS4N,GAASn6B,MAAMsN,KAAK+c,cAAer3B,IAJhD8gB,EAAI0Y,EACJ1Y,EAAEhkB,EAAI,GAAI07B,GAAU,iCACI7qB,EAAK2qB,YAAYt4B,KAK7C8gB,EAAIyY,EAAS4N,GAASrrC,KAAKy4B,EAAUv0B,EAEzC,IAAIy/B,GAAiB/hC,EAAQw/B,aAED,KAAX,OADjBmS,EAAW3xC,EAAQs5B,cAGflW,IAAM+a,EACNn+B,EAAQ+4B,QAAQz2B,GACT8gB,IAAM0Y,EACb97B,EAAQyxC,gBAAgBruB,EAAEhkB,GAAEA,IAE5Bu5B,EAAMkJ,sBAAsBze,EAAG2e,EAAgB,GAAK/hC,EAAS4c,MAC7D5c,EAAQu5B,iBAAiBnW,OAIjCtjB,EAAQd,UAAU86B,QAAU,WAExB,IADA,GAAItE,GAAM5Y,KACH4Y,EAAI8G,gBAAgB9G,EAAMA,EAAI+G,WACrC,OAAO/G,IAGX11B,EAAQd,UAAUu9B,UAAY,WAC1B,MAAO3f,MAAKs4B,oBAGhBp1C,EAAQd,UAAUs5C,aAAe,SAASt4C,GACtC4c,KAAKs4B,mBAAqBl1C,GAG9BF,EAAQd,UAAU45C,eAAiB,SAAS54C,EAASypC,EAAS5S,EAAUv0B,GACpE,GAAIu2C,GAAY74C,YAAmBF,GAC/B6xC,EAAW/0B,KAAK0c,UAChBwf,EAA8C,IAAf,UAAXnH,EACI,KAAX,MAAXA,IACEkH,GAAW74C,EAAQi+B,0BAEnBpH,YAAoB0X,IACpB1X,EAASmY,oBACTnY,EAAS4X,cAAgBzuC,EACrB67B,EAAS4N,GAASrrC,KAAKy4B,EAAUv0B,KAAWw5B,GAC5C97B,EAAQ+4B,QAAQ+C,EAAS18B,IAEtBqqC,IAAYkM,EACnB31C,EAAQgxC,SAAS2E,EAAev3C,KAAKy4B,IAC9BA,YAAoB+Y,GAC3B/Y,EAASoa,kBAAkBjxC,GACpB64C,GAAa74C,YAAmB27B,GACvC37B,EAAQi9B,UAERpG,EAASmF,UAEa,kBAAZyN,GACToP,GAGGC,GAAiB94C,EAAQ22C,sBAC7B/5B,KAAK+7B,0BAA0BlP,EAAS5S,EAAUv0B,EAAOtC,IAHzDypC,EAAQrrC,KAAKy4B,EAAUv0B,EAAOtC,GAK3B62B,YAAoB+Y,GACtB/Y,EAASia,gBACqB,IAAd,SAAXa,GACF9a,EAASya,kBAAkBhvC,EAAOtC,GAElC62B,EAAS0a,iBAAiBjvC,EAAOtC,IAGlC64C,IACHC,GAAiB94C,EAAQ22C,sBACE,IAAd,SAAXhF,GACF3xC,EAAQgxC,SAAS1uC,GAEjBtC,EAAQ+4B,QAAQz2B,KAK5BxC,EAAQd,UAAUo4C,uCAAyC,SAASnX,GAChE,GAAIwJ,GAAUxJ,EAAIwJ,QACdzpC,EAAUigC,EAAIjgC,QACd62B,EAAWoJ,EAAIpJ,SACfv0B,EAAQ29B,EAAI39B,KACO,mBAAZmnC,GACDzpC,YAAmBF,GAGrB8c,KAAK+7B,0BAA0BlP,EAAS5S,EAAUv0B,EAAOtC,GAFzDypC,EAAQrrC,KAAKy4B,EAAUv0B,EAAOtC,GAI3BA,YAAmBF,IAC1BE,EAAQ+4B,QAAQz2B,IAIxBxC,EAAQd,UAAUm4C,kBAAoB,SAASlX,GAC3CrjB,KAAKg8B,eAAe3Y,EAAIjgC,QAASigC,EAAIwJ,QAASxJ,EAAIpJ,SAAUoJ,EAAI39B,QAGpExC,EAAQd,UAAU+5C,gBAAkB,SAAStP,EAASnnC,EAAOqvC,GACzD,GAAI3xC,GAAU4c,KAAKu4B,UACfte,EAAWja,KAAK+6B,YAAY,EAChC/6B,MAAKu4B,iBACLv4B,KAAKw4B,kBACLx4B,KAAKg8B,eAAe54C,EAASypC,EAAS5S,EAAUv0B,IAGpDxC,EAAQd,UAAUg6C,0BAA4B,SAAS1qB,GACnD,GAAI6pB,GAAe,EAAR7pB,EAAY,CACvB1R,MAAKu7B,EAAO,GACZv7B,KAAKu7B,EAAO,GACZv7B,KAAKu7B,EAAO,GACZv7B,KAAKu7B,EAAO,WAGhBr4C,EAAQd,UAAUgyC,SAAW,SAAU1uC,GACnC,GAAIqvC,GAAW/0B,KAAK0c,SACpB,OAAiB,UAAXqY,KAA0B,IAAhC,CACA,GAAIrvC,IAAUsa,KAAM,CAChB,GAAI9a,GAAM4zC,GAEV,OADA94B,MAAKkhB,kBAAkBh8B,GAChB8a,KAAKmc,QAAQj3B,GAExB8a,KAAKi6B,gBACLj6B,KAAKs4B,mBAAqB5yC,GAEV,MAAXqvC,GAAoB,IACW,IAAf,UAAXA,GACF/0B,KAAKwb,kBAEL53B,EAAM23B,eAAevb,SAKjC9c,EAAQd,UAAU+5B,QAAU,SAAU0L,GAClC,GAAIkN,GAAW/0B,KAAK0c,SACpB,OAAiB,UAAXqY,KAA0B,IAAhC,CAIA,GAHA/0B,KAAK26B,eACL36B,KAAKq4B,qBAAuBxQ,EAExB7nB,KAAK66B,WACL,MAAOj3C,GAAMk3B,WAAW+M,EAAQx0B,EAAK0nB,SAGzB,MAAXga,GAAoB,EACrBnxC,EAAM23B,eAAevb,MAErBA,KAAK4pB,oCAIb1mC,EAAQd,UAAUi6C,iBAAmB,SAAUxJ,EAAKntC,GAChD,IAAK,GAAIpE,GAAI,EAAGA,EAAIuxC,EAAKvxC,IAAK,CAC1B,GAAIurC,GAAU7sB,KAAKi7B,sBAAsB35C,GACrC8B,EAAU4c,KAAKg7B,WAAW15C,GAC1B24B,EAAWja,KAAK+6B,YAAYz5C,EAChC0e,MAAKo8B,0BAA0B96C,GAC/B0e,KAAKg8B,eAAe54C,EAASypC,EAAS5S,EAAUv0B,KAIxDxC,EAAQd,UAAUk6C,gBAAkB,SAAUzJ,EAAKhL,GAC/C,IAAK,GAAIvmC,GAAI,EAAGA,EAAIuxC,EAAKvxC,IAAK,CAC1B,GAAIurC,GAAU7sB,KAAKk7B,oBAAoB55C,GACnC8B,EAAU4c,KAAKg7B,WAAW15C,GAC1B24B,EAAWja,KAAK+6B,YAAYz5C,EAChC0e,MAAKo8B,0BAA0B96C,GAC/B0e,KAAKg8B,eAAe54C,EAASypC,EAAS5S,EAAU4N,KAIxD3kC,EAAQd,UAAUo5B,gBAAkB,WAChC,GAAIuZ,GAAW/0B,KAAK0c,UAChBmW,EAAkB,MAAXkC,CAEX,IAAIlC,EAAM,EAAG,CACT,GAA+B,IAAd,SAAXkC,GAA6B,CAC/B,GAAIlN,GAAS7nB,KAAKq4B,oBAClBr4B,MAAKm8B,gBAAgBn8B,KAAKs4B,mBAAoBzQ,EAAQkN,GACtD/0B,KAAKs8B,gBAAgBzJ,EAAKhL,OACvB,CACH,GAAIniC,GAAQsa,KAAKs4B,kBACjBt4B,MAAKm8B,gBAAgBn8B,KAAKq4B,qBAAsB3yC,EAAOqvC,GACvD/0B,KAAKq8B,iBAAiBxJ,EAAKntC,GAE/Bsa,KAAK06B,WAAW,GAEpB16B,KAAKysB,0BAGTvpC,EAAQd,UAAU8nC,cAAgB,WAC9B,GAAI6K,GAAW/0B,KAAK0c,SACpB,OAA+B,KAAd,SAAXqY,GACK/0B,KAAKs4B,mBACsB,IAAd,SAAXvD,GACF/0B,KAAKq4B,6BAOpBn1C,EAAQq5C,MAAQr5C,EAAQs5C,QAAU,WAG9B,MAFAzgB,GAAMkK,WAAW,gBAAiB,gBAG9B7iC,QAFU,GAAIF,GAAQ24B,GAGtB14B,QAASu1C,EACTr1C,OAAQu1C,IAIhBvlC,EAAK2xB,kBAAkB9hC,EACA,2BACA41C,GAEvBrgB,EAAQ,YAAYv1B,EAAS24B,EAAUC,EAAqBkD,EACxDjD,GACJtD,EAAQ,UAAUv1B,EAAS24B,EAAUC,EAAqBC,GAC1DtD,EAAQ,YAAYv1B,EAAS67B,EAAcC,EAAcjD,GACzDtD,EAAQ,oBAAoBv1B,GAC5Bu1B,EAAQ,4BAA4Bv1B,GACpCu1B,EAAQ,UACJv1B,EAAS67B,EAAcjD,EAAqBD,EAAUj4B,EAAO2lC,GACjErmC,EAAQA,QAAUA,EAClBA,EAAQ+a,QAAU,QAClBwa,EAAQ,YAAYv1B,EAAS67B,EAAcC,EAAclD,EAAqBD,EAAUE,GACxFtD,EAAQ,iBAAiBv1B,GACzBu1B,EAAQ,cAAcv1B,EAAS87B,EAAclD,EAAqBwG,EAAezG,EAAUE,GAC3FtD,EAAQ,eAAev1B,EAAS24B,EAAUE,GAC1CtD,EAAQ,mBAAmBv1B,EAAS87B,EAAcnD,EAAUC,EAAqBkX,EAAWjX,GAC5FtD,EAAQ,gBAAgBv1B,GACxBu1B,EAAQ,kBAAkBv1B,EAAS24B,GACnCpD,EAAQ,cAAcv1B,EAAS67B,EAAcjD,EAAqBkD,GAClEvG,EAAQ,aAAav1B,EAAS24B,EAAUC,EAAqBkD,GAC7DvG,EAAQ,eAAev1B,EAAS67B,EAAcC,EAAclD,EAAqBD,EAAUE,GAC3FtD,EAAQ,eAAev1B,EAAS67B,EAAchD,GAC9CtD,EAAQ,aAAav1B,EAAS67B,EAAcC,GAC5CvG,EAAQ,eAAev1B,EAAS24B,GAChCpD,EAAQ,aAAav1B,EAAS24B,GAC9BpD,EAAQ,YAAYv1B,GAEhBmQ,EAAKopC,iBAAiBv5C,GACtBmQ,EAAKopC,iBAAiBv5C,EAAQd,WAU9By2C,GAAWluB,EAAG,IACdkuB,GAAW9wB,EAAG,IACd8wB,GAAWz0C,EAAG,IACdy0C,EAAU,GACVA,EAAU,cACVA,UACAA,MACAA,EAAU,GAAI31C,GAAQ24B,IACtBE,EAAM4M,UAAUxP,EAAMmB,eAAgBjnB,EAAKu1B,eACpC1lC,KAIR,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,GAAG,kBAAkB,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,2BAA2B,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,KAAKw5C,IAAI,SAASjkB,EAAQp3B,EAAOD,GAC3iB,YACAC,GAAOD,QAAU,SAAS8B,EAAS24B,EAAUC,EACzCkD,EAAcgU,GAIlB,QAAS2J,GAAkBhF,GACvB,OAAOA,GACP,KAAM,EAAG,QACT,MAAM,EAAG,QACT,MAAM,EAAG,MAAO,IAAIiF,MAIxB,QAAS7d,GAAavL,GAClB,GAAIpwB,GAAU4c,KAAKyzB,SAAW,GAAIvwC,GAAQ24B,EACtCrI,aAAkBtwB,IAClBE,EAAQy5B,eAAerJ,EAAQ,GAEnCpwB,EAAQg6B,aAAapd,MACrBA,KAAKu2B,QAAU/iB,EACfxT,KAAKwgB,QAAU,EACfxgB,KAAK02B,eAAiB,EACtB12B,KAAKs2B,UAAMA,IAAY,GApB3B,GAAIjjC,GAAOolB,EAAQ,SAoLnB,OAnLcplB,GAAK0d,QAqBnB1d,EAAKy5B,SAAS/N,EAAciU,GAE5BjU,EAAa38B,UAAUJ,OAAS,WAC5B,MAAOge,MAAKwgB,SAGhBzB,EAAa38B,UAAUgB,QAAU,WAC7B,MAAO4c,MAAKyzB,UAGhB1U,EAAa38B,UAAUk0C,MAAQ,QAAStd,GAAKkD,EAAG2gB,GAC5C,GAAIrpB,GAASsI,EAAoB9b,KAAKu2B,QAASv2B,KAAKyzB,SACpD,IAAIjgB,YAAkBtwB,GAAS,CAC3BswB,EAASA,EAAO0J,SAChB,IAAI6X,GAAWvhB,EAAOkJ,SAItB,IAFA1c,KAAKu2B,QAAU/iB,EAEgB,IAAd,SAAXuhB,GAEF,MADA/0B,MAAKyzB,SAASsG,sBACPvmB,EAAO+I,MACVvD,EACAhZ,KAAKmc,YAAQA,GAEbnc,KACA68B,EAED,IAA+B,IAAd,SAAX9H,GAEN,MAA+B,KAAd,SAAXA,GACF/0B,KAAKmc,QAAQ3I,EAAO0a,WAEpBluB,KAAKqgB,SAJZ7M,GAASA,EAAO6a,SAQxB,GAAe,QADf7a,EAASngB,EAAKypC,QAAQtpB,IACD,CACjB,GAAItuB,GAAM85B,EACN,oDAAsD3rB,EAAK2qB,YAAYxK,IAASqU,QAEpF,YADA7nB,MAAKyzB,SAASoB,gBAAgB3vC,MAIlC,GAAsB,IAAlBsuB,EAAOxxB,OAOP,aAN6B,IAAzB66C,EACA78B,KAAK+8B,qBAGL/8B,KAAK22B,SAASgG,EAAkBE,IAIxC78B,MAAKg9B,SAASxpB,IAGlBuL,EAAa38B,UAAU46C,SAAW,SAASxpB,GACvC,GAAIqf,GAAM7yB,KAAKi9B,gBAAgBzpB,EAAOxxB,OACtCge,MAAKwgB,QAAUqS,EACf7yB,KAAKu2B,QAAUv2B,KAAKk9B,mBAAqB,GAAIlpC,OAAM6+B,GAAO7yB,KAAKu2B,OAI/D,KAAK,GAHD9rB,GAASzK,KAAKyzB,SACd0J,KACApI,EAAW,KACNzzC,EAAI,EAAGA,EAAIuxC,IAAOvxC,EAAG,CAC1B,GAAI27B,GAAenB,EAAoBtI,EAAOlyB,GAAImpB,EAE9CwS,aAAwB/5B,IACxB+5B,EAAeA,EAAaC,UAC5B6X,EAAW9X,EAAaP,WAExBqY,EAAW,KAGXoI,EACiB,OAAbpI,GACA9X,EAAa0M,8BAEG,OAAboL,EACwB,IAAd,SAAXA,IACF9X,EAAa+X,OAAOh1B,KAAM1e,GAC1B0e,KAAKu2B,QAAQj1C,GAAK27B,GAElBkgB,EADkC,IAAd,SAAXpI,GACI/0B,KAAK00B,kBAAkBzX,EAAaoR,SAAU/sC,GACzB,IAAd,SAAXyzC,GACI/0B,KAAK20B,iBAAiB1X,EAAaiR,UAAW5sC,GAE9C0e,KAAKq0B,kBAAkB/yC,GAGxC67C,EAAan9B,KAAK00B,kBAAkBzX,EAAc37B,GAGrD67C,GAAY1yB,EAAOsvB,uBAG5Bhb,EAAa38B,UAAU8xC,YAAc,WACjC,MAAwB,QAAjBl0B,KAAKu2B,SAGhBxX,EAAa38B,UAAUu0C,SAAW,SAAUjxC,GACxCsa,KAAKu2B,QAAU,KACfv2B,KAAKyzB,SAASW,SAAS1uC,IAG3Bq5B,EAAa38B,UAAUi+B,QAAU,YACzBrgB,KAAKk0B,eAAkBl0B,KAAKyzB,SAASjU,mBACzCxf,KAAKu2B,QAAU,KACfv2B,KAAKyzB,SAASpT,YAGlBtB,EAAa38B,UAAU+5B,QAAU,SAAU0L,GACvC7nB,KAAKu2B,QAAU,KACfv2B,KAAKyzB,SAASoB,gBAAgBhN,OAGlC9I,EAAa38B,UAAUsyC,kBAAoB,SAAUhvC,EAAOgsB,GAGxD,MAFA1R,MAAKu2B,QAAQ7kB,GAAShsB,IACAsa,KAAK02B,gBACN12B,KAAKwgB,UACtBxgB,KAAK22B,SAAS32B,KAAKu2B,cAM3BxX,EAAa38B,UAAUiyC,kBAAoB,WAEvC,MADAr0B,MAAKqgB,cAITtB,EAAa38B,UAAUuyC,iBAAmB,SAAU9M,GAGhD,MAFA7nB,MAAK02B,iBACL12B,KAAKmc,QAAQ0L,OAIjB9I,EAAa38B,UAAU++B,iBAAmB,WACtC,IAAInhB,KAAKk0B,cAAT,CACA,GAAI1gB,GAASxT,KAAKu2B,OAElB,IADAv2B,KAAKqgB,UACD7M,YAAkBtwB,GAClBswB,EAAO4L,aAEP,KAAK,GAAI99B,GAAI,EAAGA,EAAIkyB,EAAOxxB,SAAUV,EAC7BkyB,EAAOlyB,YAAc4B,IACrBswB,EAAOlyB,GAAG89B,WAM1BL,EAAa38B,UAAU86C,iBAAmB,WACtC,OAAM,GAGVne,EAAa38B,UAAU66C,gBAAkB,SAAUpK,GAC/C,MAAOA,IAGJ9T,KAGJ,SAAS,KAAKqe,IAAI,SAAS3kB,EAAQp3B,EAAOD,GAC7C,YACAC,GAAOD,QAAU,SAAS8B,EAAS24B,GA2BnC,QAASwhB,GAAY53C,GACjB,OAAQ63C,EAAmB1X,KAAKngC,GAGpC,QAAS83C,GAAcvjB,GACnB,IACI,OAAM,IAACA,EAAGwjB,kBAEd,MAAOh7C,GACH,OAAM,GAId,QAASi7C,GAAej4C,EAAKC,EAAKi4C,GAC9B,GAAI/F,GAAMtkC,EAAKsqC,yBAAyBn4C,EAAKC,EAAMi4C,EACXE,EACxC,SAAOjG,GAAM4F,EAAc5F,GAE/B,QAASkG,GAAWjlB,EAAK8kB,EAAQI,GAC7B,IAAK,GAAIx8C,GAAI,EAAGA,EAAIs3B,EAAI52B,OAAQV,GAAK,EAAG,CACpC,GAAImE,GAAMmzB,EAAIt3B,EACd,IAAIw8C,EAAalY,KAAKngC,GAElB,IAAK,GADDs4C,GAAwBt4C,EAAIsnB,QAAQ+wB,EAAc,IAC7C9b,EAAI,EAAGA,EAAIpJ,EAAI52B,OAAQggC,GAAK,EACjC,GAAIpJ,EAAIoJ,KAAO+b,EACX,KAAM,IAAI7f,GAAU,qGACfnR,QAAQ,KAAM2wB,KAOvC,QAASM,GAAqBx4C,EAAKk4C,EAAQI,EAAcjoB,GAGrD,IAAK,GAFD7qB,GAAOqI,EAAK4qC,kBAAkBz4C,GAC9BozB,KACKt3B,EAAI,EAAGA,EAAI0J,EAAKhJ,SAAUV,EAAG,CAClC,GAAImE,GAAMuF,EAAK1J,GACXoE,EAAQF,EAAIC,GACZy4C,EAAsBroB,IAAWsoB,GACxBA,EAAc14C,EAAKC,EAAOF,EAClB,mBAAVE,IACN63C,EAAc73C,IACd+3C,EAAej4C,EAAKC,EAAKi4C,KAC1B7nB,EAAOpwB,EAAKC,EAAOF,EAAK04C,IACxBtlB,EAAI12B,KAAKuD,EAAKC,GAItB,MADAm4C,GAAWjlB,EAAK8kB,EAAQI,GACjBllB,EAkIX,QAASwlB,GAA2B3H,EAAUxc,EAAUiC,EAAGlC,EAAIqkB,EAAI/G,GAM/D,QAASgH,KACL,GAAI1K,GAAY3Z,CACZA,KAAaskB,IAAM3K,EAAY5zB,KACnC,IAAI5c,GAAU,GAAIF,GAAQ24B,EAC1Bz4B,GAAQynC,oBACR,IAAInJ,GAAuB,gBAAXkK,IAAuB5rB,OAASw+B,EAC1Cx+B,KAAK4rB,GAAU6K,EACjBzc,EAAKqd,EAAmBj0C,EAASk0C,EACrC,KACI5V,EAAGhvB,MAAMkhC,EAAW6K,EAAa9rC,UAAWqnB,IAC9C,MAAMx3B,GACJY,EAAQyxC,gBAAgB2C,EAAiBh1C,IAAGA,GAAC,GAGjD,MADKY,GAAQ02C,iBAAiB12C,EAAQ22C,sBAC/B32C,EAnBX,GAAIo7C,GAAc,WAAa,MAAOx+B,SAClC4rB,EAAS6K,CAqBb,OApBsB,gBAAX7K,KACP6K,EAAWzc,GAkBf3mB,EAAK2xB,kBAAkBsZ,EAAa,qBAAoB,GACjDA,EAOX,QAASI,GAAal5C,EAAKk4C,EAAQ7nB,EAAQ8oB,EAAarH,GAKpD,IAAK,GAJDwG,GAAe,GAAIc,QAAOC,EAAiBnB,GAAU,KACrD5N,EACAkO,EAAqBx4C,EAAKk4C,EAAQI,EAAcjoB,GAE3Cv0B,EAAI,EAAGuxC,EAAM/C,EAAQ9tC,OAAQV,EAAIuxC,EAAKvxC,GAAI,EAAG,CAClD,GAAImE,GAAMqqC,EAAQxuC,GACd04B,EAAK8V,EAAQxuC,EAAE,GACfw9C,EAAiBr5C,EAAMi4C,CAC3B,IAAIiB,IAAgBI,EAChBv5C,EAAIs5C,GACAC,EAAoBt5C,EAAK84C,EAAM94C,EAAKu0B,EAAI0jB,EAAQpG,OACjD,CACH,GAAIgH,GAAcK,EAAY3kB,EAAI,WAC9B,MAAO+kB,GAAoBt5C,EAAK84C,EAAM94C,EACXu0B,EAAI0jB,EAAQpG,IAE3CjkC,GAAK2xB,kBAAkBsZ,EAAa,qBAAoB,GACxD94C,EAAIs5C,GAAkBR,GAI9B,MADAjrC,GAAKopC,iBAAiBj3C,GACfA,EAGX,QAASw5C,GAAUvI,EAAUxc,EAAUqd,GACnC,MAAOyH,GAAoBtI,EAAUxc,SACTwc,EAAU,KAAMa,GAtQhD,GAAIiH,MACAlrC,EAAOolB,EAAQ,UACf4e,EAAqB5e,EAAQ,cAC7BgmB,EAAeprC,EAAKorC,aACpBjH,EAAmBnkC,EAAKmkC,iBACxB/Y,EAAcprB,EAAKorB,YACnBP,EAAYzF,EAAQ,YAAYyF,UAEhC0f,GAAsBJ,mBAAkBA,GACxCyB,GACA,QAAY,SACZ,OACA,YACA,SACA,SACA,YACA,qBAEA3B,EAAqB,GAAIsB,QAAO,OAASK,EAAYhtB,KAAK,KAAO,MAEjEksB,EAAgB,SAAS75C,GACzB,MAAO+O,GAAKqrB,aAAap6B,IACF,MAAnBA,EAAK8iC,OAAO,IACH,gBAAT9iC,GAuDJu6C,EAAmB,SAAS7W,GAC5B,MAAOA,GAAIjb,QAAQ,QAAS,QAwJ5BgyB,EAAsBtgB,MArJtBygB,GAuJEd,CAgCNl7C,GAAQ87C,UAAY,SAAUhlB,EAAIje,GAC9B,GAAkB,kBAAPie,GACP,KAAM,IAAIkE,GAAU,gCAAkC7qB,EAAK2qB,YAAYhE,GAE3E,IAAIujB,EAAcvjB,GACd,MAAOA,EAEXje,GAAU5Z,OAAO4Z,EACjB,IAAIke,YAAWle,EAAQ+D,QAAwBy+B,EAAOxiC,EAAQ+D,QAC1Dw3B,IAAcv7B,EAAQu7B,UACtB1e,EAAMomB,EAAUhlB,EAAIC,EAAUqd,EAElC,OADAjkC,GAAK8rC,gBAAgBnlB,EAAIpB,EAAKykB,GACvBzkB,GAGX11B,EAAQw7C,aAAe,SAAUp9B,EAAQvF,GACrC,GAAsB,kBAAXuF,IAA2C,gBAAXA,GACvC,KAAM,IAAI4c,GAAU,+FAExBniB,GAAU5Z,OAAO4Z,EACjB,IAAIu7B,KAAcv7B,EAAQu7B,UACtBoG,EAAS3hC,EAAQ2hC,MACC,iBAAXA,KAAqBA,EAxRhB,QAyRhB,IAAI7nB,GAAS9Z,EAAQ8Z,MACC,mBAAXA,KAAuBA,EAASsoB,EAC3C,IAAIQ,GAAc5iC,EAAQ4iC,WAG1B,IAF2B,kBAAhBA,KAA4BA,EAAcI,IAEhD1rC,EAAKqrB,aAAagf,GACnB,KAAM,IAAI7N,YAAW,sEAIzB,KAAK,GADD7kC,GAAOqI,EAAK4qC,kBAAkB38B,GACzBhgB,EAAI,EAAGA,EAAI0J,EAAKhJ,SAAUV,EAAG,CAClC,GAAIoE,GAAQ4b,EAAOtW,EAAK1J,GACR,iBAAZ0J,EAAK1J,IACL+R,EAAK+rC,QAAQ15C,KACbg5C,EAAah5C,EAAMtD,UAAWs7C,EAAQ7nB,EAAQ8oB,EAC1CrH,GACJoH,EAAah5C,EAAOg4C,EAAQ7nB,EAAQ8oB,EAAarH,IAIzD,MAAOoH,GAAap9B,EAAQo8B,EAAQ7nB,EAAQ8oB,EAAarH,OAK1D,WAAW,GAAG,aAAa,GAAG,SAAS,KAAK+H,IAAI,SAAS5mB,EAAQp3B,EAAOD,GAC3E,YACAC,GAAOD,QAAU,SACb8B,EAAS67B,EAAcjD,EAAqBkD,GAqChD,QAASsgB,GAAuB95C,GAC5B,GACI+5C,GADAC,IAEJ,aAAIC,GAAwBj6C,YAAei6C,GACvCF,EAAUG,EAAal6C,GACvBg6C,SACG,CACH,GAAIx0C,GAAOukC,EAAIvkC,KAAKxF,GAChBqtC,EAAM7nC,EAAKhJ,MACfu9C,GAAU,GAAIvrC,OAAY,EAAN6+B,EACpB,KAAK,GAAIvxC,GAAI,EAAGA,EAAIuxC,IAAOvxC,EAAG,CAC1B,GAAImE,GAAMuF,EAAK1J,EACfi+C,GAAQj+C,GAAKkE,EAAIC,GACjB85C,EAAQj+C,EAAIuxC,GAAOptC,GAG3Bua,KAAK41B,aAAa2J,GAClBv/B,KAAK2/B,OAASH,EACdx/B,KAAKq2B,WAAOA,GAAWmJ,GAAS,GAAK,GAkCzC,QAAS3/B,GAAM8Y,GACX,GAAIC,GACAgnB,EAAY9jB,EAAoBnD,EAEpC,OAAKmJ,GAAS8d,IAGVhnB,EADOgnB,YAAqB18C,GACtB08C,EAAUrjB,MACZr5B,EAAQ2c,UAAMA,OAAC8e,OAAWA,OAAWA,IAEnC,GAAI2gB,GAAuBM,GAAWx8C,UAG5Cw8C,YAAqB18C,IACrB01B,EAAIiE,eAAe+iB,EAAW,GAE3BhnB,GAXIoG,EAAa,6EA7F5B,GAGIygB,GAHApsC,EAAOolB,EAAQ,UACfqJ,EAAWzuB,EAAKyuB,SAChByN,EAAM9W,EAAQ,QAEC,mBAARmkB,OAAoB6C,EAAS7C,IAExC,IAAI8C,GAAe,WAIf,QAASG,GAAan6C,EAAOD,GACzBua,KAAK0R,GAAShsB,EACdsa,KAAK0R,EAAQouB,GAAQr6C,EACrBisB,IANJ,GAAIA,GAAQ,EACRouB,EAAO,CAQX,OAAO,UAAsB9tB,GACzB8tB,EAAO9tB,EAAI8tB,KACXpuB,EAAQ,CACR,IAAIkH,GAAM,GAAI5kB,OAAiB,EAAXge,EAAI8tB,KAExB,OADA9tB,GAAI+tB,QAAQF,EAAcjnB,GACnBA,MAIXonB,EAAe,SAAST,GAGxB,IAAK,GAFD3mB,GAAM,GAAI6mB,GACVz9C,EAASu9C,EAAQv9C,OAAS,EAAI,EACzBV,EAAI,EAAGA,EAAIU,IAAUV,EAAG,CAC7B,GAAImE,GAAM85C,EAAQv9C,EAASV,GACvBoE,EAAQ65C,EAAQj+C,EACpBs3B,GAAIkY,IAAIrrC,EAAKC,GAEjB,MAAOkzB,GAuBXvlB,GAAKy5B,SAASwS,EAAwBvgB,GAEtCugB,EAAuBl9C,UAAUk0C,MAAQ,aAEzCgJ,EAAuBl9C,UAAUsyC,kBAAoB,SAAUhvC,EAAOgsB,GAGlE,GAFA1R,KAAKu2B,QAAQ7kB,GAAShsB,IACAsa,KAAK02B,gBACN12B,KAAKwgB,QAAS,CAC/B,GAAImX,EACJ,IAAI33B,KAAK2/B,OACLhI,EAAMqI,EAAahgC,KAAKu2B,aACrB,CACHoB,IAEA,KAAK,GADDsI,GAAYjgC,KAAKhe,SACZV,EAAI,EAAGuxC,EAAM7yB,KAAKhe,SAAUV,EAAIuxC,IAAOvxC,EAC5Cq2C,EAAI33B,KAAKu2B,QAAQj1C,EAAI2+C,IAAcjgC,KAAKu2B,QAAQj1C,GAIxD,MADA0e,MAAK22B,SAASgB,MAGlB,OAAM,GAGV2H,EAAuBl9C,UAAU86C,iBAAmB,WAChD,OAAM,GAGVoC,EAAuBl9C,UAAU66C,gBAAkB,SAAUpK,GACzD,MAAOA,IAAO,GAsBlB3vC,EAAQd,UAAUyd,MAAQ,WACtB,MAAOA,GAAMG,OAGjB9c,EAAQ2c,MAAQ,SAAU8Y,GACtB,MAAO9Y,GAAM8Y,OAId,QAAQ,GAAG,SAAS,KAAKunB,IAAI,SAASznB,EAAQp3B,EAAOD,GACxD,YACA,SAAS++C,GAAUp8C,EAAKq8C,EAAUC,EAAKC,EAAUzN,GAC7C,IAAK,GAAI7Q,GAAI,EAAGA,EAAI6Q,IAAO7Q,EACvBqe,EAAIre,EAAIse,GAAYv8C,EAAIi+B,EAAIoe,GAC5Br8C,EAAIi+B,EAAIoe,UAIhB,QAAS7mB,GAAMgnB,GACXvgC,KAAKwgC,UAAYD,EACjBvgC,KAAKwgB,QAAU,EACfxgB,KAAKygC,OAAS,EAGlBlnB,EAAMn3B,UAAUs+C,oBAAsB,SAAUZ,GAC5C,MAAO9/B,MAAKwgC,UAAYV,GAG5BvmB,EAAMn3B,UAAUi4B,SAAW,SAAU9P,GACjC,GAAIvoB,GAASge,KAAKhe,QAClBge,MAAK2gC,eAAe3+C,EAAS,GAE7Bge,KADSA,KAAKygC,OAASz+C,EAAWge,KAAKwgC,UAAY,GACzCj2B,EACVvK,KAAKwgB,QAAUx+B,EAAS,GAG5Bu3B,EAAMn3B,UAAUF,KAAO,SAAU83B,EAAIC,EAAU1P,GAC3C,GAAIvoB,GAASge,KAAKhe,SAAW,CAC7B,IAAIge,KAAK0gC,oBAAoB1+C,GAIzB,MAHAge,MAAKqa,SAASL,GACdha,KAAKqa,SAASJ,OACdja,MAAKqa,SAAS9P,EAGlB,IAAIyX,GAAIhiB,KAAKygC,OAASz+C,EAAS,CAC/Bge,MAAK2gC,eAAe3+C,EACpB,IAAI4+C,GAAW5gC,KAAKwgC,UAAY,CAChCxgC,MAAMgiB,EAAI,EAAK4e,GAAY5mB,EAC3Bha,KAAMgiB,EAAI,EAAK4e,GAAY3mB,EAC3Bja,KAAMgiB,EAAI,EAAK4e,GAAYr2B,EAC3BvK,KAAKwgB,QAAUx+B,GAGnBu3B,EAAMn3B,UAAUE,MAAQ,WACpB,GAAIu+C,GAAQ7gC,KAAKygC,OACb7nB,EAAM5Y,KAAK6gC,EAKf,OAHA7gC,MAAK6gC,UACL7gC,KAAKygC,OAAUI,EAAQ,EAAM7gC,KAAKwgC,UAAY,EAC9CxgC,KAAKwgB,UACE5H,GAGXW,EAAMn3B,UAAUJ,OAAS,WACrB,MAAOge,MAAKwgB,SAGhBjH,EAAMn3B,UAAUu+C,eAAiB,SAAUb,GACnC9/B,KAAKwgC,UAAYV,GACjB9/B,KAAK8gC,UAAU9gC,KAAKwgC,WAAa,IAIzCjnB,EAAMn3B,UAAU0+C,UAAY,SAAUP,GAClC,GAAIQ,GAAc/gC,KAAKwgC,SACvBxgC,MAAKwgC,UAAYD,EAIjBJ,EAAUngC,KAAM,EAAGA,KAAM+gC,EAHb/gC,KAAKygC,OACJzgC,KAAKwgB,QACuBugB,EAAc,IAI3D1/C,EAAOD,QAAUm4B,OAEXynB,IAAI,SAASvoB,EAAQp3B,EAAOD,GAClC,YACAC,GAAOD,QAAU,SACb8B,EAAS24B,EAAUC,EAAqBkD,GAS5C,QAASiiB,GAAKtoB,EAAUkH,GACpB,GAAI5C,GAAenB,EAAoBnD,EAEvC,IAAIsE,YAAwB/5B,GACxB,MAAOg+C,GAAUjkB,EAGjB,IAAiB,QADjBtE,EAAWtlB,EAAKypC,QAAQnkB,IAEpB,MAAOqG,GAAa,oDAAsD3rB,EAAK2qB,YAAYrF,GAGnG,IAAIC,GAAM,GAAI11B,GAAQ24B,YAClBgE,GACAjH,EAAIiE,eAAegD,EAAQ,EAI/B,KAAK,GAFDwb,GAAUziB,EAAIwb,SACd/wC,EAASu1B,EAAIuD,QACR76B,EAAI,EAAGuxC,EAAMla,EAAS32B,OAAQV,EAAIuxC,IAAOvxC,EAAG,CACjD,GAAIq2C,GAAMhf,EAASr3B,aAEfq2C,GAAuBr2C,IAAKq3B,KAIhCz1B,EAAQ82C,KAAKrC,GAAKpb,MAAM8e,EAASh4C,SAAmBu1B,EAAK,MAE7D,MAAOA,GAlCX,GAAIvlB,GAAOolB,EAAQ,UAEfyoB,EAAY,SAAU99C,GACtB,MAAOA,GAAQovC,KAAK,SAAS2O,GACzB,MAAOF,GAAKE,EAAO/9C,KAiC3BF,GAAQ+9C,KAAO,SAAUtoB,GACrB,MAAOsoB,GAAKtoB,WAGhBz1B,EAAQd,UAAU6+C,KAAO,WACrB,MAAOA,GAAKjhC,SAAKA,QAKlB,SAAS,KAAKohC,IAAI,SAAS3oB,EAAQp3B,EAAOD,GAC7C,YACAC,GAAOD,QAAU,SAAS8B,EACA67B,EACAC,EACAlD,EACAD,EACAE,GAK1B,QAASslB,GAAsB1oB,EAAUqB,EAAIsnB,EAAcC,GACvDvhC,KAAK41B,aAAajd,EAClB,IAAI6R,GAASjB,GACbvpB,MAAKwhC,IAAiB,OAAXhX,EAAkBxQ,EAAK3mB,EAAKo3B,WAAWD,EAAQxQ,YACtDsnB,IACAA,EAAep+C,EAAQC,QAAQm+C,GAC/BA,EAAa1d,4BAA4B5jB,OAE7CA,KAAKyhC,cAAgBH,EACrBthC,KAAK0hC,oBAAsB,KAEvB1hC,KAAK2hC,YADNJ,IAAU1lB,EACU7nB,MAAMgM,KAAKwgB,SACb,IAAV+gB,EACY,YAIvBvhC,KAAKyzB,SAAS5I,qBACd7qB,KAAKq2B,WAAOA,IAAY,GA0F5B,QAASuL,GAAUC,EAAeV,GAC1BnhC,KAAKskB,cACL6c,EAAMxK,SAASkL,GAEfV,EAAMhlB,QAAQ0lB,GAItB,QAAS52C,GAAO0tB,EAAUqB,EAAIsnB,EAAcC,GACxC,MAAkB,kBAAPvnB,GACAgF,EAAa,gCAAkC3rB,EAAK2qB,YAAYhE,IAE/D,GAAIqnB,GAAsB1oB,EAAUqB,EAAIsnB,EAAcC,GACrDn+C,UAGjB,QAAS0+C,GAASC,GACd/hC,KAAK+hC,MAAQA,EACb/hC,KAAKmhC,MAAMa,UAAUD,EACrB,IAAIr8C,GAAQo2B,EAAoB9b,KAAKta,MAAOsa,KAAKmhC,MAAM1N,SACvD,OAAI/tC,aAAiBxC,IACjB8c,KAAKmhC,MAAMO,oBAAsBh8C,EAC1BA,EAAM62B,MAAM0lB,aAAUtjB,GAAsB3e,SAAKA,KAEjDiiC,EAASzgD,KAAKwe,KAAMta,GAInC,QAASu8C,GAASv8C,GACd,GAAIy7C,GAAQnhC,KAAKmhC,MACb/9C,EAAU+9C,EAAM1N,SAChBzZ,EAAKiF,EAASkiB,EAAMK,IACxBp+C,GAAQu/B,cACR,IAAI/J,IAEAA,WADAuoB,EAAMQ,YACA3nB,EAAGx4B,KAAK4B,EAAQ25B,cAAer3B,EAAOsa,KAAK0R,MAAO1R,KAAKhe,QAEvDg4B,EAAGx4B,KAAK4B,EAAQ25B,cACA/c,KAAK+hC,MAAOr8C,EAAOsa,KAAK0R,MAAO1R,KAAKhe,kBAE3CkB,KACfi+C,EAAMO,oBAAsB9oB,EAEhC,IAAIuM,GAAiB/hC,EAAQw/B,aAO7B,OANA7G,GAAMkJ,sBACFrM,EACAuM,WACAgc,EAAMQ,YAA4B,eAAiB,iBACnDv+C,GAEGw1B,EAlKX,GAAI2Q,GAAYrmC,EAAQsmC,WACpBn2B,EAAOolB,EAAQ,UACfwG,EAAW5rB,EAAK4rB,QAsBpB5rB,GAAKy5B,SAASuU,EAAuBtiB,GAErCsiB,EAAsBj/C,UAAU4/C,UAAY,SAASD,YAC7C/hC,KAAK2hC,aACgB,OAArB3hC,KAAK2hC,aACLI,IAAUlmB,GACV7b,KAAK2hC,YAAYz/C,KAAK6/C,IAI9BV,EAAsBj/C,UAAU8/C,cAAgB,SAASx8C,GAIrD,MAHyB,QAArBsa,KAAK2hC,aACL3hC,KAAK2hC,YAAYz/C,KAAKwD,GAEnBsa,KAAK2hC,aAGhBN,EAAsBj/C,UAAUk0C,MAAQ,aAExC+K,EAAsBj/C,UAAU26C,mBAAqB,WACjD/8B,KAAK22B,aAASA,KAAA32B,KAAK2hC,YAA4B3hC,KAAK2hC,YACL3hC,KAAKyhC,gBAGxDJ,EAAsBj/C,UAAU86C,iBAAmB,WAC/C,OAAM,GAGVmE,EAAsBj/C,UAAUu0C,SAAW,SAASjxC,GAChDsa,KAAKyzB,SAAS9W,iBAAiBj3B,GAC/Bsa,KAAKu2B,QAAU,MAGnB8K,EAAsBj/C,UAAU++B,iBAAmB,SAASghB,GACxD,GAAIA,IAAWniC,KAAKyhC,cAAe,MAAOzhC,MAAKqgB,SAC3CrgB,MAAKk0B,gBACTl0B,KAAKoiC,oBACDpiC,KAAK0hC,8BAA+Bx+C,IACpC8c,KAAK0hC,oBAAoBtiB,SAEzBpf,KAAKyhC,wBAAyBv+C,IAC9B8c,KAAKyhC,cAAcriB,WAI3BiiB,EAAsBj/C,UAAU46C,SAAW,SAAUxpB,GACjDxT,KAAKu2B,QAAU/iB,CACf,IAAI9tB,GACApE,EACAU,EAASwxB,EAAOxxB,MAWpB,aAVIge,KAAKyhC,eACL/7C,EAAQsa,KAAKyhC,cACbngD,EAAI,IAEJoE,EAAQxC,EAAQC,QAAQqwB,EAAO,IAC/BlyB,EAAI,GAGR0e,KAAK0hC,oBAAsBh8C,GAEtBA,EAAM2sC,aACP,KAAO/wC,EAAIU,IAAUV,EAAG,CACpB,GAAI+hC,IACA0e,MAAO,KACPr8C,MAAO8tB,EAAOlyB,GACdowB,MAAOpwB,EACPU,OAAQA,EACRm/C,MAAOnhC,KAEXta,GAAQA,EAAM62B,MAAMulB,aAAUnjB,GAAsB0E,cAAK1E,KAI7D3e,KAAK2hC,cACLj8C,EAAQA,EACH62B,MAAMvc,KAAKkiC,kBAAcA,OAACvjB,GAAsB3e,SAAKA,KAE9Dta,EAAM62B,MAAMqlB,EAAWA,SAAsBl8C,EAAOsa,OAGxD9c,EAAQd,UAAU6I,OAAS,SAAU+uB,EAAIsnB,GACrC,MAAOr2C,GAAO+U,KAAMga,EAAIsnB,EAAc,OAG1Cp+C,EAAQ+H,OAAS,SAAU0tB,EAAUqB,EAAIsnB,EAAcC,GACnD,MAAOt2C,GAAO0tB,EAAUqB,EAAIsnB,EAAcC,OAyD3C,SAAS,KAAKc,IAAI,SAAS5pB,EAAQp3B,EAAOD,GAC7C,YACA,IACI04B,GADAzmB,EAAOolB,EAAQ,UAEf6pB,EAAmB,WACnB,KAAM,IAAIt/C,OAAM,mEAEhBu/C,EAAgBlvC,EAAKmvC,kBACzB,IAAInvC,EAAK0nB,QAAsC,mBAArB0nB,kBAAkC,CACxD,GAAIC,GAAqBzuC,EAAO0uC,aAC5BC,EAAkB5nB,EAAQ6nB,QAC9B/oB,GAAWzmB,EAAKyvC,aACF,SAAS9oB,GAAM0oB,EAAmBlhD,KAAKyS,EAAQ+lB,IAC/C,SAASA,GAAM4oB,EAAgBphD,KAAKw5B,EAAShB,QACxD,IAA6B,kBAAlBuoB,IAC0B,kBAA1BA,GAAcp/C,QAAwB,CACpD,GAAI4/C,GAAgBR,EAAcp/C,SAClC22B,GAAW,SAASE,GAChB+oB,EAAcvQ,KAAKxY,QAiCvBF,GA/BoC,mBAArB2oB,mBACW,mBAAX/gD,SACPA,OAAOshD,YACNthD,OAAOshD,UAAUC,YAAcvhD,OAAOwhD,kBA2BjCP,EACH,SAAU3oB,GACjB2oB,EAAa3oB,IAEY,mBAAf/1B,YACH,SAAU+1B,GACjB/1B,WAAW+1B,EAAI,IAGRsoB,EAnCA,WACP,GAAIa,GAAM5/C,SAASE,cAAc,OAC7B8oC,GAAQ6W,YAAWA,GACnBC,KACAC,EAAO//C,SAASE,cAAc,MACzB,IAAIg/C,kBAAiB,WAC1BU,EAAII,UAAUC,OAAO,OACrBH,OAEDI,QAAQH,EAAM/W,EAEjB,IAAImX,GAAiB,WACbL,IACJA,KACAC,EAAKC,UAAUC,OAAO,QAG1B,OAAO,UAAkBxpB,GACrB,GAAIx1B,GAAI,GAAIi+C,kBAAiB,WACzBj+C,EAAEm/C,aACF3pB,KAEJx1B,GAAEi/C,QAAQN,EAAK5W,GACfmX,OAcZriD,GAAOD,QAAU04B,IAEd,SAAS,KAAK8pB,IAAI,SAASnrB,EAAQp3B,EAAOD,GAC7C,YACAC,GAAOD,QACH,SAAS8B,EAAS67B,EAAchD,GAIpC,QAAS8nB,GAAoBrwB,GACzBxT,KAAK41B,aAAapiB,GAJtB,GAAIwlB,GAAoB91C,EAAQ81C,iBACrBvgB,GAAQ,UAKdqU,SAAS+W,EAAqB9kB,GAEnC8kB,EAAoBzhD,UAAU0hD,iBAAmB,SAAUpyB,EAAOqyB,GAG9D,MAFA/jC,MAAKu2B,QAAQ7kB,GAASqyB,IACA/jC,KAAK02B,gBACN12B,KAAKwgB,UACtBxgB,KAAK22B,SAAS32B,KAAKu2B,cAM3BsN,EAAoBzhD,UAAUsyC,kBAAoB,SAAUhvC,EAAOgsB,GAC/D,GAAIkH,GAAM,GAAIogB,EAGd,OAFApgB,GAAI8D,UAAY,SAChB9D,EAAIorB,mBAAqBt+C,EAClBsa,KAAK8jC,iBAAiBpyB,EAAOkH,IAExCirB,EAAoBzhD,UAAUuyC,iBAAmB,SAAU9M,EAAQnW,GAC/D,GAAIkH,GAAM,GAAIogB,EAGd,OAFApgB,GAAI8D,UAAY,SAChB9D,EAAIorB,mBAAqBnc,EAClB7nB,KAAK8jC,iBAAiBpyB,EAAOkH,IAGxC11B,EAAQ+gD,OAAS,SAAUtrB,GAEvB,MADAoD,GAAMkK,WAAW,YAAa,cACvB,GAAI4d,GAAoBlrB,GAAUv1B,WAG7CF,EAAQd,UAAU6hD,OAAS,WACvB,MAAO/gD,GAAQ+gD,OAAOjkC,UAIvB,SAAS,KAAKkkC,IAAI,SAASzrB,EAAQp3B,EAAOD,GAC7C,YACAC,GAAOD,QACP,SAAS8B,EAAS67B,EAAcC,GAQhC,QAASnG,GAAiBrF,GACtBxT,KAAK41B,aAAapiB,GAClBxT,KAAKmkC,SAAW,EAChBnkC,KAAKokC,WACLpkC,KAAKqkC,gBAiHT,QAASruB,GAAK2C,EAAU2rB,GACpB,IAAe,EAAVA,KAAiBA,GAAWA,EAAU,EACvC,MAAOtlB,GAAa,iEAExB,IAAIpG,GAAM,GAAIC,GAAiBF,GAC3Bv1B,EAAUw1B,EAAIx1B,SAGlB,OAFAw1B,GAAIE,WAAWwrB,GACf1rB,EAAII,OACG51B,EApIX,GAAIiQ,GAAOolB,EAAQ,UACfoX,EAAapX,EAAQ,YAAYoX,WACjCD,EAAiBnX,EAAQ,YAAYmX,eACrC7e,EAAU1d,EAAK0d,QACfwzB,IASJlxC,GAAKy5B,SAASjU,EAAkBkG,GAEhClG,EAAiBz2B,UAAUk0C,MAAQ,WAC/B,GAAKt2B,KAAKqkC,aAAV,CAGA,GAAsB,IAAlBrkC,KAAKmkC,SAEL,WADAnkC,MAAK22B,YAGT32B,MAAKq2B,WAAOA,IAAY,EACxB,IAAImO,GAAkBzzB,EAAQ/Q,KAAKu2B,UAC9Bv2B,KAAKk0B,eACNsQ,GACAxkC,KAAKmkC,SAAWnkC,KAAKykC,uBACrBzkC,KAAKmc,QAAQnc,KAAK0kC,eAAe1kC,KAAKhe,aAI9C62B,EAAiBz2B,UAAU42B,KAAO,WAC9BhZ,KAAKqkC,gBACLrkC,KAAKs2B,SAGTzd,EAAiBz2B,UAAU22B,UAAY,WACnC/Y,KAAKokC,YAGTvrB,EAAiBz2B,UAAUkiD,QAAU,WACjC,MAAOtkC,MAAKmkC,UAGhBtrB,EAAiBz2B,UAAU02B,WAAa,SAAU6rB,GAC9C3kC,KAAKmkC,SAAWQ,GAGpB9rB,EAAiBz2B,UAAUsyC,kBAAoB,SAAUhvC,GAErD,MADAsa,MAAK4kC,cAAcl/C,GACfsa,KAAK6kC,eAAiB7kC,KAAKskC,YAC3BtkC,KAAKu2B,QAAQv0C,OAASge,KAAKskC,UACJ,IAAnBtkC,KAAKskC,WAAmBtkC,KAAKokC,QAC7BpkC,KAAK22B,SAAS32B,KAAKu2B,QAAQ,IAE3Bv2B,KAAK22B,SAAS32B,KAAKu2B,cAO/B1d,EAAiBz2B,UAAUuyC,iBAAmB,SAAU9M,GAEpD,MADA7nB,MAAK8kC,aAAajd,GACX7nB,KAAK+kC,iBAGhBlsB,EAAiBz2B,UAAUiyC,kBAAoB,WAC3C,MAAIr0B,MAAKu2B,kBAAmBrzC,IAA2B,MAAhB8c,KAAKu2B,QACjCv2B,KAAKqgB,WAEhBrgB,KAAK8kC,aAAaP,GACXvkC,KAAK+kC,kBAGhBlsB,EAAiBz2B,UAAU2iD,cAAgB,WACvC,GAAI/kC,KAAKskC,UAAYtkC,KAAKykC,sBAAuB,CAE7C,IAAK,GADDjiD,GAAI,GAAIotC,GACHtuC,EAAI0e,KAAKhe,SAAUV,EAAI0e,KAAKu2B,QAAQv0C,SAAUV,EAC/C0e,KAAKu2B,QAAQj1C,KAAOijD,GACpB/hD,EAAEN,KAAK8d,KAAKu2B,QAAQj1C,GAQ5B,OALIkB,GAAER,OAAS,EACXge,KAAKmc,QAAQ35B,GAEbwd,KAAKqgB,aAIb,OAAM,GAGVxH,EAAiBz2B,UAAUyiD,WAAa,WACpC,MAAO7kC,MAAK02B,gBAGhB7d,EAAiBz2B,UAAU4iD,UAAY,WACnC,MAAOhlC,MAAKu2B,QAAQv0C,OAASge,KAAKhe,UAGtC62B,EAAiBz2B,UAAU0iD,aAAe,SAAUjd,GAChD7nB,KAAKu2B,QAAQr0C,KAAK2lC,IAGtBhP,EAAiBz2B,UAAUwiD,cAAgB,SAAUl/C,GACjDsa,KAAKu2B,QAAQv2B,KAAK02B,kBAAoBhxC,GAG1CmzB,EAAiBz2B,UAAUqiD,oBAAsB,WAC7C,MAAOzkC,MAAKhe,SAAWge,KAAKglC,aAGhCnsB,EAAiBz2B,UAAUsiD,eAAiB,SAAUC,GAClD,GAAIvxC,GAAU,qCACN4M,KAAKmkC,SAAW,4BAA8BQ,EAAQ,QAC9D,OAAO,IAAI9U,GAAWz8B,IAG1BylB,EAAiBz2B,UAAU26C,mBAAqB,WAC5C/8B,KAAKmc,QAAQnc,KAAK0kC,eAAe,KAcrCxhD,EAAQ8yB,KAAO,SAAU2C,EAAU2rB,GAC/B,MAAOtuB,GAAK2C,EAAU2rB,IAG1BphD,EAAQd,UAAU4zB,KAAO,SAAUsuB,GAC/B,MAAOtuB,GAAKhW,KAAMskC,IAGtBphD,EAAQ+1B,kBAAoBJ,KAGzB,WAAW,GAAG,SAAS,KAAKosB,IAAI,SAASxsB,EAAQp3B,EAAOD,GAC3D,YACAC,GAAOD,QAAU,SAAS8B,GAC1B,QAAS81C,GAAkB51C,YACnBA,GACAA,EAAUA,EAAQ85B,UAClBld,KAAK0c,UAAYt5B,EAAQs5B,UACzB1c,KAAKgkC,mBAAqB5gD,EAAQ02C,gBAC5B12C,EAAQ8mC,yBAGdlqB,KAAK0c,UAAY,EACjB1c,KAAKgkC,2BAIbhL,EAAkB52C,UAAU8nC,cAAgB,WACxC,MAAOlqB,MAAKgkC,mBAGhB,IAAIt+C,GAAQszC,EAAkB52C,UAAUsD,MAAQ,WAC5C,IAAKsa,KAAKskB,cACN,KAAM,IAAIpG,WAAU,4FAExB,OAAOle,MAAKkqB,iBAGZrC,EAASmR,EAAkB52C,UAAUgD,MACzC4zC,EAAkB52C,UAAUylC,OAAS,WACjC,IAAK7nB,KAAKqyB,aACN,KAAM,IAAInU,WAAU,0FAExB,OAAOle,MAAKkqB,iBAGZ5F,EAAc0U,EAAkB52C,UAAUkiC,YAAc,WACxD,MAAuC,KAAd,SAAjBtkB,KAAK0c,YAGb2V,EAAa2G,EAAkB52C,UAAUiwC,WAAa,WACtD,MAAuC,KAAd,SAAjBryB,KAAK0c,YAGbiE,EAAYqY,EAAkB52C,UAAUu+B,UAAY,WACpD,MAAuC,KAAd,SAAjB3gB,KAAK0c,YAGbygB,EAAanE,EAAkB52C,UAAU+6C,WAAa,WACtD,MAAuC,KAAd,SAAjBn9B,KAAK0c,WAGjBsc,GAAkB52C,UAAU0+B,YAAc,WACtC,MAAsC,KAAb,QAAjB9gB,KAAK0c,YAGjBx5B,EAAQd,UAAU8iD,cAAgB,WAC9B,MAAoC,SAAX,MAAjBllC,KAAK0c,YAGjBx5B,EAAQd,UAAUw+B,aAAe,WAC7B,MAAO5gB,MAAKkd,UAAUgoB,iBAG1BhiD,EAAQd,UAAU0+B,YAAc,WAC5B,MAAgD,KAAb,QAA3B9gB,KAAKkd,UAAUR,YAG3Bx5B,EAAQd,UAAUu+B,UAAY,WAC1B,MAAOA,GAAUn/B,KAAKwe,KAAKkd,YAG/Bh6B,EAAQd,UAAUiwC,WAAa,WAC3B,MAAOA,GAAW7wC,KAAKwe,KAAKkd,YAGhCh6B,EAAQd,UAAUkiC,YAAc,WAC5B,MAAOA,GAAY9iC,KAAKwe,KAAKkd,YAGjCh6B,EAAQd,UAAU+6C,WAAa,WAC3B,MAAOA,GAAW37C,KAAKwe,KAAKkd,YAGhCh6B,EAAQd,UAAUsD,MAAQ,WACtB,MAAOA,GAAMlE,KAAKwe,KAAKkd,YAG3Bh6B,EAAQd,UAAUylC,OAAS,WACvB,GAAIvmB,GAAStB,KAAKkd,SAElB,OADA5b,GAAOgpB,6BACAzC,EAAOrmC,KAAK8f,IAGvBpe,EAAQd,UAAUisC,OAAS,WACvB,MAAOruB,MAAKkqB,iBAGhBhnC,EAAQd,UAAU8rC,QAAU,WAExB,MADAluB,MAAKsqB,6BACEtqB,KAAKkqB,iBAGhBhnC,EAAQ81C,kBAAoBA,QAGtBmM,IAAI,SAAS1sB,EAAQp3B,EAAOD,GAClC,YACAC,GAAOD,QAAU,SAAS8B,EAAS24B,GAKnC,QAASC,GAAoBt2B,EAAKsa,GAC9B,GAAIgiB,EAASt8B,GAAM,CACf,GAAIA,YAAetC,GAAS,MAAOsC,EACnC,IAAIgtC,GAAO4S,EAAQ5/C,EACnB,IAAIgtC,IAAStT,EAAU,CACfpf,GAASA,EAAQ6iB,cACrB,IAAI/J,GAAM11B,EAAQG,OAAOmvC,EAAKhwC,EAE9B,OADIsd,IAASA,EAAQ8iB,cACdhK,EACJ,GAAoB,kBAAT4Z,GAAqB,CACnC,GAAI6S,EAAqB7/C,GAAM,CAC3B,GAAIozB,GAAM,GAAI11B,GAAQ24B,EAQtB,OAPAr2B,GAAI+2B,MACA3D,EAAIwb,SACJxb,EAAIuD,YAAQA,GAEZvD,EACA,MAEGA,EAEX,MAAO0sB,GAAW9/C,EAAKgtC,EAAM1yB,IAGrC,MAAOta,GAGX,QAAS+/C,GAAU//C,GACf,MAAOA,GAAIgtC,KAGf,QAAS4S,GAAQ5/C,GACb,IACI,MAAO+/C,GAAU//C,GACnB,MAAOhD,GAEL,MADA08B,GAAS18B,EAAIA,EACN08B,GAKf,QAASmmB,GAAqB7/C,GAC1B,IACI,MAAOggD,GAAQhkD,KAAKgE,EAAK,aAC3B,MAAOhD,GACL,OAAM,GAId,QAAS8iD,GAAW9+B,EAAGgsB,EAAM1yB,GAezB,QAAS3c,GAAQuC,GACRtC,IACLA,EAAQu5B,iBAAiBj3B,GACzBtC,EAAU,MAGd,QAASC,GAAOwkC,GACPzkC,IACLA,EAAQyxC,gBAAgBhN,EAAQ8T,MAChCv4C,EAAU,MAvBd,GAAIA,GAAU,GAAIF,GAAQ24B,GACtBjD,EAAMx1B,CACN0c,IAASA,EAAQ6iB,eACrBv/B,EAAQynC,qBACJ/qB,GAASA,EAAQ8iB,aACrB,IAAI+Y,MACAlxB,EAASpX,EAAK4rB,SAASuT,GAAMhxC,KAAKglB,EAAGrjB,EAASE,EAmBlD,OAlBAs4C,MAEIv4C,GAAWqnB,IAAWyU,IACtB97B,EAAQyxC,gBAAgBpqB,EAAOjoB,GAAEA,GAAC,GAClCY,EAAU,MAcPw1B,EA/EX,GAAIvlB,GAAOolB,EAAQ,UACfyG,EAAW7rB,EAAK6rB,SAChB4C,EAAWzuB,EAAKyuB,SA0ChB0jB,KAAanjD,cAsCjB,OAAOy5B,MAGJ,SAAS,KAAK2pB,IAAI,SAAShtB,EAAQp3B,EAAOD,GAC7C,YACAC,GAAOD,QAAU,SAAS8B,EAAS24B,EAAUE,GAI7C,QAAS2pB,GAAcC,GACnB3lC,KAAK2lC,OAASA,EAqDlB,QAASC,GAAalgD,GAElB,MADA7C,cAAamd,KAAK2lC,QACXjgD,EAGX,QAASmgD,GAAahe,GAElB,KADAhlC,cAAamd,KAAK2lC,QACZ9d,EAhEV,GAAIx0B,GAAOolB,EAAQ,UACfkX,EAAezsC,EAAQysC,YAM3B+V,GAActjD,UAAU++B,iBAAmB,WACvCt+B,aAAamd,KAAK2lC,QAGtB,IAAIG,GAAa,SAASpgD,GAAS,MAAOqgD,IAAO/lC,MAAM+tB,WAAWroC,IAC9DqgD,EAAQ7iD,EAAQ6iD,MAAQ,SAAUC,EAAItgD,GACtC,GAAIkzB,GACA+sB,CAgBJ,iBAfIjgD,GACAkzB,EAAM11B,EAAQC,QAAQuC,GACb62B,MAAMupB,EAAY,KAAM,KAAME,UACnCjqB,EAAMsD,gBAAkB35B,YAAiBxC,IACzC01B,EAAIwE,aAAa13B,KAGrBkzB,EAAM,GAAI11B,GAAQ24B,GAClB8pB,EAAS1hD,WAAW,WAAa20B,EAAIwb,aAAgB4R,GACjDjqB,EAAMsD,gBACNzG,EAAIwE,aAAa,GAAIsoB,GAAcC,IAEvC/sB,EAAIiS,sBAERjS,EAAImhB,sBACGnhB,EAGX11B,GAAQd,UAAU2jD,MAAQ,SAAUC,GAChC,MAAOD,GAAMC,EAAIhmC,MAGrB,IAAIimC,GAAe,SAAU7iD,EAASgQ,EAASysB,GAC3C,GAAI36B,EAGIA,GAFe,gBAAZkO,GACHA,YAAmBpQ,OACboQ,EAEA,GAAIu8B,GAAa,uBAGrB,GAAIA,GAAav8B,GAE3BC,EAAK+jC,+BAA+BlyC,GACpC9B,EAAQ89B,kBAAkBh8B,GAC1B9B,EAAQ+4B,QAAQj3B,GAEF,MAAV26B,GACAA,EAAOT,SAcfl8B,GAAQd,UAAUU,QAAU,SAAUkjD,EAAI5yC,GACtC4yC,GAAMA,CACN,IAAIptB,GAAKiH,EAELqmB,EAAgB,GAAIR,GAAczhD,WAAW,WACzC20B,EAAI+H,aACJslB,EAAartB,EAAKxlB,EAASysB,IAEhCmmB,GAYH,OAVIjqB,GAAMsD,gBACNQ,EAAS7f,KAAKwyB,OACd5Z,EAAMiH,EAAOtD,MAAMqpB,EAAcC,SACFK,UAC/BttB,EAAIwE,aAAa8oB,IAEjBttB,EAAM5Y,KAAKuc,MAAMqpB,EAAcC,SACAK,UAG5BttB,MAKR,SAAS,KAAKutB,IAAI,SAAS1tB,EAAQp3B,EAAOD,GAC7C,YACAC,GAAOD,QAAU,SAAU8B,EAAS87B,EAAclD,EAC9CwG,EAAezG,EAAUE,GAQzB,QAAS+R,GAAQtrC,GACbyB,WAAW,WAAW,KAAMzB,IAAK,GAGrC,QAAS4jD,GAAyBC,GAC9B,GAAIppB,GAAenB,EAAoBuqB,EAOvC,OANIppB,KAAiBopB,GACiB,kBAA3BA,GAASC,eACiB,kBAA1BD,GAASE,cAChBF,EAASC,iBACTrpB,EAAaupB,eAAeH,EAASE,gBAElCtpB,EAEX,QAASwpB,GAAQC,EAAW3C,GAIxB,QAAS4C,KACL,GAAIrlD,GAAKuxC,EAAK,MAAOja,GAAIwb,UACzB,IAAInX,GAAempB,EAAyBM,EAAUplD,KACtD,IAAI27B,YAAwB/5B,IACxB+5B,EAAaqpB,gBAAiB,CAC9B,IACIrpB,EAAenB,EACXmB,EAAaspB,eAAeK,WAAW7C,GACvC2C,EAAUtjD,SAChB,MAAOZ,GACL,MAAOsrC,GAAQtrC,GAEnB,GAAIy6B,YAAwB/5B,GACxB,MAAO+5B,GAAaV,MAAMoqB,EAAU7Y,EACV,KAAM,KAAM,MAG9C6Y,IApBJ,GAAIrlD,GAAI,EACJuxC,EAAM6T,EAAU1kD,OAChB42B,EAAM,GAAI11B,GAAQ24B,EAqBtB,OADA8qB,KACO/tB,EAGX,QAASiuB,GAASC,EAAM1jD,EAAS0c,GAC7BE,KAAK+mC,MAAQD,EACb9mC,KAAKyzB,SAAWrwC,EAChB4c,KAAKgnC,SAAWlnC,EAoCpB,QAASmnC,GAAiBjtB,EAAI52B,EAAS0c,GACnCE,KAAK41B,aAAa5b,EAAI52B,EAAS0c,GASnC,QAASonC,GAAoBxhD,GACzB,MAAImhD,GAASM,WAAWzhD,IACpBsa,KAAK0mC,UAAU1mC,KAAK0R,OAAO80B,eAAe9gD,GACnCA,EAAMtC,WAEVsC,EAGX,QAAS0hD,GAAaplD,GAClBge,KAAKhe,OAASA,EACdge,KAAK5c,QAAU,KACf4c,KAAKhe,EAAO,GAAK,KA5GrB,GAAIqR,GAAOolB,EAAQ,UACfyF,EAAYzF,EAAQ,YAAYyF,UAChC4O,EAAWrU,EAAQ,UAAUqU,SAC7B5N,EAAW7rB,EAAK6rB,SAChBD,EAAW5rB,EAAK4rB,SAChBooB,IAiDJR,GAASzkD,UAAU0kD,KAAO,WACtB,MAAO9mC,MAAK+mC,OAGhBF,EAASzkD,UAAUgB,QAAU,WACzB,MAAO4c,MAAKyzB,UAGhBoT,EAASzkD,UAAUklD,SAAW,WAC1B,MAAItnC,MAAK5c,UAAUkhC,cACRtkB,KAAK5c,UAAUsC,QAEnB2hD,GAGXR,EAASzkD,UAAUwkD,WAAa,SAAS7C,GACrC,GAAIuD,GAAWtnC,KAAKsnC,WAChBxnC,EAAUE,KAAKgnC,aAASA,KACxBlnC,GAAuBA,EAAQ6iB,cACnC,IAAI/J,GAAM0uB,IAAaD,EACjBrnC,KAAKunC,UAAUD,EAAUvD,GAAc,IAI7C,iBAHIjkC,GAAuBA,EAAQ8iB,cACnC5iB,KAAKyzB,SAAS+T,mBACdxnC,KAAK+mC,MAAQ,KACNnuB,GAGXiuB,EAASM,WAAa,SAAU9iD,GAC5B,MAAa,OAALA,GACsB,kBAAfA,GAAEijD,UACe,kBAAjBjjD,GAAEuiD,YAMrB9Z,EAASma,EAAkBJ,GAE3BI,EAAiB7kD,UAAUmlD,UAAY,SAAUD,EAAUvD,GAEvD,MADS/jC,MAAK8mC,OACJtlD,KAAK8lD,EAAUA,EAAUvD,IAiBvCqD,EAAahlD,UAAU++B,iBAAmB,WAEtC,IAAK,GADD0R,GAAM7yB,KAAKhe,OACNV,EAAI,EAAGA,EAAIuxC,IAAOvxC,EAAG,CAC1B,GAAI80B,GAAOpW,KAAK1e,EACZ80B,aAAgBlzB,IAChBkzB,EAAKgJ,WAKjBl8B,EAAQukD,MAAQ,WACZ,GAAI5U,GAAMlgC,UAAU3Q,MACpB,IAAI6wC,EAAM,EAAG,MAAO7T,GACJ,sDAChB,IAAIhF,GAAKrnB,UAAUkgC,EAAM,EACzB,IAAkB,kBAAP7Y,GACP,MAAOgF,GAAa,gCAAkC3rB,EAAK2qB,YAAYhE,GAE3E,IAAI0tB,GACAC,IACQ,KAAR9U,GAAa7+B,MAAM+c,QAAQpe,UAAU,KACrC+0C,EAAQ/0C,UAAU,GAClBkgC,EAAM6U,EAAM1lD,OACZ2lD,OAEAD,EAAQ/0C,UACRkgC,IAGJ,KAAK,GADD6T,GAAY,GAAIU,GAAavU,GACxBvxC,EAAI,EAAGA,EAAIuxC,IAAOvxC,EAAG,CAC1B,GAAIgmD,GAAWI,EAAMpmD,EACrB,IAAIulD,EAASM,WAAWG,GAAW,CAC/B,GAAIM,GAAWN,CACfA,GAAWA,EAASlkD,UACpBkkD,EAASd,eAAeoB,OACrB,CACH,GAAI3qB,GAAenB,EAAoBwrB,EACnCrqB,aAAwB/5B,KACxBokD,EACIrqB,EAAaV,MAAM2qB,EAAqB,KAAM,MAC1CR,UAAWA,EACXh1B,MAAOpwB,YAIvBolD,EAAUplD,GAAKgmD,EAInB,IAAK,GADDO,GAAqB,GAAI7zC,OAAM0yC,EAAU1kD,QACpCV,EAAI,EAAGA,EAAIumD,EAAmB7lD,SAAUV,EAC7CumD,EAAmBvmD,GAAK4B,EAAQC,QAAQujD,EAAUplD,IAAI63C,SAG1D,IAAI2O,GAAgB5kD,EAAQyrC,IAAIkZ,GAC3BrV,KAAK,SAASuV,GACX,IAAK,GAAIzmD,GAAI,EAAGA,EAAIymD,EAAY/lD,SAAUV,EAAG,CACzC,GAAIyiD,GAAagE,EAAYzmD,EAC7B,IAAIyiD,EAAW1R,aAEX,MADAnT,GAAS18B,EAAIuhD,EAAW3+C,QACjB85B,CACJ,KAAK6kB,EAAWzf,cAEnB,WADAwjB,GAAc1oB,QAGlB2oB,GAAYzmD,GAAKyiD,EAAWr+C,QAEhCtC,EAAQu/B,eAER3I,EAAKiF,EAASjF,EACd,IAAIpB,GAAM+uB,EACJ3tB,EAAGtnB,UAAMA,GAAWq1C,GAAe/tB,EAAG+tB,GACxC5iB,EAAiB/hC,EAAQw/B,aAG7B,OAFA7G,GAAMkJ,sBACFrM,EAAKuM,EAAgB,gBAAiB/hC,GACnCw1B,IAGXx1B,EAAU0kD,EAAcrV,OAAO,WAC/B,GAAIsR,GAAa,GAAI7gD,GAAQ81C,kBAAkB8O,EAC/C,OAAOrB,GAAQC,EAAW3C,IAI9B,OAFA2C,GAAUtjD,QAAUA,EACpBA,EAAQg6B,aAAaspB,GACdtjD,GAGXF,EAAQd,UAAUokD,eAAiB,SAAUoB,GACzC5nC,KAAK0c,UAA6B,OAAjB1c,KAAK0c,UACtB1c,KAAKgoC,UAAYJ,GAGrB1kD,EAAQd,UAAUkkD,cAAgB,WAC9B,OAAyB,OAAjBtmC,KAAK0c,WAAsB,GAGvCx5B,EAAQd,UAAUmkD,aAAe,WAC7B,MAAOvmC,MAAKgoC,WAGhB9kD,EAAQd,UAAUolD,iBAAmB,WACjCxnC,KAAK0c,WAA6B,OAAjB1c,KAAK0c,UACtB1c,KAAKgoC,kBAGT9kD,EAAQd,UAAUwlD,SAAW,SAAU5tB,GACnC,GAAkB,kBAAPA,GACP,MAAO,IAAIitB,GAAiBjtB,EAAIha,KAAMsiB,IAE1C,MAAM,IAAIpE,OAKf,WAAW,GAAG,SAAS,KAAK+pB,IAAI,SAASxvB,EAAQp3B,EAAOD,GAC3D,YAWA,SAAS8mD,KACL,IACI,GAAI5mC,GAAS6mC,CAEb,OADAA,GAAiB,KACV7mC,EAAO5O,MAAMsN,KAAMrN,WAC5B,MAAOnQ,GAEL,MADA08B,GAAS18B,EAAIA,EACN08B,GAGf,QAASD,GAASjF,GAEd,MADAmuB,GAAiBnuB,EACVkuB,EAuBX,QAASE,GAAYzQ,GACjB,MAAc,OAAPA,QAAeA,QAAgBA,GACnB,gBAARA,IAAmC,gBAARA,GAI1C,QAAS7V,GAASp8B,GACd,MAAwB,kBAAVA,IACU,gBAAVA,IAAgC,OAAVA,EAGxC,QAAS8xC,GAAiB6Q,GACtB,MAAKD,GAAYC,GAEV,GAAIrlD,OAAMslD,EAAaD,IAFOA,EAKzC,QAAS5J,GAAan9B,EAAQinC,GAC1B,GAEIjnD,GAFAuxC,EAAMvxB,EAAOtf,OACb42B,EAAM,GAAI5kB,OAAM6+B,EAAM,EAE1B,KAAKvxC,EAAI,EAAGA,EAAIuxC,IAAOvxC,EACnBs3B,EAAIt3B,GAAKggB,EAAOhgB,EAGpB,OADAs3B,GAAIt3B,GAAKinD,EACF3vB,EAGX,QAAS+kB,GAAyBn4C,EAAKC,EAAK+iD,GACxC,IAAIjZ,EAAIc,MASJ,SAAUhuC,eAAeb,KAAKgE,EAAKC,GAAOD,EAAIC,SAR9C,IAAI2rC,GAAOjvC,OAAOouC,yBAAyB/qC,EAAKC,EAEhD,OAAY,OAAR2rC,EACmB,MAAZA,EAAKxsC,KAA2B,MAAZwsC,EAAKN,IACtBM,EAAK1rC,MACL8iD,SAOtB,QAASxjB,GAAkBx/B,EAAKlB,EAAMoB,GAClC,GAAI0iD,EAAY5iD,GAAM,MAAOA,EAC7B,IAAIqrC,IACAnrC,MAAOA,EACPhB,cAAaA,EACbC,YAAWA,EACXgB,UAASA,EAGb,OADA4pC,GAAI9qC,eAAee,EAAKlB,EAAMusC,GACvBrrC,EAGX,QAASsoC,GAAQvV,GACb,KAAMA,GAsEV,QAAS6mB,GAAQplB,GACb,IACI,GAAkB,kBAAPA,GAAmB,CAC1B,GAAIhvB,GAAOukC,EAAIiB,MAAMxW,EAAG53B,WAEpBqmD,EAAalZ,EAAIc,OAASrlC,EAAKhJ,OAAS,EACxC0mD,EAAiC19C,EAAKhJ,OAAS,KAC7B,IAAhBgJ,EAAKhJ,QAA4B,gBAAZgJ,EAAK,IAC5B29C,EACAC,EAAsBhjB,KAAK5L,EAAK,KAAOuV,EAAIiB,MAAMxW,GAAIh4B,OAAS,CAElE,IAAIymD,GAAcC,GACdC,EACA,OAAM,EAGd,OAAM,EACR,MAAOnmD,GACL,OAAM,GAId,QAASi6C,GAAiBj3C,GAEtB,QAASqjD,MACTA,EAAgBzmD,UAAYoD,CAE5B,KADA,GAAIjE,GAAI,EACDA,KAAK,GAAIsnD,EAChB,OAAOrjD,GAKX,QAASk5B,GAAasJ,GAClB,MAAO8gB,GAAOljB,KAAKoC,GAGvB,QAAS+gB,GAAYpE,EAAOqE,EAAQtL,GAEhC,IAAI,GADA9kB,GAAM,GAAI5kB,OAAM2wC,GACZrjD,EAAI,EAAGA,EAAIqjD,IAASrjD,EACxBs3B,EAAIt3B,GAAK0nD,EAAS1nD,EAAIo8C,CAE1B,OAAO9kB,GAGX,QAAS0vB,GAAa9iD,GAClB,IACI,MAAOA,GAAM,GACf,MAAOhD,GACL,MAAO,8BAIf,QAASymD,GAAQzjD,GACb,MAAe,QAARA,GACe,gBAARA,IACgB,gBAAhBA,GAAI4N,SACS,gBAAb5N,GAAIlB,KAGtB,QAAS8yC,GAA+B50C,GACpC,IACIwiC,EAAkBxiC,EAAG,iBAAgB,GAEzC,MAAM0mD,KAGV,QAASxP,GAAwBl3C,GAC7B,MAAS,OAALA,IACKA,YAAaQ,OAA8B,uBAAEmsC,uBAClD3sC,EAAiB,eAGzB,QAASkiC,GAAel/B,GACpB,MAAOyjD,GAAQzjD,IAAQ+pC,EAAIoB,mBAAmBnrC,EAAK,SAkBvD,QAASw4B,GAAYx4B,GACjB,SAAUy4B,SAASz8B,KAAKgE,GAG5B,QAAS25C,GAAgBluB,EAAMk4B,EAAItzB,GAE/B,IAAK,GADD7qB,GAAOukC,EAAIiB,MAAMvf,GACZ3vB,EAAI,EAAGA,EAAI0J,EAAKhJ,SAAUV,EAAG,CAClC,GAAImE,GAAMuF,EAAK1J,EACf,IAAIu0B,EAAOpwB,GACP,IACI8pC,EAAI9qC,eAAe0kD,EAAI1jD,EAAK8pC,EAAIe,cAAcrf,EAAMxrB,IACtD,MAAOyjD,MAyCrB,QAASxf,GAAIjkC,GACT,MAAO2jD,GAAkB,gCAAY3jD,UAGzC,QAAS+8C,KACL,GAAuB,kBAAZt/C,SACP,IACI,GAAIE,GAAU,GAAIF,SAAQ,aAC1B,IAAkC,wBAA3B+6B,SAASz8B,KAAK4B,GACjB,MAAOF,SAEb,MAAOV,KAIjB,QAASioC,GAAWvpB,EAAMwgB,GACtB,MAAOxgB,GAAK4D,KAAK4c,GA1UrB,GAIIymB,GAJA5Y,EAAM9W,EAAQ,SACdgG,EAAkC,mBAAbukB,WAErB9jB,GAAY18B,MAEZ6mD,EAA+B,mBAATnoC,MAAuBA,KAC3B,mBAAXxf,QAAyBA,gBACzBuS,EAAyBA,WAChC+L,KAAqBA,KAAO,KAiB5B8sB,EAAW,SAASwc,EAAOC,GAG3B,QAASC,KACLxpC,KAAKX,YAAciqC,EACnBtpC,KAAK41B,aAAe2T,CACpB,KAAK,GAAI3qB,KAAgB2qB,GAAOnnD,UACxBojD,EAAQhkD,KAAK+nD,EAAOnnD,UAAWw8B,IACgB,MAA/CA,EAAawI,OAAOxI,EAAa58B,OAAO,KAExCge,KAAK4e,EAAe,KAAO2qB,EAAOnnD,UAAUw8B,IATxD,GAAI4mB,MAAanjD,cAejB,OAFAmnD,GAAEpnD,UAAYmnD,EAAOnnD,UACrBknD,EAAMlnD,UAAY,GAAIonD,GACfF,EAAMlnD,WA8Db67C,EAAoB,WACpB,GAAIwL,IACAz1C,MAAM5R,UACND,OAAOC,UACPsnD,SAAStnD,WAGTunD,EAAkB,SAAShS,GAC3B,IAAK,GAAIr2C,GAAI,EAAGA,EAAImoD,EAAmBznD,SAAUV,EAC7C,GAAImoD,EAAmBnoD,KAAOq2C,EAC1B,OAAM,CAGd,UAGJ,IAAIpI,EAAIc,MAAO,CACX,GAAItO,GAAU5/B,OAAOsuC,mBACrB,OAAO,UAASjrC,GAGZ,IAFA,GAAIozB,MACAgxB,EAAcznD,OAAOid,OAAO,MAClB,MAAP5Z,IAAgBmkD,EAAgBnkD,IAAM,CACzC,GAAIwF,EACJ,KACIA,EAAO+2B,EAAQv8B,GACjB,MAAOhD,GACL,MAAOo2B,GAEX,IAAK,GAAIt3B,GAAI,EAAGA,EAAI0J,EAAKhJ,SAAUV,EAAG,CAClC,GAAImE,GAAMuF,EAAK1J,EACf,KAAIsoD,EAAYnkD,GAAhB,CACAmkD,EAAYnkD,KACZ,IAAI2rC,GAAOjvC,OAAOouC,yBAAyB/qC,EAAKC,EACpC,OAAR2rC,GAA4B,MAAZA,EAAKxsC,KAA2B,MAAZwsC,EAAKN,KACzClY,EAAI12B,KAAKuD,IAGjBD,EAAM+pC,EAAImB,eAAelrC,GAE7B,MAAOozB,IAGX,GAAI4sB,MAAanjD,cACjB,OAAO,UAASmD,GACZ,GAAImkD,EAAgBnkD,GAAM,QAC1B,IAAIozB,KAGJixB,GAAa,IAAK,GAAIpkD,KAAOD,GACzB,GAAIggD,EAAQhkD,KAAKgE,EAAKC,GAClBmzB,EAAI12B,KAAKuD,OACN,CACH,IAAK,GAAInE,GAAI,EAAGA,EAAImoD,EAAmBznD,SAAUV,EAC7C,GAAIkkD,EAAQhkD,KAAKioD,EAAmBnoD,GAAImE,GACpC,QAASokD,EAGjBjxB,GAAI12B,KAAKuD,GAGjB,MAAOmzB,OAMfgwB,EAAwB,sBAiCxBE,EAAS,wBA6CTjN,EAAoB,WACpB,MAAM,SAAW,IAAI74C,OAOV,SAAS0C,GACZ,MAAIg/B,GAAeh/B,GAAeA,EAC3B,GAAI1C,OAAMslD,EAAa5iD,KAR3B,SAASA,GACZ,GAAIg/B,EAAeh/B,GAAQ,MAAOA,EAClC,KAAK,KAAM,IAAI1C,OAAMslD,EAAa5iD,IAClC,MAAMR,GAAM,MAAOA,QA0B3B43C,EAAU,SAASnE,GACnB,MAAIpJ,GAAIxe,QAAQ4nB,GACLA,EAEJ,KAGX,IAAsB,mBAAXmR,SAA0BA,OAAOnD,SAAU,CAClD,GAAIoD,GAAkC,kBAAf/1C,OAAMid,KAAsB,SAAS0nB,GACxD,MAAO3kC,OAAMid,KAAK0nB,IAClB,SAASA,GAIT,IAHA,GAEIqR,GAFApxB,KACAqxB,EAAKtR,EAAEmR,OAAOnD,cAERqD,EAAWC,EAAGpoC,QAAY,MAChC+W,EAAI12B,KAAK8nD,EAAStkD,MAEtB,OAAOkzB,GAGXkkB,GAAU,SAASnE,GACf,MAAIpJ,GAAIxe,QAAQ4nB,GACLA,EACK,MAALA,GAA2C,kBAAvBA,GAAEmR,OAAOnD,UAC7BoD,EAAUpR,GAEd,MAIf,GAAI5d,YAAgBC,GAC2B,qBAAvCgD,EAAYhD,GAAS3E,cAEzB+yB,WAAyBpuB,MAsBzBpC,GACAwmB,QAASA,EACT1gB,aAAcA,EACduf,kBAAmBA,EACnBN,yBAA0BA,EAC1B7P,QAASA,EACT/c,QAASwe,EAAIxe,QACb+rB,QAASA,EACT9X,kBAAmBA,EACnBojB,YAAaA,EACbtmB,SAAUA,EACVmnB,QAASA,EACTxqB,YAAaA,EACbS,SAAUA,EACVD,SAAUA,EACV6N,SAAUA,EACV2R,aAAcA,EACdjH,iBAAkBA,EAClBiF,iBAAkBA,EAClBsM,YAAaA,EACb9qB,SAAUqqB,EACV5jB,eAAgBA,EAChBmX,kBAAmBA,EACnBnC,wBAAyBA,EACzBtC,+BAAgCA,EAChCpZ,YAAaA,EACbmhB,gBAAiBA,EACjBvkB,YAA+B,mBAAXsvB,SAA0BA,QACL,kBAArBA,QAAOC,UAC3BpvB,OAAQA,EACRquB,gBAAiBA,EACjB1f,IAAKA,EACLz1B,OAAQo1C,EACR7G,iBAAkBA,EAClB/X,WAAYA,EAEhB7R,GAAIkqB,aAAelqB,EAAImC,QAAU,WAC7B,GAAI9c,GAAU+c,EAAQovB,SAASnd,KAAKvvB,MAAM,KAAKsU,IAAIq4B,OACnD,OAAuB,KAAfpsC,EAAQ,IAAYA,EAAQ,GAAK,IAAQA,EAAQ,GAAK,KAG9D2a,EAAImC,QAAQnC,EAAI6jB,iBAAiBzhB,EAErC,KAAK,KAAM,IAAIh4B,OAAW,MAAOR,GAAIo2B,EAAIgQ,cAAgBpmC,EACzDnB,EAAOD,QAAUw3B,IAEd,QAAQ,UAAU,IAAI,SACqB,mBAAXl3B,SAAqC,OAAXA,OAAiDA,OAAO4oD,EAAI5oD,OAAOwB,QAAwF,mBAATge,OAAiC,OAATA,OAA6CA,KAAKopC,EAAIppC,KAAKhe,W7BszFrQ1B,KAAKJ,EAASH,EAAoB,IAAKA,EAAoB,GAAIA,EAAoB,IAAKA,EAAoB,KAAK0hD,eAIxI,SAAUthD,EAAQiE,EAAqBrE,GAE7C,Y8B9yQe,SAASspD,KAAkB,GAAV/kD,GAAU,yDACtC,QAAKA,GAG+B,IAA5BrD,OAAO6I,KAAKxF,GAAKxD,OAJ7B,O9B2zQM,SAAUX,EAAQiE,EAAqBrE,GAE7C,Y+B5yQA,SAASupD,GAAKluC,EAAIhY,EAAM6X,EAAUsuC,GAAuD,GAAxCC,GAAwC,uDAA1B7jD,IAAYyG,IAAKmH,EAAS,aAC/E83B,GAASjoC,QACTqmD,EAASxuC,EAASA,cAAcG,GAAQA,EAAK,OAC7CsuC,EAAwB,WAAPtuC,EAAD,IAAwBouC,EAAgB,GAC1DpjB,EAAQmjB,EAActuC,EAASA,cAAcwuC,GAAWpe,GACxDse,EAAcJ,EAActuC,EAASA,oBAAoBwuC,EAASC,GAAkBre,GACpFue,EAAWL,EAActuC,EAAS,iBAStC,OANgB,cAAZ1H,IACA6yB,EAAQA,EAAMva,QAAQ,aAAc,aACpC89B,EAAcA,EAAY99B,QAAQ,aAAc,aAChD+9B,EAAWA,EAAS/9B,QAAQ,aAAc,eAI1Cua,QACAujB,cACAC,Y/B2xQuB7pD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOylD,KAEpE9pD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO0lD,KACpE/pD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO2lD,KACpEhqD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO4lD,KACpEjqD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO6lD,KAEpElqD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO8lD,IAC9E,IAAIC,GAAyCpqD,EAAoB,GAE7DqqD,GADiDrqD,EAAoB4D,EAAEwmD,GACnBpqD,EAAoB,KACxEsqD,EAA4DtqD,EAAoB4D,EAAEymD,GAClFE,EAA2CvqD,EAAoB,GAC/DwqD,EAAuCxqD,EAAoB,GAC3DyqD,EAAuEzqD,EAAoB,KAC3F0qD,EAAmD1qD,EAAoB,IACvE2qD,EAA6C3qD,EAAoB,GACjE4qD,EAA+C5qD,EAAoB,IACnE6qD,EAAiD7qD,EAAoB,IACrE8qD,EAAyD9qD,EAAoB,IAClGmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,I+Bv0QvOnY,EAAuBrD,IAA/BoD,KAAQC,iBACV6iD,EAAe,SAAC,GAAD,QAAGC,IAAH,yBACfhwC,EAAe,SAACigB,EAAD,UAA8B/f,SAA9B,EAAMA,SAAkC+vC,KAAxC,EAAgBA,MAEtB5yC,8BAAe0yC,EAAc,SAACC,GAAD,MAAUA,IAwB/C,IAAMlB,GAAezxC,yBACxBH,IACAN,IACAmzC,EACAlyC,IACAmC,EACAkwC,IACA,kBAOK,QANC7wC,oBAMD,WALCe,qCAKD,WAJCC,cAID,EAJM,OAIN,EAJoB8vC,EAIpB,EAJc9nD,KAAgB+nD,EAI9B,EAJ8BA,KAC7B53C,EAGD,EAHCA,QAGD,4DAFC0H,EAED,EAFCA,SAED,IAFW+vC,IAEX,sBAFmBzB,GAEnB,EAFmBA,cAEnB,eADCvuC,EACD,EADCA,KAEMoB,EAAoDhC,EAApDgC,KAAML,EAA8C3B,EAA9C2B,SAAUxB,EAAoCH,EAApCG,KAAM4B,EAA8B/B,EAA9B+B,QAAgBivC,EAAchxC,EAArBC,MADtC,EAEkEc,MAFlE,IAEOkwC,oBAFP,EAEkBlvC,EAFlB,MAE2Bd,oBAF3B,EAEsCd,EAFtC,MAE4CF,iBAF5C,EAEoD+wC,EAFpD,EAKGE,EAAkBvvC,EAAlB,MAAgCK,EAAOivC,EAAWhwC,EAChDkwC,EAAoD,MAA3BD,EAAa34C,OAAO,GAAc24C,EAAa34C,MAAM,GAAI,GAAK24C,EACvFE,EAAkBxwC,GAAiB,KAATA,EAAT,QAAgCA,EAAS,GAC5D5X,EAAO8nD,EACP1B,SACAiC,EAAYF,EACZG,SACAC,SACAC,EAAiB79B,IACjB89B,KACAC,EAAiB,GAEfC,EAAY9qD,OAAO6I,KAAKuQ,GACxB2xC,EAAwBC,IAAcF,EAAW9jD,EAEvD,IAAI+jD,EAAsBlrD,OAAS,GAAKqqD,EAAM,CAAC,GACnCxB,GAAyDwB,EAAzDxB,YAAauC,EAA4Cf,EAA5Ce,UAAiBC,EAA2BhB,EAAjC/nD,KAAgBgpD,EAAiBjB,EAAjBiB,MAChD5C,GADiE2B,EAAT3oD,IAIxD,IAAM6pD,IAAyBC,YAA2BjyC,EAAO2xC,EACjEF,GAAkBO,IAAqD,KAA3BA,IAA3B,IAAiEA,GAG3D,KAAnBP,GAA4C,KAAnBN,EACzBM,EAAoBA,EAApB,IAAsCN,EACZ,KAAnBM,GAA4C,KAAnBN,IAChCM,MAAqBN,GAIzBG,EAAcQ,EACdP,EAAiBM,EACjBR,EAAoB/B,EACpB8B,KAAeF,EAAwBO,EAGtB,YAAbzwC,IACAjY,EAAO+oD,EACPb,KAAkBC,EAAwBO,IAI/B,SAAXM,GAAqBhwC,EAAK5B,QAAQ,eAAiB,KACnDqxC,MAIR,GAAMU,IAAYjD,EAAKluC,EAAIhY,EAAM6X,EAAUsuC,EAAeC,EAAaj2C,EAEvE,aACOg5C,IACHjB,eACAM,iBACAF,kBAAmBA,GAAqBa,GAAU5C,YAClDgC,YAAaA,GAAeY,GAAUnmB,MACtCqlB,YACAI,cAKCW,EAAsBp0C,yBAC/B0yC,EACA,oBAAGv3C,OAAH,0BAGSu2C,EAAmB1xC,yBAC5BV,IACAozC,EACAlyC,IACA4zC,EACA,kBAAkF,QAA/EC,QAA+E,2BAAnEC,oBAAmE,OAAzCtxC,EAAyC,EAAzCA,GAAQ7H,EAAiC,EAAjCA,QAAiC,IAApBk5C,oBAAoB,MAC9E,IAAIC,EAASn5C,GAAU,CAAC,GAAD,GACqBm5C,EAASn5C,GAAzCnQ,EADW,EACXA,KAAMupD,EADK,EACLA,QAASC,EADJ,EACIA,YACvBH,GAASrpD,KAAOA,EAChBqpD,EAASE,QAAUA,EACnBF,EAASG,aAAeA,EAQ5B,MAJW,WAAPxxC,GAA0B,sBAAPA,IACnBqxC,EAASE,QAAUF,EAASG,cAGzBH,IAIF1C,EAAkB3xC,yBAC3BH,IACAY,IACA,WAAgBE,GAAhB,GAAG8zC,GAAH,EAAGA,SAAH,OACI9zC,aACO8zC,IAIF7C,EAAqB5xC,yBAC9B0yC,EACA,SAACC,GAAD,MAAWA,GAAK+B,cAIP7C,EAAoB7xC,yBAC7BS,IACAk0C,IACA95B,IACAuC,IACA,SAACzc,EAAYi0C,EAAYC,EAAcx3B,GAInC,MACI1c,MACEi0C,GAAeA,GAAcv3B,GAAew3B,IACS,IAAlDA,EAAazyC,QAAQvU,IAAawH,aACc,IAAjDw/C,EAAazyC,QAAQvU,IAAa6H,aAerCo8C,GAPmB9xC,yBAC5BH,IAGA,qBAAGi1C,WAG2B90C,yBAC9B0yC,EACA7yC,IACA,cAGK,QAFCmD,cAED,EAFM,QAEN,MADChB,QACD,2BADa+B,OAId,iBAHC,EADuB,SACvB,GAGD,KAFuB,SAAPf,EAAiB,QAAUA,O/Bw3Q7C,SAAUjb,EAAQD,EAASH,GgC7jRjC;;;;;CAOC,WACA,YAIA,SAASotD,KAGR,IAAK,GAFDC,MAEKhtD,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAC1C,GAAIipB,GAAM5X,UAAUrR,EACpB,IAAKipB,EAAL,CAEA,GAAIgkC,SAAiBhkC,EAErB,IAAgB,WAAZgkC,GAAoC,WAAZA,EAC3BD,EAAQpsD,KAAKqoB,OACP,IAAIvW,MAAM+c,QAAQxG,IAAQA,EAAIvoB,OAAQ,CAC5C,GAAIwsD,GAAQH,EAAW37C,MAAM,KAAM6X,EAC/BikC,IACHF,EAAQpsD,KAAKssD,OAER,IAAgB,WAAZD,EACV,IAAK,GAAI9oD,KAAO8kB,GACXxD,EAAOvlB,KAAK+oB,EAAK9kB,IAAQ8kB,EAAI9kB,IAChC6oD,EAAQpsD,KAAKuD,IAMjB,MAAO6oD,GAAQr8B,KAAK,KA3BrB,GAAIlL,MAAY1kB,mBAAeA,KA8BpBhB,GAA0BA,EAAOD,SAC3CitD,EAAWI,QAAUJ,EACrBhtD,EAAOD,QAAUitD,IAGjB,eAAyB,EAAF,WACtB,MAAOA,IACP,gChCykRG,SAAUhtD,EAAQD,EAASH,GAEjC,YiC9mRA,SAASytD,GAAS/W,GACjB,GAAY,OAARA,YAAgBA,EACnB,KAAM,IAAIzZ,WAAU,wDAGrB,OAAO/7B,QAAOw1C;;;;;AATf,GAAIgX,GAAwBxsD,OAAOwsD,sBAC/BtsD,EAAiBF,OAAOC,UAAUC,eAClCusD,EAAmBzsD,OAAOC,UAAUysD,oBAsDxCxtD,GAAOD,QA5CP,WACC,IACC,IAAKe,OAAOkf,OACX,OAAM,CAMP,IAAIytC,GAAQ,GAAIrnB,QAAO,MAEvB,IADAqnB,EAAM,GAAK,KACkC,MAAzC3sD,OAAOsuC,oBAAoBqe,GAAO,GACrC,OAAM,CAKP,KAAK,GADDC,MACKztD,EAAI,EAAGA,EAAI,GAAIA,IACvBytD,EAAM,IAAMtnB,OAAOunB,aAAa1tD,IAAMA,CAKvC,IAAwB,eAHXa,OAAOsuC,oBAAoBse,GAAO/8B,IAAI,SAAUntB,GAC5D,MAAOkqD,GAAMlqD,KAEHotB,KAAK,IACf,OAAM,CAIP,IAAIg9B,KAIJ,OAHA,uBAAuBvxC,MAAM,IAAIqiC,QAAQ,SAAUmP,GAClDD,EAAMC,GAAUA,IAGf,yBADE/sD,OAAO6I,KAAK7I,OAAOkf,UAAW4tC,IAAQh9B,KAAK,IAM9C,MAAO/sB,GAER,OAAM,MAI6B/C,OAAOkf,OAAS,SAAUC,EAAQC,GAKtE,IAAK,GAJD0P,GAEAk+B,EADAhG,EAAKuF,EAASptC,GAGTjc,EAAI,EAAGA,EAAIsN,UAAU3Q,OAAQqD,IAAK,CAC1C4rB,EAAO9uB,OAAOwQ,UAAUtN,GAExB,KAAK,GAAII,KAAOwrB,GACX5uB,EAAeb,KAAKyvB,EAAMxrB,KAC7B0jD,EAAG1jD,GAAOwrB,EAAKxrB,GAIjB,IAAIkpD,EAAuB,CAC1BQ,EAAUR,EAAsB19B,EAChC,KAAK,GAAI3vB,GAAI,EAAGA,EAAI6tD,EAAQntD,OAAQV,IAC/BstD,EAAiBptD,KAAKyvB,EAAMk+B,EAAQ7tD,MACvC6nD,EAAGgG,EAAQ7tD,IAAM2vB,EAAKk+B,EAAQ7tD,MAMlC,MAAO6nD,KjCioRF,SAAU9nD,EAAQD,EAASH,aAEImuD,GAAY,GAAIhuC,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IkC3tRlS7F,EAAO4zC,EAAP,KACAC,EAAYD,EAAQ,KAEpBt2C,EAAS,MAEPw2C,MACIC,KAAM/zC,EAAKtY,QAAQisD,EAAY,QAC/Bh2C,IAAK,SAGbk2C,EAIJjuD,GAAOD,QAAUA,EAAA,QAAqB2X,IlC2tRTvX,KAAKJ,EAAS,MAIrC,SAAUC,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAiErC,QAASsqD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIg9C,GAA+ChlC,EAAE,SAAUxnB,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO6a,GAA+ChlC,EAAExnB,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAA/K/B,GAAQuC,GAAqL,MAAOkqD,GAAK,WmC3uRpgB,QAASC,KACZ,OACInsD,KAAMosD,IAIP,QAASC,GAAwBzzC,GACpC,OACI5Y,KAAMssD,GACN1zC,KACA2zC,cAAeC,KAAKl9C,OAIrB,QAASm9C,GAAT,GAgBJ,GAfC7zC,GAeD,EAfCA,GACAhY,EAcD,EAdCA,KACAumD,EAaD,EAbCA,YACAuF,EAYD,EAZCA,OACAt8B,EAWD,EAXCA,MACAu8B,EAUD,EAVCA,KACA57C,EASD,EATCA,QACA67C,EAQD,EARCA,QACAC,EAOD,EAPCA,SACAC,EAMD,EANCA,YACAC,EAKD,EALCA,eACAv0C,EAID,EAJCA,KACA9W,EAGD,EAHCA,MACAsrD,EAED,EAFCA,QACAC,EACD,EADCA,MAEA,QACIjtD,KAAMktD,GACNt0C,KACAhY,OACAumD,cACAuF,SACAt8B,QACAu8B,OACA57C,UACA67C,UACAC,WACAC,cACAC,iBACAv0C,OACA9W,QACAsrD,UACAC,SACAE,aAAcX,KAAKl9C,OAIpB,QAAS89C,KACZ,OACIptD,KAAMqtD,GACNC,UAAWd,KAAKl9C,OAIjB,QAASi+C,GAAuBjD,GACnC,OACItqD,KAAMwtD,GACNr8B,aAAcq7B,KAAKl9C,MACnBg7C,eAKD,QAASmD,KACZ,MAAO,UAACtrC,EAAUjD,GACd,GAAM6B,GAAQ7B,IACRnJ,EAASD,YAAeiL,EAE9B,OADAoB,GAASirC,KACFM,IAAUC,kBAAkB53C,GAAQ+4B,KAAK,SAACwb,GAE7C,MADAnoC,GAASorC,EAAuBjD,IACzBA,KAKZ,QAASsD,GAAelF,GAAsD,2EAA1Cp5B,kBAA0C,WAA7Bu+B,wBAA6B,IACjF,yBAAAh5B,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,sHACG6B,EAAQ7B,IADX,EAE2BopC,YAAappC,KAA/B4uC,EAFT,EAEKl1C,GACJm1C,SAHD,UAOKz+B,EAAO1W,GAPZ,uBAQaA,GAAiB0W,EAAjB1W,GAAIo1C,EAAa1+B,EAAb0+B,SACRC,EAAar1C,EACbo1C,IACAC,eAA0BD,GAM1BE,EAAcxF,EACD,eAAbA,EACAwF,EAAc,SACM,SAAbxF,IACPwF,EAAc,UArBvB,UAuB8C/rC,EAASgsC,aAC9CvtD,KAAMstD,EACND,eAzBT,sBAuBa1F,KAvBb,kBAuBqBqE,EAvBrB,EAuBqBA,QAIhBmB,EAAmBnB,EA3BxB,yCA6BwBzqC,EAASisC,aAAUxtD,KAAM8nD,IA7BjD,UA6BWtF,EA7BX,SA8BiBA,EAAKmF,OAAM,EACMnF,EAAKmF,KAAtBqE,mBADW,OAEnBmB,EAAmBnB,EAhC5B,cAoCwBtE,YAAavnC,IAAxBkmC,EApCb,EAoCSruC,MACOk1C,EArChB,mDA0CKD,GACA1rC,GACIniB,KAAMquD,GACNzB,QAASmB,IAIjB5rC,GACIniB,KAAMsuD,GACN1B,QAASmB,IAnDd,wDAsDCtsD,EAAQC,MAAR,+DAA6EgnD,EAA7E,MAtDD,yDAAP,yDA4DG,QAAS6F,GAAiB3B,GAC7B,OACI5sD,KAAMwuD,GACNlB,UAAWd,KAAKl9C,MAChBs9C,WAMD,QAAS6B,KAAgD,GAAtB7B,GAAsB,0DAAR8B,EAAQ,aACtDC,EAAaD,EAAOE,SAAStgC,IAAI,SAACugC,GAAD,MAAaA,GAAQj2C,IAE5D,KAAKg0C,EAAQtuD,OAAS,EAClB,OAAQ,CAIZ,KAAK,GADDwwD,IAAc,EACT9gC,EAAQ,EAAGA,EAAQ4+B,EAAQtuD,QAAoB,UARI,SAQnD0vB,GACL,GAAM+gC,GAAanC,EAAQ5+B,GACrBghC,EAAuBD,EAAWH,SAAStgC,IAAI,SAACugC,GAAD,MAAaA,GAAQj2C,IAE1E,IADiBm2C,EAAWnuD,OAAS8tD,EAAO9tD,MAAS+tD,EAAW5gC,MAAM,SAACnV,GAAD,OAA8C,IAAtCo2C,EAAqBh3C,QAAQY,KAGvG,MADAk2C,GAAa9gC,EACb,SANCA,GAAmCA,GAAS,GAUrD,MAAO8gC,GAGJ,QAASG,GAAcvG,EAAUp5B,EAAQzX,GAC5C,MAAO,UAACsK,GACJ,GAAiB,eAAbumC,EAA2B,CAAC,GACpBwG,GAAar3C,EAAbq3C,QACR,OAAO/sC,GAASgtC,aACZD,SAAU5/B,EAAO1W,IAAMs2C,EACvBE,QAAS9/B,EAAO8/B,QAChBC,QAAS,kBAEV,IAAiF,KAA5E,OAAQ,UAAW,OAAQ,UAAW,eAAer3C,QAAQ0wC,GAAkB,CAAC,GAChF9vC,GAAiB0W,EAAjB1W,GAAIo1C,EAAa1+B,EAAb0+B,SACNptD,EAAOwC,IAAQslD,GACjBuF,EAAar1C,CAIjB,OAHIo1C,KACAC,eAA0BD,GAEvB7rC,EAASgsC,aACZvtD,OACAqtD,gBAED,MAII9rC,GAJAumC,GAA0B,KAAdp5B,EAAO1W,GAIVu1C,aACZvtD,KAAM8nD,EACNuF,WAAY3+B,EAAO1W,KAIXw1C,aAAUxtD,KAAM8nD,MAIjC,QAAS4G,GAAez3C,GAC3B,MAAO,UAACsK,GAAa,GACTotC,GAAmC13C,EAAnC03C,QAAkBC,EAAiB33C,EAA1B43C,QACXA,EAAUD,GAAgBD,CAE5BE,KACA53C,EAAM43C,QAAUA,EAGpB,IAAMC,GAAoBD,IAAmD,IAAxC/pD,GAAkBsS,QAAQy3C,EAC/D,OAAIhG,KAAchrD,OAAO6I,KAAKuQ,GAAQpS,GAAkBnH,OAAS,IAAMoxD,EAC5DvtC,EAASwtC,aAAW93C,WAGxBrY,IAAQC,WAIhB,QAASmwD,GAAT,GAAgC,GAANh3C,GAAM,EAANA,EAC7B,OAAO,UAACuJ,GAAD,MAAcA,GAAS0tC,aAAW5B,WAAYr1C,MAGlD,QAASk3C,GAAyBj4C,GAAO,UAC5C,yBAAAgd,EAAA,wBAAO,WAAO1S,GAAP,2FACCihC,UADD,kBAGcjhC,EAASmtC,EAAez3C,GAHtC,QAGCurC,EAHD,uDAKC3hD,EAAQC,MAAR,KALD,YAQE0hD,EARF,0CASQA,EATR,YAYEA,EAAKmF,KAAKqG,WAAY/2C,EAAMe,GAZ9B,4CAckBuJ,EAASytC,EAAe/3C,GAd1C,SAcKurC,EAdL,0DAgBK3hD,EAAQC,MAAR,KAhBL,kCAoBI0hD,EApBJ,4DAAP,uDAwBG,QAAS2M,GAAal4C,EAAOm4C,GAChC,MAAO,UAAC7tC,GAAa,GACT+sC,GAAar3C,EAAbq3C,QAER,OAAIc,GACO7tC,EAAS8tC,aAAmBC,IAAKF,KACjCd,EACA/sC,EAASgtC,aACZD,cAID1vD,IAAQC,WAgBhB,QAAS0wD,GAAsBv3C,EAAI0W,EAAQzX,EAAOW,EAAMw3C,GAAS,UAEpE,OADAI,KAAe,yBACf,iBAAAv7B,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,2MACGwpC,GAAW9vC,EACXmI,EAAQ7B,IACRpI,EAASR,YAAeyK,GACxBisC,EAAUzF,YAAgBxmC,GAJ7B,EAKuBunC,YAAavnC,GAA3BsvC,EALT,EAKKz3C,GAEJq0C,EAASxF,YAAkB1mC,IAAiB,aAAPnI,EAEnC03C,EAAmB13C,IAAOy3C,EAChCluC,EAASkqC,EAAwBzzC,IAE7B23C,EAAWpuC,EAAS8sC,EAAcr2C,EAAI0W,EAAQzX,IAC9C24C,EAAWruC,EAAS2tC,EAAyBj4C,IAE7C44C,EAA2B,WAAb/H,EAAwBvmC,EAAS4tC,EAAal4C,EAAOm4C,IAAYxwD,IAAQC,UAfxF,oBAiB4C8wD,CAjB5C,sCAiB4DC,CAjB5D,sCAiB4EC,CAjB5E,wCAiBEF,EAjBF,KAiBYC,EAjBZ,KAiBsBC,EAjBtB,wDAmBChvD,EAAQC,MAAR,KAnBD,YAuBCgvD,EAAe,KACfC,KAEC75C,IACDe,EAAMe,IAAOf,EAAMiB,SAAYjB,EAAM+4C,SACrCJ,IAAYA,EAASjI,OAAQiI,EAASjI,KAAKqG,UAAY4B,EAASjI,KAAKqG,SAAS5uD,OAASmD,IAAYwG,QA5BpG,sBA6BqD6mD,EAASjI,KAAKqG,SAAtDiC,EA7Bb,EA6BSj4C,GAAek4C,EA7BxB,EA6BwBA,QAASh4C,EA7BjC,EA6BiCA,QAAS8wC,EA7B1C,EA6B0CA,QACrCkH,IAAWh4C,EA9BhB,uBAoCSi4C,UApCT,oBAsCqC5uC,EAASmtC,GACjCx2C,QAASA,GAAW+3C,EACpBjH,OAAQA,EAAOoH,gBAxC5B,SAsCeC,EAtCf,OA0CerC,EAAWqC,GAAiBA,EAAc1I,MAAQ0I,EAAc1I,KAAKqG,SACvEA,GAAYA,EAASsC,SAAWtC,EAASsC,QAAQ5yD,OAAS,IAAG,EACtCswD,EAAfuC,iBADqD,OAE7DJ,EAAeI,EAAMC,OACrBV,EAAe9B,EAASsC,SA9CrC,mDAiDSzvD,EAAQC,MAAR,KAjDT,0BAqDkC2vD,GAAoBlvC,EAAU4uC,EAAcj4C,EArD9E,SAqDK63C,EArDL,oBAsECJ,MAtED,IA2DChI,KA3DD,kBA4DK3nD,EA5DL,EA4DKA,KACAumD,EA7DL,EA6DKA,YACAuF,EA9DL,EA8DKA,OACAt8B,EA/DL,EA+DKA,MACAu8B,GAhEL,EAgEKA,KAhEL,KAiEK57C,oBAjEL,cAkEK67C,QAAS0E,YAlEd,SAmEKzE,GAnEL,EAmEKA,SACAnrD,GApEL,EAoEKA,MAMFkrD,GAAU0E,GAAgBniC,WAE5BshC,GAAeA,EAAYlI,KAAKqE,UAC1B2E,GAAYd,EAAYlI,KAAKqE,QAAQ,GACrC4E,GAAiB/C,EAA0B7B,GAAS2E,IACpDE,IAA2C,IAApBD,GAEzBC,IAA2C,IAAnBD,GACxB5E,GAAQ4E,IAAgBE,cAChBD,KAIO,KAHTzjC,GAAQ4+B,GAAQt+B,IAClB,SAACogC,GAAD,MAAaA,GAAOiD,OAAgD,IAAxCjD,EAAOiD,KAAK35C,QAAQ,iBAClDA,SAAQA,MAEN40C,GAAQ5+B,IAASujC,GACjB3E,GAAQ5+B,IAAO0jC,gBAKvB5E,GAAc,KAEd0D,GAAYA,EAASjI,MAAQiI,EAASjI,KAAKqG,WAC3C9B,GAAc0D,EAASjI,KAAKqG,SACxB8B,GAAgBA,EAAapyD,OAAS,IACtCwuD,GAAYoE,QAAUR,GAG1B5D,GAAY8E,aAKZ7E,UACJH,GAAQt6B,KAAK,WAAatE,GAAU,GAApB6jC,GAAoB,EAApBA,MACZ,UAAIA,GAAUA,EAAOl/B,gBAAkBpwB,IAAa0E,WAChD8lD,GAAiBH,GAAQjuC,OAAOqP,EAAO,GAAG,SAM9C++B,KACAE,MAICH,IAAgBG,EAzHlB,oBA0HK4B,UACAnC,EACIA,EAAOgC,QAAUhC,EAAOgC,OAAOE,UAAYlC,EAAOgC,OAAOE,SAAS,IAClEC,GAAUnC,EAAOgC,OAAOE,SAAS,GAE7BhC,IAAWA,GAAQ,IAAMA,GAAQ,GAAGgC,UACL,IAA/BhC,GAAQ,GAAGgC,SAAStwD,QACpBuwD,GAAQjF,SAAWvmD,IAAciH,MACjCsiD,GAAQ,GAAGgC,SAAS,GAAGh2C,KAAOi2C,GAAQj2C,IAEtCg0C,GAAQhuD,SAGZquD,KAEGL,IAAWA,GAAQ,IAAMA,GAAQ,GAAGgC,UAAYhC,GAAQ,GAAGgC,SAAS,KAC3EC,GAAUjC,GAAQ,GAAGgC,SAAS,KAE9BC,IAAYA,GAAQ7uD,OAASmD,IAAYwG,SAAWklD,GAAQ7uD,OAASmD,IAAYyG,KACjFilD,GAAQ7uD,OAASmD,IAAY+G,OAAS2kD,GAAQ7uD,OAASmD,IAAYgH,MA7IxE,oBAkJS0kD,GAAQqC,QAAQ5yD,SAAWuwD,GAAQqC,QAAQ,GAAGrC,UAC9CA,GAAUiD,YAAmBjD,KAGjC/B,GAAc+B,IAKR/B,GAAYh0C,UAAWg0C,GAAYgE,SAAaj5C,EAAMk6C,iBAAqBpB,EA3JtF,2BA4JuD7D,GA5JvD,MA4JiBqE,MA5JjB,qBA4JkCa,GA5JlC,GA4J0BZ,OA5J1B,UA6JeC,GAAoBlvC,EAAU6vC,GAAWlF,GAAYh0C,QA7JpE,eAkKHqJ,GAASsqC,GACL7zC,KACAhY,OACAumD,cACAuF,SACAt8B,QACAu8B,QACA57C,WACA67C,WACAC,YACAC,eACAC,kBACAv0C,OACA9W,SACAsrD,UACAC,YAGAqD,GAAiC,WAAb5H,GACpBvmC,EAAS8vC,YAAcvJ,EAAUmE,MAAch1C,IAGnDu4C,IAAoB,yBAxLjB,kBAyLI5wD,IAAQC,UAzLZ,8DAAP,yDA6LG,QAASyyD,GAAYC,EAAkBC,GAC1C,MAAO,UAACjwC,GAAD,MACHA,GAASkwC,eACJvjB,KAAK,iBAAM3sB,GAASmwC,YAAiBH,EAAkBC,OAI7D,QAASG,GAA0BjjC,EAAQ6iC,GAAkB,UAChE,yBAAAt9B,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,8KACHkxC,IAAe,6BACTrvC,EAAQ7B,MACRpI,EAASR,YAAeyK,IAH3B,gBAMCoB,EAASqwC,YAAqCljC,IAC9CnN,EAASswC,eACTtwC,EAASuwC,oBARV,gCAUoFx9C,YAAkB6L,GAVtG,IAUS4xC,QAVT,sBAUoBC,2BAVpB,WAU0CC,qCAV1C,SAWkBp9C,YAAYsL,GAArBvI,EAXT,EAWSA,KAXT,EAYuCrD,YAAgB4L,GAA9CpI,EAZT,EAYSA,0BAZT,EAawB2vC,YAAavnC,GAAxBkmC,EAbb,EAaSruC,GAbT,EAcwBD,MAdxB,IAcSd,iBAdT,iBAe0BsK,EAAS2wC,cAfnC,YAeOtI,EAfP,SAgBkBuI,YAAc7zC,KAAvB8zC,EAhBT,EAgBSA,KACF7/B,EAAMjyB,YAAIipB,KACVkJ,EAAenyB,YAAIopB,KACrB8H,EAAMlxB,YAAIkpB,KACV6oC,EAAe/xD,YAAImpB,KACjB6oC,EAAsBzJ,IAAcmJ,EAAiBC,GAA2Bv0D,OAAS,EACzF60D,EAAaD,GAAuBN,EAAgB56C,QAAQ,YAAc,IAAMmb,EAChFigC,GACFF,IACCN,EAAgB56C,QAAQ,iBAAmB,GAAK46C,EAAgB56C,QAAQ,kBAAoB,GAE7Fq7C,GAAoB7I,EAEpBp4B,IACKo4B,GAAep4B,EAAI4gC,MAAQ5gC,EAAI4gC,OAASA,GAIzC7wC,EAASmxC,YAAqClhC,EAAIH,gBAC5CshC,GAAWr0C,IACXurC,GAAe+I,YAA0BD,IACzCE,GAAiBvhC,YAAoBqhC,IACrCtgC,GAAcD,YAAoBugC,IAClCG,GAAoBC,YAAOV,GAC3B5hC,GAAmBo5B,IAAgBA,GAAansD,OAAS,GAAMo1D,GACrEvxC,EACEuwC,YAA4BrhC,GAAiBo5B,GAAciJ,GAAmBD,GAAgBxgC,KAEhGogC,QAbAO,YAAOxpC,KACPgI,EAAM,OAgBVe,GACAhR,EAAS0xC,YAA2B1gC,IAGpC8/B,IACKzI,EAIDroC,EAAS2xC,YAA+Bb,KAHxCW,YAAOvpC,KACP4oC,EAAe,OAMnB5/B,GACAlR,EAAS4xC,YAA4B1gC,IAGrCm3B,EACAroC,EACI+vC,EACIC,EAAkBgB,GACb,cAAe,gBAAiB,eAAgB,4BAChD,gBAAiB,eAAgB,8BAM9ChxC,EAASmwC,YAAiBH,GAAmB,6BAC7ChwC,EAASuwC,qBAEbvwC,EAASqwC,YAAqCljC,IAExC0kC,MACFb,EACAa,GAAgBx1D,KAAK2jB,EAASswC,gBAE9BtwC,EAASswC,eAGTY,GACAW,GAAgBx1D,KAAK2jB,EAASkwC,gBAE9BlwC,EAASkwC,eAGTe,IACAY,GAAgBx1D,KAAK2jB,EAAS8xC,iBAG9BD,GAAgB11D,OAlGrB,4CAqGekB,IAAQyrC,IAAI+oB,GArG3B,4DAuGSvyD,EAAQC,MAAM,4BAAd,KAvGT,eA2G+B4mD,YAAappC,KAA/B4uC,GA3Gb,GA2GSl1C,KACJs6C,GAAgD,SAAxBr7C,EAAMlU,IAAM6J,SAAsBwd,IAAmBhT,QAAQivC,IAAW,GA5GrG,qBAgHSA,GAAUA,IAAW6G,IAA4B,aAAX7G,GAAoC,WAAXA,GAAkC,QAAXA,EAhH/F,uBAiHeiN,KAAW/xC,EAASguC,EAAsBlJ,EAAQ33B,EAAQzX,EAAOW,KACxD,WAAXyuC,GACAiN,GAAQ11D,KAAK2jB,EAASgyC,YAAoB37C,KAnHvD,oBAsHmBhZ,IAAQyrC,IAAIipB,GAtH/B,4DAwHazyD,EAAQC,MAAM,4BAAd,KAxHb,SA0HS0uD,IAAoB,4BA1H7B,SA+HHjuC,EAASiyC,cA/HN,8DAAP,yDAiJG,QAASC,GAAYz7C,EAAIhY,GAAgC,GAA1B0zD,KAA0B,wDAC5D,OAAO,UAACnyC,GACJA,GACIniB,KAAMu0D,GACN37C,KACAhY,OACAosD,SAAQA,EACRsH,uBAKL,QAASE,GAAY3F,GACxB,OACI7uD,KAAMy0D,GACN5F,WAID,QAAS6F,GAAa1H,GACzB,OACIhtD,KAAM20D,GACN3H,WAID,QAAS4H,GAAT,GAA2B,WAANh8C,EAAM,EAANA,EACxB,yBAAAic,EAAA,wBAAO,WAAO1S,GAAP,QAAA8E,EAAA,0GAE6B9E,EAAS0yC,YAAQ,aAAej8C,OAF7D,4BAESwqC,gBAFT,OAGS0R,EAAW1R,EAAX0R,OAHT,kBAIQA,EAJR,oHAAP,uDAuBG,QAASC,GAAgBn8C,EAAIhY,EAAMiX,GAAO,UAC7C,yBAAAgd,EAAA,wBAAO,WAAO1S,GAAP,gHACHA,EAASkqC,EAAwBzzC,IACjCuJ,EAAS6yC,iBAEHl8C,EAAUjB,EAAMiB,SAAWjB,EAAM+4C,OAC/BqE,EAA8Bp9C,EAA9Bo9C,QAASC,EAAqBr9C,EAArBq9C,MAAOC,EAAct9C,EAAds9C,UACpBtG,SACCh3C,EAAMe,KAAMq8C,EAPd,gCAQiB9yC,EAASizC,aAAkBH,UAASC,UARrD,QAQCrG,EARD,iBAWCwG,eACGx9C,GAAMs9C,UACTtG,SACOh3C,GAAMiB,cACNjB,GAAM+4C,aACN/4C,GAAMy9C,aACNz9C,GAAMo9C,cACNp9C,GAAMq9C,MACbG,OAAgBx9C,GAAOe,GAAIi2C,EAAQj2C,MAC5BE,EACPu8C,GAAav8C,WACNjB,EAAMe,IAAMf,EAAM03C,SAAW13C,EAAM43C,QAC1C4F,EAAWx9C,EACHo9C,IACRI,OACOx9C,GACH43C,QAAS,UAIb8F,UACAF,EAhCD,kCAiCiBlzC,EAAS2tC,EAAyBuF,GAjCnD,SAiCCE,EAjCD,oBAmCuDA,MAnCvD,IAmCKhN,KAnCL,kBAmCax3C,EAnCb,EAmCaA,UAAmB+7C,EAnChC,EAmCsB8B,UAnCtB,oBAqCKuG,IACArI,EAAYpD,UAAYyL,GAtC7B,EAwC0BrI,EAAjBoE,mBAxCT,QAyCKA,EAAQ5yD,OAzCb,kCA0CW6jB,EAASqzC,YAAatE,EAAQ,IA1CzC,SA6CH/uC,EAASsqC,GACL7zC,KACAhY,OACAmQ,UACA+7C,cACAE,SAAQA,IAlDT,4CAAP,uDnCsgQ0EzvD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOwqD,MACnH7uD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO0qD,MACpE/uD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOsrD,MACpE3vD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO6zD,MAEpEl4D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO2yD,MACpEh3D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO4sD,MACpEjxD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO0sD,MACpE/wD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOysD,MACpE9wD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO6yD,MACpEl3D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+yD,MACpEp3D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOyrD,MACpE9vD,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO4rD,MAClE5rD,EAAuB,EAAIuqD,EAC3BvqD,EAAuB,EAAIyqD,EAC3BzqD,EAAuB,EAAI6qD,EAG3B7qD,EAAuB,EAAI6rD,EAC3B7rD,EAAuB,EAAIgsD,EAC3BhsD,EAAuB,EAAI2sD,EAK3B3sD,EAAuB,EAAIkuD,EAG3BluD,EAAuB,EAAIuuD,EAE3BvuD,EAAuB,EAAI2wD,EAE3B3wD,EAAuB,EAAIyyD,EAC3BzyD,EAAuB,EAAI4yD,EAC3B5yD,EAAuB,EAAI8yD,EAC3B9yD,EAAuB,EAAIgzD,EAE3BhzD,EAAuB,EAAImzD,CACvC,IAAIW,GAAyCn4D,EAAoB,IAC7D0uD,EAAiD1uD,EAAoB4D,EAAEu0D,GACvE9N,EAAoDrqD,EAAoB,IACxEsqD,EAA4DtqD,EAAoB4D,EAAEymD,GAClFE,EAA2CvqD,EAAoB,GAC/DwqD,EAAuCxqD,EAAoB,GAC3Do4D,EAAyDp4D,EAAoB,KAC7Eq4D,EAAoDr4D,EAAoB,IACxEs4D,EAA6Ct4D,EAAoB,IACjEu4D,EAAsDv4D,EAAoB,IAC1Ew4D,EAAyCx4D,EAAoB,IAC7Dy4D,EAA+Cz4D,EAAoB,IACnE04D,EAAwD14D,EAAoB,IAC5E24D,EAA8D34D,EAAoB,IAClF44D,EAAwD54D,EAAoB,GAC5E64D,EAA0D74D,EAAoB,IAC9E84D,EAA4D94D,EAAoB,IAChF+4D,EAAyD/4D,EAAoB,KAC7Eg5D,EAAoDh5D,EAAoB,IACxEi5D,EAAgEj5D,EAAoB,IACpFk5D,EAAyDl5D,EAAoB,IAC7Em5D,EAAqDn5D,EAAoB,KACzEo5D,EAAyDp5D,EAAoB,IAC7Eq5D,EAAkDr5D,EAAoB,KACtEs5D,EAAoEt5D,EAAoB,IAC7GmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IA6BnPk5C,EmCtxRsD10D,IAAlDoD,KAAQC,E,EAAAA,iBAAkBC,G,EAAAA,kBAErB0mD,GAAa,aACbE,GAAe,eACfY,GAAe,eACfuI,GAAkB,kBAElBlB,GAAgB,gBAChB/F,GAAqB,qBACrBF,GAAkB,kBAClBD,GAAkB,kBAClBoG,GAAe,eACfE,GAAY,YACZtH,GAAwB,wBACxBG,GAA2B,2BA+QjC,cAAP,GAAA1uD,GAAA,0BAAO,WAAmCqjB,EAAU4uC,EAAcj4C,GAA3D,wFAKCi+C,UACAhG,EAND,gCAOsB5uC,EAAS60C,YAAmBjG,EAAcj4C,GAPhE,QAOCi+C,EAPD,uCASIA,EATJ,8CAAP,8BAAAj4D,GAAA,4BnCioT6BhB,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YoC19Te,SAAS0X,GAAYqa,GAAwC,GAAhC2nC,GAAgC,wDAAhBC,EAAgB,wDACpEjiD,EAAc,GACdkiD,GAASD,CACb,KAAK,GAAIn1D,KAAOutB,GACRA,EAAO3wB,eAAgBoD,IAASutB,EAAOvtB,KACvCkT,GAAekiD,EAAQ,IAAM,IAC7BliD,GAAkBlT,EAAlB,KAAyBk1D,EAASptC,mBAAmByF,EAAOvtB,IAAQutB,EAAOvtB,IAC3Eo1D,KAGR,OAAOliD,GAVX,OpC8+TM,SAAUtX,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GA4ErC,QAASsqD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAImoD,GAA+CnwC,EAAE,SAAUxnB,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAOgmB,GAA+CnwC,EAAExnB,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAA/K/B,GAAQuC,GAAqL,MAAOkqD,GAAK,WqCv/TpgB,QAASmL,GAAoBC,EAAaC,GAC7C,OACIv3D,KAAMw3D,GACNF,cACAC,eAID,QAASE,KACZ,OACIz3D,KAAM03D,IAIP,QAASC,GAAY9/C,GACxB,MAAO,UAACsK,EAAUjD,GACd,GAAM6B,GAAQ7B,IACRuhB,EAAQm3B,YAAwB72C,GAFX,EAGW5L,YAAgB4L,GAA9CpI,EAHmB,EAGnBA,yBACRwJ,GAASkH,kBAAQA,KAAK1Q,GAA2Bd,MAAOA,KAAK4oB,EAAU5oB,QAIxE,QAAS29C,GAAaqC,GAAQ,UACjC,yBAAAhjC,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,2JACC2nC,YAAQgR,GADT,sBAECp2D,GAAQC,MAAM,yBAFf,6BAKGqf,EAAQ7B,IALX,EAM6DzJ,YAAYsL,GAApE+2C,EANL,EAMKA,gBANL,IAMsBlhD,aAAcmhD,WANpC,SAO4CzP,YAAavnC,GAAhDkmC,EAPT,EAOKruC,GAPL,IAOiBg0C,mBAPjB,OAO+BC,EAP/B,EAO+BA,SAP/B,EAQmC13C,YAAgB4L,GAA9CpI,EARL,EAQKA,0BARL,EASoBA,MATpB,IASKd,iBATL,OAUGg3C,EAAUmJ,YAAwBj3C,GAClCk3C,EAAiBC,YAAuBn3C,GACtC/gB,EAAmB6uD,EAAnB7uD,KAAMkvD,EAAaL,EAAbK,WACRiJ,EACDL,GAAmBA,EAAgBl/C,KAAOi/C,EAAOj/C,IACjDm/C,EAAgBK,eAAiBL,EAAgBK,cAAcx/C,KAAOi/C,EAAOj/C,IAf/E,sDAuBC5Y,IAASmD,IAAYyG,MACrBiuD,EAAOQ,SAAWC,YAA8BzJ,EAASjC,IAG7DzqC,GACIniB,KAAMu4D,GACNV,WAGAjhD,UACAihD,EAAO1G,QAAS0G,EAAO1G,MAAMqH,KAjC9B,4CAmC0BC,0BAAgBZ,EAAO1G,MAAMqH,KAnCvD,YAmCK5hD,EAnCL,SAoCqDnB,YAAYyJ,KAAnCw5C,EApC9B,EAoCaZ,gBApCb,sGAyCKr2D,EAAQC,MAAR,KAzCL,SA6CKkX,EAAOi/C,EAAPj/C,GA7CL,EA8CqDhC,MA9CrD,IA8CKi2C,SA9CL,kBA8CiB8L,EA9CjB,EA8CiBA,MAAOrD,EA9CxB,EA8CwBA,OAAQsD,EA9ChC,EA8CgCA,UAC7BC,EAAcngD,YAAqBqI,GACrC83C,GAAeZ,EAAer/C,KAAOA,MAChCf,EAAMe,IAAOf,EAAMiB,SAAYjB,EAAM+4C,SAAYiH,EAAOhJ,QAAQ/1C,SACjEqJ,EAASw1C,GAAc/+C,KAAIs2C,eAKnC/sC,EAAS22C,eAET32C,GACIniB,KAAM+4D,GACNlB,SACAjhD,eACAoiD,YAAaxM,KAAKl9C,QAIP,WAAX23C,IAEMgS,EAAS,uBACTC,EAAKP,GAASA,EAAMtvC,QAAQ4vC,EAAO,KACnCE,EAAK7D,GAAUA,EAAOjsC,QAAQ4vC,EAAO,KACrCG,EAAOR,GAAaA,EAAUvvC,QAAQ4vC,EAAO,KACnD92C,EAAS8vC,YAAchL,EAAQ4F,GAC3BqM,KACAC,KACAC,QACDvhD,IA3EJ,sDAAP,yDAgFG,QAASwhD,KACZ,OACIr5D,KAAMs5D,IAIP,QAASC,GAAcC,GAAY,UACtC,yBAAA3kC,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,MAAA+H,EAAA,qFACGlG,EAAQ7B,IACR2vC,EAAU2K,EACZ3B,SAHD,EAIYvP,YAAavnC,GAApBnI,EAJL,EAIKA,GACG,WAAPA,GACIi2C,GACA1sC,EAASqyC,YAAY3F,IAI7B1sC,GACIniB,KAAMy5D,GACN5K,UACAmK,YAAaxM,KAAKl9C,QAGlBuoD,GACA11C,EAASqzC,EAAaqC,GAlBvB,2CAAP,yDAuBG,QAAS6B,GAAgB7K,GAC5B,OACI7uD,KAAM25D,GACN9K,UACAmK,YAAaxM,KAAKl9C,OAInB,QAASsqD,KACZ,OACI55D,KAAM65D,GAIP,QAAS7E,KAA8B,GAAf8E,GAAe,yDAC1C,QACI95D,KAAM+5D,GACND,WACA3oC,aAAcq7B,KAAKl9C,OAIpB,QAAS0qD,KAAsB,UAClC,yBAAAnlC,EAAA,wBAAO,WAAO1S,GAAP,qGACkBA,EAAS83C,cAD3B,cACG5kD,GADH,OAEH8M,GACIniB,KAAMk6D,GACNC,UAAW9kD,IAJZ,kBAMIA,EANJ,2CAAP,uDAyDG,QAAS+kD,GAAWC,GACvB,OACIr6D,KAAMs6D,GACND,MAID,QAASE,GAAclQ,GAC1B,OACIrqD,KAAMsF,GACN+kD,aAID,QAASmQ,GAAgBC,GAC5B,OACIz6D,KAAMuF,GACNk1D,QAID,QAASC,GAAT,GAMJ,eALC37C,oBAKD,EALY0M,IAKZ,EAJCkvC,EAID,EAJCA,YACA9J,EAGD,EAHCA,UAGD,IAFC+J,8BAED,EAFsB,QAEtB,MADCC,iCACD,MACC,yBAAAhmC,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,yGACG6B,GAAQ7B,IADX,EAEahK,YAAkB6L,GAA1BgR,EAFL,EAEKA,IAFL,EAGmC5c,YAAgB4L,GAA9CpI,EAHL,EAGKA,0BAHL,EAIeA,MAAVd,EAJL,EAIKA,MAJL,SAMOijD,EAAc,GAAIC,MACpBC,iBAAkBnjD,EAAMlU,IAAM0J,SAAZ,KAA4B0kB,GAAKiU,IAAKnuB,EAAMlU,IAAM0J,WAAa0kB,IAPtF,SAUO+oC,EAAYJ,mBACd37C,SAASA,IAAKA,EACd47C,cACA9J,YACA+J,qBACAC,yBAfL,0DAkBCp5D,EAAQC,MAAM,2BAAd,KAlBD,qDAAP,yDAuBG,QAAS4wD,GAAiB2I,EAAgBC,GAAgC,WAAnBC,EAAmB,uDAAH,CAC1E,OAAO,UAACh5C,EAAUjD,GACd,GAAMk8C,GAAWF,EAAcA,oBAAoBA,EAAY3sC,KAAK,IAAQ,kBAC5E6hC,KAAegL,EACf,IAAMr6C,GAAQ7B,IAHa,EAIXhK,YAAkB6L,GAA1BgR,EAJmB,EAInBA,IACFspC,EAAiB5mC,YAAuB1T,GALnB,EAMW5L,YAAgB4L,GAA9CpI,EANmB,EAMnBA,0BANmB,EAOTA,MAAVd,EAPmB,EAOnBA,MACFyjD,EAAkB/Q,YAAsBxpC,GACxCw6C,EAAaC,YAAmBz6C,EAEtC,OADAoB,GAASs5C,eACF,GAAIj8D,KAAJ,2CAAY,WAAOC,GAAP,0HACTi8D,EAAiB,cACjBC,EAAmB,gBACnBC,EAAkB,eAClBC,EAAkB,0BAClB90C,KACAqrC,EAAW8I,IAAgBQ,EAAgBC,EAAkBC,EAAiBC,GAC9Ef,EAAc,GAAIC,MACpBC,iBAAkBnjD,EAAMlU,IAAM0J,SAAZ,KAA4B0kB,GAAKiU,IAAKnuB,EAAMlU,IAAM0J,WAAa0kB,IAE/EoB,EAAMjyB,YAAIipB,KAEV2xC,EAAW,WACb35C,EAAS45C,eACT3L,IAAoBgL,GACpB37D,EAAQsnB,IAENi1C,EAAiB,WACd7oC,GACDhR,EAAS0xC,eAEb1xC,EAASmxC,eACTwI,KAEEG,EAAgB,SAACC,EAAMC,GACzB,GAAMnuC,GAAQkuC,EAAKlkD,QAAQmkD,EACvBnuC,IAAS,GACTkuC,EAAKv9C,OAAOqP,EAAO,IAIvBokC,EAASp6C,QAAQ0jD,IAAmB,IAChCvoC,GACMvb,EAAWub,EACjBhR,EAAS0xC,YAA2Bj8C,IACpCmP,EAAO20C,GAAkB9jD,EACzBqkD,EAAc7J,EAAUsJ,IAExBZ,EAAYsB,KAAKrB,IAAmBsB,OAAOC,kBAAmB,WAAsC,oEAAnCC,IAAmC,sBAA3B3kD,GAA2B,EAA3BA,QACrEuK,GAAS0xC,YAA2Bj8C,IACpCmP,EAAO20C,GAAkB9jD,EACrBnZ,OAAO6I,KAAKyf,GAAQzoB,QAAU8zD,EAAS9zD,QACvCw9D,OAKZ1J,EAASp6C,QAAQ2jD,IAAqB,IACjCL,EAIDR,EAAYsB,KAAKrB,IAAmBsB,OAAOG,oBAAqB,WAA2C,oEAAxCD,IAAwC,sBAAhCtqC,GAAgC,EAAhCA,aACvE9P,GAASmxC,YAAqCrhC,GAC9C,IAAMshC,GAAWr0C,IACXurC,EAAe+I,YAA0BD,GACzCkJ,EAAkB5pC,YAAwB0gC,GAC1CE,EAAiBvhC,YAAoBqhC,GACrCG,EAAoBC,YAAO8I,GAC3BprC,EAAmBo5B,GAAgBA,EAAansD,OAAS,GAAMo1D,EAPkC,EAQtFX,YAAc7zC,KAAvB8zC,EAR+F,EAQ/FA,IACR5lB,aAAIhjB,KAAW4oC,OAAM/gC,iBAAiB,OACtC9P,EAASuwC,YACLrhC,EAAiBo5B,EAAciJ,EAAmBD,OAEtD1sC,EAAO40C,GAAoB1pC,EACvBxzB,OAAO6I,KAAKyf,GAAQzoB,QAAU8zD,EAAS9zD,QACvCw9D,OAlBR35C,EAASmxC,eACT2I,EAAc7J,EAAUuJ,KAuB5BvJ,EAASp6C,QAAQ6jD,IAAoB,GACrCf,EAAYsB,KAAKrB,IAAmBsB,OAAOK,gCAAiC,YAAmB,QAAhBH,gBAAgB,MAC3FnvB,aAAI9iB,IAAJ,KAA4BiyC,GAAQ,OACpCp6C,EAAS4xC,YAA4BwI,IACrCx1C,EAAO80C,GAAmBU,EACtB99D,OAAO6I,KAAKyf,GAAQzoB,QAAU8zD,EAAS9zD,QACvCw9D,MAMR1J,EAASp6C,QAAQ4jD,IAAoB,IAChCN,EAIDR,EAAYsB,KAAKrB,IAAmBsB,OAAOM,mBAAoB,WAAmC,oEAAhCJ,IAAgC,sBAAxBxpC,GAAwB,EAAxBA,KACtE5Q,GAAS2xC,YAA+B/gC,IAGxCqa,YAAI/iB,IAAmB0I,EAAO,MAC9BhM,EAAO60C,GAAmB7oC,EACtBt0B,OAAO6I,KAAKyf,GAAQzoB,QAAU8zD,EAAS9zD,QACvCw9D,OAVR35C,EAAS2xC,eACTmI,EAAc7J,EAAUwJ,KAe3BxJ,EAAS9zD,OAvGC,iBAwGX09D,IAxGW,wBA+GP,GA/GO,UA2GDY,EAAiB/8D,SAASg9D,eAAe,OAC3CC,EAAc7B,EACd8B,EAAKl9D,SAASg9D,eAAeC,GAC7BE,EAAQ,EACRD,EACA,KAAOA,GACHC,GAAS,EACTF,KAAiB7B,EAAiB+B,EAClCD,EAAKl9D,SAASg9D,eAAeC,EAnH9B,OAsHPC,GAAKl9D,SAASE,cAAc,OAC5Bg9D,EAAGnkD,GAAKkkD,EACRC,EAAGE,UAAYhC,EACf2B,EAAep8D,YAAYu8D,GACvBG,GAAYrB,GACZP,IACA4B,GAAYxB,EAAgBC,EAAkBC,EAAiBC,IAE7DxmD,EA9HC,GA+HH8nD,UAAUA,IAAKL,EACfM,gBACGC,YAAiB9B,EAAYF,IAChCjJ,SAAU8K,EACV/B,gBACA/7D,UAA+B,IAApBgzD,EAAS9zD,QAAgB8zD,EAASp6C,QAAQ2jD,IAAqB,KAE9El6D,EAAQqN,IAAI,yBAA0BuG,GAtI/B,UAuIDylD,EAAYxI,iBAAiBj9C,EAvI5B,4DAyIP5T,EAAQC,MAAR,MACAs6D,GA1IO,sDAAZ,yDA+JR,QAASsB,GAAoBC,EAAeC,GAC/C,OACIx9D,KAAMy9D,GACNF,gBACAC,wBAID,QAASE,KACZ,OACI19D,KAAM29D,IAIP,QAASC,GAAyBl8D,GACrC,OACI1B,KAAM69D,GACNn8D,SAID,QAASo8D,GAAkBvI,GAC9B,OACIv1D,KAAM+9D,GACNxI,WAID,QAASyI,GAAgBt8D,GAC5B,OACI1B,KAAMi+D,GACNv8D,SAUD,QAASw8D,KACZ,OACIl+D,KAAMm+D,IrC48SgE5gE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOi4D,KACnHt8D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOm4D,MACpEx8D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO81D,MACpEn6D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO63D,MACpEl8D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+3D,MACpEp8D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO22D,MACpEh7D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOm3D,MACpEx7D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO03D,MACpE/7D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO41D,MACpEj6D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO04D,MACpE/8D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOw8D,MACpE7gE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOs4D,MACpE38D,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOy8D,MACpE9gE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO0D,MACpE/H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO2D,MACpEhI,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO67D,MACpElgE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+7D,MACpEpgE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOi8D,MACpEtgE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOm8D,MACpExgE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOq8D,MACpE1gE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO08D,MACpE/gE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOu8D,MAClEv8D,EAAuB,EAAIy1D,EAC3Bz1D,EAAuB,EAAI61D,EAC3B71D,EAAuB,EAAI+1D,EAC3B/1D,EAAuB,EAAI4zD,EAC3B5zD,EAAuB,EAAIy3D,EAC3Bz3D,EAAuB,EAAI23D,EAC3B33D,EAAuB,EAAI83D,EAC3B93D,EAAuB,EAAIg4D,EAC3Bh4D,EAAuB,EAAIozD,EAC3BpzD,EAAuB,EAAIo4D,EAE3Bp4D,EAAuB,EAAIw4D,EAC3Bx4D,EAAuB,EAAI24D,EAC3B34D,EAAuB,EAAI44D,EAC3B54D,EAAuB,EAAI84D,EAC3B94D,EAAuB,EAAI0wD,EAE3B1wD,EAAuB,EAAI07D,EAC3B17D,EAAuB,EAAI87D,EAC3B97D,EAAuB,EAAIg8D,EAC3Bh8D,EAAuB,EAAIk8D,EAC3Bl8D,EAAuB,EAAIo8D,EAE3Bp8D,EAAuB,EAAIs8D,CACvC,IAAIK,GAAmDhhE,EAAoB,IAEvEihE,GAD2DjhE,EAAoB4D,EAAEo9D,GACxChhE,EAAoB,KAC7D65D,EAAiD75D,EAAoB4D,EAAEq9D,GACvEC,EAAuClhE,EAAoB,GAC3DmhE,EAA2CnhE,EAAoB,GAC/DohE,EAA8CphE,EAAoB,IAClEqhE,EAA6CrhE,EAAoB,IACjEshE,EAA2CthE,EAAoB,IAC/DuhE,EAA8CvhE,EAAoB,IAClEwhE,EAA6DxhE,EAAoB,IACjFyhE,EAAuDzhE,EAAoB,GAC3E0hE,EAA0D1hE,EAAoB,IAC9E2hE,EAAyD3hE,EAAoB,IAC7E4hE,EAA4D5hE,EAAoB,IAChF64D,EAA0D74D,EAAoB,IAC9E6hE,EAAoE7hE,EAAoB,IACxF8hE,EAAoE9hE,EAAoB,IACxF+hE,EAAmE/hE,EAAoB,IACvFgiE,EAAwDhiE,EAAoB,IAC5EiiE,EAAqDjiE,EAAoB,KACzEkiE,EAA6DliE,EAAoB,KACjFmiE,EAAmDniE,EAAoB,IACvEoiE,EAA4DpiE,EAAoB,KAChFqiE,EAAwDriE,EAAoB,IAC5EsiE,EAAgDtiE,EAAoB,IACpEuiE,EAAkDviE,EAAoB,KACtEwiE,EAAkDxiE,EAAoB,KAC3FmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IqChhU1Oi8C,EAAe,eACfE,GAAkB,kBAClBrC,GAAsB,sBACtB+B,GAAiB,iBACjBE,GAAmB,mBACnBpB,GAAmB,mBACnBQ,GAAgB,gBAChBO,GAAkB,kBAClB9B,GAAwB,wBACxB8C,GAAc,cACd8D,GAAgB,gBAChBlE,GAAwB,wBACxBmE,GAAyB,yBACzB/4D,GAAa,aACbC,GAAe,eACfk4D,GAAwB,wBACxBE,GAA0B,0BAC1BE,GAA8B,8BAC9BE,GAAsB,sBACtBE,GAAoB,oBACpBK,GAAqB,qBACrBH,GAAqB,oBAGJh8D,KAAtB2C,IACgB1C,IAAhB0C,MrCyuVqBhH,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YAYA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GsC/zVld,QAAS6kD,GAAW//C,GAAgC,GAAdlI,GAAc,0DACzDkoD,EAAiBC,YAAejgD,EAAkBlI,GAClDooD,EAFyD,8KAIvD,MAAOnkD,MAAK4F,IAAIF,wBAJuC,8BAMlD,UACL,OACI,mBAACu+C,EAAD,GACIr+C,IAAK,SAAAw+C,GAAU,EAAKx+C,IAAMw+C,IACtBpkD,KAAKH,OACT1D,SAAU6D,KAAKF,QAAQ3D,gBAXwB,GAEtCkoD,gBAmBzB,OAJAF,GAAWngD,cACP7H,SAAUmoD,YAAUv/D,QAGjBw/D,IAAaJ,EAAYlgD,GtC2xVH3e,EAAuB,EAAI0+D,CACvC,IAAIQ,GAAsCvjE,EAAoB,GAC1DwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEE,EAAwDzjE,EAAoB,KAC5E0jE,EAAgE1jE,EAAoB4D,EAAE6/D,GACtFE,EAA2C3jE,EAAoB,GACvDA,GAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOs/D,GAA4C,GACjJ,IAAIxjD,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,OA4D1hB,SAAUviE,EAAQD,EAASH,GAEjC,YuCh2VA,SAASgkE,GAAmBh4B,EAAMi4B,GAChC,MAAyB,KAAlBj4B,EAAKk4B,UAAkBl4B,EAAKm4B,aAAaC,KAAe59B,OAAOy9B,IAA6B,IAAlBj4B,EAAKk4B,UAAkBl4B,EAAKq4B,YAAc,gBAAkBJ,EAAS,KAAyB,IAAlBj4B,EAAKk4B,UAAkBl4B,EAAKq4B,YAAc,iBAAmBJ,EAAS,IAUrO,QAASK,GAAmCC,GAE1C,IADA,GAAIpX,GACGA,EAAWoX,EAAUC,oBAC1BD,EAAYpX,CAEd,OAAOoX,GAOT,QAASE,GAAatB,EAAMn3B,GAC1B,GAAI04B,GAAWJ,EAAmCnB,EAClDuB,GAASC,UAAY34B,EACrBA,EAAK44B,GAAuBF,EAG9B,QAASG,GAAY1B,GACnB,GAAIn3B,GAAOm3B,EAAKwB,SACZ34B,WACKA,GAAK44B,GACZzB,EAAKwB,UAAY,MAkBrB,QAASG,GAAmB3B,EAAMn3B,GAChC,KAAIm3B,EAAK4B,OAAS3+D,EAAM4+D,qBAAxB,CAGA,GAAIxlD,GAAW2jD,EAAK8B,kBAChBC,EAAYl5B,EAAKm5B,UACrBC,GAAO,IAAK,GAAI/hE,KAAQmc,GACtB,GAAKA,EAASpe,eAAeiC,GAA7B,CAGA,GAAIgiE,GAAY7lD,EAASnc,GACrBiiE,EAAUhB,EAAmCe,GAAWE,MAC5D,IAAgB,IAAZD,EAAJ,CAKA,KAAqB,OAAdJ,EAAoBA,EAAYA,EAAUM,YAC/C,GAAIxB,EAAmBkB,EAAWI,GAAU,CAC1Cb,EAAaY,EAAWH,EACxB,SAASE,GAIsGK,EAAe,KAAMH,IAE1InC,EAAK4B,QAAU3+D,EAAM4+D,qBAOvB,QAASU,GAA2B15B,GAClC,GAAIA,EAAK44B,GACP,MAAO54B,GAAK44B,EAKd,KADA,GAAIe,OACI35B,EAAK44B,IAAsB,CAEjC,GADAe,EAAQ1kE,KAAK+qC,IACTA,EAAK45B,WAKP,MAAO,KAJP55B,GAAOA,EAAK45B,WAUhB,IAFA,GAAIC,GACA1C,EACGn3B,IAASm3B,EAAOn3B,EAAK44B,IAAuB54B,EAAO25B,EAAQj0C,MAChEm0C,EAAU1C,EACNwC,EAAQ5kE,QACV+jE,EAAmB3B,EAAMn3B,EAI7B,OAAO65B,GAOT,QAASC,GAAoB95B,GAC3B,GAAIm3B,GAAOuC,EAA2B15B,EACtC,OAAY,OAARm3B,GAAgBA,EAAKwB,YAAc34B,EAC9Bm3B,EAEA,KAQX,QAAS4C,GAAoB5C,GAK3B,YAFEA,EAAKwB,WAAgIc,EAAe,MAElJtC,EAAKwB,UACP,MAAOxB,GAAKwB,SAKd,KADA,GAAIgB,OACIxC,EAAKwB,WACXgB,EAAQ1kE,KAAKkiE,GACZA,EAAK6C,aAAqIP,EAAe,MAC1JtC,EAAOA,EAAK6C,WAKd,MAAOL,EAAQ5kE,OAAQoiE,EAAOwC,EAAQj0C,MACpCozC,EAAmB3B,EAAMA,EAAKwB,UAGhC,OAAOxB,GAAKwB,UAzKd,GAAIc,GAAiB,EAAQ,GAEzBQ,EAAc,EAAQ,IACtBC,EAAyB,EAAQ,KAIjC9B,GAFY,EAAQ,GAER6B,EAAYE,mBACxB//D,EAAQ8/D,EAERtB,EAAsB,2BAA6BvnC,KAAK+oC,SAASppC,SAAS,IAAIpqB,MAAM,GAkKpFyzD,GACFX,2BAA4BA,EAC5BI,oBAAqBA,EACrBC,oBAAqBA,EACrBjB,mBAAoBA,EACpBL,aAAcA,EACdI,YAAaA,EAGfzkE,GAAOD,QAAUkmE,GvCg4VX,SAAUjmE,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GA4HrC,QAASI,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,EAE3M,QAASsrB,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GAE1L,QAAS67C,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIg9C,GAA+ChlC,EAAE,SAAUxnB,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO6a,GAA+ChlC,EAAExnB,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAA/K/B,GAAQuC,GAAqL,MAAOkqD,GAAK,WwCxoWpgB,QAAS2X,GAAoB7jE,GAChC,MAAO,UAACmiB,EAAUjD,GACd,MAAIlf,KAASkC,KAAkB2C,GACpBi/D,KAAcnyC,IAAKsjC,QAAS,YAAa8O,SAAU,QAEvDD,KAAcE,OACjBC,0BAA2B,aAC3BC,UAAW,eACXC,YAAaxuD,aAAqBuJ,KAClCklD,YAAapmE,OAAO4Z,SAASyC,KAC7BgqD,aAAYA,KAwCjB,QAAS/Q,GAAqCrhC,GACjD,OACIjyB,KAAMskE,GACNryC,iBAID,QAAS4hC,GAA2B1gC,GACvC,OACInzB,KAAMukE,GACNpxC,OAID,QAAS2gC,GAA+Bb,GAC3C,OACIjzD,KAAMwkE,GACN1xC,SACIC,MAAOkgC,EACP9hC,aAAcq7B,KAAKl9C,QAKxB,QAASykD,GAA4B1gC,GACxC,OACIrzB,KAAMykE,GACNpxC,gBAID,QAASooC,KACZ,OACIz7D,KAAM0kE,GACNpX,UAAWd,KAAKl9C,OAIjB,QAASysD,KACZ,OACI/7D,KAAM2kE,GACNxzC,aAAcq7B,KAAKl9C,OAKpB,QAASs1D,KACZ,OACI5kE,KAAM6kE,GACNvX,UAAWd,KAAKl9C,OAIjB,QAASw1D,GAA0CzzC,GACtD,OACIrxB,KAAM+kE,GACNC,WAAUA,IAAE3zC,EAA2B,MAAQ,SAC/C4zC,SAAU,MACV3X,UAAWd,KAAKl9C,OAIjB,QAAS41D,GAAoCn2D,GAChD,OACI/O,KAAMmlE,GACNp2D,QAID,QAASq2D,GAAwBxtD,GACpC,OACI5X,KAAMqlE,GACNztD,YAID,QAAS0tD,KACZ,MAAO,UAACnjD,GAAD,MACHA,GAAS0hD,EAAoB3hE,KAAkB2C,KAC1C0gE,cAAcz2B,KAAK,SAACl3B,GACbA,GAAgC,qBAAbA,EAAP,eAAOA,MACnBA,EAAS4tD,SAAWzzD,KAAW0zD,cAC/BtjD,EAASijD,EAAwBxtD,QAM9C,QAAS8tD,GAA6BC,GACzC,OACI3lE,KAAM4lE,GACND,YACAx0C,aAAcq7B,KAAKl9C,OAKpB,QAASu2D,KACZ,OACI7lE,KAAM8lE,GACNxY,UAAWd,KAAKl9C,OAKjB,QAASy2D,KAA2D,gEAA5C5vD,EAA4C,EAA5CA,QAAS8+C,EAAmC,EAAnCA,QAAS8O,EAA0B,EAA1BA,SAAUxpD,EAAgB,EAAhBA,OACvD,OAAO,UAAC4H,EAAUjD,GACd,GAAM6B,GAAQ7B,IACR2pB,GACFosB,UACA8O,WACAxpD,UACApE,QAASA,GAAWD,aAAgB6K,GACpCilD,QAASrwD,aAAqBoL,IAE5BklD,EAAqBC,aAAkBnlD,GACzColD,QASJ,OARAhkD,GAAS0jD,KAELM,EADAF,EAAmB3nE,OAAS,EACVkB,IAAQC,QAAQwmE,GAEhBG,KACbL,aAAal9B,GACbiG,KAAK,6EAA6Cu3B,KAAKC,MAEzDH,EAAgBr3B,KAAK,SAAC62B,GAEzB,MADAxjD,GAASujD,EAA6BC,IAC/BA,KAKZ,QAASlT,KAAoC,UAChD,mDAAO,WAAOtwC,EAAUjD,GAAjB,+GACHkxC,MAAe,qCACTmW,EAAkBpkD,EAAS0hD,EAAoB3hE,KAAkB2C,KAFpE,SAIGsd,EAASmjD,IAJZ,cAKHnjD,GAASyiD,KALN,SAM2B2B,EAAgB90C,qBAN3C,WAMGJ,EANH,OAOH++B,KAAoB,qCACpBjuC,EAAS2iD,EAA0CzzC,SAC/CA,EATD,kCAUmC7xB,IAAQyrC,KAAK9oB,EAAS4jD,KAAiBQ,EAAgBC,yBAV1F,+BAUQb,EAVR,KAUmBc,EAVnB,KAWKC,EAAmBf,GAKA,KAJjBgB,EAAgBC,KAAUjB,EAAW,SAACz1C,GAAD,MAAeA,GAAS22C,QAAUJ,EAAOnyC,QAZrF,uBAiBWne,GAAUD,aAAgBgJ,KAjBrC,UAkB4BknD,KAAUU,aAAcC,aAAcN,EAAOnyC,KAAMne,WAlB/E,eAkBW+Z,GAlBX,OAmBSA,IACAw2C,EAAiBM,QAAQ92C,GACzB/N,EAASujD,EAA6BgB,IACtCvkD,EAAS+iD,EAAoCh1C,KAtBtD,kBAwBYA,EAxBZ,eA0BO+2C,GAAetB,EAAUgB,GAC3BA,EAAgB,IAChBhB,EAAUhnD,OAAOgoD,EAAe,GAChCD,GAAoBO,GAApB,OAAAnmE,EAAqC6kE,KAEzCxjD,EAASujD,EAA6BgB,IACtCvkD,EAAS+iD,EAAoC+B,IAhC9C,kBAiCQA,EAjCR,kCAmCI,KAnCJ,4CAAP,yDAyCG,QAASC,KACZ,OACIlnE,KAAMmnE,GACN7Z,UAAWd,KAAKl9C,OAIjB,QAAS83D,KACZ,OACIpnE,KAAMqnE,GACNl2C,aAAcq7B,KAAKl9C,OAKpB,QAASg4D,KACZ,OACItnE,KAAMunE,GACNja,UAAWd,KAAKl9C,OAIjB,QAASk4D,KAAiD,GAAhBxkB,GAAgB,yDAC7D,QACIhjD,KAAMynE,GACNzkB,aAID,QAAS0kB,KAAwB,WAChC1kB,EAAY2kB,KAASC,cACzB,mDAAO,WAAOzlD,EAAUjD,GAAjB,wHACG6B,EAAQ7B,IACRpI,EAASR,aAAeyK,GAF3B,EAGoF7L,aAAkB6L,GAHtG,IAGK8P,UAHL,kBAGkBg3C,EAHlB,EAGkBA,4BAHlB,IAG+CC,gCAH/C,OAIEhxD,GAAW+wD,IACZ7kB,EAAY8kB,GAEX9kB,EAPF,oBAQK+kB,SACEC,EAAqB7lD,EAAS0hD,EAAoB3hE,KAAkB0C,SACtEkS,EAVL,iBAWWmxD,EAAWC,aAAiBnnD,OAClCgnD,EAAcI,KAAKF,EACV91C,OAAO,eAAGE,GAAH,EAAGA,SAAU+1C,EAAb,EAAaA,aAAb,OAAiC/1C,IAAY+1C,IACpD95C,IAAI,qBAAG85C,iBACVC,EAAkBhpE,KAAM0oE,EAAaJ,KAASW,oBAQhDt6C,EAAQ,CAvBjB,cAwBiBA,EAAQq6C,EAAgB/pE,QAxBzC,kCAyBwC0pE,EAAmBO,4BAAnB,MAAAP,EAAA,EAAkDK,EAAgBr6C,IAzB1G,SAyBew6C,EAzBf,OA0BaA,EAAiBlqE,OAAS,IAC1B0kD,GAAaA,OAAiB7zB,OAAOq5C,GA3BlD,SAwBiDx6C,GAAS,EAxB1D,wBA8BKg1B,EAAYmlB,KAAKnlB,GA9BtB,wBAgCWylB,EAAWvpD,IAAWkX,SAASqyC,aACrCV,EAAcI,KAAKM,EAASn6C,IAAI,SAACihC,GAAD,MAAcA,GAAQ6Y,gBAAgBj2C,OAAO,SAAAi2C,GAAA,QAAmBA,KAC1FC,EAAkBhpE,KAAM0oE,EAAaJ,KAASW,oBAQhDt6C,EAAQ,CA1CjB,cA2CiBA,EAAQq6C,EAAgB/pE,QA3CzC,kCA4CwC0pE,EAAmBO,4BAAnB,MAAAP,EAAA,EAAkDK,EAAgBr6C,IA5C1G,SA4Cew6C,EA5Cf,OA6CaA,EAAiBlqE,OAAS,IAC1B0kD,GAAaA,OAAiB7zB,OAAOq5C,GA9ClD,SA2CiDx6C,GAAS,EA3C1D,yBAiDKg1B,EAAYmlB,KAAKnlB,KACAA,EAAU1kD,SACvBqpE,KAASe,aAAa1lB,EAAW,GAE7BhlD,OAAO2qE,SAAW3qE,OAAO2qE,QAAQC,SACjC5qE,OAAO2qE,QAAQC,QAAQC,gBAAkB7qE,OAAO2qE,QAAQC,QAAQC,eAAeC,eAE/E9qE,OAAO2qE,QAAQC,QAAQC,eAAeC,cAAc9lB,GAxDjE,eA8DH7gC,GAASqlD,EAAiCxkB,IA9DvC,kBA+DIA,EA/DJ,4CAAP,yDAmEG,QAAS+lB,GAAwC13C,GACpD,OACIrxB,KAAMgpE,GACNhE,WAAUA,IAAE3zC,EAA2B,MAAQ,SAC/CA,kBACA4zC,SAAU1hE,KAAUqH,KACpBumB,aAAcq7B,KAAKl9C,OAIpB,QAAS25D,GAAgCpa,GAC5C,OACI7uD,KAAMkpE,GACNra,UACAvB,UAAWd,KAAKl9C,OAIjB,QAAS65D,GAAmC93C,EAAiBiD,GAChE,OACIt0B,KAAMopE,GACNpE,WAAUA,IAAE3zC,EAA2B,MAAQ,SAC/CA,kBACA4zC,SAAU1hE,KAAUqH,KACpB0pB,OACAnD,aAAcq7B,KAAKl9C,OAIpB,QAAS+5D,GAA+BC,GAC3C,OACItpE,KAAMupE,GACND,aACAhc,UAAWd,KAAKl9C,OAIjB,QAASk6D,GAAkCF,EAAYv2C,GAC1D,OACI/yB,KAAMypE,GACNH,aACAv2C,QACA5B,aAAcq7B,KAAKl9C,OAIpB,QAASwpD,GAA2Bp3D,GACvC,OACI1B,KAAM0pE,GACNhoE,SAMD,QAASioE,KACZ,MAAO,UAACxnD,EAAUjD,GACd,GAAM6B,GAAQ7B,GACd0qD,eAAkBrzD,WAAYF,aAAmB0K,KACjDoB,GACIniB,KAAM6pE,GACNC,oBAAmBA,KAKxB,QAASC,KAA+C,GAAfC,KAAe,wDAC3D,OAAO,UAAC7nD,EAAUjD,GAKd,GAJAiD,GACIniB,KAAMiqE,GACNH,oBAAmBA,IAEnBE,EAAQ,CAAC,GAAD,GACmCv0D,aAAYyJ,KAA/CgrD,EADA,EACAA,gBAAiBC,EADjB,EACiBA,aACpBtjB,cAAQsjB,KACThoD,EAASu3C,gBACTv3C,EAASo3C,aAAc2Q,OAMhC,QAASE,KACZ,OACIpqE,KAAMqqE,GACN/c,UAAWd,KAAKl9C,OAIjB,QAASg7D,KAGZ,MAFA3C,MAASvpD,SAGLpe,KAAMuqE,GACNvF,UAAW,SACX3zC,iBAAgBA,EAChB4zC,SAAU1hE,KAAUqH,KACpBumB,aAAcq7B,KAAKl9C,OAIpB,QAASk7D,GAA6B3S,GACzC,MAAO,UAAC11C,EAAUjD,GASd,MARAiD,GAASioD,KACTzC,KAASvpD,QAELpgB,OAAO2qE,SAAW3qE,OAAO2qE,QAAQC,SACjC5qE,OAAO2qE,QAAQC,QAAQC,gBAAkB7qE,OAAO2qE,QAAQC,QAAQC,eAAeC,eAE/E9qE,OAAO2qE,QAAQC,QAAQC,eAAe4B,mBAEnCtoD,EAAS0hD,EAAoB3hE,KAAkB0C,QACjD8lE,iBAAiB57B,KAAK,SAACzd,GAYpB,MAVAs5C,aACIt5C,IACAlP,EAASmoD,KACLzS,GAAUA,EAAOlnC,aACDqnC,aAAwB94C,KAChC0rD,WACRzoD,EAASk3C,gBACTl3C,EAASqzC,aAAaqC,KAGvBr4D,IAAQC,aAKxB,QAASorE,GAAkC97D,GAC9C,MAAO,UAACoT,EAAUjD,GACd,GAAM6B,GAAQ7B,IACRgV,EAAWzD,aAAiB1P,GAC5BxK,EAAaF,aAAmB0K,GAChC+pD,EAAuBC,aAA6BhqD,EAC1DiqD,eAA8B92C,WAAUhE,SAAUnhB,EAAM+7D,uBAAsBv0D,eAC9E4L,GACIniB,KAAMirE,GACNl8D,UAKL,QAASm8D,GAAwBnpE,EAAKC,GACzC,OACIhC,KAAMmrE,GACNppE,MACAC,SAID,QAASopE,KACZ,MAAO,UAACjpD,GAAD,MAAcA,GAAS0hD,EAAoB3hE,KAAkB0C,QAC/DymE,aAAa,SAACC,GACXnpD,EAAS22C,EAA2BwS,OAIzC,QAASC,KACZ,MAAO,UAACppD,GAGJ,MAFAA,GAAS+kD,KACT/kD,EAASipD,KACFjpD,EAAS0hD,EAAoB3hE,KAAkB0C,QACjD4mE,aAAa18B,KAAK,SAAC28B,GAIhB,MAHIA,IACAtpD,EAASilD,KAENqE,KAKhB,QAASC,KACZ,MAAO,UAACvpD,EAAUjD,GAEd,MAD6B+R,cAA6B/R,MAI1DiD,EAASmlD,KACFnlD,EAAS0hD,EAAoB3hE,KAAkB0C,QACjD6sB,sBACAqd,KAAK,SAACzd,GAEH,MADAlP,GAAS4mD,EAAwC13C,IAC1CA,KAPJ7xB,IAAQC,SAAQA,IAY5B,QAASksE,KACZ,MAAO,UAACxpD,GAAD,MAAcA,GAAS0hD,EAAoB3hE,KAAkB0C,QAC/D4hE,yBAGF,QAASoF,GAAqB7pE,GACjC,MAAO,UAACogB,GAAD,MAAcA,GAAS0hD,EAAoB3hE,KAAkB0C,QAC/DinE,YAAY9pE,IAGd,QAAS+pE,GAA6B/pE,GACzC,MAAO,UAACogB,GAAD,MAAcA,GAASypD,EAAqB7pE,IAC9C+sC,KAAK,WAAgC,GAA/B9sC,GAA+B,0DAApB44B,KAAK+oC,QAEnB,OADAxhD,GAAS+oD,EAAwBnpE,EAAKC,IAC/BxC,IAAQC,QAAQuC,IACxB,SAACN,GAAD,MAAWlC,KAAQG,OAAO+B,MAK9B,QAAS8wD,GAAqCuZ,GAAc,UAC/D,mDAAO,WAAO5pD,EAAUjD,GAAjB,MAAA+H,EAAA,yHACHmpC,MAAe,wCACTt5C,EAASR,aAAe4I,KACzBpI,IAEK0xD,EAAmBb,KAASC,iBAE9BzlD,EAASqlD,EAAiCgB,IAP/C,SAUGrmD,EAASopD,IAVZ,wBAWGppD,EAASupD,IAXZ,wBAYGvpD,EAAS4jD,IAZZ,WAcGhlD,EAAQ7B,MACRmS,EAAkBD,aAA+BrQ,IAfpD,kCAiBoBoB,EAASwpD,IAjB7B,eAiBO58D,GAjBP,iBAmBOoT,EAAS2pD,EAA6B3pE,KAAU8C,SAASI,iBAnBhE,YAoBsC2mE,EAAuBjrD,EAApDkrD,eAAkBtG,UACpBsB,EAAe+E,EAAiB75C,OAAO,qBAAG40C,eAC3Bh4D,EAAKulB,OACxB11B,QAvBH,kCA4BWujB,EAASqoD,IA5BpB,cA+BkB/0D,aAAYsL,GAArBvI,EA/BT,EA+BSA,KA/BT,EAgCuCrD,aAAgB4L,GAA9CpI,EAhCT,EAgCSA,0BAhCT,EAiCwB2vC,aAAavnC,GAAxBkmC,EAjCb,EAiCSruC,GAjCT,EAkCwBD,MAlCxB,IAkCSd,iBAlCT,QAoCKf,EApCL,kCAqC6BqL,EAASypD,EAAqBzpE,KAAU8C,SAASK,YArC9E,eAqCW+kD,GArCX,iBAsC6BloC,EAASypD,EAAqBzpE,KAAU8C,SAASM,cAtC9E,YAsCS2mE,EAtCT,OAwCWC,EAAMlF,EAAamF,SAASj6C,OAAO,SAAAO,GAAA,MAAQA,GAAK25C,cAAgBhiB,IAAWzrD,SAC5EstE,GAAeC,IAEhBD,EAAcC,EAAI9hB,WAEtBloC,EAAS+oD,EAAwB/oE,KAAU8C,SAASK,WAAY+kD,IAChEloC,EAAS+oD,EAAwB/oE,KAAU8C,SAASM,aAAc2mE,IAClE/pD,EAAS0oD,EAAkCA,MAAK5D,GAAcqF,QAASH,MACvEhqD,EAASo4C,aAAclQ,IACvBloC,EAASq4C,aAAgB0R,MAEnBK,EAAgBnzD,aAAsB8F,OACZ,sBAAX+nC,EApD1B,kCAqDeznD,IAAQyrC,KACV9oB,EAASguC,aAAsBlJ,EAAQ8kB,EAAcl0D,EAAOW,IAC5D2J,EAASgyC,aAAoB37C,KAvD1C,SAyDS2J,EAASiyC,gBAzDlB,wBA2DSjyC,EAASuyC,iBA3DlB,iCA8DKvyC,EAAS0oD,EAAkC5D,GA9DhD,UAkEM0D,QAA2C1D,IAC5C0D,KAA2C1D,GAC3C9kD,EAASypD,EAAqBzpE,KAAU8C,SAASC,YAC5C4pC,KAAK,SAAC09B,GACH7B,KAAmC6B,MAI3C11D,GASAqL,EAASulD,IAnFd,eAsFC5wD,IACAqL,EAASuyC,kBAEbiW,KAA0CI,aAA6B7rD,MACvEkxC,KAAoB,wCA1FjB,kBA2FI,KA3FJ,4CAAP,yDA+FG,QAASqc,KAAiG,gEAArD5d,EAAqD,EAArDA,QAASgJ,EAA4C,EAA5CA,OAAqB6U,EAAuB,EAApCtI,WACzE,OAAO,UAACjiD,EAAUjD,GACd,GAAMuhB,GAAQm3B,aAAwB14C,KADX,EAEW/J,aAAgB+J,KAA9CvG,EAFmB,EAEnBA,0BAFmB,EAGWA,MAHX,IAGnBd,iBAHmB,WAGPgB,oBAHO,EAGI,GAHJ,EAIrBurD,EAAcsI,GAAkBC,cAA0B9d,UAASgJ,SAAQp3B,QAAO5oB,QAAOgB,YAE/F,OADAsJ,GAAS8mD,EAAgCpa,IAClC1sC,EAAS0hD,EAAoB3hE,KAAkB0C,QACjDgoE,aAAa,KAAM,KAAMxI,GAAe,IACxCt1B,KAAK,SAACzd,GAEH,MADAlP,GAASgnD,EAAmC93C,IACrC7xB,IAAQC,QAAQ4xB,MAKhC,QAASw7C,GAAyCjpB,GACrD,MAAO,UAACzhC,EAAUjD,GACdiD,EAASknD,EAA+BzlB,GACxC,IAAM7iC,GAAQ7B,GAQd,OAPA4tD,eACI54C,SAAUzD,aAAiB1P,GAC3BmP,SAAU68C,aAAiBhsD,GAC3B+pD,qBAAsBC,aAA6BhqD,GACnDxK,WAAYF,aAAmB0K,KAG5BoB,EAAS0hD,EAAoB3hE,KAAkB0C,QACjDooE,UAAUppB,GACV9U,KAAK,SAACm+B,GAQH,MAPA9qD,GAASqnD,EAAkCyD,EAAS3D,WAAY2D,EAASl6C,QACzEm6C,cACIh5C,SAAUzD,aAAiB1P,GAC3BmP,SAAU68C,aAAiBhsD,GAC3B+pD,qBAAsBC,aAA6BhqD,GACnDxK,WAAYF,aAAmB0K,KAE9BksD,EAASE,WAAcF,EAASG,aAM9B5tE,IAAQG,OAAO,GAAIL,OAAM2tE,EAASG,cAAgBH,EAASE,YALvD3tE,IAAQC,SACX6pE,WAAY2D,EAAS3D,WACrBv2C,MAAOk6C,EAASl6C,UAK3Bs6C,MAAM,SAAA3rE,GAEH,MADAygB,GAASqnD,KACFhqE,IAAQG,OAAO+B,MAK/B,QAAS4rE,GAA2Bp9C,GACvC,MAAO,UAAC/N,EAAUjD,GACd,GAAMquD,IACFC,GAAKt9C,GAAYA,EAASs9C,IAAOt9C,EAAS62C,aAG9C,IAAIwG,EAAcC,GAAI,CAClB,GAAMzsD,GAAQ7B,IACR3I,EAAaF,aAAmB0K,EACtC0sD,eACIv5C,SAAUzD,aAAiB1P,GAC3B+pD,qBAAsBC,aAA6BhqD,GACnDmP,WACA3Z,mBAGJm3D,eAEJvrD,GAAS0hD,EAAoB3hE,KAAkB0C,QAC1C+oE,eAAeJ,GAAez+B,KAAK,SAACzd,GAEjClP,EAASgnD,EAAmC93C,EAAiBk8C,EAAcC,QAmBpF,QAASI,GAAT,GAAkE,WAAhC/e,EAAgC,EAAhCA,QAASgJ,EAAuB,EAAvBA,OAAQiF,EAAe,EAAfA,WACtD,mDAAO,WAAO36C,EAAUjD,GAAjB,sKACG6B,EAAQ7B,IADX,EAEkBhK,aAAkB6L,GAFpC,IAEKgR,eAFL,OAGGspC,EAAiB5mC,aAAuB1T,GAH3C,EAImC5L,aAAgB4L,GAA9CpI,EAJL,EAIKA,0BAJL,EAKyBA,MAApBd,EALL,EAKKA,MAAOgB,EALZ,EAKYA,SACT4nB,EAAQm3B,aAAwB72C,GAChCw6C,EAAaC,aAAmBz6C,GAChC8sD,EAAYC,aAAuB/sD,OACnCmT,EAAWzD,aAAiB1P,GAC5BqjD,EAAcuI,cAA0B9d,UAASgJ,SAAQp3B,QAAO5oB,QAAOgB,aACvEk1D,EAAUjR,IAAgBpxC,KAC1BsiD,EAAYC,aAAkBltD,GACP,UAAzBlJ,EAAMlU,KAAM8F,SAbb,oBAcMskE,GAAYlW,EAdlB,uBAeKp2D,GAAQC,MAAM,yBAfnB,2BAkBMqsE,GAiBKG,EAAyC,QAA5Br2D,EAAMlU,KAAMwJ,YAA2BxJ,KAAMgJ,UAA7C,YAAoE,GACjFwhE,EAFH,MAEmBtf,EAAQj2C,GACxBw1D,EAHH,eAGkCvkD,mBAAmBu6C,GAClDlU,EAJH,2BAIoCge,EAAaC,EAJjD,IAI4DC,GACzDC,EAAUxuE,SAASg9D,eAAenxC,SAEpC2iD,EAAQC,UAAR,gBAAoCpe,EAApC,iBAtBEqe,EAASC,aAAoB3W,EAAQp0D,KAAayH,eAElDujE,EAAaF,GAAUC,aAAoB3W,EAAQp0D,KAAa0H,eAChEujE,IAAc7f,EAAQrnB,MACxBmnC,UACCF,GAAcC,IACfC,MAEEC,EAAeD,EAAUA,WAAWA,EAArB,IAAkC,GAEjDT,EAAyC,QAA5Br2D,EAAMlU,KAAMwJ,YAA2BxJ,KAAMgJ,UAA7C,YAAoE,GACjFwhE,EAZI,MAYYtW,EAAOj/C,GACvBw1D,EAbI,eAa2BvkD,mBAAmBu6C,GAClDlU,EAdI,2BAc6Bge,EAAaU,EAAeT,EAdzD,IAcoEC,EAC9EjsD,EAASk1C,aAAoBn0D,KAAUuG,SAAWpJ,IAAK6vD,MAjC5D,8BA6CM6d,IACD5rD,EAASk1C,aAAoBn0D,KAAUuG,SAAWolD,aAEhDiM,EAAc,GAAIC,OACpBC,iBAAkBnjD,EAAMlU,KAAM0J,SAAZ,MAA4B0kB,GAAKiU,IAAKnuB,EAAMlU,KAAM0J,WAAa0kB,IAE/E8+B,EAAYge,aAAahgB,GACzBigB,EAAcje,EAAU/3C,SAAW+3C,EAAUj4C,GAC7Cm2D,EArDP,IAsDK5R,UAAUA,IAAKL,EACfM,gBACGC,aAAiB9B,EAAYF,EAAgBnnC,IAChDkwC,cACA2J,UACAF,cAIqB,gBAAdG,IAAwC,KAAdA,IACjCe,EAAclB,UAAUG,UAAYA,GAGpCgB,EAAQ,MACPnX,GAAUhH,EAAU/3C,UACrBk2D,EAAQ,WAGPjB,IACGlW,GACAkX,EAAcC,GAASnX,EAAOj/C,GASxBq2D,EAAoBpX,GAAUA,EAAOhJ,QACrCqgB,EAAcrgB,EAAQqC,QAAQ,GAChCie,SAEAA,EADAF,EACepX,EACRqX,GAAeA,EAAYrgB,QACnBqgB,EAEfC,MAAoBtX,GAAQhJ,YAEhCkgB,EAAc3R,YAAYvF,OAASsX,IAEnCJ,EAAcC,GAASF,EAKnBjgB,IACMqgB,EAAcrgB,EAAQqC,QAAQ,GACpC6d,EAAc3R,YAAYvF,OAASqX,SAAoBrgB,GAASA,eAK5C,QAA5Bh3C,EAAMlU,KAAMwJ,cACZ4hE,EAAcK,SAAW,OAExBrB,GACDjT,EAAYsB,KAAKrB,KAAmBsB,OAAOgT,gBAAiB,SAAC7nC,GAAU,GAC3DqH,GAAkErH,EAAlEqH,QAD2D,EACOrH,EAAzD+0B,IADkD,sBAC1C0I,GAD0C,EAC1CA,SAAuByH,EADmB,EAChCtI,WAC9Bv1B,IACDptC,EAAQC,MAAM,kBAAmB8lC,GAErCrlB,EAASs1C,gBACLwN,IAAa1hE,KAAUuH,KACvBwkE,KAAS,QAAS,WAAM,MAChBC,EAAY1X,CACX0X,KACDA,EAAY1gB,EAAQqC,QACf/+B,OAAO,SAACq9C,GAAD,MAAiBC,cAAkBD,EAAajsE,KAAUuH,OAAM,GAEhF,IAAM4kE,mCACqBV,EAAUF,GAD/B,qBAEcS,GAAaA,EAAUnD,UAAYmD,EAAUnD,SAAS79C,KAAK,MAFzE,EAKFghD,IAAaA,EAAU32D,KAAOk2D,IAC9BY,EAAWC,cAAgBJ,EAAU32D,GAZrB,IAgBZg3D,GAAa/3D,EAAb+3D,QACJA,KACAF,EAAWE,SAAWA,GAE1B5xE,OAAO4Z,SAASyC,KAAOw1D,aAAcnD,EAAgBgD,KAEzDvtD,EAAS2tD,iBACF7K,IAAa1hE,KAAUqH,MAC9BuX,EAASsqD,GAA4C5d,UAASgJ,YACzD/oB,KAAK,SAACzd,GACEA,GACDlP,EAASwnD,SAjJlC,UAwJKloE,EAAQqN,IAAI,gBAAiBigE,GAxJlC,UAyJWjU,EAAYiV,cAAchB,EAzJrC,4DA2JKttE,EAAQC,MAAR,KA3JL,sDAAP,yDxCyzU4EE,EAAuB,EAAIiiE,EAC5EtmE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOulE,MACpE5pE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOylE,MACpE9pE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO2lE,MACpEhqE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOonE,MACpEzrE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOsnE,MACpE3rE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOwnE,MACpE7rE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO2nE,MACpEhsE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO6nE,MACpElsE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOkkE,MACpEvoE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOgkE,MACpEroE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOioE,MACpEtsE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOqoE,MAGpE1sE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO2oE,MACpEhtE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOqpE,MACpE1tE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOupE,MACpE5tE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO6lE,MACpElqE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOyjE,MACpE9nE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO8nE,MACpEnsE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO8iE,MACpEnnE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+iE,MACpEpnE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO0iE,MACpE/mE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO2iE,MACpEhnE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO4iE,MACpEjnE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO6iE,MACpElnE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOijE,MACpEtnE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOmjE,MACpExnE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOujE,MAClEvjE,EAAuB,EAAI0xD,EAC3B1xD,EAAuB,EAAIiyD,EAC3BjyD,EAAuB,EAAIkyD,EAC3BlyD,EAAuB,EAAImyD,EAC3BnyD,EAAuB,EAAI65D,EAC3B75D,EAAuB,EAAIm6D,EAE3Bn6D,EAAuB,EAAIkjE,EAG3BljE,EAAuB,EAAI0jE,EAG3B1jE,EAAuB,EAAImkE,EAC3BnkE,EAAuB,EAAI6wD,EAI3B7wD,EAAuB,EAAI4lE,EAE3B5lE,EAAuB,EAAImnE,EAK3BnnE,EAAuB,EAAIk3D,EAC3Bl3D,EAAuB,EAAI+nE,EAC3B/nE,EAAuB,EAAImoE,EAG3BnoE,EAAuB,EAAI4oE,EAC3B5oE,EAAuB,EAAIipE,EAK3BjpE,EAAuB,EAAI+pE,EAE3B/pE,EAAuB,EAAIkqE,EAC3BlqE,EAAuB,EAAI4wD,EAC3B5wD,EAAuB,EAAI6qE,EAC3B7qE,EAAuB,EAAIirE,EAC3BjrE,EAAuB,EAAI0rE,EAE3B1rE,EAAuB,EAAIgsE,CACvC,IAAIlY,GAAyCn4D,EAAoB,IAC7D0uD,EAAiD1uD,EAAoB4D,EAAEu0D,GACvEsa,EAAiDzyE,EAAoB,KACrE0yE,GAAyD1yE,EAAoB4D,EAAE6uE,GAC/EloB,GAA2CvqD,EAAoB,GAC/DwqD,GAAuCxqD,EAAoB,GAC3D2yE,GAAwD3yE,EAAoB,KAC5E4yE,GAAmD5yE,EAAoB,KACvE6yE,GAA8D7yE,EAAoB,KAClF8yE,GAA4D9yE,EAAoB,IAChF+yE,GAAuD/yE,EAAoB,IAC3Ey4D,GAA+Cz4D,EAAoB,IACnEgzE,GAAoEhzE,EAAoB,KACxFizE,GAA0CjzE,EAAoB,IAC9DkzE,GAAwDlzE,EAAoB,IAC5EmzE,GAAqEnzE,EAAoB,KACzFozE,GAA2DpzE,EAAoB,IAC/EqzE,GAA+CrzE,EAAoB,IACnEszE,GAAmDtzE,EAAoB,IACvEuzE,GAA4DvzE,EAAoB,KAChFwzE,GAA4CxzE,EAAoB,IAChEyzE,GAA8DzzE,EAAoB,IAClF0zE,GAAoE1zE,EAAoB,IACxF2zE,GAA0D3zE,EAAoB,IAC9E4zE,GAAoE5zE,EAAoB,IACxF6zE,GAAwD7zE,EAAoB,GAC5E8zE,GAAyD9zE,EAAoB,IAC7E+zE,GAA0D/zE,EAAoB,IAC9Eg0E,GAA6Dh0E,EAAoB,IACjFi0E,GAA4Dj0E,EAAoB,IAChFk0E,GAA6Dl0E,EAAoB,KACjFm0E,GAA+Dn0E,EAAoB,IACnFo0E,GAA6Cp0E,EAAoB,IACjEq0E,GAAqDr0E,EAAoB4D,EAAEwwE,IAC3EE,GAA8Ct0E,EAAoB,KAClEu0E,GAAsDv0E,EAAoB4D,EAAE0wE,IAC5EE,GAA6Cx0E,EAAoB,IACjEy0E,GAA+Cz0E,EAAoB,IACnE00E,GAAyD10E,EAAoB,IAC7E20E,GAAiD30E,EAAoB,KACrE40E,GAA+C50E,EAAoB,IAEnE60E,IADuD70E,EAAoB,KACdA,EAAoB,MACtGmgB,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPy0D,GAAiB,WAAc,QAASC,GAAcpiE,EAAKtS,GAAK,GAAI20E,MAAeC,KAAeC,KAAgBC,QAAgB,KAAM,IAAK,GAAiCC,GAA7BC,EAAK1iE,EAAIk2C,OAAOnD,cAAmBuvB,GAAMG,EAAKC,EAAGz0D,QAAQizB,QAAoBmhC,EAAK/zE,KAAKm0E,EAAG3wE,QAAYpE,GAAK20E,EAAKj0E,SAAWV,GAA3D40E,OAAyE,MAAOhxE,GAAOixE,KAAWC,EAAKlxE,EAAO,QAAU,KAAWgxE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUriE,EAAKtS,GAAK,GAAI0S,MAAM+c,QAAQnd,GAAQ,MAAOA,EAAY,IAAIk2C,OAAOnD,WAAYxkD,QAAOyR,GAAQ,MAAOoiE,GAAcpiE,EAAKtS,EAAa,MAAM,IAAI48B,WAAU,4DAEllBq4C,GAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,QAAUtkD,IAAQskD,OAAO1nD,UAAY,eAAkBoD,IwClnWzPqlE,GAA6B,6BAC7BE,GAAgC,gCAChCE,GAA6B,6BAC7ByB,GAAgC,gCAChCE,GAAuB,uBACvBE,GAA0B,0BAC1BG,GAAsB,sBACtBE,GAAyB,yBACzB3D,GAAoB,oBACpBF,GAAoB,oBACpBiE,GAA0B,0BAC1BI,GAAwB,wBAExBI,GAAe,eACfE,GAAkB,kBAClBU,GAA0B,0BAC1BE,GAAe,eACf1D,GAAyB,yBACzBpC,GAAe,eACfqE,GAAwB,wBAGxBhF,GAAiC,iCACjCC,GAAoC,oCACpCL,GAA8B,8BAC9BC,GAAkB,kBAClBC,GAAwB,wBACxBC,GAAoB,oBAGpBI,GAAgC,gCAChCE,GAAmC,mCACnCI,GAA6B,6BA0GpCmB,GAAgB,SAACwM,EAAWC,GAAZ,MAA2BD,GAAUlyE,KAAK+xB,cAAgBogD,EAAUnyE,KAAK+xB,cAAgB,GAAK,KxC6rYvF70B,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YyCz5YA,YAEM4X,GAFN,OAEwB,SAAC,GAAD,QAAG69D,OAAH,yBAETp9D,8BAAeT,EAAiB,SAAC69D,GAAD,MAAaA,MzCs6YtD,SAAUr1E,EAAQD,G0C16YxB,GAAIu1E,EAGJA,GAAI,WACH,MAAO32D,QAGR,KAEC22D,EAAIA,GAAKjtB,SAAS,qBAAuBktB,MAAM,QAC9C,MAAMp0E,GAEc,gBAAXd,UACTi1E,EAAIj1E,QAONL,EAAOD,QAAUu1E,G1Ci7YX,SAAUt1E,EAAQD,EAASH,GAEjC,Y2Cn7YA,IAAIyrB,GAAY,SAASC,EAAWrZ,EAAQqX,EAAG5C,EAAG3jB,EAAGC,EAAG7B,EAAG4R,GAOzD,IAAKuY,EAAW,CACd,GAAIvnB,EACJ,aAAIkO,EACFlO,EAAQ,GAAIpC,OACV,qIAGG,CACL,GAAI6pB,IAAQlC,EAAG5C,EAAG3jB,EAAGC,EAAG7B,EAAG4R,GACvB0Y,EAAW,CACf1nB,GAAQ,GAAIpC,OACVsQ,EAAOyZ,QAAQ,MAAO,WAAa,MAAOF,GAAKC,QAEjD1nB,EAAMd,KAAO,sBAIf,KADAc,GAAM4nB,YAAc,EACd5nB,GAIV/D,GAAOD,QAAUsrB,G3C68YX,SAAUrrB,EAAQD,EAASH,GAEjC,Y4Cj/YA,SAAS41E,GAAcC,EAAa1jE,GAElC,IAAuC,IAAnCA,EAAQsI,QAAQ,cAAsB,CACxC,GAAIq7D,EAAO3jE,GACT,MAGF2jE,GAAO3jE,MAGTA,EAAU,kBAAoBA,CAE9B,KAAK,GAAIme,GAAO5e,UAAU3Q,OAAQ6qB,EAAO7Y,MAAMud,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3E,EAAK2E,EAAO,GAAK7e,UAAU6e,EAG7BwlD,GAAUvoB,QAAQ/7C,UAAMA,IAAYokE,EAAa1jE,GAASyf,OAAOhG,IAGnE,QAASoqD,KACPF,KAhCF31E,EAAQ0D,cACR1D,EAAQqtD,QAAUooB,EAClBz1E,EAAQ61E,aAAeA,CAEvB,IAAIC,GAAW,EAAQ,KAEnBF,EAEJ,SAAgCxxE,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,IAFhD0xE,GAInCH,M5C2hZE,SAAU11E,EAAQiE,EAAqBrE,GAE7C,Y6C39YA,SAASk2E,GAAcC,GACnB,OACI70E,EAAG,IACH22B,EAAG,KACLk+C,IAAW,UAlFjB,2MAAA91E,GAAA,oBAAAA,GAAA,iDAQMm1D,EAAgB,SAAC,GAAD,QAAGuc,KAAH,wBAEtB,KAAe15D,yBAAem9C,EAAe,SAACuc,GAAD,MAAWA,IAEjD,IAAMqE,GAA2B/9D,yBACpCm9C,EACA,SAACuc,GAAD,MAAWA,MAAWA,EAAMn+C,eAGnBo5B,EAAwB30C,yBACjCm9C,EACA,SAACuc,GACG,MAAI57C,MAAa11B,OAAO2uB,MAAQ3uB,OAAO2uB,KAAKinD,MAAqC,MAA7B51E,OAAO2uB,KAAKinD,KAAKC,SAC1D71E,OAAO2uB,KAAKinD,KAAKC,SAErBvE,IAAUzoB,YAAQyoB,EAAMlsB,QAe1BoQ,GAXwB59C,yBACjCm9C,EACA,SAACuc,GACG,GAAIwE,SAIJ,OAHIxE,KAAUzoB,YAAQyoB,EAAMlsB,QACxB0wB,EAAWxE,EAAMlsB,KAAK2wB,QAAQC,oBAE3BF,IAI0Bl+D,yBACrCoc,IACA+gC,EACA,SAAC9gC,EAAeq9C,GACZ,GAAI7kB,SACJ,OAAIx4B,GACAw4B,EAAewpB,IAAMhiD,EAAc1qB,OAAO,SAACC,EAAD,GAA6D,GAArD6qB,GAAqD,EAArDA,SAAqD,IAA3CG,oBAA2C,WAA5Bo3B,MAA4B,sBAAlB5pD,GAAkB,EAAlBA,IACjF,KAAKqyB,GAAqB,iBAATryB,EACb,MAAOwH,EAEX,IAAM0sE,GAAoB1hD,EAASjrB,OAAO,SAAC4sE,EAAD,GAA+D,GAAtDlf,GAAsD,EAAtDA,QAAsD,IAA7CxK,aAAc2pB,WAA+B,MACrG,OAAgB,SAAZnf,GAAkC,WAAZA,EACfkf,EAEJA,EAAKhlD,OAAOilD,EAAoB9lD,IAAI,qBAAG1tB,YAElD,OAAO4G,GAAI2nB,OAAO+kD,UAKtB5E,IAAUzoB,YAAQyoB,EAAMlsB,OAASksB,EAAMlsB,KAAKqH,cAAgB6kB,EAAMlsB,KAAKqH,aAAansD,SACpFmsD,EAAe6kB,EAAMlsB,KAAKqH,aACrBt4B,OAAO,kBAA+C,aAA/C,EAAGkiD,mBACV/lD,IAAI,qBAAGgmD,0BAET7pB,MAIF+Q,EAAqB5lD,yBAC9Bm9C,EACA,SAACuc,GAAD,MAAWA,IAASA,EAAMlsB,MAAQksB,EAAMlsB,KAAKrwB,QAGpCwhD,EAAkC3+D,yBAC3C49C,EACA,SAACghB,GAAD,MAAuBA,KAUd1G,EAAyBl4D,yBAClC6+D,IACA1hB,EACA,SAAC2hB,EAAKpF,GAAU,MACKA,MAATlsB,EADI,EACJA,KACF4P,EAAO0hB,EAAI97D,IAA2B,mBAAb/Y,WAA4B80E,IAAOzzE,IAAI,QAChE0zE,EAAOF,EAAI97D,IAA2B,mBAAb/Y,WAA4B80E,IAAOzzE,IAAI,QAChE2rD,GAAamG,OAAM4hB,OACzB,KAAK/tB,YAAQzD,GAAO,CAAC,GAAD,GACoDA,EAA5D2wB,OADQ,sBACGnqB,GADH,EACGA,OADH,IACW8pB,kBADX,EACoB,GADpB,MACwBmB,uBADxB,EACsC,GADtC,CAEhBhoB,GAASioB,iBAAmB,OACxBlrB,IACAiD,EAASkoB,YAAT,wBAA+CnrB,GAEnDiD,EAAS6mB,OAASD,EAAcC,GAC5BmB,IACAhoB,EAASmoB,SAAWH,EAAY1kE,MAAM,EAAG,IAGjD,MAAO08C,M7CklZT,SAAUlvD,EAAQiE,EAAqBrE,GAE7C,Y8C5rZA,4BAGQ03E,EAA0ErU,YAA1EqU,OAAQC,EAAkEtU,YAAlEsU,OAAQC,EAA0DvU,YAA1DuU,KAAM13B,EAAoDmjB,YAApDnjB,MAAOp8C,EAA6Cu/D,YAA7Cv/D,OAAQgmB,EAAqCu5C,YAArCv5C,MAAO+tD,EAA8BxU,YAA9BwU,MAAOC,EAAuBzU,YAAvByU,QAASC,EAAc1U,YAAd0U,UAE9DC,EAAkB92E,OAAO6I,KAAKjE,KAAeirB,IAAI,SAAAvsB,GAAA,MAAOsB,KAActB,KA0B/DyzE,GAxBqBnuD,GAC9B9M,QAAS06D,EACTjvC,IAAKivC,EACLljD,IAAK1K,GACDouD,QAASR,EACTjvC,IAAKivC,EACLS,cAAeT,IAEnB35D,OAAQ+L,GACJsuD,MAAOt0E,IAEXu0E,iBAAkBvuD,GACdwuD,SAAUV,EACVW,QAASX,IAEbY,QAAS1uD,GACL6iC,SAAU7oD,IAEdwvB,UAAWxJ,GACPygD,qBAAsBrqB,EACtBoqB,4BAA6BsN,MAIA9tD,GACjC2uD,SAAUb,KAGDc,EAAoBx4B,EAEpBy4B,EAAkB7uD,GAC3BzO,GAAIq8D,EACJr0E,KAAMq0E,EACNj1E,KAAMo1E,EAAM32E,OAAO6I,KAAKhE,KAAYgrB,IAAI,SAAAvsB,GAAA,MAAOuB,KAAWvB,MAC1Do0E,YAAalB,IAGJmB,EAAiB/uD,GAC1BmxC,KAAMyc,EACNoB,IAAKpB,IAGIqB,EAAkBjvD,GAC3BzO,GAAIq8D,EACJr0E,KAAMq0E,EACNrrB,OAAQwrB,EAAMG,GACd/lE,SAAUylE,EACVxqB,aAAc+qB,EACdpJ,SAAU6J,EACVp4D,OAAQq4D,EACRK,MAAOrB,EACPvkD,UAAW8sB,EACX+4B,SAAUvB,EACV9jB,MAAOilB,EACPK,aAAcxB,IAGLyB,EAAiBrvD,GAC1BrnB,KAAMi1E,EACN0B,UAAW1B,EACX2B,YAAa3B,EACb4B,YAAa5B,EACb6B,YAAa5B,EACb6B,aAAc9B,EACd+B,aAAc/B,EACdgC,gBAAiB9B,EACjB+B,gBAAiB/B,EACjBgC,cAAelC,IAINmC,EAAmB/vD,GAC5BzO,GAAI08D,GAAWL,EAAQC,IACvBmC,KAAMpC,EACNj1E,KAAMo1E,EAAM32E,OAAO6I,KAAKnE,KAAamrB,IAAI,SAAAvsB,GAAA,MAAOoB,KAAYpB,MAC5D6nD,OAAQwrB,EAAMG,GACd30E,KAAMq0E,EACNqC,SAAUrC,EACVvrB,UAAWurB,EACXsC,KAAMtC,EACNuC,UAAWvC,EACXwC,IAAKxC,EACL9lE,KAAM8lE,EACNsB,MAAOrB,EACPhkB,QAASmkB,EAAQiB,GACjB9uC,MAAOkvC,EACPvvB,YAAa8tB,EACbyC,SAAUzC,EACVwB,aAAcxB,EAEdzlE,SAAUylE,GAeiB5tD,IAC3BzO,GAAIs8D,EACJt0E,KAAMq0E,EACNj1E,KAAMi1E,EACN0C,MAAO1C,EACPjkD,SAjBmC3J,GACnCuwD,WAAY1C,EACZ2C,aAAc3C,EACd4C,OAAQ3C,EACR4C,QAAS5C,IAcThkB,MAXgC9pC,GAChC7J,KAAMy3D,EACNoB,IAAKpB,IAULrmB,SAAUymB,EAAQ+B,M9C0uZhB,SAAUz5E,EAAQiE,EAAqBrE,GAE7C,Y+Cn2ZA,4BAAAK,IAAA,YAEMsX,GAFN,OAE0B,SAAC,GAAiB,QAAfQ,eAAe,SACbA,EAAnBykD,SACR,iBAFwC,QAK7BvkD,8BAAeV,EAAmB,SAACilD,GAAD,MAAeA,IAEzD,IAAM6d,GAA6BpiE,yBACtCV,EACA,SAACilD,GAAc,MACaA,EAAhB7+C,kBADG,MAEX,QACI28D,gBAAiB38D,EAAO,0BACxB48D,iBAAkB58D,EAAO,+B/Cm3Z/B,SAAU3d,EAAQD,EAASH,GgD12ZjC,QAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASk+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAEje,QAAS5Z,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,EAhC3MpE,EAAQ0D,aAER,IAAI+/D,GAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MAE5hBxiD,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCE,EAAmB,EAAQ,KAE3BC,EAAoBJ,EAAuBG,GAE3CE,EAAa,EAAQ,KAErBC,EAAcN,EAAuBK,GAErCE,EAAgB,EAAQ,IAExBC,EAAiBR,EAAuBO,GAExCE,EAAmB,EAAQ,KAc3BC,EAA0B,SAAiCv0C,GAC3D,MAAOP,QAAOO,GAAKjb,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,WAG5HyvD,EAAuB,SAA8BC,EAAWz3E,GAChE,IAAK,GAAI1D,GAAIm7E,EAAUz6E,OAAS,EAAGV,GAAK,EAAGA,IAAK,CAC5C,GAAIue,GAAQ48D,EAAUn7E,EAEtB,IAAIue,EAAM7a,GACN,MAAO6a,GAAM7a,GAGrB,MAAO,OAGP03E,EAAwB,SAA+BD,GACvD,GAAIE,GAAiBH,EAAqBC,EAAW,SACjDG,EAAoBJ,EAAqBC,EAAW,gBAExD,IAAIG,GAAqBD,EAErB,MAAOC,GAAkB7vD,QAAQ,MAAO,WACpC,MAAO4vD,IAIf,IAAIE,GAAwBL,EAAqBC,EAAW,eAE5D,OAAOE,IAAkBE,GAAyB,IAGlDC,EAAyB,SAAgCL,GACzD,MAAOD,GAAqBC,EAAW,wBAA0B,cAGjEM,EAA6B,SAAoCC,EAASP,GAC1E,MAAOA,GAAU5mD,OAAO,SAAUhW,GAC9B,WAAO,KAAOA,EAAMm9D,KACrBhrD,IAAI,SAAUnS,GACb,MAAOA,GAAMm9D,KACd/xE,OAAO,SAAUgyE,EAAUr7D,GAC1B,MAAOR,MAAa67D,EAAUr7D,SAIlCs7D,EAA0B,SAAiCC,EAAmBV,GAC9E,MAAOA,GAAU5mD,OAAO,SAAUhW,GAC9B,WAAO,KAAOA,EAAMy8D,EAAiBc,UAAUC,QAChDrrD,IAAI,SAAUnS,GACb,MAAOA,GAAMy8D,EAAiBc,UAAUC,QACzCC,UAAUryE,OAAO,SAAUsyE,EAAkBC,GAC5C,IAAKD,EAAiBv7E,OAGlB,IAAK,GAFDgJ,GAAO7I,OAAO6I,KAAKwyE,GAEdl8E,EAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAAK,CAClC,GAAIm8E,GAAezyE,EAAK1J,GACpBo8E,EAAwBD,EAAapnD,aAEzC,KAA0D,IAAtD8mD,EAAkBzhE,QAAQgiE,IAAiCF,EAAIE,GAC/D,MAAOH,GAAiB1qD,OAAO2qD,GAK3C,MAAOD,SAIXI,EAAuB,SAA8BC,EAAST,EAAmBV,GAEjF,GAAIoB,KAEJ,OAAOpB,GAAU5mD,OAAO,SAAUhW,GAC9B,WAAO,KAAOA,EAAM+9D,KACrB5rD,IAAI,SAAUnS,GACb,MAAOA,GAAM+9D,KACdN,UAAUryE,OAAO,SAAU6yE,EAAcC,GACxC,GAAIC,KAEJD,GAAaloD,OAAO,SAAU2nD,GAG1B,IAAK,GAFDS,UACAjzE,EAAO7I,OAAO6I,KAAKwyE,GACdl8E,EAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAAK,CAClC,GAAIm8E,GAAezyE,EAAK1J,GACpBo8E,EAAwBD,EAAapnD,eAGiB,IAAtD8mD,EAAkBzhE,QAAQgiE,IAAmCO,IAAwB3B,EAAiB4B,eAAeC,KAAkD,cAA3CX,EAAIS,GAAqB5nD,eAAoCqnD,IAA0BpB,EAAiB4B,eAAeC,KAAoD,eAA7CX,EAAIE,GAAuBrnD,gBACrR4nD,EAAsBP,IAGuB,IAA7CP,EAAkBzhE,QAAQ+hE,IAAyBA,IAAiBnB,EAAiB4B,eAAeE,YAAcX,IAAiBnB,EAAiB4B,eAAeG,UAAYZ,IAAiBnB,EAAiB4B,eAAeI,YAChOL,EAAsBR,GAI9B,IAAKQ,IAAwBT,EAAIS,GAC7B,OAAM,CAGV,IAAIv4E,GAAQ83E,EAAIS,GAAqB5nD,aAUrC,OARKwnD,GAAiBI,KAClBJ,EAAiBI,OAGhBD,EAAiBC,KAClBD,EAAiBC,QAGhBJ,EAAiBI,GAAqBv4E,KACvCs4E,EAAiBC,GAAqBv4E,OAAS,KAKpD43E,UAAUv9B,QAAQ,SAAUy9B,GAC3B,MAAOM,GAAa57E,KAAKs7E,IAK7B,KAAK,GADDxyE,GAAO7I,OAAO6I,KAAKgzE,GACd18E,EAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAAK,CAClC,GAAIm8E,GAAezyE,EAAK1J,GACpBi9E,KAAelC,EAAe5tB,YAAaovB,EAAiBJ,GAAeO,EAAiBP,GAEhGI,GAAiBJ,GAAgBc,EAGrC,MAAOT,QACJR,WAGPkB,EAAc,SAAqBl3C,EAAO8b,GAC1C7/C,SAAS+jC,MAAQA,GAAS/jC,SAAS+jC,MACnCm3C,EAAiBnC,EAAiBc,UAAUsB,MAAOt7B,IAGnDq7B,EAAmB,SAA0Bb,EAASx6B,GAOtD,IAAK,GANDu7B,GAAUp7E,SAASC,qBAAqBo6E,GAAS,GACjDgB,EAAwBD,EAAQvZ,aA9IjB,qBA+IfyZ,EAAmBD,EAAwBA,EAAsBlhE,MAAM,QACvEohE,KAAwBjsD,OAAOgsD,GAC/BE,EAAgB58E,OAAO6I,KAAKo4C,GAEvB9hD,EAAI,EAAGA,EAAIy9E,EAAc/8E,OAAQV,IAAK,CAC3C,GAAI09E,GAAYD,EAAcz9E,GAC1BoE,EAAQ09C,EAAW47B,IAAc,EACrCL,GAAQ76E,aAAak7E,EAAWt5E,IAEa,IAAzCm5E,EAAiBnjE,QAAQsjE,IACzBH,EAAiB38E,KAAK88E,EAG1B,IAAIC,GAAcH,EAAmBpjE,QAAQsjE,IACxB,IAAjBC,GACAH,EAAmBz8D,OAAO48D,EAAa,GAI/C,IAAK,GAAI3I,GAAKwI,EAAmB98E,OAAS,EAAGs0E,GAAM,EAAGA,IAClDqI,EAAQO,gBAAgBJ,EAAmBxI,GAG3CuI,GAAiB78E,SAAW88E,EAAmB98E,OAC/C28E,EAAQO,gBAvKO,qBAyKfP,EAAQ76E,aAzKO,oBAyKwB+6E,EAAiB5sD,KAAK,OAIjEktD,EAAa,SAAoBz7E,EAAM2xD,GACvC,GAAI+pB,GAAc77E,SAASD,MAAQC,SAAS87E,cAAc,QACtDC,EAAWF,EAAYG,iBAAiB77E,EAAO,uBAC/C87E,EAAUxrE,MAAM5R,UAAUyR,MAAMrS,KAAK89E,GACrCG,KACAC,QA4CJ,OA1CIrqB,IAAQA,EAAKrzD,QACbqzD,EAAKtV,QAAQ,SAAUy9B,GACnB,GAAImC,GAAap8E,SAASE,cAAcC,EAExC,KAAK,GAAIs7E,KAAaxB,GAClB,GAAIA,EAAIn7E,eAAe28E,GACnB,GAAkB,cAAdA,EACAW,EAAW3N,UAAYwL,EAAIxL,cACxB,IAAkB,YAAdgN,EACHW,EAAWC,WACXD,EAAWC,WAAWC,QAAUrC,EAAIqC,QAEpCF,EAAWz7E,YAAYX,SAASu8E,eAAetC,EAAIqC,cAEpD,CACH,GAAIn6E,YAAe83E,EAAIwB,GAA6B,GAAKxB,EAAIwB,EAC7DW,GAAW77E,aAAak7E,EAAWt5E,GAK/Ci6E,EAAW77E,aAzMA,oBAyM+B,QAGtC07E,EAAQxpD,KAAK,SAAU+pD,EAAaruD,GAEpC,MADAguD,GAAgBhuD,EACTiuD,EAAWK,YAAYD,KAE9BP,EAAQn9D,OAAOq9D,EAAe,GAE9BD,EAAQv9E,KAAKy9E,KAKzBH,EAAQz/B,QAAQ,SAAUy9B,GACtB,MAAOA,GAAI3W,WAAWoZ,YAAYzC,KAEtCiC,EAAQ1/B,QAAQ,SAAUy9B,GACtB,MAAO4B,GAAYl7E,YAAYs5E,MAI/BgC,QAASA,EACTC,QAASA,IAIbS,EAAiC,SAAwC98B,GACzE,MAAOjhD,QAAO6I,KAAKo4C,GAAYn4C,OAAO,SAAU+8B,EAAKviC,GACjD,GAAI06E,YAAc/8B,EAAW39C,GAAuBA,EAAM,KAAQ29C,EAAW39C,GAAO,IAAO,GAAKA,CAChG,OAAOuiC,GAAMA,EAAM,IAAMm4C,EAAOA,GACjC,KAGHC,EAAwB,SAA+B18E,EAAM4jC,EAAO8b,GACpE,GAAIi9B,GAAkBH,EAA+B98B,EACrD,OAAOi9B,GAAkB,IAAM38E,EAAO,6BAAwC28E,EAAkB,IAAM9D,EAAwBj1C,GAAS,KAAO5jC,EAAO,IAAM,IAAMA,EAAO,6BAAwC64E,EAAwBj1C,GAAS,KAAO5jC,EAAO,KAG/P48E,EAAuB,SAA8B58E,EAAM2xD,GAC3D,MAAOA,GAAKpqD,OAAO,SAAU+8B,EAAKw1C,GAC9B,GAAI+C,GAAgBp+E,OAAO6I,KAAKwyE,GAAK3nD,OAAO,SAAUmpD,GAClD,QAAuB,cAAdA,GAA2C,YAAdA,KACvC/zE,OAAO,SAAU0tE,EAAQqG,GACxB,GAAImB,YAAc3C,EAAIwB,GAA6BA,EAAYA,EAAY,KAAQzC,EAAwBiB,EAAIwB,IAAc,GAC7H,OAAOrG,GAASA,EAAS,IAAMwH,EAAOA,GACvC,IAECK,EAAahD,EAAIxL,WAAawL,EAAIqC,SAAW,GAE7CY,GAA8I,KAA7HnE,EAAiBc,UAAUsD,SAAUpE,EAAiBc,UAAUuD,OAAQrE,EAAiBc,UAAUwD,OAAOllE,QAAQhY,EAEvI,OAAOskC,GAAM,IAAMtkC,EAAO,6BAAwC68E,GAAiBE,EAAgB,KAAO,IAAMD,EAAa,KAAO98E,EAAO,MAC5I,KAGHm9E,EAAgC,SAAuCn9E,EAAM4jC,EAAO8b,GAEpF,GAAI09B,GAAYv7E,GACZE,IAAK6hC,GApQU,wBAsQfznB,EAAQ1d,OAAO6I,KAAKo4C,GAAYn4C,OAAO,SAAUzF,EAAKC,GAEtD,MADAD,GAAI82E,EAAiByE,cAAct7E,IAAQA,GAAO29C,EAAW39C,GACtDD,GACRs7E,EAEH,QAAQ/E,EAAQttB,QAAQhrD,cAAc64E,EAAiBc,UAAUsB,MAAO7+D,EAAOynB,KAG/E05C,EAA+B,SAAsCt9E,EAAM2xD,GAC3E,MAAOA,GAAKrjC,IAAI,SAAUwrD,EAAKl8E,GAC3B,GAAI2/E,GAAY17E,GACZE,IAAKnE,GAjRM,uBA+Rf,OAXAa,QAAO6I,KAAKwyE,GAAKz9B,QAAQ,SAAUi/B,GAC/B,GAAIkC,GAAkB5E,EAAiByE,cAAc/B,IAAcA,CAEnE,IAAwB,cAApBkC,GAAuD,YAApBA,EAA+B,CAClE,GAAI3uB,GAAUirB,EAAIxL,WAAawL,EAAIqC,OACnCoB,GAAUE,yBAA4BC,OAAQ7uB,OAE9C0uB,GAAUC,GAAmB1D,EAAIwB,KAIlCjD,EAAQttB,QAAQhrD,cAAcC,EAAMu9E,MAI/CI,EAAmB,SAA0B39E,EAAM2xD,GACnD,OAAQ3xD,GACJ,IAAK44E,GAAiBc,UAAUsB,MAC5B,OACI4C,YAAa,WACT,MAAOT,GAA8Bn9E,EAAM2xD,EAAK/tB,MAAO+tB,EAAKksB,kBAEhEtjD,SAAU,WACN,MAAOmiD,GAAsB18E,EAAM2xD,EAAK/tB,MAAO+tB,EAAKksB,kBAGhE,KAAKjF,GAAiBc,UAAUoE,KAC5B,OACIF,YAAa,WACT,MAAOjsB,IAEXp3B,SAAU,WACN,MAAOiiD,GAA+B7qB,IAGlD,SACI,OACIisB,YAAa,WACT,MAAON,GAA6Bt9E,EAAM2xD,IAE9Cp3B,SAAU,WACN,MAAOqiD,GAAqB58E,EAAM2xD,OAMlDosB,EAAmB,SAA0BrhE,GAC7C,GAAIshE,GAAiBthE,EAAKshE,eACtBp6C,EAAQlnB,EAAKknB,MACbi6C,EAAkBnhE,EAAKmhE,gBACvBI,EAAUvhE,EAAKuhE,QACfC,EAAWxhE,EAAKwhE,SAChBC,EAAWzhE,EAAKyhE,SAChBC,EAAa1hE,EAAK0hE,WAClBC,EAAe3hE,EAAK2hE,aACpBC,EAAY5hE,EAAK4hE,SACrB,QACIN,eAAgBL,EAAiB/E,EAAiBc,UAAUoE,KAAME,GAClEp6C,MAAO+5C,EAAiB/E,EAAiBc,UAAUsB,OAASp3C,MAAOA,EAAOi6C,gBAAiBA,IAC3FhmC,KAAM8lC,EAAiB/E,EAAiBc,UAAUC,KAAMsE,GACxDn3B,KAAM62B,EAAiB/E,EAAiBc,UAAU6E,KAAML,GACxDM,KAAMb,EAAiB/E,EAAiBc,UAAU+E,KAAMN,GACxDn/E,OAAQ2+E,EAAiB/E,EAAiBc,UAAUuD,OAAQmB,GAC5DM,SAAUf,EAAiB/E,EAAiBc,UAAUsD,SAAUqB,GAChE1G,MAAOgG,EAAiB/E,EAAiBc,UAAUwD,MAAOoB,KAyF9DK,EAAqB,SAA4B5F,GACjD,OACIiF,eAAgB3E,EAA2BT,EAAiBc,UAAUoE,KAAM/E,GAC5En1C,MAAOo1C,EAAsBD,GAC7B8E,gBAAiBxE,EAA2B,kBAAmBN,GAC/DkF,QAASzE,GAAyBZ,EAAiB4B,eAAeoE,MAAO7F,GACzEmF,SAAUjE,EAAqBrB,EAAiBc,UAAU6E,MAAO3F,EAAiB4B,eAAeqE,KAAMjG,EAAiB4B,eAAesE,QAASlG,EAAiB4B,eAAeuE,UAAWnG,EAAiB4B,eAAewE,SAAUpG,EAAiB4B,eAAeI,WAAY7B,GACjRoF,SAAUlE,EAAqBrB,EAAiBc,UAAU+E,MAAO7F,EAAiB4B,eAAeC,IAAK7B,EAAiB4B,eAAeoE,MAAO7F,GAC7IqF,WAAYnE,EAAqBrB,EAAiBc,UAAUuD,QAASrE,EAAiB4B,eAAeyE,IAAKrG,EAAiB4B,eAAeE,YAAa3B,GACvJsF,aAAcpE,EAAqBrB,EAAiBc,UAAUsD,UAAWpE,EAAiB4B,eAAeE,YAAa3B,GACtHuF,UAAWrE,EAAqBrB,EAAiBc,UAAUwD,OAAQtE,EAAiB4B,eAAeG,UAAW5B,GAC9GmG,oBAAqB9F,EAAuBL,KAIhDoG,EAA0B,SAAiC5rB,GAC3D,GAAIyqB,GAAiBzqB,EAASyqB,eAC1Bp6C,EAAQ2vB,EAAS3vB,MACjBi6C,EAAkBtqB,EAASsqB,gBAC3BI,EAAU1qB,EAAS0qB,QACnBC,EAAW3qB,EAAS2qB,SACpBC,EAAW5qB,EAAS4qB,SACpBC,EAAa7qB,EAAS6qB,WACtBC,EAAe9qB,EAAS8qB,aACxBC,EAAY/qB,EAAS+qB,UACrBY,EAAsB3rB,EAAS2rB,mBAGnCnE,GAAiB,OAAQiD,GAEzBlD,EAAYl3C,EAAOi6C,EAEnB,IAAIuB,IACAnB,QAASxC,EAAW7C,EAAiBc,UAAUC,KAAMsE,GACrDC,SAAUzC,EAAW7C,EAAiBc,UAAU6E,KAAML,GACtDC,SAAU1C,EAAW7C,EAAiBc,UAAU+E,KAAMN,GACtDC,WAAY3C,EAAW7C,EAAiBc,UAAUuD,OAAQmB,GAC1DC,aAAc5C,EAAW7C,EAAiBc,UAAUsD,SAAUqB,GAC9DC,UAAW7C,EAAW7C,EAAiBc,UAAUwD,MAAOoB,IAGxDe,KACAC,IAEJ7gF,QAAO6I,KAAK83E,GAAY/iC,QAAQ,SAAUi9B,GACtC,GAAIiG,GAAsBH,EAAW9F,GACjCyC,EAAUwD,EAAoBxD,QAC9BD,EAAUyD,EAAoBzD,OAG9BC,GAAQz9E,SACR+gF,EAAU/F,GAAWyC,GAErBD,EAAQx9E,SACRghF,EAAYhG,GAAW8F,EAAW9F,GAASwC,WAInDoD,EAAoB3rB,EAAU8rB,EAAWC,IAGzCE,EAAgB,WAChB,MAAO,OAGPC,KAAwBlH,EAAkBxtB,SAAS4zB,EAAoBQ,EAAyBpB,GAAkByB,EAEtH9hF,GAAQqtD,QAxJK,SAAgB/tC,GACzB,GAAI0iE,GAAQ13D,CAEZ,OAAOA,GAAQ03D,EAAS,SAAUC,GAG9B,QAASC,KAGL,MAFA5f,GAAgB1jD,KAAMsjE,GAEfzf,EAA2B7jD,MAAOsjE,EAAchkE,WAAand,OAAOuuC,eAAe4yC,IAAgB5wE,MAAMsN,KAAMrN,YAyC1H,MA9CAmxD,GAAUwf,EAAeD,GAQzBxe,EAAaye,IACT79E,IAAK,wBACLC,MAAO,SAA+Bid,GAClC,UAAYw5D,EAAY1tB,SAASzuC,KAAKH,MAAO8C,MAGjDld,IAAK,SACLC,MAAO,WACH,MAAOq2E,GAAQttB,QAAQhrD,cAAcid,EAAWV,KAAKH,YAGzDpa,IAAK,YAOLqrC,IAAK,SAAa1Z,GACd1W,EAAU0W,UAAYA,MAmBvBksD,GACTvH,EAAQttB,QAAQ/tC,WAAY0iE,EAAOziE,WACjC+gE,eAAgB3F,EAAQttB,QAAQ6V,UAAUv/D,OAC1CuiC,MAAOy0C,EAAQttB,QAAQ6V,UAAUqU,OACjC4K,aAAcxH,EAAQttB,QAAQ6V,UAAUqU,OACxC6K,cAAezH,EAAQttB,QAAQ6V,UAAUqU,OACzC4I,gBAAiBxF,EAAQttB,QAAQ6V,UAAUv/D,OAC3Cw2C,KAAMwgC,EAAQttB,QAAQ6V,UAAUv/D,OAChCylD,KAAMuxB,EAAQttB,QAAQ6V,UAAUyU,QAAQgD,EAAQttB,QAAQ6V,UAAUv/D,QAClEm9E,KAAMnG,EAAQttB,QAAQ6V,UAAUyU,QAAQgD,EAAQttB,QAAQ6V,UAAUv/D,QAClErC,OAAQq5E,EAAQttB,QAAQ6V,UAAUyU,QAAQgD,EAAQttB,QAAQ6V,UAAUv/D,QACpEq9E,SAAUrG,EAAQttB,QAAQ6V,UAAUyU,QAAQgD,EAAQttB,QAAQ6V,UAAUv/D,QACtEs2E,MAAOU,EAAQttB,QAAQ6V,UAAUyU,QAAQgD,EAAQttB,QAAQ6V,UAAUv/D,QACnE69E,oBAAqB7G,EAAQttB,QAAQ6V,UAAUt5C,MAChDo4D,EAAOK,KAAO/iE,EAAU+iE,KAAML,EAAOM,OAAS,WAC7C,GAAIC,GAAcjjE,EAAUgjE,QAgB5B,OAfKC,KAEDA,EAAclC,GACVC,kBACAp6C,MAAO,GACPi6C,mBACAI,WACAC,YACAC,YACAC,cACAC,gBACAC,gBAID2B,GACRj4D,GAsEkBy3D,GACzB9hF,EAAOD,QAAUA,EAAiB,ShDw4Z5B,SAAUC,EAAQD,EAASH,GAEjC,YiDp5aA,IAAIm2B,KAAiC,mBAAX11B,UAA0BA,OAAO6B,WAAY7B,OAAO6B,SAASE,eAQnFmgF,GAEFxsD,UAAWA,EAEXysD,cAAiC,mBAAXC,QAEtBC,qBAAsB3sD,MAAgB11B,OAAOsiF,mBAAoBtiF,OAAOuiF,aAExEC,eAAgB9sD,KAAe11B,OAAOyiF,OAEtCC,YAAahtD,EAIf/1B,GAAOD,QAAUwiF,GjDm6aX,SAAUviF,EAAQD,GkD56axB,GAAI2vB,GAAU/c,MAAM+c,OAEpB1vB,GAAOD,QAAU2vB,GlD08aX,SAAU1vB,EAAQiE,EAAqBrE,GAE7C,YmD/9aA,IAAMojF,GAASh1B,EAAT,KACAi1B,EAAUj1B,EAAV,KAGAk1B,GACF,aACI,MAAS,GACT,MAAS,cACT,MAAS,WACT,MAAS,aACT,MAAS,WACT,MAAS,eACT,MAAS,qBACT,MAAS,kBACT,MAAS,MACT,MAAS,MACT,OAAU,gBACV,OAAU,YACV,OAAU,WACV,OAAU,gBACV,OAAU,MACV,OAAU,oBACV,OAAU,gBACV,UAAa,uBACb,UAAa,SACb,UAAa,OACb,UAAa,mBACb,UAAa,eACb,UAAa,aACb,UAAa,gCAEjB,aAAgB,2DAA2D7mE,MAAM,KACjF,eAAkB,8BAA8BA,MAAM,KACtD,cAAiB,uBAAuBA,MAAM,KAC9C,eAAkB,wFAAwFA,MAAM,KAChH,gBAAmB,kDAAkDA,MAAM,KAGhE,MAEXyrD,YAAa,WACT,MAAOkb,GAAOG,GAAGC,SAAW,OAGhCC,UAAW,SAAUC,GACjB,MAAO3kE,MAAKvK,WAAWkvE,EAAO,WAGlCC,2BAA4B,SAAUC,GAClC,MAAKA,GAGKA,EAAO38C,OAAO,EAAG,GAA3B,IAAiC28C,EAAO38C,OAAO,EAAG,GAAlD,IAAwD28C,EAAO38C,OAAO,EAAG,GAF9D28C,GAKfC,YAAa,SAAUD,GACnB,GAAME,GAAU/kE,KAAK4kE,2BAA2BC,EAEhD,OAAKE,GAIEV,EAAOU,GAASC,SAHZD,GAMfE,mBAAoB,WAChB,MAAOV,GAASW,gBAGpBzvE,WAAY,SAAU0vE,EAAS1vE,EAAY2vE,GACvC,YAAID,EACA,MAAOA,YAGP1vE,IACAA,EAAa,SAGjB2vE,EAAeA,KAEf,IAAMC,GAAad,EAASe,YACtBC,EAAYlB,EAAOc,GACnBK,EAAcnB,EAAOkB,EAAUpK,MAAM6J,SAY3C,OAVAvvE,GAAa4vE,EAAW5vE,GAEL+vE,EAAYlyE,OAAOmC,IAuB1CgwE,gBAAiB,SAAUN,EAAS1vE,EAAYyzD,GAAsC,GAA5Bwc,GAA4B,uDAAZ,UACtE,aAAIP,EACA,MAAOA,EAFuE,IAK1EG,GAAgBf,EAAhBe,YACFK,EAAoBlwE,GAAc,YAClCmwE,EAAY1c,EAAWmb,EAAOG,GAAGW,EAASjc,GAAYmb,EAAOc,GAC7DU,EAAiB3c,EAAWmb,EAAOG,GAAGtb,GAAYmb,IAClDyB,EAAWD,EAAeE,QAAQC,IAAI,EAAG,OACzCC,EAAqBJ,EAAeE,QAAQC,IAAI,EAAG,QACnDE,EAAqBN,EAAUtyE,OAAOgyE,EAAYK,GAGxD,OAAIC,GAAUO,OAAON,EAAgB,OAC1BK,EAGPN,EAAUO,OAAOL,EAAU,OACjBJ,EAAV,KAA4BQ,EAG5BN,EAAUQ,QAAQN,EAAU,QAAUF,EAAUS,SAASJ,EAAoB,OACtEL,EAAUtyE,OAAOgyE,EAAA,WAGrBM,EAAUtyE,OAAOgyE,EAAA,YAQ5BgB,aAAc,SAAUjiF,GACpB,MAAOggF,GAAOhgF,GAAG2gF,UAgBrBuB,YAAa,SAAU57D,EAAG5C,GACtB,MACIquB,UAASzrB,EAAI3K,KAAKsmE,aAAa37D,GAAG67D,YAClCpwC,SAASruB,EAAI/H,KAAKsmE,aAAav+D,GAAGy+D,YACjC77D,EAAI5C,IAAM4C,EAAI5C,GACX0+D,KAiBZC,YAAa,SAAUriF,EAAGsiF,EAAOC,GAC7B,MACIxwC,UAAS/xC,EAAI2b,KAAKsmE,aAAajiF,GAAGmiF,YAClCpwC,SAASuwC,EAAQ3mE,KAAKsmE,aAAaK,GAAOH,YAC1CpwC,SAASwwC,EAAM5mE,KAAKsmE,aAAaM,GAAKJ,WACtCG,GAAStiF,GAAKA,GAAKuiF,EACfH,KAUZI,gBAAiB,SAAUxiF,EAAG0X,GAE1B,GAAI+qE,GAAc,GAOd5d,EAAW,gBACX6d,EAAa,QAUjB,aARWzC,EAAQ,WAAYvoE,KAC3BmtD,EAAWntD,EAAQmtD,mBAGZob,EAAQ,aAAcvoE,KAC7BgrE,EAAahrE,EAAQgrE,qBAGdzC,EAAQ,aAAcvoE,GAA0B,CACvD,GAAMspE,GAAad,EAASe,YACpB7vE,EAAesG,EAAftG,UACJ4vE,GAAW5vE,KACXsxE,EAAa1B,EAAW5vE,IAKhC,GAAIu7C,GAAYqzB,EAAOhgF,EAMvB,YAJI2sD,EAAUg2B,YACVF,EAAc91B,EAAUwzB,GAAGtb,GAAU51D,OAAOyzE,IAGzCD,GAGXG,iBAAkB,WACd,GAAMzC,GAAKH,IAAS6C,YACdC,EAAO7oD,KAAK8oD,IAAI9oD,KAAK+oD,MAAM7C,EAAK,KAChC8C,EAAMhpD,KAAK8oD,IAAI5C,EAAK,GAC1B,cAAaA,GAAM,EAAI,IAAM,MAAO,IAAM2C,GAAMtzE,OAAO,IAAM,IAAMyzE,GAAKzzE,OAAO,IAQnF0zE,YAAa,WACT,OAD6B,uDAAJ,IACdx6D,QAAQ,OAAQ,KAChBA,QAAQ,OAAQ,UAChBA,QAAQ,OAAQ,WAQ/By6D,6BAA8B,WAC1B,OADuD,uDAAZ,GAAIt3B,OACnCq3B,cAAcx6D,QAAQ,cAAe,KASrD06D,kBAAmB,SAASxM,EAAMxlE,EAAYyzD,EAAUxlE,EAAMgiF,GAC1D,MAAa,mBAAThiF,EACOsc,KAAKylE,gBAAgBxK,EAAMxlE,EAAYyzD,EAAUwc,GAGxDxc,EACOlpD,KAAK6mE,gBAAgB5L,GAAQ/R,WAAUzzD,eAE3CuK,KAAKvK,WAAWwlE,EAAMxlE,MnDu+a/B,SAAUpU,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GoD1tbrC,QAASuiF,KAA8C,GAAnCC,GAAmC,0DAAhB9pB,EAAgB,yDACnD,IAAK17D,OAAO6I,KAAK28E,GAAc3lF,OAG/B,GAAIN,OAAO2uB,MAAQ3uB,OAAO2uB,KAAKu3D,MAAO,CAClC,GAAMC,GAAYnmF,OAAO2uB,KAAKu3D,KAC9B,KAAKzY,GAAe0Y,EAAU7uD,MAAQ6uD,EAAUC,UAAW,CACvD3Y,KACA4Y,IAEA,IAAMC,GAAcH,EAAU/gC,MAAQ+gC,EAAU/gC,KAAKmhC,OACrDJ,GAAU7uD,MAAOkvD,SAAUP,EAAcM,QAASD,GAAe14D,MAGjErrB,WAAW,WACP8jF,IACA,KACII,EAAcpoC,QAAQ,SAAAqoC,GAClBP,EAAUC,UAAUM,IAFxB,OAK6DvqB,EAArDpoC,GALR,sBAKeiU,GALf,EAKeA,IAAmB2+C,EALlC,EAKoBC,YACpB,IAAI5mF,OAAO6mF,kBAAoBF,EAAiB,CAC5C,GAAIC,GAAeD,GAEN,SAAR3+C,GAAkB,sBAAsB9D,KAAKlkC,OAAO4Z,SAASwC,UAC9DwqE,EAAa5sE,QAAQ,WAAa,IAElC4sE,EAAeA,EAAav7D,QAAQ,SAAU,SAElDrrB,OAAO6mF,iBAAiBD,aAAeA,GAE7C,MAAOpjF,GACLC,EAAQC,MAAMF,GAElBijF,MACD,SACIJ,GACPI,EAAcjmF,KAAKylF,GACZE,EAAUC,WACjBD,EAAUC,UAAUH,OAGxBa,GAAc,OAAQb,GAO9B,QAASc,KAAsB,GAAX3hC,GAAW,yDAC3B,IAAIplD,OAAO2uB,MAAQ3uB,OAAO2uB,KAAKu3D,OAASlmF,OAAO2uB,KAAKu3D,MAAM9lE,OAASpgB,OAAO2uB,KAAKu3D,MAAMc,UAAW,CAC5FhnF,OAAO2uB,KAAKu3D,MAAM9lE,OAClB,IAAM6mE,GAAWA,KAAK7hC,GAAMo7B,KAAM,QAClCxgF,QAAO2uB,KAAKu3D,MAAMgB,eAClBlnF,OAAO2uB,KAAKu3D,MAAMc,UAAUC,OAE5BH,GAAc,OAAQ1hC,GAIvB,QAAS0hC,GAAc9kF,EAAMojD,GAChC,GAAMzpC,GAAuC,WAA7B3b,OAAO4Z,SAAS2B,SAC5B,0BAA4B,iBAEhC6pC,GAAKpjD,KAAOA,EACZojD,EAAKyL,QAAUzL,EAAK4D,YACpB5D,EAAKvlC,OAASulC,EAAKtxC,KACnBsxC,EAAK+hC,SAAW/hC,EAAKsF,QAErB,IAAM5uC,GAAOrb,OAAO6I,KAAK87C,GAAM77C,OAAO,SAACC,EAAKzF,GAAN,MAC/ByF,IAAMA,EAAM,IAAM,IAAKzF,EADQ,IACD8nB,mBAAmBu5B,EAAKrhD,KAC1D,IACGqjF,EAAiBzrE,EAAjB,yBAAiDG,EACjDlB,EAAK,uBACPysE,EAASxlF,SAASg9D,eAAejkD,EACjCysE,IAAUA,EAAOliB,YACjBkiB,EAAOliB,WAAWoZ,YAAY8I,GAElCA,EAASxlF,SAASE,cAAc,UAChCslF,EAAOzsE,GAAKA,EACZysE,EAAOhlF,IAAM+kF,EACbC,EAAOC,MAAQ,IACfD,EAAOE,OAAS,IAChBF,EAAOG,YAAc,IACrB3lF,SAAS08D,KAAK/7D,YAAY6kF,GAGvB,QAAS/vD,GAAKmwD,GACjBC,GACI5zE,KAAM2zE,EAAUE,KAChBp2B,QAASk2B,EAAUG,QACnBC,QAASJ,EAAUK,YACnBC,QAAS,aACTC,MAAO,WACPC,OAAQR,EAAUS,QAClBC,MAAO,YACPC,OAAQX,EAAUS,SAInB,QAASxY,KACZ/5C,aAAa0yD,WAAWj9E,GAGrB,QAASwgE,GAAT,GAAyC,GAAdrzD,GAAc,EAAdA,WACxB+vE,GACFC,OAAQ,yBACR79B,SAAU,cACV89B,OAAQ,cACRC,MAAO,iBACPC,MAAO,iBACPC,OAAOA,kBAAmBjB,EAAiB5zE,KAA3C,kBAOJkyE,GALqBC,KACdyB,EACAY,EACAM,kBAA4BrwE,KAKhC,QAASk3D,GAAT,GAAuF,GAAxDv5C,GAAwD,EAAxDA,SAAUhE,EAA8C,EAA9CA,SAAU46C,EAAoC,EAApCA,qBAAsBv0D,EAAc,EAAdA,WACtEswE,EAAe32D,EAASo8C,QAAUp8C,EAAS62C,aAAe72C,EAAStvB,KACnEkmF,EAAiBA,mBAAmBD,EACpCE,GACFR,OAAQ,UACRS,KAAMH,EACNI,MAAOH,EACPI,OAAQJ,EAQZ/B,GANqBd,KACdyB,EACAkB,YAAoB1yD,EAAUhE,EAAU3Z,GACxC4wE,YAA4Brc,GAC5Bic,IAGPpzD,aAAayzD,QAAQh+E,EAAmB,QAGrC,QAAS4hE,GAAT,GAA+F,GAAxD92C,GAAwD,EAAxDA,SAAUhE,EAA8C,EAA9CA,SAAU46C,EAAoC,EAApCA,qBAAsBv0D,EAAc,EAAdA,WAC9E8wE,EAAmB1zD,aAAaC,QAAQxqB,EAC9C,IAAyB,SAArBi+E,QAA+BA,EAA2B,CAC1D,GACMC,IACFf,OAAQ,UACRS,KAH2B,0BAI3BC,MAJ2B,0BAK3BC,OAL2B,0BAa/BnC,GANqBd,KACdyB,EACAkB,YAAoB1yD,EAAUhE,EAAU3Z,GACxC4wE,YAA4Brc,GAC5Bwc,IAGP5Z,KAID,QAASZ,GAAT,GAA2F,GAAxD54C,GAAwD,EAAxDA,SAAUhE,EAA8C,EAA9CA,SAAU46C,EAAoC,EAApCA,qBAAsBv0D,EAAc,EAAdA,WAE1EgxE,GACFhB,OAAQ,UACRS,KAHuB,sBAIvBC,MAJuB,sBAKvBC,OALuB,uBAOrBjD,EAAeA,KACdyB,EACAkB,YAAoB1yD,EAAUhE,EAAU3Z,GACxC4wE,YAA4Brc,GAC5Byc,EAEPhnF,YAAW,WACPwkF,EAAWd,IACZ,KAGA,QAAS/W,GAAT,GAA8F,GAAxDh5C,GAAwD,EAAxDA,SAAUhE,EAA8C,EAA9CA,SAAU46C,EAAoC,EAApCA,qBAAsBv0D,EAAc,EAAdA,WAE7EixE,GACFjB,OAAQ,UACRS,KAH0B,yBAI1BC,MAJ0B,yBAK1BC,OAL0B,0BAOxBjD,EAAeA,KACdyB,EACAkB,YAAoB1yD,EAAUhE,EAAU3Z,GACxC4wE,YAA4Brc,GAC5B0c,EAEPjnF,YAAW,WACPwkF,EAAWd,IACZ,KAIA,QAASwD,GAAT,GAQJ,QAPCC,oBAOD,SANCC,sBAMD,EANc,GAMd,MALCC,wBAKD,SAJCC,4BAID,KAHC7nF,EAGD,EAHCA,KACA4pD,EAED,EAFCA,OACAkhB,EACD,EADCA,qBAEM1uD,OAAWsrE,EAAoB,cAAgB,cAC/CI,EAAaF,EAAe,MAAQ,MACtCG,EAAe,QACfH,KACAG,EAAe,YACXF,EACAE,EAAe,mBACR/nF,IAASmD,IAAYyG,IAC5Bm+E,EAAe,qBACR/nF,GAAQ4pD,IACfm+B,eAA4Bn+B,EAA5B,IAAsC5pD,IAgB9C+kF,EALqBd,KACdyB,GARHa,OAAQ,SACRyB,MAAUF,EAAV,IAAwBH,EACxBM,MAAUH,EAAV,IAAwBH,EACxBO,MAAMA,GAAIH,EACVb,OAAQ9qE,EACR6qE,MAAO7qE,GAKJ+qE,YAA4Brc,KAKhC,QAASqd,KAA8F,GAA1EC,GAA0E,uDAAjE,UAAWC,EAAsD,uDAA3C,UAAWn4D,EAAgC,aAAtB46C,EAAsB,aAGtG+b,EAAe32D,EAAStvB,KACxB0nF,EAAuBp4D,EAAS62C,YAChC72C,GAASo8C,UACTua,EAAe32D,EAAS62C,aACxBuhB,EAAuBp4D,EAASo8C,QAAQ1rE,KAG5C,IAAM2nF,IACFC,OAAQ3B,EACR4B,OAAQ5B,EACR6B,OAAQJ,EACRK,OAAQL,GAGNM,GACFrC,OAAQ,WACRsC,OAAQvpC,UAAUwpC,UAClB5B,OAnBmB,kBAoBnB6B,OAAOA,UAAWX,EAAlB,aAAqCC,EACrCW,OAAQ1pC,UAAUwpC,UAClB7B,MAtBmB,kBA8BvBlC,GANqBd,KACdyB,EACA6C,EACAK,EACAzB,YAA4Brc,KAoBhC,QAASme,GAAsBp6B,EAAStG,EAAMr4B,EAAUg5D,EAAgBh1D,EAAU42C,EAAsBv0D,GAC3G,GAAM4yE,GAAWvC,YAAoB1yD,EAAUhE,EAAU3Z,GAEnD6yE,EAAmBA,gBAAgBC,YAAoB9gC,GAAvD,IAAgE2gC,EAAhE,IAAkFr6B,EAAQjuD,IAYhGmkF,GAVqBd,GACjBsC,OAAQ,UACRS,KAAMoC,EACNnC,MAAOmC,EACPE,OAAOA,gBAAiBJ,EAAxB,IAA0Cr6B,EAAQ7uD,KAClDknF,OAAQkC,GACLD,EACAhC,YAA4Brc,KAqBhC,QAASsZ,GAAT,GAA+H,GAA1G1uE,GAA0G,EAA1GA,IAAK6yC,EAAqG,EAArGA,KAAMr4B,EAA+F,EAA/FA,SAAUgE,EAAqF,EAArFA,SAAU42C,EAA2E,EAA3EA,qBAAsBye,EAAqD,EAArDA,cAAqD,IAAtCC,6BAAsC,OAAdjzE,EAAc,EAAdA,WAC9GiC,GAAQ9C,EAAI8C,MAAQ,IAAIma,cACL82D,EAASD,EAA3BnkF,GACDqkF,GACFnD,OAAQ,SACRoD,OAAQnxE,EACRoxE,MAAOpxE,EACPqxE,OAAQJ,EAGRF,KACAG,EAAcnD,OAAS,2BACvBmD,EAAcl3D,SAAW+2D,GAU7BvF,EAPqBC,KACdyB,EACAoE,YAAoBvhC,GACpBq+B,YAAoB1yD,EAAUhE,EAAU3Z,GACxC4wE,YAA4Brc,GAC5B4e,GAEkBh0E,EAAIykD,WAG1B,QAAS4vB,GAAkBvxE,GAA0B,GAApBwxE,GAAoB,uDAAX,UACvCC,EAAezxE,EAAKma,aAc1BqxD,GAJqBC,KACdyB,GATHa,OAAQ,iBACRG,MAAOsD,EACPL,OAAQM,EACRL,MAAOK,EACPtD,OAAOA,sBAAuBqD,EAC9BthC,SAAashC,EAAb,eAUD,QAASE,KAA4D,GAAnCF,GAAmC,uDAA1B,UAAW95D,EAAe,0DAClDi6D,EAA2Bj6D,EAAzC62C,aAA4BqjB,EAAal6D,EAAnBtvB,KACxBypF,EAAiBL,EAAjB,uBAgBNjF,GAJqBd,KACdyB,GAXHa,OAAQ,UACRU,MAAOoD,EACPnD,OAAQmD,EACR3B,OAAQyB,EACRxB,OAAQwB,EACR3B,OAAQ4B,EACR3B,OAAQ2B,EACRE,OAAWN,EAAX,qBAUD,QAASO,KAAwD,GAAnCP,GAAmC,uDAA1B,UAAW95D,EAAe,0DAC9Ci6D,EAA2Bj6D,EAAzC62C,aAA4BqjB,EAAal6D,EAAnBtvB,KACxBiuC,EAAam7C,EAAb,mBAiBNhG,GAJqBC,KACdyB,GAZHh9B,SAAashC,EAAb,YACAzD,OAAQ,UACRI,OAAOA,sBAAuBqD,EAC9B/C,MAAOp4C,EACPq4C,OAAQr4C,EACR65C,OAAQyB,EACRxB,OAAQwB,EACR3B,OAAQ4B,EACR3B,OAAQ2B,EACRE,OAAWN,EAAX,wBAUD,QAASQ,KAQZzF,GANIoB,MAAO,YACPc,MAAO,kBACPC,OAAQ,kBACRF,KAAM,oBpD6zagEzpF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO6oF,KAEjH7oF,EAAuB,EAAI0zB,EAC3B1zB,EAAuB,EAAI8rE,EAC3B9rE,EAAuB,EAAIgoE,EAC3BhoE,EAAuB,EAAI6rE,EAC3B7rE,EAAuB,EAAIopE,EAC3BppE,EAAuB,EAAIkrE,EAC3BlrE,EAAuB,EAAIsrE,EAC3BtrE,EAAuB,EAAI6lF,EAC3B7lF,EAAuB,EAAIumF,EAE3BvmF,EAAuB,EAAIqnF,EAE3BrnF,EAAuB,EAAIwiF,EAC3BxiF,EAAuB,EAAImoF,EAC3BnoF,EAAuB,EAAIsoF,EAC3BtoF,EAAuB,EAAI2oF,EAC3B3oF,EAAuB,EAAI4oF,CACvC,IAAIE,GAAuCntF,EAAoB,GAC3DotF,EAAwCptF,EAAoB,KAC5DuqD,EAA2CvqD,EAAoB,EAGvDA,GAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+oF,GAAyC,IAC7GptF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+oF,GAAyC,IAC7GptF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+oF,GAAyC,GAC9I,IAAIjtE,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IoDrxbnOvY,EAAsBlD,IAAlC8C,SAAYI,gBAWPolF,GACT7E,QAAS,MACTD,KAAM,YACNG,YAAa,YACb8E,cAAe,gBACfC,gBAAiB,yBACjBC,eAAgB,qBAChBC,eAAgB,eAChBC,qBAAsB,iBAItBtF,SACAja,KACA4Y,KACAI,KACiBr7E,EAAwBnG,IAArCkG,UAAaC,oBpD6rcQtL,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,GqD9scxB,QAAS0gC,GAASp8B,GAChB,GAAIhC,SAAcgC,EAClB,OAAgB,OAATA,IAA0B,UAARhC,GAA4B,YAARA,GAG/CrC,EAAOD,QAAU0gC,GrD8ucX,SAAUzgC,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAyCrC,QAASsqD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIg9C,GAA+ChlC,EAAE,SAAUxnB,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO6a,GAA+ChlC,EAAExnB,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAA/K/B,GAAQuC,GAAqL,MAAOkqD,GAAK,WsDzwcpgB,QAAS++B,KACZ,OACIjrF,KAAMkrF,EACN59B,UAAWd,KAAKl9C,OAIjB,QAAS67E,GAA2B95D,EAAiB2hC,GACxD,OACIhzD,KAAMorF,EACN/5D,kBACA2hC,OACA7hC,aAAcq7B,KAAKl9C,OAIpB,QAAS+7E,KACZ,OACIrrF,KAAMsrF,EACNh+B,UAAWd,KAAKl9C,OAIjB,QAASi8E,GAAkBj8D,GAC9B,OACItvB,KAAMwrF,EACNl8D,UAUD,QAASm8D,GAAaroC,GACzB,OACIpjD,KAAM0rF,EACNtoC,OACAjyB,aAAcq7B,KAAKl9C,OAIpB,QAASojD,GACZrhC,EAAiBo5B,EAAciJ,EAAmBD,GACpD,GADoExgC,GACpE,uDACE,QACIjzB,KAAM2rF,EACNt6D,kBACAo5B,eACAgJ,iBACAxgC,cACAygC,oBACAsR,WAAUA,IAAE3zC,EAA2B,MAAQ,SAC/C4zC,SAAU1hE,IAAUuH,IACpBqmB,aAAcq7B,KAAKl9C,OAKpB,QAASwjD,KACZ,MAAO,UAAC3wC,GACJA,EAAS8oE,IACT,IAAMj4B,GAAO2hB,IAAOzzE,IAAI,QAClBmwB,EAAkBu6D,EAAQ1pD,KAAK8wB,EAGrC,OADA7wC,GAASgpE,EAA2B95D,EAAiB2hC,IAC9CxzD,IAAQC,QAAQ4xB,IAWxB,QAASw6D,KACZ,MAAO,kBAAMC,gBAGV,QAAShc,GAAYz3D,EAASiX,GACjC,MAAO,UAACnN,GAEJ,MADAA,GAASopE,EAAkBj8D,IACpBy8D,YAAiB1zE,IAIzB,QAAS2zE,GAAa3zE,EAASiX,GAClC,MAAO,UAACnN,GAEJ,MADAA,GAASopE,EAAkBj8D,IACpB28D,YAAkB5zE,IAI1B,QAAS6zE,KACZ,MAAO,kBAAMC,gBAGV,QAASC,KACZ,MAAO,UAACjqE,GAAD,MAAckqE,eAChBv9C,KAAK,SAACsU,GAEH,MADAjhC,GAASspE,EAAaroC,IACfA,KAIZ,QAASkpC,KACZ,OACItsF,KAAMusF,EACNvnB,UAAW,SACX3zC,iBAAgBA,EAChB4zC,SAAU1hE,IAAUuH,IACpBqmB,aAAcq7B,KAAKl9C,OAOpB,QAAS+iD,KAA2B,UACvC,yBAAAx9B,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,0GACHkxC,IAAe,4BACfjuC,EAASkpE,OACHmB,EAAel1E,YAAqB4H,MAHvC,oBAKMutE,EALN,uBAMSrpC,UANT,kBAQsBjhC,EAASuqE,IAR/B,QAQStpC,EART,OASSupC,YAAQ,UAAR,0BAAmB,4GAETxqE,EAASiqE,IAFA,QAGfjxB,GAAiB,EAEjBh5C,EAASmwC,YACL7mC,KACC,cAAe,gBAAiB,eAAgB,2BACjD0vC,GARW,6CAWnBwxB,YAAQ,SAAU,WACd/4B,YAAOxpC,KACPwpC,YAAOvpC,KACPupC,YAAOtpC,KACPnI,EAASmqE,KACTnqE,EAASmxC,eACTnxC,EAAS2xC,eACT3xC,EAAS4xC,iBACT5xC,EAASuwC,YA5BtB,yDA+BSjxD,EAAQC,MAAR,MA/BT,UAgCsBygB,EAASiqE,IAhC/B,SAgCShpC,EAhCT,eAkCKjhC,EAASspE,EAAaroC,IACtBwpC,KAnCL,2BAoCaA,EApCb,0CAqCYH,EArCZ,0BAuCWtqE,EAASiqE,IAvCpB,kDA0COjqE,EAASiqE,IA1ChB,eA4CGrrE,GAAQ7B,IACRsrC,EAAaD,YAAsBxpC,GACnC0pC,EAAe+I,YAA0BzyC,GACzC07C,EAAkB5pC,YAAwB9R,GAC1C0yC,EAAiBvhC,YAAoBnR,GACrCkS,EAAcD,YAAoBjS,GAClC2yC,EAAoBC,YAAO8I,GAC3BprC,EAAmBo5B,GAAgBA,EAAansD,OAAS,GAAMo1D,EAErEvxC,EAASuwC,EAA4BrhC,EAAiBo5B,EAAciJ,EAAmBD,EAAgBxgC,IACvGm9B,IAAoB,4BAtDjB,mBAwDC5F,aACAC,gBAzDD,qDAAP,yDA8DG,QAASiiC,KAAsB,UAClC,OAAO,UAACvqE,GAEJ,MADAiuC,KAAe,uBACRq8B,IAAyBA,EAAuB,GAAIjtF,KAAQ,SAACC,EAASE,GACzE,GACIktF,MACAC,IACJ,IAAKp5D,IAEE,GAAI11B,OAAO+uF,OAAQ,CACtB/uF,OAAO+uF,OAAOltF,UAAUmtF,IAAI,eAAgB,WACxCH,KACI7uF,OAAO2uB,MAAQ3uB,OAAO2uB,KAAKsgE,gBAAkBjvF,OAAO2uB,KAAKsgE,eAAeC,OACxElvF,OAAO2uB,KAAKsgE,eAAeC,MAAM,WAC7BJ,KACArrF,EAAQqN,IAAI,0BAGpBrN,EAAQqN,IAAI,kBAEhB9Q,OAAO+uF,OAAOltF,UAAUmtF,IAAI,mBAAoB,WAC5CF,KACArrF,EAAQqN,IAAI,qBAEhB,IAAMq+E,GAAkBnvF,OAAOuC,WAAP,0BAAkB,qGACtC6vD,IAAoB,wBAChBy8B,IAAeC,EAFmB,gCAGd3qE,EAASiqE,IAHK,cAG5BgB,GAH4B,OAIlC3rF,EAAQqN,IAAI,2CACZshD,IAAoB,uBACpB3wD,EAAQ2tF,GAN0B,0BAStCztF,EAAO,GAAIL,OAAM,uBATqB,6CApB9B,IA+BZtB,QAAO+uF,OAAOltF,UAAUmtF,IAAI,cAAe,SAACxlD,EAAO4lD,GAC/C3rF,EAAQqN,IAAI,eACZ9Q,OAAOmB,aAAaguF,GACpB/8B,IAAoB,uBACpB3wD,EAAyB,gBAAV2tF,GAAqBA,gBAGxCztF,GAAO,GAAIL,OAAM,gDAlCjBK,GAAO,GAAIL,OAAM,iDtDgicF/B,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOwpF,KAEpE7tF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+pF,KACpEpuF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO8pF,KACpEnuF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO2qF,KACpEhvF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO4pF,KACpEjuF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOyrF,KAOlEzrF,EAAuB,EAAI8wD,EAC3B9wD,EAAuB,EAAIkxD,EAE3BlxD,EAAuB,EAAIiqF,EAC3BjqF,EAAuB,EAAIkuE,EAC3BluE,EAAuB,EAAIoqF,EAC3BpqF,EAAuB,EAAIsqF,EAC3BtqF,EAAuB,EAAIwqF,EAC3BxqF,EAAuB,EAAI0qF,EAC3B1qF,EAAuB,EAAIywD,CAEvC,IAAIqD,GAAyCn4D,EAAoB,IAC7D0uD,EAAiD1uD,EAAoB4D,EAAEu0D,GACvE43B,EAA8C/vF,EAAoB,IAClEgwF,EAAsDhwF,EAAoB4D,EAAEmsF,GAC5E7uB,EAAuClhE,EAAoB,GAC3DmhE,EAA2CnhE,EAAoB,GAC/DiwF,EAAoDjwF,EAAoB,IACxEkwF,EAA+ClwF,EAAoB,IACnEmwF,EAA2CnwF,EAAoB,IAC/DowF,EAA4CpwF,EAAoB,IAChEqwF,EAAuDrwF,EAAoB,IAC3EyhE,EAAuDzhE,EAAoB,GAC3EswF,EAA0DtwF,EAAoB,IAC9EuwF,EAAwDvwF,EAAoB,IAC5EwwF,EAAoExwF,EAAoB,IACxFywF,EAAkDzwF,EAAoB,KsDrxczFquF,EAAU,cAEHV,EAAkC,kCAClCE,EAAqC,qCACrCE,EAAmC,mCACnCK,EAAsC,sCACtCD,EAAY,YACZa,EAAc,cACdf,EAAc,cACd6B,EAAe,eAExBZ,SAyHAG,KACAzxB,EAAgB,ItD8/cSr9D,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,GAEjC,YuDhqdA,SAAS0wF,GAAkBpnE,GACzB,MAAO,YACL,MAAOA,IASX,GAAI0C,GAAgB,YAEpBA,GAAc2kE,YAAcD,EAC5B1kE,EAAc4kE,iBAAmBF,MACjC1kE,EAAc6kE,gBAAkBH,MAChC1kE,EAAc8kE,gBAAkBJ,EAAkB,MAClD1kE,EAAc+kE,gBAAkB,WAC9B,MAAOhyE,OAETiN,EAAcglE,oBAAsB,SAAU1nE,GAC5C,MAAOA,IAGTlpB,EAAOD,QAAU6rB,GvDgrdX,SAAU5rB,EAAQD,EAASH,GAEjC,YwD/rdAI,GAAOD,SAAY8wF,UAPH,OxDiudV,SAAU7wF,EAAQD,EAASH,GyDhvdjC,GAAIkxF,GAAa,EAAQ,KAGrBC,EAA0B,gBAARlxE,OAAoBA,MAAQA,KAAK/e,SAAWA,QAAU+e,KAGxEsuC,EAAO2iC,GAAcC,GAAY1oC,SAAS,gBAE9CroD,GAAOD,QAAUouD,GzDuvdX,SAAUnuD,EAAQD,EAASH,GAEjC,cAAa,S0Djwdb,GA8BA,QAASoxF,KACLC,EAAaC,2BAA6BC,GAAgK9rB,EAAe,OAiC7N,QAAS+rB,KACPzyE,KAAK0yE,0BACL1yE,KAAK2yE,sBAAwB,KAC7B3yE,KAAK4yE,cAAgBC,EAAcC,YACnC9yE,KAAK+yE,qBAAuBT,EAAaC,0BAA0BO,WAAUA,GA0B/E,QAASE,GAAev8C,EAAU9rB,EAAG5C,EAAG3jB,EAAGC,EAAG7B,GAE5C,MADA6vF,KACOG,EAAiBQ,eAAev8C,EAAU9rB,EAAG5C,EAAG3jB,EAAGC,EAAG7B,GAU/D,QAASywF,GAAqBC,EAAIC,GAChC,MAAOD,GAAGE,YAAcD,EAAGC,YAG7B,QAASC,GAAkBC,GACzB,GAAIzgD,GAAMygD,EAAYX,qBACpB9/C,KAAQ0gD,EAAgBvxF,QAAoN0kE,EAAe,MAAO7zB,EAAK0gD,EAAgBvxF,QAKzRuxF,EAAgBxpB,KAAKkpB,GAOrBO,GAEA,KAAK,GAAIlyF,GAAI,EAAGA,EAAIuxC,EAAKvxC,IAAK,CAI5B,GAAIkkE,GAAY+tB,EAAgBjyF,GAK5BmyF,EAAYjuB,EAAUkuB,iBAC1BluB,GAAUkuB,kBAAoB,IAE9B,IAAIC,EACJ,IAAIC,EAAkBC,mBAAoB,CACxC,GAAIC,GAAiBtuB,CAEjBA,GAAUuuB,gBAAgBrwF,KAAKswF,yBACjCF,EAAiBtuB,EAAUC,oBAE7BkuB,EAAa,iBAAmBG,EAAeG,UAC/C9uF,EAAQ0N,KAAK8gF,GASf,GANAO,EAAgBC,yBAAyB3uB,EAAW8tB,EAAYP,qBAAsBS,GAElFG,GACFxuF,EAAQ8N,QAAQ0gF,GAGdF,EACF,IAAK,GAAIzxD,GAAI,EAAGA,EAAIyxD,EAAUzxF,OAAQggC,IACpCsxD,EAAYV,cAAcwB,QAAQX,EAAUzxD,GAAIwjC,EAAU6uB,sBAgClE,QAASC,GAAc9uB,GASrB,GARA6sB,KAQKG,EAAiB+B,kBAEpB,WADA/B,GAAiBQ,eAAesB,EAAe9uB,EAIjD+tB,GAAgBrxF,KAAKsjE,GACe,MAAhCA,EAAUgvB,qBACZhvB,EAAUgvB,mBAAqBhB,EAAoB,GAQvD,QAASiB,GAAKh+C,EAAU32B,GACrB0yE,EAAiB+B,mBAAsL7tB,EAAe,OACvNguB,EAAkBN,QAAQ39C,EAAU32B,GACpC60E,KA5MF,GAAIjuB,GAAiB,EAAQ,GACzBkuB,EAAU,EAAQ,IAElB/B,EAAgB,EAAQ,KACxBgC,EAAc,EAAQ,IACtBjB,EAAoB,EAAQ,KAC5BM,EAAkB,EAAQ,IAC1BY,EAAc,EAAQ,KAItBvB,GAFY,EAAQ,OAGpBC,EAAoB,EACpBkB,EAAoB7B,EAAcC,YAClC6B,KAEAnC,EAAmB,KAMnBuC,GACF7lB,WAAY,WACVlvD,KAAK2yE,sBAAwBY,EAAgBvxF,QAE/CgzF,MAAO,WACDh1E,KAAK2yE,wBAA0BY,EAAgBvxF,QAMjDuxF,EAAgBlxE,OAAO,EAAGrC,KAAK2yE,uBAC/BsC,KAEA1B,EAAgBvxF,OAAS,IAK3BkzF,GACFhmB,WAAY,WACVlvD,KAAK4yE,cAAcuC,SAErBH,MAAO,WACLh1E,KAAK4yE,cAAcwC,cAInBC,GAAwBN,EAAgBG,EAU5CN,GAAQnC,EAA6BrwF,UAAW0yF,GAC9CQ,uBAAwB,WACtB,MAAOD,IAGTE,WAAY,WACVv1E,KAAK2yE,sBAAwB,KAC7BE,EAAc2C,QAAQx1E,KAAK4yE,eAC3B5yE,KAAK4yE,cAAgB,KACrBN,EAAaC,0BAA0BiD,QAAQx1E,KAAK+yE,sBACpD/yE,KAAK+yE,qBAAuB,MAG9B0C,QAAS,SAAU7pD,EAAQ8pD,EAAO/qE,GAGhC,MAAOmqE,GAAYW,QAAQj0F,KAAKwe,KAAMA,KAAK+yE,qBAAqB0C,QAASz1E,KAAK+yE,qBAAsBnnD,EAAQ8pD,EAAO/qE,MAIvHkqE,EAAYc,aAAalD,EAuEzB,IAAIwC,GAAsB,WAKxB,KAAO1B,EAAgBvxF,QAAU2yF,GAAc,CAC7C,GAAIpB,EAAgBvxF,OAAQ,CAC1B,GAAIsxF,GAAcb,EAA6BK,WAC/CQ,GAAYmC,QAAQpC,EAAmB,KAAMC,GAC7Cb,EAA6B+C,QAAQlC,GAGvC,GAAIqB,EAAc,CAChBA,IACA,IAAIj5D,GAAQg5D,CACZA,GAAoB7B,EAAcC,YAClCp3D,EAAM05D,YACNvC,EAAc2C,QAAQ95D,MAuCxBk6D,GACFC,2BAA4B,SAAUC,GACnCA,GAA8IpvB,EAAe,OAC9J4rB,EAAaC,0BAA4BuD,GAG3CC,uBAAwB,SAAUC,GAC/BA,GAAiItvB,EAAe,OACnG,kBAArCsvB,GAAkBhD,gBAAsJtsB,EAAe,OAC/I,iBAAxCsvB,GAAkBzB,mBAAmK7tB,EAAe,OAC7M8rB,EAAmBwD,IAInB1D,GAOFC,0BAA2B,KAE3BS,eAAgBA,EAChBsB,cAAeA,EACfW,oBAAqBA,EACrBgB,UAAWL,EACXnB,KAAMA,EAGRpzF,GAAOD,QAAUkxF,I1DmwdY9wF,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,GAEjC,Y2Dh/dA,IAAIisB,GAAU,YAyCd7rB,GAAOD,QAAU8rB,G3DwgeX,SAAU7rB,EAAQiE,EAAqBrE,GAE7C,Y4DrkeA,yCAUMi1F,GAVN,QAU4BC,kBAAmB,IAEhC,gBAGP,MADAC,KAAgBC,IAASH,GAClBG,Q5DmleT,SAAUh1F,EAAQiE,EAAqBrE,GAE7C,Y6DpmeA,sBAEmBq1F,GAAYv9E,IAAvBw9E,UAAuBx9E,IAAZu9E,QACGA,IAAW,GAAI13C,QAAO03C,EAQ7B,cAACD,GASZ,MAAOA,K7D8meL,SAAUh1F,EAAQiE,EAAqBrE,GAE7C,cAAa,S8DpoebuB,GAAO,QAASsuC,GAAIrrC,EAAKC,EAAO8wF,GAC5B,IACI,GAAM1vC,IAASphD,QACX8wF,KACA1vC,EAAK2vC,WAAavmC,KAAKl9C,MAA2B,IAAlBwjF,GAEpC90F,OAAO21B,aAAayzD,QAAQrlF,EAAK0e,KAAKC,UAAU0iC,IAClD,MAAO5hD,GACLC,EAAQC,MAAMF,IAIf,QAASN,GAAIa,GAChB,IACI,GAAMC,GAAQhE,OAAO21B,aAAaC,QAAQ7xB,EAC1C,IAAc,OAAVC,EACA,MAEJ,IAAMohD,GAAO3iC,KAAKoT,MAAM7xB,EACxB,OAAIohD,GAAK2vC,YAAc3vC,EAAK2vC,WAAavmC,KAAKl9C,UAC1CskD,GAAO7xD,GAGJqhD,EAAKphD,MACd,MAAOR,GACL,QAID,QAASoyD,GAAO7xD,GACnB,IACI/D,OAAO21B,aAAa0yD,WAAWtkF,GACjC,MAAOP,GACLC,EAAQC,MAAMF,IAKf,QAASwxF,GAAejxF,EAAKV,GAChC,IACIrD,OAAOi1F,eAAe7L,QAAQrlF,EAAK0e,KAAKC,UAAUrf,IACpD,MAAMG,GACJ,QAID,QAAS0xF,GAAenxF,GAC3B,IACI,GAAMC,GAAQhE,OAAOi1F,eAAer/D,QAAQ7xB,EAC5C,OAAOC,IAASye,KAAKoT,MAAM7xB,GAC7B,MAAOR,GACL,QAnDR,oBAAA1C,EAAA,U9D+re6BhB,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,Y+Drsee,SAASkyE,KAAyC,GAAvB5X,GAAuB,0DAAVoN,EAAU,YAC7D,UAAIpN,EAAOlnC,YAAas0C,IACbpN,EAAOlnC,UAAUwB,OAAO,SAACqC,GAAD,MAAUA,KAASywC,IAAU3mE,OAAS,EAF7E,O/DqteM,SAAUX,EAAQiE,EAAqBrE,GAE7C,YgEvteA,YAEMy6D,GAFN,OAEgC,SAAC,GAAD,SAAGtiD,IAAcy9E,iBAElCv9E,8BAAeoiD,EAAyB,SAACm7B,GAAD,MAAqBA,MhEmuetE,SAAUx1F,EAAQiE,EAAqBrE,GAE7C,YAC+BA,GAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOg2D,IAC9E,IAAIjQ,GAAyCpqD,EAAoB,GAE7D61F,GADiD71F,EAAoB4D,EAAEwmD,GACpBpqD,EAAoB,MACvE81F,EAA6C91F,EAAoB,GACjE+1F,EAAiD/1F,EAAoB,IACrEg2F,EAAuCh2F,EAAoB,GAChFmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IiE3te1Og6C,GAXShiD,yBAClBmD,IACAT,IACAL,IACA,SAACgB,EAASu6E,EAAYljE,GAAtB,OACIrX,UACAu6E,aACAljE,UAAWA,EAAUiK,cAIU3kB,yBACnCH,IACAN,IACAC,IACA+B,IACA,WAAe67D,EAAS96D,EAAaC,GAAc,GAAhDC,GAAgD,EAAhDA,SAESO,EAA8Bq6D,EAA9Br6D,0BAFuC,EAITA,MAJS,IAIvCE,oBAJuC,EAI5B,GAJ4B,MAIxBhB,iBAJwB,OAO3C47E,EAAkBh1F,OAAO6I,KAAK3D,KAC7B4D,OAAO,SAACC,EAAKksF,GACV,GAAMC,GAAWhwF,IAAM+vF,EAKvB,OAHI77E,GAAM87E,KACNnsF,EAAImsF,GAAY97E,EAAM87E,IAEnBnsF,MAgBf,OAbiB,uBAAbqR,IACA46E,OACOA,GACHzzF,KAAM6X,EAAM7X,KACZk1D,MAAOr9C,EAAMq9C,SAKjB98C,IAAaF,GAAeC,KAC5Bs7E,EAAgB9vF,IAAMoI,WAAa,SAGhC0nF,MjEoveT,SAAU91F,EAAQD,GkElyexB,QAASk2F,KACL,KAAM,IAAIt0F,OAAM,mCAEpB,QAASu0F,KACL,KAAM,IAAIv0F,OAAM,qCAsBpB,QAASw0F,GAAWC,GAChB,GAAIC,IAAqBzzF,WAErB,MAAOA,YAAWwzF,EAAK,EAG3B,KAAKC,IAAqBJ,IAAqBI,IAAqBzzF,WAEhE,MADAyzF,GAAmBzzF,WACZA,WAAWwzF,EAAK,EAE3B,KAEI,MAAOC,GAAiBD,EAAK,GAC/B,MAAMj1F,GACJ,IAEI,MAAOk1F,GAAiBl2F,KAAK,KAAMi2F,EAAK,GAC1C,MAAMj1F,GAEJ,MAAOk1F,GAAiBl2F,KAAKwe,KAAMy3E,EAAK,KAMpD,QAASE,GAAgBC,GACrB,GAAIC,IAAuBh1F,aAEvB,MAAOA,cAAa+0F,EAGxB,KAAKC,IAAuBN,IAAwBM,IAAuBh1F,aAEvE,MADAg1F,GAAqBh1F,aACdA,aAAa+0F,EAExB,KAEI,MAAOC,GAAmBD,GAC5B,MAAOp1F,GACL,IAEI,MAAOq1F,GAAmBr2F,KAAK,KAAMo2F,GACvC,MAAOp1F,GAGL,MAAOq1F,GAAmBr2F,KAAKwe,KAAM43E,KAYjD,QAASE,KACAC,GAAaC,IAGlBD,KACIC,EAAah2F,OACb05B,EAAQs8D,EAAanlE,OAAO6I,GAE5Bu8D,GAAc,EAEdv8D,EAAM15B,QACNk2F,KAIR,QAASA,KACL,IAAIH,EAAJ,CAGA,GAAIj1F,GAAU00F,EAAWM,EACzBC,KAGA,KADA,GAAIllD,GAAMnX,EAAM15B,OACV6wC,GAAK,CAGP,IAFAmlD,EAAet8D,EACfA,OACSu8D,EAAaplD,GACdmlD,GACAA,EAAaC,GAAYv1E,KAGjCu1E,IAAc,EACdplD,EAAMnX,EAAM15B,OAEhBg2F,EAAe,KACfD,KACAJ,EAAgB70F,IAiBpB,QAASq1F,GAAKV,EAAKt2C,GACfnhC,KAAKy3E,IAAMA,EACXz3E,KAAKmhC,MAAQA,EAYjB,QAAS7+B,MAhKT,GAOIo1E,GACAG,EARA78D,EAAU35B,EAAOD,YAgBpB,WACG,IAEQs2F,EADsB,kBAAfzzF,YACYA,WAEAqzF,EAEzB,MAAO90F,GACLk1F,EAAmBJ,EAEvB,IAEQO,EADwB,kBAAjBh1F,cACcA,aAEA00F,EAE3B,MAAO/0F,GACLq1F,EAAqBN,KAuD7B,IAEIS,GAFAt8D,KACAq8D,KAEAE,GAAc,CAyClBj9D,GAAQ6nB,SAAW,SAAU40C,GACzB,GAAI5qE,GAAO,GAAI7Y,OAAMrB,UAAU3Q,OAAS,EACxC,IAAI2Q,UAAU3Q,OAAS,EACnB,IAAK,GAAIV,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAClCurB,EAAKvrB,EAAI,GAAKqR,UAAUrR,EAGhCo6B,GAAMx5B,KAAK,GAAIi2F,GAAKV,EAAK5qE,IACJ,IAAjB6O,EAAM15B,QAAiB+1F,GACvBP,EAAWU,IASnBC,EAAK/1F,UAAUsgB,IAAM,WACjB1C,KAAKy3E,IAAI/kF,MAAM,KAAMsN,KAAKmhC,QAE9BnmB,EAAQsM,MAAQ,UAChBtM,EAAQ7P,WACR6P,EAAQ0O,OACR1O,EAAQo9D,QACRp9D,EAAQ/c,QAAU,GAClB+c,EAAQovB,YAIRpvB,EAAQq9D,GAAK/1E,EACb0Y,EAAQs9D,YAAch2E,EACtB0Y,EAAQ8kC,KAAOx9C,EACf0Y,EAAQu9D,IAAMj2E,EACd0Y,EAAQw9D,eAAiBl2E,EACzB0Y,EAAQy9D,mBAAqBn2E,EAC7B0Y,EAAQ2Q,KAAOrpB,EACf0Y,EAAQ09D,gBAAkBp2E,EAC1B0Y,EAAQ29D,oBAAsBr2E,EAE9B0Y,EAAQ/Y,UAAY,SAAU3d,GAAQ,UAEtC02B,EAAQ49D,QAAU,SAAUt0F,GACxB,KAAM,IAAItB,OAAM,qCAGpBg4B,EAAQ69D,IAAM,WAAc,MAAO,KACnC79D,EAAQ89D,MAAQ,SAAUtlF,GACtB,KAAM,IAAIxQ,OAAM,mCAEpBg4B,EAAQ+9D,MAAQ,WAAa,MAAO,KlEoze9B,SAAU13F,EAAQD,EAASH,GAEjC,YmE19eA,IAAI+3F,IAMFp3E,QAAS,KAIXvgB,GAAOD,QAAU43F,GnEk/eX,SAAU33F,EAAQD,EAASH,GAEjC,YoEp9eA,SAASg4F,GAAeC,EAAgBC,EAAYC,EAAaC,GAQ/Dr5E,KAAKk5E,eAAiBA,EACtBl5E,KAAKs5E,YAAcH,EACnBn5E,KAAKo5E,YAAcA,CAEnB,IAAIG,GAAYv5E,KAAKX,YAAYk6E,SACjC,KAAK,GAAIC,KAAYD,GACnB,GAAKA,EAAUl3F,eAAem3F,GAA9B,CAMA,GAAIC,GAAYF,EAAUC,EACtBC,GACFz5E,KAAKw5E,GAAYC,EAAUL,GAEV,WAAbI,EACFx5E,KAAKsB,OAAS+3E,EAEdr5E,KAAKw5E,GAAYJ,EAAYI,GAKnC,GAAIE,GAAmD,MAAhCN,EAAYM,iBAA2BN,EAAYM,sBAAmBN,EAAYl0D,WAOzG,OALEllB,MAAK25E,mBADHD,EACwBzsE,EAAc6kE,gBAEd7kE,EAAc4kE,iBAE1C7xE,KAAK45E,qBAAuB3sE,EAAc4kE,iBACnC7xE,KAxFT,GAAI40E,GAAU,EAAQ,IAElBC,EAAc,EAAQ,IAEtB5nE,EAAgB,EAAQ,IAMxB4sE,GALU,EAAQ,IAKY,iBAAkB,cAAe,cAAe,qBAAsB,uBAAwB,qBAAsB,uBAMlJC,GACFp2F,KAAM,KACN4d,OAAQ,KAERy4E,cAAe9sE,EAAc8kE,gBAC7BiI,WAAY,KACZC,QAAS,KACT3uD,WAAY,KACZ4uD,UAAW,SAAUhvD,GACnB,MAAOA,GAAMgvD,WAAahqC,KAAKl9C,OAEjC0mF,iBAAkB,KAClBS,UAAW,KA+DbvF,GAAQqE,EAAe72F,WAErBg4F,eAAgB,WACdp6E,KAAK05E,mBACL,IAAIxuD,GAAQlrB,KAAKo5E,WACZluD,KAIDA,EAAMkvD,eACRlvD,EAAMkvD,iBACgC,iBAAtBlvD,GAAMhG,cAEtBgG,EAAMhG,gBAERllB,KAAK25E,mBAAqB1sE,EAAc6kE,kBAG1CuI,gBAAiB,WACf,GAAInvD,GAAQlrB,KAAKo5E,WACZluD,KAIDA,EAAMmvD,gBACRnvD,EAAMmvD,kBACiC,iBAAvBnvD,GAAMovD,eAOtBpvD,EAAMovD,iBAGRt6E,KAAK45E,qBAAuB3sE,EAAc6kE,kBAQ5CyI,QAAS,WACPv6E,KAAKw6E,aAAevtE,EAAc6kE,iBAQpC0I,aAAcvtE,EAAc4kE,iBAK5B0D,WAAY,WACV,GAAIgE,GAAYv5E,KAAKX,YAAYk6E,SACjC,KAAK,GAAIC,KAAYD,GAIjBv5E,KAAKw5E,GAAY,IAGrB,KAAK,GAAIl4F,GAAI,EAAGA,EAAIu4F,EAA2B73F,OAAQV,IACrD0e,KAAK65E,EAA2Bv4F,IAAM,QAW5C23F,EAAeM,UAAYO,EA+B3Bb,EAAewB,aAAe,SAAUC,EAAOnB,GAC7C,GAAIoB,GAAQ36E,KAER46E,EAAI,YACRA,GAAEx4F,UAAYu4F,EAAMv4F,SACpB,IAAIA,GAAY,GAAIw4F,EAEpBhG,GAAQxyF,EAAWs4F,EAAMt4F,WACzBs4F,EAAMt4F,UAAYA,EAClBs4F,EAAMt4F,UAAUid,YAAcq7E,EAE9BA,EAAMnB,UAAY3E,KAAY+F,EAAMpB,UAAWA,GAC/CmB,EAAMD,aAAeE,EAAMF,aAE3B5F,EAAYc,aAAa+E,EAAO7F,EAAYgG,qBAG9ChG,EAAYc,aAAasD,EAAgBpE,EAAYgG,oBAErDx5F,EAAOD,QAAU63F,GpEwjfX,SAAU53F,EAAQD,EAASH,GqEpwfjC,QAAS65F,GAAYp1F,GACnB,MAAgB,OAATA,GAAiBq1F,EAASr1F,EAAM1D,UAAYg5F,EAAWt1F,GA7BhE,GAAIs1F,GAAa,EAAQ,KACrBD,EAAW,EAAQ,IA+BvB15F,GAAOD,QAAU05F,GrEuyfX,SAAUz5F,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAkBrC,QAASI,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,EsEz0f3M,QAASZ,KAED,MAAIlD,QAAOu5F,SACHC,IAAkB/rB,GAAe4Y,GAC1B7kF,IAAQC,QAAQ+3F,IAG3BnT,KAEIrmF,OAAOy5F,KACPhsB,KACA4Y,KACAmT,EAAgBx5F,OAAOy5F,IAChBj4F,IAAQC,QAAQ+3F,KAGM,oBAA7Bx5F,OAAO4Z,SAASiB,WAChB6+E,EAAYC,iBACRC,WACI/5E,OAAQ,WACRzB,QAAS,cAOY,qBAA7Bpe,OAAO4Z,SAASiB,WAChB6+E,EAAYC,iBACRC,WACI/5E,OAAQ,WACRzB,QAAS,MACTy7E,YAAa,eAKpB,eAAe31D,KAAKlkC,OAAO4Z,SAASqC,YACrCy9E,EAAYI,cAAgBJ,EAAYI,cAAczuE,QAAQ,eAAgBrrB,OAAO4Z,SAASqC,WAElGu9E,EAAgBx5F,OAAOu5F,SAASr2F,IAAIw2F,GACpC15F,OAAOy5F,IAAMD,EACNA,EACFliE,OACAwZ,KAAK,WAGF,MAFA28B,MACA4Y,KACOmT,IAEVnqB,MAAM,SAAC3rE,GACJD,EAAQC,MAAMA,OAIfq2F,IAAejpD,KAAK5tC,GAOhC,QAAS62F,KAAuC,GAA1B3oB,GAA0B,uDAAfvsE,IAASkC,IAC7C,OAAOizF,KAAoBA,EAAkB,GAAIx4F,KAAQ,SAACC,EAASE,GAC/D,GAAI3B,OAAOu5F,SACP93F,EAAQzB,OAAOu5F,cACZ,CACH,GAAMrnC,GAAM+nC,EAAQ7oB,GACdpwE,EAASa,SAASE,cAAc,SACtCf,GAAOkB,SAEPlB,EAAOE,OAAS,WACRlB,OAAOu5F,SACP93F,EAAQzB,OAAOu5F,UAEf53F,EAAO,GAAIL,GAAM,kDAIzBN,EAAOC,QAAU,WACbU,EAAO,GAAIL,GAAM,6BAGrBN,EAAOqB,IAAM6vD,EACbrwD,SAASD,KAAKY,YAAYxB,OtEoufwCzB,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOq2F,KAEnH16F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOwqF,KAEpE7uF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOkuE,KACpEvyE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOoqF,KACpEzuF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOsqF,KACpE3uF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOiqF,KACpEtuF,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+yF,KACpEp3F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOizF,KACpEt3F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOs2F,KACpE36F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOu2F,KACpE56F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOtC,IAC9E,IAGjB84F,GAHqB1iC,EAAyCn4D,EAAoB,IAC7D0uD,EAAiD1uD,EAAoB4D,EAAEu0D,GACvE2iC,EAAuC96F,EAAoB,GsEt1f9Em6F,GACFY,SAAU,mBACVR,cAAe,kDACfS,YAAa,+DAGJN,YACRp1F,IAASmC,QAAU,8DADX,IAERnC,IAASkC,KAAO,0DAFR,GAKTizF,SACAR,SACA/rB,SACA4Y,SA2FS+H,EAAW,iBAAMlrF,KAAM4tC,KAAK,SAACwgC,GACtC,MAAKA,GAGEA,EAAM8c,WACR/e,MAAM,SAAC7rE,GAGJ,GAAY,uBAARA,EACA,MAAOqqF,KACF/8C,KAAK,cAGLu+B,MAAM,gBAXZ7tE,IAAQC,aAyBVqwE,EAAc,SAACz3D,GAAD,MACvBnX,KAAM4tC,KAAK,SAACwgC,GAAD,MAAWA,IAASA,EAAMQ,YAAYz3D,MAExC2zE,EAAe,SAAC3zE,GAAD,MACxBnX,KAAM4tC,KAAK,SAACwgC,GAAD,MAAWA,IAASA,EAAM0c,aAAa3zE,KAC7Cg1D,MAAM,iBAAMyC,GAAYz3D,MAEpB6zE,EAAoB,iBAC7BhrF,KAAM4tC,KAAK,SAACwgC,GAAD,MAAWA,IAASA,EAAM4c,sBAChC7e,MAAM,eAEFwe,EAAS,iBAClB3qF,KAAM4tC,KAAK,SAACwgC,GAAD,MAAWA,IAASA,EAAMuc,YAE5B8I,EAAK,SAAC6D,EAAWzlD,GAAZ,MACd7xC,KAAM4tC,KAAK,SAACwgC,GAAD,MAAWA,IAASA,EAAMqlB,GAAG6D,EAAWzlD,MAE1C8hD,EAAM,SAAC2D,EAAWzlD,GAAZ,MACf7xC,KAAM4tC,KAAK,SAACwgC,GAAD,MAAWA,IAASA,EAAMulB,IAAI2D,EAAWzlD,MAE3CmlD,EAAyB,SAAC7/E,GAAD,MAClCnX,KAAM4tC,KAAK,SAACwgC,GAAD,MAAWA,IAASA,EAAM4oB,uBAAuB7/E,MAEnD8/E,EAAqB,SAAC9/E,GAAD,MAC9BnX,KAAM4tC,KAAK,SAACwgC,GAAD,MAAWA,IAASA,EAAM6oB,mBAAmB9/E,MAE/C/Y,GACTm5F,eAAgB,iBAChBC,qBAAsB,uBACtBC,qBAAsB,uBACtBC,cAAe,mBtE23fU96F,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YuEtigBA,6FAAAK,EAAA,KAIA,KAAegY,yBACXkb,IACAc,IACA,SAACinE,EAAepyB,GACZ,MAAK5f,aAAQgyC,GAEDhyC,YAAQ4f,MACTA,EAFAoyB,GAQZ,IAAMC,GAAyB,SAAC,GAAD,QAAG7sB,cAAH,yBAEzB8sB,EAAgCnjF,yBACzCkjF,EACA,oBAAGE,OAAH,wBAGS9yB,EAAoBtwD,yBAC7BkjF,EACA,oBAAGnzB,SAAH,2BvEsjgBE,SAAUhoE,EAAQiE,EAAqBrE,GAE7C,YwExigBA,SAAS07F,GAAQC,GACb,OAAM,IAAEA,EAAqB,MAAQ,KA8BzC,QAASC,GAA8BzkB,GACnC,GAAIj2E,OAAO6I,KAAKotE,GAAKp2E,OAAS,EAAG,CAAC,GAAD,GACUo2E,EAA/BX,QAAWqlB,oBADU,SAEGA,EAAxBC,0BAFqB,SAGHA,EAAlBC,oBAHqB,OAKvBC,EAAa96F,OAAO6I,KAAKgyF,GAAUnnE,OAAO,SAACpwB,GAAD,MAA4B,SAAlBu3F,EAASv3F,KAC1DusB,IAAI,SAACvsB,GAAD,OAAkC,IAAxBA,EAAIiW,QAAQ,SAAgB1Z,OAAS,EAEtDk7F,EAAe9kB,EAAI+kB,aAAgB/kB,EAAI+kB,YAAYn7F,OAAS,EAC5Do7F,EAAmBhlB,EAAIX,SAAWW,EAAIX,QAAQ4lB,2BAC9CC,EAAiBR,EAASQ,gBAAqD,MAAlCR,EAASQ,eAAe53F,KAC3E,wBAAwBi3F,EAAQO,GAAhC,YAAyDP,EAAQM,GAAjE,kBAA8FG,EAA9F,yBAAuIT,EAAQW,GAEnJ,MAAO,iBAGX,QAASC,GAA6BnlB,GAClC,MAAIj2E,QAAO6I,KAAKotE,GAAKp2E,OAAS,EACnB,8BAEJ,iBAcX,QAASw7F,KAcP,GAbEljF,GAaF,0DAZE89D,EAYF,0DAXEnsB,EAWF,0DAVEr4B,EAUF,0DATEijE,EASF,0DAREl7B,EAQF,0DAPE/jC,EAOF,0DANE42C,EAMF,aALE0e,EAKF,0DAJE/D,EAIF,aAHEzX,EAGF,cAFE+rB,EAEF,cADEC,EACF,cACUrU,EAA+BF,EAA/BE,KAAMG,EAAyBL,EAAzBK,YAAaI,EAAYT,EAAZS,QAD7B,EAEgDtvE,EAAtCwhD,yBAFV,SAEgDxhD,EAAlBi2C,oBAF9B,OAG2B48B,EAASD,EAA3BnkF,EACuB,iBAA1B6qB,EAAS62C,cAA4D,cAA1B72C,EAAS62C,eACpD0iB,SAEJ,IAAMwQ,IAAY1xC,EAAK/vC,MAAQ,IAAIma,cAC7BunE,EAAY/G,EAAgBgH,WAAa,gBACzCC,EAAepsB,EACfqsB,EAAgBpB,EAAQvkB,EAAI4lB,WAG5BC,EACDtiC,EAAep6C,QAAUo6C,EAAep6C,OAAO28E,KAAOviC,EAAep6C,OAAO28E,IAAI7nE,eAChFslC,EAAep6C,QAAUo6C,EAAep6C,OAAOjF,IAAMq/C,EAAep6C,OAAOjF,GAAG+Z,eAC9EslC,EAAep6C,QAAUo6C,EAAep6C,OAAOjd,MAAQq3D,EAAep6C,OAAOjd,KAAK+xB,cAEjF8nE,EAAUC,EAAyBvH,EAAiBhwF,IAAYwG,QAAS4wF,GACzEI,EAAUD,EAAyBvH,EAAiBhwF,IAAYwG,QAASwpF,EAAgB5b,MACzFqjB,EAAUF,EAAyBvH,EAAiBhwF,IAAYwG,QAASwpF,EAAgBhkF,MAEzF0rF,EAAWH,EAAyBvH,EAAiBhwF,IAAYwG,QAASyuD,EAAcwX,UAAYxX,EAAcx/C,IAClHkiF,EAAW3H,EAAgBnzF,OAASmD,IAAYwG,QAAUsvF,EAAQpsC,EAASiuC,UAAY,iBACvFC,EAAaluC,EAASkuC,WACtBC,EAAkB/B,EAAQe,GAC1BiB,EAAcP,EAAyBvH,EAAiBhwF,IAAYwG,QAASkjD,EAASquC,aACtFC,EAAOF,EACPG,EAAOnjC,EAAer3D,KAEtBy6F,EAAeX,EACjBvH,EACAhwF,IAAYwG,QACZ2xF,YAA6BpnE,GAC7B,qBAEEqnE,EAAuBF,EACvBG,EAAgBd,EAClBvH,EACAhwF,IAAYwG,QACZumB,EAASo8C,QAAUp8C,EAAS62C,aAAe72C,EAAStvB,KACpD,qBAEE66F,EAAcf,EAChBvH,EACAhwF,IAAYwG,QACZumB,EAASo8C,QAAUp8C,EAASo8C,QAAQ1rE,KAAOsvB,EAAS62C,aACpD,oBAEJ0iB,GAAOiR,EAAyBvH,EAAiBhwF,IAAYwG,QAAS8/E,EAEtE,IAAMiS,GAAc7B,EAA6BnlB,GAC3CinB,EAAkBxC,EAA8BzkB,GAGhDknB,EAAOlnB,EAAI97D,IAA2B,mBAAb/Y,WAA4B80E,IAAOzzE,IAAI,QAChE0zE,EAAOF,EAAI97D,IAA2B,mBAAb/Y,WAA4B80E,IAAOzzE,IAAI,QAChE26F,GAA+B,mBAAX79F,QAA0BA,OAAOshD,UAAUwpC,UAAY,iBAGzEgT,GAA8FhxB,EAA9FgxB,eAAgBC,GAA8EjxB,EAA9EixB,eAAgBtxC,GAA8DqgB,EAA9DrgB,aAAcuxC,GAAgDlxB,EAAhDkxB,cAAe3oE,GAAiCy3C,EAAjCz3C,aAAcogC,GAAmBqX,EAAnBrX,eAC7EwoC,GAAiBH,IAAkB,iBACnCI,GAAiBH,IAAkB,iBACnCI,GAAmB1oC,GAAiB,MAAQ,KAC5C2oC,GAAkB3xC,IAAgB,iBAClC4xC,GAAQC,YAA4BN,GAAe3oE,IAInDkpE,GAAYC,YAAuBrJ,GACnCsJ,GAAkB5vC,EAASr9C,WAAa,EACxCktF,GAAQC,EAAgB9vC,EAAS8L,OACnCikC,GAASD,EAAgB9vC,EAASyI,OAEtCsnC,IAAqB,cAAXA,GAAyBA,GAASF,EAE5C,IAAMG,IAASF,EAAgBxJ,EAAgBviC,QAC3CksC,GAAcP,KAAcp5F,IAAYyG,IAAO,iBAAmB,iBAClEquD,GAAetnC,WAAasnC,EAAetnC,UAAU3Y,QAAQzU,IAAUuH,MAAQ,IAC/EgyF,GAAa,WAGjB,IAAMC,IAAkBJ,EAAgB9vC,EAASmwC,cAE3CC,GAAQ9J,EAAgBnzF,OAASmD,IAAYyG,IAC7CszF,GAAgBD,IAASpwC,EAASswC,qBAAuB,IAAInjF,MAAM,OAWzE,QACI2rE,OACAG,cACA8V,OACAC,aACA5B,WACAC,YACAE,eACAK,UACAJ,gBACAM,UACAC,UACAC,WACAC,WACAC,aACAC,kBACAI,OACAD,OACAF,cACAS,cACAC,kBACAyB,SAhEa,KAiEbC,YAlDgB,UAmDhBhC,eACAI,cACAD,gBACAD,uBACAU,kBACAC,kBACAz4F,aAAc24F,GACdlW,UACA2W,UACAS,QAlCYvD,EAmCZwC,aACAE,mBACAC,SACAE,UACAE,cACAC,mBACAQ,YAjDgBN,GAAQC,GAAc,GAAK,iBAkD3CM,YAjDgBP,GAAQC,GAAc,GAAK,iBAkD3CO,eAjDmBR,GAAQpwC,EAAS6wC,eAAiB,iBAkDrDC,iBAjDqBV,GAAQpwC,EAAS+wC,aAAe,iBAkDrDC,MAjDUZ,GAAW9J,EAAgBv6E,GAA3B,IAAiCi0C,EAASjsD,KAAS,iBAkD7Dk9F,SAjDab,GAAQpwC,EAASkxC,SAAW,iBAkDzCC,cAjDkB,iBAkDlBC,cAjDkBhB,GAAQ,IAAM,IAkDhCroB,OACA6U,OACAzb,YACAquB,SACAF,qBxEw0fuB5+F,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOs8F,KAEpE3gG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOqsE,KACpE1wE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOmpE,KAGpExtE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOu8F,KACpE5gG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOw8F,KACpE7gG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOy8F,KACpE9gG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO08F,IAC9E,IAAI32C,GAAyCpqD,EAAoB,GAE7DghG,GADiDhhG,EAAoB4D,EAAEwmD,GAC3BpqD,EAAoB,KAChEihG,EAAoDjhG,EAAoB4D,EAAEo9F,GAC1EE,EAAoDlhG,EAAoB,IACxEmhG,EAA4DnhG,EAAoB4D,EAAEs9F,GAClF12C,EAAuCxqD,EAAoB,GAC3DohG,EAAmDphG,EAAoB,IACvEqhG,EAA6CrhG,EAAoB,GACjEshG,EAAkDthG,EAAoB,IACtEuhG,EAAmDvhG,EAAoB,KACvEwhG,EAAyDxhG,EAAoB,IAC7EyhG,EAA8CzhG,EAAoB,IAClE0hG,EAA0D1hG,EAAoB,IAC9E2hG,EAAyD3hG,EAAoB,IAC7E4hG,EAA8C5hG,EAAoB,IAClE6hG,EAAgD7hG,EAAoB,IACpE8hG,EAAkD9hG,EAAoB,IACtE+hG,EAAwE/hG,EAAoB,KAC5FgiG,EAA6DhiG,EAAoB,IACjFiiG,EAAmDjiG,EAAoB,IACvEkiG,EAA+CliG,EAAoB,IACnEmiG,EAA+CniG,EAAoB,IACnEoiG,EAAuDpiG,EAAoB4D,EAAEu+F,GwE/kgBlFr6F,EAAsBlD,IAAlC8C,SAAYI,gBAgBPs3F,EAAkB,SAAC36F,GAAD,GAAQ49F,GAAR,uDAAwB,gBAAxB,OAC1B59F,IAA0B,gBAAVA,IAAuC,KAAjBA,EAAM69F,OAAiB79F,EAAQ49F,GAa7DlF,EAA2B,cAAC7rC,GAAD,0DAAe7H,EAAf,aAA4BhlD,EAA5B,aAAmC49F,EAAnC,uDAAmD,gBAAnD,OACnC/wC,IAAWA,EAAQ7uD,OAASgnD,EAAc21C,EAAgB36F,EAAO49F,GAAiBA,GA2MjFE,EAAoB,SAAC,GAAD,QAAGpqF,GAAH,2BAAUm4D,SAAV,mBAAsB,KAAtB,GAEbqwB,EAA6BtoF,yBACtCH,IACA6D,IACAhD,IACA0C,IACA5C,IACA,WAAmC2pF,EAAUjpF,EAAQkpF,EAArD,GAA8E,GAA3Eh6D,GAA2E,EAA3EA,IAA2E,IAAtEpuB,SAAYG,gBAA0D,EAAnD,GAAmD,EAAdhH,EAAc,EAAdA,QAExD60E,EAQA6E,IARA7E,QACAD,EAOA8E,IAPA9E,KACAG,EAMA2E,IANA3E,YACA8E,EAKAH,IALAG,cACAC,EAIAJ,IAJAI,gBACAC,EAGAL,IAHAK,eACAC,EAEAN,IAFAM,eACAC,EACAP,IADAO,qBAEEvF,GACFG,UACAD,OACAG,cACAiF,eAAgBgV,EAAW/U,EAAuBD,EAClD7E,QAAqB,OAAZn1E,EAAmB,QAAUA,EAc1C,OAZIivF,GACAva,EAAUK,YAAcgF,EACjBh0E,EACP2uE,EAAUK,YAAc+E,EACjB7kD,IAAQ3jC,IAAQwD,OACvB4/E,EAAUK,YAAc8E,IAGO,IAA/B7yE,EAAKC,QAAQ,eACbytE,EAAUG,QAAU,qBAGjBH,IAIFwa,EAAkBrqF,yBAC3BT,IACAmzC,IACA,YAAmC,GAAhC3vC,GAAgC,EAAhCA,0BAAgC,EACRA,MADQ,IACvBd,KAGR,iBAJ+B,QAET,eAAiB,mBAMlCo2D,EAAoBr4D,yBAC7BT,IACA6iD,IACA1P,IACA,WAAgC6qC,EAAiB5qC,GAAS,GAAvD5vC,GAAuD,EAAvDA,0BAAuD,EACmCw6E,MAAjF+M,EAD8C,EAC9CA,OAAQ/F,EADsC,EACtCA,UAAWgG,EAD2B,EAC3BA,WAAYl5C,EADe,EACfA,OAAQyB,EADO,EACPA,SAA0B03C,EADnB,EACG,gBADH,EAE/BznF,MAF+B,IAE9Cd,iBAF8C,OAGlDm2D,EAAYn2D,EAAM,iBAAmBuoF,CAEzC,KAAKv5C,YAAQssC,KAAqBnlB,EAAW,CACzC,GAAMqyB,GAAUp5C,GAAUsB,EAAK3vC,GACzB0nF,EAAY53C,GAAYH,EAAK3nD,KAC/BmX,EAAO,OACK,gBAAZsoF,EACAtoF,OAAYuoF,EACO,SAAZD,IACPtoF,OAAYsoF,EAGhB,IAAIE,GAAU,gBACVL,IAAwB,gBAAd/F,EACVoG,EAAU,OACHJ,IACPI,EAAUJ,GAGdnyB,EAAej2D,EAAf,IAAuBwoF,EAG3B,MAAOvyB,KAIFjD,EAA+Bn1D,yBACxCS,IACA2b,IACAwhC,IACAjJ,IACAn3B,IACAlB,IACA,SAAC3b,EAAY0b,GAAqF,GAAtEuuE,GAAsE,0DAAhDxE,EAAgD,aAAjC3oE,EAAiC,aAAnBogC,EAAmB,YAC9F,KAAKl9C,EACD,QAGJ,IAAIulF,MACAC,EAAiB,iBACjBtxC,EAAe+1C,CAEnB,IAAIvuE,EAAe,CACf6pE,EAAiB7nB,IAAMhiD,EAClB3D,IAAI,oBAAGzQ,MAAH,sBAAaqS,GAAb,EAAaA,QAAb,OAAmCA,IAAYA,EAASyC,gBAEjE,IAAM8tE,GAAkBxsB,IAAMhiD,EACzB3D,IAAI,qBAAG+D,WAERouE,GAAgBniG,SAChBy9F,EAAkB0E,EAAgBnuE,KAAK,SAAAD,GAAA,QAAcA,IAAa,SAAW,YAYrF,MARKypE,GAAex9F,SAChBw9F,GAAkB,oBAGjBrxC,EAAansD,SACdmsD,GAAgB,qBAIhBgJ,iBACAsoC,iBACAC,gBACA3oE,eACAyoE,eAAgBA,EAAevtE,KAAK,KACpCk8B,aAAcA,EAAal8B,KAAK,QAK/BmyE,EAAwB9qF,yBACjCV,IACAozC,IACAb,IACA,aAAuBk5C,GAAc,QAAlCC,eAAkC,OAApBhoF,EAAoB,EAApBA,GACTioF,QACJ,OAAW,aAAPjoF,GAAsB+nF,EAK1BE,QAFiBD,EAAIzuE,OAAO,oBAAGvxB,IAAH,mBAAU,GAAV,GAAwB+xB,cAAc3a,QAAQ,SAAW,IAChFsW,IAAI,wBAAGtsB,QACiBusB,KAAK,KAJvBsyE,IASNC,EAA0BlrF,yBACnCV,IACA6rF,IACA,WAAuDC,GAAkB,QAAtEruC,OAAsE,2BAA3DE,qCAA2D,MAErE,OAD8BpJ,KAAchrD,OAAO6I,KAAK05F,GAAgBnuC,GAA2Bv0D,OAAS,IAMvG6/F,EAA0BvoF,yBACnCe,IACA89D,IACAnsB,IACAykB,IACA/U,IACAE,IACAznC,IACAs6C,EACAh6C,IACAmtE,EACAjwB,EACAgyB,EACAa,EACAhH,GAGSsE,EAA2BxoF,yBACpCQ,IACA8hD,IACA,WAAcD,GAAmB,GAA9BlnD,GAA8B,EAA9BA,QACKkwF,SACAC,EAAiB,WAAZnwF,EAAuB,mBAAqB,gBACrD,IAAI0+D,YAAkBxX,EAAgB10D,IAAUuH,KAAM,CAClDo2F,MAASx9F,IAAWD,IAAawH,WAAjC,GADkD,OAExBgtD,EAAlBmU,oBAF0C,MAG9CA,GAAS9tE,SAEL2iG,EADA70B,EAASp0D,QAAQvU,IAAawH,YAAc,EACvCvH,IAAWD,IAAawH,WAExBvH,IAAW0oE,EAAS,KAIrC,GAAM+0B,IACFD,KAKJ,OAHID,KACAE,EAAOF,GAAP,IAAgBA,EAAhB,MAGAE,YAKC9C,EAAuBzoF,yBAChCS,IACAya,IACAgvE,EACArqF,IACAmc,IACA02B,IACA73B,IACAuB,IACAu4B,IACAwgB,EACA21B,EACA3vE,IACA,SACIxa,EACAsiF,EACAhrB,EACAn4D,EACA+wD,EACAle,EACAr0B,EACAjC,EACA+pE,EACAlxB,EACAye,EACAC,GAZJ,OAcIjzE,aACAsiF,gBACAhrB,YACAn4D,MACA+wD,SACAle,OACAr0B,WACAjC,gBACA+pE,gBACAlxB,uBACAye,gBACAC,uBAIK8U,EAA0B1oF,yBACnC0yC,IACA,SAACC,GACG,GAAIjD,GAASiD,EAAK3vC,EAKlB,OAJgB,eAAZ2vC,EAAK3vC,IAAmC,YAAZ2vC,EAAK3vC,KACjC0sC,OAAciD,EAAK3nD,MAEvB0kD,GAAU,OxEingBZ,SAAU3nD,EAAQiE,EAAqBrE,GAE7C,YAyBA,SAASwuD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIg9C,GAA+ChlC,EAAE,SAAUxnB,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO6a,GAA+ChlC,EAAExnB,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAA/K/B,GAAQuC,GAAqL,MAAOkqD,GAAK,WAE3gB,QAASk1C,GAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GyEnohBnN,QAASyjF,GAAkCzyC,GAAsC,GAA5BiM,GAA4B,yDAE7EjM,GAASvS,QAAQ,SAAAwS,GACTA,EAAQyyC,MACRzyC,EAAQyyC,IAAIzmC,sBAAwBA,KAKzC,QAAS/I,GAAmBjD,GAAS,GAChCqC,GAA8BrC,EAA9BqC,QAAYqwC,EADoB,EACF1yC,GADE,WAexC,OAZIv+C,OAAM+c,QAAQ6jC,IAAYA,EAAQ5yD,OAAS,GAC3C4yD,EAAQ7U,QAAQ,SAAAwb,GAEZA,EAAOhH,UAAYhC,EAAQj2C,GAC3Bi/C,EAAOhJ,QAAU0yC,EAEb1pC,EAAOypC,MACPzyC,EAAQyyC,IAAMzpC,EAAOypC,OAK1BzyC,EAGJ,QAAS2yC,GAAc5yC,GAC1B,IAAKA,EACD,MAAOA,EAEX,IAAMiM,KAEN,OAAKvqD,OAAM+c,QAAQuhC,IAInBA,EAASvS,QAAQ,SAAAwS,GACbiD,EAAmBjD,GAGfA,EAAQyyC,KAAOzyC,EAAQyyC,IAAIzwC,WAC3BgK,EAAsBr8D,KAAKqwD,EAAQyyC,IAAIzwC,aAI3CgK,EAAsBv8D,QACtB+iG,EAAkCzyC,EAAUiM,GAGzCjM,GAhBIkD,EAAmBlD,GAmB3B,QAASiG,GAAQ4sC,EAAKC,GACzB,MAAO,UAACv/E,EAAUjD,GACd,GAAM6B,GAAQ7B,IADa,EAESyiF,YAAsB5gF,GAAlDhL,EAFmB,EAEnBA,OAAQyC,EAFW,EAEXA,KAAS8W,EAFE,sBAG3B,OAAOsyE,KAAQH,IACX1rF,SACAyC,OACAkpF,UAAUA,KAAMpyE,EAAWoyE,MAKhC,QAASG,GAAiBhqF,EAAO9B,GAA2D,GAAnD+rF,GAAmD,uDAAxCC,EAAa3nF,OAA2B,OAAnB4nF,EAAmB,aAAXC,EAAW,YAC/F,IAAqB,IAAjBpqF,EAAMvZ,OACN,MAAO,GAAP,wBAAO,qHAAYkB,IAAQG,OAAO,oBAA3B,2CAEX,QAAQmiG,GACJ,IAAKC,GAAaG,QACd,MAAO,YAAP,MAAArtE,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,GAAA+H,GAAA,yFACGlG,GAAQ7B,IACRijF,EAAmBC,YAAyBrhF,GAF/C,SAGgB2sC,IAAU20C,cAAcxqF,EAAO9B,EAA/B,KAA4CosF,GAH5D,cAGG/+C,GAHH,yBAIIA,EAJJ,2CAAP,wDAMJ,KAAK2+C,GAAaz3C,YACd,MAAO,GAAP,wBAAO,qHAAaoD,IAAUC,kBAAkB53C,GAAzC,2CACX,KAAKgsF,GAAaO,qBACd,MAAO,GAAP,wBAAO,qHAAa50C,IAAU60C,iBAC1B1qF,EACA9B,GACEqmC,KAAM,IAAMxpB,SAAU,MAAOovE,SAAQC,cAHpC,2CAIX,KAAKF,GAAa3nF,OAClB,QACI,MAAO,YAAP,MAAAya,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,GAAA+H,GAAA,yFACGlG,GAAQ7B,IACRsjF,EAAkBC,YAAwB1hF,GAF7C,SAGgB2sC,IAAUm0C,iBAAiBhqF,EAAO9B,EAAlC,KAA+CysF,GAH/D,cAGGp/C,GAHH,yBAIIA,EAJJ,2CAAP,0DASL,QAAS6W,KAAgB,UAC5B,yBAAAplC,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,6FACGjJ,GAAYD,YAAkBkJ,KADjC,SAEkBwjF,IAAUzoC,eAAgBhkD,aAF5C,cAEGZ,GAFH,yBAGIA,EAHJ,2CAAP,yDASG,QAAS+4C,GAAT,GAAyC,WAAtBxtD,EAAsB,EAAtBA,KAAS+hG,EAAa,aAC5C,yBAAA9tE,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,GAAA+H,GAAA,qGACGlG,GAAQ7B,IADX,EAEsChK,YAAkB6L,GAFxD,IAEK4xC,QAFL,sBAEgBiwC,iBAFhB,OAGG3vC,EAAepgC,YAAwB3T,KACvC2jF,EAAaD,EAAMtwE,KAAK,qBAAG1Z,KAAgBhY,IAC3CogG,EAAgB6B,EAAa9B,YAAsBhgF,GAAS+hF,YAA6B/hF,GAL5F,SAMgBgiF,IAAQ30C,QAAR,KACZ4yC,EACA2B,GACH/hG,OACAqyD,iBAVD,cAMG7P,GANH,OAeCA,GAAQA,EAAKmF,MAAQnF,EAAKmF,KAAKqE,UAC3Bo2C,GAAY5/C,EAAKmF,KAAKqE,QAAQ,GAAGgC,SAAS,GAAGsC,SAC7C9N,EAAKmF,KAAKqE,QAAQ,GAAGgC,SAAS,GAAGsC,QAAQ1yD,KAAKwkG,GAElD5/C,EAAKmF,KAAKqE,QAAQvQ,QAAQ,SAACqS,GAAW,GAC1BE,GAAaF,EAAbE,QACRF,GAAOE,SAAW4yC,EAAc5yC,MArBrC,kBAyBIxL,EAzBJ,4CAAP,yDA6BG,QAASuM,GAAT,GAA2C,WAAvB93C,EAAuB,EAAvBA,MAAU8qF,EAAa,cAC9C,yBAAA9tE,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,GAAA+H,GAAA,6FACGlG,GAAQ7B,IACR8hF,EAAgB8B,YAA6B/hF,GAFhD,SAGgBgiF,IAAQpzC,SAAR,KACZqxC,EACA2B,GACH9qF,UAND,cAGGurC,GAHH,OAQC6/C,SAGA7/C,GAAQA,EAAKmF,MAAQnF,EAAKmF,KAAKqG,WAC3Bo0C,GACA5/C,EAAKmF,KAAKqG,SAASsC,QAAQ1yD,KAAKwkG,GAEpC5/C,EAAKmF,KAAKqG,SAAW4yC,EAAcp+C,EAAKmF,KAAKqG,WAEvCC,EAAUzL,EAAKmF,KAAKqG,SAAS,MACnB/2C,EAAM+xC,SAClBq5C,EAAap0C,EAAQqC,QAAQ/+B,OAAO,SAAA0lC,GAAA,MAA4B,aAAlBA,EAAOjO,WAnB1D,kBAuBIq5C,GAAc7/C,EAvBlB,2CAAP,yDA2BG,QAASyM,GAAT,GAAgD,WAA5B5B,EAA4B,EAA5BA,WAAe00C,EAAa,mBACnD,yBAAA9tE,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,GAAA+H,GAAA,yFACGlG,GAAQ7B,IACR8hF,EAAgB8B,YAA6B/hF,GAFhD,SAGgBgiF,IAAQlzC,SAAR,KACZmxC,EACA2B,GACH10C,eAND,cAGG7K,GAHH,OASCA,GAAQA,EAAKmF,MAAQnF,EAAKmF,KAAKqG,WAC/BxL,EAAKmF,KAAKqG,SAAW4yC,EAAcp+C,EAAKmF,KAAKqG,WAV9C,kBAaIxL,EAbJ,2CAAP,yDAiBG,QAAS+L,GAAT,GAAqE,WAA5CD,EAA4C,EAA5CA,SAAUE,EAAkC,EAAlCA,QAASC,EAAyB,EAAzBA,QAAYszC,EAAa,qCACxE,yBAAA9tE,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,iGACG6B,GAAQ7B,IACR8hF,EAAgBD,YAAsBhgF,GACtCkyC,EAAepgC,YAAwB3T,KAH1C,SAIgB6jF,IAAQ5zC,cAAR,KACZ6xC,EACA2B,GACHzzC,WACAE,UACAC,UACA4D,iBAVD,cAIG7P,GAJH,OAaCA,GAAQA,EAAKmF,MAAQnF,EAAKmF,KAAKqE,SAC/BxJ,EAAKmF,KAAKqE,QAAQvQ,QAAQ,SAACqS,GAAW,GAC1BE,GAAaF,EAAbE,QACRF,GAAOE,SAAW4yC,EAAc5yC,KAhBrC,kBAoBIxL,EApBJ,2CAAP,yDAwBG,QAAS+K,GAAT,GAA+D,WAAlCvtD,EAAkC,EAAlCA,KAAMqtD,EAA4B,EAA5BA,WAAe00C,EAAa,0BAClE,yBAAA9tE,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,iGACG6B,GAAQ7B,IACR8hF,EAAgB8B,YAA6B/hF,GAC7CkyC,EAAepgC,YAAwB3T,KAH1C,SAIgB6jF,IAAQ30C,QAAR,KACZ4yC,EACA2B,GACH/hG,OACAqyD,eACAhF,eATD,cAIG7K,GAJH,OAYCA,GAAQA,EAAKmF,MAAQnF,EAAKmF,KAAKqE,SAC/BxJ,EAAKmF,KAAKqE,QAAQvQ,QAAQ,SAACqS,GAAW,GAC1BE,GAAaF,EAAbE,QACRF,GAAOE,SAAYA,IAfxB,kBAmBIxL,EAnBJ,2CAAP,yDAuBG,QAAS6M,GAAT,GAAiD,WAArBC,EAAqB,EAArBA,IAAQyyC,EAAa,YACpD,yBAAA9tE,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,GAAA+H,GAAA,2FACGlG,GAAQ7B,IACR8hF,EAAgB8B,YAA6B/hF,GAC7CkyC,EAAepgC,YAAwB3T,KAH1C,SAIgB6jF,IAAQ9yC,iBAAR,KACZ+wC,EACA2B,GACHzyC,MACA+C,iBARD,cAIG7P,GAJH,OAWCA,GAAQA,EAAKmF,MAAQnF,EAAKmF,KAAKqE,SAC/BxJ,EAAKmF,KAAKqE,QAAQvQ,QAAQ,SAACqS,GAAW,GAC1BE,GAAaF,EAAbE,QACRF,GAAOE,SAAW4yC,EAAc5yC,KAdrC,kBAkBIxL,EAlBJ,2CAAP,yDAgCG,QAAS4T,GAAmBhF,EAAWl5C,GAAS,UACnD,yBAAA+b,EAAA,wBAAO,WAAO1S,GAAP,MAAA8E,EAAA,0GAEoB87E,IAAQG,iBAAiBlxC,EAF7C,WAEO5O,EAFP,OAAAn8B,EAGoCm8B,EAA3BmF,KAHTthC,MAAA,KAAAA,OAGiB2lC,EAHjB3lC,EAGiB2lC,SAOZt8C,MAAM+c,QAAQu/B,KAAYA,EAAQtuD,OAVvC,iBAWKsuD,EAAQvQ,QAAQ,SAAAqS,GAAU,GACdE,GAAaF,EAAbE,QACRF,GAAOE,SAAW4yC,EAAc5yC,KAGpCzsC,EAASm7C,YAAoB1Q,EAAS9zC,IAhB3C,6BAkBW,IAAIxZ,OAAM,+CAlBrB,kCAoBQstD,EApBR,0CAsBCzqC,EAASy7C,YAAyBA,EAADA,KAtBlC,0EAAP,uDzEi2gB2BrgE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOmgG,KAClEngG,EAAuB,EAAIkwD,EAE3BlwD,EAAuB,EAAIizD,EAC3BjzD,EAAuB,EAAIigG,EAC3BjgG,EAAuB,EAAIq4D,EAC3Br4D,EAAuB,EAAIwsD,EAC3BxsD,EAAuB,EAAI+tD,EAC3B/tD,EAAuB,EAAIiuD,EAC3BjuD,EAAuB,EAAIutD,EAC3BvtD,EAAuB,EAAIusD,EAC3BvsD,EAAuB,EAAIquD,EAE3BruD,EAAuB,EAAIo1D,CACvC,IAAItB,GAAyCn4D,EAAoB,IAC7D0uD,EAAiD1uD,EAAoB4D,EAAEu0D,GACvEytC,EAAyC5lG,EAAoB,IAC7D6lG,EAA6D7lG,EAAoB,IACjF8lG,EAA6D9lG,EAAoB,KACjF+lG,EAAuD/lG,EAAoB,GAC3EgmG,EAAmEhmG,EAAoB,IACvFimG,EAA4CjmG,EAAoB,IACrFmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IyEtohB1OmkF,GACT3nF,OAAQ,SACR8nF,QAAS,UACT53C,YAAa,cACbg4C,qBAAsB,0BA0GtBU,UzE6piBE,SAAUrlG,EAAQiE,EAAqBrE,GAE7C,Y0EhyiBA,4DAGeqY,8BAAe0yC,IAAc,oBAAGK,IAAH,yBAI5C,IACM86C,GAAkB,6EACXC,EAAoB9tF,yBAAe6tF,EAAiB,oBAAG/5C,qBAAH,EAAe,GAAf,SACO,IAAnEA,EAAU1xC,QAAQ,4CAAqD0xC,EAAeA,EAHnE,0C1EsziBlB,SAAU/rD,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAOrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAX7Z,GAAIqlD,GAAsCvjE,EAAoB,GAEzGomG,GAD8CpmG,EAAoB4D,EAAE2/D,GACzBvjE,EAAoB,KACpFqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M2E/ziB1hBkkC,E,Y3E60iBF,QAASA,KAGL,MAFApkC,GAAgB1jD,KAAM8nF,GAEfjkC,EAA2B7jD,MAAO8nF,EAAcxoF,WAAand,OAAOuuC,eAAeo3D,IAAgBp1F,MAAMsN,KAAMrN,YA0C1H,MA/CAmxD,GAAUgkC,EAAeloF,GAQzBilD,EAAaijC,IACTriG,IAAK,oBACLC,MAAO,W2Ep1iBS,GACRqiG,GAAc/nF,KAAKH,MAAnBkoF,SAOR,IAJIrmG,OAAO2qE,SAAW3qE,OAAO2qE,QAAQC,SAAW5qE,OAAO2qE,QAAQC,QAAQrgB,MAAQvqD,OAAO+uF,SAClF/uF,OAAO2qE,QAAQC,QAAQrgB,KAAK4U,UAAYn/D,OAAO+uF,OAAO,oBAGtDsX,EACA,IACI1X,YAAQ,QAAS,WAKb3uF,OAAO4Z,SAAS0sF,WAEpBvY,cACF,MAAOvqF,GACLC,EAAQC,MAAR,qBAAmCF,O3E01iB3CO,IAAK,SACLC,MAAO,W2Er1iBP,MAAO,GAAP,iBACoBsa,KAAKH,MAAM8gD,kBACtB3gD,KAAKH,MAAMooF,IAFpB,gBAGoB,yBAHpB,mBAI2B,kCACVjoF,KAAKH,MAAMY,gB3E21iBzBqnF,G2E13iBiBpnF,YA8CbonF,S3Eg1iBctmG,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,GAEjC,Y4Ez3iBA,SAASinG,GAAanjG,GACpB,MAAiB,OAAVA,GAAkBg3E,EAAQttB,QAAQ05C,eAAepjG,GAG1D,QAASqjG,GAAgBrjG,GACvB,MAAOmjG,GAAanjG,IAAWiP,MAAM+c,QAAQhsB,IAAWA,EAAO0sB,MAAMy2E,GAGvE,QAASG,GAAYZ,EAAc5nF,GACjC,MAAOuB,MAAaqmF,EAAc5nF,GAGpC,QAASyoF,GAA4BxnF,GACnC,GAAIpd,GAAOod,EAAQpd,KACf6kG,EAAQF,EAAY3kG,EAAK+jG,aAAc3mF,EAAQjB,MAEnD,IAAI0oF,EAAM9nF,SAAU,CAClB,GAAI+nF,GAAcC,EAA8BF,EAAM9nF,SAAU8nF,EAE5DC,GAAYxmG,SAAQumG,EAAMC,YAAcA,SAErCD,GAAM9nF,SAGf,MAAO8nF,GAoBT,QAASE,GAA8BhoF,EAAUioF,GAC/C,GAAIC,KAeJ,OAbA5sB,GAAQttB,QAAQluC,SAASw/B,QAAQt/B,EAAU,SAAUK,GACnD,GAAIi7D,EAAQttB,QAAQ05C,eAAernF,GAEjC,GAAIA,EAAQpd,KAAK4kG,4BAA6B,CAC5C,GAAIC,GAAQznF,EAAQpd,KAAK4kG,4BAA4BxnF,EAAS4nF,EAE1DH,IAAOI,EAAOzmG,KAAKqmG,OAEvBI,GAAOzmG,KAAKomG,EAA4BxnF,MAKvC6nF,EAOT,QAASC,GAAaD,GAOpB,MANIP,GAAgBO,GAClBA,EAASF,EAA8BE,GAC9BA,IAAW30F,MAAM+c,QAAQ43E,KAClCA,GAAUA,IAGLA,EAzFTvnG,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,GAEvPlgB,GAAQgnG,gBAAkBA,EAC1BhnG,EAAQknG,4BAA8BA,EACtClnG,EAAQqnG,8BAAgCA,EACxCrnG,EAAQwnG,aAAeA,CAEvB,IAAI9sB,GAAS,EAAQ,GAEjBC,EAEJ,SAAgCv2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,IAFlDs2E,I5E89iB/B,SAAUz6E,EAAQD,G6En9iBxB,QAASynG,GAAanjG,GACpB,MAAgB,OAATA,GAAiC,gBAATA,GAGjCrE,EAAOD,QAAUynG,G7Ek/iBX,SAAUxnG,EAAQiE,EAAqBrE,GAE7C,Y8E9gjBe,SAASsxE,KAA2F,gEAA5Ej2D,EAA4E,EAA5EA,GAA4E,KAAxEE,QAAwE,EAA/D8wC,OAA+D,EAAvDkH,QAAuD,EAA9CI,oBAA8C,MAK/G,OAL+G,GAAhCk0C,iBAC/DxsF,GAAKs4C,EAAQ,IAAMA,EAAQ,GAAGt4C,IAAOA,GAHzD,Y9EyijBM,SAAUjb,EAAQiE,EAAqBrE,GAE7C,Y+E3ijBA,IAAMm2B,KACgB,mBAAX11B,UACPA,OAAO6B,WACP7B,OAAO6B,SAASE,cAGL2zB,Q/E4ijBT,SAAU/1B,EAAQiE,EAAqBrE,GAE7C,YgFpjjBA,YAEM26D,GAFN,OAE+B,SAAC,GAAD,SAAGxiD,IAAcuiD,gBAEjCriD,8BAAesiD,EAAwB,SAACD,GAAD,MAAoBA,MhFgkjBpE,SAAUt6D,EAAQiE,EAAqBrE,GAE7C,YiF3jjBA,SAAS8nG,GAA0Bx2C,GAC/B,GACMy2C,GAAoBC,YAAqB12C,EAK/C,OAHIy2C,IAHoB,KAIpBz2C,EAAQ0nB,OAAS+uB,GAEdz2C,EAGX,QAAS22C,KACL,OADwC,2DACzBl3E,IAAI,SAACogC,GAChB,GAAM+2C,GAAkBC,IAAOh3C,EAAOE,aAAgB,OAEtD,OADAF,GAAOE,SAAW62C,EACX/2C,IAIf,QAASi3C,KACL,OADwC,2DACzBr3E,IAAI,SAACogC,GAChB,GAAMk3C,GAAiBl3C,EAAOE,SAAStgC,IAAI,SAACugC,GAAD,MAAaw2C,GAA0Bx2C,KAC7EwX,KAAK,SAACw/B,EAAUC,GACb,MAAID,GAAStvB,MAAQuvB,EAASvvB,OAClB,EACDsvB,EAAStvB,MAAQuvB,EAASvvB,MAC1B,EAEJ,GAGf,OADA7nB,GAAOE,SAAWg3C,EACXl3C,IAIR,QAASq3C,GAAkCnlG,EAAMgsD,GACpD,OACI5sD,KAAMgmG,EACNplG,OACAgsD,UACAO,aAAcX,KAAKl9C,OAIpB,QAAS6kD,GAAoB8xC,GAChC,MAAO,UAAC9jF,EAAUjD,GACdkxC,IAAe,sBACf,IAAM53C,GAAOytF,UACPllF,EAAQ7B,IACRi7C,EAAYjlD,YAAkB6L,GAJT,EAKKo5C,EAAxB+rC,0BALmB,SAMW/wF,YAAgB4L,GAA9CpI,EANmB,EAMnBA,0BANmB,EAODA,MAPC,IAOnBE,oBAPmB,EAOR,GAPQ,EAQvB6vC,EAAW,gBAcf,OAbAjqD,QAAO6I,KAAK4+F,GAAgB5zE,KAAK,SAACvwB,GAE9B,QADcmkG,EAAenkG,GAAKokG,MACxB7zE,KAAK,SAACva,GAAD,MAAUc,GAASb,QAAQD,IAAS,MAC/C2wC,EAAW3mD,QAKnBogB,GACIniB,KAAMomG,EACN75C,cAAeC,KAAKl9C,QAGjB6S,EAASisC,aAAUxtD,KAAM8nD,EAAUlwC,UAASs2B,KAAK,WAAmB,GAAlBm+B,GAAkB,4DAC/BA,EAAhC1kB,IAD+D,2BACvDqE,mBADuD,MAEvE,IAAIA,EAAQtuD,OAAS,EAAG,CACpB,GAAM+nG,GAAoBb,EAAqBG,EAAqB/4C,GACpEzqC,GAAS4jF,EAAkCr9C,EAAU29C,IACrDj2C,IAAoB,2BAM7B,QAASk2C,GAA8B15C,GAC1C,OACI5sD,KAAMumG,EACN35C,QAASA,EAAU+4C,EAAqB/4C,UACxCO,aAAcX,KAAKl9C,OAIpB,QAASk3F,KACZ,MAAO,UAACrkF,GAAD,MAAcA,GAASmkF,MAjGlC,2KAOaF,EAA+B,+BAC/BJ,EAA+B,+BAC/BO,EAA6B,8BjFwsjBpC,SAAU5oG,EAAQiE,EAAqBrE,GAE7C,YkFntjBe,SAASkpG,GAAT,GAA8D,QAA7Bv1C,mBAA6B,OAAb2G,EAAa,yDACzE,OAAO3G,GAAQ5+B,KAAK,qBAAG1Z,KAAgBi/C,EAAOj/C,KlFozjBlD,QAASonD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAnGje,GAAIyL,GAAQ3pB,EAAoB,GAC5BmpG,EAA6BnpG,EAAoB4D,EAAE+lB,GAGnDa,EAAKxqB,EAAoB,GAGzB6T,EAAM7T,EAAoB,IAI1BopG,EAAUppG,EAAoB,KAC9BqpG,EAA+BrpG,EAAoB4D,EAAEwlG,GAMrDE,GAHYtpG,EAAoB,IAGnBA,EAAoB,KAGjCkY,EAAclY,EAAoB,GAGlCupG,EAAgBvpG,EAAoB,IAGpCwpG,EAAwBxpG,EAAoB,KAG5CypG,EAA0BzpG,EAAoB,IAG9C+qD,EAAe/qD,EAAoB,IAGnCw1D,EAAgBx1D,EAAoB,IAGpC0pG,EAAwB1pG,EAAoB,KAG5C2pG,EAAiB3pG,EAAoB,KAcrC4pG,EAAkB5pG,EAAoB,KAGtCsxE,EAAetxE,EAAoB,ImFjxjBjC6pG,EAAW,QAAXA,GAAYhqF,EAASqoC,EAAIj2C,GAC3B,KAAIA,GAAY,GAAhB,CACA,GAAI63F,GAAa5hD,EAAKroC,EAAQkqF,UAC1BC,EAAUF,EAAa73F,EAAW,EAEtCjP,YAAW,WACP6c,EAAQkqF,UAAYlqF,EAAQkqF,UAAYC,EACpCnqF,EAAQkqF,YAAc7hD,GAC1B2hD,EAAShqF,EAASqoC,EAAIj2C,EAAW,KAClC,MAGQ43F,InFsxjBXvgD,EAAUtpD,EAAoB,IAG9BiqG,EAAejqG,EAAoB,KAGnC0X,EAAc1X,EAAoB,IAGlC8T,EAAQ9T,EAAoB,GAG5BkqG,EAAqBlqG,EAAoB,KAGzCmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,KoFpxjBjhB,cAAC3/C,GAAqB,GAC3BmnF,GAD2B,YAE7B,WAAYvrF,GAAO,yEACTA,GADS,OAEfyY,GAAK+yE,qBAAuB/yE,EAAK+yE,qBAAqBvmF,KAA1BwT,GAC5BA,EAAKgzE,aAAehzE,EAAKgzE,aAAaxmF,KAAlBwT,GACpBA,EAAKizE,iBAAmBjzE,EAAKizE,iBAAiBzmF,KAAtBwT,GAJT,EAFU,2DAeX2zB,GAAkC,GAA5Bu/C,GAA4B,wDAAfC,EAAe,0DAK5CzrF,KAAKH,MALuC,IAE5C0yC,QAAWj2C,EAFiC,EAEjCA,GAAIhY,EAF6B,EAE7BA,KAAMZ,EAFuB,EAEvBA,KAAMgoG,EAFiB,EAEjBA,WAC3BvnE,EAH4C,EAG5CA,MACAuyC,EAJ4C,EAI5CA,QAJ4C,EAO1BA,GAAWA,EAAQr6D,8BAAjCkwC,EAPwC,EAOxCA,SACJo/C,EAAO,EAEX,IAAIH,GAAuB,gBAATlnG,GAAmB,CACjC,GAAMsnG,GAActnG,EAAKi/F,OAAOltE,aAG5Bs1E,GADgB,UAAhBC,EACAD,IAAWC,EAGXD,IAAWC,EAAY7+E,QAAQ,eAAgB,KAKvD,GAAIxQ,GAAW,EAEXA,GADA1V,IAAYiH,OAASpK,EACrB6Y,IAAe0vC,EAAf,IAAuB1+B,mBAAmBm+E,GAE1CnvF,IAAe0vC,EAAf,IAAuB3vC,EAAKqvF,CAEhC,IAAMpwF,GAAQA,KACP4oB,EAGP,OAAIsnE,GACA,GAAUl/C,EAAWhwC,EAAW5D,YAAY4C,IAI5CgB,WACAhB,YArDqB,wCAyDV,MACmDyE,KAAKH,MAA/DgsF,EADO,EACPA,QAASC,EADF,EACEA,aADF,IACgBv5C,OADhB,2BAC2BqC,mBAD3B,MAIf,IAAIA,EAAQ5yD,QAAU4yD,EAAQnjC,MAAM,SAAA8pC,GAAA,QAAYA,EAAO4e,eACnD,OAAM,CALK,OAUY0xB,EAAnBE,qBAVO,OAWXC,IACJ,IAAID,EAAU/pG,OAAS,EAAG,CAEtB,IAAK8pG,EACD,OAAM,CAHY,OAKDA,MALC,IAKdG,eALc,EAKR,GALQ,EAMhBC,EAAcH,EAAUl2E,OAAO,kBAAwB,QAAxB,EAAGnyB,OAA6BpB,OACrE0pG,GAAmBE,GAAeA,EAAY7gE,OAAO3vB,QAAQuwF,EAAIhuE,aAAe,EAEpF,MAAO+tE,MA9EkB,0CAiFR9gE,GACjBA,EAAMkvD,iBACNp6E,KAAKH,MAAMgG,SAASk1C,YAAoBn0D,IAAUqG,cAAgBslD,QAASvyC,KAAKH,MAAM0yC,cAnF7D,kCAsFhBrnB,GACLA,GACAA,EAAMkvD,gBAFM,OA2BZp6E,KAAKH,MAtBL+yC,EALY,EAKZA,SACAL,EANY,EAMZA,QACAsb,EAPY,EAOZA,cACAhoD,EARY,EAQZA,SACAitC,EATY,EASZA,QACA3uB,EAVY,EAUZA,MACAy/D,EAXY,EAWZA,OACA9nF,EAZY,EAYZA,SACA+hF,EAbY,EAaZA,UACAgG,EAdY,EAcZA,WACAl5C,EAfY,EAeZA,OACAyB,EAhBY,EAgBZA,SACAp4B,EAjBY,EAiBZA,UACAm4E,EAlBY,EAkBZA,OAlBY,IAmBZz1B,mBAnBY,OAoBZ9+C,EApBY,EAoBZA,SACAu2B,EArBY,EAqBZA,aACAl3B,EAtBY,EAsBZA,uBACApd,EAvBY,EAuBZA,QACAqC,EAxBY,EAwBZA,KAxBY,IAyBZ+kD,yBAzBY,OA0BZhsC,EA1BY,EA0BZA,aA1BY,EA6BuByhD,GAAWA,EAAQr6D,8BA7B1C,IA6BRE,oBA7BQ,EA6BG,GA7BH,MA6BOhB,iBA7BP,MAmChB,IAJIgvC,YAAQsjB,IACRs9B,IAAmBiB,aAGnBp4E,GAAsBu+B,EAAQ7uD,OAASmD,IAAYwG,QAAS,CAC5D,GAAMknD,GAAYge,YAAahgB,GAEzBud,EACFvd,EAAQqC,SACRy3C,IAAS95C,EAAQqC,QAAS,SAAA2G,GAAA,MAAUA,GAAOuU,WAC1Cj6C,OAAO,SAAApL,GAAA,MAAUA,SAEhB6hF,EAAgBx8B,EAAS9tE,OAAS,EAClCuqG,EAAaz8B,EAAS95C,KAAK,SAAA65C,GAAA,OAAsC,IAA/B1hB,EAAazyC,QAAQm0D,KAEzD28B,EAAeA,mBAAmB7zF,YAAY47C,EAMlD,OALiD,SAA7Ch5C,EAAMlU,IAAMsI,8BAA6C28F,IAAkBC,IAE3EC,iBAA8BA,QAElC9qG,OAAO4Z,SAAWkxF,GAItB,IAQiC,KANzB3lG,IAAY0G,QACZ1G,IAAY2G,KACZ3G,IAAY4G,KACZ5G,IAAY8G,QACZ9G,IAAYiH,KACZjH,IAAYkH,aACd2N,QAAQ62C,EAAQ7uD,MACpB,CACE,GAAM+oG,GAAiBzsF,KAAK0sF,kBAAkB5lG,IAAQyrD,EAAQ7uD,OAAMA,EAEpE,YADAyoG,GAAOjqG,KAAKuqG,GAIhB,GAAME,GAAmBpiD,YAAQgI,GAS7BA,EAToB,KACjBA,GACHK,WACAE,UACA8wC,SACA/F,YACAgG,aACAl5C,SACAyB,aAGEwgD,GAAqE,IAA5CrwF,EAASb,QAAQ,sBAC1CmxF,EAAUjC,YAAe+B,EAAiB/0E,MAC1Ck1E,EAAaH,EAAgB/3C,QAAQ5+B,KAAK,oBAAGzU,OAAUjF,EAAb,EAAaA,EAAb,OACnC,UADmC,EAAiBhY,OACxC,WAAY,YAAYoX,QAAQY,IAAO,IApFhD,EA4FZqwF,EALA3H,GAvFY,2BAwFR3mC,wBAxFQ,EAwFM,KAxFN,OAyFR9J,UAAWw4C,YAzFH,GAyFkB,KAzFlB,QA0FRxuC,kCA1FQ,GA0FgB,KA1FhB,EA8FZF,KAAe0uC,IAAgBxuC,IAC/B14C,EAASu4C,aACLC,eACA9J,UAAWw4C,GACXxuC,2BAIR,IAAMyuC,IAA0BJ,GAA0B/O,EAAUniF,QAAQ,aAAe,EACrFuxF,GAA2BL,IAA2BI,GACtDE,IAAwBt6C,WAAUE,UAAS3uB,QAAOuyC,UAGxD,KAAKm2B,IAAYG,IAA2BC,IAA2BH,GAAc,CAEjF,GAAIxrF,IAAS,QAGR2rF,KAA2BH,GAC5BprG,OAAOyrG,cACPzrG,OAAO4Z,SAASuC,OAAOyM,MAAM,UAC7BhJ,GAAS,UAGb,IAAM8rF,IAAYC,YAAaA,GAC3B96C,QAASo6C,EACTlB,OAAMA,EACN6B,aAAYA,GACTJ,IAGP,YADAxrG,QAAO6rG,KAAKH,GAAW9rF,IAI3B,GAAI0rF,IAA0BH,EAAS,CACnC,GAAMW,KAAgBR,KAA4D,IAAjCzwF,EAASb,QAAQ,UAElE,IAAK8xF,IAAiBP,QAuDXnxF,GAAqB0xF,IAC5B1C,EAASvnG,SAAS08D,KAAM,EAAG,SAxDgB,CAC3C,GAAMwtC,IAAYA,GACd7J,SACArxC,QAASo6C,EACTC,0BACGM,IAEDE,GAAYC,YAAaI,GAC/B,IAAIL,GAAW,CAEX,GAAMM,IAAgBf,EAAgBr/C,SAAWvmD,IAAckH,SAAY0+F,EAAkB,KACvFgB,IAAWD,gBAAc7P,YAAWjrC,WAAUixC,aAAYl5C,SAAQyB,WAAUwhD,eAAcA,GAHrF,GAIwBjB,EAA3B93C,KAyCR,OA7CW,+BA6CX,KA7CW,GAIMC,QAQb63C,EAAgBkB,YAChBhoF,EAASo3C,YAAc0vC,IACvBmB,aACI5xF,OACArC,UACAgM,WACAo7C,gBACA1O,QAASo6C,EACTc,aACAlF,OACI4D,SACAwB,UACAtxF,0BAA2Bq6D,EAAQr6D,2BAEvC0xF,SAAWn2E,WAAUX,6BAElB2sE,QAAU3uE,GAA0BgsC,EAAcj/D,OASzDN,OAAO4Z,SAAS0sF,SAGhBmE,EAAOjqG,KAAP,KACOkrG,IACH3oF,MAAOkpF,SAU3B9nF,EAASo3C,YAAc0vC,OArRE,8BAwRpB,MAUD3sF,KAAKH,MARL0yC,EAFC,EAEDA,QACAsb,EAHC,EAGDA,cACAgwB,EAJC,EAIDA,UACAgG,EALC,EAKDA,WACAl5C,EANC,EAMDA,OACAyB,EAPC,EAODA,SACAx0B,EARC,EAQDA,SACAX,EATC,EASDA,uBAGE+2E,EAA8BpD,YAAer4C,EAAS36B,GAEtDq2E,EAAWpD,YAAgBt4C,EAAS36B,EAAUX,GAEhDi3E,QACJ,KAQiC,KANzBrnG,IAAY0G,QACZ1G,IAAY2G,KACZ3G,IAAY4G,KACZ5G,IAAY8G,QACZ9G,IAAYiH,KACZjH,IAAYkH,aACd2N,QAAQ62C,EAAQ7uD,MAElBwqG,EAAaluF,KAAK0sF,kBAAkB5lG,IAAQyrD,EAAQ7uD,OAAMA,GAAC,IAAe,QACvE,CAAC,GAAD,GAMCsc,KAAKH,MAJL+yC,EAFD,EAECA,SACAE,EAHD,EAGCA,QACA3uB,EAJD,EAICA,MACAuyC,EALD,EAKCA,OAGJw3B,GAAab,aACT96C,UACAk5C,OAAMA,EACN74C,WACAE,UACA3uB,QACAuyC,aACE,IAGV,GAAMs1B,GAAmBhsF,KAAKurF,mBAExB4C,EAAWA,KACVnuF,KAAKH,OACRquF,aACA37C,QAAUhI,YAAQgI,GAAqEA,EAA9E,KAAyBA,GAASsrC,YAAWgG,aAAYl5C,SAAQyB,aAC1EgiD,SAAUjE,EAAsB53C,EAASsb,GACzCmgC,8BACAhC,mBACAiC,YAEJ,OACI,mBAAChqF,EAAD,KACQkqF,GACJ9C,qBAAsBrrF,KAAKqrF,qBAC3BC,aAActrF,KAAKsrF,oBArVF,GACV5qF,YA0VvB0qF,GAAS3D,cACL4G,UAASA,EACTvyF,UAASA,EACTwyF,WAAYroG,IAAa4D,QACzBg0F,UAAW,UACXgG,eAAWA,GACXl5C,WAAOA,GACPyB,aAASA,GACTyhB,iBACAg+B,WACAt5C,WACApE,gBA8BJ,IAAMlmC,GAAkB,SAACxD,GAAU,GACvBiyD,GAAYjyD,EAAZiyD,QADuB,EAEQ1qB,YAAavnC,GAAxCkmC,EAFmB,EAEvBruC,GAAkB8vC,EAFK,EAEX9nD,KAFW,EAGKmgB,EAAMrL,IAAlC8C,EAHuB,EAGvBA,KAAMrC,EAHiB,EAGjBA,OACd,QACI68D,UACAx6D,OACAJ,SAP2B,EAGRA,SAKnB6uC,SACAyB,WACAvyC,UACAs0C,aAAc+I,YAA0BzyC,GACxC0f,MAAOm3B,YAAwB72C,GAC/BopD,cAAe48B,YAAsBhmF,GACrCwS,uBAAwBD,YAA+BvS,GACvDuP,UAAWrY,YAAkB8I,GAC7BmT,SAAUzD,YAAiB1P,GAC3BqnF,aAAcv2E,YAAqB9Q,GACnCw8C,cAAe0pC,YAAsBlmF,GACrCwQ,aAAcD,YAA8BvQ,IAIpD,OAAO8pF,sBAAWC,YAAQvmF,GAAiBmjF,IAAavnF,SAAQA,MpFo0jB9D,SAAUxiB,EAAQD,EAASH,GAEjC,YqFnvkBA,IAAIylE,GAAiB,EAAQ,GAWzB+nC,GATY,EAAQ,GASA,SAAUC,GAChC,GAAIC,GAAQ3uF,IACZ,IAAI2uF,EAAMC,aAAa5sG,OAAQ,CAC7B,GAAI2hE,GAAWgrC,EAAMC,aAAaj8E,KAElC,OADAg8E,GAAMntG,KAAKmiE,EAAU+qC,GACd/qC,EAEP,MAAO,IAAIgrC,GAAMD,KAIjBG,EAAoB,SAAUC,EAAIC,GACpC,GAAIJ,GAAQ3uF,IACZ,IAAI2uF,EAAMC,aAAa5sG,OAAQ,CAC7B,GAAI2hE,GAAWgrC,EAAMC,aAAaj8E,KAElC,OADAg8E,GAAMntG,KAAKmiE,EAAUmrC,EAAIC,GAClBprC,EAEP,MAAO,IAAIgrC,GAAMG,EAAIC,IAIrBC,EAAsB,SAAUF,EAAIC,EAAIE,GAC1C,GAAIN,GAAQ3uF,IACZ,IAAI2uF,EAAMC,aAAa5sG,OAAQ,CAC7B,GAAI2hE,GAAWgrC,EAAMC,aAAaj8E,KAElC,OADAg8E,GAAMntG,KAAKmiE,EAAUmrC,EAAIC,EAAIE,GACtBtrC,EAEP,MAAO,IAAIgrC,GAAMG,EAAIC,EAAIE,IAIzBpU,EAAqB,SAAUiU,EAAIC,EAAIE,EAAIC,GAC7C,GAAIP,GAAQ3uF,IACZ,IAAI2uF,EAAMC,aAAa5sG,OAAQ,CAC7B,GAAI2hE,GAAWgrC,EAAMC,aAAaj8E,KAElC,OADAg8E,GAAMntG,KAAKmiE,EAAUmrC,EAAIC,EAAIE,EAAIC,GAC1BvrC,EAEP,MAAO,IAAIgrC,GAAMG,EAAIC,EAAIE,EAAIC,IAI7BC,EAAmB,SAAUxrC,GAC/B,GAAIgrC,GAAQ3uF,IACV2jD,aAAoBgrC,IAAsIjoC,EAAe,MAC3K/C,EAAS4xB,aACLoZ,EAAMC,aAAa5sG,OAAS2sG,EAAMS,UACpCT,EAAMC,aAAa1sG,KAAKyhE,IAKxB0rC,EAAiBZ,EAWjB9Y,EAAe,SAAU2Z,EAAiBC,GAG5C,GAAIC,GAAWF,CAOf,OANAE,GAASZ,gBACTY,EAAS1c,UAAYyc,GAAUF,EAC1BG,EAASJ,WACZI,EAASJ,SAnBW,IAqBtBI,EAASha,QAAU2Z,EACZK,GAGL3a,GACFc,aAAcA,EACd8Y,kBAAmBA,EACnBI,kBAAmBA,EACnBG,oBAAqBA,EACrBnU,mBAAoBA,EAGtBx5F,GAAOD,QAAUyzF,GrFqwkBX,SAAUxzF,EAAQD,EAASH,GAEjC,YsFt2kBA,SAASwuG,GAAM5vF,EAAO25E,EAAUkW,GAC9B,GAAI7vF,EAAM25E,GAAW,MAAO,IAAIx2F,OAAM,IAAM0sG,EAAgB,wBAA0BlW,EAAW,UAdnGp4F,EAAQ0D,cACR1D,EAAQunG,OAASvnG,EAAQmnG,MAAQnnG,EAAQuuG,WAAavuG,EAAQokE,UAAYpkE,EAAQwuG,eAClFxuG,EAAQquG,MAAQA,CAEhB,IAAI3zB,GAAS,EAAQ,GAEjB9wD,EAAO8wD,EAAOxX,UAAUt5C,KACxBjmB,EAAS+2E,EAAOxX,UAAUv/D,OAC1Bg0E,EAAU+C,EAAOxX,UAAUyU,QAC3BC,EAAY8C,EAAOxX,UAAU0U,UAC7Bl4D,EAAUg7D,EAAOxX,UAAUxjD,QAC3BiK,EAAQ+wD,EAAOxX,UAAUv5C,MACzB4tD,EAASmD,EAAOxX,UAAUqU,OAc1BnT,GATUpkE,EAAQwuG,QAAU7kF,GAC9B8kF,OAAQ7kF,EAAKnK,WACb3e,KAAM8oB,EAAKnK,WACXkM,QAAS/B,EAAKnK,WACdivF,GAAI9kF,EAAKnK,WACTkvF,OAAQ/kF,EAAKnK,WACbmvF,UAAWhlF,EAAKnK,aAGFzf,EAAQokE,UAAYwT,GAAWhuD,EAAM2tD,KAEjD4vB,GADannG,EAAQuuG,WAAa32B,GAAWxT,EAAWzgE,IAChD3D,EAAQmnG,MAAQvvB,GAAWj0E,EAAQ+b,IAClC1f,GAAQunG,OAAS3vB,GAAWuvB,EAAOxvB,EAAQwvB,MtF03kBlD,SAAUlnG,EAAQD,EAASH,GAEjC,YuFt5kBAG,GAAQ0D,cAGR1D,EAAQ6uG,KAFG,OAQX7uG,EAAQ8uG,QAFM,UAad9uG,EAAQ+uG,IAFE,MAGV/uG,EAAiB,SACf6uG,KArBS,OAsBTC,QAhBY,UAiBZC,IANQ,QvFu6kBJ,SAAU9uG,EAAQD,EAASH,GAEjC,YwFp7kBA,SAASmvG,GAAYz3B,GACnB,GAAIruD,GAAQquD,EAAOruD,MAAM,qBAEzB,OAAa,OAATA,EAAsBquD,EAEnBA,EAAO03B,UAAU/lF,EAAM,GAAGtoB,QAGnC,QAASsuG,GAAU70F,GACjB,GAAIc,GAAW6zF,EAAY30F,GACvBqC,EAAS,GACTN,EAAO,GAIP+yF,EAAYh0F,EAASb,QAAQ,MACd,IAAf60F,IACF/yF,EAAOjB,EAAS8zF,UAAUE,GAC1Bh0F,EAAWA,EAAS8zF,UAAU,EAAGE,GAGnC,IAAIC,GAAcj0F,EAASb,QAAQ,IAQnC,QAPqB,IAAjB80F,IACF1yF,EAASvB,EAAS8zF,UAAUG,GAC5Bj0F,EAAWA,EAAS8zF,UAAU,EAAGG,IAGlB,KAAbj0F,IAAiBA,EAAW,MAG9BA,SAAUA,EACVuB,OAAQA,EACRN,KAAMA,GA1CVpc,EAAQ0D,cACR1D,EAAQgvG,YAAcA,EACtBhvG,EAAQkvG,UAAYA,CAIpB,IAAIp5B,GAAW,EAAQ,KAFvB,SAAgC1xE,GAAcA,GAAOA,EAAIV,YAIlBoyE,IxFy+kBjC,SAAU71E,EAAQD,EAASH,GAEjC,YyF16kBA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQ,QAAWA,GAzEzFrD,OAAOsC,eAAerD,EAAS,cAC7BsE,OAAMA,IAERtE,EAAQqvG,iBAAmBrvG,EAAQsvG,cAAgBtvG,EAAQ4uG,UAAY5uG,EAAQ2uG,OAAS3uG,EAAQ0uG,GAAK1uG,EAAQ2rB,QAAU3rB,EAAQc,KAAOd,EAAQuvG,oBAAsBvvG,EAAQwvG,cAAgBxvG,EAAQyvG,gBAAkBzvG,EAAQ0vG,2BAE9N,IAAIC,GAAW,EAAQ,IAEvB5uG,QAAOsC,eAAerD,EAAS,mBAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAOmsG,GAASF,mBAGpB1uG,OAAOsC,eAAerD,EAAS,iBAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAOmsG,GAASH,gBAIpB,IAAII,GAAW,EAAQ,IAEvB7uG,QAAOsC,eAAerD,EAAS,uBAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAOosG,GAASL,uBAGpBxuG,OAAOsC,eAAerD,EAAS,QAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAOosG,GAAS9uG,QAGpBC,OAAOsC,eAAerD,EAAS,WAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAOosG,GAASjkF,WAGpB5qB,OAAOsC,eAAerD,EAAS,MAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAOosG,GAASlB,MAGpB3tG,OAAOsC,eAAerD,EAAS,UAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAOosG,GAASjB,UAGpB5tG,OAAOsC,eAAerD,EAAS,aAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAOosG,GAAShB,aAGpB7tG,OAAOsC,eAAerD,EAAS,iBAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAOosG,GAASN,gBAIpB,IAAIO,GAAQ,EAAQ,KAEhBC,EAASr1B,EAAuBo1B,GAEhCE,EAAc,EAAQ,KAEtBC,EAAev1B,EAAuBs1B,EAI1C/vG,GAAQ0vG,qBAAuBI,EAAgB,QAC/C9vG,EAAQqvG,iBAAmBW,EAAsB,SzF0/kB3C,SAAU/vG,EAAQiE,EAAqBrE,GAE7C,Y0FxklBe,SAASsyE,KAAoC,GAAtB3f,GAAsB,uDAAhB,GAAIr4C,EAAY,0DACpD81F,EAAa91F,EAEX+1F,EAAe19C,EAAIl2C,MAAM,IAC/B,IAAI4zF,EAAatvG,OAAS,EAAG,CACzB,GAAMuvG,GAAWC,YAA2BF,EAAa,GACzDD,QAAkBE,EAAaF,GAEnC,MAAM,GAAIC,EAAa,GAAK34F,YAAY04F,G1FiklBX/rG,EAAuB,EAAIiuE,CACvC,IAAIk+B,GAAkCxwG,EAAoB,KAC3EmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,KAoBjP,SAAUjgB,EAAQD,EAASH,G2F/klBjC,QAASywG,GAAWhsG,GAClB,MAAa,OAATA,WACKA,EAAsBisG,EAAeC,EAEtCC,GAAkBA,IAAkB1vG,QAAOuD,GAC/CosG,EAAUpsG,GACVqsG,EAAersG,GAxBrB,GAAIokD,GAAS,EAAQ,KACjBgoD,EAAY,EAAQ,KACpBC,EAAiB,EAAQ,KAGzBH,EAAU,gBACVD,EAAe,qBAGfE,EAAiB/nD,EAASA,EAAOkoD,kBAkBrC3wG,GAAOD,QAAUswG,G3FwmlBX,SAAUrwG,EAAQD,EAASH,G4FxnlBjC,QAASgxG,GAAUltG,EAAQU,GACzB,GAAIC,GAAQwsG,EAASntG,EAAQU,EAC7B,OAAO0sG,GAAazsG,GAASA,SAb/B,GAAIysG,GAAe,EAAQ,KACvBD,EAAW,EAAQ,IAevB7wG,GAAOD,QAAU6wG,G5F0olBX,SAAU5wG,EAAQD,EAASH,a6F1plBjC,YAMC,SAAUuuD,EAAM4iD,GACb,YAEI,eAAiB,0DAMvBpyF,EAAM,WACJ,YAIA,SAASqyF,GAAW/uF,GAChB,aAAWne,KAAYmtG,aAEZntG,EAAQme,GACRivF,EAAWptG,EAASme,YACpBne,EAAQqN,IACR+/F,EAAWptG,EAAS,OAEpBmd,GAIf,QAASiwF,GAAW/sG,EAAK8d,GACrB,GAAIsoB,GAASpmC,EAAI8d,EACjB,IAA2B,kBAAhBsoB,GAAO9mB,KACd,MAAO8mB,GAAO9mB,KAAKtf,EAEnB,KACI,MAAOkkD,UAAStnD,UAAU0iB,KAAKtjB,KAAKoqC,EAAQpmC,GAC9C,MAAOhD,GAEL,MAAO,YACH,MAAOknD,UAAStnD,UAAUsQ,MAAMA,MAAMk5B,GAASpmC,EAAKmN,cAQpE,QAAS6/F,GAAgClvF,EAAYysB,EAAO0iE,GACxD,MAAO,kBACQttG,KAAYmtG,IACnBI,EAAsBlxG,KAAKwe,KAAM+vB,EAAO0iE,GACxCzyF,KAAKsD,GAAY5Q,MAAMsN,KAAMrN,aAKzC,QAAS+/F,GAAsB3iE,EAAO0iE,GAElC,IAAK,GAAInxG,GAAI,EAAGA,EAAIqxG,EAAW3wG,OAAQV,IAAK,CACxC,GAAIgiB,GAAaqvF,EAAWrxG,EAC5B0e,MAAKsD,GAAehiB,EAAIyuC,EACpBztB,EACAtC,KAAK4yF,cAActvF,EAAYysB,EAAO0iE,IAIlD,QAASI,GAAqBvvF,EAAYysB,EAAO0iE,GAE7C,MAAOJ,GAAW/uF,IACXkvF,EAAgC9/F,MAAMsN,KAAMrN,WAWvD,QAASmgG,GAAOxuG,EAAMyuG,EAAcC,GAQlC,QAASC,GAAuBC,GAC5B,GAAIC,IAAaR,EAAWO,IAAa,UAAUx+C,aAGnD,KAEI,YADAhzD,OAAO21B,aAAa+7E,GAAcD,GAEpC,MAAOjqD,IAGT,IACIxnD,OAAO6B,SAAS80E,OACd9qD,mBAAmB6lF,GAAc,IAAMD,EAAY,IACvD,MAAOjqD,KAGb,QAASmqD,KACL,GAAIC,EAEJ,KACIA,EAAc5xG,OAAO21B,aAAa+7E,GACpC,MAAOlqD,IAET,SAAWoqD,KAAgBhB,EACvB,IACI,GAAIj6B,GAAS32E,OAAO6B,SAAS80E,OACzB/8D,EAAW+8D,EAAO38D,QAClB6R,mBAAmB6lF,GAAc,IACjC93F,KACAg4F,EAAc,WAAWC,KAAKl7B,EAAOxkE,MAAMyH,IAAW,IAE5D,MAAO4tC,IAQb,WAAO,KAJHhoC,EAAKsyF,OAAOF,KACZA,UAGGA,EA9CX,GACIG,GADAvyF,EAAOlB,KAEPozF,EAAa,UACb9uG,KACF8uG,GAAc,IAAM9uG,GAmDtB4c,EAAKsyF,QAAW,MAAS,EAAG,MAAS,EAAG,KAAQ,EAAG,KAAQ,EACvD,MAAS,EAAG,OAAU,GAE1BtyF,EAAK0xF,cAAgBI,GAAWH,EAEhC3xF,EAAKwyF,SAAW,WACZ,MAAOD,IAGXvyF,EAAKyyF,SAAW,SAAU5jE,EAAOwqD,GAI7B,GAHqB,gBAAVxqD,aAAsB7uB,EAAKsyF,OAAOzjE,EAAM2kB,iBAC/C3kB,EAAQ7uB,EAAKsyF,OAAOzjE,EAAM2kB,kBAET,gBAAV3kB,IAAsBA,GAAS,GAAKA,GAAS7uB,EAAKsyF,OAAOI,QAUhE,KAAM,6CAA+C7jE,CAJrD,IALA0jE,EAAe1jE,OACXwqD,GACA0Y,EAAuBljE,GAE3B2iE,EAAsBlxG,KAAK0f,EAAM6uB,EAAOzrC,SAC7Ba,KAAYmtG,GAAiBviE,EAAQ7uB,EAAKsyF,OAAOI,OACxD,MAAO,oCAOnB1yF,EAAK2yF,gBAAkB,SAAU9jE,GACxBsjE,KACDnyF,EAAKyyF,SAAS5jE,OAItB7uB,EAAK4yF,UAAY,SAASvZ,GACtBr5E,EAAKyyF,SAASzyF,EAAKsyF,OAAOO,MAAOxZ,IAGrCr5E,EAAK8yF,WAAa,SAASzZ,GACvBr5E,EAAKyyF,SAASzyF,EAAKsyF,OAAOI,OAAQrZ,GAItC,IAAI0Z,GAAeZ,GACC,OAAhBY,IACAA,EAA+B,MAAhBlB,EAAuB,OAASA,GAEnD7xF,EAAKyyF,SAASM,MAxKhB,GAAI3xF,GAAO,aACPgwF,EAAgB,YAyDhBK,GACA,QACA,QACA,OACA,OACA,SAkHAuB,EAAgB,GAAIpB,GAEpBqB,IACJD,GAAcE,UAAY,SAAmB9vG,GACzC,GAAoB,gBAATA,IAA8B,KAATA,EAC9B,KAAM,IAAI45B,WAAU,iDAGtB,IAAIm2E,GAASF,EAAe7vG,EAK5B,OAJK+vG,KACHA,EAASF,EAAe7vG,GAAQ,GAAIwuG,GAClCxuG,EAAM4vG,EAAcR,WAAYQ,EAActB,gBAE3CyB,EAIX,IAAIC,SAAe5yG,UAAW4wG,EAAiB5wG,OAAO8Q,UAUtD,OATA0hG,GAAc12E,WAAa,WAMvB,aALW97B,UAAW4wG,GACf5wG,OAAO8Q,MAAQ0hG,IAClBxyG,OAAO8Q,IAAM8hG,GAGVJ,GAGJA,M7FmqlBkB1yG,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQiE,EAAqBrE,GAE7C,cAAa,S8Ft4lBb,GAQO,QAASszG,GAAiB3gD,GAE7B,MADAphD,GAAII,KAAJ,qBAA8BghD,GACvB1wD,IACF22C,aAAa26D,IAAM5vG,IAAIkgB,KAAK,KAAf,YAAiC8uC,IAC9Cmd,MAAM,SAAC7rE,GACJC,EAAQC,MAAM,4CAInB,QAASqvG,GAAiB7gD,EAAKluD,GAAgC,GAAzB+wF,GAAyB,uDAAZie,CAChDhvG,IACF8uG,IAAM1jE,IAAN,YAAsB8iB,EAAOluD,EAAO+wF,GAnB5C,GAAAn1F,GAAA,YAAAA,GAAA,0BAIMkR,EAAMmiG,IAASP,UAAU,iBAEzBM,EAAa,MAiBbE,GACFhwG,IAAK2vG,EACLzjE,IAAK2jE,EAGMG,S9F+4lBcpzG,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,G+F36lB9B,QAAS0vG,GAAKvwG,GACZwwG,GAGLpzG,OAAOqzG,YAAYF,KAAKvwG,GAGrB,QAAS0wG,GAAU1wG,GAClB2wG,GACA9vG,EAAQqN,IAAR,eAA2BlO,EAA3B,KAEJuwG,EAAQvwG,EAAR,UAOG,QAASwd,GAAMxd,GAClB,GAAKwwG,EAAL,CAGA,GAAMI,GAAe5wG,EAAf,SACA6wG,EAAa7wG,EAAb,MACN5C,QAAOqzG,YAAYK,WAAWF,GAC9BxzG,OAAOqzG,YAAYK,WAAWD,GAC9BzzG,OAAOqzG,YAAYM,cAAc/wG,IAG9B,QAASgxG,GAAQhxG,EAAMixG,EAAcC,GACxC,GAAKV,EAAL,CAGA,GAAMI,GAAYK,GAAmBjxG,EAAnB,SACZ6wG,EAAUK,GAAiBlxG,EAAjB,OALoC,EAMpC5C,OAAOqzG,YAAYU,iBAAiBN,EANA,YAQhDN,EAAKM,EAET,KACIzzG,OAAOqzG,YAAYO,QAAQhxG,EAAM4wG,EAAWC,GAC9C,MAAOjwG,MAGN,QAASwwG,GAAepxG,EAAM4wG,EAAWC,GAC5CG,EAAQhxG,EAAM4wG,EAAWC,GACzBtiG,EAAKvO,GACLwd,EAAMxd,GAGH,QAASuO,GAAKvO,GAAiC,GAA3BqqC,GAA2B,wDAAdgnE,IAAc,wDAClD,IAAKb,EAAL,CAGA,GAAIv1D,SAgBJ,OAdIA,GADAj7C,EACU5C,OAAOqzG,YAAYU,iBAAiBnxG,GAEpC5C,OAAOqzG,YAAYa,iBAAiB,WAE7CjnE,EAKMgnE,GACPp2D,EAAQQ,QAAQ,SAAA8f,GACZ16D,EAAQqN,IAAR,kBAA8BqtD,EAAMv7D,KAApC,IAA6Cu7D,MANjDtgB,EAAUA,EAAQ,GACdo2D,GACAxwG,EAAQqN,IAAR,kBAA8BlO,EAA9B,IAAuCi7C,IAOxCA,G/Fu2lBsBj6C,EAAuB,EAAI0vG,EAI3B1vG,EAAuB,EAAIowG,CAEvC,IAAIG,GAA2C50G,EAAoB,IACpF80E,EAAiB,WAAc,QAASC,GAAcpiE,EAAKtS,GAAK,GAAI20E,MAAeC,KAAeC,KAAgBC,QAAgB,KAAM,IAAK,GAAiCC,GAA7BC,EAAK1iE,EAAIk2C,OAAOnD,cAAmBuvB,GAAMG,EAAKC,EAAGz0D,QAAQizB,QAAoBmhC,EAAK/zE,KAAKm0E,EAAG3wE,QAAYpE,GAAK20E,EAAKj0E,SAAWV,GAA3D40E,OAAyE,MAAOhxE,GAAOixE,KAAWC,EAAKlxE,EAAO,QAAU,KAAWgxE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUriE,EAAKtS,GAAK,GAAI0S,MAAM+c,QAAQnd,GAAQ,MAAOA,EAAY,IAAIk2C,OAAOnD,WAAYxkD,QAAOyR,GAAQ,MAAOoiE,GAAcpiE,EAAKtS,EAAa,MAAM,IAAI48B,WAAU,4D+Fz7lBzkB43E,EAAoB1+E,cAAoB11B,OAAOqzG,YACtDgB,EAAY3+E,KAAa11B,OAAO4Z,SAASwC,OAAOpC,QAAQ,oBAAsB,EAC9Eo5F,EAAcgB,GAAqBC,EACnCd,EAAUH,GAAepzG,OAAO4Z,SAASwC,OAAOpC,QAAQ,uBAAyB,I/F8gmB1Dla,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIujE,GAAsCvjE,EAAoB,GAC1DwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEwxC,EAA6C/0G,EAAoB,KACtFmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IgG1hmBjP20F,EAAW,SAACp2F,GAAD,MACb,mBAAC,IAAD,GACI8gD,UAAU,4BACVu1C,MAAQC,IAAK,UACbC,SAAS,UACLv2F,IAIZo2F,GAASxO,cACL4O,eAAcA,GAOHJ,OhG8hmBT,SAAU50G,EAAQiE,EAAqBrE,GAE7C,YiGljmBe,SAASq1G,GAAe1+E,GACnC,SAAI5jB,MAAM+c,QAAQ6G,KAAaA,EAAS51B,SAC7B41B,EAASnG,MAAM,SAAAyG,GAAA,OAA6C,IAArCzJ,IAAkB/S,QAAQwc,KAJhE,kBjGokmBM,SAAU72B,EAAQD,EAASH,GAEjC,YkG1jmBA,IAAI2zF,GAAU,EAAQ,IAElB2hB,EAAgB,EAAQ,KACxBC,EAAiB,EAAQ,KACzBC,EAAqB,EAAQ,KAC7BC,EAAa,EAAQ,KACrBC,EAAoB,EAAQ,KAC5BC,EAAe,EAAQ,IACvBC,EAAiB,EAAQ,KACzBC,EAAe,EAAQ,KAEvBC,EAAY,EAAQ,KAGpBtzG,GAFU,EAAQ,GAEFmzG,EAAanzG,eAC7BuzG,EAAgBJ,EAAaI,cAC7BC,EAAeL,EAAaK,aAS5BC,EAAWtiB,EAWXuiB,GAIF52F,UACEyR,IAAKukF,EAAcvkF,IACnB+tB,QAASw2D,EAAcx2D,QACvB4E,MAAO4xD,EAAc5xD,MACrByyD,QAASb,EAAca,QACvB52F,KAAMu2F,GAGRr2F,UAAW81F,EACXnyC,cAAeoyC,EAEfhzG,cAAeA,EACfwzG,aAAcA,EACd9O,eAAgByO,EAAazO,eAI7B7jC,UAAWuyC,EACXQ,YAAaX,EAAWW,YACxBL,cAAeA,EACfM,YAAa,SAAUC,GAErB,MAAOA,IAKTC,IAAKb,EAEL14F,QAAS64F,EAGTI,SAAUA,EAGZ71G,GAAOD,QAAU+1G,GlG2kmBX,SAAU91G,EAAQD,EAASH,GAEjC,YmGjpmBA,SAASksB,GAAmBC,GAK1B,IAAK,GAJDC,GAAW1a,UAAU3Q,OAAS,EAE9BoR,EAAU,yBAA2Bga,EAAO,6EAAoFA,EAE3HE,EAAS,EAAGA,EAASD,EAAUC,IACtCla,GAAW,WAAama,mBAAmB5a,UAAU2a,EAAS,GAGhEla,IAAW,gHAEX,IAAIhO,GAAQ,GAAIpC,OAAMoQ,EAItB,MAHAhO,GAAMd,KAAO,sBACbc,EAAM4nB,YAAc,EAEd5nB,EAGR/D,EAAOD,QAAU+rB,GnGyqmBX,SAAU9rB,EAAQD,EAASH,GAEjC,YoGjrmBA,SAASw2G,GAAY1+F,GASnB,WAAO,KAAAA,EAAO6M,IAGhB,QAAS8xF,GAAY3+F,GASnB,WAAO,KAAAA,EAAOtT,IAxChB,GAAImvF,GAAU,EAAQ,IAElBoE,EAAoB,EAAQ,IAI5B32F,GAFU,EAAQ,GACE,EAAQ,KACXF,OAAOC,UAAUC,gBAElCklG,EAAqB,EAAQ,KAE7BoQ,GACFlyG,KAAIA,EACJmgB,KAAIA,EACJgyF,QAAOA,EACPC,UAASA,GA6EPjB,EAAe,SAAUlzG,EAAM+B,EAAKmgB,EAAK1E,EAAMK,EAAQu2F,EAAOj4F,GA2DhE,OAxDE+nF,SAAUL,EAGV7jG,KAAMA,EACN+B,IAAKA,EACLmgB,IAAKA,EACL/F,MAAOA,EAGPgoF,OAAQiQ,GAsDZlB,GAAanzG,cAAgB,SAAUC,EAAMqV,EAAQ0H,GACnD,GAAI+4E,GAGA35E,KAEApa,EAAM,KACNmgB,EAAM,IAIV,IAAc,MAAV7M,EAAgB,CACd0+F,EAAY1+F,KACd6M,EAAM7M,EAAO6M,KAEX8xF,EAAY3+F,KACdtT,EAAM,GAAKsT,EAAOtT,cAGbsT,EAAO6+F,QAA8B7+F,EAAO6+F,gBAC1C7+F,EAAO8+F,UAAgC9+F,EAAO8+F,QAEvD,KAAKre,IAAYzgF,GACX1W,EAAeb,KAAKuX,EAAQygF,KAAcme,EAAet1G,eAAem3F,KAC1E35E,EAAM25E,GAAYzgF,EAAOygF,IAO/B,GAAIkO,GAAiB/0F,UAAU3Q,OAAS,CACxC,IAAuB,IAAnB0lG,EACF7nF,EAAMY,SAAWA,MACZ,IAAIinF,EAAiB,EAAG,CAE7B,IAAK,GADDC,GAAa3zF,MAAM0zF,GACdpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAClCqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAOhCue,GAAMY,SAAWknF,EAInB,GAAIjkG,GAAQA,EAAK+jG,aAAc,CAC7B,GAAIA,GAAe/jG,EAAK+jG,YACxB,KAAKjO,IAAYiO,YACX5nF,EAAM25E,KACR35E,EAAM25E,GAAYiO,EAAajO,IAiBrC,MAAOod,GAAalzG,EAAM+B,EAAKmgB,EAAK1E,EAAMK,EAAQy3E,EAAkBp3E,QAAS/B,IAO/E+2F,EAAaI,cAAgB,SAAUtzG,GACrC,GAAIsvG,GAAU4D,EAAanzG,cAAcqhB,KAAK,KAAMphB,EAOpD,OADAsvG,GAAQtvG,KAAOA,EACRsvG,GAGT4D,EAAamB,mBAAqB,SAAUC,EAAYC,GAGtD,MAFiBrB,GAAaoB,EAAWt0G,KAAMu0G,EAAQD,EAAWpyF,IAAKoyF,EAAWE,MAAOF,EAAWG,QAASH,EAAWnQ,OAAQmQ,EAAWn4F,QAS7I+2F,EAAaK,aAAe,SAAUn2F,EAAS/H,EAAQ0H,GACrD,GAAI+4E,GAGA35E,EAAQ+0E,KAAY9zE,EAAQjB,OAG5Bpa,EAAMqb,EAAQrb,IACdmgB,EAAM9E,EAAQ8E,IASdkyF,GAPOh3F,EAAQo3F,MAINp3F,EAAQq3F,QAGTr3F,EAAQ+mF,OAEpB,IAAc,MAAV9uF,EAAgB,CACd0+F,EAAY1+F,KAEd6M,EAAM7M,EAAO6M,IACbkyF,EAAQ9e,EAAkBp3E,SAExB81F,EAAY3+F,KACdtT,EAAM,GAAKsT,EAAOtT,IAIpB,IAAIgiG,EACA3mF,GAAQpd,MAAQod,EAAQpd,KAAK+jG,eAC/BA,EAAe3mF,EAAQpd,KAAK+jG,aAE9B,KAAKjO,IAAYzgF,GACX1W,EAAeb,KAAKuX,EAAQygF,KAAcme,EAAet1G,eAAem3F,cACtEzgF,EAAOygF,aAA2BiO,EAEpC5nF,EAAM25E,GAAYiO,EAAajO,GAE/B35E,EAAM25E,GAAYzgF,EAAOygF,IAQjC,GAAIkO,GAAiB/0F,UAAU3Q,OAAS,CACxC,IAAuB,IAAnB0lG,EACF7nF,EAAMY,SAAWA,MACZ,IAAIinF,EAAiB,EAAG,CAE7B,IAAK,GADDC,GAAa3zF,MAAM0zF,GACdpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAClCqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAEhCue,GAAMY,SAAWknF,EAGnB,MAAOiP,GAAa91F,EAAQpd,KAAM+B,EAAKmgB,EAAK1E,EAAMK,EAAQu2F,EAAOj4F,IAUnE+2F,EAAazO,eAAiB,SAAUpjG,GACtC,MAAyB,gBAAXA,IAAkC,OAAXA,GAAmBA,EAAO6iG,WAAaL,GAG9ElmG,EAAOD,QAAUw1G,GpGqtmBX,SAAUv1G,EAAQD,EAASH,GAEjC,YqGxinBAI,GAAOD,QAAU,EAAQ,MrGgjnBnB,SAAUC,EAAQD,EAASH,GAEjC,YsGpinBA,SAASm3G,GAAU1yG,EAAO2yG,GACxB,OAAQ3yG,EAAQ2yG,KAAaA,EAL/B,GAAI3xC,GAAiB,EAAQ,GAQzB4xC,GANY,EAAQ,IAWtBC,kBAAmB,EACnBC,kBAAmB,EACnBC,kBAAmB,EACnBC,2BAA4B,GAC5BC,6BAA8B,GA8B9BC,wBAAyB,SAAUC,GACjC,GAAIC,GAAYR,EACZS,EAAaF,EAAkBE,eAC/BC,EAAyBH,EAAkBG,2BAC3CC,EAAoBJ,EAAkBI,sBACtCC,EAAmBL,EAAkBK,qBACrCC,EAAqBN,EAAkBM,sBAEvCN,GAAkBO,mBACpBlyC,EAAYmyC,4BAA4Bn3G,KAAK22G,EAAkBO,kBAGjE,KAAK,GAAI5f,KAAYuf,GAAY,CAC7B7xC,EAAYoyC,WAAWj3G,eAAem3F,IAAgV9yB,EAAe,KAAM8yB,EAE7Y,IAAI+f,GAAa/f,EAASnjE,cACtBmjF,EAAaT,EAAWvf,GAExBigB,GACFC,cAAeH,EACfI,mBAAoB,KACpB/6E,aAAc46D,EACdogB,eAAgB,KAEhBC,gBAAiBzB,EAAUoB,EAAYV,EAAUP,mBACjDuB,gBAAiB1B,EAAUoB,EAAYV,EAAUN,mBACjDuB,gBAAiB3B,EAAUoB,EAAYV,EAAUL,mBACjDuB,wBAAyB5B,EAAUoB,EAAYV,EAAUJ,4BACzDuB,0BAA2B7B,EAAUoB,EAAYV,EAAUH,8BAQ7D,IANEc,EAAaK,gBAAkBL,EAAaM,gBAAkBN,EAAaQ,2BAA6B,GAAuLvzC,EAAe,KAAM8yB,GAMlTyf,EAAkB52G,eAAem3F,GAAW,CAC9C,GAAIkgB,GAAgBT,EAAkBzf,EACtCigB,GAAaC,cAAgBA,EAM3BV,EAAuB32G,eAAem3F,KACxCigB,EAAaE,mBAAqBX,EAAuBxf,IAGvD0f,EAAiB72G,eAAem3F,KAClCigB,EAAa76E,aAAes6E,EAAiB1f,IAG3C2f,EAAmB92G,eAAem3F,KACpCigB,EAAaG,eAAiBT,EAAmB3f,IAGnDtyB,EAAYoyC,WAAW9f,GAAYigB,MAMrCS,EAA4B,gLAgB5BhzC,GAEFE,kBAAmB,eACnB+yC,oBAAqB,iBAErBD,0BAA2BA,EAC3BE,oBAAqBF,EAA4B,+CA8BjDZ,cAWAe,wBAA8F,KAK9FhB,+BAMAD,kBAAmB,SAAUM,GAC3B,IAAK,GAAIp4G,GAAI,EAAGA,EAAI4lE,EAAYmyC,4BAA4Br3G,OAAQV,IAElE,MAD0B4lE,EAAYmyC,4BAA4B/3G,IAC1Co4G,GACtB,OAAM,CAGV,QAAM,GAGRzjB,UAAWqiB,EAGbj3G,GAAOD,QAAU8lE,GtGyjnBX,SAAU7lE,EAAQD,EAASH,GAEjC,YuGtvnBA,SAASq5G,KACPC,EAASD,WAAWt6F,KAAMA,KAAK+zE,iBAVjC,GAAIwmB,GAAW,EAAQ,KAanBrmB,GAZuB,EAAQ,IAErB,EAAQ,IAuBpBsmB,eAAgB,SAAUC,EAAkBnnB,EAAaonB,EAAYC,EAAmB76F,EAAS86F,GAO/F,GAAIC,GAASJ,EAAiBD,eAAelnB,EAAaonB,EAAYC,EAAmB76F,EAAS86F,EASlG,OARIH,GAAiB1mB,iBAA2D,MAAxC0mB,EAAiB1mB,gBAAgBnuE,KACvE0tE,EAAYwnB,qBAAqB1mB,QAAQkmB,EAAYG,GAOhDI,GAOTE,YAAa,SAAUN,GACrB,MAAOA,GAAiBM,eAS1BC,iBAAkB,SAAUP,EAAkBQ,GAM5CV,EAASW,WAAWT,EAAkBA,EAAiB1mB,iBACvD0mB,EAAiBO,iBAAiBC,IAiBpCE,iBAAkB,SAAUV,EAAkBW,EAAa9nB,EAAaxzE,GACtE,GAAIu7F,GAAcZ,EAAiB1mB,eAEnC,IAAIqnB,IAAgBC,GAAev7F,IAAY26F,EAAiBzzD,SAAhE,CAoBA,GAAIs0D,GAAcf,EAASgB,iBAAiBF,EAAaD,EAErDE,IACFf,EAASW,WAAWT,EAAkBY,GAGxCZ,EAAiBU,iBAAiBC,EAAa9nB,EAAaxzE,GAExDw7F,GAAeb,EAAiB1mB,iBAA2D,MAAxC0mB,EAAiB1mB,gBAAgBnuE,KACtF0tE,EAAYwnB,qBAAqB1mB,QAAQkmB,EAAYG,KAiBzDtmB,yBAA0B,SAAUsmB,EAAkBnnB,EAAaE,GAC7DinB,EAAiBjmB,qBAAuBhB,GAW5CinB,EAAiBtmB,yBAAyBb,KAU9CjyF,GAAOD,QAAU8yF,GvGgxnBX,SAAU7yF,EAAQD,EAASH,GAEjC,YwGt5nBA,SAASu6G,GAAmBC,GAC1B,GAAKC,EAAL,CAGA,GAAIzuE,GAAOwuE,EAAKxuE,KACZxsB,EAAWg7F,EAAKh7F,QACpB,IAAIA,EAASze,OACX,IAAK,GAAIV,GAAI,EAAGA,EAAImf,EAASze,OAAQV,IACnCq6G,EAAiB1uE,EAAMxsB,EAASnf,GAAI,UAEhB,OAAbm6G,EAAKG,KACdC,EAAa5uE,EAAMwuE,EAAKG,MACF,MAAbH,EAAKK,MACdC,EAAe9uE,EAAMwuE,EAAKK,OAoB9B,QAASE,GAAqBC,EAASC,GACrCD,EAAQp1C,WAAWs1C,aAAaD,EAAQjvE,KAAMgvE,GAC9CT,EAAmBU,GAGrB,QAASE,GAAWC,EAAYC,GAC1BZ,EACFW,EAAW57F,SAASve,KAAKo6G,GAEzBD,EAAWpvE,KAAK/oC,YAAYo4G,EAAUrvE,MAI1C,QAASsvE,GAAUd,EAAMG,GACnBF,EACFD,EAAKG,KAAOA,EAEZC,EAAaJ,EAAKxuE,KAAM2uE,GAI5B,QAASY,GAAUf,EAAMK,GACnBJ,EACFD,EAAKK,KAAOA,EAEZC,EAAeN,EAAKxuE,KAAM6uE,GAI9B,QAAS79E,KACP,MAAOje,MAAKitB,KAAKwvE,SAGnB,QAASC,GAAYzvE,GACnB,OACEA,KAAMA,EACNxsB,YACAm7F,KAAM,KACNE,KAAM,KACN79E,SAAUA,GA9Fd,GAAI0+E,GAAgB,EAAQ,KACxBd,EAAe,EAAQ,KAEvBe,EAAqC,EAAQ,KAC7Cb,EAAiB,EAAQ,KAgBzBL,EAAiC,mBAAbn4G,WAA6D,gBAA1BA,UAASs5G,cAAkD,mBAAd75D,YAA4D,gBAAxBA,WAAUwpC,WAA0B,aAAa5mD,KAAKod,UAAUwpC,WAmBxMmvB,EAAmBiB,EAAmC,SAAU/1C,EAAY40C,EAAMqB,GAhCpD,KAuC5BrB,EAAKxuE,KAAKk4B,UAxCQ,IAwCoCs2C,EAAKxuE,KAAKk4B,UAAuE,WAArCs2C,EAAKxuE,KAAKwvE,SAASpmF,gBAAyD,MAA1BolF,EAAKxuE,KAAK8vE,cAAwBtB,EAAKxuE,KAAK8vE,eAAiBJ,EAAcf,OACjOJ,EAAmBC,GACnB50C,EAAWm2C,aAAavB,EAAKxuE,KAAM6vE,KAEnCj2C,EAAWm2C,aAAavB,EAAKxuE,KAAM6vE,GACnCtB,EAAmBC,KA+CvBiB,GAAYf,iBAAmBA,EAC/Be,EAAYV,qBAAuBA,EACnCU,EAAYN,WAAaA,EACzBM,EAAYH,UAAYA,EACxBG,EAAYF,UAAYA,EAExBn7G,EAAOD,QAAUs7G,GxG67nBX,SAAUr7G,EAAQD,EAASH,GAEjC,YyG37nBA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAtHvFpE,EAAQ0D,cACR1D,EAAQ67G,oBAAsB77G,EAAQ87G,YAAc97G,EAAQ+7G,eAAiB/7G,EAAQg8G,sBAAwBh8G,EAAQi8G,cAAgBj8G,EAAQk8G,iBAAmBl8G,EAAQkpB,MAAQlpB,EAAQm8G,YAAcn8G,EAAQo8G,cAAgBp8G,EAAQkjE,UAAYljE,EAAQq8G,eAAiBr8G,EAAQs8G,cAAgBt8G,EAAQwnG,aAAexnG,EAAQu8G,UAAYv8G,EAAQw8G,aAAex8G,EAAQy8G,UAAYz8G,EAAQ08G,QAAU18G,EAAQ28G,MAAQ38G,EAAQ48G,SAAW58G,EAAQ68G,WAAa78G,EAAQ88G,cAAgB98G,EAAQmtG,WAAantG,EAAQ+8G,UAAY/8G,EAAQg9G,KAAOh9G,EAAQi9G,aAE3hB,IAAIC,GAAc,EAAQ,GAE1Bn8G,QAAOsC,eAAerD,EAAS,gBAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAO05G,GAAY1V,eAIvB,IAAI2V,GAAc,EAAQ,IAE1Bp8G,QAAOsC,eAAerD,EAAS,iBAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAO25G,GAAYf,iBAGvBr7G,OAAOsC,eAAerD,EAAS,eAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAO25G,GAAYhB,cAIvB,IAAIiB,GAAgB,EAAQ,GAE5Br8G,QAAOsC,eAAerD,EAAS,iBAC7BuD,YAAWA,EACXC,IAAK,WACH,MAAO45G,GAAcnB,gBAIzB,IAAIoB,GAAW,EAAQ,KAEnBC,EAAW7iC,EAAuB4iC,GAElCE,EAAS,EAAQ,KAEjBC,EAAS/iC,EAAuB8iC,GAEhCE,EAAc,EAAQ,KAEtBC,EAAcjjC,EAAuBgjC,GAErCE,EAAe,EAAQ,KAEvBC,EAAenjC,EAAuBkjC,GAEtCE,EAAkB,EAAQ,KAE1BC,EAAkBrjC,EAAuBojC,GAEzCE,EAAe,EAAQ,KAEvBC,EAAevjC,EAAuBsjC,GAEtCE,EAAa,EAAQ,KAErBC,EAAazjC,EAAuBwjC,GAEpCE,EAAU,EAAQ,KAElBC,EAAU3jC,EAAuB0jC,GAEjCE,EAAY,EAAQ,KAEpBC,EAAY7jC,EAAuB4jC,GAEnCE,EAAc,EAAQ,KAEtBC,EAAc/jC,EAAuB8jC,GAErCE,EAAiB,EAAQ,KAEzBC,EAAiBjkC,EAAuBgkC,GAExCE,EAAc,EAAQ,KAEtBC,EAAcnkC,EAAuBkkC,GAErCE,EAAkB,EAAQ,KAE1BC,EAAkBrkC,EAAuBokC,GAEzCE,EAAmB,EAAQ,KAE3BC,EAAmBvkC,EAAuBskC,GAE1CE,EAAcxkC,EAAuB0iC,GAErC+B,EAAU,EAAQ,KAElBC,EAAU1kC,EAAuBykC,GAEjCE,EAAqB,EAAQ,KAE7BC,EAAqB5kC,EAAuB2kC,GAE5CE,EAA0B,EAAQ,KAElCC,EAA0B9kC,EAAuB6kC,GAEjDE,EAAmB,EAAQ,KAE3BC,EAAmBhlC,EAAuB+kC,GAE1CE,EAAgB,EAAQ,KAExBC,EAAgBllC,EAAuBilC,GAEvCE,EAAwB,EAAQ,KAEhCC,EAAwBplC,EAAuBmlC,EAInD5/G,GAAQi9G,OAASK,EAASjwD,QAE1BrtD,EAAQg9G,KAAOQ,EAAOnwD,QACtBrtD,EAAQ+8G,UAAYW,EAAYrwD,QAChCrtD,EAAQmtG,WAAayQ,EAAavwD,QAIlCrtD,EAAQ88G,cAAgBgB,EAAgBzwD,QACxCrtD,EAAQ68G,WAAamB,EAAa3wD,QAClCrtD,EAAQ48G,SAAWsB,EAAW7wD,QAC9BrtD,EAAQ28G,MAAQyB,EAAQ/wD,QAIxBrtD,EAAQ08G,QAAU4B,EAAUjxD,QAC5BrtD,EAAQy8G,UAAY+B,EAAYnxD,QAChCrtD,EAAQw8G,aAAekC,EAAerxD,QAItCrtD,EAAQu8G,UAAYqC,EAAYvxD,QAChCrtD,EAAQs8G,cAAgBwC,EAAgBzxD,QACxCrtD,EAAQq8G,eAAiB2C,EAAiB3xD,QAC1CrtD,EAAQkjE,UAAY+7C,EAAY5xD,QAChCrtD,EAAQkpB,MAAQi2F,EAAQ9xD,QACxBrtD,EAAQk8G,iBAAmBmD,EAAmBhyD,QAC9CrtD,EAAQg8G,sBAAwBuD,EAAwBlyD,QAIxDrtD,EAAQ+7G,eAAiB0D,EAAiBpyD,QAC1CrtD,EAAQ87G,YAAc6D,EAActyD,QACpCrtD,EAAQ67G,oBAAsBgE,EAAsBxyD,SzGwjoB9C,SAAUptD,EAAQD,EAASH,GAEjC,Y0GtsoBA,SAASigH,GAAavoC,GACpB,MAAOA,GAAO5rD,QAAQ,sBAAuB,QAG/C,QAASo0F,GAAgBC,GAQvB,IAPA,GAAIC,GAAe,GACfC,KACAC,KAEAj3F,SACAkY,EAAY,EACZg/E,EAAU,6CACPl3F,EAAQk3F,EAAQjO,KAAK6N,IACtB92F,EAAMoH,QAAU8Q,IAClB++E,EAAOr/G,KAAKk/G,EAAQvtG,MAAM2uB,EAAWlY,EAAMoH,QAC3C2vF,GAAgBH,EAAaE,EAAQvtG,MAAM2uB,EAAWlY,EAAMoH,SAG1DpH,EAAM,IACR+2F,GAAgB,UAChBC,EAAWp/G,KAAKooB,EAAM,KACA,OAAbA,EAAM,IACf+2F,GAAgB,OAChBC,EAAWp/G,KAAK,UACM,MAAbooB,EAAM,IACf+2F,GAAgB,QAChBC,EAAWp/G,KAAK,UACM,MAAbooB,EAAM,GACf+2F,GAAgB,MACM,MAAb/2F,EAAM,KACf+2F,GAAgB,MAGlBE,EAAOr/G,KAAKooB,EAAM,IAElBkY,EAAYg/E,EAAQh/E,SAQtB,OALIA,KAAc4+E,EAAQp/G,SACxBu/G,EAAOr/G,KAAKk/G,EAAQvtG,MAAM2uB,EAAW4+E,EAAQp/G,SAC7Cq/G,GAAgBH,EAAaE,EAAQvtG,MAAM2uB,EAAW4+E,EAAQp/G,WAI9Do/G,QAASA,EACTC,aAAcA,EACdC,WAAYA,EACZC,OAAQA,GAMZ,QAASE,GAAeL,GAGtB,MAFKM,GAAsBN,KAAUM,EAAsBN,GAAWD,EAAgBC,IAE/EM,EAAsBN,GAuB/B,QAASO,GAAaP,EAAS7kG,GAEH,MAAtB6kG,EAAQh6E,OAAO,KACjBg6E,EAAU,IAAMA,EAGlB,IAAIQ,GAAmBH,EAAeL,GAElCC,EAAeO,EAAiBP,aAChCC,EAAaM,EAAiBN,WAC9BC,EAASK,EAAiBL,MAGa,OAAvCH,EAAQh6E,OAAOg6E,EAAQp/G,OAAS,KAClCq/G,GAAgB,MAIgB,MAA9BE,EAAOA,EAAOv/G,OAAS,KACzBq/G,GAAgB,IAGlB,IAAI/2F,GAAQ/N,EAAS+N,MAAM,GAAIs0B,QAAO,IAAMyiE,EAAc,KAC1D,IAAa,MAAT/2F,EACF,MAAO,KAGT,IAAIu3F,GAAcv3F,EAAM,GACpBw3F,EAAoBvlG,EAAS2rB,OAAO25E,EAAY7/G,OAEpD,IAAI8/G,EAAmB,CAGrB,GAAmD,MAA/CD,EAAYz6E,OAAOy6E,EAAY7/G,OAAS,GAC1C,MAAO,KAKT8/G,GAAoB,IAAMA,EAG5B,OACEA,kBAAmBA,EACnBR,WAAYA,EACZS,YAAaz3F,EAAMzW,MAAM,GAAGme,IAAI,SAAU2mB,GACxC,MAAOA,IAAKqpE,mBAAmBrpE,MAKrC,QAASspE,GAAcb,GACrB,MAAOK,GAAeL,GAASE,WAGjC,QAASY,GAAUd,EAAS7kG,GAC1B,GAAI+N,GAAQq3F,EAAaP,EAAS7kG,EAClC,KAAK+N,EACH,MAAO,KAGT,IAAIg3F,GAAah3F,EAAMg3F,WACnBS,EAAcz3F,EAAMy3F,YAEpB/uF,IAMJ,OAJAsuF,GAAWvhE,QAAQ,SAAUoiE,EAAWzwF,GACtCsB,EAAOmvF,GAAaJ,EAAYrwF,KAG3BsB,EAOT,QAASqqF,GAAc+D,EAASpuF,GAC9BA,EAASA,KAaT,KAAK,GAXDovF,GAAmBX,EAAeL,GAElCG,EAASa,EAAiBb,OAE1Bc,EAAa,EACb9lG,EAAW,GACX+lG,EAAa,EAEb7rF,SACA0rF,SACAI,SACKjhH,EAAI,EAAGuxC,EAAM0uE,EAAOv/G,OAAQV,EAAIuxC,IAAOvxC,EAC9Cm1B,EAAQ8qF,EAAOjgH,GAED,MAAVm1B,GAA2B,OAAVA,GACnB8rF,EAAavuG,MAAM+c,QAAQiC,EAAOwvF,OAASxvF,EAAOwvF,MAAMF,KAAgBtvF,EAAOwvF,MAE/D,MAAdD,GAAsBF,EAAa,MAA2II,EAAYh0D,UAASA,GAEnL,MAAd8zD,IAAoBhmG,GAAYmmG,UAAUH,KAC3B,MAAV9rF,EACT4rF,GAAc,EACK,MAAV5rF,EACT4rF,GAAc,EACe,MAApB5rF,EAAM2Q,OAAO,IACtB+6E,EAAY1rF,EAAM45E,UAAU,GAC5BkS,EAAavvF,EAAOmvF,GAEJ,MAAdI,GAAsBF,EAAa,MAA+II,EAAYh0D,UAASA,GAEvL,MAAd8zD,IAAoBhmG,GAAYgR,mBAAmBg1F,KAEvDhmG,GAAYka,CAIhB,OAAOla,GAASwQ,QAAQ,OAAQ,KAhNlC3rB,EAAQ0D,cACR1D,EAAQqgH,eAAiBA,EACzBrgH,EAAQugH,aAAeA,EACvBvgH,EAAQ6gH,cAAgBA,EACxB7gH,EAAQ8gH,UAAYA,EACpB9gH,EAAQi8G,cAAgBA,CAExB,IAAIsF,GAAa,EAAQ,IAErBF,EAEJ,SAAgCj9G,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,IAF9Cm9G,GAuDrCjB,EAAwBv/G,OAAOid,OAAO,O1G22oBpC,SAAU/d,EAAQD,EAASH,G2G76oBjC,GAAI2hH,GAAW,EAAQ,KACnBC,EAAmB,EAAQ,KAC3BC,EAAW,EAAQ,KACnBC,EAAsB,EAAQ,KAmB9BC,EAAeF,EAAS,SAASG,GACnC,GAAIC,GAASN,EAASK,EAAQF,EAC9B,OAAQG,GAAOlhH,QAAUkhH,EAAO,KAAOD,EAAO,GAC1CJ,EAAiBK,OAIvB7hH,GAAOD,QAAU4hH,G3Go7oBX,SAAU3hH,EAAQiE,EAAqBrE,GAE7C,YAqEA,SAASsE,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,E4GpgpBpM,QAAS29G,KAAqB,GAAdz5E,GAAc,uDAAR05E,QAKzB,OAJUC,GAAc35E,GAOrB,QAAS45E,KACZ,OAD4C,uDAARF,YACrBr9G,IAAQwD,KAAOg6G,IAAeC,IAG1C,QAAS7lD,KAAkC,gEAAlBhkD,EAAkB,EAAlBA,UACtBi6C,EAAMuvD,EAAOxpG,EACnB,OAAO08E,KAAQzxF,IAAIgvD,GACd6iC,WAAWgtB,GACXC,IAAIl8F,KACJ1kB,QAAQ6gH,GACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,IAEV8Q,MAAM,SAAC7rE,GAGJ,MAFAsN,GAAIpN,MAAJ,kBAA4BwuD,EAAO1uD,EAAIooD,OAAQpoD,EAAI2+G,eACnDC,IAAgBn4E,KAAKo4E,IAA2B7+G,GACzC0+G,IAASh/G,IAAIgvD,GACfphB,KAAK,SAAAz5B,GACF,MAAKA,KACDvG,EAAIpN,MAAM,uCACak+G,EAAkB3pG,Q5G0ipBjE,QAAS+pD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qC6GpipBhH,QAAS8lF,KAAyE,gEAAzDt6C,EAAyD,EAAzDA,QAAyD,IAAhDjC,oBAAgD,EAArC,MAAqC,MAA9B9O,mBAA8B,EAApB,YAAoB,EAC1E5/C,EAASkrG,EAIb,OAHIv6C,KAAYw6C,GAAax7G,UACzBqQ,EAASorG,IAEb,GAAUC,YAAcrrG,EAAOsE,SAAWtE,EAAOsrG,SAAW1rD,EAA5D,IAAuE8O,EAG3E,QAAS68C,GAAT,GAAgE,GAA9BzqG,GAA8B,EAA9BA,QAAS6vD,EAAqB,EAArBA,QAASjC,EAAY,EAAZA,SAC5C1uD,EAASkrG,EAIb,OAHIv6C,KAAYw6C,GAAax7G,UACzBqQ,EAASorG,IAEG,OAAZtqG,EACUmqG,GAAgBt6C,UAASjC,aAAnC,sBAAoE5tD,EAGxE,GAAUd,EAAOwrG,uBAAyB5rG,aAAYA,MAAK6rG,IAAY3qG,aAGpE,QAAS4qG,KAAkE,oEAAtD/6C,mBAAsD,EAA5Cw6C,GAAaz7G,KAA+B,MAAzBg/D,oBAAyB,EAAd,MAAc,EACxE7T,EAASowD,GAAgBt6C,UAASjC,aAAlC,4BAIN,OAFAj1D,IAAIupB,MAAJ,cAAwB63B,GAEjByiC,YAAQziC,GACV6iC,WAAWiuB,IACXhB,IAAIl8F,KACJgrB,KAAK,YAAc,GAAXytB,GAAW,EAAXA,KACC0kD,EAAS1kD,EAAK2kD,QAAQ,GACtBn6F,GACF0hD,SAAUw4C,EAAOx4C,SACjB9C,UAAWs7C,EAAOt7C,UAItB,OADAu6C,KAAS9yE,IAAI8iB,EAAKnpC,GACXA,IAEVsmD,MAAM,SAAC7rE,GAEJ,MADAsN,IAAIpN,MAAM,aAAcF,EAAI2+G,eACrBD,IAASh/G,IAAIgvD,KAIzB,QAAS6V,KAAwF,gEAAzE5vD,EAAyE,EAAzEA,QAAyE,IAAhE6vD,mBAAgE,EAAtDw6C,GAAaz7G,KAAyC,EAAnCkwD,EAAmC,EAAnCA,QAAS8O,EAA0B,EAA1BA,SAAUxpD,EAAgB,EAAhBA,QAC9E21C,EAAM0wD,GAAwBzqG,UAAS6vD,UAASjC,YAGtD,OAFAj1D,IAAIupB,MAAJ,iBAA2B63B,GAEpByiC,IAAQzxF,IAAIgvD,GACd6iC,WAAWiuB,IACXhB,IAAIl8F,KACJgrB,KAAK,YAAc,GAAXytB,GAAW,EAAXA,KACG2kD,EAAY3kD,EAAZ2kD,OACR,IAAIA,EAAS,CACT,GAAMD,GAASC,EAAQ,GACjBv7C,EAAYs7C,EAAOt7C,UAAUr3C,IAAI,SAAC4B,GAAD,MAAejU,IAASklG,uBAAuBjxF,EAAU+kC,EAAS8O,EAAUxpD,IAEnH,OADA2lG,KAAS9yE,IAAI8iB,EAAKyV,GACXA,EANK,GASRy7C,GAAS7kD,EAAT6kD,IACR,IAAIA,EAAM,CACN,GAAMC,GAAgBD,EAAK9yF,IAAI,eAAG80B,GAAH,EAAGA,IAAH,OAAennC,IAASqlG,mBAAmBl+D,EAAMjtC,IAEhF,OADA+pG,KAAS9yE,IAAI8iB,EAAKmxD,GACXA,KAGdh0C,MAAM,SAAC7rE,GAEJ,MADAsN,IAAIpN,MAAM,gBAAiBF,EAAI2+G,eACxBD,IAASh/G,IAAIgvD,KAIzB,QAAS4W,KAA2H,gEAA7GC,EAA6G,EAA7GA,aAA6G,IAA/F5wD,mBAA+F,EAArF,KAAqF,MAA/E6vD,mBAA+E,EAArEw6C,GAAaz7G,KAAwD,MAAlDkwD,mBAAkD,EAAxC,YAAwC,MAA3B8O,oBAA2B,EAAhB,QAAgB,CACvI,IAAgB,OAAZ5tD,EAAkB,CAClB,GAAM+5C,GAASowD,GAAgBt6C,UAASjC,aAAlC,cAA2DgD,CAIjE,OAFAj4D,IAAIupB,MAAJ,iBAA2B63B,GAEpByiC,IAAQzxF,IAAIgvD,GACd6iC,WAAWiuB,IACXhB,IAAIl8F,KACJgrB,KAAK,YAAc,GAAXytB,GAAW,EAAXA,KACG2kD,EAAY3kD,EAAZ2kD,OACR,IAAIA,EAAS,CACT,GAAMD,GAASC,EAAQ,GACjBhxF,EAAWjU,GAASklG,uBAAuBF,EAAOt7C,UAAU,GAAI1Q,EAAS8O,EAE/E,OADAm8C,KAAS9yE,IAAI8iB,EAAKhgC,GACXA,KAGdm9C,MAAM,SAAC7rE,GAEJ,MADAsN,IAAIpN,MAAM,eAAgBF,EAAI2+G,eACvBD,IAASh/G,IAAIgvD,KAGhC,MAAO1wD,SAAQC,UCnJZ,QAAS8hH,GAAoBtsG,GACjC,GAAMusG,GAAelD,mBAAmBrpG,EACvC,OAAIwsG,IAAYv/E,KAAKs/E,GACVA,EAAaE,YAAY,GAAGnnF,SAAS,IAEzC1Q,mBAAmB23F,EAAan4F,QAAQ,kEAAkE,KCiD9G,QAASg5E,KAOR,GAPsBxqF,GAOtB,uDAP8B,GAAI9B,EAOlC,yEANJ4rG,EAMI,EANJA,aACA/wG,EAKI,EALJA,YAKI,IAJJgxG,sBAII,EAJSl/G,IAAOyE,QAIhB,EAHJ6sB,EAGI,EAHJA,QACAxb,EAEI,EAFJA,KACAsoE,EACI,EADJA,EAEA,IAAqB,IAAjBjpE,EAAMvZ,OACN,MAAOkB,MAAQG,OAAO,GAAIL,OAAM,iCAEpC,IAAMuiH,GAAiBN,EAAoB1pG,EAC3C,KAAKgqG,EACD,MAAOriH,MAAQG,OAAO,GAAIL,OAAM,0BAEpC,IAAMwiH,GAAK7sG,cACP8sG,EAAGF,EACHzlE,KAAM,EACNulE,eACA/wG,cACAgxG,aACA5tF,UACAxb,OACAsoE,KACAkhC,mBAAkBA,IAEhB9xD,EAAMA,GAAGowD,GAAcvqG,GAAUV,GAAO8wF,MAAMjE,QAAU4f,CAE9D,OAAOnvB,KAAQzxF,IAAIgvD,GACd8vD,IAAIl8F,KACJ1kB,QAAQ6gH,IACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,GACR,SAAC/6D,GACA,MAAmB,OAAfA,EAAIooD,OACGq4D,GAEJ/B,IAASh/G,IAAIgvD,KAIzB,QAAS2xC,KAOR,GAPyBhqF,GAOzB,uDAPiC,GAAI9B,EAOrC,yEANJ4rG,EAMI,EANJA,aACA/wG,EAKI,EALJA,YAKI,IAJJgxG,sBAII,EAJSl/G,IAAOyE,QAIhB,EAHJ6sB,EAGI,EAHJA,QACAxb,EAEI,EAFJA,KACAsoE,EACI,EADJA,EAEA,IAAqB,IAAjBjpE,EAAMvZ,OACN,MAAOkB,MAAQG,OAAO,GAAIL,OAAM,qCAGpC,IAAMuiH,GAAiBN,EAAoB1pG,EAC3C,KAAKgqG,EACD,MAAOriH,MAAQG,OAAO,GAAIL,OAAM,0BAEpC,IAAMwiH,GAAK7sG,cACP8sG,EAAGF,EACHzlE,KAAM,GACNulE,eACA/wG,cACAgxG,aACA5tF,UACAxb,OACAsoE,KACAkhC,mBAAkBA,IAEhB9xD,EAAMA,GAAGowD,GAAcvqG,GAAUV,GAAO8wF,MAAM/rF,OAAS0nG,CAE7D,OAAOnvB,KAAQzxF,IAAIgvD,GACd8vD,IAAIl8F,KACJ1kB,QAAQ6gH,IACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,GACR,SAAC/6D,GACA,MAAmB,OAAfA,EAAIooD,OACGq4D,GAEJ/B,IAASh/G,IAAIgvD,KAIzB,QAASvC,GAAkB53C,GAC9B,GAAMm6C,GAAMA,GAAGowD,GAAcvqG,GAAUV,GAAO8wF,MAAM+b,QAAQrqE,IAC5D,OAAO86C,KAAQzxF,IAAIgvD,GACd8vD,IAAIl8F,KACJ1kB,QAAQ6gH,IACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,GACR,SAAC/6D,GACA,MAAmB,OAAfA,EAAIooD,UAGDs2D,IAASh/G,IAAIgvD,KAKzB,QAASqyC,GAAiB4f,EAAMpsG,GAAoD,gEAA1CqmC,EAA0C,EAA1CA,KAAMxpB,EAAoC,EAApCA,SAAUovE,EAA0B,EAA1BA,OAAQC,EAAkB,EAAlBA,UAC/D6f,EAAK7sG,cACPmnC,OACAxpB,WACAovE,SACAC,cAEE/xC,EAAMA,GAAGowD,GAAcvqG,GAAUV,GAAO8wF,MAAM+b,QAAQrqE,KAAtD,IAA8DhuB,mBAAmBs4F,GAAjF,YAAkGL,CACxG,OAAOnvB,KAAQzxF,IAAIgvD,GACd8vD,IAAIl8F,KACJ1kB,QAAQ6gH,IACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,GACR,SAAC/6D,GACA,MAAmB,OAAfA,EAAIooD,OACGq4D,GAEJ/B,IAASh/G,IAAIgvD,KCnKzB,QAASkyD,KACZ,GAAMlyD,GAASwwD,YAAcrrG,GAAOqV,YAA9B,WAEN,OAAOioE,aAAQziC,GACV8vD,IAAIl8F,KACJgrB,KAAK,SAACm+B,GAAD,MAAcA,GAAS1Q,MAAM,WAC/B,KAAM,IAAIj9D,OAAM,wChH2mqB5B,QAAS8tB,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GiHvmqBnL,QAASmyG,GAAT,EAAsJC,GAAc,GAA7IC,GAA6I,EAA7IA,MAAOt6C,EAAsI,EAAtIA,SAAUrvD,EAA4H,EAA5HA,GAAIE,EAAwH,EAAxHA,QAAS82D,EAA+G,EAA/GA,SAAU4yC,EAAqG,EAArGA,WAAYC,EAAyF,EAAzFA,cAAevtD,EAA0E,EAA1EA,MAA0E,IAAnEljB,iBAAmE,EAA3D38B,GAAOqtG,aAAoD,MAAtC3sG,kBAAsC,EAA7B4sG,GAAO59G,KAAsB,EACjK69G,EAAaL,EAAQA,EAAMh0F,KAAK,KAAO,GACvCs0F,EAA8B,KAAb56C,EAAmB5yD,GAAO4yD,SAAW,KACtD66C,EAAkBN,EAAaA,EAAWj0F,KAAK,KAAO,GACtDw0F,EAAqBN,EAAgBA,EAAcl0F,KAAK,KAAO,GAC/Dy0F,EAAa9tD,EAAQ+tD,KAAgBA,eAAI/tD,IAAS,EAClDguD,EAAalxE,EAEbr4B,EAAU2oG,GAAmBhC,GAAcvqG,GAAjC,YAEV+rG,EAAK7sG,cACPstG,MAAOK,EACP36C,SAAU46C,EACVjqG,KACAE,UACA82D,WACA4yC,WAAYM,EACZL,cAAeM,EACf7tD,MAAO8tD,EACPhxE,MAAOkxE,IAGLhzD,GAAiC,IAA1Bv2C,EAAQ3B,QAAQ,KAAjB,GAAmC2B,EAAUmoG,EAAGz4F,QAAQ,IAAK,KAA7D,GAAyE1P,EAAUmoG,CAG/F,OADAhzG,IAAIupB,MAAJ,cAAwB63B,GACjByiC,YAAQziC,GACV8vD,IAAIl8F,KACJgrB,KAAK,SAACm+B,GACH,GAAMk2C,GAAWl2C,EAAS1Q,KAAK4mD,YAE/B,OADAjD,KAAS9yE,IAAI8iB,EAAKizD,GACXA,IAEV91C,MAAM,SAAC7rE,GAEJ,MADAsN,IAAIpN,MAAM,eAAgBF,EAAI2+G,eACvBD,IAASh/G,IAAIgvD,KAIzB,QAASkzD,GAAT,GAAqJ,GAAjHb,GAAiH,EAAjHA,MAAOt6C,EAA0G,EAA1GA,SAAUrvD,EAAgG,EAAhGA,GAAIE,EAA4F,EAA5FA,QAAS82D,EAAmF,EAAnFA,SAAUyzC,EAAyE,EAAzEA,YAAanuD,EAA4D,EAA5DA,MAA4D,IAArDljB,iBAAqD,EAA7C38B,GAAOqtG,aAAsC,MAAxB3sG,kBAAwB,EAAf4sG,GAAO59G,KAAQ,EAClJ69G,EAAaL,EAAQA,EAAMh0F,KAAK,KAAO,GACvCs0F,EAA8B,KAAb56C,EAAmB5yD,GAAO4yD,SAAWA,EAAS15C,KAAK,KACtEy0F,EAAa,CACI,iBAAV9tD,IAAsB,SAAShzB,KAAKgzB,GAC3C8tD,EAAa9tD,EACN5kD,MAAM+c,QAAQ6nC,KACrB8tD,EAAaC,KAAgBA,eAAI/tD,IAErC,IAAMguD,GAAalxE,EACbr4B,EAAa2mG,GAAcvqG,GAA3B,kBAAoDstG,EAApD,YAEAvB,EAAK7sG,cACPstG,MAAOK,EACP36C,SAAU46C,EACVjqG,KACAE,UACA82D,WACA1a,MAAO8tD,EACPhxE,MAAOkxE,IAGLhzD,GAAiC,IAA1Bv2C,EAAQ3B,QAAQ,KAAjB,GAAmC2B,EAAUmoG,EAAGz4F,QAAQ,IAAK,KAA7D,GAAyE1P,EAAUmoG,CAE/F,OAAOnvB,aAAQziC,GACV8vD,IAAIl8F,KACJgrB,KAAK,SAACm+B,GACH,GAAMw1C,GAAgBx1C,EAAS1Q,KAAKkmD,kBAC9BU,EAAWV,EAAc,IAAMA,EAAc,GAAGU,QAEtD,OADAjD,KAAS9yE,IAAI8iB,EAAKizD,GACXA,IAEV91C,MAAM,SAAC7rE,GAEJ,MADAsN,IAAIpN,MAAM,4BAA6BF,EAAI2+G,eACpCD,IAASh/G,IAAIgvD,KAIzB,QAASozD,KAAuC,GAAtBvtG,GAAsB,uDAAb4sG,GAAO59G,KACvCmrD,EAASowD,GAAcvqG,GAAvB,iBAEN,OAAO48E,aAAQziC,GACV8vD,IAAIl8F,KACJgrB,KAAK,SAACm+B,GACH,GAAMu1C,GAAav1C,EAAS1Q,KAAKimD,cAEjC,OADAtC,KAAS9yE,IAAI8iB,EAAKsyD,GACXA,IAEVn1C,MAAM,SAAC7rE,GAEJ,MADAsN,IAAIpN,MAAM,oBAAqBF,EAAI2+G,eAC5BD,IAASh/G,IAAIgvD,KAIzB,QAASqzD,GAAgCJ,EAAU3qG,GAYtD,IAXA,GAAIgvB,UACAg8E,SACAC,SACAC,SACAC,SACAC,SACAC,SACAC,SACA91F,EAAQ,EACNmhB,EAAMg0E,EAAS7kH,OAEd0vB,EAAQmhB,EAAKnhB,GAAS,EAAG,CAC5B,GAAM6gC,GAAUs0D,EAASn1F,GACjBhuB,EAAoD6uD,EAApD7uD,KAAY+jH,EAAwCl1D,EAA9Cr2C,KAFc,KAEgCq2C,EAA5Bm1D,WAFJ,GAEmBC,EAFnB,KAEmBA,KAE/C,IADAz8E,EAAQqnB,EACI,IAAR1f,EACA,KAGJ,IAAI40E,IAAevrG,EACf,GAAa,SAATxY,EAAiB,CACjB,GAAc,SAAVikH,EAAkB,CAClBT,EAAuBh8E,CACvB,OACQk8E,IACRA,EAAoBl8E,OAER,WAATxnC,EACF8jH,IACDA,EAAoBt8E,GAEP,SAAVy8E,EACFL,IACDA,EAAmBp8E,GAEfq8E,IACRA,EAAgBr8E,OAEJ,SAATxnC,IACO,SAAVikH,EACKN,IACDA,EAAmBn8E,GAEfi8E,IACRA,EAAgBj8E,IAK5B,MACIg8E,IACAE,GACAC,GACAF,GACAK,GACAF,GACAC,GACAr8E,ECpJD,QAAS08E,GAAT,GAIJ,GAHA1rG,GAGA,EAHAA,KACAzC,EAEA,EAFAA,OACA2rF,EACA,EADAA,SAEC,OAAOyiB,IACH3rG,OACAzC,SACA8B,MAAOusG,GACP1iB,cAID,QAAS2iB,GAAT,GAIJ,GAHA7rG,GAGA,EAHAA,KACAzC,EAEA,EAFAA,OACA2rF,EACA,EADAA,SAEC,OAAOyiB,IACH3rG,OACAzC,SACA8B,MAAOysG,GACP5iB,cAID,QAAS9sC,GAAT,GAIJ,GAHAp8C,GAGA,EAHAA,KACAzC,EAEA,EAFAA,OACA2rF,EACA,EADAA,SAEC,OAAOyiB,IACH3rG,OACAzC,SACA8B,MAAO0sG,GACP7iB,cAID,QAAS7xC,GAAT,GAIJ,GAHCr3C,GAGD,EAHCA,KACAzC,EAED,EAFCA,OACA2rF,EACD,EADCA,SAEA,OAAOyiB,IACH3rG,OACAzC,SACA8B,MAAOjO,GACP83F,cAID,QAASyiB,GAAT,GAKJ,GAJC3rG,GAID,EAJCA,KACAzC,EAGD,EAHCA,OACA8B,EAED,EAFCA,MACA6pF,EACD,EADCA,UAEMogB,EAAK7sG,cACP4C,MAAOA,EAAMwR,QAAQ,MAAO,IAAIA,QAAQ,iBAAkB,IAAIA,QAAQ,SAAU,KAChFq4E,UAAWjhF,KAAKC,UAAUghF,GAC1B8iB,OAAQx6F,UAENkmC,EAAMA,GAAGu0D,GAAW1uG,GAAU+rG,CAGpC,OAFAhzG,IAAIupB,MAAJ,gBAA0B63B,GAEnByiC,IAAQzxF,IAAIgvD,GACd9iB,IAAI,kBAAmB50B,GACvBwnG,IAAIl8F,KACJgrB,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IACL,IAAIA,EAAKhsB,OAAQ,CACb,GAAIgsB,EAAKhsB,OAAO,GAAI,CAChB,GAAM/uC,GAAM,GAAIlC,OAAMi9D,EAAKhsB,OAAO,GAAG7gC,QACrCZ,IAAIpN,MAAJ,gBAA0BwuD,EAAO1uD,EAAIkO,SACrC0wG,IAAgBn4E,KAAKo4E,IAA2B7+G,GAEpD,MAAO+6D,GAGX,MADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,IAEV8Q,MAAM,SAAC7rE,GAIJ,MAHAsN,IAAIpN,MAAJ,gBAA0BwuD,EAAO1uD,EAAIooD,QACrCw2D,IAAgBn4E,KAAKo4E,IAA2B7+G,GAEzC0+G,IAASh/G,IAAIgvD,GAAKphB,KAAK,SAAAm+B,GAAA,MAAYA,WlHo2oBtD,GAAIy3C,KACJnnH,GAAoBoD,EAAE+jH,EAA2B,SAAU,WAAa,MAAOjF,KAC/EliH,EAAoBoD,EAAE+jH,EAA2B,oBAAqB,WAAa,MAAO9E,KAC1FriH,EAAoBoD,EAAE+jH,EAA2B,gBAAiB,WAAa,MAAOzqD,IACtF,IAAI0qD,KACJpnH,GAAoBoD,EAAEgkH,EAA2B,yBAA0B,WAAa,MAAOC,MAC/FrnH,EAAoBoD,EAAEgkH,EAA2B,YAAa,WAAa,MAAO5D,KAClFxjH,EAAoBoD,EAAEgkH,EAA2B,eAAgB,WAAa,MAAO5+C,KACrFxoE,EAAoBoD,EAAEgkH,EAA2B,cAAe,WAAa,MAAO79C,IACpF,IAAI+9C,KACJtnH,GAAoBoD,EAAEkkH,EAA2B,sBAAuB,WAAa,MAAO5C,MAC5F1kH,EAAoBoD,EAAEkkH,EAA2B,wBAAyB,WAAa,MAAOC,MAC9FvnH,EAAoBoD,EAAEkkH,EAA2B,gBAAiB,WAAa,MAAOxiB,KACtF9kG,EAAoBoD,EAAEkkH,EAA2B,mBAAoB,WAAa,MAAOhjB,KACzFtkG,EAAoBoD,EAAEkkH,EAA2B,oBAAqB,WAAa,MAAOl3D,KAC1FpwD,EAAoBoD,EAAEkkH,EAA2B,mBAAoB,WAAa,MAAOtiB,IACzF,IAAIwiB,KACJxnH,GAAoBoD,EAAEokH,EAA0B,cAAe,WAAa,MAAO3C,IACnF,IAAI4C,KACJznH,GAAoBoD,EAAEqkH,EAA0B,gBAAiB,WAAa,MAAOC,MACrF1nH,EAAoBoD,EAAEqkH,EAA0B,cAAe,WAAa,MAAO3C,KACnF9kH,EAAoBoD,EAAEqkH,EAA0B,2BAA4B,WAAa,MAAO5B,KAChG7lH,EAAoBoD,EAAEqkH,EAA0B,mBAAoB,WAAa,MAAO1B,KACxF/lH,EAAoBoD,EAAEqkH,EAA0B,kCAAmC,WAAa,MAAOzB,IACvG,IAAI2B,KACJ3nH,GAAoBoD,EAAEukH,EAAyB,SAAU,WAAa,MAAOC,MAC7E5nH,EAAoBoD,EAAEukH,EAAyB,gBAAiB,WAAa,MAAOE,MACpF7nH,EAAoBoD,EAAEukH,EAAyB,aAAc,WAAa,MAAOT,MACjFlnH,EAAoBoD,EAAEukH,EAAyB,cAAe,WAAa,MAAOhB,KAClF3mH,EAAoBoD,EAAEukH,EAAyB,aAAc,WAAa,MAAOb,KACjF9mH,EAAoBoD,EAAEukH,EAAyB,YAAa,WAAa,MAAOtwD,KAChFr3D,EAAoBoD,EAAEukH,EAAyB,WAAY,WAAa,MAAOr1D,KAC/EtyD,EAAoBoD,EAAEukH,EAAyB,cAAe,WAAa,MAAOf,IAGlF,IA+BIkB,GA/BApU,EAAW1zG,EAAoB,IAC/B+nH,EAAgC/nH,EAAoB4D,EAAE8vG,GAGtDsU,EAAWhoH,EAAoB,IAC/B+X,EAA8B/X,EAAoB4D,EAAEokH,GAGpDl0G,EAAQ9T,EAAoB,GAG5BioH,EAAmBjoH,EAAoB,KAGvCkoH,EAAeloH,EAAoB,IAGnCmoH,EAAenoH,EAAoB,IAGnCooH,EAAgBpoH,EAAoB,IAGpCqoH,EAA8BroH,EAAoB,KAClDsoH,EAAmDtoH,EAAoB4D,EAAEykH,GAGzEE,EAA2BvoH,EAAoB,KAC/CwoH,EAAgDxoH,EAAoB4D,EAAE2kH,G4GzgpBpEh3G,EAAMmiG,IAASP,UAAU,aAEzBqP,EAAqB,IACrBE,EAAkB,IAClBN,YACDt9G,IAAQ0D,IAAS+jB,gBADhB,+EAEDznB,IAAQyD,GAAQgkB,gBAFf,8EAGDznB,IAAQwD,KAAUikB,gBAHjB,0E5GqkpBF42F,EAAgBnjH,EAAoB,IAGpC0X,GAAc1X,EAAoB,IAGlC4jE,GAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MmHvlpB1hB8lD,GAAc,iDAEC/pG,G,WACjB,cAagD,GAZ5CrD,GAY4C,EAZ5CA,GACAhY,EAW4C,EAX5CA,KACAmmE,EAU4C,EAV5CA,aACAF,EAS4C,EAT5CA,MAS4C,IAR5CpM,gBAQ4C,EARrC,EAQqC,EAP5CwrD,EAO4C,EAP5CA,KACA90D,EAM4C,EAN5CA,MACAhhC,EAK4C,EAL5CA,OAK4C,IAJ5C09C,qBAI4C,WAH5Cq4C,0BAG4C,WAF5CC,qBAE4C,IAF9Bv1G,YAAa,OAEiB,MAD5Cw7D,oBAC4C,OAA7CnX,EAA6C,uDAAnC,OAAQ8O,EAA2B,uDAAhB,MAAOxpD,EAAS,uBAC5C+B,KAAK1D,GAAKA,EACV0D,KAAK1b,KAAOA,EACZ0b,KAAKyqD,aAAeA,GAAgBF,EACpCvqD,KAAKuqD,MAAQA,EACbvqD,KAAKm+C,KAAOA,EACZn+C,KAAK2pG,KAAOA,EACZ3pG,KAAK60C,MAAQA,EACb70C,KAAK6T,OAASA,EACd7T,KAAKuxD,UAAYA,EACjBvxD,KAAK4pG,eAAiBA,EACtB5pG,KAAK6pG,UAAYA,EACjB7pG,KAAK8vD,SAAWA,CAChB,IAAMg6C,GAAenxG,cAAcggD,UAAS8O,WAAUxpD,UAAS+Z,KAAMyyC,GACrEzqD,MAAK+pG,QAAL,GAAkBL,GAAcI,EnH6qpBpC,MA7DAjlD,IAAallD,EAAU,OACnBla,IAAK,yBACLC,MAAO,SmH3mpBmBkuB,EAAU+kC,EAAS8O,EAAUxpD,GACvD,MAAO,IAAI0B,GAASiU,EAAU+kC,EAAS8O,EAAUxpD,MnHonpBjDxY,IAAK,qBACLC,MAAO,SAA4Bwd,GmH9lpBlB,GAfjB5e,GAeiB,EAfjBA,KACA0lH,EAciB,EAdjBA,QACAC,EAaiB,EAbjBA,YACA1/C,EAYiB,EAZjBA,MAYiB,IAXjB8O,MACI6wC,EAUa,EAVbA,QACAC,EASa,EATbA,OACAC,EAQa,EARbA,OACAC,EAOa,EAPbA,YACAC,EAMa,EANbA,qBACAC,EAKa,EALbA,qBAEJC,EAGiB,EAHjBA,WAGiB,IAFjBX,qBAEiB,OADjB/5C,EACiB,EADjBA,SACDx7D,EAAkB,uDAAJ,GACPm2G,EAAkBZ,EAAUh0F,OAAO,SAAChc,GAAD,MAAaA,GAAQvF,YAAY+hB,gBAAkB/hB,EAAY+hB,eAIxG,OAAO,IAAI1W,IACPrD,GAAI0tG,EACJ1lH,OACAmmE,aAAcu/C,EACdz/C,QACA1V,OAASklB,KAAOh8D,KAAMysG,IACtB32F,QACI62F,MAAQ3sG,KAAMmsG,GACdC,QAAUpsG,KAAMosG,GAChBC,QAAUrsG,KAAMqsG,GAChBt1D,QAAU/2C,KAAMssG,GAChBM,iBAAmB5sG,KAAMwsG,GACzBK,6BAA+B7sG,KAAMwsG,GACrCM,6BAA+B9sG,KAAMusG,IAEzC/4C,WAAaj1D,GAAI2tG,GACjBJ,YACA1rD,KApBUssD,EAAgBzoH,OAAS,GAAiC,IAA5ByoH,EAAgB,GAAGtsD,KAAc,EAAI,EAqB7EwrD,KApBUc,EAAgBzoH,OAAS,GAAKyoH,EAAgB,GAAGd,KAAQc,EAAgB,GAAGd,KAAO,KAqB7F75C,iBnHsnpBDnwD,KmHzspBUA,MnH8spBjByB,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,I6GzspB1O4iG,GAAiBr+G,IAAtB2C,IAEFgK,GAAMmiG,IAASP,UAAU,aAEzBsQ,GAAW,KAEXT,IACF5mG,QAAS,qBACTytG,gBAAiB,0CACjBzG,SAAU,qBACV6D,OAAQ,GACR3D,uBAAwB,0DAGtBJ,IACF9mG,QAAS,sCACTytG,gBAAiB,qDACjBzG,SAAU,qBACV6D,OAAQ,GACR3D,uBAAwB,6DAGtBC,IACFuG,mBAAkBA,EAClBjG,KAAM,IACNkG,OAAQ,6BAGC1C,IACT,cACA,MACA,iBACA,MACA,cACA,cACA,UACA,OACA,MACA,aACA,WACA,OACA,SACA,MACA,O7G80pBA7hB,GAAUxlG,EAAoB,KAG9Bw8B,GAAWx8B,EAAoB,IAC/BgqH,GAAgChqH,EAAoB4D,EAAE44B,I8Gp4pBpD0nF,GAAc,mmB9Gm5pBhB+F,GAAqB/oH,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,I+G34pB3PqiG,GAAkB,IACX0C,GAAWvgH,IAAhB0C,IAEKm9G,IACT15D,MACI3nD,KAAM,mBACNgsD,aAGF66D,IACF1hH,KACI2kB,WAAY,6BAEhB5kB,IACI4kB,WAAY,6BAEhBE,SACIF,WAAY,6BAEhB7kB,MACI6kB,WAAY,4BAIPo6F,IACTp6F,WAAa+8F,GAA0B3hH,GAAG4kB,WAC1Cy7E,OACItuD,KAAM,iCACNz9B,OAAQ,uCACR8nF,QAAS,wCACTggB,SACIrqE,KAAM,yCACNsrE,SAAU,eAKhB9tG,GAASA,MAAKyvG,GAA0B4C,aAExCpH,GAAgB,WAAuB,GAAtBt6E,GAAsB,uDAAhB28E,GAAO59G,IAG5B,OAAO0iH,IADoBzhF,GAC4BA,GAAKtb,Y/GuiqBhEi9F,GAAoBlpH,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IgHtlqB1PgqG,GAAiBlwG,IAAUmwG,SAE3B/C,IACFp6F,WAAY,8BACZC,mBAAoB,kEACpB65F,OAAQ,IAGNnvG,GAASA,MAAKyvG,GAA0B8C,IhHymqB1C3E,GAAmB1lH,EAAoB,KAGvCkoF,GAAYloF,EAAoB,GAGhC80E,GAAiB,WAAc,QAASC,GAAcpiE,EAAKtS,GAAK,GAAI20E,MAAeC,KAAeC,KAAgBC,QAAgB,KAAM,IAAK,GAAiCC,GAA7BC,EAAK1iE,EAAIk2C,OAAOnD,cAAmBuvB,GAAMG,EAAKC,EAAGz0D,QAAQizB,QAAoBmhC,EAAK/zE,KAAKm0E,EAAG3wE,QAAYpE,GAAK20E,EAAKj0E,SAAWV,GAA3D40E,OAAyE,MAAOhxE,GAAOixE,KAAWC,EAAKlxE,EAAO,QAAU,KAAWgxE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUriE,EAAKtS,GAAK,GAAI0S,MAAM+c,QAAQnd,GAAQ,MAAOA,EAAY,IAAIk2C,OAAOnD,WAAYxkD,QAAOyR,GAAQ,MAAOoiE,GAAcpiE,EAAKtS,EAAa,MAAM,IAAI48B,WAAU,4DAEllBstF,GAAoBrpH,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IiHpnqBnP+kG,GAAWvgH,IAAhB0C,IAEFgK,GAAMmiG,IAASP,UAAU,YACzBqX,GAAiBrwG,IAAUswG,SAE3BlD,IACFN,OAAQ,GACRv8C,SAAU,+GACVy6C,aAAc,KAGLpC,GAAgB,cAACt6E,GAAD,uDAAO28E,GAAO59G,IAAd,OAAuB27G,aAAc51F,KAA2Bkb,GAAKtb,aAE5FrV,GAASA,MAAKyvG,GAA0BiD,IGvBjCzD,GAAUA,igFA4GVC,GAASA,06DAuFT36G,GAAMA,07CAqENw6G,GAAWA,uUF7PXzB,GAAWvgH,IAAhB0C,IAEFgK,GAAMmiG,IAASP,UAAU,WAElBr7F,IACT4yG,SAAU,QAGD3H,GAAgB,WAAuB,GAAtBt6E,GAAsB,uDAAhB28E,GAAO59G,IACvC,OAAO27G,aAAc71F,KAA0Bmb,GAAKtb,aAG3C+5F,GAAa,WAAuB,GAAtBz+E,GAAsB,uDAAhB28E,GAAO59G,IACpC,UAAUu7G,GAAct6E,GAAO3wB,GAAO4yG,SGxB1C,kOrH+9qBM,SAAUtqH,EAAQD,KAMlB,SAAUC,EAAQiE,EAAqBrE,GAE7C,YsHv+qBe,SAASmjH,GAAcxwD,GAClC,MAAIA,IAAOA,EAAIl4C,QAAQ,MAEZk4C,GAA6B,IAAtBA,EAAIl4C,QAAQ,MAC1B,SAAgBk4C,EAEbA,EANX,OtHq/qBM,SAAUvyD,EAAQiE,EAAqBrE,GAE7C,YuHv/qBA,4BAAAK,KAAA,2CAEM62E,GAFN,OAEoB,SAAC,GAAD,QAAGC,GAAH,yBAEL9+D,8BAAe6+D,EAAa,SAACC,GAAD,MAASA,IAE7C,IAAMwzC,GAAuBtyG,yBAChC6+D,EACA,YAAqB,GAAlBglB,GAAkB,EAAlBA,YACK0uB,QACJ,OAAK1uB,IAAgBA,EAAYH,UAIjC6uB,EAAO1uB,EACFtnE,OAAO,sBAAGmnE,SAA0B6oB,OACpC7zF,IAAI,YAAkB,GAAfgrE,GAAe,EAAfA,SACI8uB,EAAoB9uB,EAApB8uB,QAASC,EAAW/uB,EAAX+uB,OACbrmH,EAAQ,EAQZ,OANIomH,KACApmH,OAAaomH,EACTC,IACArmH,SAAeqmH,IAGhBrmH,IAERmmH,EAAK55F,KAAK,MAjBN45F,IAqBNG,EAAwB1yG,yBACjC6+D,EACA,YAAqB,GAAlBglB,GAAkB,EAAlBA,YACK0uB,QACJ,OAAK1uB,IAAgBA,EAAYH,UAIjC6uB,EAAO1uB,EACFtnE,OAAO,sBAAGmnE,SAA0B3gC,QACpCrqC,IAAI,YAAkB,GAAfgrE,GAAe,EAAfA,SACI8uB,EAAY9uB,EAAZ8uB,QACJpmH,EAAQ,EAKZ,OAHIomH,KACApmH,OAAaomH,GAEVpmH,IAERmmH,EAAK55F,KAAK,MAdN45F,KvH2hrBb,SAAUxqH,EAAQiE,EAAqBrE,GAE7C,YwH1jrBA,SAASgrH,GAAgB3vG,GACrB,MAAc,SAAPA,EAAgB,QAAUA,EAG9B,QAAS4vG,GAAa5vG,EAAIvD,GAC7B,OACIrV,KAAMyoH,EACN7vG,KACAvD,UAID,QAAS48C,KAAwD,GAA1Cr5C,GAA0C,uDAArC,GAAIi0C,EAAiC,aAAvB2lD,EAAuB,0DAAZ36F,EAAY,yDACpE,OAAO,UAACsK,EAAUjD,GACd,GAAM+nC,GAASshE,EAAgB3vG,GACzBmI,EAAQ7B,IACRwpG,EAASC,YAAe5nG,GACxB6nG,EAAYlyG,YAAkBqK,GAC9B8nG,EAAMN,GAAkB17D,GAAYA,EAASzwC,SAAWywC,EAASzwC,QAAQ0sG,UAAa,IAAIn2F,eACxFo2F,EAAgClxG,EAAhCkxG,WAAYC,EAAoBnxG,EAApBmxG,MAAOC,EAAapxG,EAAboxG,SAGrBC,EAAcH,GAAcC,GAAS,KACrCG,EAAiBF,GAAY,IAiBnC,OAfAzW,GAAK4W,MAAQniE,EACburD,EAAK6W,GAAKT,EACNC,IACArW,EAAKqW,IAAMA,GAKXM,EACA3W,EAAKyW,SAAWE,EACTD,IACP1W,EAAKwW,MAAQE,GAIV/mG,EAASqmG,EAAa5vG,GADZyzB,MAAUq8E,EAAV,UAA0BzhE,EAAUurD,WAWtD,QAAS8W,KACZ,OACItpH,KAAMupH,GAIP,QAASC,KACZ,OACIxpH,KAAMypH,GAlEd,oIAAA7rH,EAAA,gCAGa6qH,EAAa,aACbiB,EAAyB,yBACzBH,EAAkB,kBAClBE,EAAgB,iBxHwprBvB,SAAU9rH,EAAQD,GyH9prBxB,GAAIA,GAAUC,EAAOD,QAAU,SAAUisH,GAChCA,IAAKA,MACS,gBAARA,KAAkBA,GAAQh1C,OAAQg1C,aACzCA,EAAIh1C,SAAsBg1C,EAAIh1C,OAAS,GAE3C,IAAIn3D,KAqBJ,OApBAA,GAAKtc,IAAM,SAAUa,GAEjB,IAAK,GADD+8G,GAAQ6K,EAAIh1C,OAAO36D,MAAM,QACpBpc,EAAI,EAAGA,EAAIkhH,EAAMxgH,OAAQV,IAAK,CACnC,GAAIgsH,GAAK9K,EAAMlhH,GAAGoc,MAAM,IAExB,IADQ6vG,SAASD,EAAG,MACV7nH,EAAK,MAAO8nH,UAASD,EAAG,MAK1CpsG,EAAK4vB,IAAM,SAAUrrC,EAAKC,EAAO6mC,GACxBA,IAAMA,KACX,IAAIlnC,GAAImoH,OAAO/nH,GAAO,IAAM+nH,OAAO9nH,EAMnC,OALI6mC,GAAKkhF,UAASpoH,GAAK,aAAeknC,EAAKkhF,SACvClhF,EAAK9wB,OAAMpW,GAAK,UAAYmoH,OAAOjhF,EAAK9wB,OACxC8wB,EAAK/B,SAAQnlC,GAAK,YAAcmoH,OAAOjhF,EAAK/B,SAC5C+B,EAAKmhF,SAAQroH,GAAK,YACtBgoH,EAAIh1C,OAAShzE,EACNA,GAEJ6b,EAGX,IAAwB,mBAAb3d,UAA0B,CACjC,GAAI80E,GAASj3E,EAAQmC,SACrBnC,GAAQwD,IAAMyzE,EAAOzzE,IACrBxD,EAAQ0vC,IAAMunC,EAAOvnC,MzHsqrBnB,SAAUzvC,EAAQD,EAASH,G0HlrrBjC,QAAS4qE,GAAK1qB,GACZ,MAAQA,IAASA,EAAMn/C,OAAU2rH,EAASxsE,MArB5C,GAAIwsE,GAAW,EAAQ,IAwBvBtsH,GAAOD,QAAUyqE,G1H6srBX,SAAUxqE,EAAQiE,EAAqBrE,GAE7C,Y2HhurBA,SAAS2sH,GAAWC,GAChB,MAAO1pG,MAAKC,UAAUypG,EAAO77F,IAAI,SAAU01B,GACvC,MAAOA,IAA0B,gBAAVA,GAAqBomE,EAAapmE,GAASA,KAG1E,QAASomE,GAAatoH,GAClB,MAAOrD,QAAO6I,KAAKxF,GACdukE,OACA/3C,IAAI,SAAU+7F,GACf,GAAIC,EACJ,OAAQA,MAASA,EAAGD,GAAKvoH,EAAIuoH,GAAIC,ICazC,QAASC,KACP,GAAInnE,GAAOn0C,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,OAE5DqB,MAAM+c,QAAQ+1B,GAAQA,GAAQA,IAEpC/G,QAAQ,SAAUmuE,GACpBA,GAAcA,EAAWC,SAC3B,IAAkBC,gBAAgBF,GAClC,IAAmBE,gBAAgBF,MAKzC,QAASG,GAAcF,GAGrB,IAFA,GAAIG,IAAeH,GAAU,IAAIzwG,MAAM,KAEhC4wG,EAAYtsH,OAAS,GAAG,CAC7B,GAAIusH,EAAuBD,EAAYr8F,KAAK,MAC1C,OAAM,CAGRq8F,GAAY37F,MAGd,OAAM,EAGR,QAAS47F,GAAuBJ,GAC9B,GAAIK,GAAmBL,GAAUA,EAAO93F,aAExC,UAAU,IAAkBo4F,eAAeD,KAAqB,IAAmBC,eAAeD,IA6XpG,QAAS,GAAOxmF,GACd,OAAQ,GAAKA,GAAKjb,QAAQ2hG,GAAoB,SAAUpkG,GACtD,MAAOqkG,IAAcrkG,KAIzB,QAASskG,GAAY/uG,EAAOgvG,GAC1B,GAAIC,GAAcn8G,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,KAEjF,OAAOk8G,GAAU5jH,OAAO,SAAU8jH,EAAUzqH,GAO1C,MANIub,GAAMxd,eAAeiC,GACvByqH,EAASzqH,GAAQub,EAAMvb,GACdwqH,EAAYzsH,eAAeiC,KACpCyqH,EAASzqH,GAAQwqH,EAAYxqH,IAGxByqH,OAIX,QAASC,KACP,GAAI5uG,GAAOzN,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACtEu5C,EAAO9rC,EAAK8rC,IAEhB,KAAUA,EAAM,gHAGlB,QAAS+iE,GAActoG,EAAMC,GAC3B,GAAID,IAASC,EACX,OAAM,CAGR,IAAoE,qBAAxDD,EAAuB,YAAc4vD,EAAQ5vD,KAAgC,OAATA,GAAiF,qBAAxDC,EAAuB,YAAc2vD,EAAQ3vD,KAAgC,OAATA,EAC3K,OAAM,CAGR,IAAIC,GAAQ1kB,OAAO6I,KAAK2b,GACpBG,EAAQ3kB,OAAO6I,KAAK4b,EAExB,IAAIC,EAAM7kB,SAAW8kB,EAAM9kB,OACzB,OAAM,CAKR,KAAK,GADDktH,GAAkB/sH,OAAOC,UAAUC,eAAeyiB,KAAK8B,GAClDtlB,EAAI,EAAGA,EAAIulB,EAAM7kB,OAAQV,IAChC,IAAK4tH,EAAgBroG,EAAMvlB,KAAOqlB,EAAKE,EAAMvlB,MAAQslB,EAAKC,EAAMvlB,IAC9D,OAAM,CAIV,UAGF,QAAS6tH,GAA0BjsG,EAAOP,EAAWiH,GACnD,GAAI/J,GAAQqD,EAAMrD,MACd4E,EAAQvB,EAAMuB,MACd2qG,EAAgBlsG,EAAMpD,QACtBA,WAAUsvG,KAAmCA,EAC7CC,EAAc18G,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MAC7E28G,EAAgBxvG,EAAQosC,KACxBA,WAAOojE,KAAmCA,EAC1CC,EAAoBF,EAAYnjE,KAChCsjE,WAAWD,KAAuCA,CAGtD,QAAQN,EAActsG,EAAW9C,KAAWovG,EAAcrlG,EAAWnF,MAAY+qG,IAAatjE,GAAQ+iE,EAAcL,EAAYY,EAAUC,IAAsBb,EAAY1iE,EAAMujE,MAGpL,QAASC,GAAYt8G,EAASu8G,GAE5B,MAAO,gBAAkBv8G,GADdu8G,EAAY,KAAOA,EAAY,IAI5C,QAASC,GAAoBxqH,IAe7B,QAASge,GAAeysG,GACtB,MAAOA,GAAavrG,aAAeurG,EAAavrH,MAAQ,YAG1D,QAAS0/D,GAAW//C,GAClB,GAAIlI,GAAUpJ,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACzEm9G,EAAwB/zG,EAAQg0G,aAChCA,WAAeD,EAAsC,OAASA,EAC9DE,EAAmBj0G,EAAQ8H,QAC3BA,WAAUmsG,GAAyCA,EAEnD7rD,EAAa,SAAUvkD,GAGzB,QAASukD,GAAWtkD,EAAOC,GACzBmwG,EAAejwG,KAAMmkD,EAErB,IAAIpkD,GAAQmwG,GAA0BlwG,MAAOmkD,EAAW7kD,WAAand,OAAOuuC,eAAeyzB,IAAa3iE,KAAKwe,KAAMH,EAAOC,GAG1H,OADAkvG,GAAqBlvG,GACdC,EAsBT,MA9BA+sB,GAASq3B,EAAYvkD,GAWrBy3F,EAAYlzC,IACV1+D,IAAK,qBACLC,MAAO,WAGL,MAFA,KAAUme,EAAS,sHAEZ7D,KAAKmwG,oBAGd1qH,IAAK,SACLC,MAAO,WACL,GAAI0qH,GAASpwG,IAEb,OAAO,KAAMvc,cAAcwgB,EAAkB7C,KAAapB,KAAKH,MAAOpb,KAAmBsrH,EAAc/vG,KAAKF,QAAQosC,OAClHtmC,IAAK/B,EAAoC,SAAU+B,GACjD,MAAOwqG,GAAOD,iBAAmBvqG,GAC/B,YAIHu+C,GACP,EAAAzjD,UASF,OAPAyjD,GAAW7/C,YAAc,cAAgBlB,EAAea,GAAoB,IAC5EkgD,EAAWngD,cACTkoC,KAAMmkE,IAERlsD,EAAWlgD,iBAAmBA,EAGvB,IAAqBkgD,EAAYlgD,GAuB1C,QAASqsG,GAAcC,GAErB,MAAO,KAAkBnuH,UAAUouH,eAAeD,GAGpD,QAASE,GAAmBtC,GAE1B,MAAO,KAAkB/rH,UAAUsuH,wBAAwBvC,GAiC7D,QAASwC,GAA+BC,GACtC,GAAIC,GAAa,IAAmBA,UACpCA,GAAWC,OAASF,EAAcE,OAClCD,EAAWE,OAASH,EAAcG,OAClCF,EAAW1pC,KAAOypC,EAAczpC,KAChC0pC,EAAWG,IAAMJ,EAAcI,IAC/BH,EAAWI,MAAQL,EAAcK,MACjCJ,EAAW,gBAAkBD,EAAc,gBAC3CC,EAAW,gBAAkBD,EAAc,gBAC3CC,EAAW,cAAgBD,EAAc,cACzCC,EAAW,aAAeD,EAAc,aACxCC,EAAW,eAAiBD,EAAc,eAG5C,QAASM,GAAeC,EAASztH,EAAMY,EAAM8sH,GAC3C,GAAI99G,GAAS69G,GAAWA,EAAQztH,IAASytH,EAAQztH,GAAMY,EACvD,IAAIgP,EACF,MAAOA,EAGT89G,GAAQ1B,EAAY,MAAQhsH,EAAO,kBAAoBY,IAGzD,QAAS,GAAWyU,EAAQ0L,EAAO/e,GACjC,GAAIqW,GAAUpJ,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACzEw7G,EAASp1G,EAAOo1G,OAChBgD,EAAUp4G,EAAOo4G,QACjBjoD,EAAWnwD,EAAOmwD,SAClB51D,EAASyI,EAAQzI,OAGjB89G,EAAUr4G,EAAOq4G,SAAWxB,EAC5B30C,EAAO,GAAI/qB,MAAKxqD,GAChBopH,EAAc1tG,KAAa8nD,IAAcA,SAAUA,GAAY51D,GAAU49G,EAAeC,EAAS,OAAQ79G,EAAQ89G,IACjHC,EAAkBzC,EAAY7yG,EAASu1G,GAA0BxC,EAErE,KACE,MAAOrqG,GAAM8sG,kBAAkBpD,EAAQkD,GAAiB/9G,OAAO2nE,GAC/D,MAAOz4E,GACP4uH,EAAQ1B,EAAY,yBAA0BltH,IAGhD,MAAOilC,QAAOwzC,GAGhB,QAAS,GAAWliE,EAAQ0L,EAAO/e,GACjC,GAAIqW,GAAUpJ,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACzEw7G,EAASp1G,EAAOo1G,OAChBgD,EAAUp4G,EAAOo4G,QACjBjoD,EAAWnwD,EAAOmwD,SAClB51D,EAASyI,EAAQzI,OAGjB89G,EAAUr4G,EAAOq4G,SAAWxB,EAC5B30C,EAAO,GAAI/qB,MAAKxqD,GAChBopH,EAAc1tG,KAAa8nD,IAAcA,SAAUA,GAAY51D,GAAU49G,EAAeC,EAAS,OAAQ79G,EAAQ89G,IACjHC,EAAkBzC,EAAY7yG,EAASu1G,GAA0BxC,EAEhEuC,GAAgBlqC,MAASkqC,EAAgBN,QAAWM,EAAgBP,SAEvEO,EAAkBjwG,KAAaiwG,GAAmBlqC,KAAM,UAAW4pC,OAAQ,YAG7E,KACE,MAAOtsG,GAAM8sG,kBAAkBpD,EAAQkD,GAAiB/9G,OAAO2nE,GAC/D,MAAOz4E,GACP4uH,EAAQ1B,EAAY,yBAA0BltH,IAGhD,MAAOilC,QAAOwzC,GAGhB,QAAS,GAAeliE,EAAQ0L,EAAO/e,GACrC,GAAIqW,GAAUpJ,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACzEw7G,EAASp1G,EAAOo1G,OAChBgD,EAAUp4G,EAAOo4G,QACjB79G,EAASyI,EAAQzI,OAGjB89G,EAAUr4G,EAAOq4G,SAAWxB,EAC5B30C,EAAO,GAAI/qB,MAAKxqD,GAChBsN,EAAM,GAAIk9C,MAAKn0C,EAAQ/I,KACvB87G,EAAcx7G,GAAU49G,EAAeC,EAAS,WAAY79G,EAAQ89G,GACpEC,EAAkBzC,EAAY7yG,EAASy1G,GAAyB1C,GAIhE2C,EAAgBrwG,KAAa,IAAmByvG,WACpDF,GAA+Be,GAE/B,KACE,MAAOjtG,GAAMktG,kBAAkBxD,EAAQkD,GAAiB/9G,OAAO2nE,GAC7DjoE,IAAKojC,SAASpjC,GAAOA,EAAMyR,EAAMzR,QAEnC,MAAOxQ,GACP4uH,EAAQ1B,EAAY,kCAAmCltH,IACvD,QACAmuH,EAA+Bc,GAGjC,MAAOhqF,QAAOwzC,GAGhB,QAAS,GAAaliE,EAAQ0L,EAAO/e,GACnC,GAAIqW,GAAUpJ,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACzEw7G,EAASp1G,EAAOo1G,OAChBgD,EAAUp4G,EAAOo4G,QACjB79G,EAASyI,EAAQzI,OAGjB89G,EAAUr4G,EAAOq4G,SAAWxB,EAC5Bd,EAAcx7G,GAAU49G,EAAeC,EAAS,SAAU79G,EAAQ89G,GAClEC,EAAkBzC,EAAY7yG,EAAS61G,GAAuB9C,EAElE,KACE,MAAOrqG,GAAMotG,gBAAgB1D,EAAQkD,GAAiB/9G,OAAO5N,GAC7D,MAAOlD,GACP4uH,EAAQ1B,EAAY,2BAA4BltH,IAGlD,MAAOilC,QAAO/hC,GAGhB,QAAS,GAAaqT,EAAQ0L,EAAO/e,GACnC,GAAIqW,GAAUpJ,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACzEw7G,EAASp1G,EAAOo1G,OAGhBkD,EAAkBzC,EAAY7yG,EAAS+1G,IACvCV,EAAUr4G,EAAOq4G,SAAWxB,CAEhC,KACE,MAAOnrG,GAAMstG,gBAAgB5D,EAAQkD,GAAiB/9G,OAAO5N,GAC7D,MAAOlD,GACP4uH,EAAQ1B,EAAY,2BAA4BltH,IAGlD,MAAO,QAGT,QAASioD,GAAc1xC,EAAQ0L,GAC7B,GAAIutG,GAAoBr/G,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACnF6gB,EAAS7gB,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACxEw7G,EAASp1G,EAAOo1G,OAChBgD,EAAUp4G,EAAOo4G,QACjBh1G,EAAWpD,EAAOoD,SAClB81G,EAAgBl5G,EAAOk5G,cACvBC,EAAiBn5G,EAAOm5G,eACxB51G,EAAK01G,EAAkB11G,GACvB2yB,EAAiB+iF,EAAkB/iF,cASvC,KAAU3yB,EAAI,6DAEd,IAAIlJ,GAAU+I,GAAYA,EAASG,EAKnC,MAJgBna,OAAO6I,KAAKwoB,GAAQxxB,OAAS,GAK3C,MAAOoR,IAAW67B,GAAkB3yB,CAGtC,IAAI61G,UACAf,EAAUr4G,EAAOq4G,SAAWxB,CAEhC,IAAIx8G,EACF,IAGE++G,EAFgB1tG,EAAM2tG,iBAAiBh/G,EAAS+6G,EAAQgD,GAE3B79G,OAAOkgB,GACpC,MAAOhxB,GACP4uH,EAAQ1B,EAAY,8BAAgCpzG,EAAK,kBAAoB6xG,EAAS,KAAOl/E,EAAiB,uCAAyC,IAAKzsC,UAMzJysC,GAAkBk/E,GAAUA,EAAO93F,gBAAkB47F,EAAc57F,gBACtE+6F,EAAQ1B,EAAY,qBAAuBpzG,EAAK,kBAAoB6xG,EAAS,KAAOl/E,EAAiB,uCAAyC,KAIlJ,KAAKkjF,GAAoBljF,EACvB,IAGEkjF,EAFiB1tG,EAAM2tG,iBAAiBnjF,EAAgBgjF,EAAeC,GAEzC5+G,OAAOkgB,GACrC,MAAOhxB,GACP4uH,EAAQ1B,EAAY,8CAAgDpzG,EAAK,IAAK9Z,IAQlF,MAJK2vH,IACHf,EAAQ1B,EAAY,2BAA6BpzG,EAAK,qBAA6BlJ,GAAW67B,EAAiB,SAAW,MAAQ,kBAG7HkjF,GAAoB/+G,GAAW67B,GAAkB3yB,EAG1D,QAAS,GAAkBvD,EAAQ0L,EAAOutG,GACxC,GAAIK,GAAY1/G,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,KAW/E,OAAO83C,GAAc1xC,EAAQ0L,EAAOutG,EANhB7vH,OAAO6I,KAAKqnH,GAAWpnH,OAAO,SAAUqnH,EAAShuH,GACnE,GAAIoB,GAAQ2sH,EAAU/tH,EAEtB,OADAguH,GAAQhuH,GAAyB,gBAAVoB,GAAqB,EAAOA,GAASA,EACrD4sH,QAqVX,QAASC,GAAYC,GACnB,GAAIC,GAAWn0F,KAAK8oD,IAAIorC,EAExB,OAAIC,GAAWC,GACN,SAGLD,EAAWE,GACN,SAGLF,EAAWG,GACN,OAKF,MAGT,QAASC,GAAaC,GACpB,OAAQA,GACN,IAAK,SACH,MAAOC,GACT,KAAK,SACH,MAAOL,GACT,KAAK,OACH,MAAOC,GACT,KAAK,MACH,MAAOC,GACT,SACE,MAAOI,KAIb,QAASC,GAAWtoG,EAAG5C,GACrB,GAAI4C,IAAM5C,EACR,OAAM,CAGR,IAAImrG,GAAQ,GAAIhjE,MAAKvlC,GAAGwoG,UACpBC,EAAQ,GAAIljE,MAAKnoC,GAAGorG,SAExB,OAAO/8E,UAAS88E,IAAU98E,SAASg9E,IAAUF,IAAUE,E5H8gpBzD,GAAIC,GAAuBpyH,EAAoB,KAC3CqyH,EAA4CryH,EAAoB4D,EAAEwuH,GAGlEE,EAAqBtyH,EAAoB,KACzCuyH,EAA0CvyH,EAAoB4D,EAAE0uH,GAGhEE,EAAsBxyH,EAAoB,KAC1CyyH,EAA2CzyH,EAAoB4D,EAAE4uH,GAGjE5oG,EAAa5pB,EAAoB,KACjC6pB,EAAkC7pB,EAAoB4D,EAAEgmB,GAGxDD,EAAQ3pB,EAAoB,GAC5BmpG,EAA6BnpG,EAAoB4D,EAAE+lB,GAGnDK,EAA8BhqB,EAAoB,KAClDiqB,EAAmDjqB,EAAoB4D,EAAEomB,GAGzEE,EAAUlqB,EAAoB,IAC9BmqB,EAA+BnqB,EAAoB4D,EAAEsmB,G2H/urBrDwoG,EAA2B,SAAUC,EAAmBpf,GAExD,WAAO,KADHA,IAAoBA,MACjB,WAGH,IAAK,GAFDwZ,GACAnhG,KACKypD,EAAK,EAAGA,EAAK3jE,UAAU3Q,OAAQs0E,IACpCzpD,EAAKypD,GAAM3jE,UAAU2jE,EAEzB,IAAIu9C,GAAUjG,EAAW/gG,GACrBvZ,EAASugH,GAAWrf,EAAMqf,EAO9B,OANKvgH,KACDA,EAAS,KAAM06G,EAAK4F,GAAmB9uG,KAAKpS,MAAMs7G,WAAan7F,OAAOhG,KAClEgnG,IACArf,EAAMqf,GAAWvgH,IAGlBA,IAGA,GCvCf,mKAgBA,IAAIwgH,IAAsB,OAAU,KAAM,mBAAsB,SAA4BjvH,EAAGkvH,GAC3F,GAAI1uH,GAAIoiC,OAAO5iC,GAAG6Y,MAAM,KACpBs2G,GAAM3uH,EAAE,GACR4uH,EAAK5pE,OAAOhlD,EAAE,KAAOR,EACrBqvH,EAAMD,GAAM5uH,EAAE,GAAGwO,OAAO,GACxBsgH,EAAOF,GAAM5uH,EAAE,GAAGwO,OAAO,EAAG,OAAIkgH,GAAmB,GAAPG,GAAoB,IAARC,EAAa,MAAe,GAAPD,GAAoB,IAARC,EAAa,MAAe,GAAPD,GAAoB,IAARC,EAAa,MAAQ,QAAoB,GAALtvH,GAAUmvH,EAAK,MAAQ,SACxL,QAAY,MAAU,YAAe,OAAQ,UAAc,EAAK,YAAa,EAAK,YAAa,KAAM,aAAe,cAAkB,QAAY,IAAO,cAAe,MAAS,gBAAkB,MAAU,IAAO,eAAgB,MAAS,mBAAuB,cAAgB,YAAe,MAAO,UAAc,EAAK,WAAY,EAAK,WAAY,KAAM,YAAc,cAAkB,QAAY,IAAO,aAAc,MAAS,cAAgB,MAAU,IAAO,cAAe,MAAS,iBAAqB,OAAW,YAAe,QAAS,UAAc,EAAK,aAAc,EAAK,aAAc,KAAM,cAAgB,cAAkB,QAAY,IAAO,eAAgB,MAAS,iBAAmB,MAAU,IAAO,gBAAiB,MAAS,oBAAwB,eAAiB,YAAe,MAAO,UAAc,EAAK,WAAY,EAAK,WAAY,KAAM,YAAc,cAAkB,QAAY,IAAO,aAAc,MAAS,cAAgB,MAAU,IAAO,cAAe,MAAS,iBAAqB,KAAS,YAAe,MAAO,UAAc,EAAK,QAAS,EAAK,WAAY,KAAM,aAAe,cAAkB,QAAY,IAAO,aAAc,MAAS,eAAiB,MAAU,IAAO,cAAe,MAAS,kBAAsB,aAAe,YAAe,MAAO,UAAc,EAAK,QAAS,EAAK,WAAY,KAAM,aAAe,cAAkB,QAAY,IAAO,aAAc,MAAS,eAAiB,MAAU,IAAO,cAAe,MAAS,kBAAsB,MAAU,YAAe,OAAQ,UAAc,EAAK,aAAe,cAAkB,QAAY,IAAO,cAAe,MAAS,gBAAkB,MAAU,IAAO,eAAgB,MAAS,mBAAuB,cAAgB,YAAe,MAAO,UAAc,EAAK,aAAe,cAAkB,QAAY,IAAO,aAAc,MAAS,cAAgB,MAAU,IAAO,cAAe,MAAS,iBAAqB,QAAY,YAAe,SAAU,UAAc,EAAK,eAAiB,cAAkB,QAAY,IAAO,gBAAiB,MAAS,kBAAoB,MAAU,IAAO,iBAAkB,MAAS,qBAAyB,gBAAkB,YAAe,OAAQ,UAAc,EAAK,eAAiB,cAAkB,QAAY,IAAO,cAAe,MAAS,eAAiB,MAAU,IAAO,eAAgB,MAAS,kBAAsB,QAAY,YAAe,SAAU,UAAc,EAAK,OAAS,cAAkB,QAAY,IAAO,gBAAiB,MAAS,kBAAoB,MAAU,IAAO,iBAAkB,MAAS,qBAAyB,gBAAkB,YAAe,OAAQ,UAAc,EAAK,OAAS,cAAkB,QAAY,IAAO,cAAe,MAAS,eAAiB,MAAU,IAAO,eAAgB,MAAS,oBAyCtsFz9C,EAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAC5F,aAAcA,IACZ,SAAUA,GACZ,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,QAAUtkD,IAAQskD,OAAO1nD,UAAY,eAAkBoD,IA4HvHyqH,GArHiB,WACnB,QAASmE,GAAW1uH,GAClBsa,KAAKta,MAAQA,EAGf,QAAS2uH,GAAe3kE,GAGtB,QAAS4kE,GAAK7uH,EAAK8kB,GACjB,MAAO,IAAIrnB,SAAQ,SAAUC,EAASE,GACpC,GAAIgzF,IACF5wF,IAAKA,EACL8kB,IAAKA,EACLpnB,QAASA,EACTE,OAAQA,EACRwe,KAAM,KAGJ0yG,GACFA,EAAOA,EAAK1yG,KAAOw0E,GAEnBx1C,EAAQ0zE,EAAOl+B,EACf3oB,EAAOjoE,EAAK8kB,MAKlB,QAASmjD,GAAOjoE,EAAK8kB,GACnB,IACE,GAAIE,GAASilC,EAAIjqD,GAAK8kB,GAClB7kB,EAAQ+kB,EAAO/kB,KAEfA,aAAiB0uH,GACnBlxH,QAAQC,QAAQuC,EAAMA,OAAO8sC,KAAK,SAAUjoB,GAC1CmjD,EAAO,OAAQnjD,IACd,SAAUA,GACXmjD,EAAO,QAASnjD,KAGlB05B,EAAOx5B,EAAOqqB,KAAO,SAAW,SAAUrqB,EAAO/kB,OAEnD,MAAOR,GACP++C,EAAO,QAAS/+C,IAIpB,QAAS++C,GAAOvgD,EAAMgC,GACpB,OAAQhC,GACN,IAAK,SACHm9C,EAAM19C,SACJuC,MAAOA,EACPovC,MAAKA,GAEP,MAEF,KAAK,QACH+L,EAAMx9C,OAAOqC,EACb,MAEF,SACEm7C,EAAM19C,SACJuC,MAAOA,EACPovC,MAAKA,IAKX+L,EAAQA,EAAMh/B,KAEVg/B,EACF6sB,EAAO7sB,EAAMp7C,IAAKo7C,EAAMt2B,KAExBgqG,EAAO,KAlEX,GAAI1zE,GAAO0zE,CAsEXv0G,MAAKw0G,QAAUF,EAEW,kBAAf5kE,GAAI+kE,SACbz0G,KAAKy0G,eAIa,kBAAX3qE,SAAyBA,OAAO4qE,gBACzCL,EAAejyH,UAAU0nD,OAAO4qE,eAAiB,WAC/C,MAAO10G,QAIXq0G,EAAejyH,UAAUyf,KAAO,SAAU0I,GACxC,MAAOvK,MAAKw0G,QAAQ,OAAQjqG,IAG9B8pG,EAAejyH,UAAUuyH,MAAQ,SAAUpqG,GACzC,MAAOvK,MAAKw0G,QAAQ,QAASjqG,IAG/B8pG,EAAejyH,UAAUqyH,OAAS,SAAUlqG,GAC1C,MAAOvK,MAAKw0G,QAAQ,SAAUjqG,OAmBb,SAAUo5C,EAAUC,GACvC,KAAMD,YAAoBC,IACxB,KAAM,IAAI1lC,WAAU,uCAIpBm5E,EAAc,WAChB,QAASvyC,GAAiBxjD,EAAQzB,GAChC,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CACrC,GAAIuvC,GAAahxB,EAAMve,EACvBuvC,GAAWlsC,WAAaksC,EAAWlsC,eACnCksC,EAAWnsC,gBACP,SAAWmsC,KAAYA,EAAWlrC,aACtCxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAIlD,MAAO,UAAU+yB,EAAamB,EAAYC,GAGxC,MAFID,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GACpDC,GAAaF,EAAiBlB,EAAaoB,GACxCpB,MAQPn/D,EAAiB,SAAUe,EAAKC,EAAKC,GAYvC,MAXID,KAAOD,GACTrD,OAAOsC,eAAee,EAAKC,GACzBC,MAAOA,EACPf,YAAWA,EACXD,cAAaA,EACbiB,UAASA,IAGXH,EAAIC,GAAOC,EAGNF,GAGL4b,EAAWjf,OAAOkf,QAAU,SAAUC,GACxC,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CACzC,GAAIigB,GAAS5O,UAAUrR,EAEvB,KAAK,GAAImE,KAAO8b,GACVpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAC/C6b,EAAO7b,GAAO8b,EAAO9b,IAK3B,MAAO6b,IAKLwrB,EAAW,SAAU5tB,EAAUC,GACjC,GAA0B,kBAAfA,IAA4C,OAAfA,EACtC,KAAM,IAAI+e,WAAU,iEAAoE/e,GAG1FD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAC1Did,aACE3Z,MAAOwZ,EACPva,YAAWA,EACXgB,UAASA,EACTjB,cAAaA,KAGbya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,IAWzGy1G,GAA0B,SAAUpvH,EAAKwF,GAC3C,GAAIsW,KAEJ,KAAK,GAAIhgB,KAAKkE,GACRwF,EAAK0Q,QAAQpa,IAAM,GAClBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAC/CggB,EAAOhgB,GAAKkE,EAAIlE,GAGlB,OAAOggB,IAGL4uG,GAA4B,SAAUhvG,EAAM1f,GAC9C,IAAK0f,EACH,KAAM,IAAIC,gBAAe,4DAG3B,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,GAqBxEqzH,GAAoB,SAAUjhH,GAChC,GAAII,MAAM+c,QAAQnd,GAAM,CACtB,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAK0vB,EAAK1vB,GAAKsS,EAAItS,EAE7E,OAAO0vB,GAEP,MAAOhd,OAAMid,KAAKrd,IAUlBilE,GAAO,IAAUA,KACjBD,GAAS,IAAUA,OACnBD,GAAS,IAAUA,OACnB3tD,GAAO,IAAUA,KACjBjmB,GAAS,IAAUA,OACnB+zE,GAAQ,IAAUA,MAClB/tD,GAAQ,IAAUA,MAClB2N,GAAM,IAAUA,IAChBsgD,GAAY,IAAUA,UAEtB87C,GAAgBh8C,IAAO,WAAY,WACnCi8C,GAAkBj8C,IAAO,SAAU,QAAS,SAC5Ck8C,GAAgBl8C,IAAO,UAAW,YAClCm8C,GAAUjqG,GAAKnK,WAEfq0G,IACF/G,OAAQx1C,GACRzP,SAAUyP,GACVw4C,QAASpsH,GACToX,SAAUpX,GACVowH,cAAez8F,GAEfu5F,cAAet5C,GACfu5C,eAAgBntH,GAEhBqsH,QAASpmG,IAGPoqG,IACFC,WAAYJ,GACZK,WAAYL,GACZM,eAAgBN,GAChBO,aAAcP,GACdQ,aAAcR,GACdxqE,cAAewqE,GACfS,kBAAmBT,IAGjB5E,GAAYtlG,GAAM3J,KAAa8zG,GAAqBE,IACtDO,WAAY5wH,GACZiO,IAAKiiH,MASHW,IALEj9C,GAAO93D,WACEm4D,IAAWL,GAAQ5zE,MAKhC+vH,cAAeA,GACfe,cAAe/8C,IAAO,QAAS,aAE/B5P,SAAUyP,GACVm9C,OAAQj9C,GAERk9C,QAAShB,GACTiB,IAAKjB,GACLkB,KAAMjB,GACN/D,MAAOn4C,IAAO,UAAW,UAAW,SAAU,QAAS,SACvDk4C,IAAKgE,GACL7tC,KAAM6tC,GACNjE,OAAQiE,GACRlE,OAAQkE,GACRkB,aAAcp9C,IAAO,QAAS,WAG5Bq9C,IACFrB,cAAeA,GAEfz5C,MAAOvC,IAAO,UAAW,WAAY,YACrCs9C,SAAUz9C,GACV09C,gBAAiBv9C,IAAO,SAAU,OAAQ,SAC1Cw9C,YAAaz9C,GAEb09C,qBAAsB39C,GACtB49C,sBAAuB59C,GACvB69C,sBAAuB79C,GACvB89C,yBAA0B99C,GAC1B+9C,yBAA0B/9C,IAGxBg+C,IACFv7C,MAAOvC,IAAO,WAAY,YAC1Bg6C,MAAOh6C,IAAO,SAAU,SAAU,OAAQ,MAAO,QAAS,OAAQ,eAAgB,eAAgB,aAAc,YAAa,cAAe,gBAG1I+9C,IACFx7C,MAAOvC,IAAO,WAAY,aAcxB22C,GAAsBttH,OAAO6I,KAAKkqH,IAElCvG,IACF,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAGHD,GAAqB,WAgLrBoI,GAAmB,QAASA,GAAiBvG,GAC/C,GAAIx0G,GAAUpJ,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,KAC7Es9G,GAAejwG,KAAM82G,EAErB,IAAIC,GAA+B,YAAlBh7G,EAAQs/D,MACrB27C,EAAWvG,EAAmBH,EAAcC,GAEhDvwG,MAAK1M,OAAS,SAAU5N,GACtB,MAAOsxH,GAAStxH,EAAOqxH,KAUvBzF,GAA2BnvH,OAAO6I,KAAK4qH,IACvChE,GAAwBzvH,OAAO6I,KAAKmrH,IACpC3E,GAA0BrvH,OAAO6I,KAAK4rH,IACtC9E,GAAwB3vH,OAAO6I,KAAK6rH,IAEpCnF,IACFZ,OAAQ,GACRC,OAAQ,GACR5pC,KAAM,GACN6pC,IAAK,GACLC,MAAO,IAiOL,GAAS9uH,OAAOstC,QACnB4lF,WAAY,EACZC,WAAY,EACZC,eAAgB,EAChBC,aAAc,EACdC,aAAc,EACdhrE,cAAeA,EACfirE,kBAAmB,IAShBuB,GAAwB90H,OAAO6I,KAAKkqH,IACpCgC,GAAsB/0H,OAAO6I,KAAKoqH,IAIlC3tB,IACF0pB,WACAh1G,YACA+sD,SAAU,KACVisD,cAAe,OAEflD,cAAe,KACfC,kBAEAd,QAASxB,GAGP,GAAe,SAAUhwG,GAG3B,QAASu3G,GAAat3G,GACpB,GAAIC,GAAUnN,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,KAC7Es9G,GAAejwG,KAAMm3G,EAErB,IAAIp3G,GAAQmwG,GAA0BlwG,MAAOm3G,EAAa73G,WAAand,OAAOuuC,eAAeymF,IAAe31H,KAAKwe,KAAMH,EAAOC,GAE9H,KAA0B,mBAATs3G,MAAsB,8LAEvC,IAAIC,GAAcv3G,EAAQosC,KAKtBorE,QAEFA,GADElhF,SAASv2B,EAAMy3G,YACJjtE,OAAOxqC,EAAMy3G,YAKbD,EAAcA,EAAYrkH,MAAQk9C,KAAKl9C,KAQtD,IAAIoN,GAAOi3G,MACPE,EAAkBn3G,EAAKu1G,WACvBA,WAAa4B,GACfhG,kBAAmB,EAAuB6F,KAAKI,gBAC/C3F,gBAAiB,EAAuBuF,KAAKK,cAC7CrF,iBAAkB,EAAuB,KACzCT,kBAAmB,EAAuB,KAC1CI,gBAAiB,EAAuB+E,KACtCS,CASJ,OAPAx3G,GAAM0E,MAAQrD,KAAau0G,GAGzB3iH,IAAK,WACH,MAAO+M,GAAM23G,YAAcxnE,KAAKl9C,MAAQskH,KAGrCv3G,EA8FT,MA7IA+sB,GAASqqF,EAAcv3G,GAkDvBy3F,EAAY8f,IACV1xH,IAAK,YACLC,MAAO,WACL,GAAI2xH,GAAcr3G,KAAKF,QAAQosC,KAK3BnzC,EAAS61G,EAAY5uG,KAAKH,MAAOo3G,GAAuBI,EAK5D,KAAK,GAAI79B,KAAYiO,aACf1uF,EAAOygF,KACTzgF,EAAOygF,GAAYiO,GAAajO,GAIpC,KAAK60B,EAAct1G,EAAOo1G,QAAS,CACjC,GAAIwJ,GAAU5+G,EACVo1G,EAASwJ,EAAQxJ,OACjB8D,EAAgB0F,EAAQ1F,cACxBC,EAAiByF,EAAQzF,kBACfyF,EAAQvG,SAGd1B,EAAY,oCAAsCvB,EAAS,6BAAqC8D,EAAgB,mBAOxHl5G,EAASqI,KAAarI,GACpBo1G,OAAQ8D,EACRd,QAASe,EACT/1G,SAAUsrF,GAAatrF,WAI3B,MAAOpD,MAGTtT,IAAK,oBACLC,MAAO,SAA2BqT,EAAQ0L,GACxC,MAAOyyG,IAAoBjsH,OAAO,SAAU2sH,EAAgBtzH,GAE1D,MADAszH,GAAetzH,GAAQ,GAAOA,GAAMwgB,KAAK,KAAM/L,EAAQ0L,GAChDmzG,UAIXnyH,IAAK,kBACLC,MAAO,WACL,GAAIqT,GAASiH,KAAK63G,YAGdD,EAAiB53G,KAAK83G,kBAAkB/+G,EAAQiH,KAAKyE,OAErDszG,EAAS/3G,KAAKyE,MACdzR,EAAM+kH,EAAO/kH,IACb2iH,EAAaf,GAAwBmD,GAAS,OAGlD,QACE7rE,KAAM9qC,KAAarI,EAAQ6+G,GACzBjC,WAAYA,EACZ3iH,IAAKA,QAKXvN,IAAK,wBACLC,MAAO,WACL,IAAK,GAAI6rB,GAAO5e,UAAU3Q,OAAQ6f,EAAO7N,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3P,EAAK2P,GAAQ7e,UAAU6e,EAGzB,OAAO29F,GAA0Bz8G,UAAMA,IAAYsN,MAAM6S,OAAOhR,OAGlEpc,IAAK,oBACLC,MAAO,WACLsa,KAAK03G,kBAGPjyH,IAAK,SACLC,MAAO,WACL,MAAO,GAAA6a,SAASC,KAAKR,KAAKH,MAAMY,cAG7B02G,GACP,EAAAz2G,UAEF,IAAa4D,YAAc,eAC3B,GAAaN,cACXkoC,KAAMmkE,IAER,GAAatvG,mBACXmrC,KAAMmkE,GAAUxvG,WAalB,IAAI,IAAgB,SAAUjB,GAG5B,QAASo4G,GAAcn4G,EAAOC,GAC5BmwG,EAAejwG,KAAMg4G,EAErB,IAAIj4G,GAAQmwG,GAA0BlwG,MAAOg4G,EAAc14G,WAAand,OAAOuuC,eAAesnF,IAAgBx2H,KAAKwe,KAAMH,EAAOC,GAGhI,OADAkvG,GAAqBlvG,GACdC,EAoCT,MA5CA+sB,GAASkrF,EAAep4G,GAWxBy3F,EAAY2gB,IACVvyH,IAAK,wBACLC,MAAO,WACL,IAAK,GAAI6rB,GAAO5e,UAAU3Q,OAAQ6f,EAAO7N,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3P,EAAK2P,GAAQ7e,UAAU6e,EAGzB,OAAO29F,GAA0Bz8G,UAAMA,IAAYsN,MAAM6S,OAAOhR,OAGlEpc,IAAK,SACLC,MAAO,WACL,GAAI4pH,GAAgBtvG,KAAKF,QAAQosC,KAC7BmpE,EAAa/F,EAAc+F,WAC3B4C,EAAO3I,EAAc6F,cACrB+C,EAASl4G,KAAKH,MACdna,EAAQwyH,EAAOxyH,MACf+a,EAAWy3G,EAAOz3G,SAGlB03G,EAAgB9C,EAAW3vH,EAAOsa,KAAKH,MAE3C,OAAwB,kBAAbY,GACFA,EAAS03G,GAGX,IAAM10H,cACXw0H,EACA,KACAE,OAICH,GACP,EAAAt3G,UAEF,IAAc4D,YAAc,gBAC5B,GAAcN,cACZkoC,KAAMmkE,GAcR,IAAI,IAAgB,SAAUzwG,GAG5B,QAASw4G,GAAcv4G,EAAOC,GAC5BmwG,EAAejwG,KAAMo4G,EAErB,IAAIr4G,GAAQmwG,GAA0BlwG,MAAOo4G,EAAc94G,WAAand,OAAOuuC,eAAe0nF,IAAgB52H,KAAKwe,KAAMH,EAAOC,GAGhI,OADAkvG,GAAqBlvG,GACdC,EAoCT,MA5CA+sB,GAASsrF,EAAex4G,GAWxBy3F,EAAY+gB,IACV3yH,IAAK,wBACLC,MAAO,WACL,IAAK,GAAI6rB,GAAO5e,UAAU3Q,OAAQ6f,EAAO7N,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3P,EAAK2P,GAAQ7e,UAAU6e,EAGzB,OAAO29F,GAA0Bz8G,UAAMA,IAAYsN,MAAM6S,OAAOhR,OAGlEpc,IAAK,SACLC,MAAO,WACL,GAAI4pH,GAAgBtvG,KAAKF,QAAQosC,KAC7BopE,EAAahG,EAAcgG,WAC3B2C,EAAO3I,EAAc6F,cACrB+C,EAASl4G,KAAKH,MACdna,EAAQwyH,EAAOxyH,MACf+a,EAAWy3G,EAAOz3G,SAGlB43G,EAAgB/C,EAAW5vH,EAAOsa,KAAKH,MAE3C,OAAwB,kBAAbY,GACFA,EAAS43G,GAGX,IAAM50H,cACXw0H,EACA,KACAI,OAICD,GACP,EAAA13G,UAEF,IAAc4D,YAAc,gBAC5B,GAAcN,cACZkoC,KAAMmkE,GAcR,IAAI0C,IAAS,IACTL,GAAS,IACTC,GAAO,KACPC,GAAM,MAINI,GAAkB,WAgDlB,GAAoB,SAAUpzG,GAGhC,QAAS04G,GAAkBz4G,EAAOC,GAChCmwG,EAAejwG,KAAMs4G,EAErB,IAAIv4G,GAAQmwG,GAA0BlwG,MAAOs4G,EAAkBh5G,WAAand,OAAOuuC,eAAe4nF,IAAoB92H,KAAKwe,KAAMH,EAAOC,GAExIkvG,GAAqBlvG,EAErB,IAAI9M,GAAMojC,SAASv2B,EAAMy3G,YAAcjtE,OAAOxqC,EAAMy3G,YAAcx3G,EAAQosC,KAAKl5C,KAK/E,OADA+M,GAAM0E,OAAUzR,IAAKA,GACd+M,EAiGT,MA/GA+sB,GAASwrF,EAAmB14G,GAiB5By3F,EAAYihB,IACV7yH,IAAK,qBACLC,MAAO,SAA4Bma,EAAO4E,GACxC,GAAI2rG,GAASpwG,IAGbnd,cAAamd,KAAKu4G,OAElB,IAAI7yH,GAAQma,EAAMna,MACdotH,EAAQjzG,EAAMizG,MACd0F,EAAiB34G,EAAM24G,eAEvB3lH,EAAO,GAAIq9C,MAAKxqD,GAAOytH,SAK3B,IAAKqF,GAAmBpiF,SAASvjC,GAAjC,CAIA,GAAI2/G,GAAQ3/G,EAAO4R,EAAMzR,IACrBylH,EAAY5F,EAAaC,GAASP,EAAYC,IAC9CkG,EAAgBp6F,KAAK8oD,IAAIorC,EAAQiG,GAMjC1yE,EAAQysE,EAAQ,EAAIl0F,KAAKC,IAAIi6F,EAAgBC,EAAYC,GAAiBp6F,KAAKC,IAAIi6F,EAAgBE,EAEvG14G,MAAKu4G,OAASt0H,WAAW,WACvBmsH,EAAOjqG,UAAWnT,IAAKo9G,EAAOtwG,QAAQosC,KAAKl5C,SAC1C+yC,OAGLtgD,IAAK,oBACLC,MAAO,WACLsa,KAAK24G,mBAAmB34G,KAAKH,MAAOG,KAAKyE,UAG3Chf,IAAK,4BACLC,MAAO,SAAmC0a,GAKnC6yG,EAJW7yG,EAAK1a,MAIMsa,KAAKH,MAAMna,QACpCsa,KAAKmG,UAAWnT,IAAKgN,KAAKF,QAAQosC,KAAKl5C,WAI3CvN,IAAK,wBACLC,MAAO,WACL,IAAK,GAAI6rB,GAAO5e,UAAU3Q,OAAQ6f,EAAO7N,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3P,EAAK2P,GAAQ7e,UAAU6e,EAGzB,OAAO29F,GAA0Bz8G,UAAMA,IAAYsN,MAAM6S,OAAOhR,OAGlEpc,IAAK,sBACLC,MAAO,SAA6Bid,EAAWiH,GAC7C5J,KAAK24G,mBAAmBh2G,EAAWiH,MAGrCnkB,IAAK,uBACLC,MAAO,WACL7C,aAAamd,KAAKu4G,WAGpB9yH,IAAK,SACLC,MAAO,WACL,GAAI4pH,GAAgBtvG,KAAKF,QAAQosC,KAC7BqpE,EAAiBjG,EAAciG,eAC/B0C,EAAO3I,EAAc6F,cACrB+C,EAASl4G,KAAKH,MACdna,EAAQwyH,EAAOxyH,MACf+a,EAAWy3G,EAAOz3G,SAGlBm4G,EAAoBrD,EAAe7vH,EAAO0b,KAAapB,KAAKH,MAAOG,KAAKyE,OAE5E,OAAwB,kBAAbhE,GACFA,EAASm4G,GAGX,IAAMn1H,cACXw0H,EACA,KACAW,OAICN,GACP,EAAA53G,UAEF,IAAkB4D,YAAc,oBAChC,GAAkBN,cAChBkoC,KAAMmkE,IAER,GAAkB5oB,cAChB+wB,eAAgB,IAgBlB,IAAI,IAAkB,SAAU54G,GAG9B,QAASi5G,GAAgBh5G,EAAOC,GAC9BmwG,EAAejwG,KAAM64G,EAErB,IAAI94G,GAAQmwG,GAA0BlwG,MAAO64G,EAAgBv5G,WAAand,OAAOuuC,eAAemoF,IAAkBr3H,KAAKwe,KAAMH,EAAOC,GAGpI,OADAkvG,GAAqBlvG,GACdC,EAoCT,MA5CA+sB,GAAS+rF,EAAiBj5G,GAW1By3F,EAAYwhB,IACVpzH,IAAK,wBACLC,MAAO,WACL,IAAK,GAAI6rB,GAAO5e,UAAU3Q,OAAQ6f,EAAO7N,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3P,EAAK2P,GAAQ7e,UAAU6e,EAGzB,OAAO29F,GAA0Bz8G,UAAMA,IAAYsN,MAAM6S,OAAOhR,OAGlEpc,IAAK,SACLC,MAAO,WACL,GAAI4pH,GAAgBtvG,KAAKF,QAAQosC,KAC7BspE,EAAelG,EAAckG,aAC7ByC,EAAO3I,EAAc6F,cACrB+C,EAASl4G,KAAKH,MACdna,EAAQwyH,EAAOxyH,MACf+a,EAAWy3G,EAAOz3G,SAGlBq4G,EAAkBtD,EAAa9vH,EAAOsa,KAAKH,MAE/C,OAAwB,kBAAbY,GACFA,EAASq4G,GAGX,IAAMr1H,cACXw0H,EACA,KACAa,OAICD,GACP,EAAAn4G,UAEF,IAAgB4D,YAAc,kBAC9B,GAAgBN,cACdkoC,KAAMmkE,GAcR,IAAI,IAAkB,SAAUzwG,GAG9B,QAASm5G,GAAgBl5G,EAAOC,GAC9BmwG,EAAejwG,KAAM+4G,EAErB,IAAIh5G,GAAQmwG,GAA0BlwG,MAAO+4G,EAAgBz5G,WAAand,OAAOuuC,eAAeqoF,IAAkBv3H,KAAKwe,KAAMH,EAAOC,GAGpI,OADAkvG,GAAqBlvG,GACdC,EAsCT,MA9CA+sB,GAASisF,EAAiBn5G,GAW1By3F,EAAY0hB,IACVtzH,IAAK,wBACLC,MAAO,WACL,IAAK,GAAI6rB,GAAO5e,UAAU3Q,OAAQ6f,EAAO7N,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3P,EAAK2P,GAAQ7e,UAAU6e,EAGzB,OAAO29F,GAA0Bz8G,UAAMA,IAAYsN,MAAM6S,OAAOhR,OAGlEpc,IAAK,SACLC,MAAO,WACL,GAAI4pH,GAAgBtvG,KAAKF,QAAQosC,KAC7BupE,EAAenG,EAAcmG,aAC7BwC,EAAO3I,EAAc6F,cACrB+C,EAASl4G,KAAKH,MACdna,EAAQwyH,EAAOxyH,MACfszH,EAAQd,EAAOc,MACfv4G,EAAWy3G,EAAOz3G,SAGlBw4G,EAAiBxD,EAAa/vH,EAAOsa,KAAKH,OAC1Cq5G,EAAkBl5G,KAAKH,MAAMo5G,IAAmBD,CAEpD,OAAwB,kBAAbv4G,GACFA,EAASy4G,GAGX,IAAMz1H,cACXw0H,EACA,KACAiB,OAICH,GACP,EAAAr4G,UAEF,IAAgB4D,YAAc,kBAC9B,GAAgBN,cACdkoC,KAAMmkE,IAER,GAAgB5oB,cACdpsB,MAAO,WAqBT,IAAI,IAAuB,SAA8BxqC,EAAYrd,GAInE,MAAOi3B,OAAoB2nE,iBAAkB,EAAuB,MAAsBvhF,EAAYrd,IAGpG,GAAmB,SAAU5T,GAG/B,QAASu5G,GAAiBt5G,EAAOC,GAC/BmwG,EAAejwG,KAAMm5G,EAErB,IAAIp5G,GAAQmwG,GAA0BlwG,MAAOm5G,EAAiB75G,WAAand,OAAOuuC,eAAeyoF,IAAmB33H,KAAKwe,KAAMH,EAAOC,GAKtI,OAHKD,GAAMovB,gBACT+/E,EAAqBlvG,GAEhBC,EAqHT,MA/HA+sB,GAASqsF,EAAkBv5G,GAa3By3F,EAAY8hB,IACV1zH,IAAK,wBACLC,MAAO,SAA+Bid,GACpC,GAAI6Q,GAASxT,KAAKH,MAAM2T,MAIxB,KAAKy7F,EAHYtsG,EAAU6Q,OAGIA,GAC7B,OAAM,CAUR,KAAK,GAJD4lG,GAAmBh4G,KAAauB,GAClC6Q,OAAQA,IAGDjC,EAAO5e,UAAU3Q,OAAQ6f,EAAO7N,MAAMud,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3P,EAAK2P,EAAO,GAAK7e,UAAU6e,EAG7B,OAAO29F,GAA0Bz8G,UAAMA,IAAYsN,KAAMo5G,GAAkBvmG,OAAOhR,OAGpFpc,IAAK,SACLC,MAAO,WACL,GAAI0a,GAAOJ,KAAKF,QAAQosC,SACpBmtE,EAAqBj5G,EAAKqqC,cAC1B6uE,WAAmBD,EAAmC,GAAuBA,EAC7EE,EAAqBn5G,EAAK+0G,cAC1B8C,WAAOsB,EAAmC,OAASA,EAEnDrB,EAASl4G,KAAKH,MACdvD,EAAK47G,EAAO57G,GACZuuC,EAAcqtE,EAAOrtE,YACrB5b,EAAiBipF,EAAOjpF,eACxBzb,EAAS0kG,EAAO1kG,OAChBgmG,EAAiBtB,EAAOt6C,QACxBiyC,WAAe2J,EAA+BvB,EAAOuB,EACrD/4G,EAAWy3G,EAAOz3G,SAGlBg5G,SACAC,SACAC,QAGJ,IADgBnmG,GAAUrxB,OAAO6I,KAAKwoB,GAAQxxB,OAAS,EACxC,CAGb,GAAI43H,GAAMt7F,KAAK+oD,MAAsB,cAAhB/oD,KAAK+oC,UAA0BppC,SAAS,IAEzD47F,EAAgB,WAClB,GAAIC,GAAU,CACd,OAAO,YACL,MAAO,WAAaF,EAAM,KAAOE,GAAW,MAOhDL,GAAiB,MAAQG,EAAM,MAC/BF,KACAC,KAOAx3H,OAAO6I,KAAKwoB,GAAQusB,QAAQ,SAAUz7C,GACpC,GAAIoB,GAAQ8tB,EAAOlvB,EAEnB,IAAI,SAAA6jG,gBAAeziG,GAAQ,CACzB,GAAI+wB,GAAQojG,GACZH,GAAgBp1H,GAAQm1H,EAAiBhjG,EAAQgjG,EACjDE,EAASljG,GAAS/wB,MAElBg0H,GAAgBp1H,GAAQoB,IAK9B,GAAImrC,IAAev0B,GAAIA,EAAIuuC,YAAaA,EAAa5b,eAAgBA,GACjEkjF,EAAmBmH,EAAiBzoF,EAAY6oF,GAAmBlmG,GAEnEuZ,QAiBJ,OATEA,GANgB4sF,GAAYx3H,OAAO6I,KAAK2uH,GAAU33H,OAAS,EAMnDmwH,EAAiBz0G,MAAM+7G,GAAgB5jG,OAAO,SAAUkkG,GAC9D,QAASA,IACR/nG,IAAI,SAAU+nG,GACf,MAAOJ,GAASI,IAASA,KAGlB5H,GAGa,kBAAb1xG,GACFA,EAAS/N,UAAMA,GAAWmiH,GAAkB9nF,IAK9C,EAAAtpC,cAAciP,UAAMA,IAAYm9G,EAAc,MAAMh9F,OAAOgiG,GAAkB9nF,SAGjFosF,GACP,EAAAz4G,UAEF,IAAiB4D,YAAc,mBAC/B,GAAiBN,cACfkoC,KAAMmkE,IAER,GAAiB5oB,cACfj0E,UAcF,IAAI,IAAuB,SAAU5T,GAGnC,QAASo6G,GAAqBn6G,EAAOC,GACnCmwG,EAAejwG,KAAMg6G,EAErB,IAAIj6G,GAAQmwG,GAA0BlwG,MAAOg6G,EAAqB16G,WAAand,OAAOuuC,eAAespF,IAAuBx4H,KAAKwe,KAAMH,EAAOC,GAG9I,OADAkvG,GAAqBlvG,GACdC,EA8DT,MAtEA+sB,GAASktF,EAAsBp6G,GAW/By3F,EAAY2iB,IACVv0H,IAAK,wBACLC,MAAO,SAA+Bid,GACpC,GAAI6Q,GAASxT,KAAKH,MAAM2T,MAIxB,KAAKy7F,EAHYtsG,EAAU6Q,OAGIA,GAC7B,OAAM,CAUR,KAAK,GAJD4lG,GAAmBh4G,KAAauB,GAClC6Q,OAAQA,IAGDjC,EAAO5e,UAAU3Q,OAAQ6f,EAAO7N,MAAMud,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3P,EAAK2P,EAAO,GAAK7e,UAAU6e,EAG7B,OAAO29F,GAA0Bz8G,UAAMA,IAAYsN,KAAMo5G,GAAkBvmG,OAAOhR,OAGpFpc,IAAK,SACLC,MAAO,WACL,GAAI4pH,GAAgBtvG,KAAKF,QAAQosC,KAC7BwpE,EAAoBpG,EAAcoG,kBAClCuC,EAAO3I,EAAc6F,cACrB+C,EAASl4G,KAAKH,MACdvD,EAAK47G,EAAO57G,GACZuuC,EAAcqtE,EAAOrtE,YACrB5b,EAAiBipF,EAAOjpF,eACxBojF,EAAY6F,EAAO1kG,OACnBgmG,EAAiBtB,EAAOt6C,QACxBiyC,WAAe2J,EAA+BvB,EAAOuB,EACrD/4G,EAAWy3G,EAAOz3G,SAGlBowB,GAAev0B,GAAIA,EAAIuuC,YAAaA,EAAa5b,eAAgBA,GACjEgrF,EAAuBvE,EAAkB7kF,EAAYwhF,EAEzD,IAAwB,kBAAb5xG,GACT,MAAOA,GAASw5G,EAWlB,IAAIre,IAASx6B,OAAQ64C,EACrB,OAAO,KAAMx2H,cAAcosH,GAAgB1uC,wBAAyBy6B,QAGjEoe,GACP,EAAAt5G,UAEF,IAAqB4D,YAAc,uBACnC,GAAqBN,cACnBkoC,KAAMmkE,IAER,GAAqB5oB,cACnBj0E,WAcFy6F,EAAc6F,GAQd7F,EAAc,EAAAtjG,I5Hm0rBR,SAAUtpB,EAAQiE,EAAqBrE,GAE7C,Y6H/hvBO,SAASi5H,KACZ,OACIx2H,KAAMy2H,EACNnpE,UAAWd,KAAKl9C,OAIjB,QAASonH,GAAoBvT,GAChC,OACInjH,KAAM22H,EACNxlG,aAAcq7B,KAAKl9C,MACnB6zG,YAID,QAASyT,GAAgBhtE,GAC5B,OACI5pD,KAAM62H,EACNjtE,UAID,QAASktE,GAAT,GAMJ,QALC92H,gBAKD,EALQ+2H,IAAaC,QAAQ1sH,KAK7B,EAJC2sH,EAID,EAJCA,WACA1nE,EAGD,EAHCA,QACA2nE,EAED,EAFCA,UACAC,EACD,EADCA,QAEM3U,EAAayU,IAAeA,EAAW18F,YAEvC68F,GACFC,UAAW,YACXC,cAAe,gBACfC,cAAe,iBAGfnrD,EAAW,KACXnE,EAAW,IAGX1Y,IAAW6nE,EAAW7nE,EAAQ58B,eAC9By5C,GAAY7c,EAAQ58B,eAEpBs1C,EAAW1Y,IAAYA,EAAQ58B,cAGnC,IAAIuiC,IAASgiE,GAGPh0C,EAAM,GAAI12B,KAKhB,IAHI2qE,GACAjiE,EAAM12D,KAAK0kF,GAEXljF,IAAS+2H,IAAaC,QAAQxsH,SAAW0sH,EAAW,CACpD,GAAMj0C,GAAQ,GAAIz2B,KAClB0I,IAAS+tD,YAAiBhgC,IAG9B,OACIjjF,KAAMA,EAAKgxD,cACXiX,WACAmE,WACAo2C,aACAttD,SAID,QAASsiE,GAAcloG,GAC1B,MAAO,UAACnN,EAAUjD,GACdiD,EAASq0G,IACT,IAAMz1G,GAAQ7B,IACR3I,EAAaF,YAAmB0K,GAHX,EAWvB+1G,EAAmBxnG,GALbmoG,EANiB,EAMvBz3H,KACAwiH,EAPuB,EAOvBA,WACAv6C,EARuB,EAQvBA,SACAmE,EATuB,EASvBA,SACAlX,EAVuB,EAUvBA,MAEAo4D,SACArqC,SACAC,QAUJ,OATqB,KAAjBhuB,EAAM52D,OACNgvH,EAAMv7G,IAAWmvE,2BAA2BhsB,EAAM,IAC1B,IAAjBA,EAAM52D,SAEb2kF,EAAQ/tB,GAASA,EAAM,IAAMnjD,IAAW+xE,6BAA6B/xE,IAAWqvE,YAAYlsB,EAAM,KAClGguB,EAAMhuB,GAASA,EAAM,IAAMnjD,IAAW+xE,6BAA6B5uB,EAAM,KAItE/yC,EAAS0yC,YAAQ,cACpB70D,KAAMy3H,EACNjV,aACAv6C,WACAmE,WACA6W,QACAC,MACAoqC,MACAt7E,MAVU,OAYXlD,KAAK,YAEA,QADFsU,gBACE,OAEEs0E,EACAt0E,EADAs0E,OAEJA,GAAUA,KACV,IAAMvU,GAAWuU,EAAQppG,IAAI,YAkBrB,GAjBN1V,GAiBM,EAjBNA,GACAhY,EAgBM,EAhBNA,KACAZ,EAeM,EAfNA,KACA23H,EAcM,EAdNA,cACAngD,EAaM,EAbNA,UACAogD,EAYM,EAZNA,WACAnoE,EAWM,EAXNA,QACAooE,EAUM,EAVNA,SACAxU,EASM,EATNA,YACAyU,EAQM,EARNA,SAESC,EAMH,EAPNC,cACI9nE,IAME,IAJN9/B,KAIM,sBAHG6nG,GAGH,EAHF/nE,IAEMgoE,EACJ,EADN9rD,QAiCE,QA9BIxzD,KACAhY,OACAk3H,WACA93H,KAAMA,EAAK2yB,cACX26B,UAAWqqE,EACXT,UAAW1/C,EACXogD,aACAG,sBACA/T,WAAYv0D,IACRsX,aAAcxwD,EAAak5C,EAAQsX,aAAap0C,cAAgB88B,EAAQ2Y,cACxEA,cAAe3Y,EAAQ2Y,cACvBxnE,KAAM6uD,EAAQ7uD,KACd8oB,KAAM+lC,EAAQ72C,GAAGo4C,cACjBhxD,KAAMyvD,EAAQzvD,KACdm4H,UAAW1oE,EAAQ0oE,UACnBC,OAAQ3oE,EAAQ4oE,SAChBjsD,SAAU8rD,EAAeA,EAAa5pG,IAAI,qBACpC1tB,iBAGV03H,YACIC,OACIjzC,MAAO,IACPC,OAAQ,IACRlrE,KAAM49G,IAGdzV,YAAaqV,GACbpV,cAAeY,GAAeA,QAOtC,OAFAlhG,GAASu0G,EAAoBvT,IAEtBA,KAId,QAASqV,GAAwBlpG,GACpC,MAAO,UAACnN,EAAUjD,GACdiD,EAASq0G,IACT,IAAMz1G,GAAQ7B,IACR3I,EAAaF,YAAmB0K,GAHX,EAUvB+1G,EAAmBxnG,GAJbmoG,EANiB,EAMvBz3H,KACAwiH,EAPuB,EAOvBA,WACAv6C,EARuB,EAQvBA,SACAmE,EATuB,EASvBA,SAEElX,EAAQ5lC,EAAO4lC,OAAS+tD,YAAiB,GAAIz2D,OAE/C8gE,SACArqC,SACAC,QAEJ,IAAI5zD,EAAO4lC,OAAS5lC,EAAO4lC,MAAMtuC,MAAM,KAAM,CAAC,GAAD,GAC1B0I,EAAO4lC,MAAMl7C,MAAM,KADO,QACxCipE,GADwC,KACjCC,EADiC,KAGzCD,EAAQlxE,IAAW+xE,6BAA6B/xE,IAAWqvE,YAAY6B,IACvEC,EAAMnxE,IAAW+xE,6BAA6B/xE,IAAWqvE,YAAY8B,QAErEoqC,GAAMv7G,IAAWmvE,2BAA2BhsB,EAIhD,OAAO/yC,GAAS0yC,YAAQ,cACpB70D,KAAMy3H,EACNjV,aACAv6C,WACAmE,WACA6W,QACAC,MACAoqC,MACAt7E,MAVU,OAYXlD,KAAK,YAEA,QADFsU,gBACE,OAEEs0E,EACAt0E,EADAs0E,OAEJA,GAAUA,KAEV,IAAMvU,GAAWuU,EAAQppG,IAAI,YAkBrB,GAjBN1V,GAiBM,EAjBNA,GACAhY,EAgBM,EAhBNA,KACAZ,EAeM,EAfNA,KACA23H,EAcM,EAdNA,cACAngD,EAaM,EAbNA,UACAogD,EAYM,EAZNA,WACAnoE,EAWM,EAXNA,QACAooE,EAUM,EAVNA,SACAxU,EASM,EATNA,YACAyU,EAQM,EARNA,SAQM,IAPNE,aAOM,sBANGD,GAMH,EANF7nE,IAME,IAJN9/B,KAIM,sBAHG6nG,GAGH,EAHF/nE,IAEMgoE,EACJ,EADN9rD,QAkCE,QA/BIxzD,KACAhY,OACAk3H,WACA93H,KAAMA,EAAK2yB,cACX26B,UAAWqqE,EACXT,UAAW1/C,EACXogD,aACAG,sBACA/T,WAAYv0D,IACRsX,aAAcxwD,EAAak5C,EAAQsX,aAAap0C,cAAgB88B,EAAQ2Y,cACxEA,cAAe3Y,EAAQ2Y,cACvBxnE,KAAM6uD,EAAQ7uD,KACd8oB,KAAM+lC,EAAQ72C,GAAGo4C,cACjBhxD,KAAMyvD,EAAQzvD,KACdm4H,UAAW1oE,EAAQ0oE,UACnBC,OAAQ3oE,EAAQ4oE,SAChBjsD,SAAU8rD,EAAeA,EAAa5pG,IAAI,qBACpC1tB,iBAGV03H,YACIC,OACIjzC,MAAO,IACPC,OAAQ,IACRlrE,KAAM49G,IAGdzV,YAAaqV,GACbpV,cAAeY,GAAeA,QAQtC,OAFAlhG,GAASu0G,EAAoBvT,IAEtBA,KAKd,QAASsV,KACZ,OACIz4H,KAAM04H,EACNprE,UAAWd,KAAKl9C,OAIjB,QAASqpH,GAAsBnW,GAClC,OACIxiH,KAAM44H,EACNznG,aAAcq7B,KAAKl9C,MACnBkzG,cAID,QAASqW,KACZ,MAAO,UAAC12G,EAAUjD,GACd,GAAM6B,GAAQ7B,IACRnJ,EAASD,YAAeiL,GACxBuO,EAASwpG,YAAyB/3G,EAExC,OADAoB,GAASs2G,GACF11B,IAAQg2B,cAAchjH,EAAQuZ,GAAQwf,KAAK,SAAC0zE,GAE/C,MADArgG,GAASw2G,EAAsBnW,IACxBA,K7HovuBYjlH,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO60H,KACpEl5H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+0H,KAEpEp5H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOg3H,KACpEr7H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOi1H,KACpEt5H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOo3H,KACpEz7H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOq3H,KACpE17H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOs3H,KACpE37H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOu3H,KAGlEv3H,EAAuB,EAAIg1H,EAE3Bh1H,EAAuB,EAAI41H,EAC3B51H,EAAuB,EAAI42H,EAG3B52H,EAAuB,EAAIi3H,CAKvC,IAAIO,GAAyC77H,EAAoB,IAC7D87H,EAAuD97H,EAAoB,IAC3E+7H,EAA6D/7H,EAAoB,KACjFg8H,EAAuDh8H,EAAoB,GAC3Ei8H,EAA6Dj8H,EAAoB,KACjFk8H,EAAmDl8H,EAAoB,IACvEm8H,EAA8Cn8H,EAAoB,IACvF80E,EAAiB,WAAc,QAASC,GAAcpiE,EAAKtS,GAAK,GAAI20E,MAAeC,KAAeC,KAAgBC,QAAgB,KAAM,IAAK,GAAiCC,GAA7BC,EAAK1iE,EAAIk2C,OAAOnD,cAAmBuvB,GAAMG,EAAKC,EAAGz0D,QAAQizB,QAAoBmhC,EAAK/zE,KAAKm0E,EAAG3wE,QAAYpE,GAAK20E,EAAKj0E,SAAWV,GAA3D40E,OAAyE,MAAOhxE,GAAOixE,KAAWC,EAAKlxE,EAAO,QAAU,KAAWgxE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUriE,EAAKtS,GAAK,GAAI0S,MAAM+c,QAAQnd,GAAQ,MAAOA,EAAY,IAAIk2C,OAAOnD,WAAYxkD,QAAOyR,GAAQ,MAAOoiE,GAAcpiE,EAAKtS,EAAa,MAAM,IAAI48B,WAAU,4D6HvkvBzkBi8F,EAAqB,qBACrBE,EAAwB,wBACxB+B,EAAuB,uBACvBE,EAA0B,0BAC1B/B,EAAoB,oBACpBmC,EAAoB,oBACpBC,EAAqB,qBACrBC,EAAkB,kBAClBC,EAAyB,0B7H06vBhC,SAAUx7H,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIujE,GAAsCvjE,EAAoB,GAE/EqmG,GADmErmG,EAAoB4D,EAAE2/D,GAClF,WAAc,GAAI+iC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,W8Ht8vBn4B4yB,EAAe,QAAfA,GAAgB,GAIhB,GAHF4C,GAGE,EAHFA,YACAjvB,EAEE,EAFFA,SACAvJ,EACE,EADFA,OAEMy4B,EAAU,SAACpyF,GACbA,EAAMkvD,gBACN,IAAM9sC,GAASpiB,EAAM5pB,OAAO8jD,aAAa,cACzCi4D,GAAY/vE,IAGVvxC,EAAU5Z,OAAO6I,KAAKyvH,EAAaC,SAAS1oG,IAAI,SAAAvsB,GAClD,GAAM83H,GAAS9C,EAAaC,QAAQj1H,EACpC,mDAG4C2oG,IAAamvB,EAAS,SAAW,IAH7E,cAIqBA,EAJrB,QAKiBD,GAHJC,EAKJ14B,EAAO04B,KAKpB,2BACmB,iCADnB,gBACkE,eACzDxhH,GAKb0+G,GAAaC,SACT1sH,KAAM,OACNC,SAAU,WACVC,OAAQ,UAaZusH,EAAahzB,cACT2G,SAAUqsB,EAAaC,QAAQ1sH,MAGpBysH,O9H87vBT,SAAUp5H,EAAQiE,EAAqBrE,GAE7C,Y+H9+vBe,SAASu8H,KAAgE,GAAnCliH,GAAmC,6EAAlBywF,SAClE,iBADoF,QACnEl2E,OAAO,SAAC4nG,GACrB,OAAQA,EAAS/5H,MACb,IAAKsC,KAAc0D,IACf,OAA2D,KAAlD+zH,EAASpyF,YAAc3vB,QAAQJ,EAAS2wF,IAErD,KAAKjmG,KAAc2D,OAInB,QACI,OAAM,KAEf3H,OAAS,E/HwlwBhB,QAASytD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WgIzkwBlb,QAAS8tE,KAA+C,GAAnBC,GAAmB,uDAC3D,QACIj6H,KAAMk6H,EACND,aAID,QAASE,KAA6C,GAAlBC,GAAkB,uDACzD,QACIp6H,KAAMq6H,EACND,YAYD,QAASE,KACZ,OACIt6H,KAAMu6H,GAIP,QAASC,KACZ,OACIx6H,KAAMy6H,GAIP,QAASC,KAA6C,GAAjBC,KAAiB,wDACzD,QACI36H,KAAM46H,EACND,YAID,QAASE,GAAT,GAA8D,GAAzBhjE,GAAyB,EAAzBA,OAAyB,IAAjBn2D,KAChD,QACI1B,KAAM86H,EACNjjE,SACAn2D,eAJ6D,MAQ9D,QAASq5H,KACZ,OACI/6H,KAAMg7H,GAIP,QAASC,GAAuBC,GACnC,MAAO,UAAC/4G,EAAUjD,GACd,GAAM2vC,GAAUmJ,YAAwB94C,IACxCiD,IACIniB,KAAMm7H,EACNtsE,UACAqsE,cAKL,QAASE,KACZ,OACIp7H,KAAMq7H,GAIP,QAASC,GAAwBC,GAA+B,GAAd1sE,GAAc,yDACnE,OAAO,UAAC1sC,EAAUjD,GACd,GAAM6B,GAAQ7B,IADa,EAEW6B,EAA9BrL,IAAO0C,oBAFY,OAGJkwC,YAAavnC,GAAxBkmC,EAHe,EAGnBruC,GAHmB,EAImDzD,YAAgB4L,GAJnE,IAInBpI,yBAJmB,2BAIUd,KAJV,sBAImBe,GAJnB,EAImBA,GAAI4iH,EAJvB,EAIuBA,UAC5ClrG,EAAYrY,YAAkB8I,GAC9B06G,EAAeC,EAAqB36G,GAEtC46G,IAEJ,KAAK/iH,GAAiB,WAAXquC,EAAqB,CAC5B,GAAM20E,GAAuBC,IAAO36H,IAAI,MACnB,QAAjBu6H,EACAE,EAA8B,MAAjBF,GAAyC,IAAjBA,EAC9BG,IAEPD,EAAsC,MAAzBC,GAAyD,IAAzBA,GAWrD,GANIL,IAAoB33H,IAAgByC,OAEpCs1H,GAAa7B,EADQjoG,YAAqB9Q,GACc8tC,IAIxDv+B,EAAW,CAAC,GAAD,GACgBu+B,EAAnBl+B,qBADG,MAEPvY,IAAYuY,EAAUryB,OAAS,IAC/Bq9H,MAIU,UAAdH,IACAG,KAGJ,IAAMG,IACF97H,KAAM+7H,EACNJ,YACAzuC,OAAMA,EAIV,OADA/qE,GAAS25G,GACFA,GAUR,QAASE,GAA+BtsH,GAC3C,OACI1P,KAAMi8H,EACNvsH,WAKD,QAASwsH,GAA0BrkH,EAAOqjH,GAAU,UACvD,sBAAArmG,GAAA,0BAAO,WAAO1S,EAAUjD,GAAjB,GAAA+H,GAAA,6FACH9E,IAAWniB,KAAMm8H,EAAgBtkH,UAD9B,SAEgBsK,EAASwtC,aAAW93C,UAFpC,WAEGukH,EAFH,OAGCC,WACAD,GAAQA,EAAK7zE,MAAQ6zE,EAAK7zE,KAAKqG,UAJhC,uBAMOukC,GAAkBn7B,YAAwB94C,KAC1C2vC,EAPP,KAOsBskC,EAAoBipC,EAAK7zE,KAAKqG,UACnDC,EAAQ+b,WACF/S,EAAUhJ,EAAQqC,SAAWrC,EAAQqC,QAAQ/+B,OAAO,qBAAGvZ,KAAgBsiH,IAAU,IAAOrsE,EAAQqC,QAAQ,GAC9G/uC,EAASo3C,YAAc1K,IAVxB,UAWO1sC,EAASqzC,YAAaqC,GAX7B,eAYC11C,GAAS04G,GAA4BhjE,YACrCwkE,EAAel+B,YAAwBj/E,KAbxC,kBAcQm9G,EAdR,kCAiBIA,EAjBJ,4CAAP,4BAAAxnG,GAAA,0BAsBG,QAASynG,GAA2BpB,GACvC,MAAO,UAAC/4G,EAAUjD,GAAX,MAAwBiD,GAAS0tC,aAAW5B,WAAYitE,KAAapsF,KAAK,SAACstF,GAC9E,GAAIA,GAAQA,EAAK7zE,MAAQ6zE,EAAK7zE,KAAKqG,SAAU,CAEzC,GAAMukC,GAAkBn7B,YAAwB94C,KAC1C2vC,EAAUA,KAAKskC,EAAoBipC,EAAK7zE,KAAKqG,SACnDC,GAAQ+b,UACR,IAAM/S,GAAUhJ,EAAQqC,SAAWrC,EAAQqC,QAAQ/+B,OAAO,qBAAGvZ,KAAgBsiH,IAAU,IAAOrsE,EAAQqC,QAAQ,EAC9G/uC,GAASo3C,YAAc1K,IACvB1sC,EAASqzC,YAAaqC,IACtB11C,EAAS04G,GAA4BhjE,gBhI4yvBjD,GAAI0kE,GAAgBh/H,EAAoB,IACpCi/H,EAAqCj/H,EAAoB4D,EAAEo7H,GAG3D11B,EAAatpG,EAAoB,IAGjCk/H,EAAYl/H,EAAoB,IAGhCypG,EAA0BzpG,EAAoB,IAG9C6T,EAAM7T,EAAoB,GAI1Bk3E,EAAcl3E,EAAoB,IiIvgwBvBqY,2BACX6+D,IACA,YAAyC,QAAtCV,OAAsC,2BAA3BqlB,oBAA2B,SACaA,EAA1CQ,cAD6B,2BACX53F,KAC1B,iBAFqC,EACH,KADG,IjIwhwBzCmT,EAAkB5X,EAAoB,IAGtC+qD,EAAe/qD,EAAoB,IAGnCy6D,EAA0Bz6D,EAAoB,IAG9Cm/H,EAAqBn/H,EAAoB,IAGzCkY,EAAclY,EAAoB,GAGlC8T,EAAQ9T,EAAoB,EAgCDA,GAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOq6H,KACpE1+H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOg5H,KACpEr9H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO64H,KACpEl9H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOo5H,KACpEz9H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOk5H,KACpEv9H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOs4H,KACpE38H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOy4H,KAEpE98H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOm6H,KAGpEx+H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+6H,KACpEp/H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO24H,KACpEh9H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOu5H,KACpE59H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOy5H,KAElEz5H,EAAuB,EAAIo4H,EAC3Bp4H,EAAuB,EAAIu4H,EAE3Bv4H,EAAuB,EAAI04H,EAC3B14H,EAAuB,EAAI44H,EAC3B54H,EAAuB,EAAI84H,EAC3B94H,EAAuB,EAAIi5H,EAC3Bj5H,EAAuB,EAAIm5H,EAC3Bn5H,EAAuB,EAAIq5H,EAC3Br5H,EAAuB,EAAIw5H,EAC3Bx5H,EAAuB,EAAI05H,EAE3B15H,EAAuB,EAAIo6H,EAC3Bp6H,EAAuB,EAAIs6H,EAC3Bt6H,EAAuB,EAAI06H,CAC5D,IAAI5+G,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IgI9lwB1Oq+G,EAAsB,sBACtBrB,EAAmB,mBACnBH,EAA2B,2BAC3BO,EAAuB,uBACvBF,EAAiB,iBACjBZ,EAAmB,mBACnBG,EAAkB,kBAElB0B,EAAe,eACfI,EAAiB,iBAEjBQ,EAAkB,kBAClBpC,EAAe,eACfY,EAAc,cACdE,EAAa,chI82wBpB,SAAU19H,EAAQiE,EAAqBrE,GAE7C,YAmBA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GkIv5wB1d,QAASmhH,GAAgChwE,EAASiwE,GACrD,GAAMC,GAAgBlwE,EAAQz8C,OAE9B,IAAI0sH,IAAa/5H,IAAS6E,KAAM,CAC5B,GAAIo1H,IAAe,CAQnB,IAPAnwE,EAAQvQ,QAAQ,SAACqS,EAAQ1gC,GAAU,MACT0gC,EAAdiD,MACqC,cAFd,QAEtB35C,QAAQpV,IAAa6E,YAC1Bs1H,EAAc/uG,MAID,IAAjB+uG,EAEA,MADAD,GAAcn+G,OAAOo+G,EAAc,EAAG,GAAKC,iCAAgCA,IACpEF,EAKf,MADAA,GAAct+H,MAAOw+H,iCAAgCA,IAC9CF,ElI+2wBU,GAAIh8D,GAAsCvjE,EAAoB,GAE1D0/H,GAD8C1/H,EAAoB4D,EAAE2/D,GACxBvjE,EAAoB,IAChE2/H,EAA6C3/H,EAAoB,IACjE4/H,EAAqD5/H,EAAoB4D,EAAE+7H,GAC3EE,EAAoD7/H,EAAoB,IACxE8/H,EAA4D9/H,EAAoB4D,EAAEi8H,GAElFE,GAD2C//H,EAAoB,IACAA,EAAoB,MACnFggI,EAAuChgI,EAAoB,GAC3DigI,EAAwCjgI,EAAoB,KAC5DkgI,EAAmElgI,EAAoB,IACvFmgI,EAAwDngI,EAAoB,IACjGqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MkI13wB1hBy9D,GACFp7H,IAAa8D,KACb9D,IAAamE,iBAGXk3H,E,YAEF,WAAYzhH,GAAO,yEACTA,GADS,OAEf,GAAK0hH,gBAAkB,EAAKA,gBAAgBz8G,KAArB,GAFR,ElI4gxBnB,MA1GAg/C,GAAUw9D,EAAqB1hH,GAW/BilD,EAAay8D,IACT77H,IAAK,kBACLC,MAAO,WkI16wBO,MACsBsa,KAAKH,MAAzBvD,EADF,EACN2vC,KAAQ3vC,EAChB,OAFc,GACQ+nF,WACK,aAAP/nF,KlIg7wBpB7W,IAAK,SACLC,MAAO,WkI96wBF,MAUDsa,KAAKH,MARLywC,EAFC,EAEDA,QACAkxE,EAHC,EAGDA,cACAC,EAJC,EAIDA,mBACAC,EALC,EAKDA,eACAnB,EANC,EAMDA,SACgBoB,EAPf,EAODC,eACAjrG,EARC,EAQDA,YACAs1B,EATC,EASDA,KAGE41E,EAAiBvB,EAAgChwE,EAAQz6B,OAAO,kBAAwB,SAAxB,EAAGnyB,OAA+B68H,GAClGl8B,EAAYrkF,KAAKuhH,kBACfjlH,EAAO2vC,EAAP3vC,EAER,2BACmB,sBADnB,EAES,KAFT,QAIgBujE,QAAQA,mLAOfgiD,EAAe7vG,IAAI,SAACogC,EAAQ1gC,GAEzB,QAAI0gC,EAAOsuE,gCACP,MAAO,GAAP,iBAAsB,6BAAtB,EAA4C,KAA5C,aAAkF,IAItF,IAAMoB,GAAiB1vE,EAAOE,SAASz8B,OAAO,SAAC08B,GAAD,MAC1CkvE,IAA8B,aAAPnlH,IACrBqa,IAAgB0tE,GAAam9B,IAAkBjvE,EAAQj2C,IACvDqa,GAAe0tE,GAAc9xC,EAAQj2C,KACrCqa,GAAe47B,EAAQj2C,KACjB,aAAPA,GAAqBklH,IAAkBjvE,EAAQj2C,KAG9CylH,EAAgBD,EAAe9/H,MACrC,KAAKy/H,IAAuBp9B,IAED,IAAlB09B,GAAuBD,EAAe,GAAGxlH,KAAOklH,GAChDpvE,EAAOiD,MAAQlI,IAAck0E,EAAiBjvE,EAAOiD,MAAMrzD,OAAS,GAGzE,MAAO,KAGX,IAAM4/H,GAAiBD,GAAgC,IAAVjwG,EAzBV,EA4BY0gC,MA5BZ,IA4B3ByC,KA5B2B,2BA4BlBklB,eA5BkB,EA4BZ,GA5BY,EA4BDrlD,EA5BC,EA4BDA,SAC5BwtD,EAAOnI,EAAIhtD,QAAQ,gCAAiC,IACpD6lC,EAAYl+B,GAAYA,EAASk+B,UAAaR,EAAO91C,GACrDw2C,EAAUp+B,GAAYA,EAASo+B,QAE/BkvE,EAAYA,GAAG5vE,EAAO91C,GAAKoV,CAEjC,UACK,KADL,SAEkBkhC,EAFlB,eAGwBgvE,EAHxB,SAIkBE,EAJlB,QAKiBhvE,EALjB,SAMkBV,EAAOgpB,SANzB,OAQgBhpB,EAAOmD,OARvB,eASwBmsE,EATxB,KAUcx/C,EAVd,SAWkB9vB,EAAO19B,SAXzB,KAYc09B,EAAO9tD,KAZrB,SAakBi8H,EAblB,KAccnuE,EAAOiD,KAdrB,KAecjD,EAAO1uD,KAfrB,KAgBcguB,EAAQ,GATTswG,UlI67wBtBV,GkI9gxBuB5gH,YAkHlC4gH,GAAoB75B,cAChBn3C,WACAmxE,oBAAmBA,EAGvB,IAAMx5G,GAAkB,SAACxD,GAAD,OACpB6rC,QAAU7rC,EAAMwnC,MAAQxnC,EAAMwnC,KAAKqE,YACnCkxE,cAAe/8G,EAAMwnC,KAAKI,MAAQ5nC,EAAMwnC,KAAKI,KAAK/vC,GAClD2vC,KAAMD,YAAavnC,GACnBkS,YAAaD,YAAoBjS,GACjC4/E,UAAWl5C,YAAkB1mC,IAGlB+pF,iBAAQvmF,GAAiBq5G,IlIq6wBlC,SAAUjgI,EAAQD,EAASH,GAEjC,YmInkxBA,IAAIghI,KAMJ5gI,GAAOD,QAAU6gI,GnIklxBX,SAAU5gI,EAAQD,EAASH,GAEjC,YoI3kxBA,SAASihI,GAAgB99D,EAAMl5B,EAAOi3F,GACpC,GAAIC,GAAmBl3F,EAAMguD,eAAempC,wBAAwBF,EACpE,OAAOG,GAAYl+D,EAAMg+D,GAS3B,QAASG,GAAgCn+D,EAAMo+D,EAAOt3F,GAIpD,GAAI/oB,GAAW+/G,EAAgB99D,EAAMl5B,EAAOs3F,EACxCrgH,KACF+oB,EAAMu3F,mBAAqBC,EAAex3F,EAAMu3F,mBAAoBtgH,GACpE+oB,EAAMy3F,mBAAqBD,EAAex3F,EAAMy3F,mBAAoBv+D,IAWxE,QAASw+D,GAAmC13F,GACtCA,GAASA,EAAMguD,eAAempC,yBAChCQ,EAAiBC,iBAAiB53F,EAAMouD,YAAaipC,EAAiCr3F,GAO1F,QAAS63F,GAA6C73F,GACpD,GAAIA,GAASA,EAAMguD,eAAempC,wBAAyB,CACzD,GAAIlpC,GAAajuD,EAAMouD,YACnB0pC,EAAa7pC,EAAa0pC,EAAiBI,kBAAkB9pC,GAAc,IAC/E0pC,GAAiBC,iBAAiBE,EAAYT,EAAiCr3F,IASnF,QAASg4F,GAAqB9+D,EAAM++D,EAAkBj4F,GACpD,GAAIA,GAASA,EAAMguD,eAAekpC,iBAAkB,CAClD,GAAIA,GAAmBl3F,EAAMguD,eAAekpC,iBACxCjgH,EAAWmgH,EAAYl+D,EAAMg+D,EAC7BjgH,KACF+oB,EAAMu3F,mBAAqBC,EAAex3F,EAAMu3F,mBAAoBtgH,GACpE+oB,EAAMy3F,mBAAqBD,EAAex3F,EAAMy3F,mBAAoBv+D,KAU1E,QAASg/D,GAAiCl4F,GACpCA,GAASA,EAAMguD,eAAekpC,kBAChCc,EAAqBh4F,EAAMouD,YAAa,KAAMpuD,GAIlD,QAASm4F,GAA6Bp5C,GACpCq5C,EAAmBr5C,EAAQ24C,GAG7B,QAASW,GAAuCt5C,GAC9Cq5C,EAAmBr5C,EAAQ84C,GAG7B,QAASS,GAA+BC,EAAOC,EAAOzyG,EAAMk4B,GAC1D05E,EAAiBc,mBAAmB1yG,EAAMk4B,EAAI+5E,EAAsBO,EAAOC,GAG7E,QAASE,GAA2B35C,GAClCq5C,EAAmBr5C,EAAQm5C,GAnG7B,GAAIS,GAAiB,EAAQ,KACzBhB,EAAmB,EAAQ,KAE3BH,EAAiB,EAAQ,KACzBY,EAAqB,EAAQ,KAG7BhB,GAFU,EAAQ,GAEJuB,EAAevB,aA0G7BwB,GACFT,6BAA8BA,EAC9BE,uCAAwCA,EACxCK,2BAA4BA,EAC5BJ,+BAAgCA,EAGlCniI,GAAOD,QAAU0iI,GpIymxBX,SAAUziI,EAAQD,EAASH,GAEjC,YqIjrxBA,SAAS8iI,GAAcvmD,GACrB,MAAe,WAARA,GAA4B,UAARA,GAA2B,WAARA,GAA4B,aAARA,EAGpE,QAASwmD,GAAwB1/H,EAAMZ,EAAMmc,GAC3C,OAAQvb,GACN,IAAK,UACL,IAAK,iBACL,IAAK,gBACL,IAAK,uBACL,IAAK,cACL,IAAK,qBACL,IAAK,cACL,IAAK,qBACL,IAAK,YACL,IAAK,mBACH,SAAUub,EAAMokH,WAAYF,EAAcrgI,GAC5C,SACE,OAAM,GApEZ,GAAIgjE,GAAiB,EAAQ,GAEzBw9D,EAAsB,EAAQ,KAC9BrB,EAAmB,EAAQ,KAC3BsB,EAAkB,EAAQ,KAE1BzB,EAAiB,EAAQ,KACzBY,EAAqB,EAAQ,KAM7Bc,GALY,EAAQ,OAWpBC,EAAa,KASbC,EAA8B,SAAUp5F,EAAOq5F,GAC7Cr5F,IACF23F,EAAiB2B,yBAAyBt5F,EAAOq5F,GAE5Cr5F,EAAMsvD,gBACTtvD,EAAM7rB,YAAYm2E,QAAQtqD,KAI5Bu5F,EAAuC,SAAUjiI,GACnD,MAAO8hI,GAA4B9hI,GAAEA,IAEnCkiI,EAAsC,SAAUliI,GAClD,MAAO8hI,GAA4B9hI,GAAEA,IAGnCmiI,EAAmB,SAAUvgE,GAG/B,MAAO,IAAMA,EAAKwgE,aA+ChBf,GAKF5tC,WAME4uC,uBAAwBX,EAAoBW,uBAK5CC,yBAA0BZ,EAAoBY,0BAWhDC,YAAa,SAAU3gE,EAAMg+D,EAAkBjgH,GACvB,kBAAbA,IAAuLukD,EAAe,KAAM07D,QAAyBjgH,GAE9O,IAAI1c,GAAMk/H,EAAiBvgE,IACGggE,EAAahC,KAAsBgC,EAAahC,QACtD38H,GAAO0c,CAE/B,IAAI6iH,GAAed,EAAoBe,wBAAwB7C,EAC3D4C,IAAgBA,EAAaE,gBAC/BF,EAAaE,eAAe9gE,EAAMg+D,EAAkBjgH,IASxDmgH,YAAa,SAAUl+D,EAAMg+D,GAG3B,GAAI+C,GAA0Bf,EAAahC,EAC3C,IAAI4B,EAAwB5B,EAAkBh+D,EAAK2vB,gBAAgBrwF,KAAM0gE,EAAK2vB,gBAAgBl0E,OAC5F,MAAO,KAET,IAAIpa,GAAMk/H,EAAiBvgE,EAC3B,OAAO+gE,IAA2BA,EAAwB1/H,IAS5D2/H,eAAgB,SAAUhhE,EAAMg+D,GAC9B,GAAI4C,GAAed,EAAoBe,wBAAwB7C,EAC3D4C,IAAgBA,EAAaK,oBAC/BL,EAAaK,mBAAmBjhE,EAAMg+D,EAGxC,IAAI+C,GAA0Bf,EAAahC,EAEvC+C,UAEKA,GADGR,EAAiBvgE,KAU/BkhE,mBAAoB,SAAUlhE,GAC5B,GAAI3+D,GAAMk/H,EAAiBvgE,EAC3B,KAAK,GAAIg+D,KAAoBgC,GAC3B,GAAKA,EAAa/hI,eAAe+/H,IAI5BgC,EAAahC,GAAkB38H,GAApC,CAIA,GAAIu/H,GAAed,EAAoBe,wBAAwB7C,EAC3D4C,IAAgBA,EAAaK,oBAC/BL,EAAaK,mBAAmBjhE,EAAMg+D,SAGjCgC,GAAahC,GAAkB38H,KAW1C8/H,cAAe,SAAUC,EAAcrsC,EAAYC,EAAaC,GAG9D,IAAK,GAFDpP,GACAw7C,EAAUvB,EAAoBuB,QACzBnkI,EAAI,EAAGA,EAAImkI,EAAQzjI,OAAQV,IAAK,CAEvC,GAAIokI,GAAiBD,EAAQnkI,EAC7B,IAAIokI,EAAgB,CAClB,GAAIC,GAAkBD,EAAeH,cAAcC,EAAcrsC,EAAYC,EAAaC,EACtFssC,KACF17C,EAASy4C,EAAez4C,EAAQ07C,KAItC,MAAO17C,IAUT27C,cAAe,SAAU37C,GACnBA,IACFo6C,EAAa3B,EAAe2B,EAAYp6C,KAS5C47C,kBAAmB,SAAUtB,GAG3B,GAAIuB,GAAuBzB,CAC3BA,GAAa,KACTE,EACFjB,EAAmBwC,EAAsBrB,GAEzCnB,EAAmBwC,EAAsBpB,GAEzCL,GAAgN39D,EAAe,MAEjOy9D,EAAgB4B,sBAMlBC,QAAS,WACP5B,MAGF6B,kBAAmB,WACjB,MAAO7B,IAKX/iI,GAAOD,QAAUyiI,GrIovxBX,SAAUxiI,EAAQD,EAASH,GAEjC,YsIv9xBA,SAASilI,GAAiBhtC,EAAgBitC,EAAgB/sC,EAAaC,GACrE,MAAOJ,GAAez3F,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GAxChF,GAAIJ,GAAiB,EAAQ,IAEzBmtC,EAAiB,EAAQ,KAMzBC,GACFC,KAAM,SAAUp7F,GACd,GAAIA,EAAMo7F,KACR,MAAOp7F,GAAMo7F,IAGf,IAAIhlH,GAAS8kH,EAAel7F,EAC5B,IAAI5pB,EAAO5f,SAAW4f,EAEpB,MAAOA,EAGT,IAAI+rG,GAAM/rG,EAAOilH,aAEjB,OAAIlZ,GACKA,EAAImZ,aAAenZ,EAAIoZ,aAEvB/kI,QAGX2pC,OAAQ,SAAUH,GAChB,MAAOA,GAAMG,QAAU,GAc3B4tD,GAAewB,aAAayrC,EAAkBG,GAE9ChlI,EAAOD,QAAU8kI,GtI+gyBX,SAAU7kI,EAAQD,EAASH,GAEjC,YuIrjyBA,IAAIylI,IAOFpvE,OAAQ,SAAU7xD,GAChBA,EAAIkhI,+BAGN/hI,IAAK,SAAUa,GACb,MAAOA,GAAIkhI,wBAGb51F,IAAK,SAAUtrC,GACb,WAAO,KAAAA,EAAIkhI,wBAGb71F,IAAK,SAAUrrC,EAAKC,GAClBD,EAAIkhI,uBAAyBjhI,GAKjCrE,GAAOD,QAAUslI,GvI+kyBX,SAAUrlI,EAAQD,EAASH,GAEjC,YwIznyBA,IAAI2lI,IACA7lH,mBAAkBA,EAClBiD,cAAaA,EACbyjF,cAAaA,EACbnjF,aAAYA,EACZuiH,iBAAgBA,EAChBC,QAAOA,EACPnmH,WAAUA,EACVjd,MAAKA,GAGLqjI,GACAziI,MAAKA,EACLtC,QAAOA,EACPI,WAAUA,EACV+7B,QAAOA,EACPxrB,WAAUA,EACVq0H,OAAMA,GAGNC,EAA2E,kBAAjC9kI,QAAOwsD,qBAErDttD,GAAOD,QAAU,SAA8B8lI,EAAiBC,EAAiBC,GAC7E,GAA+B,gBAApBD,GAA8B,CACrC,GAAIn8H,GAAO7I,OAAOsuC,oBAAoB02F,EAGlCF,KACAj8H,EAAOA,EAAK6nB,OAAO1wB,OAAOwsD,sBAAsBw4E,IAGpD,KAAK,GAAI7lI,GAAI,EAAGA,EAAI0J,EAAKhJ,SAAUV,EAC/B,KAAKslI,EAAc57H,EAAK1J,KAAQylI,EAAc/7H,EAAK1J,KAAS8lI,GAAkBA,EAAcp8H,EAAK1J,KAC7F,IACI4lI,EAAgBl8H,EAAK1J,IAAM6lI,EAAgBn8H,EAAK1J,IAClD,MAAO8D,KAOrB,MAAO8hI,KxIsoyBL,SAAU7lI,EAAQiE,EAAqBrE,GAE7C,YyItryBe,SAAS0lH,GAAiBiU,EAAWC,GAChD,GAAMwM,GAAoBzM,EAAYv2C,IAAOu2C,GAAav2C,MACpDijD,EAAqBD,EAAkB/zH,OAAO,YAChDi0H,EAAU,EACd,IAAI1M,EAAS,CACT,GAAM2M,GAAkBnjD,IAAOw2C,GACzB4M,EAAmBD,EAAgBl0H,OAAO,WAE5Ci0H,GADDE,IAAqBH,EACVG,EACJA,EAAmBH,EACZA,EAAb,IAAmCG,EAEtBA,EAAb,IAAiCH,MAGrCC,MAAaD,CAGjB,OAAOC,GApBX,mBAAAjmI,EAAA,QzIqtyBM,SAAUD,EAAQD,EAASH,a0IrtyBjC,MAME,SAAUgT,EAAQ++F,GAC+C3xG,EAAOD,QAGlE,WAAc,YAIlB,SAASsmI,KACL,MAAOC,IAAaj1H,MAAM,KAAMC,WASpC,QAASoe,GAAQ22B,GACb,MAAOA,aAAiB1zC,QAAmD,mBAA1C7R,OAAOC,UAAU67B,SAASz8B,KAAKkmD,GAGpE,QAAS5lB,GAAS4lB,GAGd,MAAgB,OAATA,GAA2D,oBAA1CvlD,OAAOC,UAAU67B,SAASz8B,KAAKkmD,GAG3D,QAASkgF,GAAcpiI,GACnB,GAAIuoH,EACJ,KAAKA,IAAKvoH,GAEN,OAAM,CAEV,UAGJ,QAASqiI,GAAOngF,GACZ,MAAOA,aAAiBwI,OAAkD,kBAA1C/tD,OAAOC,UAAU67B,SAASz8B,KAAKkmD,GAGnE,QAAS11B,GAAIpe,EAAKomB,GACd,GAAc14B,GAAVwmI,IACJ,KAAKxmI,EAAI,EAAGA,EAAIsS,EAAI5R,SAAUV,EAC1BwmI,EAAI5lI,KAAK83B,EAAGpmB,EAAItS,GAAIA,GAExB,OAAOwmI,GAGX,QAASC,GAAWp9G,EAAG5C,GACnB,MAAO5lB,QAAOC,UAAUC,eAAeb,KAAKmpB,EAAG5C,GAGnD,QAASigH,GAAOr9G,EAAG5C,GACf,IAAK,GAAIzmB,KAAKymB,GACNggH,EAAWhgH,EAAGzmB,KACdqpB,EAAErpB,GAAKymB,EAAEzmB,GAYjB,OARIymI,GAAWhgH,EAAG,cACd4C,EAAEsT,SAAWlW,EAAEkW,UAGf8pG,EAAWhgH,EAAG,aACd4C,EAAE67D,QAAUz+D,EAAEy+D,SAGX77D,EAGX,QAASs9G,GAAuBvgF,EAAOp0C,EAAQ66G,EAAQ+Z,GACnD,MAAOC,IAAiBzgF,EAAOp0C,EAAQ66G,EAAQ+Z,MAAc/sD,MAGjE,QAASitD,KAEL,OACIC,SACAC,gBACAC,eACAC,UAAmB,EACnBC,cAAkB,EAClBC,aACAC,aAAkB,KAClBC,iBACAC,mBACAC,OACAC,mBACAC,SAAkB,MAI1B,QAASC,GAAgB9kI,GAIrB,MAHa,OAATA,EAAE+kI,MACF/kI,EAAE+kI,IAAMd,KAELjkI,EAAE+kI,IAqBb,QAASC,GAAehlI,GACpB,GAAkB,MAAdA,EAAEilI,SAAkB,CACpB,GAAIjlG,GAAQ8kG,EAAgB9kI,GACxBklI,EAAcrzG,GAAKx0B,KAAK2iC,EAAM4kG,gBAAiB,SAAUznI,GACzD,MAAY,OAALA,IAEPgoI,GAAcC,MAAMplI,EAAEgyE,GAAGg9C,YACzBhvF,EAAMqkG,SAAW,IAChBrkG,EAAMkkG,QACNlkG,EAAMwkG,eACNxkG,EAAMqlG,iBACNrlG,EAAMukG,YACNvkG,EAAMykG,gBACNzkG,EAAM0kG,mBACL1kG,EAAM6kG,UAAa7kG,EAAM6kG,UAAYK,EAS3C,IAPIllI,EAAEslI,UACFH,EAAaA,GACe,IAAxBnlG,EAAMskG,eACwB,IAA9BtkG,EAAMmkG,aAAatmI,iBACnBmiC,EAAMulG,SAGS,MAAnBvnI,OAAOwnI,UAAqBxnI,OAAOwnI,SAASxlI,GAI5C,MAAOmlI,EAHPnlI,GAAEilI,SAAWE,EAMrB,MAAOnlI,GAAEilI,SAGb,QAASQ,GAAsBzlG,GAC3B,GAAIhgC,GAAI8jI,EAAsBxhD,IAQ9B,OAPa,OAATtiD,EACA6jG,EAAOiB,EAAgB9kI,GAAIggC,GAG3B8kG,EAAgB9kI,GAAG0kI,mBAGhB1kI,EAGX,QAAS0lI,GAAYniF,GACjB,WAAO,KAAAA,EAOX,QAASoiF,GAAW3gF,EAAIl4B,GACpB,GAAI3vB,GAAGsvC,EAAM+G,CAiCb,IA/BKkyF,EAAY54G,EAAK84G,oBAClB5gF,EAAG4gF,iBAAmB94G,EAAK84G,kBAE1BF,EAAY54G,EAAKqlD,MAClBntB,EAAGmtB,GAAKrlD,EAAKqlD,IAEZuzD,EAAY54G,EAAK+4G,MAClB7gF,EAAG6gF,GAAK/4G,EAAK+4G,IAEZH,EAAY54G,EAAKg5G,MAClB9gF,EAAG8gF,GAAKh5G,EAAKg5G,IAEZJ,EAAY54G,EAAKw4G,WAClBtgF,EAAGsgF,QAAUx4G,EAAKw4G,SAEjBI,EAAY54G,EAAKi5G,QAClB/gF,EAAG+gF,KAAOj5G,EAAKi5G,MAEdL,EAAY54G,EAAKk5G,UAClBhhF,EAAGghF,OAASl5G,EAAKk5G,QAEhBN,EAAY54G,EAAKm5G,WAClBjhF,EAAGihF,QAAUn5G,EAAKm5G,SAEjBP,EAAY54G,EAAKi4G,OAClB//E,EAAG+/E,IAAMD,EAAgBh4G,IAExB44G,EAAY54G,EAAKo5G,WAClBlhF,EAAGkhF,QAAUp5G,EAAKo5G,SAGlBC,GAAiBtoI,OAAS,EAC1B,IAAKV,IAAKgpI,IACN15F,EAAO05F,GAAiBhpI,GACxBq2C,EAAM1mB,EAAK2f,GACNi5F,EAAYlyF,KACbwR,EAAGvY,GAAQ+G,EAKvB,OAAOwR,GAMX,QAASohF,GAAOxxH,GACZ+wH,EAAW9pH,KAAMjH,GACjBiH,KAAKm2D,GAAK,GAAIjmB,MAAkB,MAAbn3C,EAAOo9D,GAAap9D,EAAOo9D,GAAGg9C,UAAY1sC,UAGzD+jD,KACAA,MACA9C,EAAmB+C,aAAazqH,MAChCwqH,OAIR,QAASE,GAAUllI,GACf,MAAOA,aAAe+kI,IAAkB,MAAP/kI,GAAuC,MAAxBA,EAAIukI,iBAGxD,QAASY,GAAU/xD,GACf,MAAIA,GAAS,EAEFt6C,KAAKssG,KAAKhyD,IAAW,EAErBt6C,KAAK+oD,MAAMzO,GAI1B,QAASiyD,GAAMC,GACX,GAAIC,IAAiBD,EACjBplI,EAAQ,CAMZ,OAJsB,KAAlBqlI,GAAuB30F,SAAS20F,KAChCrlI,EAAQilI,EAASI,IAGdrlI,EAIX,QAASslI,GAAcC,EAAQC,EAAQC,GACnC,GAGI7pI,GAHAuxC,EAAMvU,KAAKgpD,IAAI2jD,EAAOjpI,OAAQkpI,EAAOlpI,QACrCopI,EAAa9sG,KAAK8oD,IAAI6jD,EAAOjpI,OAASkpI,EAAOlpI,QAC7CqpI,EAAQ,CAEZ,KAAK/pI,EAAI,EAAGA,EAAIuxC,EAAKvxC,KACZ6pI,GAAeF,EAAO3pI,KAAO4pI,EAAO5pI,KACnC6pI,GAAeN,EAAMI,EAAO3pI,MAAQupI,EAAMK,EAAO5pI,MACnD+pI,GAGR,OAAOA,GAAQD,EAGnB,QAASx4H,GAAKozB,QACN0hG,EAAmB4D,sCACPnmI,GAA6BA,EAAQyN,MACjDzN,EAAQyN,KAAK,wBAA0BozB,GAI/C,QAASulG,GAAUvlG,EAAKhM,GACpB,GAAIwxG,KAEJ,OAAOxD,GAAO,WAIV,GAH6C,MAAzCN,EAAmB+D,oBACnB/D,EAAmB+D,mBAAmB,KAAMzlG,GAE5CwlG,EAAW,CAGX,IAAK,GADDjhH,GADAsC,KAEKvrB,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAEvC,GADAipB,EAAM,GACsB,gBAAjB5X,WAAUrR,GAAiB,CAClCipB,GAAO,MAAQjpB,EAAI,IACnB,KAAK,GAAImE,KAAOkN,WAAU,GACtB4X,GAAO9kB,EAAM,KAAOkN,UAAU,GAAGlN,GAAO,IAE5C8kB,GAAMA,EAAI1W,MAAM,GAAI,OAEpB0W,GAAM5X,UAAUrR,EAEpBurB,GAAK3qB,KAAKqoB,GAEd3X,EAAKozB,EAAM,gBAAkBhyB,MAAM5R,UAAUyR,MAAMrS,KAAKqrB,GAAMoF,KAAK,IAAM,SAAYjvB,QAASuQ,OAC9Fi4H,KAEJ,MAAOxxG,GAAGtnB,MAAMsN,KAAMrN,YACvBqnB,GAKP,QAAS0xG,GAAgBpnI,EAAM0hC,GACkB,MAAzC0hG,EAAmB+D,oBACnB/D,EAAmB+D,mBAAmBnnI,EAAM0hC,GAE3C2lG,GAAarnI,KACdsO,EAAKozB,GACL2lG,GAAarnI,OAOrB,QAAS02F,GAAWtzC,GAChB,MAAOA,aAAiBgC,WAAsD,sBAA1CvnD,OAAOC,UAAU67B,SAASz8B,KAAKkmD,GAGvE,QAASkkF,GAAiB7yH,GACtB,GAAI63B,GAAMtvC,CACV,KAAKA,IAAKyX,GACN63B,EAAO73B,EAAOzX,GACV05F,EAAWpqD,GACX5wB,KAAK1e,GAAKsvC,EAEV5wB,KAAK,IAAM1e,GAAKsvC,CAGxB5wB,MAAK23G,QAAU5+G,EAGfiH,KAAK6rH,qBAAuB,GAAIjtF,QAAO5+B,KAAK8rH,cAAcvqH,OAAS,IAAM,UAAYA,QAGzF,QAASwqH,GAAaC,EAAcC,GAChC,GAAoCr7F,GAAhCk3F,EAAME,KAAWgE,EACrB,KAAKp7F,IAAQq7F,GACLlE,EAAWkE,EAAar7F,KACpB9O,EAASkqG,EAAap7F,KAAU9O,EAASmqG,EAAYr7F,KACrDk3F,EAAIl3F,MACJo3F,EAAOF,EAAIl3F,GAAOo7F,EAAap7F,IAC/Bo3F,EAAOF,EAAIl3F,GAAOq7F,EAAYr7F,KACF,MAArBq7F,EAAYr7F,GACnBk3F,EAAIl3F,GAAQq7F,EAAYr7F,SAEjBk3F,GAAIl3F,GAIvB,KAAKA,IAAQo7F,GACLjE,EAAWiE,EAAcp7F,KACpBm3F,EAAWkE,EAAar7F,IACzB9O,EAASkqG,EAAap7F,MAE1Bk3F,EAAIl3F,GAAQo3F,KAAWF,EAAIl3F,IAGnC,OAAOk3F,GAGX,QAASoE,GAAOnzH,GACE,MAAVA,GACAiH,KAAK8wB,IAAI/3B,GA6BjB,QAASozH,GAA2B1mI,EAAK2mI,EAAKp5H,GAC1C,GAAIq5H,GAASrsH,KAAKssH,UAAU7mI,IAAQua,KAAKssH,UAAoB,QAC7D,OAAOtxC,GAAWqxC,GAAUA,EAAO7qI,KAAK4qI,EAAKp5H,GAAOq5H,EAYxD,QAASE,GAAgB9mI,GACrB,GAAI6N,GAAS0M,KAAKwsH,gBAAgB/mI,GAC9BgnI,EAAczsH,KAAKwsH,gBAAgB/mI,EAAIivD,cAE3C,OAAIphD,KAAWm5H,EACJn5H,GAGX0M,KAAKwsH,gBAAgB/mI,GAAOgnI,EAAY1/G,QAAQ,mBAAoB,SAAU4qB,GAC1E,MAAOA,GAAI9jC,MAAM,KAGdmM,KAAKwsH,gBAAgB/mI,IAKhC,QAASinI,KACL,MAAO1sH,MAAK2sH,aAMhB,QAASC,GAASh0D,GACd,MAAO54D,MAAK6sH,SAAS9/G,QAAQ,KAAM6rD,GAmBvC,QAASk0D,GAAwBl0D,EAAQm0D,EAAep0D,EAAQq0D,GAC5D,GAAIX,GAASrsH,KAAKitH,cAAct0D,EAChC,OAAQqiB,GAAWqxC,GACfA,EAAOzzD,EAAQm0D,EAAep0D,EAAQq0D,GACtCX,EAAOt/G,QAAQ,MAAO6rD,GAG9B,QAASs0D,GAAYC,EAAMd,GACvB,GAAI/4H,GAAS0M,KAAKitH,cAAcE,EAAO,EAAI,SAAW,OACtD,OAAOnyC,GAAW1nF,GAAUA,EAAO+4H,GAAU/4H,EAAOyZ,QAAQ,MAAOs/G,GAKvE,QAASe,GAAcC,EAAMC,GACzB,GAAIC,GAAYF,EAAKh3G,aACrBm3G,IAAQD,GAAaC,GAAQD,EAAY,KAAOC,GAAQF,GAAaD,EAGzE,QAASI,GAAe3a,GACpB,MAAwB,gBAAVA,GAAqB0a,GAAQ1a,IAAU0a,GAAQ1a,EAAMz8F,sBAGvE,QAASq3G,GAAqBC,GAC1B,GACIC,GACAh9F,EAFAi9F,IAIJ,KAAKj9F,IAAQ+8F,GACL5F,EAAW4F,EAAa/8F,KACxBg9F,EAAiBH,EAAe78F,MAE5Bi9F,EAAgBD,GAAkBD,EAAY/8F,GAK1D,OAAOi9F,GAKX,QAASC,GAAgBT,EAAMU,GAC3BC,GAAWX,GAAQU,EAGvB,QAASE,GAAoBC,GACzB,GAAIpb,KACJ,KAAK,GAAIt6F,KAAK01G,GACVpb,EAAM5wH,MAAMmrI,KAAM70G,EAAGu1G,SAAUC,GAAWx1G,IAK9C,OAHAs6F,GAAM/oD,KAAK,SAAUp/C,EAAG5C,GACpB,MAAO4C,GAAEojH,SAAWhmH,EAAEgmH,WAEnBjb,EAGX,QAASqb,GAAYd,EAAMe,GACvB,MAAO,UAAU1oI,GACb,MAAa,OAATA,GACA2oI,EAAaruH,KAAMqtH,EAAM3nI,GACzBgiI,EAAmB+C,aAAazqH,KAAMouH,GAC/BpuH,MAEAsuH,EAAatuH,KAAMqtH,IAKtC,QAASiB,GAAclC,EAAKiB,GACxB,MAAOjB,GAAIplD,UACPolD,EAAIj2D,GAAG,OAASi2D,EAAIjC,OAAS,MAAQ,IAAMkD,KAAU5mD,IAG7D,QAAS4nD,GAAcjC,EAAKiB,EAAM3nI,GAC1B0mI,EAAIplD,WACJolD,EAAIj2D,GAAG,OAASi2D,EAAIjC,OAAS,MAAQ,IAAMkD,GAAM3nI,GAMzD,QAAS6oI,GAAWzb,GAEhB,MADAA,GAAQ2a,EAAe3a,GACnB93B,EAAWh7E,KAAK8yG,IACT9yG,KAAK8yG,KAET9yG,KAIX,QAASwuH,GAAW1b,EAAOptH,GACvB,GAAqB,gBAAVotH,GAAoB,CAC3BA,EAAQ4a,EAAqB5a,EAE7B,KAAK,GADD2b,GAAcR,EAAoBnb,GAC7BxxH,EAAI,EAAGA,EAAImtI,EAAYzsI,OAAQV,IACpC0e,KAAKyuH,EAAYntI,GAAG+rI,MAAMva,EAAM2b,EAAYntI,GAAG+rI,WAInD,IADAva,EAAQ2a,EAAe3a,GACnB93B,EAAWh7E,KAAK8yG,IAChB,MAAO9yG,MAAK8yG,GAAOptH,EAG3B,OAAOsa,MAGX,QAAS0uH,GAAS91D,EAAQ+1D,EAAcC,GACpC,GAAIC,GAAY,GAAKvwG,KAAK8oD,IAAIxO,GAC1Bk2D,EAAcH,EAAeE,EAAU7sI,MAE3C,QADW42E,GAAU,EACLg2D,EAAY,IAAM,GAAM,KACpCtwG,KAAKywG,IAAI,GAAIzwG,KAAKC,IAAI,EAAGuwG,IAAc7wG,WAAWiK,OAAO,GAAK2mG,EAetE,QAASG,GAAgBv4G,EAAOw4G,EAAQrC,EAASn2F,GAC7C,GAAIzrB,GAAOyrB,CACa,iBAAbA,KACPzrB,EAAO,WACH,MAAOhL,MAAKy2B,OAGhBhgB,IACAy4G,GAAqBz4G,GAASzL,GAE9BikH,IACAC,GAAqBD,EAAO,IAAM,WAC9B,MAAOP,GAAS1jH,EAAKtY,MAAMsN,KAAMrN,WAAYs8H,EAAO,GAAIA,EAAO,MAGnErC,IACAsC,GAAqBtC,GAAW,WAC5B,MAAO5sH,MAAKkuG,aAAa0e,QAAQ5hH,EAAKtY,MAAMsN,KAAMrN,WAAY8jB,KAK1E,QAAS04G,GAAuBznF,GAC5B,MAAIA,GAAMp9B,MAAM,YACLo9B,EAAM36B,QAAQ,WAAY,IAE9B26B,EAAM36B,QAAQ,MAAO,IAGhC,QAASqiH,GAAmB97H,GACxB,GAA4ChS,GAAGU,EAA3Cm/C,EAAQ7tC,EAAOgX,MAAM+kH,GAEzB,KAAK/tI,EAAI,EAAGU,EAASm/C,EAAMn/C,OAAQV,EAAIU,EAAQV,IACvC4tI,GAAqB/tF,EAAM7/C,IAC3B6/C,EAAM7/C,GAAK4tI,GAAqB/tF,EAAM7/C,IAEtC6/C,EAAM7/C,GAAK6tI,EAAuBhuF,EAAM7/C,GAIhD,OAAO,UAAU8qI,GACb,GAAiB9qI,GAAb+qI,EAAS,EACb,KAAK/qI,EAAI,EAAGA,EAAIU,EAAQV,IACpB+qI,GAAUlrF,EAAM7/C,YAAcooD,UAAWvI,EAAM7/C,GAAGE,KAAK4qI,EAAK94H,GAAU6tC,EAAM7/C,EAEhF,OAAO+qI,IAKf,QAASiD,GAAanrI,EAAGmP,GACrB,MAAKnP,GAAE6iF,WAIP1zE,EAASi8H,EAAaj8H,EAAQnP,EAAE+pH,cAChCshB,GAAgBl8H,GAAUk8H,GAAgBl8H,IAAW87H,EAAmB97H,GAEjEk8H,GAAgBl8H,GAAQnP,IANpBA,EAAE+pH,aAAawe,cAS9B,QAAS6C,GAAaj8H,EAAQ66G,GAG1B,QAASshB,GAA4B/nF,GACjC,MAAOymE,GAAOoe,eAAe7kF,IAAUA,EAH3C,GAAIpmD,GAAI,CAOR,KADAouI,GAAsBltG,UAAY,EAC3BlhC,GAAK,GAAKouI,GAAsB9pG,KAAKtyB,IACxCA,EAASA,EAAOyZ,QAAQ2iH,GAAuBD,GAC/CC,GAAsBltG,UAAY,EAClClhC,GAAK,CAGT,OAAOgS,GA8BX,QAASq8H,GAAel5G,EAAOkmC,EAAOizE,GAClCC,GAAQp5G,GAASukE,EAAWr+B,GAASA,EAAQ,SAAUmzE,EAAU5hB,GAC7D,MAAQ4hB,IAAYF,EAAeA,EAAcjzE,GAIzD,QAASozE,GAAuBt5G,EAAO1d,GACnC,MAAKgvH,GAAW8H,GAASp5G,GAIlBo5G,GAAQp5G,GAAO1d,EAAO0wH,QAAS1wH,EAAOsxH,SAHlC,GAAIzrF,QAAOoxF,EAAev5G,IAOzC,QAASu5G,GAAe3qI,GACpB,MAAO4qI,IAAY5qI,EAAE0nB,QAAQ,KAAM,IAAIA,QAAQ,sCAAuC,SAAUmjH,EAASC,EAAIC,EAAIC,EAAIC,GACjH,MAAOH,IAAMC,GAAMC,GAAMC,KAIjC,QAASL,IAAY5qI,GACjB,MAAOA,GAAE0nB,QAAQ,yBAA0B,QAK/C,QAASwjH,IAAe95G,EAAOggB,GAC3B,GAAIn1C,GAAG0pB,EAAOyrB,CASd,KARqB,gBAAVhgB,KACPA,GAASA,IAEW,gBAAbggB,KACPzrB,EAAO,SAAU08B,EAAOvG,GACpBA,EAAM1K,GAAYo0F,EAAMnjF,KAG3BpmD,EAAI,EAAGA,EAAIm1B,EAAMz0B,OAAQV,IAC1BigH,GAAO9qF,EAAMn1B,IAAM0pB,EAI3B,QAASwlH,IAAmB/5G,EAAOggB,GAC/B85F,GAAc95G,EAAO,SAAUixB,EAAOvG,EAAOpoC,EAAQ0d,GACjD1d,EAAO03H,GAAK13H,EAAO03H,OACnBh6F,EAASiR,EAAO3uC,EAAO03H,GAAI13H,EAAQ0d,KAI3C,QAASi6G,IAAwBj6G,EAAOixB,EAAO3uC,GAC9B,MAAT2uC,GAAiBqgF,EAAWxmB,GAAQ9qF,IACpC8qF,GAAO9qF,GAAOixB,EAAO3uC,EAAOi1G,GAAIj1G,EAAQ0d,GA+BhD,QAASk6G,IAAY1a,EAAMhF,GACvB,MAAO,IAAI/gE,MAAKA,KAAK0gF,IAAI3a,EAAMhF,EAAQ,EAAG,IAAI4f,aAsDlD,QAASC,IAAc3sI,EAAGmP,GACtB,MAAKnP,GAGE4sB,EAAQ/Q,KAAK+wH,SAAW/wH,KAAK+wH,QAAQ5sI,EAAE8sH,SAC1CjxG,KAAK+wH,SAAS/wH,KAAK+wH,QAAQC,UAAYC,IAAkBrrG,KAAKtyB,GAAU,SAAW,cAAcnP,EAAE8sH,SAH5FjxG,KAAK+wH,QAOpB,QAASG,IAAmB/sI,EAAGmP,GAC3B,MAAKnP,GAGE4sB,EAAQ/Q,KAAKmxH,cAAgBnxH,KAAKmxH,aAAahtI,EAAE8sH,SACpDjxG,KAAKmxH,aAAaF,GAAiBrrG,KAAKtyB,GAAU,SAAW,cAAcnP,EAAE8sH,SAHtEjxG,KAAKmxH,aAMpB,QAASC,IAA+BC,EAAW/9H,EAAQ40H,GACvD,GAAI5mI,GAAGgwI,EAAIlF,EAAKmF,EAAMF,EAAUG,mBAChC,KAAKxxH,KAAKyxH,aAKN,IAHAzxH,KAAKyxH,gBACLzxH,KAAK0xH,oBACL1xH,KAAK2xH,qBACArwI,EAAI,EAAGA,EAAI,KAAMA,EAClB8qI,EAAMnE,GAAuB,IAAM3mI,IACnC0e,KAAK2xH,kBAAkBrwI,GAAK0e,KAAK4xH,YAAYxF,EAAK,IAAIoF,oBACtDxxH,KAAK0xH,iBAAiBpwI,GAAK0e,KAAK6xH,OAAOzF,EAAK,IAAIoF,mBAIxD,OAAItJ,GACe,QAAX50H,GACAg+H,EAAK51H,GAAQla,KAAKwe,KAAK2xH,kBAAmBJ,IAC3B,IAARD,EAAYA,EAAK,OAExBA,EAAK51H,GAAQla,KAAKwe,KAAK0xH,iBAAkBH,IAC1B,IAARD,EAAYA,EAAK,MAGb,QAAXh+H,GAEY,KADZg+H,EAAK51H,GAAQla,KAAKwe,KAAK2xH,kBAAmBJ,IAE/BD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAK0xH,iBAAkBH,IAC1B,IAARD,EAAYA,EAAK,OAGZ,KADZA,EAAK51H,GAAQla,KAAKwe,KAAK0xH,iBAAkBH,IAE9BD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAK2xH,kBAAmBJ,IAC3B,IAARD,EAAYA,EAAK,MAKpC,QAASQ,IAAmBT,EAAW/9H,EAAQ40H,GAC3C,GAAI5mI,GAAG8qI,EAAKzvE,CAEZ,IAAI38C,KAAK+xH,kBACL,MAAOX,IAA+B5vI,KAAKwe,KAAMqxH,EAAW/9H,EAAQ40H,EAYxE,KATKloH,KAAKyxH,eACNzxH,KAAKyxH,gBACLzxH,KAAK0xH,oBACL1xH,KAAK2xH,sBAMJrwI,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAYrB,GAVA8qI,EAAMnE,GAAuB,IAAM3mI,IAC/B4mI,IAAWloH,KAAK0xH,iBAAiBpwI,KACjC0e,KAAK0xH,iBAAiBpwI,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAK6xH,OAAOzF,EAAK,IAAIr/G,QAAQ,IAAK,IAAM,IAAK,KACzF/M,KAAK2xH,kBAAkBrwI,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAK4xH,YAAYxF,EAAK,IAAIr/G,QAAQ,IAAK,IAAM,IAAK,MAE9Fm7G,GAAWloH,KAAKyxH,aAAanwI,KAC9Bq7D,EAAQ,IAAM38C,KAAK6xH,OAAOzF,EAAK,IAAM,KAAOpsH,KAAK4xH,YAAYxF,EAAK,IAClEpsH,KAAKyxH,aAAanwI,GAAK,GAAIs9C,QAAO+d,EAAM5vC,QAAQ,IAAK,IAAK,MAG1Dm7G,GAAqB,SAAX50H,GAAqB0M,KAAK0xH,iBAAiBpwI,GAAGskC,KAAKyrG,GAC7D,MAAO/vI,EACJ,IAAI4mI,GAAqB,QAAX50H,GAAoB0M,KAAK2xH,kBAAkBrwI,GAAGskC,KAAKyrG,GACpE,MAAO/vI,EACJ,KAAK4mI,GAAUloH,KAAKyxH,aAAanwI,GAAGskC,KAAKyrG,GAC5C,MAAO/vI,IAOnB,QAAS0wI,IAAU5F,EAAK1mI,GACpB,GAAIusI,EAEJ,KAAK7F,EAAIplD,UAEL,MAAOolD,EAGX,IAAqB,gBAAV1mI,GACP,GAAI,QAAQkgC,KAAKlgC,GACbA,EAAQmlI,EAAMnlI,OAId,IAAqB,iBAFrBA,EAAQ0mI,EAAIle,aAAagkB,YAAYxsI,IAGjC,MAAO0mI,EAOnB,OAFA6F,GAAa3zG,KAAKgpD,IAAI8kD,EAAInxD,OAAQ01D,GAAYvE,EAAInW,OAAQvwH,IAC1D0mI,EAAIj2D,GAAG,OAASi2D,EAAIjC,OAAS,MAAQ,IAAM,SAASzkI,EAAOusI,GACpD7F,EAGX,QAAS+F,IAAazsI,GAClB,MAAa,OAATA,GACAssI,GAAShyH,KAAMta,GACfgiI,EAAmB+C,aAAazqH,MAAKA,GAC9BA,MAEAsuH,EAAatuH,KAAM,SAIlC,QAASoyH,MACL,MAAOzB,IAAY3wH,KAAKi2G,OAAQj2G,KAAKixG,SAIzC,QAASohB,IAAkBvC,GACvB,MAAI9vH,MAAK+xH,mBACAhK,EAAW/nH,KAAM,iBAClBsyH,GAAmB9wI,KAAKwe,MAExB8vH,EACO9vH,KAAKuyH,wBAELvyH,KAAKwyH,oBAGXzK,EAAW/nH,KAAM,uBAClBA,KAAKwyH,kBAAoBC,IAEtBzyH,KAAKuyH,yBAA2BzC,EACnC9vH,KAAKuyH,wBAA0BvyH,KAAKwyH,mBAKhD,QAASE,IAAa5C,GAClB,MAAI9vH,MAAK+xH,mBACAhK,EAAW/nH,KAAM,iBAClBsyH,GAAmB9wI,KAAKwe,MAExB8vH,EACO9vH,KAAK2yH,mBAEL3yH,KAAK4yH,eAGX7K,EAAW/nH,KAAM,kBAClBA,KAAK4yH,aAAeC,IAEjB7yH,KAAK2yH,oBAAsB7C,EAC9B9vH,KAAK2yH,mBAAqB3yH,KAAK4yH,cAI3C,QAASN,MACL,QAASQ,GAAUnoH,EAAG5C,GAClB,MAAOA,GAAE/lB,OAAS2oB,EAAE3oB,OAGxB,GACIV,GAAG8qI,EADH2G,KAAkBC,KAAiBC,IAEvC,KAAK3xI,EAAI,EAAGA,EAAI,GAAIA,IAEhB8qI,EAAMnE,GAAuB,IAAM3mI,IACnCyxI,EAAY7wI,KAAK8d,KAAK4xH,YAAYxF,EAAK,KACvC4G,EAAW9wI,KAAK8d,KAAK6xH,OAAOzF,EAAK,KACjC6G,EAAY/wI,KAAK8d,KAAK6xH,OAAOzF,EAAK,KAClC6G,EAAY/wI,KAAK8d,KAAK4xH,YAAYxF,EAAK,IAO3C,KAHA2G,EAAYhpE,KAAK+oE,GACjBE,EAAWjpE,KAAK+oE,GAChBG,EAAYlpE,KAAK+oE,GACZxxI,EAAI,EAAGA,EAAI,GAAIA,IAChByxI,EAAYzxI,GAAK2uI,GAAY8C,EAAYzxI,IACzC0xI,EAAW1xI,GAAK2uI,GAAY+C,EAAW1xI,GAE3C,KAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChB2xI,EAAY3xI,GAAK2uI,GAAYgD,EAAY3xI,GAG7C0e,MAAK4yH,aAAe,GAAIh0F,QAAO,KAAOq0F,EAAYhhH,KAAK,KAAO,IAAK,KACnEjS,KAAKwyH,kBAAoBxyH,KAAK4yH,aAC9B5yH,KAAK2yH,mBAAqB,GAAI/zF,QAAO,KAAOo0F,EAAW/gH,KAAK,KAAO,IAAK,KACxEjS,KAAKuyH,wBAA0B,GAAI3zF,QAAO,KAAOm0F,EAAY9gH,KAAK,KAAO,IAAK,KA+ClF,QAASihH,IAAWjd,GAChB,MAAOkd,IAAWld,GAAQ,IAAM,IAGpC,QAASkd,IAAWld,GAChB,MAAQA,GAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,EAalE,QAASmd,MACL,MAAOD,IAAWnzH,KAAKi2G,QAG3B,QAASod,IAAY5sH,EAAGtiB,EAAGE,EAAGivI,EAAGC,EAAGluI,EAAG2gD,GAGnC,GAAIi1B,GAAO,GAAI/qB,MAAKzpC,EAAGtiB,EAAGE,EAAGivI,EAAGC,EAAGluI,EAAG2gD,EAMtC,OAHIv/B,GAAI,KAAOA,GAAK,GAAK2vB,SAAS6kC,EAAKu4D,gBACnCv4D,EAAKw4D,YAAYhtH,GAEdw0D,EAGX,QAASy4D,IAAejtH,GACpB,GAAIw0D,GAAO,GAAI/qB,MAAKA,KAAK0gF,IAAIl+H,MAAM,KAAMC,WAMzC,OAHI8T,GAAI,KAAOA,GAAK,GAAK2vB,SAAS6kC,EAAK04D,mBACnC14D,EAAK24D,eAAentH,GAEjBw0D,EAIX,QAAS44D,IAAgB5d,EAAM6d,EAAKC,GAChC,GACIC,GAAM,EAAIF,EAAMC,CAIpB,SAFa,EAAIL,GAAczd,EAAM,EAAG+d,GAAKC,YAAcH,GAAO,EAElDE,EAAM,EAI1B,QAASE,IAAmBje,EAAMke,EAAMpe,EAAS+d,EAAKC,GAClD,GAGIK,GAASC,EAHTC,GAAgB,EAAIve,EAAU+d,GAAO,EACrCS,EAAaV,GAAgB5d,EAAM6d,EAAKC,GACxCS,EAAY,EAAI,GAAKL,EAAO,GAAKG,EAAeC,CAcpD,OAXIC,IAAa,GACbJ,EAAUne,EAAO,EACjBoe,EAAenB,GAAWkB,GAAWI,GAC9BA,EAAYtB,GAAWjd,IAC9Bme,EAAUne,EAAO,EACjBoe,EAAeG,EAAYtB,GAAWjd,KAEtCme,EAAUne,EACVoe,EAAeG,IAIfve,KAAMme,EACNI,UAAWH,GAInB,QAASI,IAAWrI,EAAK0H,EAAKC,GAC1B,GAEIW,GAASN,EAFTG,EAAaV,GAAgBzH,EAAInW,OAAQ6d,EAAKC,GAC9CI,EAAO71G,KAAK+oD,OAAO+kD,EAAIoI,YAAcD,EAAa,GAAK,GAAK,CAchE,OAXIJ,GAAO,GACPC,EAAUhI,EAAInW,OAAS,EACvBye,EAAUP,EAAOQ,GAAYP,EAASN,EAAKC,IACpCI,EAAOQ,GAAYvI,EAAInW,OAAQ6d,EAAKC,IAC3CW,EAAUP,EAAOQ,GAAYvI,EAAInW,OAAQ6d,EAAKC,GAC9CK,EAAUhI,EAAInW,OAAS,IAEvBme,EAAUhI,EAAInW,OACdye,EAAUP,IAIVA,KAAMO,EACNze,KAAMme,GAId,QAASO,IAAY1e,EAAM6d,EAAKC,GAC5B,GAAIQ,GAAaV,GAAgB5d,EAAM6d,EAAKC,GACxCa,EAAiBf,GAAgB5d,EAAO,EAAG6d,EAAKC,EACpD,QAAQb,GAAWjd,GAAQse,EAAaK,GAAkB,EAiC9D,QAASC,IAAYzI,GACjB,MAAOqI,IAAWrI,EAAKpsH,KAAK80H,MAAMhB,IAAK9zH,KAAK80H,MAAMf,KAAKI,KAQ3D,QAASY,MACL,MAAO/0H,MAAK80H,MAAMhB,IAGtB,QAASkB,MACL,MAAOh1H,MAAK80H,MAAMf,IAKtB,QAASkB,IAAYvtF,GACjB,GAAIysF,GAAOn0H,KAAKkuG,aAAaimB,KAAKn0H,KAClC,OAAgB,OAAT0nC,EAAgBysF,EAAOn0H,KAAKgmE,IAAqB,GAAhBt+B,EAAQysF,GAAW,KAG/D,QAASe,IAAextF,GACpB,GAAIysF,GAAOM,GAAWz0H,KAAM,EAAG,GAAGm0H,IAClC,OAAgB,OAATzsF,EAAgBysF,EAAOn0H,KAAKgmE,IAAqB,GAAhBt+B,EAAQysF,GAAW,KAgE/D,QAASgB,IAAaztF,EAAOymE,GACzB,MAAqB,gBAAVzmE,GACAA,EAGN6hF,MAAM7hF,IAIXA,EAAQymE,EAAOinB,cAAc1tF,GACR,gBAAVA,GACAA,EAGJ,MARIhf,SAASgf,EAAO,IAW/B,QAAS2tF,IAAgB3tF,EAAOymE,GAC5B,MAAqB,gBAAVzmE,GACAymE,EAAOinB,cAAc1tF,GAAS,GAAK,EAEvC6hF,MAAM7hF,GAAS,KAAOA,EAMjC,QAAS4tF,IAAgBnxI,EAAGmP,GACxB,MAAKnP,GAGE4sB,EAAQ/Q,KAAKu1H,WAAav1H,KAAKu1H,UAAUpxI,EAAE6sH,OAC9ChxG,KAAKu1H,UAAUv1H,KAAKu1H,UAAUvE,SAASprG,KAAKtyB,GAAU,SAAW,cAAcnP,EAAE6sH,OAH1EhxG,KAAKu1H,UAOpB,QAASC,IAAqBrxI,GAC1B,MAAO,GAAM6b,KAAKy1H,eAAetxI,EAAE6sH,OAAShxG,KAAKy1H,eAIrD,QAASC,IAAmBvxI,GACxB,MAAO,GAAM6b,KAAK21H,aAAaxxI,EAAE6sH,OAAShxG,KAAK21H,aAGnD,QAASC,IAA+BC,EAAaviI,EAAQ40H,GACzD,GAAI5mI,GAAGgwI,EAAIlF,EAAKmF,EAAMsE,EAAYrE,mBAClC,KAAKxxH,KAAK81H,eAKN,IAJA91H,KAAK81H,kBACL91H,KAAK+1H,uBACL/1H,KAAKg2H,qBAEA10I,EAAI,EAAGA,EAAI,IAAKA,EACjB8qI,EAAMnE,GAAuB,IAAM,IAAIjX,IAAI1vH,GAC3C0e,KAAKg2H,kBAAkB10I,GAAK0e,KAAKi2H,YAAY7J,EAAK,IAAIoF,oBACtDxxH,KAAK+1H,oBAAoBz0I,GAAK0e,KAAKk2H,cAAc9J,EAAK,IAAIoF,oBAC1DxxH,KAAK81H,eAAex0I,GAAK0e,KAAKm2H,SAAS/J,EAAK,IAAIoF,mBAIxD,OAAItJ,GACe,SAAX50H,GACAg+H,EAAK51H,GAAQla,KAAKwe,KAAK81H,eAAgBvE,IACxB,IAARD,EAAYA,EAAK,MACN,QAAXh+H,GACPg+H,EAAK51H,GAAQla,KAAKwe,KAAK+1H,oBAAqBxE,IAC7B,IAARD,EAAYA,EAAK,OAExBA,EAAK51H,GAAQla,KAAKwe,KAAKg2H,kBAAmBzE,IAC3B,IAARD,EAAYA,EAAK,MAGb,SAAXh+H,GAEY,KADZg+H,EAAK51H,GAAQla,KAAKwe,KAAK81H,eAAgBvE,IAE5BD,GAGC,KADZA,EAAK51H,GAAQla,KAAKwe,KAAK+1H,oBAAqBxE,IAEjCD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAKg2H,kBAAmBzE,IAC3B,IAARD,EAAYA,EAAK,MACN,QAAXh+H,GAEK,KADZg+H,EAAK51H,GAAQla,KAAKwe,KAAK+1H,oBAAqBxE,IAEjCD,GAGC,KADZA,EAAK51H,GAAQla,KAAKwe,KAAK81H,eAAgBvE,IAE5BD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAKg2H,kBAAmBzE,IAC3B,IAARD,EAAYA,EAAK,OAGZ,KADZA,EAAK51H,GAAQla,KAAKwe,KAAKg2H,kBAAmBzE,IAE/BD,GAGC,KADZA,EAAK51H,GAAQla,KAAKwe,KAAK81H,eAAgBvE,IAE5BD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAK+1H,oBAAqBxE,IAC7B,IAARD,EAAYA,EAAK,MAKpC,QAAS8E,IAAqBP,EAAaviI,EAAQ40H,GAC/C,GAAI5mI,GAAG8qI,EAAKzvE,CAEZ,IAAI38C,KAAKq2H,oBACL,MAAOT,IAA+Bp0I,KAAKwe,KAAM61H,EAAaviI,EAAQ40H,EAU1E,KAPKloH,KAAK81H,iBACN91H,KAAK81H,kBACL91H,KAAKg2H,qBACLh2H,KAAK+1H,uBACL/1H,KAAKs2H,uBAGJh1I,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAcpB,GAXA8qI,EAAMnE,GAAuB,IAAM,IAAIjX,IAAI1vH,GACvC4mI,IAAWloH,KAAKs2H,mBAAmBh1I,KACnC0e,KAAKs2H,mBAAmBh1I,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAKm2H,SAAS/J,EAAK,IAAIr/G,QAAQ,IAAK,MAAS,IAAK,KAChG/M,KAAK+1H,oBAAoBz0I,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAKk2H,cAAc9J,EAAK,IAAIr/G,QAAQ,IAAK,MAAS,IAAK,KACtG/M,KAAKg2H,kBAAkB10I,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAKi2H,YAAY7J,EAAK,IAAIr/G,QAAQ,IAAK,MAAS,IAAK,MAEjG/M,KAAK81H,eAAex0I,KACrBq7D,EAAQ,IAAM38C,KAAKm2H,SAAS/J,EAAK,IAAM,KAAOpsH,KAAKk2H,cAAc9J,EAAK,IAAM,KAAOpsH,KAAKi2H,YAAY7J,EAAK,IACzGpsH,KAAK81H,eAAex0I,GAAK,GAAIs9C,QAAO+d,EAAM5vC,QAAQ,IAAK,IAAK,MAG5Dm7G,GAAqB,SAAX50H,GAAqB0M,KAAKs2H,mBAAmBh1I,GAAGskC,KAAKiwG,GAC/D,MAAOv0I,EACJ,IAAI4mI,GAAqB,QAAX50H,GAAoB0M,KAAK+1H,oBAAoBz0I,GAAGskC,KAAKiwG,GACtE,MAAOv0I,EACJ,IAAI4mI,GAAqB,OAAX50H,GAAmB0M,KAAKg2H,kBAAkB10I,GAAGskC,KAAKiwG,GACnE,MAAOv0I,EACJ,KAAK4mI,GAAUloH,KAAK81H,eAAex0I,GAAGskC,KAAKiwG,GAC9C,MAAOv0I,IAOnB,QAASi1I,IAAiB7uF,GACtB,IAAK1nC,KAAKgnE,UACN,MAAgB,OAATt/B,EAAgB1nC,KAAOymE,GAElC,IAAIuqC,GAAMhxG,KAAKmqH,OAASnqH,KAAKm2D,GAAG89D,YAAcj0H,KAAKm2D,GAAGqgE,QACtD,OAAa,OAAT9uF,GACAA,EAAQytF,GAAaztF,EAAO1nC,KAAKkuG,cAC1BluG,KAAKgmE,IAAIt+B,EAAQspE,EAAK,MAEtBA,EAIf,QAASylB,IAAuB/uF,GAC5B,IAAK1nC,KAAKgnE,UACN,MAAgB,OAATt/B,EAAgB1nC,KAAOymE,GAElC,IAAIsvC,IAAW/1G,KAAKgxG,MAAQ,EAAIhxG,KAAKkuG,aAAa4mB,MAAMhB,KAAO,CAC/D,OAAgB,OAATpsF,EAAgBquE,EAAU/1G,KAAKgmE,IAAIt+B,EAAQquE,EAAS,KAG/D,QAAS2gB,IAAoBhvF,GACzB,IAAK1nC,KAAKgnE,UACN,MAAgB,OAATt/B,EAAgB1nC,KAAOymE,GAOlC,IAAa,MAAT/+B,EAAe,CACf,GAAIquE,GAAUsf,GAAgB3tF,EAAO1nC,KAAKkuG,aAC1C,OAAOluG,MAAKgxG,IAAIhxG,KAAKgxG,MAAQ,EAAI+E,EAAUA,EAAU,GAErD,MAAO/1G,MAAKgxG,OAAS,EAK7B,QAAS2lB,IAAe7G,GACpB,MAAI9vH,MAAKq2H,qBACAtO,EAAW/nH,KAAM,mBAClB42H,GAAqBp1I,KAAKwe,MAE1B8vH,EACO9vH,KAAK62H,qBAEL72H,KAAK82H,iBAGX/O,EAAW/nH,KAAM,oBAClBA,KAAK82H,eAAiBC,IAEnB/2H,KAAK62H,sBAAwB/G,EAChC9vH,KAAK62H,qBAAuB72H,KAAK82H,gBAK7C,QAASE,IAAoBlH,GACzB,MAAI9vH,MAAKq2H,qBACAtO,EAAW/nH,KAAM,mBAClB42H,GAAqBp1I,KAAKwe,MAE1B8vH,EACO9vH,KAAKi3H,0BAELj3H,KAAKk3H,sBAGXnP,EAAW/nH,KAAM,yBAClBA,KAAKk3H,oBAAsBC,IAExBn3H,KAAKi3H,2BAA6BnH,EACrC9vH,KAAKi3H,0BAA4Bj3H,KAAKk3H,qBAKlD,QAASE,IAAkBtH,GACvB,MAAI9vH,MAAKq2H,qBACAtO,EAAW/nH,KAAM,mBAClB42H,GAAqBp1I,KAAKwe,MAE1B8vH,EACO9vH,KAAKq3H,wBAELr3H,KAAKs3H,oBAGXvP,EAAW/nH,KAAM,uBAClBA,KAAKs3H,kBAAoBC,IAEtBv3H,KAAKq3H,yBAA2BvH,EACnC9vH,KAAKq3H,wBAA0Br3H,KAAKs3H,mBAKhD,QAASV,MACL,QAAS9D,GAAUnoH,EAAG5C,GAClB,MAAOA,GAAE/lB,OAAS2oB,EAAE3oB,OAGxB,GACIV,GAAG8qI,EAAKoL,EAAMC,EAAQC,EADtBC,KAAgB5E,KAAkBC,KAAiBC,IAEvD,KAAK3xI,EAAI,EAAGA,EAAI,EAAGA,IAEf8qI,EAAMnE,GAAuB,IAAM,IAAIjX,IAAI1vH,GAC3Ck2I,EAAOx3H,KAAKi2H,YAAY7J,EAAK,IAC7BqL,EAASz3H,KAAKk2H,cAAc9J,EAAK,IACjCsL,EAAQ13H,KAAKm2H,SAAS/J,EAAK,IAC3BuL,EAAUz1I,KAAKs1I,GACfzE,EAAY7wI,KAAKu1I,GACjBzE,EAAW9wI,KAAKw1I,GAChBzE,EAAY/wI,KAAKs1I,GACjBvE,EAAY/wI,KAAKu1I,GACjBxE,EAAY/wI,KAAKw1I,EAQrB,KAJAC,EAAU5tE,KAAK+oE,GACfC,EAAYhpE,KAAK+oE,GACjBE,EAAWjpE,KAAK+oE,GAChBG,EAAYlpE,KAAK+oE,GACZxxI,EAAI,EAAGA,EAAI,EAAGA,IACfyxI,EAAYzxI,GAAK2uI,GAAY8C,EAAYzxI,IACzC0xI,EAAW1xI,GAAK2uI,GAAY+C,EAAW1xI,IACvC2xI,EAAY3xI,GAAK2uI,GAAYgD,EAAY3xI,GAG7C0e,MAAK82H,eAAiB,GAAIl4F,QAAO,KAAOq0F,EAAYhhH,KAAK,KAAO,IAAK,KACrEjS,KAAKk3H,oBAAsBl3H,KAAK82H,eAChC92H,KAAKs3H,kBAAoBt3H,KAAK82H,eAE9B92H,KAAK62H,qBAAuB,GAAIj4F,QAAO,KAAOo0F,EAAW/gH,KAAK,KAAO,IAAK,KAC1EjS,KAAKi3H,0BAA4B,GAAIr4F,QAAO,KAAOm0F,EAAY9gH,KAAK,KAAO,IAAK,KAChFjS,KAAKq3H,wBAA0B,GAAIz4F,QAAO,KAAO+4F,EAAU1lH,KAAK,KAAO,IAAK,KAKhF,QAAS2lH,MACL,MAAO53H,MAAK63H,QAAU,IAAM,GAGhC,QAASC,MACL,MAAO93H,MAAK63H,SAAW,GAyB3B,QAAS7O,IAAUvyG,EAAOshH,GACtB/I,EAAev4G,EAAO,EAAG,EAAG,WACxB,MAAOzW,MAAKkuG,aAAa8a,SAAShpH,KAAK63H,QAAS73H,KAAKg4H,UAAWD,KAgBxE,QAASE,IAAenI,EAAU3hB,GAC9B,MAAOA,GAAO+pB,eAqDlB,QAASC,IAAYzwF,GAGjB,MAAiD,OAAxCA,EAAQ,IAAIrxB,cAAc+Q,OAAO,GAI9C,QAASgxG,IAAgBP,EAAOG,EAASK,GACrC,MAAIR,GAAQ,GACDQ,EAAU,KAAO,KAEjBA,EAAU,KAAO,KAqChC,QAASC,IAAgB7yI,GACrB,MAAOA,GAAMA,EAAI4wB,cAActJ,QAAQ,IAAK,KAAOtnB,EAMvD,QAAS8yI,IAAa/nG,GAGlB,IAFA,GAAWxO,GAAGngB,EAAMssG,EAAQzwG,EAAxBpc,EAAI,EAEDA,EAAIkvC,EAAMxuC,QAAQ,CAKrB,IAJA0b,EAAQ46H,GAAgB9nG,EAAMlvC,IAAIoc,MAAM,KACxCskB,EAAItkB,EAAM1b,OACV6f,EAAOy2H,GAAgB9nG,EAAMlvC,EAAI,IACjCugB,EAAOA,EAAOA,EAAKnE,MAAM,KAAO,KACzBskB,EAAI,GAAG,CAEV,GADAmsF,EAASqqB,GAAW96H,EAAM7J,MAAM,EAAGmuB,GAAG/P,KAAK,MAEvC,MAAOk8F,EAEX,IAAItsG,GAAQA,EAAK7f,QAAUggC,GAAKgpG,EAActtH,EAAOmE,OAAemgB,EAAI,EAEpE,KAEJA,KAEJ1gC,IAEJ,MAAO,MAGX,QAASk3I,IAAWl0I,GAChB,GAAIm0I,GAAY,IAEhB,KAAKloB,GAAQjsH,aAAiBjD,GACtBA,GAAUA,EAAOD,QACrB,IACIq3I,EAAYC,GAAaC,MACzB,iGAGAC,GAAmCH,GACrC,MAAOj2I,IAEb,MAAO+tH,IAAQjsH,GAMnB,QAASs0I,IAAoCnzI,EAAK+tB,GAC9C,GAAIszB,EAeJ,OAdIrhD,KAEIqhD,EADA+iF,EAAYr2G,GACLqlH,GAA0BpzI,GAG1BqzI,GAAarzI,EAAK+tB,MAKzBklH,GAAe5xF,GAIhB4xF,GAAaC,MAGxB,QAASG,IAAcx0I,EAAMyU,GACzB,GAAe,OAAXA,EAAiB,CACjB,GAAIizH,GAAe+M,EAuBnB,OAtBAhgI,GAAOigI,KAAO10I,EACO,MAAjBisH,GAAQjsH,IACRonI,EAAgB,uBACR,2OAIRM,EAAezb,GAAQjsH,GAAMqzH,SACC,MAAvB5+G,EAAOkgI,eACsB,MAAhC1oB,GAAQx3G,EAAOkgI,cACfjN,EAAezb,GAAQx3G,EAAOkgI,cAActhB,QAG5C+T,EAAgB,wBACR,wGAGhBnb,GAAQjsH,GAAQ,GAAI4nI,GAAOH,EAAaC,EAAcjzH,IAGtD6/H,GAAmCt0I,GAE5BisH,GAAQjsH,GAIf,aADOisH,IAAQjsH,GACR,KAIf,QAAS40I,IAAa50I,EAAMyU,GACxB,GAAc,MAAVA,EAAgB,CAChB,GAAIo1G,GAAQ6d,EAAe+M,EAEN,OAAjBxoB,GAAQjsH,KACR0nI,EAAezb,GAAQjsH,GAAMqzH,SAEjC5+G,EAASgzH,EAAaC,EAAcjzH,GACpCo1G,EAAS,GAAI+d,GAAOnzH,GACpBo1G,EAAO8qB,aAAe1oB,GAAQjsH,GAC9BisH,GAAQjsH,GAAQ6pH,EAGhByqB,GAAmCt0I,OAGd,OAAjBisH,GAAQjsH,KAC0B,MAA9BisH,GAAQjsH,GAAM20I,aACd1oB,GAAQjsH,GAAQisH,GAAQjsH,GAAM20I,aACN,MAAjB1oB,GAAQjsH,UACRisH,IAAQjsH,GAI3B,OAAOisH,IAAQjsH,GAInB,QAASu0I,IAA2BpzI,GAChC,GAAI0oH,EAMJ,IAJI1oH,GAAOA,EAAI4kI,SAAW5kI,EAAI4kI,QAAQsO,QAClClzI,EAAMA,EAAI4kI,QAAQsO,QAGjBlzI,EACD,MAAOizI,GAGX,KAAK3nH,EAAQtrB,GAAM,CAGf,GADA0oH,EAASqqB,GAAW/yI,GAEhB,MAAO0oH,EAEX1oH,IAAOA,GAGX,MAAO8yI,IAAa9yI,GAGxB,QAAS0zI,MACL,MAAOnuI,IAAKulH,IAGhB,QAAS6oB,IAAej1I,GACpB,GAAIqkI,GACA79G,EAAIxmB,EAAE6pH,EAyBV,OAvBIrjG,KAAsC,IAAjCs+G,EAAgB9kI,GAAGqkI,WACxBA,EACI79G,EAAE0uH,IAAe,GAAK1uH,EAAE0uH,IAAe,GAAMA,GAC7C1uH,EAAE2uH,IAAe,GAAK3uH,EAAE2uH,IAAe3I,GAAYhmH,EAAE4uH,IAAO5uH,EAAE0uH,KAAUC,GACxE3uH,EAAEgoG,IAAe,GAAKhoG,EAAEgoG,IAAe,IAAmB,KAAZhoG,EAAEgoG,MAA+B,IAAdhoG,EAAE+nG,KAA+B,IAAd/nG,EAAEooG,KAAoC,IAAnBpoG,EAAE6uH,KAAuB7mB,GAChIhoG,EAAE+nG,IAAe,GAAK/nG,EAAE+nG,IAAe,GAAMA,GAC7C/nG,EAAEooG,IAAe,GAAKpoG,EAAEooG,IAAe,GAAMA,GAC7CpoG,EAAE6uH,IAAe,GAAK7uH,EAAE6uH,IAAe,IAAMA,IAC5C,EAEDvQ,EAAgB9kI,GAAGs1I,qBAAuBjR,EAAW+Q,IAAQ/Q,EAAW8Q,MACxE9Q,EAAW8Q,IAEXrQ,EAAgB9kI,GAAGu1I,iBAAgC,IAAdlR,IACrCA,EAAWmR,IAEX1Q,EAAgB9kI,GAAGy1I,mBAAkC,IAAdpR,IACvCA,EAAWqR,IAGf5Q,EAAgB9kI,GAAGqkI,SAAWA,GAG3BrkI,EAyCX,QAAS21I,IAAc/gI,GACnB,GAAIzX,GAAGC,EAGHw4I,EAAWtkI,EAAYsxE,EAAYizD,EAFnCrhE,EAAS5/D,EAAOu9D,GAChBhsD,EAAQ2vH,GAAiB1mC,KAAK56B,IAAWuhE,GAAc3mC,KAAK56B,EAGhE,IAAIruD,EAAO,CAGP,IAFA2+G,EAAgBlwH,GAAQ+vH,OAEnBxnI,EAAI,EAAGC,EAAI44I,GAASn4I,OAAQV,EAAIC,EAAGD,IACpC,GAAI64I,GAAS74I,GAAG,GAAGiyG,KAAKjpF,EAAM,IAAK,CAC/B7U,EAAa0kI,GAAS74I,GAAG,GACzBy4I,OAAYI,GAAS74I,GAAG,EACxB,OAGR,GAAkB,MAAdmU,EAEA,YADAsD,EAAOqwH,YAGX,IAAI9+G,EAAM,GAAI,CACV,IAAKhpB,EAAI,EAAGC,EAAI64I,GAASp4I,OAAQV,EAAIC,EAAGD,IACpC,GAAI84I,GAAS94I,GAAG,GAAGiyG,KAAKjpF,EAAM,IAAK,CAE/By8D,GAAcz8D,EAAM,IAAM,KAAO8vH,GAAS94I,GAAG,EAC7C,OAGR,GAAkB,MAAdylF,EAEA,YADAhuE,EAAOqwH,aAIf,IAAK2Q,GAA2B,MAAdhzD,EAEd,YADAhuE,EAAOqwH,YAGX,IAAI9+G,EAAM,GAAI,CACV,IAAI+vH,GAAQ9mC,KAAKjpF,EAAM,IAInB,YADAvR,EAAOqwH,YAFP4Q,GAAW,IAMnBjhI,EAAOixH,GAAKv0H,GAAcsxE,GAAc,KAAOizD,GAAY,IAC3DM,GAA0BvhI,OAE1BA,GAAOqwH,YAKf,QAASmR,IAAiBxhI,GACtB,GAAIm3H,GAAUsK,GAAgBjnC,KAAKx6F,EAAOu9D,GAE1C,IAAgB,OAAZ45D,EAEA,YADAn3H,EAAOo9D,GAAK,GAAIjmB,OAAMggF,EAAQ,IAIlC4J,IAAc/gI,QACVA,EAAOqwH,iBACArwH,GAAOqwH,SACd1B,EAAmB+S,wBAAwB1hI,IAenD,QAAS2hI,IAAS/vH,EAAG5C,EAAG3jB,GACpB,MAAS,OAALumB,EACOA,EAEF,MAAL5C,EACOA,EAEJ3jB,EAGX,QAASu2I,IAAiB5hI,GAEtB,GAAI6hI,GAAW,GAAI1qF,MAAKw3E,EAAmB10H,MAC3C,OAAI+F,GAAO8hI,SACCD,EAASjH,iBAAkBiH,EAASE,cAAeF,EAAS/J,eAEhE+J,EAASpH,cAAeoH,EAASG,WAAYH,EAASI,WAOlE,QAASC,IAAiBliI,GACtB,GAAIzX,GAAG25E,EAAkBigE,EAAaC,EAAzBzzF,IAEb,KAAI3uC,EAAOo9D,GAAX,CA6BA,IAzBA+kE,EAAcP,GAAiB5hI,GAG3BA,EAAO03H,IAAyB,MAAnB13H,EAAOi1G,GAAGsrB,KAAqC,MAApBvgI,EAAOi1G,GAAGqrB,KAClD+B,GAAsBriI,GAItBA,EAAOsiI,aACPF,EAAYT,GAAS3hI,EAAOi1G,GAAGurB,IAAO2B,EAAY3B,KAE9CxgI,EAAOsiI,WAAanI,GAAWiI,KAC/BlS,EAAgBlwH,GAAQ0gI,uBAG5Bx+D,EAAOy4D,GAAcyH,EAAW,EAAGpiI,EAAOsiI,YAC1CtiI,EAAOi1G,GAAGqrB,IAASp+D,EAAK6/D,cACxB/hI,EAAOi1G,GAAGsrB,IAAQr+D,EAAK41D,cAQtBvvI,EAAI,EAAGA,EAAI,GAAqB,MAAhByX,EAAOi1G,GAAG1sH,KAAcA,EACzCyX,EAAOi1G,GAAG1sH,GAAKomD,EAAMpmD,GAAK45I,EAAY55I,EAI1C,MAAOA,EAAI,EAAGA,IACVyX,EAAOi1G,GAAG1sH,GAAKomD,EAAMpmD,GAAsB,MAAhByX,EAAOi1G,GAAG1sH,GAAqB,IAANA,EAAU,EAAI,EAAKyX,EAAOi1G,GAAG1sH,EAI7D,MAApByX,EAAOi1G,GAAG2E,KACgB,IAAtB55G,EAAOi1G,GAAG0E,KACY,IAAtB35G,EAAOi1G,GAAG+E,KACiB,IAA3Bh6G,EAAOi1G,GAAGwrB,MACdzgI,EAAOuiI,YACPviI,EAAOi1G,GAAG2E,IAAQ,GAGtB55G,EAAOo9D,IAAMp9D,EAAO8hI,QAAUnH,GAAgBL,IAAY3gI,MAAM,KAAMg1C,GAGnD,MAAf3uC,EAAOmxH,MACPnxH,EAAOo9D,GAAGolE,cAAcxiI,EAAOo9D,GAAGqlE,gBAAkBziI,EAAOmxH,MAG3DnxH,EAAOuiI,WACPviI,EAAOi1G,GAAG2E,IAAQ,KAI1B,QAASyoB,IAAsBriI,GAC3B,GAAI0iI,GAAGC,EAAUvH,EAAMpe,EAAS+d,EAAKC,EAAK4H,EAAMC,CAEhDH,GAAI1iI,EAAO03H,GACC,MAARgL,EAAEI,IAAqB,MAAPJ,EAAEK,GAAoB,MAAPL,EAAE7gD,GACjCk5C,EAAM,EACNC,EAAM,EAMN2H,EAAWhB,GAASe,EAAEI,GAAI9iI,EAAOi1G,GAAGurB,IAAO9E,GAAWsH,KAAsB,EAAG,GAAG9lB,MAClFke,EAAOuG,GAASe,EAAEK,EAAG,KACrB/lB,EAAU2kB,GAASe,EAAE7gD,EAAG,IACV,GAAKm7B,EAAU,KACzB6lB,QAGJ9H,EAAM/6H,EAAOsxH,QAAQyK,MAAMhB,IAC3BC,EAAMh7H,EAAOsxH,QAAQyK,MAAMf,IAE3B2H,EAAWhB,GAASe,EAAEO,GAAIjjI,EAAOi1G,GAAGurB,IAAO9E,GAAWsH,KAAsBjI,EAAKC,GAAK9d,MACtFke,EAAOuG,GAASe,EAAEA,EAAG,GAEV,MAAPA,EAAEp3I,IAEF0xH,EAAU0lB,EAAEp3I,GACE,GAAK0xH,EAAU,KACzB6lB,MAEU,MAAPH,EAAEj5I,GAETuzH,EAAU0lB,EAAEj5I,EAAIsxI,GACZ2H,EAAEj5I,EAAI,GAAKi5I,EAAEj5I,EAAI,KACjBo5I,OAIJ7lB,EAAU+d,GAGdK,EAAO,GAAKA,EAAOQ,GAAY+G,EAAU5H,EAAKC,GAC9C9K,EAAgBlwH,GAAQ2gI,kBACE,MAAnBkC,EACP3S,EAAgBlwH,GAAQ6gI,qBAExB+B,EAAOzH,GAAmBwH,EAAUvH,EAAMpe,EAAS+d,EAAKC,GACxDh7H,EAAOi1G,GAAGurB,IAAQoC,EAAK1lB,KACvBl9G,EAAOsiI,WAAaM,EAAKnH,WAQjC,QAAS8F,IAA0BvhI,GAE/B,GAAIA,EAAOixH,KAAOtC,EAAmBuU,SAEjC,WADAnC,IAAc/gI,EAIlBA,GAAOi1G,MACPib,EAAgBlwH,GAAQsvH,QAGxB,IACI/mI,GAAG46I,EAAa36B,EAAQ9qF,EAAO0lH,EAD/BxjE,EAAS,GAAK5/D,EAAOu9D,GAErB8lE,EAAezjE,EAAO32E,OACtBq6I,EAAyB,CAI7B,KAFA96B,EAASguB,EAAax2H,EAAOixH,GAAIjxH,EAAOsxH,SAAS//G,MAAM+kH,QAElD/tI,EAAI,EAAGA,EAAIigH,EAAOv/G,OAAQV,IAC3Bm1B,EAAQ8qF,EAAOjgH,GACf46I,GAAevjE,EAAOruD,MAAMylH,EAAsBt5G,EAAO1d,SAAgB,GAGrEmjI,IACAC,EAAUxjE,EAAOzwC,OAAO,EAAGywC,EAAOj9D,QAAQwgI,IACtCC,EAAQn6I,OAAS,GACjBinI,EAAgBlwH,GAAQwvH,YAAYrmI,KAAKi6I,GAE7CxjE,EAASA,EAAO9kE,MAAM8kE,EAAOj9D,QAAQwgI,GAAeA,EAAYl6I,QAChEq6I,GAA0BH,EAAYl6I,QAGtCktI,GAAqBz4G,IACjBylH,EACAjT,EAAgBlwH,GAAQsvH,SAGxBY,EAAgBlwH,GAAQuvH,aAAapmI,KAAKu0B,GAE9Ci6G,GAAwBj6G,EAAOylH,EAAanjI,IAEvCA,EAAO0wH,UAAYyS,GACxBjT,EAAgBlwH,GAAQuvH,aAAapmI,KAAKu0B,EAKlDwyG,GAAgBlwH,GAAQ0vH,cAAgB2T,EAAeC,EACnD1jE,EAAO32E,OAAS,GAChBinI,EAAgBlwH,GAAQwvH,YAAYrmI,KAAKy2E,GAIzC5/D,EAAOi1G,GAAG2E,KAAS,SACnBsW,EAAgBlwH,GAAQ2wH,SACxB3wH,EAAOi1G,GAAG2E,IAAQ,IAClBsW,EAAgBlwH,GAAQ2wH,gBAG5BT,EAAgBlwH,GAAQgwH,gBAAkBhwH,EAAOi1G,GAAGn6G,MAAM,GAC1Do1H,EAAgBlwH,GAAQiwH,SAAWjwH,EAAOujI,UAE1CvjI,EAAOi1G,GAAG2E,IAAQ4pB,GAAgBxjI,EAAOsxH,QAAStxH,EAAOi1G,GAAG2E,IAAO55G,EAAOujI,WAE1ErB,GAAgBliI,GAChBqgI,GAAcrgI,GAIlB,QAASwjI,IAAiBpuB,EAAQhnC,EAAM6hD,GACpC,GAAIwT,EAEJ,OAAgB,OAAZxT,EAEO7hD,EAEgB,MAAvBgnC,EAAOsuB,aACAtuB,EAAOsuB,aAAat1D,EAAM6hD,GACX,MAAf7a,EAAOuuB,MAEdF,EAAOruB,EAAOuuB,KAAK1T,GACfwT,GAAQr1D,EAAO,KACfA,GAAQ,IAEPq1D,GAAiB,KAATr1D,IACTA,EAAO,GAEJA,GAGAA,EAKf,QAASw1D,IAAyB5jI,GAC9B,GAAI6jI,GACAC,EAEAC,EACAx7I,EACAy7I,CAEJ,IAAyB,IAArBhkI,EAAOixH,GAAGhoI,OAGV,MAFAinI,GAAgBlwH,GAAQ6vH,sBACxB7vH,EAAOo9D,GAAK,GAAIjmB,MAAKu2B,KAIzB,KAAKnlF,EAAI,EAAGA,EAAIyX,EAAOixH,GAAGhoI,OAAQV,IAC9By7I,EAAe,EACfH,EAAa9S,KAAe/wH,GACN,MAAlBA,EAAO8hI,UACP+B,EAAW/B,QAAU9hI,EAAO8hI,SAEhC+B,EAAW5S,GAAKjxH,EAAOixH,GAAG1oI,GAC1Bg5I,GAA0BsC,GAErBzT,EAAeyT,KAKpBG,GAAgB9T,EAAgB2T,GAAYnU,cAG5CsU,GAAkE,GAAlD9T,EAAgB2T,GAAYtU,aAAatmI,OAEzDinI,EAAgB2T,GAAY3iE,MAAQ8iE,GAEjB,MAAfD,GAAuBC,EAAeD,KACtCA,EAAcC,EACdF,EAAaD,GAIrB5U,GAAOjvH,EAAQ8jI,GAAcD,GAGjC,QAASI,IAAiBjkI,GACtB,IAAIA,EAAOo9D,GAAX,CAIA,GAAI70E,GAAIosI,EAAqB30H,EAAOu9D,GACpCv9D,GAAOi1G,GAAKh8F,GAAK1wB,EAAE20H,KAAM30H,EAAE2vH,MAAO3vH,EAAE0vH,KAAO1vH,EAAE25E,KAAM35E,EAAE6lF,KAAM7lF,EAAEyvH,OAAQzvH,EAAEwvH,OAAQxvH,EAAE27I,aAAc,SAAUz3I,GACrG,MAAOA,IAAOkjC,SAASljC,EAAK,MAGhCy1I,GAAgBliI,IAGpB,QAASmkI,IAAkBnkI,GACvB,GAAI+uH,GAAM,GAAIyC,GAAO6O,GAAc+D,GAAcpkI,IAOjD,OANI+uH,GAAIwT,WAEJxT,EAAI9hD,IAAI,EAAG,KACX8hD,EAAIwT,iBAGDxT,EAGX,QAASqV,IAAepkI,GACpB,GAAI2uC,GAAQ3uC,EAAOu9D,GACfhjE,EAASyF,EAAOixH,EAIpB,OAFAjxH,GAAOsxH,QAAUtxH,EAAOsxH,SAAWwO,GAA0B9/H,EAAOkxH,IAEtD,OAAVviF,YAAmBp0C,GAAkC,KAAVo0C,EACpCkiF,GAAsBlB,WAAUA,KAGtB,gBAAVhhF,KACP3uC,EAAOu9D,GAAK5uB,EAAQ3uC,EAAOsxH,QAAQ+S,SAAS11F,IAG5CgjF,EAAShjF,GACF,GAAI6iF,GAAO6O,GAAc1xF,KACzB32B,EAAQzd,GACfqpI,GAAyB5jI,GAClB8uH,EAAOngF,GACd3uC,EAAOo9D,GAAKzuB,EACLp0C,EACPgnI,GAA0BvhI,GAE1BskI,GAAgBtkI,GAGfowH,EAAepwH,KAChBA,EAAOo9D,GAAK,MAGTp9D,IAGX,QAASskI,IAAgBtkI,GACrB,GAAI2uC,GAAQ3uC,EAAOu9D,OAAGA,KAClB5uB,EACA3uC,EAAOo9D,GAAK,GAAIjmB,MAAKw3E,EAAmB10H,OACjC60H,EAAOngF,GACd3uC,EAAOo9D,GAAK,GAAIjmB,MAAKxI,EAAM8+B,WACH,gBAAV9+B,GACd6yF,GAAiBxhI,GACVgY,EAAQ22B,IACf3uC,EAAOi1G,GAAKh8F,EAAI01B,EAAM7zC,MAAM,GAAI,SAAUrO,GACtC,MAAOkjC,UAASljC,EAAK,MAEzBy1I,GAAgBliI,IACS,gBAAZ,GACbikI,GAAiBjkI,GACQ,gBAAZ,GAEbA,EAAOo9D,GAAK,GAAIjmB,MAAKxI,GAErBggF,EAAmB+S,wBAAwB1hI,GAInD,QAASovH,IAAkBzgF,EAAOp0C,EAAQ66G,EAAQ+Z,EAAQoV,GACtD,GAAIl5I,KAoBJ,OAlBuB,iBAAb,KACN8jI,EAAS/Z,EACTA,WAGCrsF,EAAS4lB,IAAUkgF,EAAclgF,IAC7B32B,EAAQ22B,IAA2B,IAAjBA,EAAM1lD,UAC7B0lD,UAIJtjD,EAAE2lI,oBACF3lI,EAAEy2I,QAAUz2I,EAAE+lI,OAASmT,EACvBl5I,EAAE6lI,GAAK9b,EACP/pH,EAAEkyE,GAAK5uB,EACPtjD,EAAE4lI,GAAK12H,EACPlP,EAAEqlI,QAAUvB,EAELgV,GAAiB94I,GAG5B,QAAS23I,IAAoBr0F,EAAOp0C,EAAQ66G,EAAQ+Z,GAChD,MAAOC,IAAiBzgF,EAAOp0C,EAAQ66G,EAAQ+Z,MAgCnD,QAASqV,IAAOvjH,EAAIwjH,GAChB,GAAI1V,GAAKxmI,CAIT,IAHuB,IAAnBk8I,EAAQx7I,QAAgB+uB,EAAQysH,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQx7I,OACT,MAAO+5I,KAGX,KADAjU,EAAM0V,EAAQ,GACTl8I,EAAI,EAAGA,EAAIk8I,EAAQx7I,SAAUV,EACzBk8I,EAAQl8I,GAAG0lF,YAAaw2D,EAAQl8I,GAAG04B,GAAI8tG,KACxCA,EAAM0V,EAAQl8I,GAGtB,OAAOwmI,GAIX,QAASxgD,MAGL,MAAOi2D,IAAO,cAFA1pI,MAAMrS,KAAKmR,UAAW,IAKxC,QAAS4rB,MAGL,MAAOg/G,IAAO,aAFA1pI,MAAMrS,KAAKmR,UAAW,IASxC,QAAS8qI,IAAUvqI,GACf,GAAI26H,GAAkBH,EAAqBx6H,GACvCwqI,EAAQ7P,EAAgB5X,MAAQ,EAChC0nB,EAAW9P,EAAgB+P,SAAW,EACtC/L,EAAShE,EAAgB5c,OAAS,EAClC4sB,EAAQhQ,EAAgBsG,MAAQ,EAChC2J,EAAOjQ,EAAgB7c,KAAO,EAC9B6mB,EAAQhK,EAAgB1mD,MAAQ,EAChC6wD,EAAUnK,EAAgB9c,QAAU,EACpCgtB,EAAUlQ,EAAgB/c,QAAU,EACpCktB,EAAenQ,EAAgBoP,aAAe,CAGlDj9H,MAAKi+H,eAAiBD,EACR,IAAVD,EACU,IAAV/F,EACQ,IAARH,EAAe,GAAK,GAGxB73H,KAAKk+H,OAASJ,EACF,EAARD,EAIJ79H,KAAK+wH,SAAWc,EACD,EAAX8L,EACQ,GAARD,EAEJ19H,KAAK+mC,SAEL/mC,KAAKqqH,QAAUwO,KAEf74H,KAAKm+H,UAGT,QAASC,IAAY54I,GACjB,MAAOA,aAAei4I,IAG1B,QAASY,IAAUzlE,GACf,MAAIA,GAAS,GACyB,EAA3Bt6C,KAAKggH,OAAO,EAAI1lE,GAEhBt6C,KAAKggH,MAAM1lE,GAM1B,QAAS2lE,IAAQ9nH,EAAO+nH,GACpBxP,EAAev4G,EAAO,EAAG,EAAG,WACxB,GAAI8nH,GAASv+H,KAAKknE,YACdu3D,EAAO,GAKX,OAJIF,GAAS,IACTA,GAAUA,EACVE,EAAO,KAEJA,EAAO/P,KAAY6P,EAAS,IAAK,GAAKC,EAAY9P,IAAW,EAAW,GAAI,KAuB3F,QAASgQ,IAAiBl9B,EAAS7oC,GAC/B,GAAIpwC,IAAYowC,GAAU,IAAIruD,MAAMk3F,OAChCz+G,EAAUwlC,EAAQA,EAAQvmC,OAAS,OACnC28I,GAAW57I,EAAQ,IAAIunB,MAAMs0H,MAAiB,IAAK,EAAG,GACtD5G,EAAuB,GAAX2G,EAAM,GAAW9T,EAAM8T,EAAM,GAE7C,OAAoB,MAAbA,EAAM,GAAa3G,GAAWA,EAIzC,QAAS6G,IAAgBn3F,EAAOo3F,GAC5B,GAAIhX,GAAKqF,CACT,OAAI2R,GAAM3U,QACNrC,EAAMgX,EAAM/4D,QACZonD,GAAQzC,EAAShjF,IAAUmgF,EAAOngF,GAASA,EAAM8+B,UAAYu1D,GAAmBr0F,GAAO8+B,WAAashD,EAAIthD,UAExGshD,EAAI3xD,GAAG4oE,QAAQjX,EAAI3xD,GAAGqQ,UAAY2mD,GAClCzF,EAAmB+C,aAAa3C,MACzBA,GAEAiU,GAAmBr0F,GAAOs3F,QAIzC,QAASC,IAAe96I,GAGpB,MAAoD,KAA5Cm6B,KAAKggH,MAAMn6I,EAAEgyE,GAAG+oE,oBAAsB,IAqBlD,QAASC,IAAcz3F,EAAO03F,GAC1B,GACIC,GADAd,EAASv+H,KAAKoqH,SAAW,CAE7B,OAAKpqH,MAAKgnE,UAGG,MAATt/B,GACqB,gBAAVA,GACPA,EAAQg3F,GAAiBY,GAAkB53F,GACpCppB,KAAK8oD,IAAI1/B,GAAS,KACzBA,GAAgB,KAEf1nC,KAAKmqH,QAAUiV,IAChBC,EAAcJ,GAAcj/H,OAEhCA,KAAKoqH,QAAU1iF,EACf1nC,KAAKmqH,UACc,MAAfkV,GACAr/H,KAAKgmE,IAAIq5D,EAAa,KAEtBd,IAAW72F,KACN03F,GAAiBp/H,KAAKu/H,kBACvBC,GAA0Bx/H,KAAMy/H,GAAuB/3F,EAAQ62F,EAAQ,KAAM,GAAE,GACvEv+H,KAAKu/H,oBACbv/H,KAAKu/H,qBACL7X,EAAmB+C,aAAazqH,MAAKA,GACrCA,KAAKu/H,kBAAoB,OAG1Bv/H,MAEAA,KAAKmqH,OAASoU,EAASU,GAAcj/H,MA3B5B,MAAT0nC,EAAgB1nC,KAAOymE,IA+BtC,QAASi5D,IAAYh4F,EAAO03F,GACxB,MAAa,OAAT13F,GACqB,gBAAVA,KACPA,GAASA,GAGb1nC,KAAKknE,UAAUx/B,EAAO03F,GAEfp/H,OAECA,KAAKknE,YAIrB,QAASy4D,IAAgBP,GACrB,MAAOp/H,MAAKknE,UAAU,EAAGk4D,GAG7B,QAASQ,IAAkBR,GASvB,MARIp/H,MAAKmqH,SACLnqH,KAAKknE,UAAU,EAAGk4D,GAClBp/H,KAAKmqH,UAEDiV,GACAp/H,KAAK6/H,SAASZ,GAAcj/H,MAAO,MAGpCA,KAGX,QAAS8/H,MACL,GAAI9/H,KAAKkqH,KACLlqH,KAAKknE,UAAUlnE,KAAKkqH,UACjB,IAAuB,gBAAZlqH,MAAKs2D,GAAiB,CACpC,GAAIypE,GAAQrB,GAAiBsB,GAAahgI,KAAKs2D,GAEjC,KAAVypE,EACA//H,KAAKknE,UAAU,GAAE,GAEjBlnE,KAAKknE,UAAUw3D,GAAiBsB,GAAahgI,KAAKs2D,KAG1D,MAAOt2D,MAGX,QAASigI,IAAsBv4F,GAC3B,QAAK1nC,KAAKgnE,YAGVt/B,EAAQA,EAAQq0F,GAAmBr0F,GAAOw/B,YAAc,GAEhDlnE,KAAKknE,YAAcx/B,GAAS,IAAO,GAG/C,QAASw4F,MACL,MACIlgI,MAAKknE,YAAclnE,KAAK+lE,QAAQkrC,MAAM,GAAG/pC,aACzClnE,KAAKknE,YAAclnE,KAAK+lE,QAAQkrC,MAAM,GAAG/pC,YAIjD,QAASi5D,MACL,IAAKtW,EAAY7pH,KAAKogI,eAClB,MAAOpgI,MAAKogI,aAGhB,IAAIh8I,KAKJ,IAHA0lI,EAAW1lI,EAAG4b,MACd5b,EAAI+4I,GAAc/4I,GAEdA,EAAE4pH,GAAI,CACN,GAAIgL,GAAQ50H,EAAE+lI,OAASlC,EAAsB7jI,EAAE4pH,IAAM+tB,GAAmB33I,EAAE4pH,GAC1EhuG,MAAKogI,cAAgBpgI,KAAKgnE,WACtBgkD,EAAc5mI,EAAE4pH,GAAIgL,EAAM5hB,WAAa,MAE3Cp3F,MAAKogI,gBAGT,OAAOpgI,MAAKogI,cAGhB,QAASC,MACL,QAAOrgI,KAAKgnE,YAAahnE,KAAKmqH,OAGlC,QAASmW,MACL,QAAOtgI,KAAKgnE,WAAYhnE,KAAKmqH,OAGjC,QAASoW,MACL,QAAOvgI,KAAKgnE,WAAYhnE,KAAKmqH,QAA2B,IAAjBnqH,KAAKoqH,QAWhD,QAASqV,IAAwB/3F,EAAOjiD,GACpC,GAGIg5I,GACA7lH,EACA4nH,EALAttI,EAAWw0C,EAEXp9B,EAAQ,IAuDZ,OAlDI8zH,IAAW12F,GACXx0C,GACI8yC,GAAK0B,EAAMu2F,cACX55I,EAAKqjD,EAAMw2F,MACX3K,EAAK7rF,EAAMqpF,SAES,gBAAVrpF,IACdx0C,KACIzN,EACAyN,EAASzN,GAAOiiD,EAEhBx0C,EAAS8qI,aAAet2F,IAElBp9B,EAAQm2H,GAAYltC,KAAK7rD,KACnC+2F,EAAqB,MAAbn0H,EAAM,IAAe,EAAI,EACjCpX,GACIuT,EAAK,EACLpiB,EAAKwmI,EAAMvgH,EAAMgvH,KAAiCmF,EAClDnL,EAAKzI,EAAMvgH,EAAMqoG,KAAiC8rB,EAClDt6I,EAAK0mI,EAAMvgH,EAAMooG,KAAiC+rB,EAClDp5I,EAAKwlI,EAAMvgH,EAAMyoG,KAAiC0rB,EAClDz4F,GAAK6kF,EAAMwT,GAA8B,IAArB/zH,EAAMkvH,MAAwBiF,KAE5Cn0H,EAAQo2H,GAASntC,KAAK7rD,KAChC+2F,EAAqB,MAAbn0H,EAAM,IAAe,EAAI,EACjCpX,GACIuT,EAAIk6H,GAASr2H,EAAM,GAAIm0H,GACvBlL,EAAIoN,GAASr2H,EAAM,GAAIm0H,GACvBhD,EAAIkF,GAASr2H,EAAM,GAAIm0H,GACvBp6I,EAAIs8I,GAASr2H,EAAM,GAAIm0H,GACvBnL,EAAIqN,GAASr2H,EAAM,GAAIm0H,GACvBt6I,EAAIw8I,GAASr2H,EAAM,GAAIm0H,GACvBp5I,EAAIs7I,GAASr2H,EAAM,GAAIm0H,KAER,MAAZvrI,EACPA,KAC2B,gBAAbA,KAA0B,QAAUA,IAAY,MAAQA,MACtEstI,EAAUI,GAAkB7E,GAAmB7oI,EAAS+d,MAAO8qH,GAAmB7oI,EAASi2C,KAE3Fj2C,KACAA,EAAS8yC,GAAKw6F,EAAQxC,aACtB9qI,EAASqgI,EAAIiN,EAAQ3O,QAGzBj5G,EAAM,GAAI6kH,IAASvqI,GAEfkrI,GAAW12F,IAAUqgF,EAAWrgF,EAAO,aACvC9uB,EAAIyxG,QAAU3iF,EAAM2iF,SAGjBzxG,EAKX,QAAS+nH,IAAUE,EAAKpC,GAIpB,GAAI3W,GAAM+Y,GAAOC,WAAWD,EAAI9zH,QAAQ,IAAK,KAE7C,QAAQw8G,MAAMzB,GAAO,EAAIA,GAAO2W,EAGpC,QAASsC,IAA0BxlG,EAAMy9E,GACrC,GAAI8O,IAAOkW,aAAc,EAAGnM,OAAQ,EAUpC,OARA/J,GAAI+J,OAAS7Y,EAAM/H,QAAU11E,EAAK01E,QACC,IAA9B+H,EAAM/C,OAAS16E,EAAK06E,QACrB16E,EAAKwqC,QAAQC,IAAI8hD,EAAI+J,OAAQ,KAAKzrD,QAAQ4yC,MACxC8O,EAAI+J,OAGV/J,EAAIkW,cAAgBhlB,GAAUz9E,EAAKwqC,QAAQC,IAAI8hD,EAAI+J,OAAQ,KAEpD/J,EAGX,QAAS8Y,IAAkBrlG,EAAMy9E,GAC7B,GAAI8O,EACJ,OAAMvsF,GAAKyrC,WAAagyC,EAAMhyC,WAI9BgyC,EAAQ6lB,GAAgB7lB,EAAOz9E,GAC3BA,EAAK8qC,SAAS2yC,GACd8O,EAAMiZ,GAA0BxlG,EAAMy9E,IAEtC8O,EAAMiZ,GAA0B/nB,EAAOz9E,GACvCusF,EAAIkW,cAAgBlW,EAAIkW,aACxBlW,EAAI+J,QAAU/J,EAAI+J,QAGf/J,IAZKkW,aAAc,EAAGnM,OAAQ,GAgBzC,QAASmP,IAAYC,EAAW38I,GAC5B,MAAO,UAAUqzC,EAAKupG,GAClB,GAAIC,GAAK1jI,CAWT,OATe,QAAXyjI,GAAoB3X,OAAO2X,KAC3BxV,EAAgBpnI,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,kGAE5GmZ,EAAMk6B,EAAKA,EAAMupG,EAAQA,EAASzjI,GAGtCk6B,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCwpG,EAAM1B,GAAuB9nG,EAAKupG,GAClC1B,GAA0Bx/H,KAAMmhI,EAAKF,GAC9BjhI,MAIf,QAASw/H,IAA2BpT,EAAKl5H,EAAUkuI,EAAU3W,GACzD,GAAIuT,GAAe9qI,EAAS+qI,cACxBH,EAAOO,GAASnrI,EAASgrI,OACzBrM,EAASwM,GAASnrI,EAAS69H,QAE1B3E,GAAIplD,YAKTyjD,EAA+B,MAAhBA,GAA8BA,EAEzCuT,GACA5R,EAAIj2D,GAAG4oE,QAAQ3S,EAAIj2D,GAAGqQ,UAAYw3D,EAAeoD,GAEjDtD,GACAzP,EAAajC,EAAK,OAAQkC,EAAalC,EAAK,QAAU0R,EAAOsD,GAE7DvP,GACAG,GAAS5F,EAAKkC,EAAalC,EAAK,SAAWyF,EAASuP,GAEpD3W,GACA/C,EAAmB+C,aAAa2B,EAAK0R,GAAQjM,IAOrD,QAASwP,IAAkBC,EAAUtuI,GACjC,GAAIm6H,GAAOmU,EAASnU,KAAKn6H,EAAK,UAC9B,OAAOm6H,IAAQ,EAAI,WACXA,GAAQ,EAAI,WACZA,EAAO,EAAI,UACXA,EAAO,EAAI,UACXA,EAAO,EAAI,UACXA,EAAO,EAAI,WAAa,WAGpC,QAASoU,IAA2B1uI,EAAMs+G,GAGtC,GAAIn+G,GAAMH,GAAQkpI,KACdyF,EAAM3C,GAAgB7rI,EAAKgN,MAAMyhI,QAAQ,OACzCnuI,EAASo0H,EAAmBga,eAAe1hI,KAAMwhI,IAAQ,WAEzDnV,EAASlb,IAAYn2B,EAAWm2B,EAAQ79G,IAAW69G,EAAQ79G,GAAQ9R,KAAKwe,KAAMhN,GAAOm+G,EAAQ79G,GAEjG,OAAO0M,MAAK1M,OAAO+4H,GAAUrsH,KAAKkuG,aAAayzB,SAASruI,EAAQ0M,KAAM+7H,GAAmB/oI,KAG7F,QAAS+yE,MACL,MAAO,IAAIwkD,GAAOvqH,MAGtB,QAASomE,IAAS1+B,EAAOorE,GACrB,GAAI8uB,GAAalX,EAAShjF,GAASA,EAAQq0F,GAAmBr0F,EAC9D,UAAM1nC,KAAKgnE,YAAa46D,EAAW56D,aAGnC8rC,EAAQ2a,EAAgB5D,EAAY/W,GAAiB,cAARA,GAC/B,gBAAVA,EACO9yG,KAAKwmE,UAAYo7D,EAAWp7D,UAE5Bo7D,EAAWp7D,UAAYxmE,KAAK+lE,QAAQ07D,QAAQ3uB,GAAOtsC,WAIlE,QAASH,IAAU3+B,EAAOorE,GACtB,GAAI8uB,GAAalX,EAAShjF,GAASA,EAAQq0F,GAAmBr0F,EAC9D,UAAM1nC,KAAKgnE,YAAa46D,EAAW56D,aAGnC8rC,EAAQ2a,EAAgB5D,EAAY/W,GAAiB,cAARA,GAC/B,gBAAVA,EACO9yG,KAAKwmE,UAAYo7D,EAAWp7D,UAE5BxmE,KAAK+lE,QAAQ87D,MAAM/uB,GAAOtsC,UAAYo7D,EAAWp7D,WAIhE,QAASs7D,IAAW7wH,EAAMk4B,EAAI2pE,EAAOivB,GAEjC,MADAA,GAAcA,GAAe,MACF,MAAnBA,EAAY,GAAa/hI,KAAKomE,QAAQn1D,EAAM6hG,IAAU9yG,KAAKqmE,SAASp1D,EAAM6hG,MAC1D,MAAnBivB,EAAY,GAAa/hI,KAAKqmE,SAASl9B,EAAI2pE,IAAU9yG,KAAKomE,QAAQj9B,EAAI2pE,IAG/E,QAAS3sC,IAAQz+B,EAAOorE,GACpB,GACIkvB,GADAJ,EAAalX,EAAShjF,GAASA,EAAQq0F,GAAmBr0F,EAE9D,UAAM1nC,KAAKgnE,YAAa46D,EAAW56D,aAGnC8rC,EAAQ2a,EAAe3a,GAAS,eAClB,gBAAVA,EACO9yG,KAAKwmE,YAAco7D,EAAWp7D,WAErCw7D,EAAUJ,EAAWp7D,UACdxmE,KAAK+lE,QAAQ07D,QAAQ3uB,GAAOtsC,WAAaw7D,GAAWA,GAAWhiI,KAAK+lE,QAAQ87D,MAAM/uB,GAAOtsC,YAIxG,QAASy7D,IAAev6F,EAAOorE,GAC3B,MAAO9yG,MAAKmmE,OAAOz+B,EAAOorE,IAAU9yG,KAAKomE,QAAQ1+B,EAAMorE,GAG3D,QAASovB,IAAgBx6F,EAAOorE,GAC5B,MAAO9yG,MAAKmmE,OAAOz+B,EAAOorE,IAAU9yG,KAAKqmE,SAAS3+B,EAAMorE,GAG5D,QAASqa,IAAMzlF,EAAOorE,EAAOqvB,GACzB,GAAIC,GACAC,EACA7vB,EAAO6Z,CAEX,OAAKrsH,MAAKgnE,WAIVo7D,EAAOvD,GAAgBn3F,EAAO1nC,MAEzBoiI,EAAKp7D,WAIVq7D,EAAoD,KAAvCD,EAAKl7D,YAAclnE,KAAKknE,aAErC4rC,EAAQ2a,EAAe3a,GAET,SAAVA,GAA8B,UAAVA,GAA+B,YAAVA,GACzCuZ,EAASiW,GAAUtiI,KAAMoiI,GACX,YAAVtvB,EACAuZ,GAAkB,EACD,SAAVvZ,IACPuZ,GAAkB,MAGtB7Z,EAAQxyG,KAAOoiI,EACf/V,EAAmB,WAAVvZ,EAAqBN,EAAQ,IACxB,WAAVM,EAAqBN,EAAQ,IACnB,SAAVM,EAAmBN,EAAQ,KACjB,QAAVM,GAAmBN,EAAQ6vB,GAAa,MAC9B,SAAVvvB,GAAoBN,EAAQ6vB,GAAa,OACzC7vB,GAED2vB,EAAU9V,EAAS1B,EAAS0B,IAvBxB5lD,KANAA,IAgCf,QAAS67D,IAAW33H,EAAG5C,GAEnB,GAGIw6H,GAASC,EAHTC,EAA0C,IAAvB16H,EAAEkuG,OAAStrG,EAAEsrG,SAAiBluG,EAAEkpG,QAAUtmG,EAAEsmG,SAE/DyxB,EAAS/3H,EAAEo7D,QAAQC,IAAIy8D,EAAgB,SAc3C,OAXI16H,GAAI26H,EAAS,GACbH,EAAU53H,EAAEo7D,QAAQC,IAAIy8D,EAAiB,EAAG,UAE5CD,GAAUz6H,EAAI26H,IAAWA,EAASH,KAElCA,EAAU53H,EAAEo7D,QAAQC,IAAIy8D,EAAiB,EAAG,UAE5CD,GAAUz6H,EAAI26H,IAAWH,EAAUG,MAI9BD,EAAiBD,IAAW,EAMzC,QAASvkH,MACL,MAAOje,MAAK+lE,QAAQooC,OAAO,MAAM76G,OAAO,oCAG5C,QAASqvI,MACL,GAAIx+I,GAAI6b,KAAK+lE,QAAQ5K,KACrB,OAAI,GAAIh3E,EAAE8xH,QAAU9xH,EAAE8xH,QAAU,KACxBj7B,EAAW9qC,KAAK9tD,UAAUmlF,aAEnBvnE,KAAKglE,SAASuC,cAEd+nD,EAAanrI,EAAG,gCAGpBmrI,EAAanrI,EAAG,kCAI/B,QAASmP,IAAQsvI,GACRA,IACDA,EAAc5iI,KAAKugI,QAAU7Y,EAAmBmb,iBAAmBnb,EAAmBob,cAE1F,IAAIzW,GAASiD,EAAatvH,KAAM4iI,EAChC,OAAO5iI,MAAKkuG,aAAa60B,WAAW1W,GAGxC,QAASp7G,IAAMpe,EAAMk6H,GACjB,MAAI/sH,MAAKgnE,YACC0jD,EAAS73H,IAASA,EAAKm0E,WACxB+0D,GAAmBlpI,GAAMm0E,WACvBy4D,IAAwBt2F,GAAInpC,KAAMiR,KAAMpe,IAAOs7G,OAAOnuG,KAAKmuG,UAAU60B,UAAUjW,GAE/E/sH,KAAKkuG,aAAawe,cAIjC,QAASuW,IAASlW,GACd,MAAO/sH,MAAKiR,KAAK8qH,KAAsBhP,GAG3C,QAAS5jF,IAAIt2C,EAAMk6H,GACf,MAAI/sH,MAAKgnE,YACC0jD,EAAS73H,IAASA,EAAKm0E,WACxB+0D,GAAmBlpI,GAAMm0E,WACvBy4D,IAAwBxuH,KAAMjR,KAAMmpC,GAAIt2C,IAAOs7G,OAAOnuG,KAAKmuG,UAAU60B,UAAUjW,GAE/E/sH,KAAKkuG,aAAawe,cAIjC,QAASwW,IAAOnW,GACZ,MAAO/sH,MAAKmpC,GAAG4yF,KAAsBhP,GAMzC,QAAS5e,IAAQ1oH,GACb,GAAI09I,EAEJ,iBAAI19I,EACOua,KAAKqqH,QAAQsO,OAEpBwK,EAAgBtK,GAA0BpzI,GACrB,MAAjB09I,IACAnjI,KAAKqqH,QAAU8Y,GAEZnjI,MAef,QAASkuG,MACL,MAAOluG,MAAKqqH,QAGhB,QAASoX,IAAS3uB,GAId,OAHAA,EAAQ2a,EAAe3a,IAInB,IAAK,OACD9yG,KAAKixG,MAAM,EAEf,KAAK,UACL,IAAK,QACDjxG,KAAKi7D,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACL,IAAK,OACDj7D,KAAK63H,MAAM,EAEf,KAAK,OACD73H,KAAKg4H,QAAQ,EAEjB,KAAK,SACDh4H,KAAK+9H,QAAQ,EAEjB,KAAK,SACD/9H,KAAKg+H,aAAa,GAgB1B,MAZc,SAAVlrB,GACA9yG,KAAK+1G,QAAQ,GAEH,YAAVjD,GACA9yG,KAAKojI,WAAW,GAIN,YAAVtwB,GACA9yG,KAAKixG,MAAqC,EAA/B3yF,KAAK+oD,MAAMrnE,KAAKixG,QAAU,IAGlCjxG,KAGX,QAAS6hI,IAAO/uB,GAEZ,iBADAA,EAAQ2a,EAAe3a,KACc,gBAAVA,EAChB9yG,MAIG,SAAV8yG,IACAA,EAAQ,OAGL9yG,KAAKyhI,QAAQ3uB,GAAO9sC,IAAI,EAAc,YAAV8sC,EAAsB,OAASA,GAAQ+sB,SAAS,EAAG,OAG1F,QAASwD,MACL,MAAOrjI,MAAKm2D,GAAGqQ,UAAmC,KAArBxmE,KAAKoqH,SAAW,GAGjD,QAASkZ,MACL,MAAOhlH,MAAK+oD,MAAMrnE,KAAKwmE,UAAY,KAGvC,QAASxB,MACL,MAAO,IAAI90B,MAAKlwC,KAAKwmE,WAGzB,QAAS4wB,MACL,GAAIjzG,GAAI6b,IACR,QAAQ7b,EAAE8xH,OAAQ9xH,EAAE8sH,QAAS9sH,EAAE82E,OAAQ92E,EAAEgjF,OAAQhjF,EAAE4sH,SAAU5sH,EAAE2sH,SAAU3sH,EAAE84I,eAG/E,QAASvuF,MACL,GAAIvqD,GAAI6b,IACR,QACI09H,MAAOv5I,EAAE8xH,OACT4b,OAAQ1tI,EAAE8sH,QACVh2C,KAAM92E,EAAE82E,OACR48D,MAAO1zI,EAAE0zI,QACTG,QAAS7zI,EAAE6zI,UACX+F,QAAS55I,EAAE45I,UACXC,aAAc75I,EAAE65I,gBAIxB,QAASzkG,MAEL,MAAOv5B,MAAKgnE,UAAYhnE,KAAKunE,cAAgB,KAGjD,QAASg8D,MACL,MAAOpa,GAAenpH,MAG1B,QAASwjI,MACL,MAAOxb,MAAWiB,EAAgBjpH,OAGtC,QAASyjI,MACL,MAAOxa,GAAgBjpH,MAAMwoH,SAGjC,QAASkb,MACL,OACIh8F,MAAO1nC,KAAKs2D,GACZhjE,OAAQ0M,KAAKgqH,GACb7b,OAAQnuG,KAAKqqH,QACbiT,MAAOt9H,KAAKmqH,OACZjC,OAAQloH,KAAKypH,SAcrB,QAASka,IAAwBltH,EAAOlyB,GACpCyqI,EAAe,GAAIv4G,EAAOA,EAAMz0B,QAAS,EAAGuC,GAwChD,QAASq/I,IAAgBl8F,GACrB,MAAOm8F,IAAqBriJ,KAAKwe,KACzB0nC,EACA1nC,KAAKm0H,OACLn0H,KAAK+1G,UACL/1G,KAAKkuG,aAAa4mB,MAAMhB,IACxB9zH,KAAKkuG,aAAa4mB,MAAMf,KAGpC,QAAS+P,IAAmBp8F,GACxB,MAAOm8F,IAAqBriJ,KAAKwe,KACzB0nC,EAAO1nC,KAAK+jI,UAAW/jI,KAAKojI,aAAc,EAAG,GAGzD,QAASY,MACL,MAAOrP,IAAY30H,KAAKi2G,OAAQ,EAAG,GAGvC,QAASguB,MACL,GAAIC,GAAWlkI,KAAKkuG,aAAa4mB,KACjC,OAAOH,IAAY30H,KAAKi2G,OAAQiuB,EAASpQ,IAAKoQ,EAASnQ,KAG3D,QAAS8P,IAAqBn8F,EAAOysF,EAAMpe,EAAS+d,EAAKC,GACrD,GAAIoQ,EACJ,OAAa,OAATz8F,EACO+sF,GAAWz0H,KAAM8zH,EAAKC,GAAK9d,MAElCkuB,EAAcxP,GAAYjtF,EAAOosF,EAAKC,GAClCI,EAAOgQ,IACPhQ,EAAOgQ,GAEJC,GAAW5iJ,KAAKwe,KAAM0nC,EAAOysF,EAAMpe,EAAS+d,EAAKC,IAIhE,QAASqQ,IAAW1I,EAAUvH,EAAMpe,EAAS+d,EAAKC,GAC9C,GAAIsQ,GAAgBnQ,GAAmBwH,EAAUvH,EAAMpe,EAAS+d,EAAKC,GACjE94D,EAAOy4D,GAAc2Q,EAAcpuB,KAAM,EAAGouB,EAAc7P,UAK9D,OAHAx0H,MAAKi2G,KAAKh7C,EAAK04D,kBACf3zH,KAAKixG,MAAMh2C,EAAK6/D,eAChB96H,KAAKi7D,KAAKA,EAAK41D,cACR7wH,KAwBX,QAASskI,IAAe58F,GACpB,MAAgB,OAATA,EAAgBppB,KAAKssG,MAAM5qH,KAAKixG,QAAU,GAAK,GAAKjxG,KAAKixG,MAAoB,GAAbvpE,EAAQ,GAAS1nC,KAAKixG,QAAU,GAsD3G,QAASszB,IAAiB78F,GACtB,GAAI8sF,GAAYl2G,KAAKggH,OAAOt+H,KAAK+lE,QAAQ07D,QAAQ,OAASzhI,KAAK+lE,QAAQ07D,QAAQ,SAAW,OAAS,CACnG,OAAgB,OAAT/5F,EAAgB8sF,EAAYx0H,KAAKgmE,IAAKt+B,EAAQ8sF,EAAY,KAiGrE,QAASgQ,IAAQ98F,EAAOvG,GACpBA,EAAMq4F,IAAe3O,EAAuB,KAAhB,KAAOnjF,IAiBvC,QAAS+8F,MACL,MAAOzkI,MAAKmqH,OAAS,MAAQ,GAGjC,QAASua,MACL,MAAO1kI,MAAKmqH,OAAS,6BAA+B,GA4GxD,QAASwa,IAAoBj9F,GACzB,MAAOq0F,IAA2B,IAARr0F,GAG9B,QAASk9F,MACL,MAAO7I,IAAmBrpI,MAAM,KAAMC,WAAWkyI,YAGrD,QAASC,IAAoBnsE,GACzB,MAAOA,GAyCX,QAASosE,IAAYzxI,EAAQoe,EAAOszH,EAAOC,GACvC,GAAI92B,GAAS0qB,KACT19D,EAAM8sD,IAAwBn3F,IAAIm0G,EAAQvzH,EAC9C,OAAOy8F,GAAO62B,GAAO7pE,EAAK7nE,GAG9B,QAAS4xI,IAAgB5xI,EAAQoe,EAAOszH,GAQpC,GAPsB,gBAAX1xI,KACPoe,EAAQpe,EACRA,UAGJA,EAASA,GAAU,GAEN,MAAToe,EACA,MAAOqzH,IAAWzxI,EAAQoe,EAAOszH,EAAO,QAG5C,IAAI1jJ,GACA6jJ,IACJ,KAAK7jJ,EAAI,EAAGA,EAAI,GAAIA,IAChB6jJ,EAAI7jJ,GAAKyjJ,GAAWzxI,EAAQhS,EAAG0jJ,EAAO,QAE1C,OAAOG,GAWX,QAASC,IAAkBC,EAAc/xI,EAAQoe,EAAOszH,GACxB,iBAAjBK,IACe,gBAAX/xI,KACPoe,EAAQpe,EACRA,UAGJA,EAASA,GAAU,KAEnBA,EAAS+xI,EACT3zH,EAAQpe,EACR+xI,KAEsB,gBAAX/xI,KACPoe,EAAQpe,EACRA,UAGJA,EAASA,GAAU,GAGvB,IAAI66G,GAAS0qB,KACTv2I,EAAQ+iJ,EAAel3B,EAAO2mB,MAAMhB,IAAM,CAE9C,IAAa,MAATpiH,EACA,MAAOqzH,IAAWzxI,GAASoe,EAAQpvB,GAAS,EAAG0iJ,EAAO,MAG1D,IAAI1jJ,GACA6jJ,IACJ,KAAK7jJ,EAAI,EAAGA,EAAI,EAAGA,IACf6jJ,EAAI7jJ,GAAKyjJ,GAAWzxI,GAAShS,EAAIgB,GAAS,EAAG0iJ,EAAO,MAExD,OAAOG,GAGX,QAASG,IAAmBhyI,EAAQoe,GAChC,MAAOwzH,IAAe5xI,EAAQoe,EAAO,UAGzC,QAAS6zH,IAAwBjyI,EAAQoe,GACrC,MAAOwzH,IAAe5xI,EAAQoe,EAAO,eAGzC,QAAS8zH,IAAqBH,EAAc/xI,EAAQoe,GAChD,MAAO0zH,IAAiBC,EAAc/xI,EAAQoe,EAAO,YAGzD,QAAS+zH,IAA0BJ,EAAc/xI,EAAQoe,GACrD,MAAO0zH,IAAiBC,EAAc/xI,EAAQoe,EAAO,iBAGzD,QAASg0H,IAAwBL,EAAc/xI,EAAQoe,GACnD,MAAO0zH,IAAiBC,EAAc/xI,EAAQoe,EAAO,eAqBzD,QAASi0H,MACL,GAAI7+F,GAAiB9mC,KAAK+mC,KAa1B,OAXA/mC,MAAKi+H,cAAgB2H,GAAQ5lI,KAAKi+H,eAClCj+H,KAAKk+H,MAAgB0H,GAAQ5lI,KAAKk+H,OAClCl+H,KAAK+wH,QAAgB6U,GAAQ5lI,KAAK+wH,SAElCjqF,EAAKk3F,aAAgB4H,GAAQ9+F,EAAKk3F,cAClCl3F,EAAKi3F,QAAgB6H,GAAQ9+F,EAAKi3F,SAClCj3F,EAAKkxF,QAAgB4N,GAAQ9+F,EAAKkxF,SAClClxF,EAAK+wF,MAAgB+N,GAAQ9+F,EAAK+wF,OAClC/wF,EAAK+qF,OAAgB+T,GAAQ9+F,EAAK+qF,QAClC/qF,EAAK42F,MAAgBkI,GAAQ9+F,EAAK42F,OAE3B19H,KAGX,QAAS6lI,IAAoC3yI,EAAUw0C,EAAOhiD,EAAOu7I,GACjE,GAAIjoB,GAAQymB,GAAuB/3F,EAAOhiD,EAM1C,OAJAwN,GAAS+qI,eAAiBgD,EAAYjoB,EAAMilB,cAC5C/qI,EAASgrI,OAAiB+C,EAAYjoB,EAAMklB,MAC5ChrI,EAAS69H,SAAiBkQ,EAAYjoB,EAAM+X,QAErC79H,EAASirI,UAIpB,QAAS2H,IAA4Bp+F,EAAOhiD,GACxC,MAAOmgJ,IAAmC7lI,KAAM0nC,EAAOhiD,EAAO,GAIlE,QAASqgJ,IAAiCr+F,EAAOhiD,GAC7C,MAAOmgJ,IAAmC7lI,KAAM0nC,EAAOhiD,GAAQ,GAGnE,QAASsgJ,IAASptE,GACd,MAAIA,GAAS,EACFt6C,KAAK+oD,MAAMzO,GAEXt6C,KAAKssG,KAAKhyD,GAIzB,QAASqtE,MACL,GAIIlI,GAAS/F,EAASH,EAAO6F,EAAOwI,EAJhClI,EAAeh+H,KAAKi+H,cACpBH,EAAe99H,KAAKk+H,MACpBrM,EAAe7xH,KAAK+wH,QACpBjqF,EAAe9mC,KAAK+mC,KAwCxB,OAnCOi3F,IAAgB,GAAKF,GAAQ,GAAKjM,GAAU,GAC1CmM,GAAgB,GAAKF,GAAQ,GAAKjM,GAAU,IACjDmM,GAAuD,MAAvCgI,GAAQG,GAAatU,GAAUiM,GAC/CA,EAAO,EACPjM,EAAS,GAKb/qF,EAAKk3F,aAAeA,EAAe,IAEnCD,EAAoBpT,EAASqT,EAAe,KAC5Cl3F,EAAKi3F,QAAeA,EAAU,GAE9B/F,EAAoBrN,EAASoT,EAAU,IACvCj3F,EAAKkxF,QAAeA,EAAU,GAE9BH,EAAoBlN,EAASqN,EAAU,IACvClxF,EAAK+wF,MAAeA,EAAQ,GAE5BiG,GAAQnT,EAASkN,EAAQ,IAGzBqO,EAAiBvb,EAASyb,GAAatI,IACvCjM,GAAUqU,EACVpI,GAAQkI,GAAQG,GAAaD,IAG7BxI,EAAQ/S,EAASkH,EAAS,IAC1BA,GAAU,GAEV/qF,EAAKg3F,KAASA,EACdh3F,EAAK+qF,OAASA,EACd/qF,EAAK42F,MAASA,EAEP19H,KAGX,QAASomI,IAActI,GAGnB,MAAc,MAAPA,EAAc,OAGzB,QAASqI,IAActU,GAEnB,MAAgB,QAATA,EAAkB,KAG7B,QAASwU,IAAIvzB,GACT,GAAIgrB,GACAjM,EACAmM,EAAeh+H,KAAKi+H,aAIxB,IAAc,WAFdnrB,EAAQ2a,EAAe3a,KAEY,SAAVA,EAGrB,MAFAgrB,GAAS99H,KAAKk+H,MAAUF,EAAe,MACvCnM,EAAS7xH,KAAK+wH,QAAUqV,GAAatI,GACpB,UAAVhrB,EAAoB+e,EAASA,EAAS,EAI7C,QADAiM,EAAO99H,KAAKk+H,MAAQ5/G,KAAKggH,MAAM6H,GAAanmI,KAAK+wH,UACzCje,GACJ,IAAK,OAAW,MAAOgrB,GAAO,EAAQE,EAAe,MACrD,KAAK,MAAW,MAAOF,GAAeE,EAAe,KACrD,KAAK,OAAW,MAAc,IAAPF,EAAeE,EAAe,IACrD,KAAK,SAAW,MAAc,MAAPF,EAAeE,EAAe,GACrD,KAAK,SAAW,MAAc,OAAPF,EAAeE,EAAe,GAErD,KAAK,cAAe,MAAO1/G,MAAK+oD,MAAa,MAAPy2D,GAAgBE,CACtD,SAAS,KAAM,IAAIh7I,OAAM,gBAAkB8vH,IAMvD,QAASwzB,MACL,MACItmI,MAAKi+H,cACQ,MAAbj+H,KAAKk+H,MACJl+H,KAAK+wH,QAAU,GAAM,OACK,QAA3BlG,EAAM7qH,KAAK+wH,QAAU,IAI7B,QAASwV,IAAQC,GACb,MAAO,YACH,MAAOxmI,MAAKqmI,GAAGG,IAavB,QAASC,IAAmB3zB,GAExB,MADAA,GAAQ2a,EAAe3a,GAChB9yG,KAAK8yG,EAAQ,OAGxB,QAAS4zB,IAAWpiJ,GAChB,MAAO,YACH,MAAO0b,MAAK+mC,MAAMziD,IAY1B,QAASu5I,MACL,MAAOlT,GAAS3qH,KAAK89H,OAAS,GAalC,QAAS6I,IAAkBhuE,EAAQC,EAAQm0D,EAAeC,EAAU7e,GAChE,MAAOA,GAAOy4B,aAAahuE,GAAU,IAAKm0D,EAAep0D,EAAQq0D,GAGrE,QAAS6Z,IAAiCC,EAAgB/Z,EAAe5e,GACrE,GAAIj7G,GAAWusI,GAAuBqH,GAAgB1/D,MAClD22D,EAAWO,GAAMprI,EAASmzI,GAAG,MAC7BrO,EAAWsG,GAAMprI,EAASmzI,GAAG,MAC7BxO,EAAWyG,GAAMprI,EAASmzI,GAAG,MAC7BvI,EAAWQ,GAAMprI,EAASmzI,GAAG,MAC7BxU,EAAWyM,GAAMprI,EAASmzI,GAAG,MAC7B3I,EAAWY,GAAMprI,EAASmzI,GAAG,MAE7B17H,EAAIozH,EAAUltB,GAAWxrH,IAAM,IAAK04I,IAChC/F,GAAW,IAAgB,MAC3BA,EAAUnnB,GAAW1sH,IAAM,KAAM6zI,IACjCH,GAAW,IAAgB,MAC3BA,EAAUhnB,GAAWyiB,IAAM,KAAMuE,IACjCiG,GAAW,IAAgB,MAC3BA,EAAUjtB,GAAWxsH,IAAM,KAAMy5I,IACjCjM,GAAW,IAAgB,MAC3BA,EAAUhhB,GAAW0iB,IAAM,KAAM1B,IACjC6L,GAAW,IAAgB,OAAmB,KAAMA,EAK5D,OAHA/yH,GAAE,GAAKoiH,EACPpiH,EAAE,IAAMm8H,EAAiB,EACzBn8H,EAAE,GAAKwjG,EACAw4B,GAAkBj0I,MAAM,KAAMiY,GAIzC,QAASo8H,IAA+CC,GACpD,gBAAIA,EACO1I,GAEsB,kBAAvB,KACNA,GAAQ0I,MAOhB,QAASC,IAAgDC,EAAWxxG,GAChE,gBAAIm7E,GAAWq2B,cAGXxxG,EACOm7E,GAAWq2B,IAEtBr2B,GAAWq2B,GAAaxxG,OAI5B,QAASstG,IAAUmE,GACf,GAAIh5B,GAASnuG,KAAKkuG,aACdme,EAASwa,GAAgC7mI,MAAOmnI,EAAYh5B,EAMhE,OAJIg5B,KACA9a,EAASle,EAAO+e,YAAYltH,KAAMqsH,IAG/Ble,EAAO40B,WAAW1W,GAK7B,QAAS+a,MAQL,GAGIpP,GAASH,EAAO6F,EAHhBK,EAAUsJ,GAAgBrnI,KAAKi+H,eAAiB,IAChDH,EAAeuJ,GAAgBrnI,KAAKk+H,OACpCrM,EAAewV,GAAgBrnI,KAAK+wH,QAIxCiH,GAAoBrN,EAASoT,EAAU,IACvClG,EAAoBlN,EAASqN,EAAU,IACvC+F,GAAW,GACX/F,GAAW,GAGX0F,EAAS/S,EAASkH,EAAS,IAC3BA,GAAU,EAIV,IAAIyV,GAAI5J,EACJnK,EAAI1B,EACJ0V,EAAIzJ,EACJxK,EAAIuE,EACJ1zI,EAAI6zI,EACJ3yI,EAAI04I,EACJyJ,EAAQxnI,KAAKynI,WAEjB,OAAKD,IAMGA,EAAQ,EAAI,IAAM,IACtB,KACCF,EAAIA,EAAI,IAAM,KACd/T,EAAIA,EAAI,IAAM,KACdgU,EAAIA,EAAI,IAAM,KACbjU,GAAKnvI,GAAKkB,EAAK,IAAM,KACtBiuI,EAAIA,EAAI,IAAM,KACdnvI,EAAIA,EAAI,IAAM,KACdkB,EAAIA,EAAI,IAAM,IAXR,MAlhIf,GAAIsiI,IA8FA3xG,EAEAA,IADAhiB,MAAM5R,UAAU4zB,KACThiB,MAAM5R,UAAU4zB,KAEhB,SAAUyhE,GAIb,IAAK,GAHDn/D,GAAIn2B,OAAO6d,MACX6yB,EAAMva,EAAEt2B,SAAW,EAEdV,EAAI,EAAGA,EAAIuxC,EAAKvxC,IACrB,GAAIA,IAAKg3B,IAAKm/D,EAAIj2F,KAAKwe,KAAMsY,EAAEh3B,GAAIA,EAAGg3B,GAClC,OAAM,CAId,UAuDR,IAAIgyG,IAAmB5C,EAAmB4C,oBAiDtCE,MA2FAmB,KAYJjE,GAAmB4D,+BACnB5D,EAAmB+D,mBAAqB,IAsDxC,IAAIzgI,GAGAA,IADA7I,OAAO6I,KACA7I,OAAO6I,KAEP,SAAUxF,GACb,GAAIlE,GAAGwmI,IACP,KAAKxmI,IAAKkE,GACFuiI,EAAWviI,EAAKlE,IAChBwmI,EAAI5lI,KAAKZ,EAGjB,OAAOwmI,GAIf,IA4WIpsH,IA5WAgsI,IACAC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAQXC,IACAC,IAAO,YACPC,GAAO,SACPC,EAAO,aACPC,GAAO,eACPC,IAAO,sBACPC,KAAO,6BAyBPC,GAAsB,UAMtBC,IACAC,OAAS,QACTC,KAAS,SACTtjJ,EAAK,gBACLlB,EAAK,WACLykJ,GAAK,aACLtV,EAAK,UACLuV,GAAK,WACLxkJ,EAAK,QACLykJ,GAAK,UACLvV,EAAK,UACLwV,GAAK,YACLtiI,EAAK,SACLuiI,GAAK,YAeLxb,MA4BAQ,MA2EAqB,GAAmB,uLAEnBK,GAAwB,6CAExBF,MAEAN,MAoFA+Z,GAAiB,KACjBC,GAAiB,OACjBC,GAAiB,QACjBC,GAAiB,QACjBC,GAAiB,aACjBC,GAAiB,QACjBC,GAAiB,YACjBC,GAAiB,gBACjBC,GAAiB,UACjBC,GAAiB,UACjBC,GAAiB,eAEjBC,GAAiB,MACjBC,GAAiB,WAEjB7J,GAAiB,qBACjBV,GAAmB,0BAEnBwK,GAAiB,uBAIjBC,GAAY,mHAGZla,MA2BAtuB,MA8BAg4B,GAAO,EACPF,GAAQ,EACRC,GAAO,EACP3mB,GAAO,EACPD,GAAS,EACTK,GAAS,EACTymB,GAAc,EACdG,GAAO,EACPE,GAAU,CAKVn+H,IADA1H,MAAM5R,UAAUsZ,QACN1H,MAAM5R,UAAUsZ,QAEhB,SAAUlX,GAEhB,GAAIlD,EACJ,KAAKA,EAAI,EAAGA,EAAI0e,KAAKhe,SAAUV,EAC3B,GAAI0e,KAAK1e,KAAOkD,EACZ,MAAOlD,EAGf,QAAQ,GAUhB0tI,EAAe,KAAM,KAAM,GAAI,KAAM,WACjC,MAAOhvH,MAAKixG,QAAU,IAG1B+d,EAAe,MAAO,EAAG,EAAG,SAAU17H,GAClC,MAAO0M,MAAKkuG,aAAa0jB,YAAY5xH,KAAM1M,KAG/C07H,EAAe,OAAQ,EAAG,EAAG,SAAU17H,GACnC,MAAO0M,MAAKkuG,aAAa2jB,OAAO7xH,KAAM1M,KAK1C85H,EAAa,QAAS,KAItBU,EAAgB,QAAS,GAIzB6B,EAAc,IAAQ2Z,IACtB3Z,EAAc,KAAQ2Z,GAAWJ,IACjCvZ,EAAc,MAAQ,SAAUG,EAAU3hB,GACtC,MAAOA,GAAOkkB,iBAAiBvC,KAEnCH,EAAc,OAAQ,SAAUG,EAAU3hB,GACtC,MAAOA,GAAOukB,YAAY5C,KAG9BS,IAAe,IAAK,MAAO,SAAU7oF,EAAOvG,GACxCA,EAAMk4F,IAASxO,EAAMnjF,GAAS,IAGlC6oF,IAAe,MAAO,QAAS,SAAU7oF,EAAOvG,EAAOpoC,EAAQ0d,GAC3D,GAAIw6F,GAAQl4G,EAAOsxH,QAAQ6H,YAAYxqF,EAAOjxB,EAAO1d,EAAO0wH,QAE/C,OAATxY,EACA9vE,EAAMk4F,IAASpoB,EAEfgY,EAAgBlwH,GAAQ4vH,aAAejhF,GAM/C,IAAIupF,IAAmB,gCACnB+Y,GAAsB,wFAAwFtsI,MAAM,KASpHusI,GAA2B,kDAAkDvsI,MAAM,KAiInF+0H,GAA0BsX,GAoB1BlX,GAAqBkX,EAwDzB/a,GAAe,IAAK,EAAG,EAAG,WACtB,GAAIvoH,GAAIzG,KAAKi2G,MACb,OAAOxvG,IAAK,KAAO,GAAKA,EAAI,IAAMA,IAGtCuoH,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAOhvH,MAAKi2G,OAAS,MAGzB+Y,EAAe,GAAI,OAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,QAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,SAAU,GAAE,GAAQ,EAAG,QAI1C5B,EAAa,OAAQ,KAIrBU,EAAgB,OAAQ,GAIxB6B,EAAc,IAAUka,IACxBla,EAAc,KAAU2Z,GAAWJ,IACnCvZ,EAAc,OAAU+Z,GAAWN,IACnCzZ,EAAc,QAAUga,GAAWN,IACnC1Z,EAAc,SAAUga,GAAWN,IAEnC9Y,IAAe,QAAS,UAAWgJ,IACnChJ,GAAc,OAAQ,SAAU7oF,EAAOvG,GACnCA,EAAMo4F,IAAyB,IAAjB7xF,EAAM1lD,OAAe0lI,EAAmBwiB,kBAAkBxiG,GAASmjF,EAAMnjF,KAE3F6oF,GAAc,KAAM,SAAU7oF,EAAOvG,GACjCA,EAAMo4F,IAAQ7R,EAAmBwiB,kBAAkBxiG,KAEvD6oF,GAAc,IAAK,SAAU7oF,EAAOvG,GAChCA,EAAMo4F,IAAQ7wG,SAASgf,EAAO,MAelCggF,EAAmBwiB,kBAAoB,SAAUxiG,GAC7C,MAAOmjF,GAAMnjF,IAAUmjF,EAAMnjF,GAAS,GAAK,KAAO,KAKtD,IAAIyiG,IAAahc,EAAW,cA4F5Ba,GAAe,KAAM,KAAM,GAAI,KAAM,QACrCA,EAAe,KAAM,KAAM,GAAI,KAAM,WAIrC5B,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAIxBU,EAAgB,OAAQ,GACxBA,EAAgB,UAAW,GAI3B6B,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/BvZ,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAE/B1Y,IAAmB,IAAK,KAAM,IAAK,MAAO,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GACrE09G,EAAK19G,EAAMyR,OAAO,EAAG,IAAM2iG,EAAMnjF,IAWrC,IAAI0iG,KACAtW,IAAM,EACNC,IAAM,EAyBV/E,GAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,EAAG,SAAU17H,GACjC,MAAO0M,MAAKkuG,aAAa+nB,YAAYj2H,KAAM1M,KAG/C07H,EAAe,MAAO,EAAG,EAAG,SAAU17H,GAClC,MAAO0M,MAAKkuG,aAAagoB,cAAcl2H,KAAM1M,KAGjD07H,EAAe,OAAQ,EAAG,EAAG,SAAU17H,GACnC,MAAO0M,MAAKkuG,aAAaioB,SAASn2H,KAAM1M,KAG5C07H,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1B5B,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAG3BU,EAAgB,MAAO,IACvBA,EAAgB,UAAW,IAC3BA,EAAgB,aAAc,IAI9B6B,EAAc,IAAQ2Z,IACtB3Z,EAAc,IAAQ2Z,IACtB3Z,EAAc,IAAQ2Z,IACtB3Z,EAAc,KAAQ,SAAUG,EAAU3hB,GACtC,MAAOA,GAAOipB,iBAAiBtH,KAEnCH,EAAc,MAAS,SAAUG,EAAU3hB,GACvC,MAAOA,GAAO6oB,mBAAmBlH,KAErCH,EAAc,OAAU,SAAUG,EAAU3hB,GACxC,MAAOA,GAAOwoB,cAAc7G,KAGhCU,IAAmB,KAAM,MAAO,QAAS,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GACpE,GAAIs/F,GAAUh9G,EAAOsxH,QAAQ+K,cAAc1tF,EAAOjxB,EAAO1d,EAAO0wH,QAEjD,OAAX1T,EACAoe,EAAK9vI,EAAI0xH,EAETkT,EAAgBlwH,GAAQywH,eAAiB9hF,IAIjD8oF,IAAmB,IAAK,IAAK,KAAM,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GAC9D09G,EAAK19G,GAASo0G,EAAMnjF,IA+BxB,IAAI2iG,IAAwB,2DAA2D3sI,MAAM,KASzF4sI,GAA6B,8BAA8B5sI,MAAM,KAKjE6sI,GAA2B,uBAAuB7sI,MAAM,KAqJxDq5H,GAAuBgT,GAoBvB5S,GAA4B4S,GAoB5BxS,GAA0BwS,EAwE9B/a,GAAe,KAAM,KAAM,GAAI,EAAG,QAClCA,EAAe,KAAM,KAAM,GAAI,EAAG4I,IAClC5I,EAAe,KAAM,KAAM,GAAI,EAAG8I,IAElC9I,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAK4I,GAAQllI,MAAMsN,MAAQ0uH,EAAS1uH,KAAKg4H,UAAW,KAG/DhJ,EAAe,QAAS,EAAG,EAAG,WAC1B,MAAO,GAAK4I,GAAQllI,MAAMsN,MAAQ0uH,EAAS1uH,KAAKg4H,UAAW,GACvDtJ,EAAS1uH,KAAK+9H,UAAW,KAGjC/O,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKhvH,KAAK63H,QAAUnJ,EAAS1uH,KAAKg4H,UAAW,KAGxDhJ,EAAe,QAAS,EAAG,EAAG,WAC1B,MAAO,GAAKhvH,KAAK63H,QAAUnJ,EAAS1uH,KAAKg4H,UAAW,GAChDtJ,EAAS1uH,KAAK+9H,UAAW,KASjC/U,GAAS,QACTA,GAAS,QAIToE,EAAa,OAAQ,KAGrBU,EAAgB,OAAQ,IAQxB6B,EAAc,IAAMsI,IACpBtI,EAAc,IAAMsI,IACpBtI,EAAc,IAAM2Z,IACpB3Z,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/BvZ,EAAc,KAAM2Z,GAAWJ,IAE/BvZ,EAAc,MAAO4Z,IACrB5Z,EAAc,QAAS6Z,IACvB7Z,EAAc,MAAO4Z,IACrB5Z,EAAc,QAAS6Z,IAEvBjZ,IAAe,IAAK,MAAO5d,IAC3B4d,IAAe,IAAK,KAAM,SAAU7oF,EAAOvG,EAAOpoC,GAC9CA,EAAOyxI,MAAQzxI,EAAOsxH,QAAQqS,KAAKh1F,GACnC3uC,EAAOujI,UAAY50F,IAEvB6oF,IAAe,IAAK,MAAO,SAAU7oF,EAAOvG,EAAOpoC,GAC/CooC,EAAMwxE,IAAQkY,EAAMnjF,GACpBuhF,EAAgBlwH,GAAQ2wH,aAE5B6G,GAAc,MAAO,SAAU7oF,EAAOvG,EAAOpoC,GACzC,GAAIo9F,GAAMzuD,EAAM1lD,OAAS,CACzBm/C,GAAMwxE,IAAQkY,EAAMnjF,EAAMxf,OAAO,EAAGiuE,IACpCh1D,EAAMuxE,IAAUmY,EAAMnjF,EAAMxf,OAAOiuE,IACnC8yB,EAAgBlwH,GAAQ2wH,aAE5B6G,GAAc,QAAS,SAAU7oF,EAAOvG,EAAOpoC,GAC3C,GAAI0xI,GAAO/iG,EAAM1lD,OAAS,EACtB0oJ,EAAOhjG,EAAM1lD,OAAS,CAC1Bm/C,GAAMwxE,IAAQkY,EAAMnjF,EAAMxf,OAAO,EAAGuiH,IACpCtpG,EAAMuxE,IAAUmY,EAAMnjF,EAAMxf,OAAOuiH,EAAM,IACzCtpG,EAAM4xE,IAAU8X,EAAMnjF,EAAMxf,OAAOwiH,IACnCzhB,EAAgBlwH,GAAQ2wH,aAE5B6G,GAAc,MAAO,SAAU7oF,EAAOvG,EAAOpoC,GACzC,GAAIo9F,GAAMzuD,EAAM1lD,OAAS,CACzBm/C,GAAMwxE,IAAQkY,EAAMnjF,EAAMxf,OAAO,EAAGiuE,IACpCh1D,EAAMuxE,IAAUmY,EAAMnjF,EAAMxf,OAAOiuE,MAEvCo6B,GAAc,QAAS,SAAU7oF,EAAOvG,EAAOpoC,GAC3C,GAAI0xI,GAAO/iG,EAAM1lD,OAAS,EACtB0oJ,EAAOhjG,EAAM1lD,OAAS,CAC1Bm/C,GAAMwxE,IAAQkY,EAAMnjF,EAAMxf,OAAO,EAAGuiH,IACpCtpG,EAAMuxE,IAAUmY,EAAMnjF,EAAMxf,OAAOuiH,EAAM,IACzCtpG,EAAM4xE,IAAU8X,EAAMnjF,EAAMxf,OAAOwiH,KAWvC,IAwCIhS,IAxCAiS,GAA6B,gBAgB7BC,GAAazc,EAAW,YAExB4K,IACA4I,SAAU+F,GACVnb,eAAgB0b,GAChBvb,YArxCqB,eAsxCrBE,QAhxCiB,KAixCjBie,aAAcrC,GACd5B,aAAc6B,GAEd5W,OAAQmY,GACRpY,YAAaqY,GAEb9V,KAAMiW,GAENjU,SAAUkU,GACVpU,YAAasU,GACbrU,cAAeoU,GAEfQ,cAAeH,IAIfp6B,MAgMA0pB,GAAmB,kJACnBC,GAAgB,6IAEhBG,GAAU,wBAEVF,KACC,eAAgB,wBAChB,aAAc,oBACd,eAAgB,mBAChB,aAAc,eAAc,IAC5B,WAAY,gBACZ,UAAW,cAAa,IACxB,aAAc,eACd,WAAY,UAEZ,aAAc,gBACd,YAAa,eAAc,IAC3B,UAAW,UAIZC,KACC,gBAAiB,wBACjB,gBAAiB,uBACjB,WAAY,mBACZ,QAAS,cACT,cAAe,sBACf,cAAe,qBACf,SAAU,iBACV,OAAQ,aACR,KAAM,SAGPI,GAAkB,qBAuEtB9S,GAAmB+S,wBAA0BlP,EACzC,8TAIA,SAAUxyH,GACNA,EAAOo9D,GAAK,GAAIjmB,MAAKn3C,EAAOu9D,IAAMv9D,EAAO8hI,QAAU,OAAS,OAgJpEnT,EAAmBuU,SAAW,YA0P9B,IAAI8O,IAAexf,EACf,qGACA,WACI,GAAIvS,GAAQ+iB,GAAmBrpI,MAAM,KAAMC,UAC3C,OAAIqN,MAAKgnE,WAAagyC,EAAMhyC,UACjBgyC,EAAQh5G,KAAOA,KAAOg5G,EAEtB4Q,MAKfohB,GAAezf,EACf,qGACA,WACI,GAAIvS,GAAQ+iB,GAAmBrpI,MAAM,KAAMC,UAC3C,OAAIqN,MAAKgnE,WAAagyC,EAAMhyC,UACjBgyC,EAAQh5G,KAAOA,KAAOg5G,EAEtB4Q,MAwCf52H,GAAM,WACN,MAAOk9C,MAAKl9C,IAAMk9C,KAAKl9C,OAAS,GAAKk9C,MAgEzCquF,IAAO,IAAK,KACZA,GAAO,KAAM,IAIb5O,EAAc,IAAM2P,IACpB3P,EAAc,KAAM2P,IACpB/O,IAAe,IAAK,MAAO,SAAU7oF,EAAOvG,EAAOpoC,GAC/CA,EAAO8hI,WACP9hI,EAAOmxH,KAAOwU,GAAiBY,GAAkB53F,IAQrD,IAAIk3F,IAAc,iBAoClBlX,GAAmB+C,aAAe,YAgJlC,IAAIgW,IAAc,wDAKdC,GAAW,6IA+DfjB,IAAuBzlH,GAAKyjH,GAASr7I,SAuFrC,IAAI6oJ,IAAyBjK,GAAY,EAAG,OACxCkK,GAAyBlK,IAAa,EAAG,WA8I7CtZ,GAAmBob,cAAgB,uBACnCpb,EAAmBmb,iBAAmB,wBAyEtC,IAAI3mI,IAAOqvH,EACP,kJACA,SAAU9lI,GACN,gBAAIA,EACOua,KAAKkuG,aAELluG,KAAKmuG,OAAO1oH,IA8H/BupI,GAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAOhvH,MAAK07H,WAAa,MAG7B1M,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAOhvH,MAAKmrI,cAAgB,MAOhCxH,GAAuB,OAAY,YACnCA,GAAuB,QAAY,YACnCA,GAAuB,OAAS,eAChCA,GAAuB,QAAS,eAIhCvW,EAAa,WAAY,MACzBA,EAAa,cAAe,MAI5BU,EAAgB,WAAY,GAC5BA,EAAgB,cAAe,GAK/B6B,EAAc,IAAUka,IACxBla,EAAc,IAAUka,IACxBla,EAAc,KAAU2Z,GAAWJ,IACnCvZ,EAAc,KAAU2Z,GAAWJ,IACnCvZ,EAAc,OAAU+Z,GAAWN,IACnCzZ,EAAc,OAAU+Z,GAAWN,IACnCzZ,EAAc,QAAUga,GAAWN,IACnC1Z,EAAc,QAAUga,GAAWN,IAEnC7Y,IAAmB,OAAQ,QAAS,OAAQ,SAAU,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GACjF09G,EAAK19G,EAAMyR,OAAO,EAAG,IAAM2iG,EAAMnjF,KAGrC8oF,IAAmB,KAAM,MAAO,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GAC3D09G,EAAK19G,GAASixG,EAAmBwiB,kBAAkBxiG,KAqDvDsnF,EAAe,IAAK,EAAG,KAAM,WAI7B5B,EAAa,UAAW,KAIxBU,EAAgB,UAAW,GAI3B6B,EAAc,IAAKsZ,IACnB1Y,GAAc,IAAK,SAAU7oF,EAAOvG,GAChCA,EAAMk4F,IAA8B,GAApBxO,EAAMnjF,GAAS,KAWnCsnF,EAAe,KAAM,KAAM,GAAI,KAAM,QAIrC5B,EAAa,OAAQ,KAGrBU,EAAgB,OAAQ,GAIxB6B,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/BvZ,EAAc,KAAM,SAAUG,EAAU3hB,GACpC,MAAO2hB,GAAW3hB,EAAO2d,cAAgB3d,EAAO0d,uBAGpD0E,IAAe,IAAK,MAAO+I,IAC3B/I,GAAc,KAAM,SAAU7oF,EAAOvG,GACjCA,EAAMm4F,IAAQzO,EAAMnjF,EAAMp9B,MAAMg/H,IAAW,GAAI,KAKnD,IAAI8B,IAAmBjd,EAAW,UAIlCa,GAAe,OAAQ,OAAQ,GAAI,OAAQ,aAI3C5B,EAAa,YAAa,OAG1BU,EAAgB,YAAa,GAI7B6B,EAAc,MAAQ8Z,IACtB9Z,EAAc,OAAQwZ,IACtB5Y,IAAe,MAAO,QAAS,SAAU7oF,EAAOvG,EAAOpoC,GACnDA,EAAOsiI,WAAaxQ,EAAMnjF,KAc9BsnF,EAAe,KAAM,KAAM,GAAI,EAAG,UAIlC5B,EAAa,SAAU,KAIvBU,EAAgB,SAAU,IAI1B6B,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/B3Y,IAAe,IAAK,MAAO7d,GAI3B,IAAI24B,IAAeld,EAAW,aAI9Ba,GAAe,KAAM,KAAM,GAAI,EAAG,UAIlC5B,EAAa,SAAU,KAIvBU,EAAgB,SAAU,IAI1B6B,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/B3Y,IAAe,IAAK,MAAOxd,GAI3B,IAAIu4B,IAAend,EAAW,aAI9Ba,GAAe,IAAK,EAAG,EAAG,WACtB,SAAUhvH,KAAKi9H,cAAgB,OAGnCjO,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,SAAUhvH,KAAKi9H,cAAgB,MAGnCjO,EAAe,GAAI,MAAO,GAAI,EAAG,eACjCA,EAAe,GAAI,OAAQ,GAAI,EAAG,WAC9B,MAA4B,IAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,QAAS,GAAI,EAAG,WAC/B,MAA4B,KAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,SAAU,GAAI,EAAG,WAChC,MAA4B,KAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,UAAW,GAAI,EAAG,WACjC,MAA4B,KAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,WAAY,GAAI,EAAG,WAClC,MAA4B,KAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,YAAa,GAAI,EAAG,WACnC,MAA4B,KAArBhvH,KAAKi9H,gBAMhB7P,EAAa,cAAe,MAI5BU,EAAgB,cAAe,IAI/B6B,EAAc,IAAQ8Z,GAAWR,IACjCtZ,EAAc,KAAQ8Z,GAAWP,IACjCvZ,EAAc,MAAQ8Z,GAAWN,GAEjC,IAAI1yH,GACJ,KAAKA,GAAQ,OAAQA,GAAMz0B,QAAU,EAAGy0B,IAAS,IAC7Ck5G,EAAcl5G,GAAOmzH,GAOzB,KAAKnzH,GAAQ,IAAKA,GAAMz0B,QAAU,EAAGy0B,IAAS,IAC1C85G,GAAc95G,GAAO+tH,GAIzB,IAAI+G,IAAoBpd,EAAW,kBAInCa,GAAe,IAAM,EAAG,EAAG,YAC3BA,EAAe,KAAM,EAAG,EAAG,WAY3B,IAAIwc,IAAyBjhB,EAAOnoI,SAEpCopJ,IAAuBxlE,IAAoBilE,GAC3CO,GAAuB7J,SAAoBJ,GAC3CiK,GAAuBzlE,MAAoBA,GAC3CylE,GAAuBre,KAAoBA,GAC3Cqe,GAAuB3J,MAAoBA,GAC3C2J,GAAuBl4I,OAAoBA,GAC3Ck4I,GAAuBv6H,KAAoBA,GAC3Cu6H,GAAuBvI,QAAoBA,GAC3CuI,GAAuBriG,GAAoBA,GAC3CqiG,GAAuBtI,MAAoBA,GAC3CsI,GAAuB5mJ,IAAoB2pI,EAC3Cid,GAAuB/H,UAAoBA,GAC3C+H,GAAuBplE,QAAoBA,GAC3ColE,GAAuBnlE,SAAoBA,GAC3CmlE,GAAuB1J,UAAoBA,GAC3C0J,GAAuBrlE,OAAoBA,GAC3CqlE,GAAuBvJ,cAAoBA,GAC3CuJ,GAAuBtJ,eAAoBA,GAC3CsJ,GAAuBxkE,QAAoBu8D,GAC3CiI,GAAuBtvI,KAAoBA,GAC3CsvI,GAAuBr9B,OAAoBA,GAC3Cq9B,GAAuBt9B,WAAoBA,GAC3Cs9B,GAAuBjtH,IAAoBysH,GAC3CQ,GAAuBlkE,IAAoByjE,GAC3CS,GAAuBhI,aAAoBA,GAC3CgI,GAAuB16G,IAAoB09F,EAC3Cgd,GAAuB/J,QAAoBA,GAC3C+J,GAAuB3L,SAAoBqL,GAC3CM,GAAuBp0C,QAAoBA,GAC3Co0C,GAAuB98F,SAAoBA,GAC3C88F,GAAuBxmE,OAAoBA,GAC3CwmE,GAAuBjkE,YAAoBo7D,GAC3C6I,GAAuBjyG,OAAoBA,GAC3CiyG,GAAuBvtH,SAAoBA,GAC3CutH,GAAuBlI,KAAoBA,GAC3CkI,GAAuBhlE,QAAoB68D,GAC3CmI,GAAuB9H,aAAoBA,GAG3C8H,GAAuBv1B,KAAak0B,GACpCqB,GAAuBrY,WAAaC,GAGpCoY,GAAuB9P,SAAckI,GACrC4H,GAAuBL,YAAcrH,GAGrC0H,GAAuB5N,QAAU4N,GAAuB7N,SAAW2G,GAGnEkH,GAAuBv6B,MAAckhB,GACrCqZ,GAAuB7a,YAAcyB,GAGrCoZ,GAAuBrX,KAAiBqX,GAAuB3N,MAAe5I,GAC9EuW,GAAuBzH,QAAiByH,GAAuBC,SAAevW,GAC9EsW,GAAuB7W,YAAiBsP,GACxCuH,GAAuBE,eAAiB1H,GAGxCwH,GAAuBvwE,KAAamwE,GACpCI,GAAuBx6B,IAAaw6B,GAAuB1N,KAAmBvH,GAC9EiV,GAAuBz1B,QAAa0gB,GACpC+U,GAAuBpI,WAAa1M,GACpC8U,GAAuBhX,UAAa+P,GAGpCiH,GAAuBrkE,KAAOqkE,GAAuB3T,MAAQ+S,GAG7DY,GAAuBz6B,OAASy6B,GAAuBxT,QAAUqT,GAGjEG,GAAuB16B,OAAS06B,GAAuBzN,QAAUuN,GAGjEE,GAAuBvO,YAAcuO,GAAuBxN,aAAeuN,GAG3EC,GAAuBtkE,UAAuBi4D,GAC9CqM,GAAuBrwE,IAAuBwkE,GAC9C6L,GAAuBxM,MAAuBY,GAC9C4L,GAAuB3G,UAAuB/E,GAC9C0L,GAAuBvL,qBAAuBA,GAC9CuL,GAAuBG,MAAuBzL,GAC9CsL,GAAuBnL,QAAuBA,GAC9CmL,GAAuBlL,YAAuBA,GAC9CkL,GAAuBjL,MAAuBA,GAC9CiL,GAAuBlO,MAAuBiD,GAG9CiL,GAAuBI,SAAWnH,GAClC+G,GAAuBK,SAAWnH,GAGlC8G,GAAuB5yF,MAAS2yE,EAAU,kDAAmD6f,IAC7FI,GAAuB3Z,OAAStG,EAAU,mDAAoD4G,IAC9FqZ,GAAuB9N,MAASnS,EAAU,iDAAkD4e,IAC5FqB,GAAuBM,KAASvgB,EAAU,2GAA4GmU,IACtJ8L,GAAuBO,aAAexgB,EAAU,0GAA2G4U,GAE3J,IAAI6L,IAAkBR,GAclBS,GAAmB/f,EAAO9pI,SAE9B6pJ,IAAiBtK,SAAkBxV,EACnC8f,GAAiB1f,eAAkBA,EACnC0f,GAAiBvf,YAAkBA,EACnCuf,GAAiBrf,QAAkBA,EACnCqf,GAAiB7O,SAAkB0H,GACnCmH,GAAiBlJ,WAAkB+B,GACnCmH,GAAiBrF,aAAkB9Z,EACnCmf,GAAiB/e,WAAkBA,EACnC+e,GAAiBn7G,IAAkB86F,EAGnCqgB,GAAiBpa,OAA2Bf,GAC5Cmb,GAAiBra,YAA2BV,GAC5C+a,GAAiB/Z,YAA2BJ,GAC5Cma,GAAiBvZ,YAAoBA,GACrCuZ,GAAiB5Z,iBAAoBA,GAGrC4Z,GAAiB9X,KAAOU,GACxBoX,GAAiBC,eAAiBlX,GAClCiX,GAAiBE,eAAiBpX,GAGlCkX,GAAiB9V,SAAwBb,GACzC2W,GAAiBhW,YAAwBP,GACzCuW,GAAiB/V,cAAwBV,GACzCyW,GAAiB7W,cAAwBgB,GAEzC6V,GAAiBtV,cAA6BA,GAC9CsV,GAAiBjV,mBAA6BA,GAC9CiV,GAAiB7U,iBAA6BA,GAG9C6U,GAAiBvP,KAAOvE,GACxB8T,GAAiBjjB,SAAWoP,GA4F5BQ,GAAmC,MAC/BiS,aAAc,uBACdje,QAAU,SAAUh0D,GAChB,GAAI7wD,GAAI6wD,EAAS,EAKjB,OAAOA,IAJoC,IAA7BiyD,EAAMjyD,EAAS,IAAM,IAAa,KACrC,IAAN7wD,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,SAM/B2/G,EAAmBxrH,KAAOqvH,EAAU,wDAAyDqN,IAC7FlR,EAAmB0kB,SAAW7gB,EAAU,gEAAiEsN,GAEzG,IAAI+M,IAAUtnH,KAAK8oD,IAoJfilE,GAAiB9F,GAAO,MACxBkB,GAAiBlB,GAAO,KACxB+F,GAAiB/F,GAAO,KACxBgG,GAAiBhG,GAAO,KACxBiG,GAAiBjG,GAAO,KACxBkG,GAAiBlG,GAAO,KACxBmG,GAAiBnG,GAAO,KACxBoG,GAAiBpG,GAAO,KAaxBvI,GAAe0I,GAAW,gBAC1B3I,GAAe2I,GAAW,WAC1B1O,GAAe0O,GAAW,WAC1B7O,GAAe6O,GAAW,SAC1B5I,GAAe4I,GAAW,QAC1B7U,GAAe6U,GAAW,UAC1BhJ,GAAegJ,GAAW,SAM1BpI,GAAQhgH,KAAKggH,MACbztB,IACAxrH,EAAG,GACHlB,EAAG,GACHmvI,EAAG,GACHjvI,EAAG,GACHkvI,EAAG,IAqEH8T,GAAkB/oH,KAAK8oD,IAoDvBwlE,GAA4BnP,GAASr7I,SA2FzC,OAzFAwqJ,IAA0BxlE,IAAiBu+D,GAC3CiH,GAA0B5mE,IAAiB8/D,GAC3C8G,GAA0B/M,SAAiBkG,GAC3C6G,GAA0BvG,GAAiBA,GAC3CuG,GAA0BP,eAAiBA,GAC3CO,GAA0BnF,UAAiBA,GAC3CmF,GAA0BN,UAAiBA,GAC3CM,GAA0BL,QAAiBA,GAC3CK,GAA0BJ,OAAiBA,GAC3CI,GAA0BH,QAAiBA,GAC3CG,GAA0BF,SAAiBA,GAC3CE,GAA0BD,QAAiBA,GAC3CC,GAA0BpmE,QAAiB8/D,GAC3CsG,GAA0BzO,QAAiB8H,GAC3C2G,GAA0BhoJ,IAAiB6hJ,GAC3CmG,GAA0B5O,aAAiBA,GAC3C4O,GAA0B7O,QAAiBA,GAC3C6O,GAA0B5U,QAAiBA,GAC3C4U,GAA0B/U,MAAiBA,GAC3C+U,GAA0B9O,KAAiBA,GAC3C8O,GAA0B/O,MAAiBA,GAC3C+O,GAA0B/a,OAAiBA,GAC3C+a,GAA0BlP,MAAiBA,GAC3CkP,GAA0B5J,SAAiBA,GAC3C4J,GAA0BrlE,YAAiB6/D,GAC3CwF,GAA0B3uH,SAAiBmpH,GAC3CwF,GAA0BrzG,OAAiB6tG,GAC3CwF,GAA0Bz+B,OAAiBA,GAC3Cy+B,GAA0B1+B,WAAiBA,GAG3C0+B,GAA0BC,YAActhB,EAAU,sFAAuF6b,IACzIwF,GAA0B1wI,KAAOA,GAMjC8yH,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BW,EAAc,IAAKka,IACnBla,EAAc,IAAKma,IACnBvZ,GAAc,IAAK,SAAU7oF,EAAOvG,EAAOpoC,GACvCA,EAAOo9D,GAAK,GAAIjmB,MAA6B,IAAxB4wF,WAAWp5F,EAAO,OAE3C6oF,GAAc,IAAK,SAAU7oF,EAAOvG,EAAOpoC,GACvCA,EAAOo9D,GAAK,GAAIjmB,MAAK26E,EAAMnjF,MAM/BggF,EAAmBzpH,QAAU,SAjlI7B,SAA0Bw4B,GACtBkxF,GAAelxF,GAklIHslG,IAEhBrU,EAAmB1tG,GAAwBgyH,GAC3CtkB,EAAmBpgD,IAAwBA,GAC3CogD,EAAmBnpG,IAAwBA,GAC3CmpG,EAAmB10H,IAAwBA,GAC3C00H,EAAmBvsD,IAAwB8sD,EAC3CP,EAAmB4b,KAAwBqB,GAC3Cjd,EAAmBmK,OAAwByT,GAC3C5d,EAAmBG,OAAwBA,EAC3CH,EAAmBvZ,OAAwByqB,GAC3ClR,EAAmBolB,QAAwBljB,EAC3ClC,EAAmBx0H,SAAwBusI,GAC3C/X,EAAmBgD,SAAwBA,EAC3ChD,EAAmByO,SAAwBqP,GAC3C9d,EAAmBmd,UAAwBD,GAC3Cld,EAAmBxZ,WAAwB2qB,GAC3CnR,EAAmB0W,WAAwBA,GAC3C1W,EAAmBkK,YAAwB2T,GAC3C7d,EAAmBuO,YAAwByP,GAC3Che,EAAmBoR,aAAwBA,GAC3CpR,EAAmBwR,aAAwBA,GAC3CxR,EAAmBnX,QAAwB4oB,GAC3CzR,EAAmBwO,cAAwBuP,GAC3C/d,EAAmB+F,eAAwBA,EAC3C/F,EAAmBqlB,qBAAuBhG,GAC1Crf,EAAmBslB,sBAAwB/F,GAC3Cvf,EAAmBga,eAAwBL,GAC3C3Z,EAAmBtlI,UAAwB4pJ,GAE7BtkB,U1I4tyBWlmI,KAAKJ,EAASH,EAAoB,GAAIA,EAAoB,KAAKI,KAItF,SAAUA,EAAQD,G2Ir26BxBC,EAAOD,QAAU,SAASC,GAoBzB,MAnBIA,GAAO4rJ,kBACV5rJ,EAAOkqI,UAAY,aACnBlqI,EAAOwoG,SAEHxoG,EAAOof,WAAUpf,EAAOof,aAC5Bte,OAAOsC,eAAepD,EAAQ,UAC7BsD,YAAWA,EACXC,IAAK,WACJ,MAAOvD,GAAOE,KAGhBY,OAAOsC,eAAepD,EAAQ,MAC7BsD,YAAWA,EACXC,IAAK,WACJ,MAAOvD,GAAOC,KAGhBD,EAAO4rJ,gBAAkB,GAEnB5rJ,I3I626BF,SAAUA,EAAQD,EAASH,G4Ij46BjC,GAAIuuD,GAAO,EAAQ,IAGf1F,EAAS0F,EAAK1F,MAElBzoD,GAAOD,QAAU0oD,G5Iw46BX,SAAUzoD,EAAQD,G6I726BxB,QAAS8rJ,GAAGxnJ,EAAOszH,GACjB,MAAOtzH,KAAUszH,GAAUtzH,IAAUA,GAASszH,IAAUA,EAG1D33H,EAAOD,QAAU8rJ,G7Io56BX,SAAU7rJ,EAAQD,EAASH,G8I566BjC,QAASksJ,GAAMznJ,GACb,GAAoB,gBAATA,IAAqB0nJ,EAAS1nJ,GACvC,MAAOA,EAET,IAAI+kB,GAAU/kB,EAAQ,EACtB,OAAkB,KAAV+kB,GAAkB,EAAI/kB,IAAW2nJ,EAAY,KAAO5iI,EAjB9D,GAAI2iI,GAAW,EAAQ,KAGnBC,EAAW,GAiBfhsJ,GAAOD,QAAU+rJ,G9I+76BX,SAAU9rJ,EAAQD,EAASH,G+In96BjC,GAAIqsJ,GAAkB,EAAQ,KAC1BzkD,EAAe,EAAQ,IAGvB0kD,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,eAG7BwsD,EAAuB0+F,EAAY1+F,qBAoBnC2+F,EAAcF,EAAgB,WAAa,MAAO36I,eAAkB26I,EAAkB,SAAS5nJ,GACjG,MAAOmjG,GAAanjG,IAAUrD,EAAeb,KAAKkE,EAAO,YACtDmpD,EAAqBrtD,KAAKkE,EAAO,UAGtCrE,GAAOD,QAAUosJ,G/I096BX,SAAUnsJ,EAAQD,EAASH,GAEjC,YgJt+6BA,SAASqjF,GAAS7oE,EAAM1W,GACtBg3B,EAAM,cACJtgB,KAAMA,EACN1W,OAAQA,GAQV,KALA,GAAI0oJ,IAAO,EACPC,EAA4B,mBAAtB/0E,EAAOn3E,KAAKia,GAA6BA,EAAOkyI,EAAOC,EAAOnyI,IACpEmrE,EAAM8mE,EAAI1rJ,OACV4jB,EAAMghE,EAAM7hF,WAEP0oJ,EAAM7mE,GAAK,CAClB,GAAIzkF,OAAOyjB,KAASA,EAAK,MACzBA,GAAMA,EAAI8nI,EAAID,IAIhB,MADA1xH,GAAM,OAAQnW,GACQ,kBAARA,GAAqBA,IAAQA,EAxC7C,GAAIioI,GAAS,EAAQ,KACjB9xH,EAAQ,EAAQ,KAAS,WACzB6xH,EAAS,EAAQ,KACjBD,EAAS,EAAQ,KACjBh1E,EAASx2E,OAAOC,UAAU67B,QAE9B58B,GAAOD,QAAUysJ,EAAOvpE,IhJwi7BlB,SAAUjjF,EAAQD,EAASH,GiJni7BjC,QAAS6sJ,GAAapoJ,GAGpB,MAAoB,kBAATA,GACFA,EAEI,MAATA,EACKqoJ,EAEW,gBAATroJ,GACFqrB,EAAQrrB,GACXsoJ,EAAoBtoJ,EAAM,GAAIA,EAAM,IACpCuoJ,EAAYvoJ,GAEXV,EAASU,GA3BlB,GAAIuoJ,GAAc,EAAQ,KACtBD,EAAsB,EAAQ,KAC9BD,EAAW,EAAQ,KACnBh9H,EAAU,EAAQ,IAClB/rB,EAAW,EAAQ,IA0BvB3D,GAAOD,QAAU0sJ,GjJuj7BX,SAAUzsJ,EAAQiE,EAAqBrE,GAE7C,YkJjg7BO,SAASitJ,GAAqB7nD,EAAW/vC,GAC5C,GAAItjC,GAASqzE,CACb,IAAI/vC,EAAiB,CACjB,GAAM63F,GAAc73F,EAAgBzjC,OAAOu7H,EAC3Cp7H,GAAS7wB,OAAO6I,KAAKgoB,GAAQ/nB,OAAO,SAACC,EAAKzF,GAItC,MAHI0oJ,GAAYzyI,QAAQjW,IAAQ,IAC5ByF,EAAIzF,GAAOutB,EAAOvtB,IAEfyF,OAIf,MAAO8nB,GlJs/6BoB/xB,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+oJ,KACpEptJ,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO+/F,KACpEpkG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOk3H,KAEpEv7H,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO6gG,KACpEllG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOwgG,KAEpE7kG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOm/F,KACpExjG,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOkhG,IAC9E,IAAIn7C,GAAyCpqD,EAAoB,GAE7D86F,GADiD96F,EAAoB4D,EAAEwmD,GAChCpqD,EAAoB,IAC3DqtJ,EAAmDrtJ,EAAoB,IACvEstJ,EAA6CttJ,EAAoB,GACjEutJ,EAAyDvtJ,EAAoB,IAC7EwtJ,EAA+CxtJ,EAAoB,IACnEytJ,EAA6CztJ,EAAoB,IACjE0tJ,EAAuD1tJ,EAAoB,IAChGmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IkJxl7BjP8sI,GAAmB,SAAU,cAE7BQ,EAAoBt1I,yBACtBH,IACAK,IACA4E,IACA,SAAChF,EAAKK,EAAQo1I,GAAe,GACTvpC,GAAoElsG,EAA5Es0E,OAAoB7zE,EAAwDT,EAAxDS,QAASqC,EAA+C9C,EAA/C8C,KAAMurG,EAAyCruG,EAAzCquG,WAAY15D,EAA6B30C,EAA7B20C,UAAWoQ,EAAkB/kD,EAAlB+kD,KAAM1pD,EAAY2E,EAAZ3E,OAExE,QACIgF,SACAo1I,aACAv6I,YAAauF,EACbyrG,aACAppG,OACAurG,aACAjjC,GARO/uE,IAAWwxE,mBASlBl5B,YACAoQ,OACA1pD,aAKC45I,EAAuB/0I,yBAChCH,IACAW,IACA,cAGK,GAF4Bg1I,GAE5B,EAFCjxF,UAAakxF,aACbt6I,EACD,EADCA,OAEF,OAAIq6I,GAAcr6I,GACPq6I,EAAcr6I,GAIlBq6I,EAAcE,WAIhB3pD,EAAwB/rF,yBACjCH,IACAK,IACA,SAACJ,EAAKK,GAAW,GACLi0E,GAAkDt0E,EAAlDs0E,OAAiBp5E,EAAiC8E,EAA1CS,QAAsBqC,EAAoB9C,EAApB8C,KAAM6xC,EAAc30C,EAAd20C,UACtCy2B,EAAK/uE,IAAWwxE,kBACtB,QACIxtE,SACAnF,cACAgxG,WAAYj/G,IAAWqnF,GACvBxxE,OACAsoE,KACAz2B,eAKCyuE,EAA2BljH,yBACpCH,IACA,SAACC,GAEG,OACI9E,YAFsB8E,EAAlBS,QAGJqC,KAHsB9C,EAAT8C,QAuBZiqF,EAA0B7sF,yBACnCV,IACAmB,IACA60I,EACA53H,IACAQ,IACA,WAEIvd,EACAg1I,EACA5pC,EACA3tF,GACC,QALC2+B,OAKD,sBALYC,GAKZ,EALYA,gBAMTtjC,EAAS/Y,EAAaA,KACnBg1I,GACH5pC,eACA3tF,YACAu3H,CAIJ,OAFAj8H,GAASk7H,EAAqBl7H,EAAQsjC,KAMjCwvC,EAA2BxsF,yBACpCV,IACAmB,IACA60I,EACA53H,IACAQ,IACA,WAEIvd,EACAg1I,EACA5pC,EACA3tF,GACC,QALC2+B,OAKD,sBALYC,GAKZ,EALYA,gBAMTtjC,EAAS/Y,EAAaA,KACnBg1I,GACH5pC,eACA3tF,YACAu3H,CAIJ,OAFAj8H,GAASk7H,EAAqBl7H,EAAQsjC,KAMjC44F,EAA8B51I,yBACvCV,IACA,YAEK,QADCy9C,OACD,2BADY84F,wBACZ,MAGD,QACIC,SAHaD,EAAantJ,OAASmtJ,EAAal9H,KAAK,eAQpDwyE,EAAwBnrF,yBACjCV,IACAmB,IACA60I,EACAj3H,IACAX,IACAihD,IACAzgD,IACAo0F,IACAI,IACAkjC,EACA,WAEIj1I,EACAg1I,EACAp3H,EACAwtF,EACAl3D,EACAz2B,EACA23H,EACAC,EACAF,GACC,QAVC/4F,OAUD,sBAVYC,GAUZ,EAVYA,gBAWTtjC,EAAS/Y,EAAaA,KACnBg1I,EACAG,GACHv3H,aACAwtF,eACAl3D,eACAz2B,UACA23H,eACAC,kBARS,KAUNL,EACAG,EAKP,OAFAp8H,GAASk7H,EAAqBl7H,EAAQsjC,KAOjCkwC,EAA+BltF,yBACxCV,IACAmB,IACA60I,EACAp3H,IACAygD,IACAi3E,EACA,WAEIj1I,EACAg1I,EACAv3H,EACAy2B,EACAihG,GACC,QANC/4F,OAMD,sBANYC,GAMZ,EANYA,gBAOTtjC,EAAS/Y,EAAaA,KACnBg1I,EACAG,GACHjhG,eACAz2B,YAJS,KAMNu3H,EACAG,EAKP,OAFAp8H,GAASk7H,EAAqBl7H,EAAQsjC,IAM/Bs4F,QlJyi7BT,SAAUvtJ,EAAQiE,EAAqBrE,GAE7C,YAkBA,SAAS6jG,GAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GAEnN,QAASoiD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA2Rje,QAASowI,GAAsC/pJ,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GAEhO,QAASkuI,GAA6B7rF,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAE7H,QAASuxH,GAAwCvuI,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAE/O,QAASkuJ,GAAuBxwI,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAtT9e,GAAIse,GAAWx8B,EAAoB,IAC/BgqH,EAAgChqH,EAAoB4D,EAAE44B,GAGtD0rD,EAAYloF,EAAoB,KAGhC0uJ,EAAa1uJ,EAAoB,KAGjC2uJ,EAAY3uJ,EAAoB,KAGhC4jE,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MmJry7B1hBisF,E,YACF,aAA6C,gEAA/B34D,EAA+B,EAA/BA,WAAen7E,EAAgB,qGAEzC,GAAK+zI,YAAc54D,EACnB,EAAK64D,SAAWh0I,EAHyB,EnJyi8B7C,MArPA+nD,GAAU+rF,EAAkBG,GAgB5BnrF,EAAagrF,IACTpqJ,IAAK,cACLC,MAAO,SmJ5y7BCA,GAAO,UACf,OAAO,IAAIxC,KAAQ,SAACC,EAASE,GACzB,IACI,GAAIqC,GAAS4yB,EAAK23H,QAGd,MAFA33H,GAAK23H,QAAQC,YAAYxqJ,OACzBvC,KAGJA,GAAQm1B,EAAK23H,SAAW33H,EAAK23H,QAAQC,eACvC,MAAOhrJ,GACL7B,EAAO6B,SnJmz7BfO,IAAK,eACLC,MAAO,WmJ/y7BI,WACLyqJ,EAAkBzuJ,OAAOyuJ,eAC/B,OACInwI,MAAKowI,iBACJpwI,KAAKowI,eAAiB,GAAIltJ,KAAQ,SAACC,EAASE,GACrC8sJ,GACA,EAAKF,QAAU,GAAIE,GAAgB,EAAKL,YAAa,EAAKC,UAC1D,EAAKE,QAAQr/D,MAAMztF,IAEnBc,WAAW,WACPZ,EAAO,GAAIL,OAAM,8CAClB,WnJoz7BfyC,IAAK,qBACLC,MAAO,WmJ/y7BU,aACEsa,KAAKiwI,YAAhBjxI,EADS,EACTA,MACJA,KACAgB,KAAKqwI,cAAgBluJ,OAAO6I,KAAK6kJ,EAAiB9vF,QAAQ/tC,IAAI,SAAAvsB,GAC1D,GAAMgxC,GAAW,WAAa,2BAAT5pB,EAAS,qBAATA,EAAS,eAC1B,GAAK8e,KAAL,SAAUkkH,EAAiB9vF,OAAOt6D,IAAlC,OAA2ConB,IAG/C,OADA7N,GAAOq5E,GAAGw3D,EAAiB9vF,OAAOt6D,GAAMgxC,GACjC,WACHz3B,EAAOu5E,IAAIs3D,EAAiB9vF,OAAOt6D,GAAMgxC,UnJ6z7BrDhxC,IAAK,wBACLC,MAAO,WmJvz7BP,GAAIsa,KAAKqwI,cAAe,CACpB,KAAOrwI,KAAKqwI,cAAcruJ,QACtBge,KAAKqwI,cAAc19H,OAEvB3S,MAAKqwI,cAAgB,SnJ4z7BzB5qJ,IAAK,SACLC,MAAO,SmJzz7BJqW,GAAS,UACZ,OAAOiE,MAAKswI,eAAe99G,KAAK,WAAM,GAC1BuoC,GAAmCh/D,EAAnCg/D,KAAMta,EAA6B1kD,EAA7B0kD,GAAa8vF,EAAgBx0I,EAAzBA,OAClB,OAAO,IAAI7Y,KAAQ,SAAAC,GACfm1B,EAAK23H,QAAQO,MAAMz1E,EAAMta,EAAI8vF,EAAa,WACtCj4H,EAAKm4H,qBACLttJ,cnJo07BZsC,IAAK,SACLC,MAAO,WmJ5z7BP,MAFAsa,MAAK0wI,wBACL1wI,KAAKiwI,QAAQU,UACNztJ,IAAQC,QAAQ6c,SnJk07BvBva,IAAK,OACLC,MAAO,WmJh07BJ,UACH,OAAO,IAAIxC,KAAQ,SAACC,EAASE,GACzB,IACI,EAAK4sJ,QAAQ/zF,OACb/4D,KACF,MAAO+B,GACL7B,EAAO6B,SnJu07BfO,IAAK,QACLC,MAAO,WmJn07BH,UACJ,OAAO,IAAIxC,KAAQ,SAACC,EAASE,GACzB,IACI,EAAK4sJ,QAAQW,QACbztJ,KACF,MAAO+B,GACL7B,EAAO6B,SnJ007BfO,IAAK,OACLC,MAAO,WmJt07BJ,UACH,OAAO,IAAIxC,KAAQ,SAACC,EAASE,GACzB,IACI,EAAK4sJ,QAAQY,OAAMA,GACnB1tJ,KACF,MAAO+B,GACL7B,EAAO6B,SnJ607BfO,IAAK,SACLC,MAAO,WmJz07BF,UACL,OAAO,IAAIxC,KAAQ,SAACC,EAASE,GACzB,IACI,EAAK4sJ,QAAQY,OAAMA,GACnB1tJ,KACF,MAAO+B,GACL7B,EAAO6B,SnJg17BfO,IAAK,oBACLC,MAAO,WmJ507BS,UAChB,OAAO,IAAIxC,KAAQ,SAACC,EAASE,GACzB,IACI,EAAK4sJ,QAAQa,oBACb3tJ,KACF,MAAO+B,GACL7B,EAAO6B,SnJm17BfO,IAAK,iBACLC,MAAO,WmJ/07BM,UACb,OAAO,IAAIxC,KAAQ,SAACC,EAASE,GACzB,IACI,EAAK4sJ,QAAQc,iBACb5tJ,KACF,MAAO+B,GACL7B,EAAO6B,SnJs17BfO,IAAK,QACLC,MAAO,SmJl17BLR,EAAKqtD,GAAS,UAChB,OAAO,IAAIrvD,KAAQ,SAACC,EAASE,GACzB,IACI,EAAK4sJ,QAAQ7qJ,MAAMF,EAAKqtD,GACxBpvD,KACF,MAAO6tJ,GACL3tJ,EAAO2tJ,SnJy17BfvrJ,IAAK,mBACLC,MAAO,WmJp17BP,MAAOxC,KAAQC,QAAQ6c,KAAKiwI,QAAQh6H,OAAOla,YnJw17B3CtW,IAAK,sBACLC,MAAO,SmJt17BSurJ,GAChB,MAAO/tJ,KAAQC,QAAQ8tJ,MnJy17BvBxrJ,IAAK,OACLb,IAAK,WmJzg8BL,MAAOssJ,KAAWC,cnJ6g8BlB1rJ,IAAK,YACLb,IAAK,WmJ1g8BL,MAAOob,MAAKiwI,SAAWjwI,KAAKiwI,QAAQh6H,OAAOnV,QAAQ+lD,cnJ8g8BnDphE,IAAK,SACLb,IAAK,WmJ3g8BL,MAAOob,MAAKiwI,SAAWjwI,KAAKiwI,QAAQjxI,UnJ+g8BpCvZ,IAAK,YACLb,IAAK,WmJ5g8BL,MAAOob,MAAKiwI,SAAWjwI,KAAKiwI,QAAQ1+E,anJgh8BpC9rE,IAAK,cACLb,IAAK,WmJ7g8BL,MAAOob,MAAKiwI,SAAWjwI,KAAKiwI,QAAQmB,gBnJkh8BjCvB,GmJ1i8BoBF,IA2L/BE,GAAiB9vF,QACbl0D,aAAc,eACdC,UAAW,YACXC,WAAY,aACZC,oBAAqB,uBACrBC,kBAAmB,qBACnBC,gBAAiB,sBACjBC,cAAe,oBACfC,mBAAoB,oBACpBC,oBAAqB,qBACrBC,oBAAqB,qBACrBC,sBAAuB,uBACvBC,mBAAoB,eACpBC,mBAAoB,eACpBC,oBAAqB,gBACrBC,oBAAqB,gBACrBC,WAAY,aACZykJ,eAAgB,iBAChBC,oBAAqB,iBAGVzB,SnJo37BXzuI,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPiwI,EAA4B,WAAc,QAASzsF,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MoJpk8BviBnF,E,YACF,aAA0E,oEAA5DC,4BAA4D,WAArC8yF,mCAAqC,wFAEtE,GAAKC,WAAa,KAClB,EAAKC,kBAAoB,KACzB,EAAKC,kBAAoBjzF,EACzB,EAAKkzF,yBAA2BJ,EALsC,EpJ418B1E,MAvQA9B,GAAuBjxF,EAAoBuxF,GAoB3CuB,EAA0B9yF,IACtBh5D,IAAK,SACLC,MAAO,SAAgBwd,GoJpm8BmB,WAArCg0E,EAAqC,EAArCA,WAAYr2B,EAAyB,EAAzBA,UAAc9kD,EAAW,gCACtC3Y,EAAUF,IAAQC,SA8BtB,IA7BI+zF,IAAeg6D,IAAW1iJ,KACrBwR,KAAKyxI,aACNzxI,KAAKyxI,WAAa,GAAI7B,KAAU5vI,KAAK2xI,mBACrCxvJ,OAAO6I,KAAK4kJ,IAAU7vF,QAAQhgB,QAAQ,SAAA7U,GAClC,EAAKumH,WAAWp5D,GACZu3D,IAAU7vF,OAAO70B,GACjB,EAAK2mH,WAAW/sI,KAAhB,EAA2B8qI,IAAU7vF,OAAO70B,QAIpDlrB,KAAKiwI,SAAWjwI,KAAKiwI,QAAQ6B,OAASZ,IAAW1iJ,MACjDpL,EAAU4c,KAAK+xI,UAEnB/xI,KAAKiwI,QAAUjwI,KAAKyxI,YACbv6D,IAAeg6D,IAAWC,aAC5BnxI,KAAK0xI,oBACN1xI,KAAK0xI,kBAAoB,GAAI7B,GAAiB7vI,KAAK4xI,0BACnDzvJ,OAAO6I,KAAK6kJ,EAAiB9vF,QAAQhgB,QAAQ,SAAA7U,GACzC,EAAKwmH,kBAAkBr5D,GACnBw3D,EAAiB9vF,OAAO70B,GACxB,EAAK2mH,WAAW/sI,KAAhB,EAA2B+qI,EAAiB9vF,OAAO70B,QAI3DlrB,KAAKiwI,SAAWjwI,KAAKiwI,QAAQ6B,OAASZ,IAAWC,aACjD/tJ,EAAU4c,KAAK+xI,UAEnB/xI,KAAKiwI,QAAUjwI,KAAK0xI,oBAEnB1xI,KAAKiwI,QACN,MAAO/sJ,KAAQG,OAAO,GAAIL,OAAM,yBAGpC,IAAIgvJ,SACJ,KAEQA,EADqB,gBAAdnxF,GACOt9D,SAAS87E,cAAcxe,GAEvBA,EAEpB,MAAO37D,GACL,MAAOhC,KAAQG,OAAO6B,GAG1B,GAAM+sJ,GAAgBA,KACfl2I,GACH0G,SAAUo+C,EACVJ,GAAIuxF,GAGR,OAAO5uJ,GAAQovC,KAAK,iBAAM,GAAKy9G,QAAQ7wI,OAAO6yI,KAAgBz/G,KAAK,WAC/D,EAAK7G,KAAK8yB,EAAmBsB,OAAOmyF,YpJym8BxCzsJ,IAAK,UACLC,MAAO,WoJtm8BD,UACN,OAAKsa,MAAKiwI,QAINjwI,KAAKyxI,YAAczxI,KAAKiwI,QAAQkC,cACzBnyI,KAAKiwI,QAAQkC,gBAAgB3/G,KAAK,WACrC,EAAKi/G,WAAWh5D,uBAIjBz4E,KAAK+xI,SAASv/G,KAAK,WACtB,EAAKk/G,kBAAkBj5D,qBACvB,EAAKi5D,kBAAoB,OAXlBxuJ,IAAQC,QAAQ6c,SpJun8B3Bva,IAAK,YACLC,MAAO,SoJzm8BDosJ,GACN,OAAQA,GACJ,IAAKZ,KAAWC,WACZ,MAAOnxI,MAAK0xI,iBAChB,KAAKR,KAAW1iJ,IACZ,MAAOwR,MAAKyxI,UAChB,SACI,MAAOzxI,MAAKiwI,YpJ8m8BpBxqJ,IAAK,iBACLC,MAAO,SoJ3m8BIqW,GACX,GAAMiD,GAAS,GAAI4wI,KAAU5vI,KAAK2xI,kBAKlC,OAJA3yI,GAAO8gD,KACH8vF,IAAU7vF,OAAOC,kBACjBhgD,KAAK6xI,WAAW/sI,KAAK9E,KAAM4vI,IAAU7vF,OAAOC,oBAEzChhD,EAAOozI,eAAP,KAA2Br2I,GAAS0G,SAAU1G,EAAQ8kD,gBpJ2m8B7Dp7D,IAAK,gBACLC,MAAO,SoJzm8BGqW,GACV,GAAMiD,GAAS,GAAI4wI,KAAU5vI,KAAK2xI,kBAKlC,OAJA3yI,GAAO8gD,KACH8vF,IAAU7vF,OAAOgT,gBACjB/yD,KAAK6xI,WAAW/sI,KAAK9E,KAAM4vI,IAAU7vF,OAAOgT,kBAEzC/zD,EAAOy0D,cAAP,KAA0B13D,GAAS0G,SAAU1G,EAAQ8kD,gBpJym8B5Dp7D,IAAK,mBACLC,MAAO,SoJvm8BMqW,GACb,GAAMiD,GAAS,GAAI4wI,KAAU5vI,KAAK2xI,kBAoBlC,OAnBA3yI,GAAO8gD,KACH8vF,IAAU7vF,OAAOG,oBACjBlgD,KAAK6xI,WAAW/sI,KAAK9E,KAAM4vI,IAAU7vF,OAAOG,sBAEhDlhD,EAAO8gD,KACH8vF,IAAU7vF,OAAOC,kBACjBhgD,KAAK6xI,WAAW/sI,KAAK9E,KAAM4vI,IAAU7vF,OAAOC,oBAEhDhhD,EAAO8gD,KACH8vF,IAAU7vF,OAAOM,mBACjBrgD,KAAK6xI,WAAW/sI,KAAK9E,KAAM4vI,IAAU7vF,OAAOM,qBAGhDrhD,EAAO8gD,KACH8vF,IAAU7vF,OAAOK,gCACjBpgD,KAAK6xI,WAAW/sI,KAAK9E,KAAM4vI,IAAU7vF,OAAOK,kCAGhD1+D,OAAO2wJ,WAAarzI,EACbA,EAAOg3C,iBAAP,KAA6Bj6C,GAAS0G,SAAU1G,EAAQ8kD,gBpJ8l8B/Dp7D,IAAK,oBACLC,MAAO,SAA2Buf,GoJ5l8B6D,GAA/ExC,GAA+E,EAA/EA,SAAU47C,EAAqE,EAArEA,YAAa9J,EAAwD,EAAxDA,UAAW+J,EAA6C,EAA7CA,mBAAoBC,EAAyB,EAAzBA,qBACtE,OAAI78D,QAAO2wJ,WACA3wJ,OAAO2wJ,WAAWj0F,kBACrB37C,EACA47C,EACA9J,EACA+J,EACAC,GAIDr7D,IAAQC,QAAQ6c,SpJ+l8BvBva,IAAK,SACLC,MAAO,WoJ7l8BF,UACL,OAAKsa,MAAKiwI,QAGHjwI,KAAKiwI,QAAQ8B,SACfv/G,KAAK,WACF,EAAKy9G,QAAU,OAJZ/sJ,IAAQC,QAAQ6c,SpJsm8B3Bva,IAAK,YACLC,MAAO,SoJ/l8BDqW,GACN,MAAKiE,MAAKiwI,QAGHjwI,KAAKiwI,QAAQqC,UAAb,KAA4Bv2I,GAAS0G,SAAU1G,EAAQ8kD,aAFnD39D,IAAQC,QAAQ6c,SpJom8B3Bva,IAAK,aACLC,MAAO,SoJhm8BAqW,GACP,MAAKiE,MAAKiwI,QAGHjwI,KAAKiwI,QAAQsC,WAAb,KAA6Bx2I,GAAS0G,SAAU1G,EAAQ8kD,aAFpD39D,IAAQC,QAAQ6c,SpJqm8B3Bva,IAAK,aACLC,MAAO,WoJjm8BS,KAChB,OAAKsa,MAAKiwI,SAGH,EAAAjwI,KAAKiwI,SAAQuC,WAAb,mBAFItvJ,IAAQC,QAAQ6c,SpJwm8B3Bva,IAAK,OACLC,MAAO,WoJnm8BP,MAAKsa,MAAKiwI,QAGHjwI,KAAKiwI,QAAQ/zF,OAFTh5D,IAAQC,QAAQ6c,SpJym8B3Bva,IAAK,QACLC,MAAO,WoJpm8BP,MAAKsa,MAAKiwI,QAGHjwI,KAAKiwI,QAAQW,QAFT1tJ,IAAQC,QAAQ6c,SpJ0m8B3Bva,IAAK,OACLC,MAAO,WoJrm8BP,MAAKsa,MAAKiwI,QAGHjwI,KAAKiwI,QAAQwC,OAFTvvJ,IAAQC,QAAQ6c,SpJ2m8B3Bva,IAAK,SACLC,MAAO,WoJtm8BP,MAAKsa,MAAKiwI,QAGHjwI,KAAKiwI,QAAQyC,SAFTxvJ,IAAQC,QAAQ6c,SpJ4m8B3Bva,IAAK,QACLC,MAAO,WoJxm8BI,KACX,OAAKsa,MAAKiwI,SAGH,EAAAjwI,KAAKiwI,SAAQ7qJ,MAAb,mBAFIlC,IAAQC,QAAQ6c,SpJ+m8B3Bva,IAAK,mBACLC,MAAO,WoJ1m8BP,MAAKsa,MAAKiwI,QAGHjwI,KAAKiwI,QAAQ0C,mBAFTzvJ,IAAQC,apJgn8BnBsC,IAAK,sBACLC,MAAO,WoJ5m8BkB,KACzB,OAAKsa,MAAKiwI,SAGH,EAAAjwI,KAAKiwI,SAAQ2C,oBAAb,mBAFI1vJ,IAAQC,QAAQ6c,SpJmn8B3Bva,IAAK,aACLC,MAAO,SoJ/m8BAhC,GAAe,2BAANmpB,EAAM,6BAANA,EAAM,iBACtB7M,MAAK2rB,KAAL,MAAA3rB,MAAUtc,GAAV,OAAmBmpB,QpJun8BhB4xC,GoJ718BsBkxF,IA0OjClxF,GAAmBsB,OAAnB,GACImyF,MAAO,SACJrC,EAAiB9vF,OACjB6vF,IAAU7vF,QAGjBtB,EAAmByyF,WAAaA,IAEjBzyF,OpJwn8BT,SAAUp9D,EAAQiE,EAAqBrE,GAE7C,YqJj38Be,SAAS2pG,KAA4E,gEAA3Dt9C,EAA2D,EAA3DA,OAA2D,IAAnDsH,mBAAmD,OAA9Bh9B,EAA8B,aAApBi7H,IAAoB,wDAChG,OAAiB,YAAVvlG,GAAwBsH,EAAQ5+B,KAAK,SAAAulC,GAAA,MAAUu3F,aAAcv3F,EAAQ3jC,EAAUi7H,KAH1F,oBrJw48BM,SAAUxxJ,EAAQiE,EAAqBrE,GAE7C,YsJv48Be,SAAS6xJ,KAAyD,GAA3Cv3F,GAA2C,0DAA9B3jC,EAA8B,aAApBi7H,IAAoB,wDAE7E,OAAOE,aAA2Bx3F,EAAQ3jC,EAAUi7H,GALxD,mBAAAvxJ,EAAA,WAAAA,ItJ658BM,SAAUD,EAAQD,EAASH,GAEjC,YuJl58BA,IAAIylE,GAAiB,EAAQ,GAIzBssF,GAFY,EAAQ,OAiEpBC,GAQFvgE,wBAAyB,WACvB1yE,KAAKkzI,oBAAsBlzI,KAAKs1E,yBAC5Bt1E,KAAKmzI,gBACPnzI,KAAKmzI,gBAAgBnxJ,OAAS,EAE9Bge,KAAKmzI,mBAEPnzI,KAAKozI,qBAGPA,kBAAiBA,EAMjB99D,uBAAwB,KAExB+9D,gBAAiB,WACf,QAASrzI,KAAKozI,kBAoBhB39D,QAAS,SAAU7pD,EAAQ8pD,EAAO/qE,EAAG5C,EAAG3jB,EAAGC,EAAG7B,EAAG4R,GAC7C4L,KAAKqzI,mBAA8L3sF,EAAe,KACpN,IAAI4sF,GACA16H,CACJ,KACE5Y,KAAKozI,oBAKLE,KACAtzI,KAAKuzI,cAAc,GACnB36H,EAAMgT,EAAOpqC,KAAKk0F,EAAO/qE,EAAG5C,EAAG3jB,EAAGC,EAAG7B,EAAG4R,GACxCk/I,KACA,QACA,IACE,GAAIA,EAGF,IACEtzI,KAAKwzI,SAAS,GACd,MAAOtuJ,QAIT8a,MAAKwzI,SAAS,GAEhB,QACAxzI,KAAKozI,qBAGT,MAAOx6H,IAGT26H,cAAe,SAAUE,GAEvB,IAAK,GADDP,GAAsBlzI,KAAKkzI,oBACtB5xJ,EAAImyJ,EAAYnyJ,EAAI4xJ,EAAoBlxJ,OAAQV,IAAK,CAC5D,GAAIoyJ,GAAUR,EAAoB5xJ,EAClC,KAKE0e,KAAKmzI,gBAAgB7xJ,GAAK0xJ,EAC1BhzI,KAAKmzI,gBAAgB7xJ,GAAKoyJ,EAAQxkF,WAAawkF,EAAQxkF,WAAW1tE,KAAKwe,MAAQ,KAC/E,QACA,GAAIA,KAAKmzI,gBAAgB7xJ,KAAO0xJ,EAI9B,IACEhzI,KAAKuzI,cAAcjyJ,EAAI,GACvB,MAAO4D,QAYjBsuJ,SAAU,SAAUC,GACjBzzI,KAAKqzI,mBAAuJ3sF,EAAe,KAE5K,KAAK,GADDwsF,GAAsBlzI,KAAKkzI,oBACtB5xJ,EAAImyJ,EAAYnyJ,EAAI4xJ,EAAoBlxJ,OAAQV,IAAK,CAC5D,GAEIgyJ,GAFAI,EAAUR,EAAoB5xJ,GAC9Bk8D,EAAWx9C,KAAKmzI,gBAAgB7xJ,EAEpC,KAKEgyJ,KACI91F,IAAaw1F,GAAkBU,EAAQ1+D,OACzC0+D,EAAQ1+D,MAAMxzF,KAAKwe,KAAMw9C,GAE3B81F,KACA,QACA,GAAIA,EAIF,IACEtzI,KAAKwzI,SAASlyJ,EAAI,GAClB,MAAOkB,MAIfwd,KAAKmzI,gBAAgBnxJ,OAAS,GAIlCX,GAAOD,QAAU6xJ,GvJo68BX,SAAU5xJ,EAAQD,EAASH,GAEjC,YwJrk9BA,SAAS0yJ,GAAoBz6D,EAAgBitC,EAAgB/sC,EAAaC,GACxE,MAAO6sC,GAAiB1kI,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GArDlF,GAAI6sC,GAAmB,EAAQ,KAC3B0tB,EAAkB,EAAQ,KAE1BC,EAAwB,EAAQ,KAMhCC,GACFC,QAAS,KACTC,QAAS,KACTC,QAAS,KACTC,QAAS,KACTC,QAAS,KACTC,SAAU,KACVC,OAAQ,KACRC,QAAS,KACTC,iBAAkBV,EAClBW,OAAQ,SAAUtpH,GAIhB,GAAIspH,GAAStpH,EAAMspH,MACnB,OAAI,SAAWtpH,GACNspH,EAMS,IAAXA,EAAe,EAAe,IAAXA,EAAe,EAAI,GAE/CC,QAAS,KACTC,cAAe,SAAUxpH,GACvB,MAAOA,GAAMwpH,gBAAkBxpH,EAAMypH,cAAgBzpH,EAAM0pH,WAAa1pH,EAAM2pH,UAAY3pH,EAAMypH,cAGlGG,MAAO,SAAU5pH,GACf,MAAO,SAAWA,GAAQA,EAAM4pH,MAAQ5pH,EAAM+oH,QAAUL,EAAgBmB,mBAE1EC,MAAO,SAAU9pH,GACf,MAAO,SAAWA,GAAQA,EAAM8pH,MAAQ9pH,EAAMgpH,QAAUN,EAAgBqB,kBAc5E/uB,GAAiBzrC,aAAak5D,EAAqBG,GAEnDzyJ,EAAOD,QAAUuyJ,GxJ0o9BX,SAAUtyJ,EAAQD,EAASH,GAEjC,YyJts9BA,IASIi0J,GATAtxE,EAAuB,EAAQ,IAC/B+4B,EAAgB,EAAQ,KAExBw4C,EAAkB,eAClBC,EAAkB,uDAElBx4C,EAAqC,EAAQ,KAa7Cf,EAAee,EAAmC,SAAU3vE,EAAM2uE,GAIpE,GAAI3uE,EAAK8vE,eAAiBJ,EAAc04C,KAAS,aAAepoH,GAQ9DA,EAAK+kC,UAAY4pC,MARoD,CACrEs5C,EAAuBA,GAAwB3xJ,SAASE,cAAc,OACtEyxJ,EAAqBljF,UAAY,QAAU4pC,EAAO,QAElD,KADA,GAAI05C,GAAUJ,EAAqB9uF,WAC5BkvF,EAAQlvF,YACbn5B,EAAK/oC,YAAYoxJ,EAAQlvF,cAO/B,IAAIwd,EAAqBxsD,UAAW,CAOlC,GAAIm+H,GAAchyJ,SAASE,cAAc,MACzC8xJ,GAAYvjF,UAAY,IACM,KAA1BujF,EAAYvjF,YACd6pC,EAAe,SAAU5uE,EAAM2uE,GAc7B,GARI3uE,EAAK45B,YACP55B,EAAK45B,WAAWs1C,aAAalvE,EAAMA,GAOjCkoH,EAAgBvvH,KAAKg2E,IAAqB,MAAZA,EAAK,IAAcw5C,EAAgBxvH,KAAKg2E,GAAO,CAO/E3uE,EAAK+kC,UAAYvqC,OAAOunB,aAAa,OAAU4sD,CAI/C,IAAI45C,GAAWvoH,EAAKm5B,UACS,KAAzBovF,EAAS1uG,KAAK9kD,OAChBirC,EAAKgzC,YAAYu1E,GAEjBA,EAASC,WAAW,EAAG,OAGzBxoH,GAAK+kC,UAAY4pC,IAIvB25C,EAAc,KAGhBl0J,EAAOD,QAAUy6G,GzJut9BX,SAAUx6G,EAAQD,EAASH,GAEjC,Y0Jpw9BA,SAASy0J,GAAW/8E,GAClB,GAAI3wC,GAAM,GAAK2wC,EACXruD,EAAQqrI,EAAgBpiD,KAAKvrE,EAEjC,KAAK1d,EACH,MAAO0d,EAGT,IAAIwlF,GACA5R,EAAO,GACPlqF,EAAQ,EACR8Q,EAAY,CAEhB,KAAK9Q,EAAQpH,EAAMoH,MAAOA,EAAQsW,EAAIhmC,OAAQ0vB,IAAS,CACrD,OAAQsW,EAAI4tH,WAAWlkI,IACrB,IAAK,IAEH87F,EAAS,QACT,MACF,KAAK,IAEHA,EAAS,OACT,MACF,KAAK,IAEHA,EAAS,QACT,MACF,KAAK,IAEHA,EAAS,MACT,MACF,KAAK,IAEHA,EAAS,MACT,MACF,SACE,SAGAhrF,IAAc9Q,IAChBkqF,GAAQ5zE,EAAIqoE,UAAU7tE,EAAW9Q,IAGnC8Q,EAAY9Q,EAAQ,EACpBkqF,GAAQ4R,EAGV,MAAOhrF,KAAc9Q,EAAQkqF,EAAO5zE,EAAIqoE,UAAU7tE,EAAW9Q,GAASkqF,EAWxE,QAASi6C,GAA4B/5C,GACnC,MAAoB,iBAATA,IAAsC,gBAATA,GAI/B,GAAKA,EAEP45C,EAAW55C,GA3EpB,GAAI65C,GAAkB,SA8EtBt0J,GAAOD,QAAUy0J,G1J8z9BX,SAAUx0J,EAAQD,EAASH,GAEjC,Y2J7x9BA,SAAS60J,GAAwBC,GAO/B,MAJK5zJ,QAAOC,UAAUC,eAAeb,KAAKu0J,EAASC,KACjDD,EAAQC,GAAqBC,IAC7BC,EAAmBH,EAAQC,QAEtBE,EAAmBH,EAAQC,IAvJpC,GAgEIG,GAhEAvhE,EAAU,EAAQ,IAElBsvC,EAAsB,EAAQ,KAC9BkyB,EAAyB,EAAQ,KACjCxC,EAAkB,EAAQ,KAE1ByC,EAA6B,EAAQ,KACrCC,EAAmB,EAAQ,KA0D3BJ,KACAK,KACAN,EAA2B,EAK3BO,GACFC,SAAU,QACVC,gBAAiBL,EAA2B,iBAAmB,eAC/DM,sBAAuBN,EAA2B,uBAAyB,qBAC3EO,kBAAmBP,EAA2B,mBAAqB,iBACnEQ,QAAS,OACTC,WAAY,UACZC,kBAAmB,iBACnBC,UAAW,SACXC,SAAU,QACVC,kBAAmB,iBACnBC,oBAAqB,mBACrBC,qBAAsB,oBACtBC,eAAgB,cAChBC,QAAS,OACTC,OAAQ,MACRC,eAAgB,WAChBC,QAAS,OACTC,WAAY,UACZC,aAAc,YACdC,YAAa,WACbC,aAAc,YACdC,YAAa,WACbC,aAAc,YACdC,QAAS,OACTC,kBAAmB,iBACnBC,WAAY,UACZC,aAAc,YACdC,SAAU,QACVC,SAAU,QACVC,SAAU,QACVC,SAAU,QACVC,WAAY,UACZC,YAAa,WACbC,SAAU,QACVC,cAAe,aACfC,kBAAmB,iBACnBC,aAAc,YACdC,aAAc,YACdC,aAAc,YACdC,YAAa,WACbC,aAAc,YACdC,WAAY,UACZC,SAAU,QACVC,SAAU,QACVC,QAAS,OACTC,WAAY,UACZC,YAAa,WACbC,cAAe,aACfC,UAAW,SACXC,UAAW,SACXC,WAAY,UACZC,mBAAoB,kBACpBC,WAAY,UACZC,WAAY,UACZC,aAAc,YACdC,cAAe,aACfC,eAAgB,cAChBC,YAAa,WACbC,aAAc,YACdC,cAAe,aACfC,iBAAkBhE,EAA2B,kBAAoB,gBACjEiE,gBAAiB,eACjBC,WAAY,UACZC,SAAU,SAMRxE,EAAoB,oBAAsBvuH,OAAOnJ,KAAK+oC,UAAUxzD,MAAM,GAsBtE4mJ,EAA2B7lE,KAAYwhE,GAKzCsE,mBAAoB,KAEpBzkE,WAIE0kE,yBAA0B,SAAUD,GAClCA,EAAmBE,kBAAkBH,EAAyBI,gBAC9DJ,EAAyBC,mBAAqBA,IASlDI,WAAY,SAAUC,GAChBN,EAAyBC,oBAC3BD,EAAyBC,mBAAmBI,WAAWC,IAO3DC,UAAW,WACT,SAAUP,EAAyBC,qBAAsBD,EAAyBC,mBAAmBM,cAwBvGC,SAAU,SAAU74B,EAAkB84B,GAKpC,IAAK,GAJDnF,GAAUmF,EACVC,EAAcrF,EAAwBC,GACtClkI,EAAeqyG,EAAoBk3B,6BAA6Bh5B,GAE3D9gI,EAAI,EAAGA,EAAIuwB,EAAa7vB,OAAQV,IAAK,CAC5C,GAAI2xB,GAAapB,EAAavwB,EACxB65J,GAAY94J,eAAe4wB,IAAekoI,EAAYloI,KACvC,aAAfA,EACEqjI,EAAiB,SACnBmE,EAAyBC,mBAAmBW,iBAAiB,WAAY,QAAStF,GACzEO,EAAiB,cAC1BmE,EAAyBC,mBAAmBW,iBAAiB,WAAY,aAActF,GAIvF0E,EAAyBC,mBAAmBW,iBAAiB,WAAY,iBAAkBtF,GAErE,cAAf9iI,EAELqjI,EAAiB,aACnBmE,EAAyBC,mBAAmBY,kBAAkB,YAAa,SAAUvF,GAErF0E,EAAyBC,mBAAmBW,iBAAiB,YAAa,SAAUZ,EAAyBC,mBAAmBa,eAE1G,aAAftoI,GAA4C,YAAfA,GAElCqjI,EAAiB,aACnBmE,EAAyBC,mBAAmBY,kBAAkB,WAAY,QAASvF,GACnF0E,EAAyBC,mBAAmBY,kBAAkB,UAAW,OAAQvF,IACxEO,EAAiB,aAG1BmE,EAAyBC,mBAAmBW,iBAAiB,WAAY,UAAWtF,GACpF0E,EAAyBC,mBAAmBW,iBAAiB,UAAW,WAAYtF,IAItFoF,EAAYtE,WACZsE,EAAY7C,aACH9B,EAAgBn0J,eAAe4wB,IACxCwnI,EAAyBC,mBAAmBW,iBAAiBpoI,EAAYujI,EAAgBvjI,GAAa8iI,GAGxGoF,EAAYloI,SAKlBooI,iBAAkB,SAAU71B,EAAcg2B,EAAiB71G,GACzD,MAAO80G,GAAyBC,mBAAmBW,iBAAiB71B,EAAcg2B,EAAiB71G,IAGrG21G,kBAAmB,SAAU91B,EAAcg2B,EAAiB71G,GAC1D,MAAO80G,GAAyBC,mBAAmBY,kBAAkB91B,EAAcg2B,EAAiB71G,IAQtG81G,oBAAqB,WACnB,IAAKl4J,SAASioC,YACZ,OAAM,CAER,IAAIkwH,GAAKn4J,SAASioC,YAAY,aAC9B,OAAa,OAANkwH,GAAc,SAAWA,IAclCC,4BAA6B,WAI3B,YAHIxF,IACFA,EAAiBsE,EAAyBgB,wBAEvCtF,IAAmBI,EAAyB,CAC/C,GAAIqF,GAAUhI,EAAgBiI,mBAC9BpB,GAAyBC,mBAAmBoB,mBAAmBF,GAC/DrF,QAMNl1J,GAAOD,QAAUq5J,G3J879BX,SAAUp5J,EAAQD,EAASH,GAEjC,Y4Jpw+BAG,GAAQ0D,cACR1D,EAAQ26J,qBAER,IAAIC,GAAiB,EAAQ,IASzBC,GALJ,SAAgCz2J,GAAcA,GAAOA,EAAIV,YAFZk3J,GAIxB56J,EAAQ26J,kBAGG,SAAmCh3J,GACjE,MAAOA,IA2DT3D,GAAQqtD,QAAUwtG,G5J2w+BZ,SAAU56J,EAAQD,EAASH,GAEjC,Y6Jr1+BAG,GAAQ0D,aACR,IAAIsyB,KAAiC,mBAAX11B,UAA0BA,OAAO6B,WAAY7B,OAAO6B,SAASE,cACvFrC,GAAQg2B,UAAYA,G7J41+Bd,SAAU/1B,EAAQD,EAASH,GAEjC,Y8J51+BA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQ,QAAWA,GAoBzF,QAAS02J,GAAsB3gJ,GAC7B,MAAO4gJ,GAAa/3I,UAAU7I,GAAOwR,QAAQ,OAAQ,KAevD,QAASqvI,GAAWC,GAClB,MAAO,YAYL,QAASC,GAAShhJ,GAChB,GAAsB,MAAlBA,EAASC,MAAe,CAC1B,GAAIuC,GAASxC,EAASwC,MAEtBxC,GAASC,MAAQghJ,EAAiBz+I,EAAOuyF,UAAU,IACnD/0F,EAASkhJ,IAAqB1+I,OAAQA,EAAQ2+I,WAAY,IAM5D,MAAOnhJ,GAGT,QAASohJ,GAAYphJ,EAAUC,GAC7B,GAAIohJ,GAEAC,EAAiBthJ,EAASkhJ,GAC1B7jJ,EAAc4C,EAAQshJ,EAAethJ,GAAS,EAClD,KAAKqhJ,IAAmBjkJ,EACtB,MAAO2C,EAKe,iBAAbA,KAAuBA,EAAWwhJ,EAAWxsD,UAAUh1F,GAElE,IAAImhJ,SAEFA,GADEG,GAAkBthJ,EAASwC,SAAW8+I,EAAe9+I,OAC1C8+I,EAAeH,WAEfnhJ,EAASwC,QAAU,EAGlC,IAAIA,GAAS2+I,CAKb,OAJI9jJ,KACFmF,IAAWA,EAAS,IAAM,KAAOnF,GAG5ByI,KAAa9F,GAAWqhJ,GAC7B7+I,OAAQA,GACP6+I,EAAUH,IAAqB1+I,OAAQA,EAAQ2+I,WAAYA,GAAcE,IAI9E,QAASI,GAAaC,GACpB,MAAOptD,GAAQmtD,aAAa,SAAUzhJ,EAAUm7B,GAC9CwmH,EAA6B,QAAED,EAAMV,EAAShhJ,GAAWm7B,KAI7D,QAASo5D,GAAO1tF,GACd,MAAOytF,GAAQC,OAAO,SAAUv0F,GAC9B6G,EAASm6I,EAAShhJ,MAKtB,QAASpZ,GAAKoZ,GACZs0F,EAAQ1tG,KAAKw6J,EAAYphJ,EAAUA,EAASC,QAG9C,QAASwR,GAAQzR,GACfs0F,EAAQ7iF,QAAQ2vI,EAAYphJ,EAAUA,EAASC,QAGjD,QAAS2hJ,GAAW5hJ,EAAUC,GAG5B,MAAOq0F,GAAQstD,WAAWR,EAAYphJ,EAAUC,GAASD,EAASC,QAGpE,QAAS4hJ,GAAW7hJ,EAAUC,GAG5B,MAAOq0F,GAAQutD,WAAWT,EAAYphJ,EAAUC,GAASD,EAASC,QAGpE,QAAS6hJ,GAAe9hJ,GACtB,IAAK,GAAIiW,GAAO5e,UAAU3Q,OAAQ6qB,EAAO7Y,MAAMud,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3E,EAAK2E,EAAO,GAAK7e,UAAU6e,EAG7B,IAAI6rI,GAAeztD,EAAQwtD,eAAe1qJ,MAAMk9F,GAAU8sD,EAAYphJ,EAAUA,EAASC,QAAQsX,OAAOhG,GAIxG,OAHIvR,GAASC,QACX8hJ,EAAa9hJ,MAAQD,EAASC,OAEzB+gJ,EAASe,GAIlB,QAASC,GAAU74I,EAAOhJ,EAAMF,GACV,gBAATE,KAAmBA,EAAOqhJ,EAAWxsD,UAAU70F,IAE1DvZ,EAAKkf,GAAWqD,MAAOA,GAAShJ,GAAQF,MAAOA,KAIjD,QAASgiJ,GAAa94I,EAAOhJ,EAAMF,GACb,gBAATE,KAAmBA,EAAOqhJ,EAAWxsD,UAAU70F,IAE1DsR,EAAQ3L,GAAWqD,MAAOA,GAAShJ,GAAQF,MAAOA,KAhHpD,GAAIQ,GAAUpJ,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,GAE/Ei9F,EAAUysD,EAActgJ,GAExB8gJ,EAAiB9gJ,EAAQ8gJ,eACzBN,EAAmBxgJ,EAAQwgJ,gBA8G/B,OA5G8B,kBAAnBM,KAA+BA,EAAiBX,GAE3B,kBAArBK,KAAiCA,EAAmBiB,GA0GxDp8I,KAAawuF,GAClBmtD,aAAcA,EACdltD,OAAQA,EACR3tG,KAAMA,EACN6qB,QAASA,EACTmwI,WAAYA,EACZC,WAAYA,EACZC,eAAgBA,EAEhBE,UAAWG,EAAqB,QAAEH,EAAW,6CAC7CC,aAAcE,EAAqB,QAAEF,EAAc,sDAvKzDn8J,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAInP41D,EAAW,EAAQ,IAInBilF,GAFYtgF,EAAuB3E,GAEpB,EAAQ,MAEvBwmF,EAAqB,EAAQ,KAE7BT,EAAsBphF,EAAuB6hF,GAE7CZ,EAAa,EAAQ,IAErBa,EAAa,EAAQ,KAErBF,EAAc5hF,EAAuB8hF,GAErCnB,EAAkB,cAMlBgB,EAA0BrB,EAAa5kI,KAgJ3Cn2B,GAAiB,QAAIg7J,EACrB/6J,EAAOD,QAAUA,EAAiB,S9Ju2+B5B,SAAUC,EAAQD,EAASH,GAEjC,Y+J1/+BA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GA5BvFpE,EAAQ0D,aAER,IAAIyxE,GAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,OAAS,eAAkBtkD,IAEtO4b,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPqhG,EAAa,EAAQ,IAErBF,EAAc5mC,EAAuB8mC,GAErC7mC,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjC8hF,EAA6B,EAAQ,KAIrCC,GAF8BhiF,EAAuB+hF,GAEnC,EAAQ,MAE1BE,EAAmBjiF,EAAuBgiF,GAE1Cv/C,EAAc,EAAQ,IAEtB09C,EAAiB,EAAQ,IAMzB+B,GAJkBliF,EAAuBmgF,GAItBjgF,EAAQttB,QAAQ6V,WACnCnjB,EAAQ48G,EAAiB58G,MACzBn2B,EAAO+yI,EAAiB/yI,KACxBjmB,EAASg5J,EAAiBh5J,OAO1B24G,EAAgB3hC,EAAQttB,QAAQ4oD,aAClC/yF,YAAa,gBAGb3D,WACEivF,QAAS7qG,EACTonG,OAAQpnG,EAAO8b,WACfvF,SAAUvW,EAAO8b,WACjB8nF,OAAQxnD,EAAMtgC,WACdmS,OAAQjuB,EAAO8b,WACf8uF,WAAYxuD,EAAMtgC,WAClBpd,cAAeunB,EAAKnK,YAGtBgmH,gBAAiB,WACf,OACEpjI,cAAes4E,EAAQttB,QAAQhrD,gBAKnCsd,mBACE6uF,QAAS7qG,EACTuW,SAAUvW,EAAO8b,WACjBsrF,OAAQpnG,EAAO8b,YAGjBV,gBAAiB,WACf,GAAI+3G,GAASl4G,KAAKH,MACdssF,EAAS+rB,EAAO/rB,OAChByD,EAAUsoB,EAAOtoB,QACjBt0F,EAAW48G,EAAO58G,QAetB,OAbK6wF,KAGHA,EAAS/qF,KAAawuF,GACpBouD,kBAAmBpuD,EAAQquD,iCAEtB9xD,GAAO8xD,2BAOPruD,QAASA,EAASt0F,SAAUA,EAAU6wF,OAAQA,IAEzD1oG,cAAe,SAAuB+hE,EAAW3lD,GAC/C,MAAoB,OAAb2lD,EAAoB,KAAOxlD,KAAKH,MAAMpc,cAAc+hE,EAAW3lD,IAExEQ,OAAQ,WACN,GAAIN,GAAQC,KAERk+I,EAAUl+I,KAAKH,MACf+vF,EAAUsuD,EAAQtuD,QAClBt0F,EAAW4iJ,EAAQ5iJ,SACnBqtF,EAASu1D,EAAQv1D,OACjB31E,EAASkrI,EAAQlrI,OACjB28E,EAAauuD,EAAQvuD,WAErB7uF,EAAU,IA+Cd,OA7CI6uF,KACF7uF,EAAU6uF,EAAWwuD,YAAY,SAAUr9I,EAAS6uF,EAAYj+E,GAC9D,GAAkB,MAAdi+E,EAAoB,MAAO7uF,EAE/B,IAAIynF,GAAQI,EAAOj3E,GACf0sI,KAAkBN,EAAiBrvG,SAAS85C,EAAOv1E,GACnDnT,GACF+vF,QAASA,EACTt0F,SAAUA,EACV0X,OAAQA,EACRu1E,MAAOA,EACP61D,YAAaA,EACbz1D,OAAQA,EAGV,OAAQ2V,EAAYlW,iBAAiBtnF,GACnCjB,EAAMY,SAAWK,MACZ,IAAIA,EACT,IAAK,GAAI8vB,KAAQ9vB,GACX3e,OAAOC,UAAUC,eAAeb,KAAKsf,EAAS8vB,KAAO/wB,EAAM+wB,GAAQ9vB,EAAQ8vB,GAInF,IAAgF,qBAApE++D,EAA6B,YAAcp5B,EAAQo5B,IAA2B,CACxF,GAAIgqB,KAEJ,KAAK,GAAIl0H,KAAOkqG,GACVxtG,OAAOC,UAAUC,eAAeb,KAAKmuG,EAAYlqG,KAInDk0H,EAASl0H,GAAOsa,EAAMtc,cAAcksG,EAAWlqG,GAAM2b,GACnD3b,IAAKA,GAAOoa,IAIlB,OAAO85G,GAGT,MAAO55G,GAAMtc,cAAcksG,EAAY9vF,IACtCiB,IAGS,OAAZA,QAAoBA,GAAqBi7D,EAAQttB,QAAQ05C,eAAernF,OAAyI2hG,EAAYh0D,UAASA,GAEjO3tC,IAIX1f,GAAQqtD,QAAUivD,EAClBr8G,EAAOD,QAAUA,EAAiB,S/J6h/B5B,SAAUC,EAAQD,EAASH,GgK3q/BjC,QAASo9J,GAAS34J,EAAOX,GACvB,MAAIgsB,GAAQrrB,GACHA,EAEF44J,EAAM54J,EAAOX,IAAWW,GAAS64J,EAAatgI,EAASv4B,IAjBhE,GAAIqrB,GAAU,EAAQ,IAClButI,EAAQ,EAAQ,KAChBC,EAAe,EAAQ,KACvBtgI,EAAW,EAAQ,IAiBvB58B,GAAOD,QAAUi9J,GhK+r/BX,SAAUh9J,EAAQD,EAASH,GiK5r/BjC,QAASmsJ,GAAS1nJ,GAChB,MAAuB,gBAATA,IACXmjG,EAAanjG,IAAUgsG,EAAWhsG,IAAU84J,EAzBjD,GAAI9sD,GAAa,EAAQ,IACrB7I,EAAe,EAAQ,IAGvB21D,EAAY,iBAwBhBn9J,GAAOD,QAAUgsJ,GjK0t/BX,SAAU/rJ,EAAQD,EAASH,GkKtv/BjC,GAAIgxG,GAAY,EAAQ,IAGpBwsD,EAAexsD,EAAU9vG,OAAQ,SAErCd,GAAOD,QAAUq9J,GlK6v/BX,SAAUp9J,EAAQD,EAASH,GmKrv/BjC,QAASy9J,GAAUn/G,GACjB,GAAI7tB,IAAS,EACT1vB,EAAoB,MAAXu9C,EAAkB,EAAIA,EAAQv9C,MAG3C,KADAge,KAAK8B,UACI4P,EAAQ1vB,GAAQ,CACvB,GAAI69D,GAAQtgB,EAAQ7tB,EACpB1R,MAAK8wB,IAAI+uB,EAAM,GAAIA,EAAM,KApB7B,GAAI8+F,GAAiB,EAAQ,KACzBC,EAAkB,EAAQ,KAC1BC,EAAe,EAAQ,KACvBC,EAAe,EAAQ,KACvBC,EAAe,EAAQ,IAqB3BL,GAAUt8J,UAAU0f,MAAQ68I,EAC5BD,EAAUt8J,UAAkB,OAAIw8J,EAChCF,EAAUt8J,UAAUwC,IAAMi6J,EAC1BH,EAAUt8J,UAAU2uC,IAAM+tH,EAC1BJ,EAAUt8J,UAAU0uC,IAAMiuH,EAE1B19J,EAAOD,QAAUs9J,GnKyw/BX,SAAUr9J,EAAQD,EAASH,GoK9x/BjC,QAAS+9J,GAAa79G,EAAO17C,GAE3B,IADA,GAAIzD,GAASm/C,EAAMn/C,OACZA,KACL,GAAIkrJ,EAAG/rG,EAAMn/C,GAAQ,GAAIyD,GACvB,MAAOzD,EAGX,QAAQ,EAjBV,GAAIkrJ,GAAK,EAAQ,IAoBjB7rJ,GAAOD,QAAU49J,GpK+y/BX,SAAU39J,EAAQD,EAASH,GqKzz/BjC,QAASg+J,GAAWjtI,EAAKvsB,GACvB,GAAIqhD,GAAO90B,EAAIktI,QACf,OAAOC,GAAU15J,GACbqhD,EAAmB,gBAAPrhD,GAAkB,SAAW,QACzCqhD,EAAK90B,IAdX,GAAImtI,GAAY,EAAQ,IAiBxB99J,GAAOD,QAAU69J,GrK00/BX,SAAU59J,EAAQD,GsKl1/BxB,QAASwhH,GAASzhE,EAAOi+G,GAKvB,IAJA,GAAI1tI,IAAS,EACT1vB,EAAkB,MAATm/C,EAAgB,EAAIA,EAAMn/C,OACnCyoB,EAASzW,MAAMhS,KAEV0vB,EAAQ1vB,GACfyoB,EAAOiH,GAAS0tI,EAASj+G,EAAMzvB,GAAQA,EAAOyvB,EAEhD,OAAO12B,GAGTppB,EAAOD,QAAUwhH,GtKk2/BX,SAAUvhH,EAAQD,EAASH,GuK32/BjC,QAASo+J,GAAgBt6J,EAAQU,EAAKC,GACzB,aAAPD,GAAsBhB,EACxBA,EAAeM,EAAQU,GACrB,gBACA,cACA,MAASC,EACT,cAGFX,EAAOU,GAAOC,EApBlB,GAAIjB,GAAiB,EAAQ,IAwB7BpD,GAAOD,QAAUi+J,GvK63/BX,SAAUh+J,EAAQD,GwKv4/BxB,QAASk+J,GAAQ55J,EAAO1D,GACtB,GAAI0B,SAAcgC,EAGlB,UAFA1D,EAAmB,MAAVA,EAAiBu9J,EAAmBv9J,KAGlC,UAAR0B,GACU,UAARA,GAAoB87J,EAAS55H,KAAKlgC,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQ1D,EApBjD,GAAIu9J,GAAmB,iBAGnBC,EAAW,kBAoBfn+J,GAAOD,QAAUk+J,GxK45/BX,SAAUj+J,EAAQD,GyK16/BxB,QAASq+J,GAAY/5J,GACnB,GAAIg6J,GAAOh6J,GAASA,EAAM2Z,WAG1B,OAAO3Z,MAFqB,kBAARg6J,IAAsBA,EAAKt9J,WAAcmrJ,GAX/D,GAAIA,GAAcprJ,OAAOC,SAgBzBf,GAAOD,QAAUq+J,GzK27/BX,SAAUp+J,EAAQiE,EAAqBrE,GAE7C,Y0K98/BA,oEAAM0+J,GAAO,aAETC,MADQ5kI,gCAUR4kI,IAAaj0H,KAAMg0H,EAGhB,IAAM57C,GAA4B,sB1Ks9/BnC,SAAU1iH,EAAQD,EAASH,GAEjC,cAAa,S2Kt+/Bb,GA4CA,QAAS4+J,GAAmB3yI,GACtB/nB,GAAWA,EAAQyN,MAAMzN,EAAQyN,KAAKsa,GAO5C,QAAS4yI,KACPA,EAAa9mI,KAAKx3B,KAAKwe,MAiDzB,QAAS+/I,GAAiB3d,GACxB,gBAAIA,EAAK4d,cACAF,EAAaG,oBACf7d,EAAK4d,cAmDd,QAASE,GAAa5+I,EAAQ5d,EAAMye,EAAUg+I,GAC5C,GAAIh8J,GACA8lF,EACAm2E,CAEJ,IAAwB,kBAAbj+I,GACT,KAAM,IAAI+b,WAAU,yEAA4E/b,GAqBlG,IAlBA8nE,EAAS3oE,EAAO++I,iBACZp2E,GACFA,EAAS3oE,EAAO++I,QAAUl+J,OAAOid,OAAO,MACxCkC,EAAOg/I,aAAe,aAIlBr2E,EAAOs2E,cACTj/I,EAAOqqB,KAAK,cAAejoC,EACfye,EAASA,SAAWA,EAASA,SAAWA,GAIpD8nE,EAAS3oE,EAAO++I,SAElBD,EAAWn2E,EAAOvmF,aAGhB08J,EAEFA,EAAWn2E,EAAOvmF,GAAQye,IACxBb,EAAOg/I,iBAeT,IAbwB,kBAAbF,GAETA,EAAWn2E,EAAOvmF,GAChBy8J,GAAWh+I,EAAUi+I,IAAaA,EAAUj+I,GAErCg+I,EACTC,EAAS11F,QAAQvoD,GAEjBi+I,EAASl+J,KAAKigB,IAIhBhe,EAAI47J,EAAiBz+I,IACb,GAAK8+I,EAASp+J,OAASmC,IAAMi8J,EAASrpF,OAAQ,CACpDqpF,EAASrpF,SAGT,IAAI0kE,GAAI,GAAIz4I,OAAM,+CACEo9J,EAASp+J,OAAS,IAAMylC,OAAO/jC,GAAQ,oEAG3D+3I,GAAEn3I,KAAO,8BACTm3I,EAAE+kB,QAAUl/I,EACZm6H,EAAE/3I,KAAOA,EACT+3I,EAAE92F,MAAQy7G,EAASp+J,OACnB69J,EAAmBpkB,GAIvB,MAAOn6H,GAcT,QAASm/I,KAEP,IAAK,GADD5zI,MACKvrB,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAKurB,EAAK3qB,KAAKyQ,UAAUrR,GAC1D0e,MAAK0gJ,QACR1gJ,KAAKsB,OAAOk3E,eAAex4E,KAAKtc,KAAMsc,KAAK2gJ,QAC3C3gJ,KAAK0gJ,SACLE,EAAa5gJ,KAAKmC,SAAUnC,KAAKsB,OAAQuL,IAI7C,QAASg0I,GAAUv/I,EAAQ5d,EAAMye,GAC/B,GAAIsC,IAAUi8I,OAAMA,EAAQC,WAAOA,GAAYr/I,OAAQA,EAAQ5d,KAAMA,EAAMye,SAAUA,GACjFo1B,EAAUkpH,EAAY37I,KAAKL,EAG/B,OAFA8yB,GAAQp1B,SAAWA,EACnBsC,EAAMk8I,OAASppH,EACRA,EAgIT,QAASupH,GAAWx/I,EAAQ5d,EAAMq9J,GAChC,GAAI92E,GAAS3oE,EAAO++I,OAEpB,aAAIp2E,EACF,QAEF,IAAI+2E,GAAa/2E,EAAOvmF,EACxB,iBAAIs9J,KAGsB,kBAAfA,GACFD,GAAUC,EAAW7+I,UAAY6+I,IAAeA,GAElDD,EACLE,EAAgBD,GAAcE,EAAWF,EAAYA,EAAWh/J,QAoBpE,QAASm/J,GAAcz9J,GACrB,GAAIumF,GAASjqE,KAAKqgJ,OAElB,aAAIp2E,EAAsB,CACxB,GAAI+2E,GAAa/2E,EAAOvmF,EAExB,IAA0B,kBAAfs9J,GACT,MAAO,EACF,aAAIA,EACT,MAAOA,GAAWh/J,OAItB,MAAO,GAOT,QAASk/J,GAAWttJ,EAAK/O,GAEvB,IAAK,GADDu8J,GAAO,GAAIptJ,OAAMnP,GACZvD,EAAI,EAAGA,EAAIuD,IAAKvD,EACvB8/J,EAAK9/J,GAAKsS,EAAItS,EAChB,OAAO8/J,GAGT,QAASC,GAAUzhG,EAAMluC,GACvB,KAAOA,EAAQ,EAAIkuC,EAAK59D,OAAQ0vB,IAC9BkuC,EAAKluC,GAASkuC,EAAKluC,EAAQ,EAC7BkuC,GAAKjtC,MAGP,QAASsuI,GAAgBrtJ,GAEvB,IAAK,GADDglB,GAAM,GAAI5kB,OAAMJ,EAAI5R,QACfV,EAAI,EAAGA,EAAIs3B,EAAI52B,SAAUV,EAChCs3B,EAAIt3B,GAAKsS,EAAItS,GAAG6gB,UAAYvO,EAAItS,EAElC,OAAOs3B,GAvaT,GAOI0oI,GAPAC,EAAuB,gBAAZC,SAAuBA,QAAU,KAC5CZ,EAAeW,GAAwB,kBAAZA,GAAE7uJ,MAC7B6uJ,EAAE7uJ,MACF,SAAsB4O,EAAQ2Y,EAAUpN,GACxC,MAAO68B,UAAStnD,UAAUsQ,MAAMlR,KAAK8f,EAAQ2Y,EAAUpN,GAKzDy0I,GADEC,GAA0B,kBAAdA,GAAEE,QACCF,EAAEE,QACVt/J,OAAOwsD,sBACC,SAAwBrtC,GACvC,MAAOnf,QAAOsuC,oBAAoBnvB,GAC/BuR,OAAO1wB,OAAOwsD,sBAAsBrtC,KAGxB,SAAwBA,GACvC,MAAOnf,QAAOsuC,oBAAoBnvB,GAQtC,IAAIogJ,GAAcr3G,OAAOk/E,OAAS,SAAqB7jI,GACrD,MAAOA,KAAUA,EAMnBrE,GAAOD,QAAU0+J,EAGjBA,EAAaA,aAAeA,EAE5BA,EAAa19J,UAAUi+J,eACvBP,EAAa19J,UAAUk+J,aAAe,EACtCR,EAAa19J,UAAU49J,oBAIvB,IAAIC,GAAsB,EAE1B99J,QAAOsC,eAAeq7J,EAAc,uBAClCn7J,YAAWA,EACXC,IAAK,WACH,MAAOq7J,IAETnvH,IAAK,SAASvmB,GACZ,GAAmB,gBAARA,IAAoBA,EAAM,GAAKm3I,EAAYn3I,GACpD,KAAM,IAAIslB,YAAW,kGAAoGtlB,EAAM,IAEjI01I,GAAsB11I,KAI1Bu1I,EAAa9mI,KAAO,oBAEdhZ,KAAKqgJ,SACLrgJ,KAAKqgJ,UAAYl+J,OAAOuuC,eAAe1wB,MAAMqgJ,UAC/CrgJ,KAAKqgJ,QAAUl+J,OAAOid,OAAO,MAC7BY,KAAKsgJ,aAAe,GAGtBtgJ,KAAKggJ,cAAgBhgJ,KAAKggJ,uBAK5BF,EAAa19J,UAAUu/J,gBAAkB,SAAyB98J,GAChE,GAAiB,gBAANA,IAAkBA,EAAI,GAAK68J,EAAY78J,GAChD,KAAM,IAAIgrC,YAAW,gFAAkFhrC,EAAI,IAG7G,OADAmb,MAAKggJ,cAAgBn7J,EACdmb,MAST8/I,EAAa19J,UAAUw/J,gBAAkB,WACvC,MAAO7B,GAAiB//I,OAG1B8/I,EAAa19J,UAAUupC,KAAO,SAAcjoC,GAE1C,IAAK,GADDmpB,MACKvrB,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAKurB,EAAK3qB,KAAKyQ,UAAUrR,GAC/D,IAAIugK,GAAoB,UAATn+J,EAEXumF,EAASjqE,KAAKqgJ,OAClB,aAAIp2E,EACF43E,EAAWA,YAAW53E,EAAO7kF,UAC1B,KAAKy8J,EACR,OAAM,CAGR,IAAIA,EAAS,CACX,GAAIC,EAGJ,IAFIj1I,EAAK7qB,OAAS,IAChB8/J,EAAKj1I,EAAK,IACRi1I,YAAc9+J,OAGhB,KAAM8+J,EAGR,IAAI58J,GAAM,GAAIlC,OAAM,oBAAsB8+J,EAAK,KAAOA,EAAG1uJ,QAAU,IAAM,IAEzE,MADAlO,GAAI4a,QAAUgiJ,EACR58J,EAGR,GAAI2nC,GAAUo9C,EAAOvmF,EAErB,aAAImpC,EACF,OAAM,CAER,IAAuB,kBAAZA,GACT+zH,EAAa/zH,EAAS7sB,KAAM6M,OAI5B,KAAK,GAFDgmB,GAAMhG,EAAQ7qC,OACdigB,EAAYi/I,EAAWr0H,EAASgG,GAC3BvxC,EAAI,EAAGA,EAAIuxC,IAAOvxC,EACzBs/J,EAAa3+I,EAAU3gB,GAAI0e,KAAM6M,EAGrC,WAmEFizI,EAAa19J,UAAUk2F,YAAc,SAAqB50F,EAAMye,GAC9D,MAAO+9I,GAAalgJ,KAAMtc,EAAMye,OAGlC29I,EAAa19J,UAAUi2F,GAAKynE,EAAa19J,UAAUk2F,YAEnDwnE,EAAa19J,UAAUs2F,gBACnB,SAAyBh1F,EAAMye,GAC7B,MAAO+9I,GAAalgJ,KAAMtc,EAAMye,OAqBtC29I,EAAa19J,UAAU09D,KAAO,SAAcp8D,EAAMye,GAChD,GAAwB,kBAAbA,GACT,KAAM,IAAI+b,WAAU,yEAA4E/b,GAGlG,OADAnC,MAAKq4E,GAAG30F,EAAMm9J,EAAU7gJ,KAAMtc,EAAMye,IAC7BnC,MAGT8/I,EAAa19J,UAAUu2F,oBACnB,SAA6Bj1F,EAAMye,GACjC,GAAwB,kBAAbA,GACT,KAAM,IAAI+b,WAAU,yEAA4E/b,GAGlG,OADAnC,MAAK04E,gBAAgBh1F,EAAMm9J,EAAU7gJ,KAAMtc,EAAMye,IAC1CnC,MAIb8/I,EAAa19J,UAAUo2F,eACnB,SAAwB90F,EAAMye,GAC5B,GAAIy9C,GAAMqqB,EAAQ83E,EAAUzgK,EAAG0gK,CAE/B,IAAwB,kBAAb7/I,GACT,KAAM,IAAI+b,WAAU,yEAA4E/b,GAIlG,cADA8nE,EAASjqE,KAAKqgJ,SAEZ,MAAOrgJ,KAGT,cADA4/C,EAAOqqB,EAAOvmF,IAEZ,MAAOsc,KAET,IAAI4/C,IAASz9C,GAAYy9C,EAAKz9C,WAAaA,EACb,KAAtBnC,KAAKsgJ,aACTtgJ,KAAKqgJ,QAAUl+J,OAAOid,OAAO,aAEtB6qE,GAAOvmF,GACVumF,EAAOuO,gBACTx4E,KAAK2rB,KAAK,iBAAkBjoC,EAAMk8D,EAAKz9C,UAAYA,QAElD,IAAoB,kBAATy9C,GAAqB,CAGrC,IAFAmiG,GAAY,EAEPzgK,EAAIs+D,EAAK59D,OAAS,EAAGV,GAAK,EAAGA,IAChC,GAAIs+D,EAAKt+D,KAAO6gB,GAAYy9C,EAAKt+D,GAAG6gB,WAAaA,EAAU,CACzD6/I,EAAmBpiG,EAAKt+D,GAAG6gB,SAC3B4/I,EAAWzgK,CACX,OAIJ,GAAIygK,EAAW,EACb,MAAO/hJ,KAEQ,KAAb+hJ,EACFniG,EAAKt9D,QAEL++J,EAAUzhG,EAAMmiG,GAGE,IAAhBniG,EAAK59D,SACPioF,EAAOvmF,GAAQk8D,EAAK,aAElBqqB,EAAOuO,gBACTx4E,KAAK2rB,KAAK,iBAAkBjoC,EAAMs+J,GAAoB7/I,GAG1D,MAAOnC,OAGb8/I,EAAa19J,UAAUm2F,IAAMunE,EAAa19J,UAAUo2F,eAEpDsnE,EAAa19J,UAAUq2F,mBACnB,SAA4B/0F,GAC1B,GAAIue,GAAWgoE,EAAQ3oF,CAGvB,cADA2oF,EAASjqE,KAAKqgJ,SAEZ,MAAOrgJ,KAGT,aAAIiqE,EAAOuO,eAUT,MATyB,KAArB7lF,UAAU3Q,QACZge,KAAKqgJ,QAAUl+J,OAAOid,OAAO,MAC7BY,KAAKsgJ,aAAe,YACXr2E,EAAOvmF,KACY,KAAtBsc,KAAKsgJ,aACTtgJ,KAAKqgJ,QAAUl+J,OAAOid,OAAO,YAEtB6qE,GAAOvmF,IAEXsc,IAIT,IAAyB,IAArBrN,UAAU3Q,OAAc,CAC1B,GACIyD,GADAuF,EAAO7I,OAAO6I,KAAKi/E,EAEvB,KAAK3oF,EAAI,EAAGA,EAAI0J,EAAKhJ,SAAUV,EAEjB,oBADZmE,EAAMuF,EAAK1J,KAEX0e,KAAKy4E,mBAAmBhzF,EAK1B,OAHAua,MAAKy4E,mBAAmB,kBACxBz4E,KAAKqgJ,QAAUl+J,OAAOid,OAAO,MAC7BY,KAAKsgJ,aAAe,EACbtgJ,KAKT,GAAyB,mBAFzBiC,EAAYgoE,EAAOvmF,IAGjBsc,KAAKw4E,eAAe90F,EAAMue,OACrB,aAAIA,EAET,IAAK3gB,EAAI2gB,EAAUjgB,OAAS,EAAGV,GAAK,EAAGA,IACrC0e,KAAKw4E,eAAe90F,EAAMue,EAAU3gB,GAIxC,OAAO0e,OAoBb8/I,EAAa19J,UAAU6f,UAAY,SAAmBve,GACpD,MAAOo9J,GAAW9gJ,KAAMtc,OAG1Bo8J,EAAa19J,UAAU6/J,aAAe,SAAsBv+J,GAC1D,MAAOo9J,GAAW9gJ,KAAMtc,OAG1Bo8J,EAAaqB,cAAgB,SAASX,EAAS98J,GAC7C,MAAqC,kBAA1B88J,GAAQW,cACVX,EAAQW,cAAcz9J,GAEtBy9J,EAAc3/J,KAAKg/J,EAAS98J,IAIvCo8J,EAAa19J,UAAU++J,cAAgBA,EAiBvCrB,EAAa19J,UAAU8/J,WAAa,WAClC,MAAOliJ,MAAKsgJ,aAAe,EAAIgB,EAAethJ,KAAKqgJ,e3K+//BxB7+J,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,G4K54gCjC,QAAS+J,GAAKjG,GACZ,MAAO+1F,GAAY/1F,GAAUo9J,EAAcp9J,GAAUq9J,EAASr9J,GAjChE,GAAIo9J,GAAgB,EAAQ,KACxBC,EAAW,EAAQ,KACnBtnE,EAAc,EAAQ,GAkC1Bz5F,GAAOD,QAAU4J,G5Km7gCX,SAAU3J,EAAQD,EAASH,a6Kv9gCjC,SAAW,EAAQ,IACfohK,EAAY,EAAQ,KAGpBC,EAAgC,gBAAXlhK,IAAuBA,IAAYA,EAAQ+jE,UAAY/jE,EAG5EmhK,EAAaD,GAAgC,gBAAVjhK,IAAsBA,IAAWA,EAAO8jE,UAAY9jE,EAGvFmhK,EAAgBD,GAAcA,EAAWnhK,UAAYkhK,EAGrDG,EAASD,EAAgBhzG,EAAKizG,cAG9BC,EAAiBD,EAASA,EAAOE,gBAmBjCA,EAAWD,GAAkBL,CAEjChhK,GAAOD,QAAUuhK,I7K29gCYnhK,KAAKJ,EAASH,EAAoB,KAAKI,KAI9D,SAAUA,EAAQD,EAASH,G8KpghCjC,GAAI2hK,GAAmB,EAAQ,KAC3BC,EAAY,EAAQ,KACpBC,EAAW,EAAQ,KAGnBC,EAAmBD,GAAYA,EAASE,aAmBxCA,EAAeD,EAAmBF,EAAUE,GAAoBH,CAEpEvhK,GAAOD,QAAU4hK,G9K2ghCX,SAAU3hK,EAAQiE,EAAqBrE,GAE7C,Y+KvihCe,SAASixE,KAA8C,GAA1B3W,GAA0B,0DAAb0nG,EAAa,YAClE,UAAI1nG,EAAOuU,WAAYmzF,IACZ1nG,EAAOuU,SAASp0D,QAAQunJ,IAAgB,EAFvD,O/KqjhCM,SAAU5hK,EAAQiE,EAAqBrE,GAE7C,YgL/ihCe,SAAS8/D,KAA6E,GAA5DmiG,GAA4D,0DAArCnkG,EAAqC,wDAAbnnC,EAAa,0DAC/FurI,GACFjrI,MACEzB,MAAO,KACPigC,KAAM,KACN9+B,YAIJ,SAAImnC,GAAuD,qBAArBmkG,EAAP,cAAOA,IAA+B,CAAC,GAAD,GAC1BA,EAAjCE,oBAD2D,EAChD,KADgD,IAC1BF,EAAhBxsG,IACzBysG,QAAiBA,GAAYjrI,MAAQzB,MAAO2sI,EAAU1sG,cAFa,EACnC,KADmC,EAEP9+B,cAG9D,MAAOurI,GhLkihCwB79J,EAAuB,EAAIy7D,CAC5D,IAAI3/C,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPi1D,EAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,QAAUtkD,IAAQskD,OAAO1nD,UAAY,eAAkBoD,KAqChQ,SAAUnE,EAAQD,EAASH,GiLtkhCjC,QAASmoG,GAAOjoD,EAAOi+G,GACrB,MAAQj+G,IAASA,EAAMn/C,OAAU2rH,EAASxsE,EAAO2sG,EAAasR,EAAU,OA3B1E,GAAItR,GAAe,EAAQ,KACvBngC,EAAW,EAAQ,IA6BvBtsH,GAAOD,QAAUgoG,GjLumhCX,SAAU/nG,EAAQiE,EAAqBrE,GAE7C,YkL/nhCO,SAASoiK,KAAqC,GAAfzrI,GAAe,yDACjD,SAASA,EAAS51B,SAAyD,IAA9C41B,EAASlc,QAAQvU,IAAa2H,WAQxD,QAASw0J,KAA6B,GAAf1rI,GAAe,yDACzC,SAASA,EAAS51B,SAAwD,IAA7C41B,EAASlc,QAAQvU,IAAa6H,UAGxD,QAASu0J,KAAwD,GAA5BhoG,GAA4B,0DAAf3jC,EAAe,0DAC5DvD,EAA6BknC,EAA7BlnC,UAD4D,EAC/BknC,EAAlBuU,oBADiD,MAEpE,KAA0C,IAAtCz7C,EAAU3Y,QAAQzU,IAAUuH,KAC5B,OAAM,CAGV,IAAwB,IAApBshE,EAAS9tE,OACT,OAAM,CAGV,IAAMwhK,GAAsB5rI,EACvB/B,OAAO,SAAAqC,GAAA,OAA0C,IAAlCA,EAAKxc,QAAQzU,IAAUqH,QAAiD,IAAjC4pB,EAAKxc,QAAQzU,IAAUsH,MAGlF,SAAI80J,EAAsBzrI,MAKtB0rI,EAAc1rI,IAIM,IAApBk4C,EAAS9tE,QAAgBwhK,EAAoB9nJ,QAAQo0D,EAAS,KAAO,GAIrE3iB,IAAc2iB,EAAU0zF,GAAqBxhK,OAAS,EAe/C,QAAS+wJ,KAA2E,GAAhDx3F,GAAgD,0DAAnC3jC,EAAmC,0DAApBi7H,IAAoB,yDACvFx+H,EAA2BknC,EAA3BlnC,UADuF,EAC5DknC,EAAhBh6C,kBAD4E,EACnE,GADmE,CAG/F,SAAK8S,GAAkC,IAArBA,EAAUryB,SAAgBqyB,EAAU2B,KAAK,SAAA2yC,GAAA,MAAYA,KAAa1hE,IAAUwH,WAK1F4lB,EAAU3Y,QAAQzU,IAAUqH,OAAS,GAAgB,UAAXiT,KAK1CqW,GAAYvD,EACmBkvI,EAA4BhoG,EAAQ3jC,IAEjCvD,EAAU2B,KAAK,SAAA2yC,GAAA,OAA4C,IAAhC/wC,EAASlc,QAAQitD,KAC5B,IAA7C/wC,EAASlc,QAAT,WAA4BitD,IAAsBkqF,IAIpDA,GApFX,IAAAvxJ,EAAA,mClL2vhCM,SAAUD,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIujE,GAAsCvjE,EAAoB,GAC1DwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEm8D,EAA4C1/H,EAAoB,GAChEwiK,EAA6CxiK,EAAoB,IAEjEyiK,GADqDziK,EAAoB4D,EAAE4+J,GAClBxiK,EAAoB,KAC7E0iK,EAA0D1iK,EAAoB,IACnGmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPi1D,EAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,QAAUtkD,IAAQskD,OAAO1nD,UAAY,eAAkBoD,ImLjwhChQo+J,EAAgB,SAAC/jJ,GAAU,GACrB6H,GAA+B7H,EAA/B6H,SAAUyc,EAAqBtkB,EAArBskB,MAAW0/H,EAAUhkJ,EAAdspC,GACrBA,QAEAA,GADiB,qBAAV06G,EAAP,cAAOA,IACP16G,KACO06G,GACHtoJ,MAAMA,KAAMsoJ,EAAMtoJ,MAAU4oB,KAG3BovC,YAAcswF,EAAO1/H,EAE9B,IAAMgqE,GAAWA,KACVzmF,GACHyhC,MAEJ,OAAO,mBAAC,EAAAi1D,KAASjQ,GAGrBy1D,GAAcn8D,aAAe2W,OAAK3W,YAQlC,IAAMx/E,GAAkB,SAACxD,EAAOiD,GAAR,OACpBA,WACAyc,MAAOm3B,YAAwB72C,IAGpB+pF,iBAAQvmF,GAAiB27I,InL2whClC,SAAUviK,EAAQiE,EAAqBrE,GAE7C,YoLlzhCA,YAEMwpG,GAFN,OAE8B,SAAC,GAAD,SAAGrxF,IAAcy0D,mBAEhCv0D,8BAAemxF,EAAuB,SAAC58B,GAAD,MAAmBA,MpL8zhClE,SAAUxsE,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIoqD,GAAyCpqD,EAAoB,GAE7D6iK,GADiD7iK,EAAoB4D,EAAEwmD,GAC3BpqD,EAAoB,MAChE8iK,EAAoD9iK,EAAoB4D,EAAEi/J,GAC1EE,EAA6C/iK,EAAoB,KACjEgjK,EAAqDhjK,EAAoB4D,EAAEm/J,GqLr0hC9Fr5D,EAAwB,SAAC,GAAD,SAAGvxF,IAAc6nD,cAEhC3nD,8BAAeqxF,EAAuB,WAAwB,GAAvB1pC,GAAuB,yDAoBzE,OAnBIA,GAAcj/D,OAAS,GACvBi/D,EAAclhB,QAAQ,SAAA3pB,GACdpiB,MAAM+c,QAAQqF,EAAKk8B,WAAal8B,EAAKk8B,SAAStwD,OAAS,GACvDo0B,EAAKk8B,SAASvS,QAAQ,SAAAwS,GAGlB,GAAIv+C,MAAM+c,QAAQwhC,EAAQqC,UAAYrC,EAAQqC,QAAQ5yD,OAAS,GAAKuwD,EAAQj2C,GAAI,CAAC,GACrEA,GAAgBi2C,EAAhBj2C,GAAIs4C,EAAYrC,EAAZqC,QACNsvG,EAAiBC,IAAMvvG,GAAWt4C,MAEpC4nJ,IACAE,IAAO7xG,EAAS2xG,QAQjCjjG,KrLu1hCL,SAAU5/D,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIujE,GAAsCvjE,EAAoB,GAC1DwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpE6/F,EAA2CpjK,EAAoB,IAC/DqjK,EAAmDrjK,EAAoB4D,EAAEw/J,GACzEE,EAA6CtjK,EAAoB,KACtFqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BzmF,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IsLx3hCjPkjJ,EAAc,QAAdA,GAAe3kJ,GACjB,GAAM8gD,GAAYtS,IAAW,+BAAgCxuC,EAAM4kJ,YACnE,OACI,mBAAC,IAAD,GACI9jG,UAAWA,EACXy1C,SAAS,YACTF,MAAQC,IAAK,aACb91F,OAAQmkJ,EAAYnkJ,QAChBR,IAMhB2kJ,GAAYnkJ,OAAS,SAACI,GAAD,0BACF,qBADE,uBAEM,iBAFN,mBAGM,oBACVA,MAUF+jJ,OtL23hCT,SAAUnjK,EAAQiE,EAAqBrE,GAE7C,YuL75hCA,iDvLq6hCM,SAAUI,EAAQiE,EAAqBrE,GAE7C,YA6CA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAiKje,QAASulJ,GAAmC/gG,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEnI,QAASymI,GAA8CzjJ,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAErP,QAASojK,GAA6B1lJ,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAnNpf,GAAIyL,GAAQ3pB,EAAoB,GAC5BmpG,EAA6BnpG,EAAoB4D,EAAE+lB,GAGnDa,EAAKxqB,EAAoB,GAGzBkoF,EAAYloF,EAAoB,GAGhC4jK,EAAa5jK,EAAoB,IACjC6jK,EAAkC7jK,EAAoB4D,EAAEggK,GAGxD9vJ,EAAQ9T,EAAoB,GAM5B8jK,GAHY9jK,EAAoB,IAGjBA,EAAoB,KAGnC+jK,EAAsB/jK,EAAoB,KAG1CgkK,EAAgBhkK,EAAoB,KAGpCikK,EAAuBjkK,EAAoB,KAG3CqS,EAASrS,EAAoB,KAG7BspD,EAAUtpD,EAAoB,IAG9BqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MwLv8hC1hBuhG,GAAgB,IAAK,IAAK,KAAM,MAGhCC,E,YxL+9hCF,QAASA,KAGL,MAFA1hG,GAAgB1jD,KAAMolJ,GAEfvhG,EAA2B7jD,MAAOolJ,EAAK9lJ,WAAand,OAAOuuC,eAAe00H,IAAO1yJ,MAAMsN,KAAMrN,YAkFxG,MAvFAmxD,GAAUshG,EAAMxlJ,GAQhBilD,EAAaugG,IACT3/J,IAAK,SACLC,MAAO,WwLt+hCF,MAQDsa,KAAKH,MANL0yC,EAFC,EAEDA,QACAoJ,EAHC,EAGDA,eACAkS,EAJC,EAIDA,cACAy9B,EALC,EAKDA,aACAU,EANC,EAMDA,iBACAiC,EAPC,EAODA,SAEE1yC,EAAUhR,YAAQsjB,GAAiClS,EAAhBkS,EAC7BtZ,EAA6EhC,EAAjFj2C,GAAqB+oJ,EAA4D9yG,EAAlEjuD,KAA0BghK,EAAwC/yG,EAA/C0nB,MAA6BsrF,EAAkBhzG,EAA1BjF,OAEzDF,EAAYg6C,YAAkB70C,GAZ/B,EAawFgJ,EAArFj/C,cAbH,EAaQi4C,EAbR,IAawFgH,EAArEj3D,gBAbnB,EAa0B+gK,EAb1B,IAawF9pG,EAAjD0e,iBAbvC,EAa+CqrF,EAb/C,IAawF/pG,EAA3BjO,kBAb7D,EAasEi4G,EAbtE,EAcCC,GAAcx5D,EACd1kE,EAAQirB,EAAQjuD,KAChB02E,EAAWyqF,YAAgBlzG,GAE3BmzG,EAAoBr3G,KACtB,iCAAkCm3G,EAClC,oBAAqBA,GAAcl4G,IAAWvmD,IAAciH,OAG1D23J,EAAeA,EAChBX,EAAA,GADC,UAEY,6BAFZ,IAGO53G,EAHP,aAIgB+3G,EAJhB,MAKQ,QALR,IAMO7gK,IAIP+nD,EAAO/vC,EAAKA,EAALA,WAAA,UACU,cADV,aACoC29D,UACzC,4BAAQtZ,UAAU,eAAe/6C,IAAI,mBAArC,iBACiB,gBADjB,iBAEsB4/I,GAAcl6D,EAFpC,WAE8DhvF,UAF9D,EAGa0oJ,EAAA,GAHb,UAI0B,WAJ1B,IAKqB53G,EALrB,aAM8B+3G,EAN9B,MAOsB,QAPtB,IAQqB7gK,IARrB,mBAU4BohK,OAZvB,EAgBJR,EAAA,GAhBI,aAiBaS,EAjBb,MAkBMr+H,EAlBN,SAmBS0zC,EAnBT,QAoBQzoB,EApBR,mBAsBS07C,EAtBT,iBAuBiBjC,KAG1B,IAEJ,0BAAa3/C,OxLs/hCV+4G,GwLpjiCQ1kJ,YAkEnB0kJ,GAAK39D,cACD6D,aAAc,SAACpgE,GACXA,EAAMkvD,kBAaC6qE,mBAAcG,GxL8+hCzBQ,EAAkB3kK,EAAoB,KAGtC4kK,EAA0B5kK,EAAoB,KAG9C6kK,EAAW7kK,EAAoB,IAG/B8kK,EAAiB,WAAc,GAAIx+D,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UyLpliC74Bm+D,EAAY,SAAC,GAAgB,GAAd1pJ,GAAc,EAAdA,GAAIvY,EAAU,EAAVA,IACfwuD,EAAUxuD,GAAOA,YAAPA,IAAoBA,GACpC,oBACauY,UACJi2C,IAUEyzG,IzLwliCX7sJ,EAAclY,EAAoB,GAGlC+qD,EAAe/qD,EAAoB,IAGnCm/H,EAAqBn/H,EAAoB,IAGzCglK,EAAwBhlK,EAAoB,IAI5CilK,EAA0B,WAAc,GAAI3+D,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEx5Bs+D,EAAkC,WAAc,QAASrhG,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M0LvmiC7iBwiG,EAAeN,YAASV,GAExBiB,E,YACF,WAAYxmJ,GAAO,yEACTA,GADS,OAEf,GAAK4E,OACD6hJ,YAAWA,GAHA,E1L0tiCnB,MA1FA1B,GAA6ByB,EAAoBE,GAajDJ,EAAgCE,IAC5B5gK,IAAK,qBACLC,MAAO,W0LxoiCU,GACT4gK,GAAetmJ,KAAKyE,MAApB6hJ,WACAzgJ,EAAa7F,KAAKH,MAAlBgG,UAEHygJ,GAActmJ,KAAKqkF,WAAa9gG,SAASg9D,eAAenxC,OACzDvJ,EAASyrD,aACL9Q,YAAapxC,OAEZpP,KAAKyE,MAAM6hJ,YACZtmJ,KAAKsmJ,iB1L8oiCb7gK,IAAK,aACLC,MAAO,W0LtoiCPsa,KAAKmG,UAAWmgJ,YAAWA,O1L0oiC3B7gK,IAAK,SACLC,MAAO,W0LzoiCF,MAC+Dsa,KAAKH,MAA3D2mJ,EADT,EACGn6G,KAAe5yC,EADlB,EACkBA,OAAQgtJ,EAD1B,EAC0BA,WAAYj4F,EADtC,EACsCA,qBACvCniB,EAAO,KACPvuC,EAAS,KACT8rF,EAAiB,IAEjB5pF,MAAKqkF,UACLh4C,IACK,GADL,GACmBj9B,MAEXm7B,YAAQi8G,KAChBn6G,IACK+5G,GADL,QAEiBI,EAFjB,gBAGyBl/J,IAAgByC,KAHzC,UAIkB,cAJlB,aASAsiD,IACAvuC,IACK8nJ,EAAA,GADL,OAEgBnsJ,EAFhB,qBAG8B+0D,EAH9B,SAIkBhoE,IAAS6E,KAJ3B,QAKiBo7J,IAGjB78D,IAAkBi8D,EAAA,MAEtB,IAAMa,GAAgBD,EAAa,QAAU,iBAC7C,2BACmB,oBADnB,uBAE2B,6BACd3oJ,GAHb,uBAK2B,gBACduuC,GANb,uBAQ4Bq6G,UACf5oJ,EACA8rF,O1L2oiCbnkG,IAAK,YACLb,IAAK,W0L7riCO,MACsCob,KAAKH,MAAvCvD,EADJ,EACJ2vC,KAAQ3vC,EAChB,OAFY,GACU+nF,WACQ,aAAP/nF,M1LosiCpB+pJ,G0L3tiCsBhiG,iBAuF3Bp8C,EAAkB,SAACxD,GAAD,OACpBwnC,KAAMD,YAAavnC,GACnB4nC,KAAM04G,YAAatgJ,GACnBgiJ,WAAYvrJ,YAAqBuJ,GACjC4/E,UAAWl5C,YAAkB1mC,GAC7BhL,OAAQD,YAAeiL,GACvB+pD,qBAAsBC,YAA6BhqD,IAGvD,KAAe+pF,YAAQvmF,GAAiBo+I,I1L8oiClC,SAAUhlK,EAAQiE,EAAqBrE,GAE7C,YAC+BA,GAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOqhK,KACpE1lK,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOshK,KACpE3lK,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOuhK,KACpE5lK,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOwhK,KACpE7lK,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOyhK,KACpE9lK,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO0hK,IAC9E,IAAI37G,GAAyCpqD,EAAoB,GAE7D86F,GADiD96F,EAAoB4D,EAAEwmD,GAChCpqD,EAAoB,IAC3D81F,EAA6C91F,EAAoB,GACjEgmK,EAA8ChmK,EAAoB,IAClEimK,EAAwDjmK,EAAoB,IAC5E0qD,EAAmD1qD,EAAoB,IACvEkmK,EAA+ClmK,EAAoB,IACnEmmK,EAA6CnmK,EAAoB,KACjEomK,EAAyEpmK,EAAoB,KAC7FqmK,EAAoErmK,EAAoB,KACxFsmK,EAAiEtmK,EAAoB,KACrFumK,EAAoEvmK,EAAoB,KACxFwmK,EAAmDxmK,EAAoB,KAC5FmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,I2LvwiCjPomJ,EAAiB,SAAC,GAAD,QAAG1oJ,MAAH,wBAEvB,KAAe1F,yBAAeouJ,EAAgB,SAAC1oJ,GAAD,MAAYA,IAEnD,IAAM2nJ,GAAmBrtJ,yBAC5BH,IACAyiD,IACA,YAAoF,GAAjF9/C,GAAiF,EAAjFA,SAAiF,IAAvER,QAAuE,2BAA3DC,KAA2D,sBAAlD8iH,GAAkD,EAAlDA,SAA0B1iE,EAAwB,yDAIhF,QAAI7/C,IAIY,MAAZuiH,EACOA,KAINspC,YAAQhsG,EAAgB,YAAeA,EAAepJ,SAAWoJ,EAAepJ,QAAQ7uD,OAASmD,IAAYyG,QAQ7Gs5J,EAAoBttJ,yBAC7BouJ,EACA,qBAAGE,QAGMf,EAA0BvtJ,yBACnC+yG,IACAjhE,IACAxyC,IACAO,IACAW,IACA,SACIsyG,EACAy7C,EAFJ,OAMK,QAHCvuF,gBAGD,2BAHqBwuF,qBAGrB,WAFCxsJ,QAED,2BAFaC,iBAEb,WADC9G,mBACD,EADW,KACX,EACKszJ,EAAqBxsJ,EAAMlU,IAAMgK,oBACjC22J,EAAkBC,YAAsBxzJ,EAASqzJ,GACnDI,EAAqBC,YAAyBJ,EAAoBC,GAChEI,EAC6C,gBAAxCF,GAAmBG,mBAC+C,IAAzEH,EAAmBG,iBAAiBhyI,cAAc3a,QAAQ,SAU9D,IAPI0wG,GAAUg8C,IACVF,OACOA,GACEI,OAAQA,GAAGl8C,EAASy7C,KAI7BO,EAA0B,CAC1B,GAAMG,GAAgBhtJ,EAAMlU,IAAMiK,iBAC5Bk3J,EAAsBjtJ,EAAMlU,IAAMkK,wBAClCk3J,EAAiBltJ,EAAMlU,IAAMmK,kBAEnC02J,GAAmBQ,MAAQH,GAAiBL,EAAmBQ,MAC/DR,EAAmBS,YAAcH,GAAuBN,EAAmBS,YAC3ET,EAAmBI,OAASG,GAAkBP,EAAmBI,OAGrE,MAAOJ,KAIFpB,EAAwBxtJ,yBACjCV,IACAs+C,IACAp9C,IACA8hD,IACA,YAKK,QAJD6d,OAIC,2BAJU7rB,SAAUg7G,WAIpB,OAHDz6G,EAGC,6EAFC15C,mBAED,EAFW,KAEX,EADDknD,EACC,0DACGktG,EAAkB,EAClBC,KACAC,KAHH,EAIwBptG,EAAjBpJ,mBAJP,OAKK7H,EAAc6H,EAAQ7uD,MAAQ,KAC9BslK,EAAuBC,YAA0Bx0J,EAASm0J,GAC1DM,EAA2Bx+G,EAAcs+G,EAAqBt+G,GAAe,IAE/Ew+G,KAEAJ,EAAYI,EAAyBJ,UACjCA,GAAaA,EAAUr6G,UACvBo6G,EAAkBC,EAAUr6G,SAIhCs6G,EAAer+G,YAAc6H,EAAQ7uD,KACrCqlK,OAAsBA,EAAmBG,GAG7C,IAAMC,GAAOh7G,EACRn8B,IAAI,SAACixI,GAAD,MAAiB6F,GAAU7F,KAC/Bh4J,OAAO,SAACm+J,GAAD,GAAUC,GAAV,uDAAwB,CAAxB,OAA8B/qI,MAAKgpD,IAAI8hF,EAASC,IAAcR,EAM1E,OAHAE,GAAeO,eAAiBH,EAChCJ,EAAeQ,cAAiBJ,GAAQ,EAEjCJ,IAIFhC,EAA6BztJ,yBACtCoD,IACA,SAACgnF,GAAD,MAAaA,IAAW8lE,cAAmC,IAGlDxC,EAAyB1tJ,yBAClCV,IACA,oBAAG0gE,gBAAH,2BAAuBmwF,SAAvB,4BAAoC5Y,S3LsyiClC,SAAUxvJ,EAAQiE,EAAqBrE,GAE7C,YAyEA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAoMje,QAAS2R,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GAE1L,QAAS81J,GAAgC/lG,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhI,QAASyrI,GAA2CzoJ,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElP,QAASooK,GAA0B1qJ,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GApRjf,GAAIyL,GAAQ3pB,EAAoB,GAI5BwqB,EAAKxqB,EAAoB,GAGzB4jK,EAAa5jK,EAAoB,IACjC6jK,EAAkC7jK,EAAoB4D,EAAEggK,GAGxD9vJ,EAAQ9T,EAAoB,GAG5B6T,EAAM7T,EAAoB,IAI1B+iE,EAAa/iE,EAAoB,IAGjCk/H,EAAYl/H,EAAoB,IAGhCqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U4L38iCn4BgiE,EAAM,SAAC,GAKP,GAJFt3G,GAIE,EAJFA,QACQ9H,EAGN,EAHFyB,KAAQzB,cACRtuC,EAEE,EAFFA,SACA6vF,EACE,EADFA,iBAEQ1+C,EAA0BiF,EAA1BjF,OAAQsH,EAAkBrC,EAAlBqC,QAASlxD,EAAS6uD,EAAT7uD,KAEnB4qD,EAAUD,IAAW,wBACrB,6BAA+Bf,IAAWvmD,IAAciH,OACxD,iCAAkCg+F,IAEpCxrB,EAAa,IAUjB,OAPIA,GADAwrB,EACavhD,EAActuC,EAASshH,UAAU/oE,cACvChxD,IAASmD,IAAYyG,IACfsnD,EAAQ,GAAG1hD,SAEXo6C,EAAOoH,cAGxB,oBACqBpG,UAAUkyB,IAWpBxc,cAAW6lG,G5L68iCtBv2J,EAASrS,EAAoB,KAG7B6kK,EAAW7kK,EAAoB,IAG/B6oK,EAAsB,WAAc,GAAIviE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEp5BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M6Lr/iC1hBmmG,GACFC,UAAW,OACXjI,SAAU,YAGRkI,E,YACF,WAAYpqJ,GAAO,yEACTA,GADS,OAEf,GAAKqqJ,wBAA0B,EAAKA,wBAAwBplJ,KAA7B,GAC/B,EAAKqlJ,iBAAmB,EAAKA,iBAAiBrlJ,KAAtB,GAHT,E7L6njCnB,MAzHAg/C,GAAUmmG,EAAgBrqJ,GAY1BilD,EAAaolG,IACTxkK,IAAK,4BACLC,MAAO,S6L5gjCeid,GAAW,MACI3C,KAAKH,MAAlCuqJ,EADyB,EACzBA,aAAcC,EADW,EACXA,UAClB1nJ,GAAUynJ,cAAgBA,IAAiBznJ,EAAUynJ,cAAgBC,GACrErqJ,KAAKkqJ,6B7LmhjCTzkK,IAAK,mBACLC,MAAO,W6L/gjCPsa,KAAKH,MAAMyqJ,gBAAgBtqJ,KAAKH,MAAM6R,U7LmhjCtCjsB,IAAK,mBACLC,MAAO,W6LjhjCQ,MAC4Bsa,KAAKH,MAAxC0yC,OADO,2BACIqC,mBADJ,MAIf,UAAIA,EAAQ5yD,SAAU4yD,EAAQnjC,MAAM,SAAA8pC,GAAA,QAAYA,EAAO4e,mB7L6hjCvD10E,IAAK,0BACLC,MAAO,W6LvhjCPsa,KAAKH,MAAMw9G,YAAYr9G,KAAKH,MAAM0yC,SAClCvyC,KAAKH,MAAMyrF,kB7L8hjCX7lG,IAAK,SACLC,MAAO,W6L3hjCF,MACsDsa,KAAKH,MAAxD0yC,EADH,EACGA,QAASguE,EADZ,EACYA,SAAU8pC,EADtB,EACsBA,WAAYE,EADlC,EACkCA,gBACjCC,EAAoB/E,YAAgBlzG,GACpCk4G,EAAaD,EAAoBA,mBAAOA,GAA4B,KACpEx+D,EAAmBhsF,KAAKurF,mBAE1Bj+C,EAAS,GACTkwB,SACAktF,SACIhnK,EAAS6uD,EAAT7uD,IACR,QAAQA,GACJ,IAAKmD,KAAYwG,QACbigD,EAASiF,EAAQjF,OACjBkwB,IAAO,GAAP,QAAoBjrB,EAApB,SAAuCguE,EAAvC,iBAAmEv0B,IACnE0+D,EAAgBr8G,IAAW,uBAAwB,oBAC/C,yBAA0BkE,EAAQo4G,UAEtC,MACJ,KAAK9jK,KAAYiH,KACb,KACJ,KAAKjH,KAAYyG,IACbkwE,IAAO,GAAP,QAAoBjrB,EAApB,SAAuCguE,IAK/C,GAAMqqC,GAAUv8G,IAAW,wBAA0Bw8G,QAASR,GAE9D,sBAEe93G,EAAQjuD,KAFvB,KAGcZ,EAHd,cAIqB4pD,EAJrB,GAKYiF,EAAQj2C,GALpB,SAMkB0vF,GAAoBhsF,KAAKkqJ,wBAN3C,cAOuBl+D,GAAoBhsF,KAAKmqJ,iBAPhD,cAQuBn+D,GAAoBu+D,EAR3C,UASmBK,EATnB,MAUeb,UAVf,mCAayB,+BAbzB,mBAc+B,uCAd/B,oBAeoC,kCACXx3G,EAAQjuD,MAhBjC,mBAkBoComK,UAlBpC,mBAmBuC,mCACVD,KAIZjtF,S7LwijCdysF,G6L9njCkBvpJ,aA0GdolJ,cAASmE,G7LyhjCpBa,EAA6B,WAAc,GAAIvjE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U8L1ojCz5BkjE,EAAwB,SAAC,GASzB,GARFr/D,GAQE,EARFA,WACA2xB,EAOE,EAPFA,YACAkD,EAME,EANFA,SACAge,EAKE,EALFA,OACAysB,EAIE,EAJFA,cACAV,EAGE,EAHFA,gBACAC,EAEE,EAFFA,gBACAH,EACE,EADFA,aAEQ9lK,EAAyBonG,EAAzBpnG,KAAMZ,EAAmBgoG,EAAnBhoG,KAAM4uD,EAAao5C,EAAbp5C,SACd24G,EAA4B,UAATvnK,EAAA,mBAAmC,iCAA0BY,GAAe,KAC/F+pD,EAAsB,UAAT3qD,EACf,+DACA,+BACEwnK,EAAiB54G,EAAStgC,IAAI,SAACugC,EAAS7gC,GAAV,SAC/B,GAD+B,QAEnB6gC,EAFmB,YAGf8qE,EAHe,WAIhBkhB,EAAS7sH,IAAUs5I,EAJH,gBAKXV,EALW,gBAMXC,EANW,MAOrBhsB,EAAS7sH,EAPY,SAQlB6uG,EARkB,aASd6pC,KAGtB,0BAESa,EAFT,kBAGuB58G,UACV68G,KAiBFH,I9LoojCX/+G,EAAe/qD,EAAoB,IAGnCkY,EAAclY,EAAoB,GAGlCinF,EAAWjnF,EAAoB,IAG/BkqK,EAAuB,WAAc,GAAI5jE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr5BujE,EAA+B,WAAc,QAAStmG,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M+LxrjC1iBynG,E,YACF,WAAYxrJ,GAAO,yEACTA,GADS,OAEf,GAAKyrJ,mBAAqB,EAAKA,mBAAmBxmJ,KAAxB,GAC1B,EAAKymJ,uBAAyB,EAAKA,uBAAuBzmJ,KAA5B,GAC9B,EAAK0mJ,kBAAoB,EAAKA,kBAAkB1mJ,KAAvB,GACzB,EAAKqlJ,iBAAmB,EAAKA,iBAAiBrlJ,KAAtB,GACxB,EAAK2mJ,iBAAmB,EAAKA,iBAAiB3mJ,KAAtB,GACxB,EAAK4mJ,mBAAqB,EAAKA,mBAAmB5mJ,KAAxB,GAC1B,EAAK6mJ,yBAA2B,EAAKA,yBAAyB7mJ,KAA9B,GAChC,EAAK8mJ,kBAAoB,EAAKA,kBAAkB9mJ,KAAvB,GACzB,EAAK+mJ,mBAAqB,EAAKA,mBAAmB/mJ,KAAxB,GAC1B,EAAKgnJ,kBAAoB,EAAKA,kBAAkBhnJ,KAAvB,GACzB,EAAKinJ,qBAAuB,EAAKA,qBAAqBjnJ,KAA1B,GAC5B,EAAKknJ,qBAAuB,EAAKA,qBAAqBlnJ,KAA1B,GAE5B,EAAKL,OACD4mE,WAAY,GACZ4gF,gBAAiB,GACjBC,qBACAC,aAAYA,EACZC,oBAAmBA,EACnBpB,eAAgB,EAChBqB,gBAAiB,EACjBjC,cAAaA,EACbkC,YAAWA,GAxBA,E/Lm+jCnB,MArRA1C,GAA0ByB,EAAiBzrJ,GAkC3CwrJ,EAA6BC,IACzB5lK,IAAK,oBACLC,MAAO,W+LrtjCPnC,SAASygF,iBAAiB,UAAWhkE,KAAK0rJ,uB/LytjC1CjmK,IAAK,uBACLC,MAAO,W+LttjCPnC,SAASgpK,oBAAoB,UAAWvsJ,KAAK0rJ,uB/L0tjC7CjmK,IAAK,qBACLC,MAAO,S+LxtjCQ8mK,GACfxsJ,KAAKmG,UAAWklE,WAAYmhF,EAAMN,qBAAuBE,oBAAmBA,O/L2tjC5E3mK,IAAK,2BACLC,MAAO,SAAkC0a,G+LztjC0B,GAA5C1c,GAA4C,EAA5CA,KAAMY,EAAsC,EAAtCA,KAAMgpD,EAAgC,EAAhCA,OAAU88G,EAAsB,0DACxBpqJ,KAAKH,MAAxC0gH,EAD2D,EAC3DA,SAAU/xD,EADiD,EACjDA,qBACZ4c,EAAYm1C,IAAa/5H,IAAS+E,MACxC,IAAK7H,IAASmD,IAAYyG,KACrB5J,IAASmD,IAAYwG,UAAYigD,IAAWvmD,IAAcmH,QAAUo/C,IAAWvmD,IAAciH,MAAQ,CACtG,GAAM6vF,GAAY0iC,IAAa/5H,IAAS+E,OAAS,cAAgB,aAUjE,OATA4/E,cACIznF,OACA4pD,SACAg+B,cAAaA,EACbF,WACAC,WAAY/mF,EACZkqE,6BAEJxuD,MAAKmG,UAAW03E,YAAW+P,eAAcA,EAAOw8D,iBAGpDj/E,aACIG,cAAaA,EACbF,WACAC,WAAY/mF,EACZkqE,yBAEJxuD,KAAK4rJ,kBAAkBtnK,M/LkujCvBmB,IAAK,mBACLC,MAAO,W+L/tjCPsa,KAAKmG,UAAWgmJ,aAAYA,O/LmujC5B1mK,IAAK,mBACLC,MAAO,W+LhujCPsa,KAAKmG,UAAWgmJ,aAAYA,O/LoujC5B1mK,IAAK,oBACLC,MAAO,W+LjujCP,GAAM2lF,GAAarrE,KAAKyE,MAAMwnJ,eAC9B9gF,cACIG,cAAaA,EACbF,SAAWprE,KAAKH,MAAM0gH,WAAa/5H,IAAS+E,OAC5C8/E,aACAE,kBAAiBA,EACjB/c,qBAAsBxuD,KAAKH,MAAM2uD,uBAErCxuD,KAAK4rJ,kBAAkBvgF,M/LqujCvB5lF,IAAK,uBACLC,MAAO,S+LnujCUgsB,GACjB1R,KAAKmG,UAAWklE,WAAYrrE,KAAKyE,MAAMwnJ,gBAAiBjB,cAAet5I,O/LsujCvEjsB,IAAK,uBACLC,MAAO,W+LnujCPsa,KAAKmG,UAAW6kJ,eAAgB,O/LuujChCvlK,IAAK,oBACLC,MAAO,S+LrujCO8mK,GACdxsJ,KAAK6rJ,mBAAmBW,GACpBxsJ,KAAKH,MAAM0gH,WAAa/5H,IAASiF,IACjCuU,KAAKH,MAAMssF,OAAOjqG,KAAlB,QAA+BqrB,mBAAmBi/I,IAElDxsJ,KAAKH,MAAMssF,OAAOjqG,KAAlB,WAAkCqrB,mBAAmBi/I,O/LyujCzD/mK,IAAK,qBACLC,MAAO,S+LtujCQwlC,GAEf,GADAA,EAAMkvD,kBAC4B,IAA9Bp6E,KAAKyE,MAAMumJ,cAAsB,CACjC,GAAM14G,GAAWtyC,KAAKyE,MAAMynJ,kBACvBl6I,IAAI,SAAA05E,GAAA,MAAcA,GAAWp5C,WAC7BrnD,OAAO,SAACwhK,EAAKhiJ,GAAN,kBAAqBgiJ,GAArB,EAA6BhiJ,SACnC8nC,EAAUD,EAAStyC,KAAKyE,MAAMumJ,cAEpC,YADAhrJ,MAAK2rJ,yBAAyBp5G,MAG9BvyC,KAAKyE,MAAM4mE,aACXF,aACIC,SAAWprE,KAAKH,MAAM0gH,WAAa/5H,IAAS+E,OAC5C8/E,WAAYrrE,KAAKyE,MAAM4mE,WACvB7c,qBAAsBxuD,KAAKH,MAAM2uD,uBAErCxuD,KAAK4rJ,kBAAkB5rJ,KAAKyE,MAAM4mE,gB/L4ujCtC5lF,IAAK,qBACLC,MAAO,S+LzujCQwlC,GAAO,GACdwhI,GAAYxhI,EAAZwhI,OACR,IAAK1sJ,KAAKyE,MAAM2nJ,qBAAmC,KAAZM,GAA8B,KAAZA,GAAzD,CAGAxhI,EAAMkvD,gBACN,IAAM9nC,GAAWtyC,KAAKyE,MAAMynJ,kBACvBl6I,IAAI,SAAA05E,GAAA,MAAcA,GAAWp5C,WAC7BrnD,OAAO,SAACwhK,EAAKhiJ,GAAN,kBAAqBgiJ,GAArB,EAA6BhiJ,QAEzC,IAAgB,KAAZiiJ,EAAgB,CAChB,GAAMC,GAAWruI,KAAKC,IAAIve,KAAKyE,MAAMumJ,cAAgB,EAAG,GAClDz4G,EAAUD,EAASq6G,EACzB3sJ,MAAKmG,UAAW6kJ,cAAe2B,EAAUthF,WAAY94B,EAAQm5C,iBAC1D,IAAgB,KAAZghE,EAAgB,CACvB,GAAMC,GAAWruI,KAAKgpD,IAAItnE,KAAKyE,MAAM4nJ,gBAAkB,EAAGrsJ,KAAKyE,MAAMumJ,cAAgB,GAC/Ez4G,EAAUD,EAASq6G,EACzB3sJ,MAAKmG,UAAW6kJ,cAAe2B,EAAUthF,WAAY94B,EAAQm5C,kB/LgvjCjEjmG,IAAK,yBACLC,MAAO,S+L7ujCYwlC,GAAO,WACpB0hI,EAAkB1hI,EAAM5pB,OAAO5b,KAOrC,IAHAsa,KAAKmG,UAAW8lJ,gBAAiBW,EAAiBvhF,WAAYuhF,EAAiB5B,eAAgB,IAG3FhrJ,KAAKH,MAAM0gH,WAAa/5H,IAASiF,IAAK,CACtC,GAAMohK,GAAY7sJ,KAAKH,MAAMgtJ,UACvBC,EAAkBF,EAAgBv2I,cAClCi8B,EAAWu6G,EACZh3I,OAAO,SAAC22I,GAAD,OAA2D,IAAjDA,EAAKn2I,cAAc3a,QAAQoxJ,KAC5C96I,IAAI,SAACw6I,EAAM96I,GAAP,OAAoBptB,KAAMkoK,EAAMlwJ,GAAIoV,KACvCq7I,IAAgBzoK,KAAM,QAASZ,KAAM,QAAS4uD,YACpDtyC,MAAKmG,UAAW+lJ,kBAAmBa,EAAYX,oBAAmBA,EAAOC,gBAAiBQ,EAAU7qK,aACjG,IAAI4qK,EAAgB5qK,OAAS,EAAG,CAAC,GAAD,GACNge,KAAKH,MAA1BgG,EAD2B,EAC3BA,SAAUpM,EADiB,EACjBA,MAClBoM,GAAS0/E,YAAiBqnE,EAAiBnzJ,EAAQgsF,IAAaG,UAAUpzD,KAAK,YAAgC,QAA7ByZ,KAAQqE,mBAAqB,OACrG3L,EAAQ2L,EAAQrlD,OAAO,SAAC+hK,EAAK56G,GAAN,MAAkB46G,GAAM56G,EAAOE,SAAStwD,QAAS,EAC9Es2B,GAAKnS,UAAW+lJ,kBAAmB57G,EAAS87G,oBAAmBA,EAAOC,gBAAiB1nH,MACxFosB,MAAM,kBAET/wD,MAAKmG,UAAWimJ,oBAAmBA,EAAQF,0B/L6vjC/CzmK,IAAK,oBACLC,MAAO,W+LzvjCHsa,KAAKyE,MAAM0nJ,aACXnsJ,KAAKmG,UAAWimJ,oBAAmBA,O/L8vjCvC3mK,IAAK,SACLC,MAAO,W+L3vjCF,aAC4Dsa,KAAKH,MAA9Dk7I,EADH,EACGA,QAAS5+I,EADZ,EACYA,SAAkBsuC,EAD9B,EACsByB,KAAQzB,cAAiB81E,EAD/C,EAC+CA,SAC9C0sC,EAAgB5+G,IAAW,iBAAkB,mBAAoB,4BACjEgtB,EAAQklD,IAAa/5H,IAAS+E,QACtBy9E,MAAO,OAAQkkF,OAAQ,gBACrBlkF,MAAO,OAAQkkF,OAAQ,UACjCC,EAAcntJ,KAAKyE,MAAMynJ,kBAC3B3tB,EAAS,EACP6uB,EAAqBD,EAAYn7I,IAAI,SAAC05E,GACxC,GAAM5qF,GAAUA,EACX,GADC,OAEUy9H,EAFV,cAGiB,EAAK95H,MAAMumJ,cAH5B,WAKct/D,EALd,YAMe,EAAKigE,yBANpB,gBAOmB,EAAKI,qBAPxB,gBAQmB,EAAKC,qBARxB,SASYzrC,EATZ,aAUgB,EAAK97G,MAAM2lJ,cANpB1+D,EAAWpnG,KAUxB,OADAi6I,IAAU7yC,EAAWp5C,SAAStwD,OACvB8e,IAELusJ,EAASrtJ,KAAKH,MAAMysJ,WAAX,oCAEKtsJ,KAAK8rJ,0BAFV,wBAGmB9rJ,KAAKyE,MAAMwnJ,kBAGzC,KACEqB,EAAkBttJ,KAAKyE,MAAM2nJ,mBAAX,mBACL,gDADK,mBAED,kCACVgB,GAEJC,GAEL,IAEJ,OAAOtS,GAAUA,aAAV,MAEQ1/E,EAFR,aAGer7D,KAAKmqJ,iBAHpB,aAIenqJ,KAAKyrJ,iBAJpB,UAKYwB,UALZ,mBAOiBjtJ,KAAKsrJ,2BAPtB,gBASc,OATd,aAUsB,MAVtB,YAWsB7gH,EAActuC,EAAS,uBAX7C,KAYc,iBAZd,MAagB6D,KAAKyE,MAAM4mE,WAb3B,SAcmBrrE,KAAKurJ,uBAdxB,OAeiBvrJ,KAAKwrJ,qBAGpB8B,GAEL,S/LqvjCDjC,G+Lp+jCmB3qJ,YAgQ9B2qJ,GAAgB5jE,cACZszD,SAAQA,EACR8R,aACAP,YAAWA,EAGf,IAAMrkJ,GAAkB,SAACxD,GAAD,OACpBhL,OAAQD,YAAeiL,GACvBooJ,UAAW3hH,YAAmBzmC,IAGnB8pF,0BAAWvqC,YAAWwqC,YAAQvmF,GAAiBojJ,M/L6ujCxD,SAAUhqK,EAAQiE,EAAqBrE,GAE7C,YAiHA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GgM1mkC1d,QAASouJ,GAAgB7pK,GAAmC,GAA7BojD,GAA6B,yEAAhB0mH,EAAgB,EAAhBA,aAC3CvtG,EAAO,GACP34B,EAAQ,GACRmmI,EAAY,GACZC,GACAzkF,OAAQ,KAER0kF,GACAC,WAAY,MAEZC,KACAC,KACAC,QACJ,QAAQrqK,GACJ,IAAKkD,KAAUmG,MACXu6B,EAAQ,iBACR24B,IAAQ,KACR,MACJ,KAAKr5D,KAAUoG,MACXs6B,EAAQ,oBACR24B,IAAQ,KACR,MACJ,KAAKr5D,KAAUqG,aACXq6B,EAAQ,eACR24B,IAAQ,GAAR,QAA6BnZ,EAAKyL,SAClC,MACJ,KAAK3rD,KAAUwG,iBACXk6B,EAAQ,mBACR24B,IAAQ,GAAR,QAAiCnZ,IACjC2mH,EAAY,+CACZE,KACAI,EAAgB,uBAChB,MACJ,KAAKnnK,KAAUsG,YACXo6B,EAAQ,iBACR24B,IAAQ+tG,GAAR,IAAwBlnH,EAAK/iD,MAC7B2pK,GACI1kF,MAAOliC,EAAKkiC,MACZC,OAAQniC,EAAKmiC,OAASukF,EACtBI,YAAc9mH,EAAKkiC,MAAQ,GAE/B2kF,GACI3kF,MAAO,OACPC,OAAQ,OACRglF,WAAY,GAEhB,MACJ,KAAKrnK,KAAUuG,QACXm6B,EAAQ,QACR24B,IAAQ,GAAR,IAAqBnZ,EAAK/iD,MAC1B2pK,GACI3L,SAAU,WACVmM,IAAK,EACLC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPrlF,MAAO,OACPC,OAAQ,OACRqlF,QAAS,EACTpB,OAAQ,EACRqB,WAAY,qBACZC,aAAc,EACdC,UAAW,QAEfd,GACI3kF,MAAO,OACPC,OAAQ,OACRikF,OAAQ,EACRoB,QAAS,GAEbT,GACInxE,QAAS,QAEboxE,GACIO,MAAO,GACPH,IAAK,GACLQ,gBAAiB,2BACjBC,qBAAsB,aACtBC,eAAgB,aAChB5lF,MAAO,GACPC,OAAQ,GACRulF,aAAc,IAElBT,EAAgB,mBAKxB,OACIzmI,QACA24B,OACAytG,cACAC,aACAF,YACAI,cACAC,iBACAC,iBhMu3kCR,QAASc,GAAmClrG,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEnI,QAAS4wI,GAA8C5tJ,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAErP,QAASutK,GAA6B7vJ,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAnepf,GAAIyL,GAAQ3pB,EAAoB,GAI5BwqB,EAAKxqB,EAAoB,GAGzBspG,EAAatpG,EAAoB,IAGjC6T,EAAM7T,EAAoB,KAC1B+tK,EAA2B/tK,EAAoB4D,EAAEiQ,GAGjD+vJ,EAAa5jK,EAAoB,IACjC6jK,EAAkC7jK,EAAoB4D,EAAEggK,GAGxD9vJ,EAAQ9T,EAAoB,GAG5BqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UiM5hkCn4BonE,EAAsB,gSAQbA,IjM8hkCXC,EAAoB,WAAc,GAAI3nE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UkMtikCh5BsnE,EAAe,mDAEAxhI,MAAO,iBAFP,6DAGE,QAHF,uHAOK,SAPL,IAOkB,sBAPlB,KAO6C,4CAP7C,gBAQa+uD,QAAS,QAASkxE,WAAY,OAAQwB,YAAa,OAAQC,WAAY,QARpF,IAQkG,yBARlG,IAQ+H,gFAOrIF,IlM6ikCXp2J,EAAS9X,EAAoB,IAC7B+X,EAA8B/X,EAAoB4D,EAAEkU,GAGpDu2J,EAAmB,WAAc,GAAI/nE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UmM9jkCj5Br6E,EACApS,IADAoS,cAGE+hJ,EAAiB/hJ,EAAjB,mDAEAgiJ,EAAc,SAAC3vJ,GACjB,GAAM0yC,GAAU1yC,EAAM0yC,QAChBk9G,GACFC,gBAAgBA,OAAQH,EAAxB,IACAtmF,OAAQ,QACR0mF,eAAgB,UAChBC,iBAAkB,aAEhBC,EAAYriJ,EAAZ,+BAAwD+kC,EAAQj2C,GAAhE,MACN,yCAEoBmzJ,UAFpB,gBAG0BxmF,OAAQ,SAHlC,IAGkD4mF,EAHlD,IAG8D,kBAH9D,kBAKct9G,EAAQjuD,KALtB,MAK+BiuD,EAAQ0oB,MALvC,YAMgB,uBANhB,mBAO2B,UAP3B,GAOwC,eAPxC,aAS4BztD,EAT5B,uEAUyC+kC,EAAQhxC,SAVjD,8BAY4C,sBAAegxC,EAAQhxC,SAZnE,mBAc2B,UAd3B,GAcwC,wBAdxC,aAgB4BiM,EAhB5B,mDAiBwB,kBAjBxB,qBA6BWgiJ,InMikkCXM,EAAsB7uK,EAAoB,KAG1C8uK,EAAuB,WAAc,GAAIxoE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr5BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MoMhnkC1hBosG,E,YACF,WAAYnwJ,GAAO,yEACTA,GADS,OAEf,GAAKowJ,iBAAmB,EAAKA,iBAAiBnrJ,KAAtB,GACxB,EAAKorJ,iBAAmB,EAAKA,iBAAiBprJ,KAAtB,GACxB,EAAKqrJ,mBAAqB,EAAKA,mBAAmBrrJ,KAAxB,GAC1B,EAAKu4G,YAAc,EAAKA,YAAYv4G,KAAjB,GALJ,EpM+ukCnB,MAlHAg/C,GAAUksG,EAAiBpwJ,GAc3BilD,EAAamrG,IACTvqK,IAAK,mBACLC,MAAO,WoMrokCwB,GAAlBuoG,GAAkB,wDACvBmiE,EAAcpwJ,KAAKH,MAAnBuwJ,SAER,OAAO/hH,KAAc+hH,EAAd,UACH,0CAA2CniE,OpM2okC/CxoG,IAAK,cACLC,MAAO,SoMxokCC61D,EAAQrwB,GAChBA,EAAMkvD,gBADiB,OAGsBp6E,KAAKH,MAA1CgG,EAHe,EAGfA,SAAUwqJ,EAHK,EAGLA,sBAGlBxqJ,GAASk3C,eAETl3C,EAASs1C,eACTI,EAAO+0G,cACPzqJ,EAASqzC,YAAaqC,IASS,OAA3B80G,GACAA,EAAuB90G,MpM+okC3B91D,IAAK,mBACLC,MAAO,WoM5okCmB,GAAb61D,GAAa,4DACQA,EAA1Bh6C,MADkB,sBACRjd,GADQ,EACRA,IAElB,OAAOA,GAAOA,SAAP,UACa0b,KAAKiwJ,iBAAiB10G,EAAOovG,kBAD1C,mBAEQrmK,IAEX,QpMipkCJmB,IAAK,qBACLC,MAAO,WoM/okCwC,GAAhC61D,GAAgC,0DAAnBugD,EAAmB,uDAAZ,WAAY,EACJvgD,EAAnC4e,wBADuC,EACxB,GADwB,IACJ5e,EAAhBjO,kBADoB,EACX,GADW,EAEzCqT,EAAYtS,IAAW,2CACzB,uBAAoC,SAAXf,GAG7B,OAAQ6sB,IAAiC,KAAjBA,EAAjB,mBACaxZ,UAAYm7C,GAC5B,QpMypkCJr2G,IAAK,SACLC,MAAO,WoMvpkCF,aAC0Bsa,KAAKH,MAA5B0yC,EADH,EACGA,QAAS69G,EADZ,EACYA,UADZ,EAEoB79G,EAAjBqC,mBAFH,MAIL,OAAOA,GAAQ5yD,OAAR,mBACgBouK,EADhB,oBAEEx7G,EAAQ5iC,IAAI,SAAAupC,GAAA,0BAES60G,EAFT,iBAII,SAACllI,GAAD,MAAW,GAAKmyF,YAAY9hE,EAAQrwB,KADxCqwB,EAAOj/C,GAHP,mBAMc8zJ,EANd,yCAOiBA,EAPjB,uBAO2C70G,EAAOj3D,MAClD,EAAK6rK,mBAAmB50G,IAE5B,EAAK20G,iBAAiB30G,OAInC,SpM8pkCDy0G,GoMhvkCmBtvJ,YA6F9BsvJ,GAAgBvoE,cACZ2oE,UAAW,iBAGAN,qBAAsBE,GpMwpkCjCO,EAAkB,WAAc,GAAIhpE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UqM5vkC94B2oE,EAAa,SAAC,GAAD,GACfzsK,GADe,EACfA,IADe,IAEfilF,iBAFe,EAEP,OAFO,MAGfC,MAHe,wBAMNllF,EANM,OAOFilF,QAAOC,gBAPL,EAGN,OAHM,MAiBJunF,IrM6vkCXrnF,EAAYloF,EAAoB,GAGhCwvK,EAAe,WAAc,GAAIlpE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UsMhxkC34B6oE,EAAU,SAAC7wJ,GAAU,GACf9b,GAAQ8b,EAAR9b,IACFwuD,EAAUxuD,GAAOA,YAAPA,IAAoBA,GAEpC,oBACasrB,IADb,OAC6C25D,MAAO,OAAQC,OAAQ,OAAQu/C,SAAU,gBAC7Ej2E,IASEm+G,ItMqxkCXC,EAAsB,WAAc,GAAIppE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,SgM3xkCx5B+oE,KAAMC,gBAGC,IAsGDC,GAAwB,cAACC,GAAD,wDAA0BC,EAA1B,mBACzBD,IAAmBC,IAAcpqK,IAAUwG,iBAA5C,mBACmB,6BAAgC,MAGjD6jK,EAAiB,SAAC,GAKlB,GAJFC,GAIE,EAJFA,iBACAC,EAGE,EAHFA,WACAn2G,EAEE,EAFFA,YACAC,EACE,EADFA,YACE,EAUEsyG,EAAgBvyG,EAAaC,GAAeuyG,aA1HvB,KAkHrBlmI,EAFF,EAEEA,MACA24B,EAHF,EAGEA,KACAytG,EAJF,EAIEA,YACAC,EALF,EAKEA,WACAF,EANF,EAMEA,UACAI,EAPF,EAOEA,YACAC,EARF,EAQEA,eACAC,EATF,EASEA,cAGEqD,EAAiB/iH,IAAW0/G,EAAe,iBAAkB,uBAAwB,aAE3F,0BAGS+C,EAAsBI,EAAkBl2G,GAHjD,EAIS,KAJT,OAKoBk2G,EALpB,eAM4BC,EAN5B,iBAO6B,6BAP7B,uBASgCC,EAThC,MASuD1D,UATvD,mBAW8B,qDAX9B,MAY2BI,EAZ3B,QAa6BqD,IAb7B,uBAemC,+BAfnC,kBAgBkC,uBAhBlC,MAgBgEtD,UAhBhE,mBAiB+BvmI,IAjB/B,eAmBgCqmI,EAnBhC,UAmBuDF,UAC9BxtG,OAgB7BgxG,GAAexpE,cACXypE,kBAAiBA,EACjBj2G,YAAa,KAGFg2G,ShM8ykCXI,EAA0B,WAAc,GAAI9pE,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEx5BypE,EAAkC,WAAc,QAASxsG,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MuMj+kC7iB2tG,E,YACF,WAAY1xJ,GAAO,yEACTA,GADS,OAEf,GAAKsxJ,WAAa,EAAKA,WAAWrsJ,KAAhB,GAFH,EvM0glCnB,MA5BAiqJ,GAA6BwC,EAAoB3xJ,GAWjD0xJ,EAAgCC,IAC5B9rK,IAAK,aACLC,MAAO,WuMr/kCPsa,KAAKH,MAAMgG,SAASs1C,kBvMy/kCpB11D,IAAK,SACLC,MAAO,WuMt/kCP,MAAO,GACF,GADL,iBAE0Bsa,KAAKH,MAAMqxJ,iBAFrC,WAGoBlxJ,KAAKmxJ,WAHzB,YAIqBnxJ,KAAKH,MAAMm7C,YAJhC,YAKqBh7C,KAAKH,MAAMo7C,kBvM2/kC7Bs2G,GuM3glCsB7wJ,aA6B3BuH,EAAkB,SAACxD,GAAU,MACqDA,EAA5ErL,IADuB,IAChB83J,4BADgB,SACUl2G,uBADV,EACwB,GADxB,MAC4BC,WAE3D,QACIi2G,mBACAl2G,cACAC,qBAN2B,EAC0C,KAD1C,GAUpBuzC,iBAAQvmF,GAAiBspJ,IvM4/kClC,SAAUlwK,EAAQD,EAASH,GAEjC,cAAa,SwM1ilCb,GAeA,QAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAbvFpE,EAAQ0D,cACR1D,EAAQg2B,UAAYh2B,EAAQowK,aAAepwK,EAAQqwK,cAAgBrwK,EAAQswK,iBAAmBtwK,EAAQuwK,eAAiBvwK,EAAQwwK,cAAgBxwK,EAAQywK,aAAezwK,EAAQ0wK,aAAe1wK,EAAQ2wK,mBAAqB3wK,EAAQ4wK,YAAc5wK,EAAQ6wK,cAAgB7wK,EAAQ8wK,cAAgB9wK,EAAQ+wK,eAAiB/wK,EAAQgxK,oBAAsBhxK,EAAQixK,SAAWjxK,EAAQkxK,UAAYlxK,EAAQmxK,WAAanxK,EAAQoxK,WAAapxK,EAAQqxK,YAAcrxK,EAAQsxK,aAAetxK,EAAQuxK,iBAAmBvxK,EAAQwxK,cAAgBxxK,EAAQyxK,UAAYzxK,EAAQ0xK,kBAAoB1xK,EAAQ2xK,UAAY3xK,EAAQ4xK,SAAW5xK,EAAQ6xK,kBAAoB7xK,EAAQ8xK,iBAAmB9xK,EAAQ+xK,aAAe/xK,EAAQgyK,eAAiBhyK,EAAQiyK,sBAAwBjyK,EAAQkyK,4BAE9uB,IAAIlyJ,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCy3F,EAAY,EAAQ,IAEpBC,EAAa33F,EAAuB03F,GAIpCD,EAAwBlyK,EAAQkyK,sBAAwB,SAA+BG,GAIzF,IAAK,GAHDC,MACAjgB,EAAa2f,EAAeK,GAC5BE,EAAWR,EAAaM,GACnBG,EAAangB,EAAYmgB,EAAaD,EAAUC,IACnDH,EAAKI,eAAen4J,QAAQk4J,GAAc,GAC5CF,EAAexxK,KAAK0xK,EAGxB,OAAOF,IAeLN,GAXwBhyK,EAAQiyK,sBAAwB,SAA+BI,GAIzF,IAAK,GAHDK,MACArgB,EAAa2f,EAAeK,GAC5BE,EAAWR,EAAaM,GACnBG,EAAangB,EAAYmgB,EAAaD,EAAUC,IACvDE,EAAe5xK,KAAK0xK,EAEtB,OAAOE,IAIY1yK,EAAQgyK,eAAiB,SAAwBK,GACpE,MAAOA,GAAKM,aAAeb,EAAiBO,KAE1CN,EAAe/xK,EAAQ+xK,aAAe,SAAsBM,GAC9D,MAAOA,GAAKM,aAAed,EAAkBQ,IAE3CP,EAAmB9xK,EAAQ8xK,iBAAmB,SAA0BO,GAC1E,MAAOA,GAAKO,WAAa11I,KAAK+oD,MAAMosF,EAAKQ,aAAe,IAAMvrI,SAAS+qI,EAAKS,eAAiB,EAAI,EAAI,GAAK,GAExGjB,EAAoB7xK,EAAQ6xK,kBAAoB,SAA2BQ,GAC7E,MAAOA,GAAKO,WAAa11I,KAAK+oD,OAAOosF,EAAKQ,aAAe,GAAK,GAAK,GAAKvrI,SAAS+qI,EAAKS,eAAiB,EAAI,EAAI,GAAKT,EAAKQ,cAIvHjB,EAAW5xK,EAAQ4xK,SAAW,SAAkBmB,GAClD,MAAOA,IAAQA,EAAKC,aAAe,GAEjCrB,EAAY3xK,EAAQ2xK,UAAY,SAAmBoB,GACrD,MAAOA,IAAQA,EAAKE,cAAgB,GAElCvB,EAAoB1xK,EAAQ0xK,kBAAoB,SAA2BwB,GAC7E,GAEIC,GAAOC,EAAOj8I,EAAGk8I,EAFjBC,EAAkB/hK,UAAU3Q,OAAS,YAAK2Q,UAAU,IAAmBA,UAAU,EAUrF,OAPA4hK,GAAQD,EAAYK,OAASL,EAAYM,KACzCJ,EAAQF,EAAYO,OAASP,EAAYQ,KACzCv8I,EAAI+F,KAAKy2I,MAAMP,EAAOD,GACtBE,EAAan2I,KAAKggH,MAAU,IAAJ/lH,EAAU+F,KAAK02I,IACnCP,EAAa,IACfA,EAAa,IAAMn2I,KAAK8oD,IAAIqtF,IAE1BA,GAAc,IAAMA,GAAc,GAAKA,GAAc,KAAOA,GAAc,IACrE,OAELA,GAAc,KAAOA,GAAc,IAC9B,aAELC,EACED,GAAc,IAAMA,GAAc,IAC7B,KAEA,OAIJ,YAIL5B,EAAYzxK,EAAQyxK,UAAY,SAAmBY,GACrD,GAAIwB,KAQJ,OAPKxB,GAAKyB,WACJzB,EAAKO,YAAcP,EAAKM,cAAgBN,EAAK0B,WAAa,EAC5DF,MACSxB,EAAK0B,YAAc1B,EAAKQ,cAAgBR,EAAKM,cAAgBN,EAAK0B,WAAa1B,EAAKQ,gBAC7FgB,OAGGA,GAuWL7C,GAnWgBhxK,EAAQwxK,cAAgB,SAAuBa,EAAMzoK,GACvE,GAAIoqK,KAIJ,OAHApqK,GAAK+0C,QAAQ,SAAUt6C,GACrB,MAAO2vK,GAAU3vK,GAAOguK,EAAKhuK,KAExB2vK,GAIch0K,EAAQuxK,iBAAmB,SAA0Bc,GAE1E,GAAI0B,GAAap5F,EAAQttB,QAAQluC,SAASokC,MAAM8uH,EAAKhzJ,UACjD40J,EAAY/2I,KAAKssG,KAAKooC,EAASQ,EAAW/kH,QAAQ6mH,YAAY7B,EAAK8B,WACnEC,EAAal3I,KAAKssG,KAAKooC,EAASQ,EAAW/kH,QAAQ6mH,YAAY7B,EAAKgC,YACpEC,QACJ,IAAKjC,EAAKkC,SAORD,EAAaL,MAPK,CAClB,GAAIO,GAAmBnC,EAAKO,YAA6C,EAA/BtrI,SAAS+qI,EAAKS,cACtB,iBAAvBT,GAAKS,eAA+D,MAAjCT,EAAKS,cAAcrgK,OAAO,KACtE+hK,GAAoBP,EAAY,KAElCK,EAAap3I,KAAKssG,MAAMyqC,EAAYO,GAAoBnC,EAAKQ,cAI/D,GAAI4B,GAAcrC,EAAW/kH,QAAQ6mH,YAAY7B,EAAK8B,UAAYxC,EAAUS,EAAW/kH,QAAQ6mH,YAAY7B,EAAK8B,SAASl2F,cAAc,qBACnIy2F,EAAaD,EAAcpC,EAAKQ,aAChCF,WAAeN,EAAKM,aAA6BN,EAAKsC,aAAetC,EAAKM,YAC1EN,GAAKuC,cAAOvC,EAAKM,eACnBA,EAAeoB,EAAa,EAAI1B,EAAKsC,aAEvC,IAAIlC,GAAiBJ,EAAKI,mBACtBoC,EAAe3C,GAAwBS,aAAcA,EAAcF,eAAgBA,GAAkBJ,EACzGI,GAAehhJ,OAAOojJ,EAEtB,IAAIxxJ,IACF0wJ,WAAYA,EACZO,WAAYA,EACZL,UAAWA,EACXG,WAAYA,EACZzB,aAAcA,EACd8B,YAAaA,EACbC,WAAYA,EACZjC,eAAgBA,EAOlB,OAJyB,QAArBJ,EAAKyC,aAAwBzC,EAAKp1C,WACpC55G,EAAmB,YAAI,WAGlBA,GAGUrjB,EAAQsxK,aAAe,SAAsBe,GAC9D,GAAI0C,GAAiB1C,EAAK0C,eACtBC,EAAY3C,EAAK2C,UACjBC,EAAO5C,EAAK4C,KACZnB,EAAWzB,EAAKyB,SAChBxjJ,EAAQ+hJ,EAAK/hJ,MACbyjJ,EAAa1B,EAAK0B,WAClBtB,EAAiBJ,EAAKI,eACtByC,EAAW7C,EAAK6C,SAChBvC,EAAeN,EAAKM,aACpBC,EAAaP,EAAKO,WAClBuC,EAAiB9C,EAAK8C,eACtBtC,EAAeR,EAAKQ,aACpBuC,EAAS/C,EAAK+C,MAElB,IAAIL,GAAkBC,EAAW,QACjC,IAAIK,GAAiB/kJ,EACjBglJ,SACAC,SACAC,SACAnyJ,KACAmF,IACJ,IAAIysJ,EAAM,CACR,IAAKnB,IAAaxjJ,EAAQ,GAAKA,GAASyjJ,GAAa,QACjDzjJ,GAAQ,EACV+kJ,EAAiB/kJ,EAAQyjJ,EAChBzjJ,GAASyjJ,IAClBsB,EAAiB/kJ,EAAQyjJ,GAEvBmB,GAAYzC,EAAen4J,QAAQ+6J,GAAkB,GACvD5C,EAAe3xK,KAAKu0K,GAEtBhyJ,GACE2xJ,WAAUA,EACVrC,aAAc0C,EACd5C,eAAgBA,GAElBjqJ,GAAcwsJ,WAAUA,OAExBM,GAAaD,EACTA,EAAiB,GACnBC,EAAaD,EAAiBtB,EACzBD,EAAkCC,EAAaoB,GAAmB,IAAGG,EAAavB,EAAaA,EAAaoB,GAAlGG,EAAa,IAClB7D,EAAUY,IAASgD,EAAiB1C,EAC9C0C,EAAiBC,EAAa3C,EACrBC,GAAcyC,GAAkBtB,GACzCsB,EAAiBvB,EAAWC,EAAaA,EAAa,EACtDuB,EAAaxB,EAAW,EAAIC,EAAa,GAChCsB,GAAkBtB,IAC3BuB,EAAaD,EAAiBtB,EACzBD,EAA0DC,EAAaoB,GAAmB,IAAGG,EAAa,GAAhGA,EAAavB,EAAalB,GAE3C0C,EAAgB7E,EAAa1wJ,KAAaqyJ,GAAQG,WAAY6C,KAC9DG,EAAY9E,EAAa1wJ,KAAaqyJ,GAAQG,WAAY8C,KACrDxB,IACCyB,IAAkBC,IAAWH,EAAiBC,GAClDC,EAAgBC,GAElBN,GAAYzC,EAAehhJ,OAAOygJ,EAAsBlyJ,KAAaqyJ,GAAQM,aAAc0C,MACtFD,GAOH/xJ,GACE2xJ,WAAUA,EACVrC,aAAc2C,EACdG,WAAY9E,EAAmB3wJ,KAAaqyJ,GAAQrF,KAAMuI,KAC1D9C,eAAgBA,GAElBjqJ,GACEwsJ,WAAUA,EACVrC,aAAc2C,EACdG,WAAY7E,EAAY5wJ,KAAaqyJ,GAAQrF,KAAMwI,KACnDE,UAAW,OAhBbryJ,GACEsvJ,aAAc2C,EACdG,WAAY7E,EAAY5wJ,KAAaqyJ,GAAQrF,KAAMwI,KACnD/C,eAAgBA,EAiBtB,QAASpvJ,MAAOA,EAAOmF,UAAWA,IAGlBxoB,EAAQqxK,YAAc,SAAqBgB,EAAM13J,GACjE,GAAIg7J,GAAaC,EAAaC,EAAaC,EAAcC,EACrDZ,EAAiB9C,EAAK8C,eACtBtC,EAAeR,EAAKQ,aACpBkB,EAAa1B,EAAK0B,WAClBpB,EAAeN,EAAKM,aACpBuC,EAAW7C,EAAK6C,SAChBpB,EAAWzB,EAAKyB,QAKpB,IAHAgC,EAAe/B,EAAaoB,GAAmB,EAC/CQ,EAAcG,EAAe,GAAK/B,EAAapB,GAAgBwC,EAEvC,aAApBx6J,EAAQ3I,QACV6jK,EAA8B,IAAhBF,EAAoBR,EAAiBtC,EAAe8C,EAClEI,EAAcpD,EAAekD,EACzBX,IAAapB,IACf8B,EAAcjD,EAAekD,EAC7BE,GAA+B,IAAjBH,EAAqB7B,EAAa,EAAI6B,OAEjD,IAAwB,SAApBj7J,EAAQ3I,QACjB6jK,EAA8B,IAAhBF,EAAoBR,EAAiBQ,EACnDI,EAAcpD,EAAekD,EACzBX,IAAapB,IACfiC,GAAepD,EAAewC,GAAkBpB,EAAa4B,OAE1D,IAAwB,SAApBh7J,EAAQ3I,SAGjB,IADA+jK,EAAcp7J,EAAQ2V,MAAQ3V,EAAQw6J,kBAClBx6J,EAAQg4J,aAC1B,MAAO,UAEJ,IAAwB,aAApBh4J,EAAQ3I,QAAwB,CAGzC,IADA+jK,EAAcp7J,EAAQ2V,SACF3V,EAAQg4J,aAC1B,MAAO,KAET,IAAImB,EAAU,CACZ,GAAIj0B,GAAYywB,EAAiBtwJ,KAAaqyJ,GAAQ0D,YAAaA,IAC/DA,GAAcp7J,EAAQg4J,cAA8B,SAAd9yB,EACxCk2B,GAA4BhC,EACnBgC,EAAcp7J,EAAQg4J,cAA8B,UAAd9yB,IAC/Ck2B,GAA4BhC,QAG3B,IAAwB,UAApBp5J,EAAQ3I,UACjB+jK,EAAc9sH,OAAOtuC,EAAQ2V,UACT3V,EAAQg4J,aAC1B,MAAO,KAGX,OAAOoD,IAEQ/1K,EAAQoxK,WAAa,SAAoBhwK,EAAG40K,EAAepB,GAC1E,MAAIxzK,GAAE8e,OAAOs8D,QAAQtzD,MAAM,2BAA6B8sJ,EAAsB,GAC5D,KAAd50K,EAAEkqK,QAAuBsJ,EAAM,OAAS,WAC1B,KAAdxzK,EAAEkqK,QAAuBsJ,EAAM,WAAa,OACzC,IAGQ50K,EAAQmxK,WAAa,SAAoB/vK,EAAG60K,EAAOC,GAElE,MADqB,QAArB90K,EAAE8e,OAAOs8D,SAAqBp7E,EAAE43F,kBAC3Bi9E,IAAUC,IAA0C,IAA7B90K,EAAEkB,KAAKgY,QAAQ,SAAwB,IAEjE67J,UAASA,EACTjD,aACEK,OAAQnyK,EAAEg1K,QAAUh1K,EAAEg1K,QAAQ,GAAG1iB,MAAQtyJ,EAAEyxJ,QAC3C4gB,OAAQryK,EAAEg1K,QAAUh1K,EAAEg1K,QAAQ,GAAGxiB,MAAQxyJ,EAAE0xJ,QAC3C0gB,KAAMpyK,EAAEg1K,QAAUh1K,EAAEg1K,QAAQ,GAAG1iB,MAAQtyJ,EAAEyxJ,QACzC6gB,KAAMtyK,EAAEg1K,QAAUh1K,EAAEg1K,QAAQ,GAAGxiB,MAAQxyJ,EAAE0xJ,WAI/B9yJ,EAAQkxK,UAAY,SAAmB9vK,EAAGixK,GAExD,GAAIgE,GAAYhE,EAAKgE,UACjBrB,EAAY3C,EAAK2C,UACjBT,EAAWlC,EAAKkC,SAChB+B,EAAejE,EAAKiE,aACpBhD,EAAkBjB,EAAKiB,gBACvBsB,EAAMvC,EAAKuC,IACXjC,EAAeN,EAAKM,aACpB4D,EAAelE,EAAKkE,aACpBC,EAAcnE,EAAKmE,YACnBC,EAASpE,EAAKoE,OACdC,EAASrE,EAAKqE,OACdC,EAAUtE,EAAKsE,QACf5C,EAAa1B,EAAK0B,WAClBoB,EAAiB9C,EAAK8C,eACtBrB,EAAWzB,EAAKyB,SAChBZ,EAAcb,EAAKa,YACnB0D,EAAavE,EAAKuE,WAClBlC,EAAarC,EAAKqC,WAClBT,EAAY5B,EAAK4B,SAErB,KAAIoC,EAAJ,CACA,GAAIrB,EAAW,MAAO5zK,GAAE43F,gBACpBu7E,IAAY+B,GAAgBhD,GAAiBlyK,EAAE43F,gBACnD,IAAI08E,UACAryJ,KACAwzJ,EAAUnG,EAAa2B,EAC3Ba,GAAYM,KAAOpyK,EAAEg1K,QAAUh1K,EAAEg1K,QAAQ,GAAG1iB,MAAQtyJ,EAAEyxJ,QACtDqgB,EAAYQ,KAAOtyK,EAAEg1K,QAAUh1K,EAAEg1K,QAAQ,GAAGxiB,MAAQxyJ,EAAE0xJ,QACtDogB,EAAY4D,YAAc55I,KAAKggH,MAAMhgH,KAAK65I,KAAK75I,KAAKywG,IAAIulC,EAAYM,KAAON,EAAYK,OAAQ,IAC/F,IAAIyD,GAAsB95I,KAAKggH,MAAMhgH,KAAK65I,KAAK75I,KAAKywG,IAAIulC,EAAYQ,KAAOR,EAAYO,OAAQ,IAC/F,KAAKH,IAAoBqD,GAAWK,EAAsB,GACxD,OAASX,WAAUA,EAEjB/C,KAAiBJ,EAAY4D,YAAcE,EAC/C,IAAIC,IAAmBrC,GAAW,EAAL,IAAW1B,EAAYM,KAAON,EAAYK,OAAS,GAAK,EACjFD,KAAiB2D,EAAiB/D,EAAYQ,KAAOR,EAAYO,OAAS,GAAK,EAEnF,IAAIyD,GAAWh6I,KAAKssG,KAAKuqC,EAAaoB,GAClCgC,EAAiBzF,EAAkBW,EAAKa,YAAaI,GACrD8D,EAAmBlE,EAAY4D,WA+BnC,OA9BKhD,KACkB,IAAjBnB,GAAyC,UAAnBwE,GAA8BxE,EAAe,GAAKuE,GAA+B,SAAnBC,IAA8B1F,EAAUY,IAA4B,SAAnB8E,KACvIC,EAAmBlE,EAAY4D,YAAcP,OACzCC,GAAyBC,IAC3BA,EAAOU,GACP9zJ,EAAmB,kBAIpBqzJ,GAAUE,IACbA,EAAWO,GACX9zJ,EAAc,WASdqyJ,EAPGnB,EAOSsC,EAAUO,GAAoB1C,EAAaT,GAAagD,EAN/DrC,EAGSiC,EAAUO,EAAmBH,EAF7BJ,EAAUO,EAAmBH,EAOzC3D,IACFoC,EAAYmB,EAAUO,EAAmBH,GAE3C5zJ,EAAQrD,KAAaqD,GACnB6vJ,YAAaA,EACbwC,UAAWA,EACXD,WAAY7E,EAAY5wJ,KAAaqyJ,GAAQrF,KAAM0I,OAEjDx4I,KAAK8oD,IAAIktF,EAAYM,KAAON,EAAYK,QAA4D,GAAlDr2I,KAAK8oD,IAAIktF,EAAYQ,KAAOR,EAAYO,QACrFpwJ,GAEL6vJ,EAAY4D,YAAc,KAC5BzzJ,EAAe,WACfjiB,EAAE43F,kBAEG31E,KAEMrjB,EAAQixK,SAAW,SAAkB7vK,EAAGixK,GACrD,GAAI8D,GAAW9D,EAAK8D,SAChBF,EAAQ5D,EAAK4D,MACb/C,EAAcb,EAAKa,YACnBe,EAAY5B,EAAK4B,UACjBoD,EAAiBhF,EAAKgF,eACtB/D,EAAkBjB,EAAKiB,gBACvBoB,EAAarC,EAAKqC,WAClB/B,EAAeN,EAAKM,aACpB2D,EAAejE,EAAKiE,aACpBD,EAAYhE,EAAKgE,UACjBiB,EAAUjF,EAAKiF,OAEnB,KAAKnB,EAEH,MADIF,IAAO70K,EAAE43F,mBAGf,IAAIu+E,GAAWjE,EAAkBoB,EAAa2C,EAAiBpD,EAAYoD,EACvEF,EAAiBzF,EAAkBwB,EAAaI,GAEhDjwJ,GACF8yJ,UAASA,EACTK,aAAYA,EACZH,WAAUA,EACVM,SAAQA,EACRD,QAAOA,EACPhB,UAAW,KACXxC,eAEF,IAAImD,EACF,MAAOhzJ,EAET,KAAK6vJ,EAAY4D,YACf,MAAOzzJ,EAET,IAAI6vJ,EAAY4D,YAAcS,EAAU,CACtCn2K,EAAE43F,iBACEs+E,GACFA,EAAQH,EAEV,IAAIpD,UACAyD,QACJ,QAAQL,GACN,IAAK,OACL,IAAK,KACHK,EAAW7E,EAAe7B,EAAcuB,GACxC0B,EAAauC,EAAevF,EAAesB,EAAMmF,GAAYA,EAC7Dn0J,EAAwB,iBAAI,CAC5B,MACF,KAAK,QACL,IAAK,OACHm0J,EAAW7E,EAAe7B,EAAcuB,GACxC0B,EAAauC,EAAevF,EAAesB,EAAMmF,GAAYA,EAC7Dn0J,EAAwB,iBAAI,CAC5B,MACF,SACE0wJ,EAAapB,EAEjBtvJ,EAA2B,oBAAI0wJ,MAC1B,CAEL,GAAI0D,GAAc/G,EAAa2B,EAC/BhvJ,GAAkB,WAAIstJ,EAAmB3wJ,KAAaqyJ,GAAQrF,KAAMyK,KAEtE,MAAOp0J,IAEiBrjB,EAAQgxK,oBAAsB,SAA6BqB,GAKnF,IAJA,GAAIl1I,GAAMk1I,EAAKyB,SAA6B,EAAlBzB,EAAK0B,WAAiB1B,EAAK0B,WACjD2D,EAAarF,EAAKyB,UAAgC,EAArBzB,EAAKQ,aAAoB,EACtDn6C,EAAU25C,EAAKyB,UAAgC,EAArBzB,EAAKQ,aAAoB,EACnD8E,KACGD,EAAav6I,GAClBw6I,EAAQ72K,KAAK42K,GACbA,EAAah/C,EAAU25C,EAAK8C,eAC5Bz8C,GAAWx7F,KAAKgpD,IAAImsF,EAAK8C,eAAgB9C,EAAKQ,aAEhD,OAAO8E,KAEL5G,EAAiB/wK,EAAQ+wK,eAAiB,SAAwBsB,EAAM/hJ,GAC1E,GAAIsnJ,GAAa5G,EAAoBqB,GACjCwF,EAAgB,CACpB,IAAIvnJ,EAAQsnJ,EAAWA,EAAWh3K,OAAS,GACzC0vB,EAAQsnJ,EAAWA,EAAWh3K,OAAS,OAEvC,KAAK,GAAI6C,KAAKm0K,GAAY,CACxB,GAAItnJ,EAAQsnJ,EAAWn0K,GAAI,CACzB6sB,EAAQunJ,CACR,OAEFA,EAAgBD,EAAWn0K,GAG/B,MAAO6sB,IAELwgJ,EAAgB9wK,EAAQ8wK,cAAgB,SAAuBuB,GACjE,GAAIyF,GAAezF,EAAKO,WAAaP,EAAKiC,WAAap3I,KAAK+oD,MAAMosF,EAAKQ,aAAe,GAAK,CAC3F,IAAIR,EAAKiE,aAAc,CACrB,GAAIyB,UACAC,EAAY5F,EAAW/kH,QAAQ6mH,YAAY7B,EAAK8B,SAChD8D,EAASD,EAAU75F,iBAAiB,eAiBxC,IAhBAvrE,MAAMid,KAAKooJ,GAAQ5nJ,MAAM,SAAU6nJ,GACjC,GAAK7F,EAAKkC,UAMR,GAAI2D,EAAMC,UAAYxG,EAAUuG,GAAS,GAAsB,EAAlB7F,EAAKqD,UAEhD,MADAqC,GAAcG,SANhB,IAAIA,EAAME,WAAaN,EAAelG,EAASsG,GAAS,GAAsB,EAAlB7F,EAAKqD,UAE/D,MADAqC,GAAcG,IAUlB,aAGGH,EACH,MAAO,EAET,IAAIM,QAAehG,EAAKuC,IAAevC,EAAK0B,WAAa1B,EAAKM,aAAeN,EAAKM,YAElF,OADsBz1I,MAAK8oD,IAAI+xF,EAAYO,QAAQhoJ,MAAQ+nJ,IAAiB,EAG5E,MAAOhG,GAAK8C,gBAIZtE,EAAgB7wK,EAAQ6wK,cAAgB,SAAuBwB,EAAMkG,GACvE,MAAOA,GAAU1uK,OAAO,SAAUvF,EAAOD,GACvC,MAAOC,IAAS+tK,EAAKpxK,eAAeoD,QAC3B,KAAON,EAAQC,MAAM,gBAAiBquK,IAG/CzB,EAAc5wK,EAAQ4wK,YAAc,SAAqByB,GAC3DxB,EAAcwB,GAAO,OAAQ,gBAAiB,aAAc,eAAgB,cAC5E,IAAI+B,UACAoE,SACAC,EAAgBpG,EAAK0B,WAAa,EAAI1B,EAAKQ,YAC1CR,GAAKkC,SAGRiE,EAAcC,EAAgBpG,EAAKoC,YAFnCL,EAAa7D,EAAe8B,GAAQA,EAAKiC,UAI3C,IAAIr6F,IACFy+F,QAAS,EACTC,WAAY,GACZC,iBAAkB,GAEpB,IAAIvG,EAAKwG,aAAc,CACrB,GAAIC,GAAmBzG,EAAKkC,SAA0D,oBAAsBlC,EAAKrF,KAAO,WAAjF,eAAiBqF,EAAKrF,KAAO,gBAChE+L,EAAa1G,EAAKkC,SAA0D,oBAAsBlC,EAAKrF,KAAO,WAAjF,eAAiBqF,EAAKrF,KAAO,gBAC1DgM,EAAe3G,EAAKkC,SAA+C,cAAgBlC,EAAKrF,KAAO,MAAhE,cAAgBqF,EAAKrF,KAAO,KAC/D/yF,GAAQj6D,KAAai6D,GACnB6+F,gBAAiBA,EACjBC,UAAWA,EACXC,YAAaA,QAGX3G,GAAKkC,SACPt6F,EAAW,IAAIo4F,EAAKrF,KAEpB/yF,EAAY,KAAIo4F,EAAKrF,IAgBzB,OAbIqF,GAAK4C,OAAMh7F,GAAUy+F,QAAS,IAC9BtE,IAAYn6F,EAAM2N,MAAQwsF,GAC1BoE,IAAav+F,EAAM4N,OAAS2wF,GAG5Bl4K,SAAWA,OAAOsiF,kBAAoBtiF,OAAOuiF,cAC1CwvF,EAAKkC,SAGRt6F,EAAM4yF,UAAYwF,EAAKrF,KAAO,KAF9B/yF,EAAMuyF,WAAa6F,EAAKrF,KAAO,MAM5B/yF,GAEL02F,EAAqB3wK,EAAQ2wK,mBAAqB,SAA4B0B,GAChFxB,EAAcwB,GAAO,OAAQ,gBAAiB,aAAc,eAAgB,aAAc,QAAS,WACnG,IAAIp4F,GAAQ22F,EAAYyB,EAYxB,OAVIA,GAAKwG,cACP5+F,EAAM2+F,iBAAmB,qBAAuBvG,EAAK4G,MAAQ,MAAQ5G,EAAK6G,QAC1Ej/F,EAAM0+F,WAAa,aAAetG,EAAK4G,MAAQ,MAAQ5G,EAAK6G,SAExD7G,EAAKkC,SACPt6F,EAAM0+F,WAAa,OAAStG,EAAK4G,MAAQ,MAAQ5G,EAAK6G,QAEtDj/F,EAAM0+F,WAAa,QAAUtG,EAAK4G,MAAQ,MAAQ5G,EAAK6G,QAGpDj/F,GAELy2F,EAAe1wK,EAAQ0wK,aAAe,SAAsB2B,GAC9D,GAAIA,EAAK8G,QACP,MAAO,EAGTtI,GAAcwB,GAAO,aAAc,WAAY,WAAY,aAAc,aAAc,eAAgB,iBAAkB,aAAc,YAAa,gBAAiB,eAErK,IAgBI+G,GACArD,EAjBAvD,EAAaH,EAAKG,WAClB6B,EAAWhC,EAAKgC,SAChBP,EAAWzB,EAAKyB,SAChBlB,EAAaP,EAAKO,WAClBmB,EAAa1B,EAAK0B,WAClBlB,EAAeR,EAAKQ,aACpBsC,EAAiB9C,EAAK8C,eACtBb,EAAajC,EAAKiC,WAClBL,EAAY5B,EAAK4B,UACjBoF,EAAgBhH,EAAKgH,cACrB5E,EAAcpC,EAAKoC,YACnBQ,EAAO5C,EAAK4C,KACZV,EAAWlC,EAAKkC,SAGhBsB,EAAc,EAGdyD,EAAiB,CAErB,IAAIrE,GAA4B,IAApB5C,EAAK0B,WACf,MAAO,EAGT,IAAIwF,GAAiB,CA4BrB,IA3BIzF,GACFyF,GAAkB9I,EAAa4B,GAE3B0B,EAAaoB,GAAmB,GAAK3C,EAAa2C,EAAiBpB,IACrEwF,IAAmB/G,EAAauB,EAAalB,GAAgBL,EAAauB,GAAcA,EAAaoB,IAGnGvC,IACF2G,GAAkBjyI,SAASurI,EAAe,MAGxCkB,EAAaoB,GAAmB,GAAK3C,EAAa2C,EAAiBpB,IACrEwF,EAAiB1G,EAAekB,EAAaoB,GAE3CvC,IACF2G,EAAiBjyI,SAASurI,EAAe,KAG7CgD,EAAc0D,EAAiBjF,EAC/BgF,EAAiBC,EAAiB9E,EAKhC2E,EAHG7E,EAGU/B,EAAaiC,GAAe,EAAI6E,EAFhC9G,EAAa8B,GAAc,EAAIuB,OAK1CwD,EAAwB,CAC1B,GAAIG,GACAC,EAAYrH,EAAW/kH,QAAQ6mH,YAAYG,EAI/C,IAHAmF,EAAmBhH,EAAa/B,EAAa4B,GAC7C0D,EAAc0D,GAAaA,EAAUC,WAAWF,GAChDJ,EAAarD,GAAwC,EAA1BA,EAAYqC,WAAkB,OACrDxF,EAAqB,CACvB4G,EAAmB1F,EAAWtB,EAAa/B,EAAa4B,GAAQG,EAChEuD,EAAc0D,GAAaA,EAAUp6J,SAASm6J,GAC9CJ,EAAa,CACb,KAAK,GAAIlB,GAAQ,EAAGA,EAAQsB,EAAkBtB,IAC5CkB,GAAcK,GAAaA,EAAUp6J,SAAS64J,IAAUuB,EAAUp6J,SAAS64J,GAAOlF,WAEpFoG,IAAc9xI,SAAS+qI,EAAKS,eAC5BsG,GAAcrD,IAAgB9B,EAAY8B,EAAY/C,aAAe,GAIzE,MAAOoG,IAGL3I,EAAezwK,EAAQywK,aAAe,SAAsB4B,GAC9D,MAAIA,GAAK8G,UAAY9G,EAAKyB,SACjB,EAELzB,EAAKgH,cACAhH,EAAK0B,WAEP1B,EAAKQ,cAAgBR,EAAKO,WAAa,EAAI,IAGhDpC,EAAgBxwK,EAAQwwK,cAAgB,SAAuB6B,GACjE,MAAIA,GAAK8G,UAAY9G,EAAKyB,SACjB,EAEFzB,EAAK0B,YAGVxD,EAAiBvwK,EAAQuwK,eAAiB,SAAwB8B,GACpE,MAA2B,KAApBA,EAAK0B,WAAmB,EAAItD,EAAa4B,GAAQA,EAAK0B,WAAavD,EAAc6B,IAEtF/B,EAAmBtwK,EAAQswK,iBAAmB,SAA0B+B,GAC1E,MAAIA,GAAK0D,YAAc1D,EAAKM,aACtBN,EAAK0D,YAAc1D,EAAKM,aAAetC,EAAcgC,GAChD,OAEF,QAEHA,EAAK0D,YAAc1D,EAAKM,aAAevC,EAAaiC,GAC/C,QAEF,QAIPhC,EAAgBrwK,EAAQqwK,cAAgB,SAAuBrxJ,GACjE,GAAI6zJ,GAAe7zJ,EAAK6zJ,aACpBD,EAAa5zJ,EAAK4zJ,WAClBgC,EAAM51J,EAAK41J,IACX9B,EAAgB9zJ,EAAK8zJ,aAGzB,IAAIF,EAAY,CACd,GAAI3F,IAAS4F,EAAe,GAAK,EAAI,CAGrC,OAFIvrI,UAASwrI,GAAiB,IAAG7F,GAAS,GACtC2H,GAAO/B,EAAe,GAAM,IAAG5F,GAAS,GACrCA,EAET,MAAI2H,GACK,EAEF/B,EAAe,GAGpBzC,EAAepwK,EAAQowK,aAAe,SAAsBtuJ,GAC9D,GAAI+wJ,GAAe/wJ,EAAM+wJ,aACrBD,EAAa9wJ,EAAM8wJ,WACnBgC,EAAM9yJ,EAAM8yJ,IACZ9B,EAAgBhxJ,EAAMgxJ,aAG1B,IAAIF,EAAY,CACd,GAAI5F,IAAQ6F,EAAe,GAAK,EAAI,CAGpC,OAFIvrI,UAASwrI,GAAiB,IAAG9F,GAAQ,GACpC4H,GAAO/B,EAAe,GAAM,IAAG7F,GAAQ,GACrCA,EAET,MAAI4H,GACK/B,EAAe,EAEjB,EAGO7yK,GAAQg2B,UAAY,WAClC,QAA4B,mBAAX11B,UAA0BA,OAAO6B,WAAY7B,OAAO6B,SAASE,kBxM6ilCnDjC,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,ayMrxmCjC,KAsIA,QAASwS,GAAQjO,EAAK+mC,GAEpB,GAAIlJ,IACF03I,QACAC,QAASC,EAkBX,OAfItoK,WAAU3Q,QAAU,IAAGqhC,EAAI63I,MAAQvoK,UAAU,IAC7CA,UAAU3Q,QAAU,IAAGqhC,EAAI83I,OAASxoK,UAAU,IAC9CyoK,EAAU7uI,GAEZlJ,EAAIg4I,WAAa9uI,EACRA,GAETnrC,EAAQk6K,QAAQj4I,EAAKkJ,GAGnBs9F,EAAYxmG,EAAIg4I,cAAah4I,EAAIg4I,eACjCxxC,EAAYxmG,EAAI63I,SAAQ73I,EAAI63I,MAAQ,GACpCrxC,EAAYxmG,EAAI83I,UAAS93I,EAAI83I,WAC7BtxC,EAAYxmG,EAAIk4I,iBAAgBl4I,EAAIk4I,kBACpCl4I,EAAI83I,SAAQ93I,EAAI23I,QAAUQ,GACvBC,EAAYp4I,EAAK79B,EAAK69B,EAAI63I,OAoCnC,QAASM,GAAiBxzI,EAAK0zI,GAC7B,GAAIrgG,GAAQ5nE,EAAQkoK,OAAOD,EAE3B,OAAIrgG,GACK,KAAY5nE,EAAQ0nK,OAAO9/F,GAAO,GAAK,IAAMrzC,EAC7C,KAAYv0B,EAAQ0nK,OAAO9/F,GAAO,GAAK,IAEvCrzC,EAKX,QAASizI,GAAejzI,EAAK0zI,GAC3B,MAAO1zI,GAIT,QAAS4zI,GAAYz6H,GACnB,GAAI3jC,KAMJ,OAJA2jC,GAAMpB,QAAQ,SAASpI,EAAK81G,GAC1BjwI,EAAKm6B,QAGAn6B,EAIT,QAASi+J,GAAYp4I,EAAK39B,EAAOm2K,GAG/B,GAAIx4I,EAAIk4I,eACJ71K,GACAs1F,EAAWt1F,EAAM+N,UAEjB/N,EAAM+N,UAAYrS,EAAQqS,WAExB/N,EAAM2Z,aAAe3Z,EAAM2Z,YAAYjd,YAAcsD,GAAQ,CACjE,GAAIkzB,GAAMlzB,EAAM+N,QAAQooK,EAAcx4I,EAItC,OAHKy4I,GAASljJ,KACZA,EAAM6iJ,EAAYp4I,EAAKzK,EAAKijJ,IAEvBjjJ,EAIT,GAAImjJ,GAAYC,EAAgB34I,EAAK39B,EACrC,IAAIq2K,EACF,MAAOA,EAIT,IAAI/wK,GAAO7I,OAAO6I,KAAKtF,GACnBu2K,EAAcL,EAAY5wK,EAQ9B,IANIq4B,EAAIg4I,aACNrwK,EAAO7I,OAAOsuC,oBAAoB/qC,IAKhCujD,EAAQvjD,KACJsF,EAAK0Q,QAAQ,YAAc,GAAK1Q,EAAK0Q,QAAQ,gBAAkB,GACrE,MAAOwgK,GAAYx2K,EAIrB,IAAoB,IAAhBsF,EAAKhJ,OAAc,CACrB,GAAIg5F,EAAWt1F,GAAQ,CACrB,GAAIpB,GAAOoB,EAAMpB,KAAO,KAAOoB,EAAMpB,KAAO,EAC5C,OAAO++B,GAAI23I,QAAQ,YAAc12K,EAAO,IAAK,WAE/C,GAAI63K,EAASz2K,GACX,MAAO29B,GAAI23I,QAAQp8H,OAAOx8C,UAAU67B,SAASz8B,KAAKkE,GAAQ,SAE5D,IAAImiI,EAAOniI,GACT,MAAO29B,GAAI23I,QAAQ9qH,KAAK9tD,UAAU67B,SAASz8B,KAAKkE,GAAQ,OAE1D,IAAIujD,EAAQvjD,GACV,MAAOw2K,GAAYx2K,GAIvB,GAAI61C,GAAO,GAAI4F,KAAei7H,GAAU,IAAK,IA6B7C,IA1BIrrJ,EAAQrrB,KACVy7C,KACAi7H,GAAU,IAAK,MAIbphF,EAAWt1F,KAEb61C,EAAO,cADC71C,EAAMpB,KAAO,KAAOoB,EAAMpB,KAAO,IACf,KAIxB63K,EAASz2K,KACX61C,EAAO,IAAMqD,OAAOx8C,UAAU67B,SAASz8B,KAAKkE,IAI1CmiI,EAAOniI,KACT61C,EAAO,IAAM2U,KAAK9tD,UAAUi6K,YAAY76K,KAAKkE,IAI3CujD,EAAQvjD,KACV61C,EAAO,IAAM2gI,EAAYx2K,IAGP,IAAhBsF,EAAKhJ,UAAkBm/C,GAAyB,GAAhBz7C,EAAM1D,QACxC,MAAOo6K,GAAO,GAAK7gI,EAAO6gI,EAAO,EAGnC,IAAIP,EAAe,EACjB,MAAIM,GAASz2K,GACJ29B,EAAI23I,QAAQp8H,OAAOx8C,UAAU67B,SAASz8B,KAAKkE,GAAQ,UAEnD29B,EAAI23I,QAAQ,WAAY,UAInC33I,GAAI03I,KAAK74K,KAAKwD,EAEd,IAAI2mI,EAWJ,OATEA,GADElrF,EACOm7H,EAAYj5I,EAAK39B,EAAOm2K,EAAcI,EAAajxK,GAEnDA,EAAKgnB,IAAI,SAASvsB,GACzB,MAAO82K,GAAel5I,EAAK39B,EAAOm2K,EAAcI,EAAax2K,EAAK07C,KAItE9d,EAAI03I,KAAKpoJ,MAEF6pJ,EAAqBnwC,EAAQ9wF,EAAM6gI,GAI5C,QAASJ,GAAgB34I,EAAK39B,GAC5B,GAAImkI,EAAYnkI,GACd,MAAO29B,GAAI23I,QAAQ,YAAa,YAClC,IAAIc,EAASp2K,GAAQ,CACnB,GAAI+2K,GAAS,IAAOt4J,KAAKC,UAAU1e,GAAOqnB,QAAQ,SAAU,IAClBA,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAAO,GACjE,OAAOsW,GAAI23I,QAAQyB,EAAQ,UAE7B,MAAIC,GAASh3K,GACJ29B,EAAI23I,QAAQ,GAAKt1K,EAAO,UAC7B01K,EAAU11K,GACL29B,EAAI23I,QAAQ,GAAKt1K,EAAO,WAE7Bi3K,EAAOj3K,GACF29B,EAAI23I,QAAQ,OAAQ,eAI/B,QAASkB,GAAYx2K,GACnB,MAAO,IAAM1C,MAAMZ,UAAU67B,SAASz8B,KAAKkE,GAAS,IAItD,QAAS42K,GAAYj5I,EAAK39B,EAAOm2K,EAAcI,EAAajxK,GAE1D,IAAK,GADDqhI,MACK/qI,EAAI,EAAGC,EAAImE,EAAM1D,OAAQV,EAAIC,IAAKD,EACrCe,EAAeqD,EAAO+hC,OAAOnmC,IAC/B+qI,EAAOnqI,KAAKq6K,EAAel5I,EAAK39B,EAAOm2K,EAAcI,EACjDx0I,OAAOnmC,QAEX+qI,EAAOnqI,KAAK,GAShB,OANA8I,GAAK+0C,QAAQ,SAASt6C,GACfA,EAAI6kB,MAAM,UACb+hH,EAAOnqI,KAAKq6K,EAAel5I,EAAK39B,EAAOm2K,EAAcI,EACjDx2K,SAGD4mI,EAIT,QAASkwC,GAAel5I,EAAK39B,EAAOm2K,EAAcI,EAAax2K,EAAK07C,GAClE,GAAI78C,GAAM0jC,EAAKoJ,CAsCf,IArCAA,EAAOjvC,OAAOouC,yBAAyB7qC,EAAOD,KAAUC,MAAOA,EAAMD,IACjE2rC,EAAKxsC,IAELojC,EADEoJ,EAAKN,IACDzN,EAAI23I,QAAQ,kBAAmB,WAE/B33I,EAAI23I,QAAQ,WAAY,WAG5B5pI,EAAKN,MACP9I,EAAM3E,EAAI23I,QAAQ,WAAY,YAG7B34K,EAAe45K,EAAax2K,KAC/BnB,EAAO,IAAMmB,EAAM,KAEhBuiC,IACC3E,EAAI03I,KAAKr/J,QAAQ01B,EAAK1rC,OAAS,GAE/BsiC,EADE20I,EAAOd,GACHJ,EAAYp4I,EAAK+N,EAAK1rC,MAAO,MAE7B+1K,EAAYp4I,EAAK+N,EAAK1rC,MAAOm2K,EAAe,GAEhD7zI,EAAItsB,QAAQ,OAAS,IAErBssB,EADEmZ,EACInZ,EAAItqB,MAAM,MAAMsU,IAAI,SAAS0T,GACjC,MAAO,KAAOA,IACbzT,KAAK,MAAMiW,OAAO,GAEf,KAAOF,EAAItqB,MAAM,MAAMsU,IAAI,SAAS0T,GACxC,MAAO,MAAQA,IACdzT,KAAK,QAIZ+V,EAAM3E,EAAI23I,QAAQ,aAAc,YAGhCnxC,EAAYvlI,GAAO,CACrB,GAAI68C,GAAS17C,EAAI6kB,MAAM,SACrB,MAAO0d,EAET1jC,GAAO6f,KAAKC,UAAU,GAAK3e,GACvBnB,EAAKgmB,MAAM,iCACbhmB,EAAOA,EAAK4jC,OAAO,EAAG5jC,EAAKtC,OAAS,GACpCsC,EAAO++B,EAAI23I,QAAQ12K,EAAM,UAEzBA,EAAOA,EAAKyoB,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,KAChCzoB,EAAO++B,EAAI23I,QAAQ12K,EAAM,WAI7B,MAAOA,GAAO,KAAO0jC,EAIvB,QAASw0I,GAAqBnwC,EAAQ9wF,EAAM6gI,GAC1C,GAAIQ,GAAc,CAOlB,OANavwC,GAAOphI,OAAO,SAASuvB,EAAMiyI,GAGxC,MAFAmQ,KACInQ,EAAI/wJ,QAAQ,OAAS,GAAGkhK,IACrBpiJ,EAAOiyI,EAAI1/I,QAAQ,kBAAmB,IAAI/qB,OAAS,GACzD,GAEU,GACJo6K,EAAO,IACG,KAAT7gI,EAAc,GAAKA,EAAO,OAC3B,IACA8wF,EAAOp6G,KAAK,SACZ,IACAmqJ,EAAO,GAGTA,EAAO,GAAK7gI,EAAO,IAAM8wF,EAAOp6G,KAAK,MAAQ,IAAMmqJ,EAAO,GAMnE,QAASrrJ,GAAQ8rJ,GACf,MAAO7oK,OAAM+c,QAAQ8rJ,GAIvB,QAASzB,GAAU7wJ,GACjB,MAAsB,iBAARA,GAIhB,QAASoyJ,GAAOpyJ,GACd,MAAe,QAARA,EAIT,QAASuyJ,GAAkBvyJ,GACzB,MAAc,OAAPA,EAIT,QAASmyJ,GAASnyJ,GAChB,MAAsB,gBAARA,GAIhB,QAASuxJ,GAASvxJ,GAChB,MAAsB,gBAARA,GAIhB,QAAS6iI,GAAS7iI,GAChB,MAAsB,gBAARA,GAIhB,QAASs/G,GAAYt/G,GACnB,WAAO,KAAAA,EAIT,QAAS4xJ,GAASY,GAChB,MAAOj7I,GAASi7I,IAA8B,oBAAvBhrE,EAAegrE,GAIxC,QAASj7I,GAASvX,GAChB,MAAsB,gBAARA,IAA4B,OAARA,EAIpC,QAASs9G,GAAOxjI,GACd,MAAOy9B,GAASz9B,IAA4B,kBAAtB0tG,EAAe1tG,GAIvC,QAAS4kD,GAAQzmD,GACf,MAAOs/B,GAASt/B,KACW,mBAAtBuvG,EAAevvG,IAA2BA,YAAaQ,QAI9D,QAASg4F,GAAWzwE,GAClB,MAAsB,kBAARA,GAIhB,QAAS69B,GAAY79B,GACnB,MAAe,QAARA,GACe,iBAARA,IACQ,gBAARA,IACQ,gBAARA,IACQ,gBAARA,aACAA,EAMhB,QAASwnF,GAAevtG,GACtB,MAAOrC,QAAOC,UAAU67B,SAASz8B,KAAKgD,GAIxC,QAASw4K,GAAIn4K,GACX,MAAOA,GAAI,GAAK,IAAMA,EAAEo5B,SAAS,IAAMp5B,EAAEo5B,SAAS,IAQpD,QAASg/I,KACP,GAAI54K,GAAI,GAAI6rD,MACRr9C,GAAQmqK,EAAI34K,EAAE64K,YACNF,EAAI34K,EAAE84K,cACNH,EAAI34K,EAAE+4K,eAAenrJ,KAAK,IACtC,QAAQ5tB,EAAE22I,UAAWnJ,EAAOxtI,EAAE02I,YAAaloI,GAAMof,KAAK,KAqCxD,QAAS5vB,GAAemD,EAAKorC,GAC3B,MAAOzuC,QAAOC,UAAUC,eAAeb,KAAKgE,EAAKorC,GA6DnD,QAASysI,GAAsBx1I,EAAQnG,GAKrC,IAAKmG,EAAQ,CACX,GAAIkQ,GAAY,GAAI/0C,OAAM,0CAC1B+0C,GAAUlQ,OAASA,EACnBA,EAASkQ,EAEX,MAAOrW,GAAGmG,GAGZ,QAASy1I,GAAYC,GAQnB,QAASC,KAEP,IAAK,GADD3wJ,MACKvrB,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IACpCurB,EAAK3qB,KAAKyQ,UAAUrR,GAGtB,IAAIm8K,GAAU5wJ,EAAK8F,KACnB,IAAuB,kBAAZ8qJ,GACT,KAAM,IAAIv/I,WAAU,6CAEtB,IAAIhd,GAAOlB,KACP0hB,EAAK,WACP,MAAO+7I,GAAQ/qK,MAAMwO,EAAMvO,WAI7B4qK,GAAS7qK,MAAMsN,KAAM6M,GAClB2lB,KAAK,SAAS5Z,GAAOoC,EAAQ6nB,SAASnhB,EAAI,KAAM9I,IAC3C,SAAS8kJ,GAAO1iJ,EAAQ6nB,SAASw6H,EAAuBK,EAAKh8I,KAzBvE,GAAwB,kBAAb67I,GACT,KAAM,IAAIr/I,WAAU,mDA8BtB,OAHA/7B,QAAO4hE,eAAey5G,EAAer7K,OAAOuuC,eAAe6sI,IAC3Dp7K,OAAO2iE,iBAAiB04G,EACAG,EAA0BJ,IAC3CC,EAvqBT,GAAIG,GAA4Bx7K,OAAOw7K,2BACrC,SAAmCn4K,GAGjC,IAAK,GAFDwF,GAAO7I,OAAO6I,KAAKxF,GACnBo4K,KACKt8K,EAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAC/Bs8K,EAAY5yK,EAAK1J,IAAMa,OAAOouC,yBAAyB/qC,EAAKwF,EAAK1J,GAEnE,OAAOs8K,IAGPC,EAAe,UACnBz8K,GAAQkS,OAAS,SAASc,GACxB,IAAK0nK,EAAS1nK,GAAI,CAEhB,IAAK,GADD0pK,MACKx8K,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IACpCw8K,EAAQ57K,KAAKuR,EAAQd,UAAUrR,IAEjC,OAAOw8K,GAAQ7rJ,KAAK,KAsBtB,IAAK,GAnBD3wB,GAAI,EACJurB,EAAOla,UACPkgC,EAAMhmB,EAAK7qB,OACXgmC,EAAMP,OAAOrzB,GAAG2Y,QAAQ8wJ,EAAc,SAASr3J,GACjD,GAAU,OAANA,EAAY,MAAO,GACvB,IAAIllB,GAAKuxC,EAAK,MAAOrsB,EACrB,QAAQA,GACN,IAAK,KAAM,MAAOihB,QAAO5a,EAAKvrB,KAC9B,KAAK,KAAM,MAAO+oD,QAAOx9B,EAAKvrB,KAC9B,KAAK,KACH,IACE,MAAO6iB,MAAKC,UAAUyI,EAAKvrB,MAC3B,MAAO46B,GACP,MAAO,aAEX,QACE,MAAO1V,MAGJA,EAAIqG,EAAKvrB,GAAIA,EAAIuxC,EAAKrsB,EAAIqG,IAAOvrB,GACpCq7K,EAAOn2J,KAAOsb,EAAStb,GACzBwhB,GAAO,IAAMxhB,EAEbwhB,GAAO,IAAMv0B,EAAQ+S,EAGzB,OAAOwhB,IAOT5mC,EAAQmqI,UAAY,SAASvxG,EAAIgM,GAa/B,QAASC,KACP,IAAK8wC,EAAQ,CACX,GAAI/7C,EAAQ+iJ,iBACV,KAAM,IAAI/6K,OAAMgjC,EACPhL,GAAQgjJ,iBACjB74K,EAAQgO,MAAM6yB,GAEd7gC,EAAQC,MAAM4gC,GAEhB+wC,KAEF,MAAO/8C,GAAGtnB,MAAMsN,KAAMrN,WAvBxB,YAAWqoB,QAA2BA,EAAQijJ,cAC5C,MAAOjkJ,EAIT,aAAWgB,EACT,MAAO,YACL,MAAO55B,GAAQmqI,UAAUvxG,EAAIgM,GAAKtzB,MAAMsN,KAAMrN,WAIlD,IAAIokE,KAeJ,OAAO9wC,GAIT,IACIi4I,GADAC,IAEJ/8K,GAAQg9K,SAAW,SAASttI,GAI1B,GAHI+4F,EAAYq0C,KACdA,EAAe,gCAAYG,YAAc,IAC3CvtI,EAAMA,EAAI4jB,eACLypH,EAAOrtI,GACV,GAAI,GAAI8N,QAAO,MAAQ9N,EAAM,MAAO,KAAKlL,KAAKs4I,GAAe,CAC3D,GAAII,GAAMtjJ,EAAQsjJ,GAClBH,GAAOrtI,GAAO,WACZ,GAAI9K,GAAM5kC,EAAQkS,OAAOZ,MAAMtR,EAASuR,UACxCxN,GAAQC,MAAM,YAAa0rC,EAAKwtI,EAAKt4I,QAGvCm4I,GAAOrtI,GAAO,YAGlB,OAAOqtI,GAAOrtI,IAoChB1vC,EAAQqS,QAAUA,EAIlBA,EAAQ0nK,QACN,MAAU,EAAG,IACb,QAAY,EAAG,IACf,WAAe,EAAG,IAClB,SAAa,EAAG,IAChB,OAAW,GAAI,IACf,MAAU,GAAI,IACd,OAAW,GAAI,IACf,MAAU,GAAI,IACd,MAAU,GAAI,IACd,OAAW,GAAI,IACf,SAAa,GAAI,IACjB,KAAS,GAAI,IACb,QAAY,GAAI,KAIlB1nK,EAAQkoK,QACN,QAAW,OACX,OAAU,SACV,QAAW,SACX,UAAa,OACb,KAAQ,OACR,OAAU,QACV,KAAQ,UAER,OAAU,OAkRZv6K,EAAQ2vB,QAAUA,EAKlB3vB,EAAQg6K,UAAYA,EAKpBh6K,EAAQu7K,OAASA,EAKjBv7K,EAAQ07K,kBAAoBA,EAK5B17K,EAAQs7K,SAAWA,EAKnBt7K,EAAQ06K,SAAWA,EAKnB16K,EAAQgsJ,SAAWA,EAKnBhsJ,EAAQyoI,YAAcA,EAKtBzoI,EAAQ+6K,SAAWA,EAKnB/6K,EAAQ0gC,SAAWA,EAKnB1gC,EAAQymI,OAASA,EAMjBzmI,EAAQ6nD,QAAUA,EAKlB7nD,EAAQ45F,WAAaA,EAUrB55F,EAAQgnD,YAAcA,EAEtBhnD,EAAQuhK,SAAW,EAAQ,IAY3B,IAAI9wB,IAAU,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACxD,MAAO,MAAO,MAa5BzwI,GAAQoR,IAAM,WACZrN,EAAQqN,IAAI,UAAWyqK,IAAa77K,EAAQkS,OAAOZ,MAAMtR,EAASuR,aAiBpEvR,EAAQ0rC,SAAW,EAAQ,KAE3B1rC,EAAQk6K,QAAU,SAASz9J,EAAQmoE,GAEjC,IAAKA,IAAQlkD,EAASkkD,GAAM,MAAOnoE,EAInC,KAFA,GAAI7S,GAAO7I,OAAO6I,KAAKg7E,GACnB1kF,EAAI0J,EAAKhJ,OACNV,KACLuc,EAAO7S,EAAK1J,IAAM0kF,EAAIh7E,EAAK1J,GAE7B,OAAOuc,GAOT,IAAI0gK,GAA6C,mBAAXz0H,QAAyBA,OAAO,+BAEtE1oD,GAAQ49C,UAAY,SAAmBu+H,GAerC,QAASvjJ,KAQP,IAAK,GAPDwkJ,GAAgBC,EAChBr7K,EAAU,GAAIF,SAAQ,SAAUC,EAASE,GAC3Cm7K,EAAiBr7K,EACjBs7K,EAAgBp7K,IAGdwpB,KACKvrB,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IACpCurB,EAAK3qB,KAAKyQ,UAAUrR,GAEtBurB,GAAK3qB,KAAK,SAAUgD,EAAKQ,GACnBR,EACFu5K,EAAcv5K,GAEds5K,EAAe94K,IAInB,KACE63K,EAAS7qK,MAAMsN,KAAM6M,GACrB,MAAO3nB,GACPu5K,EAAcv5K,GAGhB,MAAO9B,GAvCT,GAAwB,kBAAbm6K,GACT,KAAM,IAAIr/I,WAAU,mDAEtB,IAAIqgJ,GAA4BhB,EAASgB,GAA2B,CAClE,GAAIvkJ,GAAKujJ,EAASgB,EAClB,IAAkB,kBAAPvkJ,GACT,KAAM,IAAIkE,WAAU,gEAKtB,OAHA/7B,QAAOsC,eAAeu1B,EAAIukJ,GACxB74K,MAAOs0B,EAAIr1B,YAAWA,EAAQgB,UAASA,EAAQjB,cAAaA,IAEvDs1B,EAoCT,MALA73B,QAAO4hE,eAAe/pC,EAAI73B,OAAOuuC,eAAe6sI,IAE5CgB,GAA0Bp8K,OAAOsC,eAAeu1B,EAAIukJ,GACtD74K,MAAOs0B,EAAIr1B,YAAWA,EAAQgB,UAASA,EAAQjB,cAAaA,IAEvDvC,OAAO2iE,iBACZ9qC,EACA2jJ,EAA0BJ,KAI9Bn8K,EAAQ49C,UAAU0/H,OAASH,EAiD3Bn9K,EAAQk8K,YAAcA,IzMyxmCO97K,KAAKJ,EAASH,EAAoB,IAAKA,EAAoB,KAIlF,SAAUI,EAAQD,EAASH,GAEjC,Y0Mr8nCA,SAASu1G,GAAe32F,EAAOC,EAAS6+J,GACtC3+J,KAAKH,MAAQA,EACbG,KAAKF,QAAUA,EACfE,KAAK4+J,KAAO38C,EAGZjiH,KAAK2+J,QAAUA,GAAWE,EAlB5B,GAAIn4G,GAAiB,EAAQ,IAEzBm4G,EAAuB,EAAQ,KAG/B58C,GADoB,EAAQ,KACd,EAAQ,KACV,GAAQ,GACV,EAAQ,GActBzrB,EAAep0G,UAAU08K,oBA2BzBtoE,EAAep0G,UAAU+jB,SAAW,SAAU44J,EAActoI,GAChC,gBAAjBsoI,IAAqD,kBAAjBA,IAA+C,MAAhBA,GAA4Mr4G,EAAe,MACvS1mD,KAAK2+J,QAAQK,gBAAgBh/J,KAAM++J,GAC/BtoI,GACFz2B,KAAK2+J,QAAQM,gBAAgBj/J,KAAMy2B,EAAU,aAkBjD+/D,EAAep0G,UAAUijB,YAAc,SAAUoxB,GAC/Cz2B,KAAK2+J,QAAQO,mBAAmBl/J,MAC5By2B,GACFz2B,KAAK2+J,QAAQM,gBAAgBj/J,KAAMy2B,EAAU,gBA+BjDp1C,EAAOD,QAAUo1G,G1Mk+nCX,SAAUn1G,EAAQD,EAASH,GAEjC,Y2M5koCA,IAYI49K,IAZU,EAAQ,IAqBpBM,UAAW,SAAUC,GACnB,OAAM,GAWRH,gBAAiB,SAAUG,EAAgB3oI,KAe3CyoI,mBAAoB,SAAUE,KAe9BC,oBAAqB,SAAUD,EAAgBE,KAc/CN,gBAAiB,SAAUI,EAAgBL,MAK7C19K,GAAOD,QAAUy9K,G3M6loCX,SAAUx9K,EAAQD,EAASH,GAEjC,Y4M7poCA,SAASs+K,KACP,GAAKC,EAIL,IAAK,GAAIC,KAAcC,GAAgB,CACrC,GAAIC,GAAeD,EAAeD,GAC9BG,EAAcJ,EAAiB9jK,QAAQ+jK,EAE3C,IADEG,GAAe,GAAgLl5G,EAAe,KAAM+4G,IAClNv7C,EAAoBuB,QAAQm6C,GAAhC,CAGCD,EAAap6C,eAA0L7+D,EAAe,KAAM+4G,GAC7Nv7C,EAAoBuB,QAAQm6C,GAAeD,CAC3C,IAAIE,GAAkBF,EAAaG,UACnC,KAAK,GAAI5jF,KAAa2jF,GACnBE,EAAsBF,EAAgB3jF,GAAYyjF,EAAczjF,IAAqKx1B,EAAe,KAAMw1B,EAAWujF,KAa5Q,QAASM,GAAsB7mF,EAAgBymF,EAAczjF,GACzDgoC,EAAoB87C,yBAAyB39K,eAAe65F,IAA2Kx1B,EAAe,KAAMw1B,GAC9PgoC,EAAoB87C,yBAAyB9jF,GAAahD,CAE1D,IAAImpC,GAA0BnpC,EAAempC,uBAC7C,IAAIA,EAAyB,CAC3B,IAAK,GAAI49C,KAAa59C,GACpB,GAAIA,EAAwBhgI,eAAe49K,GAAY,CACrD,GAAIC,GAAyB79C,EAAwB49C,EACrDE,GAAwBD,EAAwBP,EAAczjF,GAGlE,OAAM,EACD,QAAIhD,EAAekpC,mBACxB+9C,EAAwBjnF,EAAekpC,iBAAkBu9C,EAAczjF,OAc3E,QAASikF,GAAwB/9C,EAAkBu9C,EAAczjF,GAC7DgoC,EAAoBe,wBAAwB7C,IAAgM17D,EAAe,MAAO07D,GACpQ8B,EAAoBe,wBAAwB7C,GAAoBu9C,EAChEz7C,EAAoBk3B,6BAA6Bh5B,GAAoBu9C,EAAaG,WAAW5jF,GAAWrqE,aA/E1G,GAAI60C,GAAiB,EAAQ,GAOzB84G,GALY,EAAQ,GAKD,MAKnBE,KAoFAx7C,GAKFuB,WAKAu6C,4BAKA/6C,2BAKAm2B,gCAQAglB,0BAAwE,KAYxEv7C,uBAAwB,SAAUw7C,GAC9Bb,GAAqN94G,EAAe,OAEtO84G,EAAmBxrK,MAAM5R,UAAUyR,MAAMrS,KAAK6+K,GAC9Cd,KAaFz6C,yBAA0B,SAAUw7C,GAClC,GAAIC,KACJ,KAAK,GAAId,KAAca,GACrB,GAAKA,EAAuBj+K,eAAeo9K,GAA3C,CAGA,GAAIE,GAAeW,EAAuBb,EACrCC,GAAer9K,eAAeo9K,IAAeC,EAAeD,KAAgBE,IAC7ED,EAAeD,IAAkL/4G,EAAe,MAAO+4G,GACzNC,EAAeD,GAAcE,EAC7BY,MAGAA,GACFhB,KAWJiB,wBAAyB,SAAUt1I,GACjC,GAAIguD,GAAiBhuD,EAAMguD,cAC3B,IAAIA,EAAekpC,iBACjB,MAAO8B,GAAoBe,wBAAwB/rC,EAAekpC,mBAAqB,IAEzF,aAAIlpC,EAAempC,wBAAuC,CAGxD,GAAIA,GAA0BnpC,EAAempC,uBAE7C,KAAK,GAAIG,KAASH,GAChB,GAAKA,EAAwBhgI,eAAemgI,GAA5C,CAGA,GAAIm9C,GAAez7C,EAAoBe,wBAAwB5C,EAAwBG,GACvF,IAAIm9C,EACF,MAAOA,IAIb,MAAO,OAOTc,mBAAoB,WAClBjB,EAAmB,IACnB,KAAK,GAAIC,KAAcC,GACjBA,EAAer9K,eAAeo9K,UACzBC,GAAeD,EAG1Bv7C,GAAoBuB,QAAQzjI,OAAS,CAErC,IAAIg+K,GAA2B97C,EAAoB87C,wBACnD,KAAK,GAAI9jF,KAAa8jF,GAChBA,EAAyB39K,eAAe65F,UACnC8jF,GAAyB9jF,EAIpC,IAAI+oC,GAA0Bf,EAAoBe,uBAClD,KAAK,GAAI7C,KAAoB6C,GACvBA,EAAwB5iI,eAAe+/H,UAClC6C,GAAwB7C,IAgBvC/gI,GAAOD,QAAU8iI,G5MksoCX,SAAU7iI,EAAQD,EAASH,GAEjC,Y6Mr5oCA,SAASy/K,GAASl7C,GAChB,MAAwB,eAAjBA,GAAkD,gBAAjBA,GAAmD,mBAAjBA,EAG5E,QAASm7C,GAAUn7C,GACjB,MAAwB,iBAAjBA,GAAoD,iBAAjBA,EAE5C,QAASo7C,GAAWp7C,GAClB,MAAwB,iBAAjBA,GAAoD,kBAAjBA,EA0B5C,QAASq7C,GAAgB31I,EAAOq5F,EAAWpiH,EAAUiiD,GACnD,GAAI1gE,GAAOwnC,EAAMxnC,MAAQ,eACzBwnC,GAAM6uD,cAAgB8oC,EAAiB77D,oBAAoB5C,GACvDmgE,EACFJ,EAAgB28C,+BAA+Bp9K,EAAMye,EAAU+oB,GAE/Di5F,EAAgB48C,sBAAsBr9K,EAAMye,EAAU+oB,GAExDA,EAAM6uD,cAAgB,KAMxB,QAASyqC,GAAyBt5F,EAAOq5F,GACvC,GAAIy8C,GAAoB91I,EAAMu3F,mBAC1Bw+C,EAAoB/1I,EAAMy3F,kBAI9B,IAAI3uH,MAAM+c,QAAQiwJ,GAChB,IAAK,GAAI1/K,GAAI,EAAGA,EAAI0/K,EAAkBh/K,SAChCkpC,EAAM0uD,uBADkCt4F,IAK5Cu/K,EAAgB31I,EAAOq5F,EAAWy8C,EAAkB1/K,GAAI2/K,EAAkB3/K,QAEnE0/K,IACTH,EAAgB31I,EAAOq5F,EAAWy8C,EAAmBC,EAEvD/1I,GAAMu3F,mBAAqB,KAC3Bv3F,EAAMy3F,mBAAqB,KAU7B,QAASu+C,GAAuCh2I,GAC9C,GAAI81I,GAAoB91I,EAAMu3F,mBAC1Bw+C,EAAoB/1I,EAAMy3F,kBAI9B,IAAI3uH,MAAM+c,QAAQiwJ,IAChB,IAAK,GAAI1/K,GAAI,EAAGA,EAAI0/K,EAAkBh/K,SAChCkpC,EAAM0uD,uBADkCt4F,IAK5C,GAAI0/K,EAAkB1/K,GAAG4pC,EAAO+1I,EAAkB3/K,IAChD,MAAO2/K,GAAkB3/K,OAGxB,IAAI0/K,GACLA,EAAkB91I,EAAO+1I,GAC3B,MAAOA,EAGX,OAAO,MAMT,QAASE,GAAmCj2I,GAC1C,GAAItS,GAAMsoJ,EAAuCh2I,EAGjD,OAFAA,GAAMy3F,mBAAqB,KAC3Bz3F,EAAMu3F,mBAAqB,KACpB7pG,EAYT,QAASwoJ,GAAsBl2I,GAI7B,GAAIm2I,GAAmBn2I,EAAMu3F,mBACzB6+C,EAAmBp2I,EAAMy3F,kBAC3B3uH,OAAM+c,QAAQswJ,IAA+H36G,EAAe,OAC9Jx7B,EAAM6uD,cAAgBsnF,EAAmBx+C,EAAiB77D,oBAAoBs6G,GAAoB,IAClG,IAAIx5C,GAAMu5C,EAAmBA,EAAiBn2I,GAAS,IAIvD,OAHAA,GAAM6uD,cAAgB,KACtB7uD,EAAMu3F,mBAAqB,KAC3Bv3F,EAAMy3F,mBAAqB,KACpBmF,EAOT,QAASy5C,GAAcr2I,GACrB,QAASA,EAAMu3F,mBA3KjB,GAeI++C,GACAC,EAhBA/6G,EAAiB,EAAQ,GAEzBy9D,EAAkB,EAAQ,KAe1BluC,GAbY,EAAQ,GACV,EAAQ,IAapByrF,oBAAqB,SAAUC,GAC7BH,EAAgBG,GAKlBC,oBAAqB,SAAUD,GAC7BF,EAAgBE,KAwJhB9+C,GACF69C,SAAUA,EACVC,UAAWA,EACXC,WAAYA,EAEZQ,sBAAuBA,EACvB58C,yBAA0BA,EAC1B28C,mCAAoCA,EACpCI,cAAeA,EAEfx6G,oBAAqB,SAAU95B,GAC7B,MAAOu0I,GAAcz6G,oBAAoB95B,IAE3C+5B,oBAAqB,SAAU/5B,GAC7B,MAAOu0I,GAAcx6G,oBAAoB/5B,IAE3C40I,WAAY,SAAUl3J,EAAG5C,GACvB,MAAO05J,GAAcI,WAAWl3J,EAAG5C,IAErC+5J,wBAAyB,SAAUn3J,EAAG5C,GACpC,MAAO05J,GAAcK,wBAAwBn3J,EAAG5C,IAElDk7G,kBAAmB,SAAU7+D,GAC3B,MAAOq9G,GAAcx+C,kBAAkB7+D,IAEzC0+D,iBAAkB,SAAUxhH,EAAQ0Y,EAAIzP,GACtC,MAAOk3J,GAAc3+C,iBAAiBxhH,EAAQ0Y,EAAIzP,IAEpDo5G,mBAAoB,SAAU1yG,EAAMk4B,EAAInvB,EAAI+nJ,EAASC,GACnD,MAAOP,GAAc99C,mBAAmB1yG,EAAMk4B,EAAInvB,EAAI+nJ,EAASC,IAGjE/rF,UAAWA,EAGb50F,GAAOD,QAAUyhI,G7Ms8oCX,SAAUxhI,EAAQD,EAASH,GAEjC,Y8MjppCA,SAAS8/K,GAAsBz8K,EAAM0mB,EAAML,GACzC,IACEK,EAAKL,GACL,MAAOnE,GACa,OAAhBy7J,IACFA,EAAcz7J,IAfpB,GAAIy7J,GAAc,KAoBd99C,GACF48C,sBAAuBA,EAMvBD,+BAAgCC,EAMhCh7C,mBAAoB,WAClB,GAAIk8C,EAAa,CACf,GAAI78K,GAAQ68K,CAEZ,MADAA,GAAc,KACR78K,IAyBZ/D,GAAOD,QAAU+iI,G9M6qpCX,SAAU9iI,EAAQD,EAASH,GAEjC,Y+MtupCA,SAASmlI,GAAehtC,GACtB,GAAI93E,GAAS83E,EAAY93E,QAAU83E,EAAYw7D,YAAclzJ,MAS7D,OANI4f,GAAO4gK,0BACT5gK,EAASA,EAAO4gK,yBAKS,IAApB5gK,EAAO6jD,SAAiB7jD,EAAOulD,WAAavlD,EAGrDjgB,EAAOD,QAAUglI,G/M+vpCX,SAAU/kI,EAAQD,EAASH,GAEjC;;;;;;;;;;;;;;AgN9vpCA,QAASq1J,GAAiB6rB,EAAiBC,GACzC,IAAKx+F,EAAqBxsD,WAAagrJ,KAAa,oBAAsB7+K,WACxE,OAAM,CAGR,IAAI24F,GAAY,KAAOimF,EACnBE,EAAcnmF,IAAa34F,SAE/B,KAAK8+K,EAAa,CAChB,GAAIvhK,GAAUvd,SAASE,cAAc,MACrCqd,GAAQhd,aAAao4F,EAAW,WAChCmmF,EAA4C,kBAAvBvhK,GAAQo7E,GAQ/B,OALKmmF,GAAeC,GAAqC,UAApBH,IAEnCE,EAAc9+K,SAASg/K,eAAeC,WAAW,eAAgB,QAG5DH,EA3CT,GAEIC,GAFA1+F,EAAuB,EAAQ,GAG/BA,GAAqBxsD,YACvBkrJ,EAAgB/+K,SAASg/K,gBAAkBh/K,SAASg/K,eAAeC,iBAGnEj/K,SAASg/K,eAAeC,WAAW,GAAI,KAuCzCnhL,EAAOD,QAAUk1J,GhNuypCX,SAAUj1J,EAAQD,EAASH,GAEjC,YiNx0pCA,SAASwhL,GAAoBC,GAC3B,GAAIC,GAAiB3iK,KACjBo5E,EAAcupF,EAAevpF,WACjC,IAAIA,EAAYm7D,iBACd,MAAOn7D,GAAYm7D,iBAAiBmuB,EAEtC,IAAIE,GAAUC,EAAkBH,EAChC,SAAOE,KAAYxpF,EAAYwpF,GAGjC,QAAS/uB,GAAsBz6D,GAC7B,MAAOqpF,GArBT,GAAII,IACF,IAAO,SACP,QAAW,UACX,KAAQ,UACR,MAAS,WAoBXxhL,GAAOD,QAAUyyJ,GjNw2pCX,SAAUxyJ,EAAQD,EAASH,GAEjC,YkN93pCA,SAAS6hL,GAAaj8G,EAAY55B,GAMhC,MAHIj5B,OAAM+c,QAAQkc,KAChBA,EAAOA,EAAK,IAEPA,EAAOA,EAAKw5B,YAAcI,EAAWT,WAkB9C,QAAS28G,GAAsBl8G,EAAYy1C,EAAWQ,GACpDJ,EAAYf,iBAAiB90C,EAAYy1C,EAAWQ,GAGtD,QAASkmE,GAAUn8G,EAAYV,EAAW22C,GACpC9oG,MAAM+c,QAAQo1C,GAChB88G,EAAkBp8G,EAAYV,EAAU,GAAIA,EAAU,GAAI22C,GAE1DomE,EAAcr8G,EAAYV,EAAW22C,GAIzC,QAAS78B,GAAYpZ,EAAYV,GAC/B,GAAInyD,MAAM+c,QAAQo1C,GAAY,CAC5B,GAAIg9G,GAAiBh9G,EAAU,EAC/BA,GAAYA,EAAU,GACtBi9G,EAAoBv8G,EAAYV,EAAWg9G,GAC3Ct8G,EAAWoZ,YAAYkjG,GAEzBt8G,EAAWoZ,YAAY9Z,GAGzB,QAAS88G,GAAkBp8G,EAAYw8G,EAAgBF,EAAgBrmE,GAErE,IADA,GAAI7vE,GAAOo2I,IACE,CACX,GAAIC,GAAWr2I,EAAKw5B,WAEpB,IADAy8G,EAAcr8G,EAAY55B,EAAM6vE,GAC5B7vE,IAASk2I,EACX,KAEFl2I,GAAOq2I,GAIX,QAASF,GAAoBv8G,EAAY08G,EAAWJ,GAClD,OAAa,CACX,GAAIl2I,GAAOs2I,EAAU98G,WACrB,IAAIx5B,IAASk2I,EAEX,KAEAt8G,GAAWoZ,YAAYhzC,IAK7B,QAASu2I,GAAqBH,EAAgBF,EAAgBM,GAC5D,GAAI58G,GAAaw8G,EAAex8G,WAC5B68G,EAAmBL,EAAe58G,WAClCi9G,KAAqBP,EAGnBM,GACFP,EAAcr8G,EAAYtjE,SAASu8E,eAAe2jG,GAAaC,GAG7DD,GAGF1nE,EAAe2nE,EAAkBD,GACjCL,EAAoBv8G,EAAY68G,EAAkBP,IAElDC,EAAoBv8G,EAAYw8G,EAAgBF,GA/FtD,GAAIzmE,GAAc,EAAQ,IACtBinE,EAAS,EAAQ,KAIjB/mE,GAHwB,EAAQ,IACT,EAAQ,IAEM,EAAQ,MAC7Cf,EAAe,EAAQ,KACvBE,EAAiB,EAAQ,KAmBzBmnE,EAAgBtmE,EAAmC,SAAU/1C,EAAYV,EAAW22C,GAItFj2C,EAAWm2C,aAAa72C,EAAW22C,KA8EjC8mE,EAAmCD,EAAOC,iCA0B1CC,GAEFD,iCAAkCA,EAElCJ,qBAAsBA,EAStBM,eAAgB,SAAUj9G,EAAYk9G,GAKpC,IAAK,GAAIh2D,GAAI,EAAGA,EAAIg2D,EAAQ/hL,OAAQ+rH,IAAK,CACvC,GAAIi2D,GAASD,EAAQh2D,EACrB,QAAQi2D,EAAOtgL,MACb,IAAK,gBACHq/K,EAAsBl8G,EAAYm9G,EAAOzxH,QAASuwH,EAAaj8G,EAAYm9G,EAAOC,WAQlF,MACF,KAAK,gBACHjB,EAAUn8G,EAAYm9G,EAAOpqI,SAAUkpI,EAAaj8G,EAAYm9G,EAAOC,WAQvE,MACF,KAAK,aACHpoE,EAAah1C,EAAYm9G,EAAOzxH,QAQhC,MACF,KAAK,eACHwpD,EAAel1C,EAAYm9G,EAAOzxH,QAQlC,MACF,KAAK,cACH0tB,EAAYpZ,EAAYm9G,EAAOpqI,aAezCv4C,GAAOD,QAAUyiL,GlNw5pCX,SAAUxiL,EAAQD,EAASH,GAEjC,YmN7mqCA,IAAI07G,IACFf,KAAM,+BACNsoE,OAAQ,qCACR7uB,IAAK,6BAGPh0J,GAAOD,QAAUu7G,GnN8nqCX,SAAUt7G,EAAQD,EAASH,GAEjC,YoNhoqCA,IAAI27G,GAAqC,SAAU5xF,GACjD,MAAqB,mBAAVm5J,QAAyBA,MAAMC,wBACjC,SAAUC,EAAMC,EAAMC,EAAMC,GACjCL,MAAMC,wBAAwB,WAC5B,MAAOp5J,GAAKq5J,EAAMC,EAAMC,EAAMC,MAI3Bx5J,EAIX3pB,GAAOD,QAAUw7G,GpNupqCX,SAAUv7G,EAAQD,EAASH,GAEjC,YqNzpqCA,SAASwjL,GAAkBC,GACG,MAA1BA,EAAWC,aAA+C,MAAxBD,EAAWE,WAA2Nl+G,EAAe,MAE3R,QAASm+G,GAAiBH,GACxBD,EAAkBC,IACI,MAApBA,EAAWh/K,OAAwC,MAAvBg/K,EAAWI,WAA6Np+G,EAAe,MAGvR,QAASq+G,GAAmBL,GAC1BD,EAAkBC,IACM,MAAtBA,EAAWM,SAA0C,MAAvBN,EAAWI,WAA6Op+G,EAAe,MAoBzS,QAASu+G,GAA4BntE,GACnC,GAAIA,EAAO,CACT,GAAIxzG,GAAOwzG,EAAM7jB,SACjB,IAAI3vF,EACF,MAAO,gCAAkCA,EAAO,KAGpD,MAAO,GAvDT,GAAIoiE,GAAiB,EAAQ,GAEzBywC,EAAQ,EAAQ,IAChB+tE,EAAuB,EAAQ,KAK/BC,GAHY,EAAQ,GACV,EAAQ,IAGpB,UACA,YACA,SACA,UACA,SACA,SACA,YAgBExkK,GACFjb,MAAO,SAAUma,EAAO25E,EAAUkW,GAChC,OAAK7vF,EAAM25E,IAAa2rF,EAAiBtlK,EAAMnc,OAASmc,EAAMilK,UAAYjlK,EAAMulK,UAAYvlK,EAAMokH,SACzF,KAEF,GAAIjhI,OAAM,sNAEnBgiL,QAAS,SAAUnlK,EAAO25E,EAAUkW,GAClC,OAAK7vF,EAAM25E,IAAa35E,EAAMilK,UAAYjlK,EAAMulK,UAAYvlK,EAAMokH,SACzD,KAEF,GAAIjhI,OAAM,0NAEnB8hL,SAAU3tE,EAAM7yC,UAAUt5C,MAGxBq6J,KAeAC,GACFC,eAAgB,SAAU3nG,EAAS/9D,EAAOi4F,GACxC,IAAK,GAAIte,KAAY74E,GAAW,CAC9B,GAAIA,EAAUte,eAAem3F,GAC3B,GAAIp0F,GAAQub,EAAU64E,GAAU35E,EAAO25E,EAAU5b,EAAS,OAAQ,KAAMsnG,EAEtE9/K,aAAiBpC,UAAWoC,EAAMgO,UAAWiyK,MAG/CA,EAAmBjgL,EAAMgO,YAEV6xK,EAA4BntE,MAUjD5F,SAAU,SAAUwyE,GAClB,MAAIA,GAAWE,WACbC,EAAiBH,GACVA,EAAWE,UAAUl/K,OAEvBg/K,EAAWh/K,OAQpB8/K,WAAY,SAAUd,GACpB,MAAIA,GAAWC,aACbI,EAAmBL,GACZA,EAAWC,YAAYj/K,OAEzBg/K,EAAWM,SAOpBS,gBAAiB,SAAUf,EAAYx5I,GACrC,MAAIw5I,GAAWE,WACbC,EAAiBH,GACVA,EAAWE,UAAUc,cAAcx6I,EAAM5pB,OAAO5b,QAC9Cg/K,EAAWC,aACpBI,EAAmBL,GACZA,EAAWC,YAAYe,cAAcx6I,EAAM5pB,OAAO0jK,UAChDN,EAAWI,SACbJ,EAAWI,SAAStjL,SAAKA,GAAW0pC,WAKjD7pC,GAAOD,QAAUkkL,GrN4rqCX,SAAUjkL,EAAQD,EAASH,GAEjC,YsNtzqCA,IAAIylE,GAAiB,EAAQ,GAIzBi/G,GAFY,EAAQ,OAIpBC,GAMFC,sBAAuB,KAMvBC,uBAAwB,KAExB7vF,WACE8vF,kBAAmB,SAAUl+G,GACzB89G,GAA+Ij/G,EAAe,OAChKk/G,EAA0BC,sBAAwBh+G,EAAYg+G,sBAC9DD,EAA0BE,uBAAyBj+G,EAAYi+G,uBAC/DH,OAMNtkL,GAAOD,QAAUwkL,GtNw0qCX,SAAUvkL,EAAQD,EAASH,GAEjC,YuNl2qCA,SAASslB,GAAGC,EAAGC,GAEb,MAAID,KAAMC,EAIK,IAAND,GAAiB,IAANC,GAAW,EAAID,GAAM,EAAIC,EAGpCD,IAAMA,GAAKC,IAAMA,EAS5B,QAASC,GAAaC,EAAMC,GAC1B,GAAIL,EAAGI,EAAMC,GACX,OAAM,CAGR,IAAoB,gBAATD,IAA8B,OAATA,GAAiC,gBAATC,IAA8B,OAATA,EAC3E,OAAM,CAGR,IAAIC,GAAQ1kB,OAAO6I,KAAK2b,GACpBG,EAAQ3kB,OAAO6I,KAAK4b,EAExB,IAAIC,EAAM7kB,SAAW8kB,EAAM9kB,OACzB,OAAM,CAIR,KAAK,GAAIV,GAAI,EAAGA,EAAIulB,EAAM7kB,OAAQV,IAChC,IAAKe,EAAeb,KAAKolB,EAAMC,EAAMvlB,MAAQilB,EAAGI,EAAKE,EAAMvlB,IAAKslB,EAAKC,EAAMvlB,KACzE,OAAM,CAIV,UA/CF,GAAIe,GAAiBF,OAAOC,UAAUC,cAkDtChB,GAAOD,QAAUslB,GvN23qCX,SAAUrlB,EAAQD,EAASH,GAEjC,YwNr6qCA,SAAS+kL,GAA2B3qE,EAAaD,GAC/C,GAAI6qE,GAA4B,OAAhB5qE,QAAwBA,EACpC6qE,EAA4B,OAAhB9qE,QAAwBA,CACxC,IAAI6qE,GAAaC,EACf,MAAOD,KAAcC,CAGvB,IAAIC,SAAkB9qE,GAClB+qE,QAAkBhrE,EACtB,OAAiB,WAAb+qE,GAAsC,WAAbA,EACP,WAAbC,GAAsC,WAAbA,EAEZ,WAAbA,GAAyB/qE,EAAY33G,OAAS03G,EAAY13G,MAAQ23G,EAAY51G,MAAQ21G,EAAY31G,IAI7GpE,EAAOD,QAAU4kL,GxNk8qCX,SAAU3kL,EAAQD,EAASH,GAEjC,YyNx9qCA,SAASusH,GAAO/nH,GACd,GACI4gL,IACF,IAAK,KACL,IAAK,KAMP,OAAO,KAJc,GAAK5gL,GAAKsnB,QALb,QAKkC,SAAUzC,GAC5D,MAAO+7J,GAAc/7J,KAYzB,QAASijG,GAAS9nH,GAChB,GAAI6gL,GAAgB,WAChBC,GACF,KAAM,IACN,KAAM,IAIR,QAAQ,IAFsB,MAAX9gL,EAAI,IAAyB,MAAXA,EAAI,GAAaA,EAAI4qG,UAAU,GAAK5qG,EAAI4qG,UAAU,KAE5DtjF,QAAQu5J,EAAe,SAAUh8J,GAC1D,MAAOi8J,GAAgBj8J,KAI3B,GAAIk8J,IACFh5D,OAAQA,EACRD,SAAUA,EAGZlsH,GAAOD,QAAUolL,GzNi/qCX,SAAUnlL,EAAQD,EAASH,GAEjC,Y0NthrCA,SAASqzF,GAAcmmB,GACrBnoB,EAAagC,cAAcmmB,GAG7B,QAASgsE,GAAyBl8J,GAChC,GAAI7mB,SAAc6mB,EAClB,IAAa,WAAT7mB,EACF,MAAOA,EAET,IAAI4gB,GAAciG,EAAIlL,aAAekL,EAAIlL,YAAY/a,MAAQZ,EACzDsH,EAAO7I,OAAO6I,KAAKuf,EACvB,OAAIvf,GAAKhJ,OAAS,GAAKgJ,EAAKhJ,OAAS,GAC5BsiB,EAAc,WAAatZ,EAAKinB,KAAK,MAAQ,IAE/C3N,EAGT,QAASoiK,GAAkCtH,EAAgBuH,GACzD,GAAIlsE,GAAmBisB,EAAiB9hI,IAAIw6K,EAC5C,OAAK3kE,IAQI,KArCX,GAAI/zC,GAAiB,EAAQ,GAGzBggE,GADoB,EAAQ,IACT,EAAQ,MAE3Bp0C,GADuB,EAAQ,IAChB,EAAQ,KA8CvBs0F,GA5CY,EAAQ,GACV,EAAQ,IAoDpBzH,UAAW,SAAUC,GAEjB,GAME3kE,GAAmBisB,EAAiB9hI,IAAIw6K,EAC5C,SAAI3kE,KAIOA,EAAiBh1C,oBAe9Bw5G,gBAAiB,SAAUG,EAAgB3oI,EAAUkwI,GACnDC,EAAiBC,iBAAiBpwI,EAAUkwI,EAC5C,IAAIlsE,GAAmBisE,EAAkCtH,EAOzD,KAAK3kE,EACH,MAAO,KAGLA,GAAiB/mB,kBACnB+mB,EAAiB/mB,kBAAkBxxF,KAAKu0C,GAExCgkE,EAAiB/mB,mBAAqBj9C,GAMxC69C,EAAcmmB,IAGhBqsE,wBAAyB,SAAUrsE,EAAkBhkE,GAC/CgkE,EAAiB/mB,kBACnB+mB,EAAiB/mB,kBAAkBxxF,KAAKu0C,GAExCgkE,EAAiB/mB,mBAAqBj9C,GAExC69C,EAAcmmB,IAgBhBykE,mBAAoB,SAAUE,GAC5B,GAAI3kE,GAAmBisE,EAAkCtH,EAAgB,cAEpE3kE,KAILA,EAAiBssE,uBAEjBzyF,EAAcmmB,KAchB4kE,oBAAqB,SAAUD,EAAgBE,GAC7C,GAAI7kE,GAAmBisE,EAAkCtH,EAAgB,eAEpE3kE,KAILA,EAAiBusE,oBAAsB1H,GACvC7kE,EAAiBwsE,wBAEjB3yF,EAAcmmB,KAahBukE,gBAAiB,SAAUI,EAAgBL,GAMzC,GAAItkE,GAAmBisE,EAAkCtH,EAAgB,WAEpE3kE,MAIOA,EAAiBusE,qBAAuBvsE,EAAiBusE,wBAC/D9kL,KAAK68K,GAEXzqF,EAAcmmB,KAGhBysE,uBAAwB,SAAUzsE,EAAkBW,EAAaiU,GAC/D5U,EAAiB0sE,gBAAkB/rE,EAEnCX,EAAiBzzD,SAAWqoE,EAC5B/6B,EAAcmmB,IAGhBosE,iBAAkB,SAAUpwI,EAAUkwI,GACjClwI,GAAgC,kBAAbA,IAAyOiwB,EAAe,MAAOigH,EAAYF,EAAyBhwI,MAK9Tp1C,GAAOD,QAAUwlL,G1NijrCX,SAAUvlL,EAAQD,EAASH,GAEjC,Y2NvwrCA,IAEIgsB,IAFU,EAAQ,IAEF,EAAQ,KAGxBm6J,GAFU,EAAQ,GAEGn6J,EA2WzB5rB,GAAOD,QAAUgmL,G3NwxrCX,SAAU/lL,EAAQD,EAASH,GAEjC,Y4N/nsCA,SAASomL,GAAiBjuF,GACxB,GAAIkuF,GACA5a,EAAUtzE,EAAYszE,OAgB1B,OAdI,YAActzE,GAIC,KAHjBkuF,EAAWluF,EAAYkuF,WAGW,KAAZ5a,IACpB4a,EAAW,IAIbA,EAAW5a,EAKT4a,GAAY,IAAmB,KAAbA,EACbA,EAGF,EAGTjmL,EAAOD,QAAUimL,G5N2psCX,SAAUhmL,EAAQD,EAASH,G6N1rsC/BI,EAAOD,QAAU,EAAQ,Q7NmtsCrB,SAAUC,EAAQiE,EAAqBrE,GAE7C,cAAa,S8NtusCb,GAMe,QAASisB,GAAQ9Z,YAEnBjO,GAAoD,kBAAlBA,GAAQC,OACnDD,EAAQC,MAAMgO,EAKhB,KAIE,KAAM,IAAIpQ,OAAMoQ,GAEhB,MAAO5Q,KApBX,Q9NgwsC6BhB,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,GAEjC,Y+NnwsCEI,GAAOD,QAAU,EAAQ,M/N+wsCrB,SAAUC,EAAQiE,EAAqBrE,GAE7C,YgO3vsCA,SAAS6wG,GAAUpsG,GACjB,GAAI6hL,GAAQ,EAAe/lL,KAAKkE,EAAOmsG,GACnCr0B,EAAM93E,EAAMmsG,EAEhB,KACEnsG,EAAMmsG,SACN,IAAI21E,MACJ,MAAOhlL,IAET,GAAIioB,GAASg9J,EAAqBjmL,KAAKkE,EAQvC,OAPI8hL,KACED,EACF7hL,EAAMmsG,GAAkBr0B,QAEjB93E,GAAMmsG,IAGVpnF,ECzBT,QAASsnF,GAAersG,GACtB,MAAO,GAAqBlE,KAAKkE,GCAnC,QAASgsG,GAAWhsG,GAClB,MAAa,OAATA,WACKA,EAAsBisG,EAAeC,EAEtC,GAAkB,IAAkBzvG,QAAOuD,GAC/C,EAAUA,GACV,EAAeA,GChBrB,QAASgiL,GAAQ18J,EAAMmvJ,GACrB,MAAO,UAAS5vJ,GACd,MAAOS,GAAKmvJ,EAAU5vJ,KCc1B,QAASs+E,GAAanjG,GACpB,MAAgB,OAATA,GAAiC,gBAATA,GCuBjC,QAASiiL,GAAcjiL,GACrB,IAAK,EAAaA,IAAU,EAAWA,IAAUkiL,EAC/C,OAAM,CAER,IAAI52I,GAAQ,EAAatrC,EACzB,IAAc,OAAVsrC,EACF,OAAM,CAER,IAAI0uH,GAAO,EAAel+J,KAAKwvC,EAAO,gBAAkBA,EAAM3xB,WAC9D,OAAsB,kBAARqgJ,IAAsBA,YAAgBA,IAClDmoB,EAAarmL,KAAKk+J,IAASooB,ECpBhB,QAAS,GAAYC,EAASC,EAAgBC,GA0B3D,QAASC,KACHC,IAAkBC,IACpBD,EAAgBC,EAAiBv0K,SASrC,QAAS+O,KACP,MAAOylK,GA0BT,QAASnmK,GAAUC,GACjB,GAAwB,kBAAbA,GACT,KAAM,IAAInf,OAAM,sCAGlB,IAAIof,KAKJ,OAHA8lK,KACAC,EAAcjmL,KAAKigB,GAEZ,WACL,GAAKC,EAAL,CAIAA,KAEA8lK,GACA,IAAIx2J,GAAQy2J,EAAczsK,QAAQyG,EAClCgmK,GAAc9lK,OAAOqP,EAAO,KA6BhC,QAAS7L,GAAS25G,GAChB,IAAK,EAAcA,GACjB,KAAM,IAAIx8H,OAAM,0EAGlB,aAAWw8H,EAAO97H,KAChB,KAAM,IAAIV,OAAM,qFAGlB,IAAIslL,EACF,KAAM,IAAItlL,OAAM,qCAGlB,KACEslL,KACAD,EAAeE,EAAeF,EAAc7oD,GAC5C,QACA8oD,KAIF,IAAK,GADDrmK,GAAYmmK,EAAmBD,EAC1B7mL,EAAI,EAAGA,EAAI2gB,EAAUjgB,OAAQV,IACpC2gB,EAAU3gB,IAGZ,OAAOk+H,GAaT,QAASgpD,GAAeC,GACtB,GAA2B,kBAAhBA,GACT,KAAM,IAAIzlL,OAAM,6CAGlBulL,GAAiBE,EACjB5iK,GAAWniB,KAAMglL,EAAYC,OAS/B,QAASC,KACP,GAAIxoK,GAEAyoK,EAAiB3mK,CACrB,OAAO9B,IASL8B,UAAW,SAAmB4mK,GAK5B,QAASC,KACHD,EAASjnK,MACXinK,EAASjnK,KAAKe,KANlB,GAAwB,gBAAbkmK,GACT,KAAM,IAAI5qJ,WAAU,yCAWtB,OAFA6qJ,MAESx9J,YADSs9J,EAAeE,MAGlC3oK,EAAK,KAAgB,WACtB,MAAOJ,OACNI,EAlML,GAAI8C,EAOJ,IAL8B,kBAAnB8kK,aAAwCC,IACjDA,EAAWD,EACXA,cAAiBrpJ,KAGRspJ,EAA0B,CACnC,GAAwB,kBAAbA,GACT,KAAM,IAAIjlL,OAAM,0CAGlB,OAAOilL,GAAS,GAAaF,EAASC,GAGxC,GAAuB,kBAAZD,GACT,KAAM,IAAI/kL,OAAM,yCAGlB,IAAIulL,GAAiBR,EACjBM,EAAeL,EACfI,KACAD,EAAgBC,EAChBE,IAmLJ,OAFAziK,IAAWniB,KAAMglL,EAAYC,OAEtBzlK,GACL2C,SAAUA,EACV3D,UAAWA,EACXU,SAAUA,EACV4lK,eAAgBA,GACftlK,EAAM,KAAgB0lK,EAAY1lK,EClPvC,QAAS8lK,GAA8BvjL,EAAK+5H,GAC1C,GAAIypD,GAAazpD,GAAUA,EAAO97H,IAGlC,OAAO,iBAFUulL,GAAc,IAAMA,EAAWhrJ,WAAa,KAAO,aAE9B,cAAgBx4B,EAAM,4FA4B9D,QAASyjL,GAAoBC,GAC3BhnL,OAAO6I,KAAKm+K,GAAUppI,QAAQ,SAAUt6C,GACtC,GAAIsiL,GAAUoB,EAAS1jL,EAGvB,aAFmBsiL,UAAqBrkL,KAAMglL,EAAYC,OAGxD,KAAM,IAAI3lL,OAAM,YAAcyC,EAAM,qLAItC,aAAWsiL,UAAqBrkL,KADrB,gCAAkC46B,KAAK+oC,SAASppC,SAAS,IAAIoyE,UAAU,GAAG3yF,MAAM,IAAIuU,KAAK,OAElG,KAAM,IAAIjvB,OAAM,YAAcyC,EAAM,6EAAqFijL,EAAYC,KAAO,gSAqBnI,QAASS,GAAgBD,GAGtC,IAAK,GAFDE,GAAclnL,OAAO6I,KAAKm+K,GAC1BG,KACKhoL,EAAI,EAAGA,EAAI+nL,EAAYrnL,OAAQV,IAAK,CAC3C,GAAImE,GAAM4jL,EAAY/nL,EAQO,mBAAlB6nL,GAAS1jL,KAClB6jL,EAAc7jL,GAAO0jL,EAAS1jL,IAGlC,GAMI8jL,GANAC,EAAmBrnL,OAAO6I,KAAKs+K,EAOnC,KACEJ,EAAoBI,GACpB,MAAO9mL,GACP+mL,EAAc/mL,EAGhB,MAAO,YACL,GAAIiiB,GAAQ9R,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,GAC7E6sH,EAAS7sH,UAAU,EAEvB,IAAI42K,EACF,KAAMA,EAYR,KAAK,GAFDE,MACA7/J,KACKtoB,EAAI,EAAGA,EAAIkoL,EAAiBxnL,OAAQV,IAAK,CAChD,GAAImE,GAAM+jL,EAAiBloL,GACvBymL,EAAUuB,EAAc7jL,GACxBikL,EAAsBjlK,EAAMhf,GAC5BkkL,EAAkB5B,EAAQ2B,EAAqBlqD,EACnD,aAAWmqD,EAAiC,CAC1C,GAAIC,GAAeZ,EAA8BvjL,EAAK+5H,EACtD,MAAM,IAAIx8H,OAAM4mL,GAElBhgK,EAAUnkB,GAAOkkL,EACjBF,EAAaA,GAAcE,IAAoBD,EAEjD,MAAOD,GAAa7/J,EAAYnF,GC9HpC,QAASolK,GAAkBC,EAAejkK,GACxC,MAAO,YACL,MAAOA,GAASikK,EAAcp3K,UAAMA,GAAWC,aAyBpC,QAASo3K,GAAmBC,EAAgBnkK,GACzD,GAA8B,kBAAnBmkK,GACT,MAAOH,GAAkBG,EAAgBnkK,EAG3C,IAA8B,gBAAnBmkK,IAAkD,OAAnBA,EACxC,KAAM,IAAIhnL,OAAM,0EAA+F,OAAnBgnL,EAA0B,aAAgBA,IAAkB,6FAK1J,KAAK,GAFDh/K,GAAO7I,OAAO6I,KAAKg/K,GACnBC,KACK3oL,EAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAAK,CACpC,GAAImE,GAAMuF,EAAK1J,GACXwoL,EAAgBE,EAAevkL,EACN,mBAAlBqkL,KACTG,EAAoBxkL,GAAOokL,EAAkBC,EAAejkK,IAGhE,MAAOokK,GClCM,QAASC,KACtB,IAAK,GAAI34J,GAAO5e,UAAU3Q,OAAQ4vB,EAAQ5d,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC5EI,EAAMJ,GAAQ7e,UAAU6e,EAG1B,IAAqB,IAAjBI,EAAM5vB,OACR,MAAO,UAAUuoB,GACf,MAAOA,GAIX,IAAqB,IAAjBqH,EAAM5vB,OACR,MAAO4vB,GAAM,EAGf,IAAI0jB,GAAO1jB,EAAMA,EAAM5vB,OAAS,GAC5BmoL,EAAOv4J,EAAM/d,MAAM,GAAI,EAC3B,OAAO,YACL,MAAOs2K,GAAKhsB,YAAY,SAAUisB,EAAUh2K,GAC1C,MAAOA,GAAEg2K,IACR90I,EAAK5iC,UAAMA,GAAWC,aCXd,QAAS03K,KACtB,IAAK,GAAI94J,GAAO5e,UAAU3Q,OAAQsoL,EAAct2K,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClF84J,EAAY94J,GAAQ7e,UAAU6e,EAGhC,OAAO,UAAU+4J,GACf,MAAO,UAAUxC,EAASC,EAAgBC,GACxC,GAAIhoK,GAAQsqK,EAAYxC,EAASC,EAAgBC,GAC7CuC,EAAYvqK,EAAM4F,SAClB4kK,KAEAC,GACF9nK,SAAU3C,EAAM2C,SAChBiD,SAAU,SAAkB25G,GAC1B,MAAOgrD,GAAUhrD,IAQrB,OALAirD,GAAQH,EAAYt4J,IAAI,SAAU24J,GAChC,MAAOA,GAAWD,KAEpBF,EAAYN,EAAQx3K,UAAMA,GAAW+3K,GAAOxqK,EAAM4F,UAE3CzE,KAAanB,GAClB4F,SAAU2kK,M1O4usClB,GAAII,GAAc3pL,EAAoB,K2OpxsClCmxF,EAA0B,gBAARlxE,OAAoBA,MAAQA,KAAK/e,SAAWA,QAAU+e,KAGxEsuC,EAAO,KAAc4iC,GAAY1oC,SAAS,iBAE/B,ICLXI,EAAS,EAAKA,OAEH,IZFXyjG,EAAcprJ,OAAOC,UAGrB,EAAiBmrJ,EAAYlrJ,eAO7BolL,EAAuBl6B,EAAYtvH,SAGnC4zE,EAAiB,EAAS,EAAOG,mBA6BtB,IC5CX,EAAc7vG,OAAOC,UAOrB,EAAuB,EAAY67B,SAaxB,EAAAz5B,EChBXotG,EAAU,gBACVD,EAAe,qBAGf,EAAiB,EAAS,EAAOK,mBAkBtB,ICbA,IUXX64E,EAAe,EAAQ1oL,OAAOuuC,eAAgBvuC,QAEnC,ITuBA,ICvBXylL,EAAY,kBAGZkD,EAAYphI,SAAStnD,UACrB,EAAcD,OAAOC,UAGrBylL,EAAeiD,EAAU7sJ,SAGzB,EAAiB,EAAY57B,eAG7BylL,EAAmBD,EAAarmL,KAAKW,QA2C1B,IrO88sCXspB,EAAKxqB,EAAoB,KsOlgtClBynL,GACTC,KAAM,gBIVJvnK,G1OuwtCgBngB,EAAoB,K0OvwtCzBkB,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IIAvP,kK9O0iuCM,SAAUjgB,EAAQD,EAASH,GAEjC,Y+OvhuCA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAnBvFpE,EAAQ0D,cACR1D,EAAQ+qG,OAAS/qG,EAAQunG,OAASvnG,EAAQmnG,MAAQnnG,EAAQuuG,WAAavuG,EAAQokE,UAAYpkE,EAAQka,SAAWla,EAAQwuG,QAAUxuG,EAAQquG,MAAQruG,EAAQo8G,cAAgBp8G,EAAQm8G,kBAEhL,IAAIzhC,GAAS,EAAQ,GAEjB8hF,EAA6B,EAAQ,KAIrCmtB,GAF8BlvG,EAAuB+hF,GAEhC,EAAQ,KAE7BotB,EAMJ,SAAiCxlL,GAAO,GAAIA,GAAOA,EAAIV,WAAc,MAAOU,EAAc,IAAIylL,KAAa,IAAW,MAAPzlL,EAAe,IAAK,GAAIC,KAAOD,GAAWrD,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKC,KAAMwlL,EAAOxlL,GAAOD,EAAIC,GAAgC,OAAtBwlL,GAAOx8H,QAAUjpD,EAAYylL,GANlNF,GAE5C/uB,EAAiB,EAAQ,IAQzBhxI,GANkB6wD,EAAuBmgF,GAMlClgF,EAAOxX,UAAUt5C,MACxBjmB,EAAS+2E,EAAOxX,UAAUv/D,OAC1BgmB,EAAQ+wD,EAAOxX,UAAUv5C,MACzB4tD,EAASmD,EAAOxX,UAAUqU,OAC1B4kC,EAAcn8G,EAAQm8G,YAAcxyF,GACtC7oB,KAAM8oB,EAAKnK,WACXkM,QAAS/B,EAAKnK,WACdivF,GAAI9kF,EAAKnK,WACTkvF,OAAQ/kF,EAAKnK,WACbmvF,UAAWhlF,EAAKnK,WAChBm9I,kBAAmBhzI,EAAKnK,WACxBkV,SAAU/K,EAAKnK,aAGb28F,EAAgBp8G,EAAQo8G,cAAgBzyF,GAC1CxO,SAAUo8D,EAAO93D,WACjB/C,OAAQ66D,EAAO93D,WACf4D,MAAO1f,EACPy6H,OAAQ7mD,EAAO93D,WACfpb,IAAKkzE,IAKH82B,EAAQruG,EAAQquG,MAAQu7E,EAAkBv7E,MAC1CG,EAAUxuG,EAAQwuG,QAAUo7E,EAAkBp7E,QAC9Ct0F,EAAWla,EAAQka,SAAWkiG,EAC9Bh4C,EAAYpkE,EAAQokE,UAAYwlH,EAAkBxlH,UAClDmqC,EAAavuG,EAAQuuG,WAAaq7E,EAAkBr7E,WACpDpH,EAAQnnG,EAAQmnG,MAAQyiF,EAAkBziF,MAE1C4D,GADS/qG,EAAQunG,OAASqiF,EAAkBriF,OACnCvnG,EAAQ+qG,OAASoR,GA+B1B3I,GACFnF,MAAOA,EACPG,QAASA,EACTt0F,SAAUA,EACVkqD,UAAWA,EACXmqC,WAAYA,EACZpH,MAAOA,EAEP4D,OAAQA,EAOV/qG,GAAQqtD,QAAUmmD,G/OijuCZ,SAAUvzG,EAAQD,EAASH,GAEjC,YgP1ouCA,SAAS+iF,GAAiB/2C,EAAM/B,EAAO/oB,GACjC8qB,EAAK+2C,iBACP/2C,EAAK+2C,iBAAiB94C,EAAO/oB,MAE7B8qB,EAAKg3C,YAAY,KAAO/4C,EAAO/oB,GAInC,QAASoqJ,GAAoBt/H,EAAM/B,EAAO/oB,GACpC8qB,EAAKs/H,oBACPt/H,EAAKs/H,oBAAoBrhI,EAAO/oB,MAEhC8qB,EAAKi+I,YAAY,KAAOhgJ,EAAO/oB,GAInC,QAASgpK,KAGP,MAAOzpL,QAAO4Z,SAASyC,KAAKL,MAAM,KAAK,IAAM,GAG/C,QAAS0tK,GAAgB3vK,GACvB/Z,OAAO4Z,SAASyR,QAAQrrB,OAAO4Z,SAASiB,SAAW7a,OAAO4Z,SAASwC,OAAS,IAAMrC,GAGpF,QAAS4vK,KACP,MAAO3pL,QAAO4Z,SAASiB,SAAW7a,OAAO4Z,SAASwC,OAASpc,OAAO4Z,SAASkC,KAG7E,QAASsyF,GAAGjrG,GACNA,GAAGnD,OAAOkuG,QAAQE,GAAGjrG,GAG3B,QAASymL,GAAoBl4K,EAASqjC,GACpCA,EAAS/0C,OAAO6pL,QAAQn4K,IAW1B,QAASo4K,KACP,GAAIC,GAAKzoI,UAAUwpC,SACnB,SAAmC,IAA9Bi/F,EAAG/vK,QAAQ,gBAAuD,IAA/B+vK,EAAG/vK,QAAQ,iBAA2D,IAAjC+vK,EAAG/vK,QAAQ,mBAAqD,IAA1B+vK,EAAG/vK,QAAQ,YAAqD,IAAjC+vK,EAAG/vK,QAAQ,mBAGtJha,OAAOkuG,SAAW,aAAeluG,QAAOkuG,QAOjD,QAAS87E,KAEP,OAAkC,IADzB1oI,UAAUwpC,UACT9wE,QAAQ,WAvEpBta,EAAQ0D,cACR1D,EAAQ4iF,iBAAmBA,EAC3B5iF,EAAQmrK,oBAAsBA,EAC9BnrK,EAAQ+pL,YAAcA,EACtB/pL,EAAQgqL,gBAAkBA,EAC1BhqL,EAAQiqL,cAAgBA,EACxBjqL,EAAQ0uG,GAAKA,EACb1uG,EAAQkqL,oBAAsBA,EAC9BlqL,EAAQoqL,gBAAkBA,EAC1BpqL,EAAQsqL,iCAAmCA,GhP2tuCrC,SAAUrqL,EAAQD,EAASH,GAEjC,YiPttuCA,SAAS0qL,GAAUlmL,GACjB,MAAOmmL,GAAYnmL,EAGrB,QAASomL,GAAUpmL,EAAKgf,GACtB,IACe,MAATA,EACF/iB,OAAOi1F,eAAe5M,WAAW4hG,EAAUlmL,IAE3C/D,OAAOi1F,eAAe7L,QAAQ6gG,EAAUlmL,GAAM0e,KAAKC,UAAUK,IAE/D,MAAOrf,GACP,GAAIA,EAAMd,OAASwnL,EAKjB,MAGF,IAAIC,EAAoBrwK,QAAQtW,EAAMd,OAAS,GAAsC,IAAjC5C,OAAOi1F,eAAe30F,OAIxE,MAGF,MAAMoD,IAIV,QAAS4mL,GAAUvmL,GACjB,GAAIwmL,SACJ,KACEA,EAAOvqL,OAAOi1F,eAAer/D,QAAQq0J,EAAUlmL,IAC/C,MAAOL,GACP,GAAIA,EAAMd,OAASwnL,EAKjB,MAAO,MAIX,GAAIG,EACF,IACE,MAAO9nK,MAAKoT,MAAM00J,GAClB,MAAO7mL,IAKX,MAAO,MApEThE,EAAQ0D,cACR1D,EAAQyqL,UAAYA,EACpBzqL,EAAQ4qL,UAAYA,CAIpB,IAAI90G,GAAW,EAAQ,IAInB00G,GANJ,SAAgCpmL,GAAcA,GAAOA,EAAIV,YAIlBoyE,GAEvB,cACZ60G,GAAuB,qBAAsB,sBAE7CD,EAAgB,iBjPqyuCd,SAAUzqL,EAAQD,EAASH,GAEjC,YkPrzuCA,IAAI+J,GAAO,EAAQ,KACfkhL,EAA+B,kBAAXpiI,SAAkD,gBAAlBA,QAAO,OAE3DqiI,EAAQhqL,OAAOC,UAAU67B,SACzBpL,EAAS7e,MAAM5R,UAAUywB,OACzBu5J,EAAqBjqL,OAAOsC,eAE5Bu2F,EAAa,SAAUhhE,GAC1B,MAAqB,kBAAPA,IAAwC,sBAAnBmyJ,EAAM3qL,KAAKw4B,IAgB3CqyJ,EAAsBD,GAbY,WACrC,GAAI5mL,KACJ,KACC4mL,EAAmB5mL,EAAK,KAAOb,YAAWA,EAAQe,MAAOF,GAEzD,KAAK,GAAI02B,KAAK12B,GACb,OAAM,CAEP,OAAOA,GAAIghB,IAAMhhB,EAChB,MAAOhD,GACR,OAAM,MAKJiC,EAAiB,SAAUM,EAAQT,EAAMoB,EAAO4mL,MAC/ChoL,IAAQS,KAAYi2F,EAAWsxF,IAAeA,OAG9CD,EACHD,EAAmBrnL,EAAQT,GAC1BI,cAAaA,EACbC,YAAWA,EACXe,MAAOA,EACPC,UAASA,IAGVZ,EAAOT,GAAQoB,IAIbo/D,EAAmB,SAAU//D,EAAQitB,GACxC,GAAIu6J,GAAa55K,UAAU3Q,OAAS,EAAI2Q,UAAU,MAC9CkN,EAAQ7U,EAAKgnB,EACbk6J,KACHrsK,EAAQgT,EAAOrxB,KAAKqe,EAAO1d,OAAOwsD,sBAAsB38B,IAEzD,KAAK,GAAI1wB,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,GAAK,EACtCmD,EAAeM,EAAQ8a,EAAMve,GAAI0wB,EAAInS,EAAMve,IAAKirL,EAAW1sK,EAAMve,KAInEwjE,GAAiBunH,sBAAwBA,EAEzChrL,EAAOD,QAAU0jE,GlP6zuCX,SAAUzjE,EAAQD,EAASH,GAEjC,YmP92uCA,SAASurL,GAAkBxvB,EAAM1hJ,EAAUm7B,GACzC,GAAIhsB,GAASuyI,EAAK1hJ,EAAUm7B,EAExBumH,GAAKh7J,OAAS,GAGhBy0C,EAAShsB,GAdbrpB,EAAQ0D,aAIR,IAAIoyE,GAAW,EAAQ,KAFvB,SAAgC1xE,GAAcA,GAAOA,EAAIV,YAIlBoyE,GAcvC91E,EAAiB,QAAIorL,EACrBnrL,EAAOD,QAAUA,EAAiB,SnP63uC5B,SAAUC,EAAQD,EAASH,GAEjC,YoP54uCA,SAASsqI,GAAUvxG,EAAI5mB,GACrB,MAAO,YAEL,MAAO4mB,GAAGtnB,MAAMsN,KAAMrN,YAX1BvR,EAAQ0D,aAIR,IAAIoyE,GAAW,EAAQ,KAFvB,SAAgC1xE,GAAcA,GAAOA,EAAIV,YAIlBoyE,GASvC91E,EAAiB,QAAImqI,EACrBlqI,EAAOD,QAAUA,EAAiB,SpP25uC5B,SAAUC,EAAQD,EAASH,GAEjC,YqPj5uCA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASinL,GAAiB1nL,GACxB,IAAK,GAAIf,KAAKe,GACZ,GAAI5C,OAAOC,UAAUC,eAAeb,KAAKuD,EAAQf,GAAI,OAAM,CAC5D,UAGH,QAAS0oL,GAAwB98E,EAASjH,GAKxC,QAAS5yE,GAASza,GAChB,GAAIqxK,KAA6Bh6K,UAAU3Q,QAAU,YAAK2Q,UAAU,KAA2BA,UAAU,GACrGi6K,EAAsBj6K,UAAU3Q,QAAU,YAAK2Q,UAAU,GAAmB,KAAOA,UAAU,GAE7Fk6K,QAUJ,OATIF,SAA8BA,GAA+D,OAAxBC,GAEvEtxK,GAAaiB,SAAUjB,EAAUC,MAAOoxK,GACxCE,EAAYD,QAEZtxK,EAAWs0F,EAAQwtD,eAAe9hJ,GAClCuxK,EAAYF,MAGHG,EAAWr+H,SAASnzC,EAAUuxK,EAAWpoK,EAAMnJ,SAAUmJ,EAAMkkF,OAAQlkF,EAAMuO,QAK1F,QAAS1I,GAAMhP,EAAUm7B,GACnBs2I,GAAoBA,EAAiBzxK,WAAaA,EAEpD0xK,EAAYD,EAAkBt2I,MAE1Bw2I,EAAcx+H,SAASk6C,EAAQrtF,EAAU,SAAUlW,EAAOwkB,GACxDxkB,EACFqxC,EAASrxC,GACAwkB,EACTojK,EAAY5rK,KAAawI,GAAatO,SAAUA,IAAam7B,GAE7DA,MAMR,QAASu2I,GAAYpjK,EAAW6sB,GAsB9B,QAASy2I,GAAiB9nL,EAAO+nL,GAC/B,GAAI/nL,GAAS+nL,EAAc,MAAOC,GAAsBhoL,EAAO+nL,MAG3DE,EAAgB5+H,SAAS7kC,EAAW,SAAUxkB,EAAOuqG,GACnDvqG,EACFqxC,EAASrxC,GAITqxC,EAAS,KAAM,KAAMhyB,EAAQrD,KAAawI,GAAa+lF,WAAYA,OAKzE,QAASy9E,GAAsBhoL,EAAO+nL,GAChC/nL,EAAOqxC,EAASrxC,GAAYqxC,EAAS,KAAM02I,GArCjD,GAAIG,MAA4BC,EAAuB9+H,SAAShqC,EAAOmF,GAEnE4jK,EAAcF,EAAsBE,YACpCC,EAAeH,EAAsBG,aACrCC,EAAcJ,EAAsBI,aAAYA,EAGhDC,EAAiBC,eAAeJ,EAAa/oK,GAGjD+oK,EAAY33J,OAAO,SAAU0yE,GAC3B,OAAuC,IAAhCmlF,EAAYhyK,QAAQ6sF,KAC1BxoD,QAAQ8tI,MAGPF,EAAiBG,gBAAgBL,EAAchpK,EAAOmF,EAAW,SAAUxkB,EAAO+nL,GACpF,GAAI/nL,GAAS+nL,EAAc,MAAOC,GAAsBhoL,EAAO+nL,MAE3DQ,EAAiBI,eAAeL,EAAa9jK,EAAWsjK,KAyBhE,QAASc,GAAWzlF,GAClB,GAAInpF,GAASzM,UAAU3Q,QAAU,YAAK2Q,UAAU,IAA0BA,UAAU,EAEpF,OAAO41F,GAAM0lF,QAAU7uK,IAAWmpF,EAAM0lF,OAASC,KAKnD,QAASC,GAAuBxlF,GAC9B,MAAOA,GAAO19F,OAAO,SAAUmjL,EAAO7lF,GAEpC,MADA6lF,GAAMlsL,KAAKwQ,MAAM07K,EAAOC,EAAWL,EAAWzlF,KACvC6lF,OAIX,QAASE,GAAehzK,EAAUm7B,MAC5Bw2I,EAAcx+H,SAASk6C,EAAQrtF,EAAU,SAAUlW,EAAOwkB,GAC5D,GAAiB,MAAbA,EAKF,WADA6sB,IAMFs2I,GAAmB3rK,KAAawI,GAAatO,SAAUA,GAKvD,KAAK,GAHD8yK,GAAQD,KAA2BZ,EAAuB9+H,SAAShqC,EAAOsoK,GAAkBS,aAE5F/iK,SACKnpB,EAAI,EAAGuxC,EAAMu7I,EAAMpsL,OAAkB,MAAVyoB,GAAkBnpB,EAAIuxC,IAAOvxC,EAG/DmpB,EAAS2jK,EAAM9sL,GAAGga,EAGpBm7B,GAAShsB,KAKb,QAAS8jK,KAGP,GAAI9pK,EAAMkkF,OAAQ,CAIhB,IAAK,GAHDylF,GAAQD,EAAuB1pK,EAAMkkF,QAErCv1F,SACK9R,EAAI,EAAGuxC,EAAMu7I,EAAMpsL,OAA2B,gBAAZoR,IAAwB9R,EAAIuxC,IAAOvxC,EAG5E8R,EAAUg7K,EAAM9sL,IAGlB,OAAO8R,IAOX,QAASy6K,GAAgCtlF,GACvC,GAAIimF,GAAUR,EAAWzlF,KACpBimF,WAIEH,GAAWG,GAEb/B,EAAiB4B,KAEhBI,IACFA,IACAA,EAAiB,MAGfC,IACFA,IACAA,EAAuB,QAkB7B,QAASzwB,GAAyB11D,EAAOy0D,GAIvC,GAAIwxB,GAAUR,EAAWzlF,GACrB6lF,EAAQC,EAAWG,EAEvB,IAAKJ,GAY0B,IAAzBA,EAAM1yK,QAAQshJ,IAGhBoxB,EAAMlsL,KAAK86J,OAfH,CACV,GAAI2xB,IAAyBlC,EAAiB4B,EAE9CA,GAAWG,IAAYxxB,GAEnB2xB,IAEFF,EAAiB7+E,EAAQmtD,aAAauxB,GAElC1+E,EAAQg/E,qBAAoBF,EAAuB9+E,EAAQg/E,mBAAmBL,KAUtF,MAAO,YACL,GAAIH,GAAQC,EAAWG,EAEvB,IAAIJ,EAAO,CACT,GAAIS,GAAWT,EAAMv4J,OAAO,SAAUO,GACpC,MAAOA,KAAS4mI,GAGM,KAApB6xB,EAAS7sL,OACX6rL,EAAgCtlF,GAEhC8lF,EAAWG,GAAWK,IAW9B,QAASh/E,GAAO1tF,GAGd,MAAOytF,GAAQC,OAAO,SAAUv0F,GAC1BmJ,EAAMnJ,WAAaA,EACrB6G,EAAS,KAAMsC,GAEf6F,EAAMhP,EAAU,SAAUlW,EAAO0pL,EAAkBllK,GAC7CxkB,EACF+c,EAAS/c,GACA0pL,EACTl/E,EAAQ7iF,QAAQ+hK,GACPllK,GACTzH,EAAS,KAAMyH,OAnPzB,GAAInF,MAqBAsoK,SA6DAmB,EAAY,EAQZG,EAAalsL,OAAOid,OAAO,MAsD3BqvK,SACAC,QA2GJ,QACE34J,SAAUA,EACVzL,MAAOA,EACP2zI,yBAA0BA,EAC1BpuD,OAAQA,GArSZzuG,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,GAEvPlgB,GAAQqtD,QAAUi+H,CAElB,IAAI1wB,GAAiB,EAAQ,IAIzB+yB,GAFkBlzG,EAAuBmgF,GAEhB,EAAQ,MAEjCuxB,EAAyB1xG,EAAuBkzG,GAEhDpB,EAAmB,EAAQ,KAE3BqB,EAAa,EAAQ,KAErBlC,EAAajxG,EAAuBmzG,GAEpCC,EAAiB,EAAQ,KAEzB5B,EAAkBxxG,EAAuBozG,GAEzCC,EAAe,EAAQ,KAEvBjC,EAAgBpxG,EAAuBqzG,EAiR3C7tL,GAAOD,QAAUA,EAAiB,SrPo7uC5B,SAAUC,EAAQD,EAASH,GAEjC,YsP9tvCA,SAASkuL,GAAUC,EAAOC,EAAM54I,GAO9B,QAAS3B,KAEP,GADAw6I,KACIC,EAGF,YADAC,KAAc38J,OAAO7e,MAAM5R,UAAUyR,MAAMrS,KAAKmR,YAIlD8jC,GAAS/jC,MAAMsN,KAAMrN,WAGvB,QAASkP,KACP,IAAIytK,IAIJG,MACIF,GAAJ,CAOA,IAFAA,MAEQD,GAAUI,EAAcN,GAASK,GACvCA,KACAJ,EAAK7tL,KAAKwe,KAAM0vK,IAAe7tK,EAAMizB,EAKvC,IAFAy6I,KAEID,EAGF,WADA74I,GAAS/jC,MAAMsN,KAAMwvK,EAInBE,IAAeN,GAASK,IAC1BH,KACA74I,MA7CJ,GAAIi5I,GAAc,EACdJ,KACAC,KACAE,KACAD,QA6CJ3tK,KAGF,QAAS8tK,GAASxuI,EAAOkuI,EAAM54I,GAS7B,QAAS3B,GAAKpjB,EAAOtsB,EAAOM,GACtB4pL,IAEAlqL,GACFkqL,KACA74I,EAASrxC,KAETouB,EAAO9B,GAAShsB,GAEhB4pL,IAAWM,IAAc5tL,IAEby0C,EAAS,KAAMjjB,KAnB/B,GAAIxxB,GAASm/C,EAAMn/C,OACfwxB,IAEJ,IAAe,IAAXxxB,EAAc,MAAOy0C,GAAS,KAAMjjB,EAExC,IAAI87J,MACAM,EAAY,CAiBhBzuI,GAAMpB,QAAQ,SAAU3pB,EAAM1E,GAC5B29J,EAAKj5J,EAAM1E,EAAO,SAAUtsB,EAAOM,GACjCovC,EAAKpjB,EAAOtsB,EAAOM,OAlFzBtE,EAAQ0D,cACR1D,EAAQ+tL,UAAYA,EACpB/tL,EAAQuuL,SAAWA,GtP2zvCb,SAAUtuL,EAAQD,EAASH,GAEjC,YuPh0vCAI,GAAOD,UAA+B,mBAAXM,UAA0BA,OAAO6B,WAAY7B,OAAO6B,SAASE,gBvPs0vClF,SAAUpC,EAAQiE,EAAqBrE,GAE7C,YwPv0vCe,SAAS+9F,KAA4C,GAAfpnE,GAAe,yDAChE,QAA0C,IAAtCA,EAASlc,QAAQzU,IAAUqH,MACpB,wBACqC,IAArCspB,EAASlc,QAAQzU,IAAUsH,KAC3B,MAEJ,oBARX,kBxP21vCM,SAAUlN,EAAQD,EAASH,ayP31vCjC,GA4BA,QAAS4uL,GAAelxC,EAAOmxC,GAG7B,IAAK,GADDC,GAAK,EACAzuL,EAAIq9I,EAAM38I,OAAS,EAAGV,GAAK,EAAGA,IAAK,CAC1C,GAAIg0C,GAAOqpG,EAAMr9I,EACJ,OAATg0C,EACFqpG,EAAMt8H,OAAO/gB,EAAG,GACE,OAATg0C,GACTqpG,EAAMt8H,OAAO/gB,EAAG,GAChByuL,KACSA,IACTpxC,EAAMt8H,OAAO/gB,EAAG,GAChByuL,KAKJ,GAAID,EACF,KAAOC,IAAMA,EACXpxC,EAAMj0E,QAAQ,KAIlB,OAAOi0E,GAmJT,QAASpyF,GAAS9wC,GACI,gBAATA,KAAmBA,GAAc,GAE5C,IAGIna,GAHAqlF,EAAQ,EACRC,GAAO,EACPopG,IAGJ,KAAK1uL,EAAIma,EAAKzZ,OAAS,EAAGV,GAAK,IAAKA,EAClC,GAA2B,KAAvBma,EAAKm6I,WAAWt0J,IAGhB,IAAK0uL,EAAc,CACjBrpG,EAAQrlF,EAAI,CACZ,aAEgB,IAATslF,IAGXopG,KACAppG,EAAMtlF,EAAI,EAId,QAAa,IAATslF,EAAmB,GAChBnrE,EAAK5H,MAAM8yE,EAAOC,GA8D3B,QAAS/wD,GAAQo6J,EAAI77K,GACjB,GAAI67K,EAAGp6J,OAAQ,MAAOo6J,GAAGp6J,OAAOzhB,EAEhC,KAAK,GADD0zH,MACKxmI,EAAI,EAAGA,EAAI2uL,EAAGjuL,OAAQV,IACvB8S,EAAE67K,EAAG3uL,GAAIA,EAAG2uL,IAAKnoD,EAAI5lI,KAAK+tL,EAAG3uL,GAErC,OAAOwmI,GA3OX1mI,EAAQ+B,QAAU,WAIhB,IAAK,GAHD+sL,GAAe,GACfC,KAEK7uL,EAAIqR,UAAU3Q,OAAS,EAAGV,IAAM,IAAM6uL,EAAkB7uL,IAAK,CACpE,GAAIma,GAAQna,GAAK,EAAKqR,UAAUrR,GAAK05B,EAAQ69D,KAG7C,IAAoB,gBAATp9E,GACT,KAAM,IAAIyiB,WAAU,4CACVziB,KAIZy0K,EAAez0K,EAAO,IAAMy0K,EAC5BC,EAAsC,MAAnB10K,EAAK2rB,OAAO,IAWjC,MAJA8oJ,GAAeL,EAAeh6J,EAAOq6J,EAAaxyK,MAAM,KAAM,SAAS1Z,GACrE,QAASA,KACNmsL,GAAkBl+J,KAAK,MAEnBk+J,EAAmB,IAAM,IAAMD,GAAiB,KAK3D9uL,EAAQq4F,UAAY,SAASh+E,GAC3B,GAAI20K,GAAahvL,EAAQgvL,WAAW30K,GAChC40K,EAAqC,MAArBnoJ,EAAOzsB,GAAO,EAclC,OAXAA,GAAOo0K,EAAeh6J,EAAOpa,EAAKiC,MAAM,KAAM,SAAS1Z,GACrD,QAASA,KACNosL,GAAYn+J,KAAK,KAEjBxW,GAAS20K,IACZ30K,EAAO,KAELA,GAAQ40K,IACV50K,GAAQ,MAGF20K,EAAa,IAAM,IAAM30K,GAInCra,EAAQgvL,WAAa,SAAS30K,GAC5B,MAA0B,MAAnBA,EAAK2rB,OAAO,IAIrBhmC,EAAQ6wB,KAAO,WACb,GAAI43E,GAAQ71F,MAAM5R,UAAUyR,MAAMrS,KAAKmR,UAAW,EAClD,OAAOvR,GAAQq4F,UAAU5jE,EAAOg0E,EAAO,SAAS7lG,EAAG0tB,GACjD,GAAiB,gBAAN1tB,GACT,KAAM,IAAIk6B,WAAU,yCAEtB,OAAOl6B,KACNiuB,KAAK,OAMV7wB,EAAQkvL,SAAW,SAASr/J,EAAMk4B,GAIhC,QAASo6C,GAAK3vF,GAEZ,IADA,GAAI+yE,GAAQ,EACLA,EAAQ/yE,EAAI5R,QACE,KAAf4R,EAAI+yE,GADiBA,KAK3B,IADA,GAAIC,GAAMhzE,EAAI5R,OAAS,EAChB4kF,GAAO,GACK,KAAbhzE,EAAIgzE,GADOA,KAIjB,MAAID,GAAQC,KACLhzE,EAAIC,MAAM8yE,EAAOC,EAAMD,EAAQ,GAfxC11D,EAAO7vB,EAAQ+B,QAAQ8tB,GAAMiX,OAAO,GACpCihB,EAAK/nD,EAAQ+B,QAAQgmD,GAAIjhB,OAAO,EAsBhC,KAAK,GALDqoJ,GAAYhtF,EAAKtyE,EAAKvT,MAAM,MAC5B8yK,EAAUjtF,EAAKp6C,EAAGzrC,MAAM,MAExB1b,EAASs8B,KAAKgpD,IAAIipG,EAAUvuL,OAAQwuL,EAAQxuL,QAC5CyuL,EAAkBzuL,EACbV,EAAI,EAAGA,EAAIU,EAAQV,IAC1B,GAAIivL,EAAUjvL,KAAOkvL,EAAQlvL,GAAI,CAC/BmvL,EAAkBnvL,CAClB,OAKJ,IAAK,GADDovL,MACKpvL,EAAImvL,EAAiBnvL,EAAIivL,EAAUvuL,OAAQV,IAClDovL,EAAYxuL,KAAK,KAKnB,OAFAwuL,GAAcA,EAAY79J,OAAO29J,EAAQ38K,MAAM48K,IAExCC,EAAYz+J,KAAK,MAG1B7wB,EAAQuvL,IAAM,IACdvvL,EAAQwvL,UAAY,IAEpBxvL,EAAQyvL,QAAU,SAAUp1K,GAE1B,GADoB,gBAATA,KAAmBA,GAAc,IACxB,IAAhBA,EAAKzZ,OAAc,MAAO,GAK9B,KAAK,GAJDorB,GAAO3R,EAAKm6I,WAAW,GACvBk7B,EAAmB,KAAT1jK,EACVw5D,GAAO,EACPopG,KACK1uL,EAAIma,EAAKzZ,OAAS,EAAGV,GAAK,IAAKA,EAEtC,GAAa,MADb8rB,EAAO3R,EAAKm6I,WAAWt0J,KAEnB,IAAK0uL,EAAc,CACjBppG,EAAMtlF,CACN,YAIJ0uL,KAIJ,QAAa,IAATppG,EAAmBkqG,EAAU,IAAM,IACnCA,GAAmB,IAARlqG,EAGN,IAEFnrE,EAAK5H,MAAM,EAAG+yE,IAiCvBxlF,EAAQmrD,SAAW,SAAU9wC,EAAMs1K,GACjC,GAAI38K,GAAIm4C,EAAS9wC,EAIjB,OAHIs1K,IAAO38K,EAAE8zB,QAAQ,EAAI6oJ,EAAI/uL,UAAY+uL,IACvC38K,EAAIA,EAAE8zB,OAAO,EAAG9zB,EAAEpS,OAAS+uL,EAAI/uL,SAE1BoS,GAGThT,EAAQ4vL,QAAU,SAAUv1K,GACN,gBAATA,KAAmBA,GAAc,GAQ5C,KAAK,GAPDw1K,IAAY,EACZC,EAAY,EACZtqG,GAAO,EACPopG,KAGAmB,EAAc,EACT7vL,EAAIma,EAAKzZ,OAAS,EAAGV,GAAK,IAAKA,EAAG,CACzC,GAAI8rB,GAAO3R,EAAKm6I,WAAWt0J,EAC3B,IAAa,KAAT8rB,GASS,IAATw5D,IAGFopG,KACAppG,EAAMtlF,EAAI,GAEC,KAAT8rB,GAEkB,IAAd6jK,EACFA,EAAW3vL,EACY,IAAhB6vL,IACPA,EAAc,IACK,IAAdF,IAGTE,GAAe,OArBb,KAAKnB,EAAc,CACjBkB,EAAY5vL,EAAI,CAChB,QAuBR,OAAkB,IAAd2vL,IAA4B,IAATrqG,GAEH,IAAhBuqG,GAEgB,IAAhBA,GAAqBF,IAAarqG,EAAM,GAAKqqG,IAAaC,EAAY,EACjE,GAEFz1K,EAAK5H,MAAMo9K,EAAUrqG,GAa9B,IAAI1+C,GAA6B,MAApB,KAAKA,QAAQ,GACpB,SAAUF,EAAK2+C,EAAO9zC,GAAO,MAAO7K,GAAIE,OAAOy+C,EAAO9zC,IACtD,SAAU7K,EAAK2+C,EAAO9zC,GAEpB,MADI8zC,GAAQ,IAAGA,EAAQ3+C,EAAIhmC,OAAS2kF,GAC7B3+C,EAAIE,OAAOy+C,EAAO9zC,MzPi2vCJrxC,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,a0PhpwCjC,GAsBA,QAASqhB,MA8CT,QAAS8uK,GAAU5rL,GACjB,IAAKs8B,EAASt8B,GAAM,MAAOA,EAC3B,IAAI6rL,KACJ,KAAK,GAAI5rL,KAAOD,GACV,MAAQA,EAAIC,IACd6rL,EAAwBD,EAAO5rL,EAAKD,EAAIC,GAG5C,OAAO4rL,GAAMp/J,KAAK,KAYpB,QAASq/J,GAAwBD,EAAO5rL,EAAKkyC,GAC3C,GAAI3jC,MAAM+c,QAAQ4mB,GAChB,MAAOA,GAAIoI,QAAQ,SAASpH,GAC1B24I,EAAwBD,EAAO5rL,EAAKkzC,IAEjC,IAAI7W,EAAS6V,GAClB,IAAI,GAAI45I,KAAU55I,GAChB25I,EAAwBD,EAAO5rL,EAAM,IAAM8rL,EAAS,IAAK55I,EAAI45I,QAIjEF,GAAMnvL,KAAKqrB,mBAAmB9nB,GAC1B,IAAM8nB,mBAAmBoqB,IAiB/B,QAAS65I,GAAYxpJ,GAMnB,IAAK,GAHDypJ,GACAt7E,EAHA3wG,KACA6rL,EAAQrpJ,EAAItqB,MAAM,KAIbpc,EAAI,EAAGuxC,EAAMw+I,EAAMrvL,OAAQV,EAAIuxC,IAAOvxC,EAC7CmwL,EAAOJ,EAAM/vL,GACb60G,EAAMs7E,EAAK/1K,QAAQ,MACP,GAARy6F,EACF3wG,EAAIw8G,mBAAmByvE,IAAS,GAEhCjsL,EAAIw8G,mBAAmByvE,EAAK59K,MAAM,EAAGsiG,KACnC6L,mBAAmByvE,EAAK59K,MAAMsiG,EAAM,GAI1C,OAAO3wG,GA8DT,QAASksL,GAAY1pJ,GACnB,GAEItW,GACAgU,EACAs/G,EACArtG,EALA1H,EAAQjI,EAAItqB,MAAM,SAClBi0K,IAMJ1hJ,GAAMtd,KAEN,KAAK,GAAIrxB,GAAI,EAAGuxC,EAAM5C,EAAMjuC,OAAQV,EAAIuxC,IAAOvxC,EAC7CokC,EAAOuK,EAAM3uC,GACbowB,EAAQgU,EAAKhqB,QAAQ,KACrBspI,EAAQt/G,EAAK7xB,MAAM,EAAG6d,GAAO2E,cAC7BshB,EAAM4rD,EAAK79D,EAAK7xB,MAAM6d,EAAQ,IAC9BigK,EAAO3sC,GAASrtG,CAGlB,OAAOg6I,GAWT,QAASC,GAAOC,GACd,MAAO,cAAcjsJ,KAAKisJ,GAW5B,QAASnuL,GAAKskC,GACZ,MAAOA,GAAItqB,MAAM,SAASpb,QAW5B,QAAS0wB,GAAOgV,GACd,MAAOA,GAAItqB,MAAM,SAASzS,OAAO,SAASzF,EAAKwiC,GAC7C,GAAI22G,GAAQ32G,EAAItqB,MAAM,SAClBjY,EAAMk5I,EAAMr8I,QACZq1C,EAAMgnG,EAAMr8I,OAGhB,OADImD,IAAOkyC,IAAKnyC,EAAIC,GAAOkyC,GACpBnyC,OAkDX,QAASssL,GAASC,EAAKh2K,GACrBA,EAAUA,MACViE,KAAK+xK,IAAMA,EACX/xK,KAAKgyK,IAAMhyK,KAAK+xK,IAAIC,IAEpBhyK,KAAK87F,KAA2B,QAAlB97F,KAAK+xK,IAAInmJ,SAA8C,KAA1B5rB,KAAKgyK,IAAIC,cAAiD,SAA1BjyK,KAAKgyK,IAAIC,wBAAoCjyK,KAAKgyK,IAAIC,aAC5HjyK,KAAKgyK,IAAIE,aACT,KACLlyK,KAAKmyK,WAAanyK,KAAK+xK,IAAIC,IAAIG,WAC/BnyK,KAAKoyK,qBAAqBpyK,KAAKgyK,IAAI1kI,QACnCttC,KAAKowC,OAASpwC,KAAKqyK,QAAUX,EAAY1xK,KAAKgyK,IAAIM,yBAIlDtyK,KAAKowC,OAAO,gBAAkBpwC,KAAKgyK,IAAIO,kBAAkB,gBACzDvyK,KAAKwyK,qBAAqBxyK,KAAKowC,QAC/BpwC,KAAKigD,KAA0B,QAAnBjgD,KAAK+xK,IAAInmJ,OACjB5rB,KAAKyyK,WAAWzyK,KAAK87F,KAAO97F,KAAK87F,KAAO97F,KAAKgyK,IAAIrhH,UACjD,KAiJN,QAAS+hH,GAAQ9mJ,EAAQgoB,GACvB,GAAI1yC,GAAOlB,IACXA,MAAK2yK,OAAS3yK,KAAK2yK,WACnB3yK,KAAK4rB,OAASA,EACd5rB,KAAK4zC,IAAMA,EACX5zC,KAAKowC,UACLpwC,KAAK4yK,WACL5yK,KAAKq4E,GAAG,MAAO,WACb,GAAInzF,GAAM,KACN4iI,EAAM,IAEV,KACEA,EAAM,GAAIgqD,GAAS5wK,GACnB,MAAM1e,GAQN,MAPA0C,GAAM,GAAIlC,OAAM,0CAChBkC,EAAIqyB,SACJryB,EAAIq4K,SAAW/6K,EAEf0C,EAAI2tL,YAAc3xK,EAAK8wK,KAAO9wK,EAAK8wK,IAAIE,aAAehxK,EAAK8wK,IAAIE,aAAe,KAE9EhtL,EAAI4tL,WAAa5xK,EAAK8wK,KAAO9wK,EAAK8wK,IAAI1kI,OAASpsC,EAAK8wK,IAAI1kI,OAAS,KAC1DpsC,EAAKu1B,SAASvxC,GAGvBgc,EAAKyqB,KAAK,WAAYm8F,EAEtB,IAAIirD,EACJ,MACMjrD,EAAIx6E,OAAS,KAAOw6E,EAAIx6E,QAAU,OACpCylI,EAAU,GAAI/vL,OAAM8kI,EAAIqqD,YAAc,8BACtCY,EAAQxV,SAAWr4K,EACnB6tL,EAAQpiH,SAAWm3D,EACnBirD,EAAQzlI,OAASw6E,EAAIx6E,QAEvB,MAAM9qD,GACNuwL,EAAUvwL,EAIRuwL,EACF7xK,EAAKu1B,SAASs8I,EAASjrD,GAEvB5mH,EAAKu1B,SAAS,KAAMqxF,KAiZ1B,QAASkrD,GAAIp/H,EAAK55B,GAChB,GAAI+3J,GAAM17F,EAAQ,SAAUziC,EAE5B,OADI55B,IAAI+3J,EAAInrG,IAAI5sD,GACT+3J,EA/4BT,GAAIviI,EACkB,oBAAX9tD,QACT8tD,EAAO9tD,OACkB,mBAATwf,MAChBsuC,EAAOtuC,MAEP/b,EAAQyN,KAAK,uEACb48C,EAAOxvC,KAGT,IAAIizK,GAAU,EAAQ,KAClBC,EAAc,EAAQ,KACtBpxJ,EAAW,EAAQ,KAYnBu0D,EAAUh1F,EAAOD,QAAU,EAAQ,KAAa0jB,KAAK,KAAM4tK,EAM/Dr8F,GAAQ88F,OAAS,WACf,MAAI3jI,EAAK4jI,gBACA5jI,EAAKl0C,UAAY,SAAWk0C,EAAKl0C,SAAS2B,UACvCuyC,EAAK6jI,eACf,MAAO,IAAID,eAEX,KAAM,MAAO,IAAIC,eAAc,qBAAwB,MAAM7wL,IAC7D,IAAM,MAAO,IAAI6wL,eAAc,sBAAyB,MAAM7wL,IAC9D,IAAM,MAAO,IAAI6wL,eAAc,sBAAyB,MAAM7wL,IAC9D,IAAM,MAAO,IAAI6wL,eAAc,kBAAqB,MAAM7wL,IAE5D,KAAMQ,OAAM,yDAWd,IAAIugG,GAAO,GAAGA,KACV,SAASl+F,GAAK,MAAOA,GAAEk+F,QACvB,SAASl+F,GAAK,MAAOA,GAAE0nB,QAAQ,eAAgB,IAiDlDspE,GAAQi9F,gBAAkBlC,EAkC3B/6F,EAAQm7F,YAAcA,EAStBn7F,EAAQ4vB,OACNrK,KAAM,YACNqwE,KAAM,mBACNsH,IAAK,kBACLC,WAAY,oCACZ,KAAQ,oCACR,YAAa,qCAYdn9F,EAAQ+6F,WACN,oCAAqCA,EACrC,mBAAoBjtK,KAAKC,WAY5BiyE,EAAQ9+D,OACN,oCAAqCi6J,EACrC,mBAAoBrtK,KAAKoT,OAuJ3Bu6J,EAAS1vL,UAAUwC,IAAM,SAASogJ,GAChC,MAAOhlI,MAAKowC,OAAO40F,EAAM3uH,gBAe3By7J,EAAS1vL,UAAUowL,qBAAuB,SAASpiI,GAEjD,GAAIqjI,GAAKzzK,KAAKowC,OAAO,iBAAmB,EACxCpwC,MAAKtc,KAAOA,EAAK+vL,EAGjB,IAAIjuL,GAAMwtB,EAAOygK,EACjB,KAAK,GAAIhuL,KAAOD,GAAKwa,KAAKva,GAAOD,EAAIC,IAcvCqsL,EAAS1vL,UAAUqwL,WAAa,SAASzqJ,GACvC,GAAIzQ,GAAQ8+D,EAAQ9+D,MAAMvX,KAAKtc,KAI/B,QAHK6zB,GAASq6J,EAAO5xK,KAAKtc,QACxB6zB,EAAQ8+D,EAAQ9+D,MAAM,qBAEjBA,GAASyQ,IAAQA,EAAIhmC,QAAUgmC,YAAe7lC,SACjDo1B,EAAMyQ,GACN,MAwBN8pJ,EAAS1vL,UAAUgwL,qBAAuB,SAAS9kI,GAElC,OAAXA,IACFA,EAAS,IAGX,IAAI5pD,GAAO4pD,EAAS,IAAM,CAG1BttC,MAAKstC,OAASttC,KAAK8yK,WAAaxlI,EAChCttC,KAAK0zK,WAAahwL,EAGlBsc,KAAKvN,KAAO,GAAK/O,EACjBsc,KAAKjM,GAAK,GAAKrQ,EACfsc,KAAK2zK,YAAc,GAAKjwL,EACxBsc,KAAK4zK,YAAc,GAAKlwL,EACxBsc,KAAK5a,OAAS,GAAK1B,GAAQ,GAAKA,IAC5Bsc,KAAK6zK,UAIT7zK,KAAK8zK,SAAW,KAAOxmI,EACvBttC,KAAK+zK,UAAY,KAAOzmI,EACxBttC,KAAKg0K,WAAa,KAAO1mI,EACzBttC,KAAKi0K,aAAe,KAAO3mI,EAC3BttC,KAAKk0K,cAAgB,KAAO5mI,EAC5BttC,KAAKm0K,SAAW,KAAO7mI,EACvBttC,KAAKo0K,UAAY,KAAO9mI,GAU1BwkI,EAAS1vL,UAAUyxL,QAAU,WAC3B,GAAI9B,GAAM/xK,KAAK+xK,IACXnmJ,EAASmmJ,EAAInmJ,OACbgoB,EAAMm+H,EAAIn+H,IAEV5tB,EAAM,UAAY4F,EAAS,IAAMgoB,EAAM,KAAO5zC,KAAKstC,OAAS,IAC5DpoD,EAAM,GAAIlC,OAAMgjC,EAKpB,OAJA9gC,GAAIooD,OAASttC,KAAKstC,OAClBpoD,EAAI0mC,OAASA,EACb1mC,EAAI0uD,IAAMA,EAEH1uD,GAOTmxF,EAAQy7F,SAAWA,EA6DnBmB,EAAQP,EAAQtwL,UAChB,KAAK,GAAIqD,KAAOytL,GACdR,EAAQtwL,UAAUqD,GAAOytL,EAAYztL,EAyBvCitL,GAAQtwL,UAAUsB,KAAO,SAASA,GAEhC,MADAsc,MAAK8wB,IAAI,eAAgBulD,EAAQ4vB,MAAMviH,IAASA,GACzCsc,MAkBT0yK,EAAQtwL,UAAU6vL,aAAe,SAASt6I,GAExC,MADA33B,MAAKq0K,cAAgB18I,EACd33B,MAuBT0yK,EAAQtwL,UAAUkyL,OAAS,SAAS5wL,GAElC,MADAsc,MAAK8wB,IAAI,SAAUulD,EAAQ4vB,MAAMviH,IAASA,GACnCsc,MAaT0yK,EAAQtwL,UAAU81B,KAAO,SAASq8J,EAAMC,EAAMz4K,GAO5C,OANKA,IACHA,GACErY,KAAM,UAIFqY,EAAQrY,MACd,IAAK,QACH,GAAIskC,GAAMysJ,KAAKF,EAAO,IAAMC,EAC5Bx0K,MAAK8wB,IAAI,gBAAiB,SAAW9I,EACvC,MAEA,KAAK,OACHhoB,KAAK00K,SAAWH,EAChBv0K,KAAK20K,SAAWH,EAGpB,MAAOx0K,OAiBT0yK,EAAQtwL,UAAUmZ,MAAQ,SAASo8B,GAGjC,MAFI,gBAAmBA,KAAKA,EAAMy5I,EAAUz5I,IACxCA,GAAK33B,KAAK2yK,OAAOzwL,KAAKy1C,GACnB33B,MAoBT0yK,EAAQtwL,UAAUwyL,OAAS,SAAS5vC,EAAO6vC,EAAMC,GAE/C,MADA90K,MAAK+0K,eAAen6H,OAAOoqF,EAAO6vC,EAAMC,GAAYD,EAAKvwL,MAClD0b,MAGT0yK,EAAQtwL,UAAU2yL,aAAe,WAI/B,MAHK/0K,MAAKg1K,YACRh1K,KAAKg1K,UAAY,GAAIxlI,GAAKylI,UAErBj1K,KAAKg1K,WAYdtC,EAAQtwL,UAAUq0C,SAAW,SAASvxC,EAAK4iI,GACzC,GAAI9tG,GAAKha,KAAK61B,SACd71B,MAAKnd,eACLm3B,EAAG90B,EAAK4iI,IASV4qD,EAAQtwL,UAAU8yL,iBAAmB,WACnC,GAAIhwL,GAAM,GAAIlC,OAAM,+JACpBkC,GAAIiwL,eAEJjwL,EAAIooD,OAASttC,KAAKstC,OAClBpoD,EAAI0mC,OAAS5rB,KAAK4rB,OAClB1mC,EAAI0uD,IAAM5zC,KAAK4zC,IAEf5zC,KAAKy2B,SAASvxC,IAShBwtL,EAAQtwL,UAAUgzL,cAAgB,WAChC,GAAItyL,GAAUkd,KAAKq1K,SACfnwL,EAAM,GAAIlC,OAAM,cAAgBF,EAAU,cAC9CoC,GAAIpC,QAAUA,EACdkd,KAAKy2B,SAASvxC,IAShBwtL,EAAQtwL,UAAUkzL,mBAAqB,WACrC,GAAI/5K,GAAQyE,KAAK2yK,OAAO1gK,KAAK,IACzB1W,KACFyE,KAAK4zC,MAAQ5zC,KAAK4zC,IAAIl4C,QAAQ,KAC1B,IAAMH,EACN,IAAMA,IAadm3K,EAAQtwL,UAAUwkF,IAAM,SAAS5sD,GAC/B,GAAI9Y,GAAOlB,KACPgyK,EAAMhyK,KAAKgyK,IAAM37F,EAAQ88F,SACzBrwL,EAAUkd,KAAKq1K,SACfvuI,EAAO9mC,KAAKg1K,WAAah1K,KAAK+mC,KAGlC/mC,MAAK61B,UAAY7b,GAAM1X,EAGvB0vK,EAAIuD,mBAAqB,WACvB,GAAI,GAAKvD,EAAIwD,WAAb,CAIA,GAAIloI,EACJ,KAAMA,EAAS0kI,EAAI1kI,OAAS,MAAM9qD,GAAK8qD,EAAS,EAEhD,GAAI,GAAKA,EAAQ,CACf,GAAIpsC,EAAKu0K,SAAU,MAAOv0K,GAAKk0K,eAC/B,IAAIl0K,EAAKw0K,SAAU,MACnB,OAAOx0K,GAAKg0K,mBAEdh0K,EAAKyqB,KAAK,QAIZ,IAAIgqJ,GAAiB,SAASnzL,GACxBA,EAAEglJ,MAAQ,IACZhlJ,EAAEozL,QAAUpzL,EAAEqzL,OAASrzL,EAAEglJ,MAAQ,KAEnChlJ,EAAEy+I,UAAY,WACd//H,EAAKyqB,KAAK,WAAYnpC,GAEpBwd,MAAK81K,aAAa,cACpB9D,EAAI+D,WAAaJ,EAEnB,KACM3D,EAAIgE,QAAUh2K,KAAK81K,aAAa,cAClC9D,EAAIgE,OAAOD,WAAaJ,GAE1B,MAAMnzL,IA4BR,GArBIM,IAAYkd,KAAKu4G,SACnBv4G,KAAKu4G,OAASt0H,WAAW,WACvBid,EAAKu0K,YACLv0K,EAAK+0K,SACJnzL,IAILkd,KAAKs1K,qBAGDt1K,KAAK00K,UAAY10K,KAAK20K,SACxB3C,EAAIzkF,KAAKvtF,KAAK4rB,OAAQ5rB,KAAK4zC,KAAIA,EAAO5zC,KAAK00K,SAAU10K,KAAK20K,UAE1D3C,EAAIzkF,KAAKvtF,KAAK4rB,OAAQ5rB,KAAK4zC,KAAIA,GAI7B5zC,KAAKk2K,mBAAkBlE,EAAImE,oBAG3B,OAASn2K,KAAK4rB,QAAU,QAAU5rB,KAAK4rB,QAAU,gBAAmBkb,KAAS9mC,KAAKo2K,QAAQtvI,GAAO,CAEnG,GAAI4D,GAAc1qC,KAAK4yK,QAAQ,gBAC3BxB,EAAYpxK,KAAKq2K,aAAehgG,EAAQ+6F,UAAU1mI,EAAcA,EAAYhtC,MAAM,KAAK,GAAK,KAC3F0zK,GAAaQ,EAAOlnI,KAAc0mI,EAAY/6F,EAAQ+6F,UAAU,qBACjEA,IAAWtqI,EAAOsqI,EAAUtqI,IAIlC,IAAK,GAAIk+F,KAAShlI,MAAKowC,OACjB,MAAQpwC,KAAKowC,OAAO40F,IACxBgtC,EAAIsE,iBAAiBtxC,EAAOhlI,KAAKowC,OAAO40F,GAa1C,OAVIhlI,MAAKq0K,gBACPrC,EAAIC,aAAejyK,KAAKq0K,eAI1Br0K,KAAK2rB,KAAK,UAAW3rB,MAIrBgyK,EAAI19D,SAAKA,KAAOxtE,EAAuBA,EAAO,MACvC9mC,MAQTq2E,EAAQq8F,QAAUA,EAYlBr8F,EAAQzxF,IAAM,SAASgvD,EAAK9M,EAAM9sB,GAChC,GAAI+3J,GAAM17F,EAAQ,MAAOziC,EAIzB,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIx2K,MAAMurC,GAChB9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAaT17F,EAAQ/yF,KAAO,SAASswD,EAAK9M,EAAM9sB,GACjC,GAAI+3J,GAAM17F,EAAQ,OAAQziC,EAI1B,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIz9D,KAAKxtE,GACf9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAaT17F,EAAQt6E,QAAU,SAAS63C,EAAK9M,EAAM9sB,GACpC,GAAI+3J,GAAM17F,EAAQ,UAAWziC,EAI7B,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIz9D,KAAKxtE,GACf9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAkBT17F,EAAa,IAAI28F,EACjB38F,EAAgB,OAAI28F,EAYpB38F,EAAQkgG,MAAQ,SAAS3iI,EAAK9M,EAAM9sB,GAClC,GAAI+3J,GAAM17F,EAAQ,QAASziC,EAI3B,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIz9D,KAAKxtE,GACf9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAaT17F,EAAQmgG,KAAO,SAAS5iI,EAAK9M,EAAM9sB,GACjC,GAAI+3J,GAAM17F,EAAQ,OAAQziC,EAI1B,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIz9D,KAAKxtE,GACf9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAaT17F,EAAQogG,IAAM,SAAS7iI,EAAK9M,EAAM9sB,GAChC,GAAI+3J,GAAM17F,EAAQ,MAAOziC,EAIzB,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIz9D,KAAKxtE,GACf9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,K1PqpwCoBvwL,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,G2P1lyCjC,QAASy1L,GAAQ3xL,EAAQ0W,GACvBA,EAAO4iJ,EAAS5iJ,EAAM1W,EAKtB,KAHA,GAAI2sB,GAAQ,EACR1vB,EAASyZ,EAAKzZ,OAED,MAAV+C,GAAkB2sB,EAAQ1vB,GAC/B+C,EAASA,EAAOooJ,EAAM1xI,EAAKiW,MAE7B,OAAQA,IAASA,GAAS1vB,EAAU+C,SApBtC,GAAIs5J,GAAW,EAAQ,KACnBlR,EAAQ,EAAQ,IAsBpB9rJ,GAAOD,QAAUs1L,G3P4myCX,SAAUr1L,EAAQD,EAASH,G4PpnyCjC,QAASq9J,GAAM54J,EAAOX,GACpB,GAAIgsB,EAAQrrB,GACV,OAAM,CAER,IAAIhC,SAAcgC,EAClB,SAAY,UAARhC,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATgC,IAAiB0nJ,EAAS1nJ,KAGvBixL,EAAc/wJ,KAAKlgC,KAAWkxL,EAAahxJ,KAAKlgC,IAC1C,MAAVX,GAAkBW,IAASvD,QAAO4C,GAzBvC,GAAIgsB,GAAU,EAAQ,IAClBq8H,EAAW,EAAQ,KAGnBwpC,EAAe,mDACfD,EAAgB,OAuBpBt1L,GAAOD,QAAUk9J,G5P0oyCX,SAAUj9J,EAAQD,EAASH,G6PzpyCjC,QAAS41L,GAASt3I,GAChB,GAAI7tB,IAAS,EACT1vB,EAAoB,MAAXu9C,EAAkB,EAAIA,EAAQv9C,MAG3C,KADAge,KAAK8B,UACI4P,EAAQ1vB,GAAQ,CACvB,GAAI69D,GAAQtgB,EAAQ7tB,EACpB1R,MAAK8wB,IAAI+uB,EAAM,GAAIA,EAAM,KApB7B,GAAIi3H,GAAgB,EAAQ,KACxBC,EAAiB,EAAQ,KACzBC,EAAc,EAAQ,KACtBC,EAAc,EAAQ,KACtBC,EAAc,EAAQ,IAqB1BL,GAASz0L,UAAU0f,MAAQg1K,EAC3BD,EAASz0L,UAAkB,OAAI20L,EAC/BF,EAASz0L,UAAUwC,IAAMoyL,EACzBH,EAASz0L,UAAU2uC,IAAMkmJ,EACzBJ,EAASz0L,UAAU0uC,IAAMomJ,EAEzB71L,EAAOD,QAAUy1L,G7P6qyCX,SAAUx1L,EAAQD,EAASH,G8PlryCjC,QAAS+5F,GAAWt1F,GAClB,IAAKo8B,EAASp8B,GACZ,OAAM,CAIR,IAAI83E,GAAMk0B,EAAWhsG,EACrB,OAAO83E,IAAO25G,GAAW35G,GAAO45G,GAAU55G,GAAO65G,GAAY75G,GAAO85G,EAjCtE,GAAI5lF,GAAa,EAAQ,IACrB5vE,EAAW,EAAQ,IAGnBu1J,EAAW,yBACXF,EAAU,oBACVC,EAAS,6BACTE,EAAW,gBA6Bfj2L,GAAOD,QAAU45F,G9PmtyCX,SAAU35F,EAAQD,EAASH,G+PvvyCjC,GAAIgxG,GAAY,EAAQ,IACpBziD,EAAO,EAAQ,IAGf5S,EAAMq1D,EAAUziD,EAAM,MAE1BnuD,GAAOD,QAAUw7C,G/P8vyCX,SAAUv7C,EAAQD,GgQvuyCxB,QAAS25F,GAASr1F,GAChB,MAAuB,gBAATA,IACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS65J,EA9B7C,GAAIA,GAAmB,gBAiCvBl+J,GAAOD,QAAU25F,GhQ2wyCX,SAAU15F,EAAQD,GiQ7xyCxB,QAAS2sJ,GAASroJ,GAChB,MAAOA,GAGTrE,EAAOD,QAAU2sJ,GjQozyCX,SAAU1sJ,EAAQD,EAASH,GkQxzyCjC,QAASmhK,GAASr9J,GAChB,IAAK06J,EAAY16J,GACf,MAAOwyL,GAAWxyL,EAEpB,IAAI0lB,KACJ,KAAK,GAAIhlB,KAAOtD,QAAO4C,GACjB1C,EAAeb,KAAKuD,EAAQU,IAAe,eAAPA,GACtCglB,EAAOvoB,KAAKuD,EAGhB,OAAOglB,GA1BT,GAAIg1I,GAAc,EAAQ,KACtB83B,EAAa,EAAQ,KAGrBhqC,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,cAsBjChB,GAAOD,QAAUghK,GlQ+0yCX,SAAU/gK,EAAQD,EAASH,GmQ52yCjC,GAAIu2L,GAAW,EAAQ,KACnB56I,EAAM,EAAQ,KACd15C,EAAU,EAAQ,KAClBu0L,EAAM,EAAQ,KACdC,EAAU,EAAQ,KAClBhmF,EAAa,EAAQ,IACrBimF,EAAW,EAAQ,KAYnBC,EAAqBD,EAASH,GAC9BK,EAAgBF,EAAS/6I,GACzBk7I,EAAoBH,EAASz0L,GAC7B60L,EAAgBJ,EAASF,GACzBO,EAAoBL,EAASD,GAS7BO,EAASvmF,GAGR8lF,GAnBa,qBAmBDS,EAAO,GAAIT,GAAS,GAAIU,aAAY,MAChDt7I,GA1BQ,gBA0BDq7I,EAAO,GAAIr7I,KAClB15C,GAzBY,oBAyBD+0L,EAAO/0L,EAAQC,YAC1Bs0L,GAzBQ,gBAyBDQ,EAAO,GAAIR,KAClBC,GAzBY,oBAyBDO,EAAO,GAAIP,OACzBO,EAAS,SAASvyL,GAChB,GAAI+kB,GAASinF,EAAWhsG,GACpBg6J,EA/BQ,mBA+BDj1I,EAAsB/kB,EAAM2Z,mBACnC84K,EAAaz4B,EAAOi4B,EAASj4B,GAAQ,EAEzC,IAAIy4B,EACF,OAAQA,GACN,IAAKP,GAAoB,MA/Bf,mBAgCV,KAAKC,GAAe,MAtCf,cAuCL,KAAKC,GAAmB,MArCf,kBAsCT,KAAKC,GAAe,MArCf,cAsCL,KAAKC,GAAmB,MArCf,mBAwCb,MAAOvtK,KAIXppB,EAAOD,QAAU62L,GnQm3yCX,SAAU52L,EAAQiE,EAAqBrE,GAE7C,YoQ35yCe,SAASgoG,GAAT,GAAgE,GAAhC9tB,GAAgC,EAAhCA,IAAOi9G,EAAyB,uDAAZ,GAAIloI,MAC7Dl9C,EAAMolL,EAAWjlE,UACjBklE,EAAa,GAAInoI,MAAKirB,GAAMg4C,SAElC,OAAO70F,MAAK+oD,OAAQgxG,EAAYrlL,GAAO,IAAQ,IAvBnD,OpQ+8yCM,SAAU3R,EAAQiE,EAAqBrE,GAE7C,YqQ/8yCe,SAASq3L,KAAoC,GAAfC,GAAe,0DAClDC,IACN,KAAK,GAAM/yL,KAAO8yL,GACd,GAAIA,EAASl2L,eAAeoD,GAAM,CAC9B,GAAIgzL,GAAeF,EAAS9yL,EAEP,UAAjBgzL,EACAA,KACwB,UAAjBA,IACPA,MAIS,YAARhzL,GAA6B,YAARA,GAAuC,UAAjBgzL,IAC5CA,EAAe,QAGP,oBAARhzL,EACA+yL,EAAA,QAA4BC,EAE5BD,EAAe/yL,GAAOgzL,EAIlC,MAAOD,GA1BX,OrQo/yCM,SAAUn3L,EAAQD,EAASH,GsQx+yCjC,QAASy3L,GAASllK,GAChB,GAAI9B,IAAS,EACT1vB,EAAmB,MAAVwxB,EAAiB,EAAIA,EAAOxxB,MAGzC,KADAge,KAAKk/I,SAAW,GAAI23B,KACXnlK,EAAQ1vB,GACfge,KAAKgmE,IAAIxyD,EAAO9B,IAlBpB,GAAImlK,GAAW,EAAQ,KACnB8B,EAAc,EAAQ,KACtBC,EAAc,EAAQ,IAqB1BF,GAASt2L,UAAU4jF,IAAM0yG,EAASt2L,UAAUF,KAAOy2L,EACnDD,EAASt2L,UAAU2uC,IAAM6nJ,EAEzBv3L,EAAOD,QAAUs3L,GtQ2/yCX,SAAUr3L,EAAQD,GuQ7gzCxB,QAASy3L,GAASrkF,EAAO/uG,GACvB,MAAO+uG,GAAMzjE,IAAItrC,GAGnBpE,EAAOD,QAAUy3L,GvQ4hzCX,SAAUx3L,EAAQiE,EAAqBrE,GAE7C,YAQA,SAASwuD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WwQ/izClb,QAASkpI,GAAkBp1L,EAAM6X,GAAO,UAC3C,yBAAAgd,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,GAAA+H,GAAA,yGACoBouK,IAAShzE,YAAT,KAA0BxqG,GAAO0qG,OAAQviH,KAD7D,cACGmjH,GADH,SAEc1tG,YAAYyJ,KAArB1G,EAFL,EAEKA,KACA88C,EAAWz9C,EAAXy9C,OAEFggI,EAAYhgI,GAAqB,WAAXA,GAAkC,SAAXA,EAC7C+1D,EAAWiqE,EAAYnyE,EAAShxF,OAAO,SAAAg2E,GAAA,MAAWA,GAAQsa,cAC3DtwF,OAAO,eAAGvxB,GAAH,EAAGA,KAAMu3H,EAAT,EAASA,UAAWpxD,EAApB,EAAoBA,aAAcnuD,EAAlC,EAAkCA,EAAlC,OACJ08C,KAAW10D,GACX00D,IAAW6iE,GACX7iE,IAAWyR,GACXzR,IAAW18C,IACZta,OAAS,IAAK6kH,EAZlB,kBAaIkyE,IAAS9xE,gCAAgC8H,EAAU7yG,GAbvD,2CAAP,yDAiBG,QAAS4qG,GAAyBpjH,EAAM6X,GAAO,UAClD,OAAAgd,GAAA,wBAAO,kHACoBwgK,IAASjyE,yBAAT,KAAuCvrG,GAAO0qG,OAAQviH,KAD1E,cACGmjH,GADH,yBAEIA,EAFJ,4CAMJ,QAAS/tD,KAA4B,WAAZv9C,EAAY,yDACxC,yBAAAgd,EAAA,wBAAO,WAAO1S,GAAP,GAAA8E,GAAA,gGACKguC,EAAmBp9C,EAAnBo9C,QAASC,EAAUr9C,EAAVq9C,MACbqgI,SACAC,SACAC,UAEAxgI,EAND,uBAOOI,IAAaguD,YAAapuD,EAASgT,UAAW,SAAU/S,SAC9DqgI,EAAWpzK,EAASihG,EAAyB,OAAQ/tD,IACrDmgI,EAAerzK,EAASihG,EAAyB,WAAY/tD,IAC7DogI,EAAatzK,EAASihG,EAAyB,SAAU/tD,IAV1D,UAW+CkgI,CAX/C,sCAW+DC,CAX/D,sCAWmFC,CAXnF,+CAWEF,EAXF,KAWYC,EAXZ,KAW0BC,EAX1B,uBAYSF,GAAYA,EAAS,IAAQC,GAAgBA,EAAa,IAAQC,GAAcA,EAAW,GAZpG,eAeHF,GAAWpzK,EAASizK,EAAkB,OAAQv9K,IAC9C29K,EAAerzK,EAASizK,EAAkB,WAAYv9K,IACtD49K,EAAatzK,EAASizK,EAAkB,SAAUv9K,IAjB/C,UAkB2C09K,CAlB3C,sCAkB2DC,CAlB3D,sCAkB+EC,CAlB/E,+CAkBFF,EAlBE,KAkBQC,EAlBR,KAkBsBC,EAlBtB,uBAmBIF,GAAYE,GAAcD,EAnB9B,4CAAP,uDxQghzC6B5zL,EAAuB,EAAIwzD,CACvC,IAAIgkE,GAAyC77H,EAAoB,IAC7Dm4L,EAAuDn4L,EAAoB,GAChGmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,KAyKjP,SAAUjgB,EAAQiE,EAAqBrE,GAE7C,YyQxozCO,SAASo4L,GAAcrmK,GAAQ,GAC3B1uB,GAA+C0uB,EAA/C1uB,KAAMkhH,EAAyCxyF,EAAzCwyF,GAAI/rG,EAAqCuZ,EAArCvZ,OAAQo1I,EAA6B77H,EAA7B67H,WAAYyqC,EAAiBtmK,EAAjBsmK,aASrC,IAAa,WAATh1L,GAAqBg1L,EACrB,MAAUC,GAAe9/K,EAAQo1I,GAAjC,IAAgDvqJ,EAAOkhH,EAAvD,aAAsE8zE,CAG1E,IAAI51L,GAAOY,CACPk1L,GAAiBzoJ,IAAIzsC,KACrBZ,EAAO,UAEX,IAAMiuD,GAAa2nI,EAAgBA,IAAIA,EAAkB,EACzD,OAASC,GAAe9/K,EAAQo1I,GAAhC,IAA+CnrJ,EAAOiuD,EAAa6zD,EAGhE,QAAS1zD,GAAT,GAoBJ,GAnBCr4C,GAmBD,EAnBCA,OACAo1I,EAkBD,EAlBCA,WACAh3H,EAiBD,EAjBCA,WACAwtF,EAgBD,EAhBCA,aACAl3D,EAeD,EAfCA,aACAkhG,EAcD,EAdCA,aACAC,EAaD,EAbCA,cACAh7I,EAYD,EAZCA,YAYD,IAXCgxG,sBAWD,EAXcl/G,IAAOyE,QAWrB,EAVC6sB,EAUD,EAVCA,QACY4hK,EASb,EATC3nI,WACAz1C,EAQD,EARCA,KACAsoE,EAOD,EAPCA,GACAlgF,EAMD,EANCA,KACAypD,EAKD,EALCA,UACAoQ,EAID,EAJCA,KACA1pD,EAGD,EAHCA,QACAkiD,EAED,EAFCA,aACAy4F,EACD,EADCA,SAEMqqC,EAA4B,kBAATn1L,EACnBo1L,EAASD,EAAmBn7J,KAAK+oD,MAAsB,IAAhB/oD,KAAK+oC,UAAoB,KAChEm+C,EAAK7sG,aACPkf,aACAwtF,eACAl3D,eACAkhG,eACAC,gBACApzI,OACAsoE,KACA8gC,aACAo0E,SACAplL,cACAojB,UACAq2B,YACAoQ,OACA1pD,UACA26I,aAGEx7F,EAAMylI,GAAe/0L,OAAMkhH,KAAI/rG,SAAQo1I,aAAYyqC,iBAIzD,OAFA9mL,GAAIupB,MAAJ,YAAsB63B,GAEfyiC,IAAQzxF,IAAIgvD,GACd9iB,IAAI,kBAAsB50B,EADxB,IACgC5H,GAClCw8B,IAAI,oBAAqB6lB,GACzB8/B,WAAWgjG,EAAkB,EAAIh2E,GACjCC,IAAIl8F,KACJ1kB,QAAQ6gH,GACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,IAEV8Q,MAAM,SAAC7rE,GAGJ,MAFAsN,GAAIpN,MAAJ,YAAsBwuD,EAAO1uD,EAAIooD,QACjCw2D,IAAgBn4E,KAAKo4E,IAA2B7+G,GAC5CA,EAAIooD,QAAU,KAAOpoD,EAAIooD,OAAS,IAC1BpoD,EAAI+6D,MAAQ/6D,EAAI+6D,KAAKhU,MAAQ/mD,EAAI+6D,KAAKhU,KAAK7mD,MAASF,EAAI+6D,KAAO0lD,EAEpE/B,IAASh/G,IAAIgvD,GAAKphB,KAAK,SAAAm+B,GAAA,MAAYA,eAI/C,QAAStd,GAAT,GAiBJ,GAhBC55C,GAgBD,EAhBCA,OACAo1I,EAeD,EAfCA,WACAv6I,EAcD,EAdCA,YACAujB,EAaD,EAbCA,WACAwtF,EAYD,EAZCA,aACAl3D,EAWD,EAXCA,aACAkhG,EAUD,EAVCA,aACAC,EASD,EATCA,cASD,IARChqC,sBAQD,EARcl/G,IAAOyE,QAQrB,EAPC6sB,EAOD,EAPCA,QACAxb,EAMD,EANCA,KACAsoE,EAKD,EALCA,GACAz2B,EAID,EAJCA,UACAoQ,EAGD,EAHCA,KAGD,IAFC5iD,iBAED,OADC6zI,EACD,EADCA,SAGQ97E,EAAuD/3D,EAAvD+3D,SAAU92D,EAA6CjB,EAA7CiB,QAASF,EAAoCf,EAApCe,GAAI62C,EAAgC53C,EAAhC43C,QAASs0D,EAAuBlsG,EAAvBksG,WAAYn6D,EAAW/xC,EAAX+xC,OAC9CqsI,GAAermH,WAAU92D,UAASF,KAAI62C,UAASs0D,aAAYn6D,UAE3Dk4D,EAAK7sG,YAAYA,KAChBghL,GACH9hK,aACAwtF,eACAl3D,eACAkhG,eACAC,gBACApzI,OACAsoE,KACA8gC,aACAhxG,cACAojB,UACAq2B,YACAoQ,OACAixF,cAEEx7F,EAAMA,GAAGowD,EAAcvqG,GAAUmgL,EAAQ,QAAS/qC,GAAcrpC,CAEtE,OAAKrjH,QAAO6I,KAAKuQ,OAAavZ,QAI9BwQ,EAAIupB,MAAJ,aAAuB63B,GAEhByiC,IAAQzxF,IAAIgvD,GACd9iB,IAAI,kBAAsB50B,EADxB,IACgC5H,GAClCovG,IAAIl8F,KACJ1kB,QAAQ6gH,GACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,IAEV8Q,MAAM,SAAC7rE,GAGJ,MAFAsN,GAAIpN,MAAJ,aAAuBwuD,EAAO1uD,EAAI2+G,eAClCC,IAAgBn4E,KAAKo4E,IAA2B7+G,GACzC0+G,IAASh/G,IAAIgvD,GAAKphB,KAAK,SAAAm+B,GAAA,MAAYA,gBAhBvCztE,IAAQG,OAAO,GAAIL,OAAM,qCAqBjC,QAASuwD,GAAT,GAkBJ,GAjBC95C,GAiBD,EAjBCA,OACAo1I,EAgBD,EAhBCA,WACAv6I,EAeD,EAfCA,YAeD,IAdCgxG,sBAcD,EAdcl/G,IAAOyE,QAcrB,EAbCgtB,EAaD,EAbCA,WACAwtF,EAYD,EAZCA,aACAl3D,EAWD,EAXCA,aACAkhG,EAUD,EAVCA,aACAC,EASD,EATCA,cACApzI,EAQD,EARCA,KACAurG,EAOD,EAPCA,WACAjjC,EAMD,EANCA,GACAz2B,EAKD,EALCA,UACAoQ,EAID,EAJCA,KACYm7H,EAGb,EAHC3nI,WAGD,IAFCp2C,iBAED,OADC6zI,EACD,EADCA,SAEM5pC,EAAK7sG,YAAYA,KAChB4C,GACHsc,aACAwtF,eACAl3D,eACAkhG,eACAC,gBACApzI,OACAurG,aACAjjC,KACA8gC,aACAhxG,cACAy5C,YACAoQ,OACAixF,cAEEz9F,EAAa2nI,EAAgBA,IAAIA,EAAkB,GACnD1lI,EAAMA,GAAGowD,EAAcvqG,GAAUmgL,EAAQ,QAAS/qC,GAAcl9F,EAAa6zD,CAEnF,OAAK8zE,IAIL9mL,EAAIupB,MAAJ,aAAuB63B,GAEhByiC,IAAQzxF,IAAIgvD,GACd9iB,IAAI,kBAAsB50B,EADxB,IACgC5H,GAClCovG,IAAIl8F,KACJ1kB,QAAQ6gH,GACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,IAEV8Q,MAAM,SAAC7rE,GAGJ,MAFAsN,GAAIpN,MAAJ,aAAuBwuD,EAAO1uD,GAC9B4+G,IAAgBn4E,KAAKo4E,IAA2B7+G,GACzC0+G,IAASh/G,IAAIgvD,GAAKphB,KAAK,SAAAm+B,GAAA,MAAYA,gBAhBvCztE,IAAQG,OAAO,GAAIL,OAAM,8BAoBjC,QAAS6vD,GAAT,GAoBJ,GAnBCp5C,GAmBD,EAnBCA,OACAo1I,EAkBD,EAlBCA,WACAh3H,EAiBD,EAjBCA,WACAwtF,EAgBD,EAhBCA,aACAl3D,EAeD,EAfCA,aACAkhG,EAcD,EAdCA,aACAC,EAaD,EAbCA,cACA18F,EAYD,EAZCA,SACAt+C,EAWD,EAXCA,YAWD,IAVCgxG,sBAUD,EAVcl/G,IAAOyE,QAUrB,EATC6sB,EASD,EATCA,QACAo7B,EAQD,EARCA,QACAC,EAOD,EAPCA,QACA72C,EAMD,EANCA,KACAsoE,EAKD,EALCA,GACAz2B,EAID,EAJCA,UACAoQ,EAGD,EAHCA,KACAxH,EAED,EAFCA,aACAy4F,EACD,EADCA,SAEM5pC,EAAK7sG,aACPkf,aACAwtF,eACAl3D,eACAkhG,eACAC,gBACA18F,WACAt+C,cACAgxG,aACA5tF,UACAo7B,UACAC,UACA72C,OACAsoE,KACAz2B,YACAoQ,OACAixF,aAGEx7F,EAAS2lI,EAAe9/K,EAAQo1I,GAAhC,UAAqDrpC,CAI3D,OAFAhzG,GAAIupB,MAAJ,kBAA4B63B,GAErByiC,IAAQzxF,IAAIgvD,GACd9iB,IAAI,kBAAsB50B,EADxB,IACgC5H,GAClCw8B,IAAI,oBAAqB6lB,GACzB+sD,IAAIl8F,KACJ1kB,QAAQ6gH,GACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,IAEV8Q,MAAM,SAAC7rE,GAGJ,MAFAsN,GAAIpN,MAAJ,kBAA4BwuD,EAAO1uD,EAAIkO,SACvC0wG,IAAgBn4E,KAAKo4E,IAA2B7+G,GACzC0+G,IAASh/G,IAAIgvD,GAAKphB,KAAK,SAAAm+B,GAAA,MAAYA,eAK/C,QAAShd,GAAT,GAMJ,GALCr/C,GAKD,EALCA,YAKD,IAJCgxG,sBAID,EAJcl/G,IAAOyE,QAIrB,EAHMgvL,EAGN,EAHCjmI,IACA+C,EAED,EAFCA,aACAy4F,EACD,EADCA,SAEM5pC,EAAK7sG,aAAc2sG,aAAYhxG,cAAa86I,aAC5Cx7F,EAAMA,GAAGimI,EAASr0E,CAIxB,OAFAhzG,GAAIupB,MAAJ,WAAqB63B,GAEjBA,EACOyiC,IAAQzxF,IAAIgvD,GACd8vD,IAAIl8F,KACJspB,IAAI,oBAAqB6lB,GACzB7zD,QAAQ6gH,GACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,IAEV8Q,MAAM,SAAA7rE,GAGH,MAFAsN,GAAIpN,MAAJ,WAAqBwuD,EAAO1uD,EAAIooD,QAChCw2D,IAAgBn4E,KAAKo4E,IAA2B7+G,GAC7B,MAAfA,EAAIooD,OACGq4D,EAEJ/B,IAASh/G,IAAIgvD,GAAKphB,KAAK,SAAAm+B,GAAA,MAAYA,eAG/CztE,IAAQG,OAAO,GAAIL,OAAM,oBAG7B,QAASm5D,GAAgB09H,GAC5B,GAAIjmI,GAAMimI,CAQV,OANkD,KAA3BjmI,EAAIl4C,QAAQ,aAC/Bk4C,EAAMA,EAAI7mC,QAAQ,UAAW,aAGjCva,EAAIupB,MAAJ,oBAA8B63B,GAEvByiC,IAAQzxF,IAAOgvD,IAA4B,IAAtBA,EAAIl4C,QAAQ,KAAc,IAAM,KAArD,QAAgEw0C,KAAKl9C,OACvEyjF,WAAW,GACXitB,IAAIl8F,KACJ1kB,QAAQ6gH,GACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,IAEV8Q,MAAM,SAAC7rE,GAGJ,MAFAsN,GAAIpN,MAAJ,oBAA8BwuD,EAAO1uD,EAAI2+G,eACzCC,IAAgBn4E,KAAKo4E,IAA2B7+G,GACzC0+G,IAASh/G,IAAIgvD,GAAKphB,KAAK,SAAAm+B,GAAA,MAAYA,eAI/C,QAAS8rD,KAAwE,GAA1DhjH,GAA0D,uDAAjD4sG,EAAO59G,KAA0C,mBAAlC6L,uBAAkC,EAApB,KAAoB,MAAd4H,gBAAc,EAAP,KAAO,EAC9EspG,EAAK7sG,aAAcrE,cAAa4H,SAChC03C,EAASowD,EAAcvqG,GAAvB,qEAAmG+rG,CACzG,OAAOnvB,aAAQziC,GACV8vD,IAAIl8F,KACJgrB,KAAK,SAACm+B,GACH,GAAMu1C,GAAav1C,EAAS1Q,KAAKlzB,SAEjC,OADA62E,KAAS9yE,IAAI8iB,EAAKsyD,GACXA,IAEVn1C,MAAM,SAAC7rE,GAEJ,MADAsN,GAAIpN,MAAM,iBAAkBF,EAAI2+G,eACzBD,IAASh/G,IAAIgvD,KAIzB,QAASg0D,KAAsE,GAA1DnuG,GAA0D,uDAAjD4sG,EAAO59G,KAA0C,mBAAlC6L,uBAAkC,EAApB,KAAoB,MAAd4H,gBAAc,EAAP,KAAO,EAC9EspG,EAAK7sG,aAAcrE,cAAa4H,SAChC03C,EAASowD,EAAcvqG,GAAvB,mEAAiG+rG,CACvG,OAAOnvB,aAAQziC,GACV8vD,IAAIl8F,KACJgrB,KAAK,SAACm+B,GACH,GAAMhF,GAAWgF,EAAS1Q,KAAKlzB,SAE/B,OADA62E,KAAS9yE,IAAI8iB,EAAK+X,GACXA,IAEVoF,MAAM,SAAC7rE,GAEJ,MADAsN,GAAIpN,MAAM,eAAgBF,EAAI2+G,eACvBD,IAASh/G,IAAIgvD,KAIvB,QAASgzC,GAAiBhzC,GAC7B,GAAIA,GAAsB,gBAARA,GAId,MAHiC,WAA7BlyD,OAAO4Z,SAAS2B,WAChB22C,EAAMA,EAAI7mC,QAAQ,UAAW,aAE1BspE,IAAQzxF,IAAIgvD,GAClB8vD,IAAIl8F,KACJ1kB,QAAQ6gH,GACRnxE,KAAK,YAAc,GAAXytB,GAAW,EAAXA,IAEL,OADA2jD,KAAS9yE,IAAI8iB,EAAKqM,GACXA,IAEV8Q,MAAM,SAAC7rE,GAGJ,MAFAsN,GAAIpN,MAAJ,cAAwBwuD,EAAO1uD,EAAI2+G,eACnCC,IAAgBn4E,KAAKo4E,IAA2B7+G,GACzC0+G,IAASh/G,IAAIgvD,GAAKphB,KAAK,SAAAm+B,GAAA,MAAYA,ezQoxyCtDxuE,OAAOsC,eAAea,EAAqB,cAAgBI,OAAMA,IAClCzE,EAAoBoD,EAAEiB,EAAqB,cAAe,WAAa,MAAOw0L,KAC9E74L,EAAoBoD,EAAEiB,EAAqB,sBAAuB,WAAa,MAAOqgH,KACtF1kH,EAAoBoD,EAAEiB,EAAqB,SAAU,WAAa,MAAOyT,KACzE9X,EAAoBoD,EAAEiB,EAAqB,gBAAiB,WAAa,MAAO0+G,KAChF/iH,EAAoBoD,EAAEiB,EAAqB,UAAW,WAAa,MAAOs0L,KAC1E34L,EAAoBoD,EAAEiB,EAAqB,iBAAkB,WAAa,MAAOi0L,KAC/Ej0L,EAAmC,cAAI+zL,EACvC/zL,EAA6B,QAAIwsD,EACjCxsD,EAA8B,SAAI+tD,EAClC/tD,EAA8B,SAAIiuD,EAClCjuD,EAAmC,cAAIutD,EACvCvtD,EAAsC,iBAAIquD,EAC1CruD,EAAqC,gBAAI62D,EACzC72D,EAAmC,cAAIm3H,EACvCn3H,EAAiC,YAAIsiH,EACrCtiH,EAAsC,iBAAIshG,CACtD,IAAIxtC,GAAyCn4D,EAAoB,IAC7D0uD,EAAiD1uD,EAAoB4D,EAAEu0D,GACvE2gI,EAAyC94L,EAAoB,IAC7D+4L,EAAiD/4L,EAAoB4D,EAAEk1L,GACvEvuI,EAA2CvqD,EAAoB,GAC/Dg5L,EAAoDh5L,EAAoB,IACxEi5L,EAA2Dj5L,EAAoB,IAC/Ek5L,EAA0Dl5L,EAAoB,KAC9Em5L,EAAoDn5L,EAAoB,IACxEo5L,EAA8Cp5L,EAAoB,IAClEq5L,EAAqDr5L,EAAoB,IACzEs5L,EAAuCt5L,EAAoB,GAC3Du5L,EAAyCv5L,EAAoB,IAC7Dw5L,EAAiDx5L,EAAoB4D,EAAE21L,GAC5Fp5K,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IyQ/uzC1O+kG,EAAWvgH,IAAhB0C,IAEFgK,EAAMmiG,IAASP,UAAU,WAEzBsmF,EAAgBt/K,IAAUi7C,QAE1BotD,EAAqB,GACrBE,EAAkB,IAIlB61E,EAAmB,GAAI/B,MACzB,mBACA,cACA,aACA,QACA,OACA,YACA,cACA,SACA,YACA,QACA,YACA,SACA,SACA,QACA,QACA,OACA,aACA,YAGSqC,GACTa,cAAe,gBACfC,oBAAqB,sBACrBC,sBAAuB,wBACvBC,6BAA8B,gCAGrBn1E,GACT15D,MACI7mD,OACIyrE,UAAWipH,EAAYa,cACvBvnL,QAAS,yBAKfo1G,GACF3e,OACItuD,KAAM,uCACNw/I,KAAM,4CACN7vJ,MAAO,6CACP8vJ,MAAO,+CAIFjiL,EAASA,KAAKyvG,EAA0BkyE,GAExC12E,EAAgB,WAAuB,GAAtBt6E,GAAsB,uDAAhB28E,EAAO59G,IACvC,OAAO27G,aAAcj2F,IAA0Bub,GAAKtb,aAG3CwrK,EAAU,WAAmC,GAAlCn+K,GAAkC,uDAA3B,OAAQwC,EAAmB,uDAAT,IAC7C,UAAUlF,EAAO8wF,MAAMpuF,GAAMsR,QAAQ,YAAa9O,IAGzCs7K,EAAiB,WAAuC,GAAtC7vJ,GAAsC,uDAAhC28E,EAAO59G,KAAMwV,EAAmB,uDAAT,IACxD,UAAU+lG,EAAct6E,GAAOkwJ,EAAQ,OAAQ37K,KzQko0C7C,SAAU5c,EAAQD,EAASH,G0Qxq0CjC,QAASqpE,GAAUnpB,EAAOmrI,EAAW2O,GACnC,GAAIj5L,GAAkB,MAATm/C,EAAgB,EAAIA,EAAMn/C,MACvC,KAAKA,EACH,OAAQ,CAEV,IAAI0vB,GAAqB,MAAbupK,EAAoB,EAAIC,EAAUD,EAI9C,OAHIvpK,GAAQ,IACVA,EAAQypK,EAAUn5L,EAAS0vB,EAAO,IAE7B0pK,EAAcj6I,EAAO2sG,EAAaw+B,EAAW,GAAI56J,GAnD1D,GAAI0pK,GAAgB,EAAQ,KACxBttC,EAAe,EAAQ,KACvBotC,EAAY,EAAQ,KAGpBC,EAAY78J,KAAKC,GAiDrBl9B,GAAOD,QAAUkpE,G1Qyt0CX,SAAUjpE,EAAQD,EAASH,G2Qjw0CjC,QAASo6L,GAAM97I,GACb,GAAIuH,GAAO9mC,KAAKk/I,SAAW,GAAIR,GAAUn/G,EACzCv/B,MAAK8/B,KAAOgH,EAAKhH,KAhBnB,GAAI4+G,GAAY,EAAQ,KACpB48B,EAAa,EAAQ,KACrBC,EAAc,EAAQ,KACtBC,EAAW,EAAQ,KACnBC,EAAW,EAAQ,KACnBC,EAAW,EAAQ,IAevBL,GAAMj5L,UAAU0f,MAAQw5K,EACxBD,EAAMj5L,UAAkB,OAAIm5L,EAC5BF,EAAMj5L,UAAUwC,IAAM42L,EACtBH,EAAMj5L,UAAU2uC,IAAM0qJ,EACtBJ,EAAMj5L,UAAU0uC,IAAM4qJ,EAEtBr6L,EAAOD,QAAUi6L,G3Qsx0CX,SAAUh6L,EAAQD,G4Qzy0CxB,QAASu6L,GAAW7qJ,GAClB,GAAIpf,IAAS,EACTjH,EAASzW,MAAM88B,EAAIgP,KAKvB,OAHAhP,GAAIiP,QAAQ,SAASr6C,GACnB+kB,IAASiH,GAAShsB,IAEb+kB,EAGTppB,EAAOD,QAAUu6L,G5Quz0CX,SAAUt6L,EAAQD,EAASH,GAEjC,Y6Q/z0CA,SAASumE,KACP,KAAMxnD,eAAgBwnD,IACpB,MAAO,IAAIA,GAXfrlE,OAAOsC,eAAerD,EAAS,cAC7BsE,OAAMA,IAiBR8hE,EAAcplE,UAAU8sE,WAAa,SAAoBz4B,KAOzD+wB,EAAcplE,UAAU2yB,gBAAkB,WACxC,OAAM,GAWRyyC,EAAcplE,UAAU+yB,oBAAsB,SAA6BshB,GACzE,KAAM,IAAIzzC,OAAM,4CAYlBwkE,EAAcplE,UAAUkuE,aAAe,SAAsBy9E,EAAUt3G,GACrE,KAAM,IAAIzzC,OAAM,qCAUlBwkE,EAAcplE,UAAUgsE,eAAiB,SAAwB33B,GAC/D,KAAM,IAAIzzC,OAAM,uCAWlBwkE,EAAcplE,UAAU8nE,sBAAwB,SAA+BzzB,GAC7E,KAAM,IAAIzzC,OAAM,8CAGlB5B,EAAQqtD,QAAU+Y,EAClBnmE,EAAOD,QAAUA,EAAiB,S7Q+00C5B,SAAUC,EAAQiE,EAAqBrE,GAE7C,Y8Q750CO,SAAS62D,KACZ,MAAO,UAACjyC,GAAD,MAAc3iB,KAAQyrC,KACzB9oB,EAASosC,eACTpsC,EAASqkF,kBAPjB,kBAAA5oG,EAAA,wB9Qo70CM,SAAUD,EAAQiE,EAAqBrE,GAE7C,Y+Qt70CA,gCAAO,IAAMiwJ,IACT1iJ,IAAK,MACL2iJ,WAAY,e/Qi80CV,SAAU9vJ,EAAQiE,EAAqBrE,GAE7C,YAOA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAV5c,GAAIy8K,GAA8C36L,EAAoB,KAClE46L,EAAsD56L,EAAoB4D,EAAE+2L,GAC5E15H,EAAyCjhE,EAAoB,IAC7D65D,EAAiD75D,EAAoB4D,EAAEq9D,GAC5F2C,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MgRt80C1hB+rF,E,YhRq90CF,QAASA,KAGL,MAFAjsF,GAAgB1jD,KAAM2vI,GAEf9rF,EAA2B7jD,MAAO2vI,EAAWrwI,WAAand,OAAOuuC,eAAei/G,IAAaj9I,MAAMsN,KAAMrN,YA4DpH,MAjEAmxD,GAAU6rF,EAAYmsC,GAQtBj3H,EAAa8qF,IACTlqJ,IAAK,SACLC,MAAO,SgR590CJqW,GACH,MAAO7Y,KAAQC,QAAQ4Y,MhR+90CvBtW,IAAK,SACLC,MAAO,WgR590CP,MAAOxC,KAAQC,ahRg+0CfsC,IAAK,SACLC,MAAO,WgR790CP,MAAOxC,KAAQC,ahRi+0CfsC,IAAK,OACLC,MAAO,WgR990CP,MAAOxC,KAAQC,ahRk+0CfsC,IAAK,QACLC,MAAO,WgR/90CP,MAAOxC,KAAQC,ahRm+0CfsC,IAAK,OACLC,MAAO,WgRh+0CP,MAAOxC,KAAQC,ahRo+0CfsC,IAAK,SACLC,MAAO,WgRj+0CP,MAAOxC,KAAQC,ahRq+0CfsC,IAAK,QACLC,MAAO,WgRl+0CP,MAAOxC,KAAQC,ahRs+0CfsC,IAAK,mBACLC,MAAO,WgRn+0CP,MAAOxC,KAAQC,ahRu+0CfsC,IAAK,sBACLC,MAAO,SgRr+0CSurJ,GAChB,MAAO/tJ,KAAQC,QAAQ8tJ,MhRw+0CvBxrJ,IAAK,iBACLC,MAAO,WgRr+0CP,MAAOxC,KAAQC,chR0+0CZwsJ,GgRph1CcmQ,IA8CVnQ,QhR6+0CT,SAAUtuJ,EAAQiE,EAAqBrE,GAE7C,YiR/h1Ce,SAAS86L,KAA2B,GAAZtlK,GAAY,uDAAJ,GACvCqxG,IACJ,KAEI,GAAMk0D,GAAWC,IAAUxlK,EAAM1J,QAAQ,UAAW,IAC5B,sBAAbivK,EAAP,cAAOA,MACPl0D,GAAQk0D,WAAUE,eAAcA,IAGtC,MAAO15L,GACLslI,GAAQo0D,eAAcA,EAAQC,UAAW35L,GAE7C,MAAOslI,GCZI,QAASzwE,GAAO8I,GAC3B,GAAM2nE,GAAMi0D,EAAe57H,EAC3B,IAAI2nE,EAAIo0D,cAAe,CAAC,GAAD,GAC8Bp0D,EAAIk0D,aADlC,IACXl8K,OADW,2BACA6V,aAEnB,cAHmB,QAEUK,KAAK,SAAAF,GAAA,MAAOA,GAAIq4B,aAAan4B,KAAK,SAAA2hB,GAAA,MAAOA,KAAQxwC,IAAa6H,aAEvF,OAAM,EAGd,OAAM,ElRyh1CV,GAAI8F,GAAM7T,EAAoB,KAC1B+tK,EAA2B/tK,EAAoB4D,EAAEiQ,GAGjDyhE,EAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,QAAUtkD,IAAQskD,OAAO1nD,UAAY,eAAkBoD,IAoBlQuP,EAAQ9T,EAAoB,EAGCqE,GAAuB,EAAI+xD,GA4BtD,SAAUh2D,EAAQiE,EAAqBrE,GAE7C,YAaA,SAASwuD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WmR/l1Clb,QAASwsI,KACZ,OACI14L,KAAM24L,EACNrrI,UAAWd,KAAKl9C,OAIjB,QAASspL,GAAelkH,GAC3B,OACI10E,KAAM64L,EACN1nK,aAAcq7B,KAAKl9C,MACnBolE,OAID,QAASokH,GAAO9lI,GACnB,MAAO,UAAC7wC,GAEJ,MADAA,GAASu2K,KACFK,EAAOC,YAAYhmI,GAAMlkB,KAAK,SAAC4lC,GAElC,MADAvyD,GAASy2K,EAAelkH,IACjBA,IACRrH,MAAM,WAEL,MADAlrD,GAASy2K,aAMd,QAAS3kI,KAAuB,UACnC,yBAAAp/B,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,oGACHkxC,IAAe,wBACXskB,EAAMD,YAAYv1D,MAClB2nC,YAAQ6tB,GAHT,sBAIsCx1D,IAJtC,IAIOowD,MAJP,kBAIgB9kB,EAJhB,EAIgBA,WAJhB,iCAMwBroC,EAAS2wC,cANjC,QAMKtI,EANL,mBASKA,EATL,0BAUsCtrC,IAVtC,IAUaowD,MAVb,kBAUsBtc,EAVtB,EAUsBA,KAVtB,UAWiB7wC,EAAS22K,EAAO9lI,GAXjC,SAWK0hB,EAXL,qBAcHtkB,KAAoB,wBAdjB,kBAeIskB,EAfJ,4CAAP,yDnRuj1C2Bn3E,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOi3L,KAIlEj3L,EAAuB,EAAIqyD,CACvC,IAAIglI,GAA6C17L,EAAoB,KACjE27L,EAAqD37L,EAAoB4D,EAAE83L,GAC3EE,EAAuD57L,EAAoB,IAC3E67L,EAA8C77L,EAAoB,IAClE87L,EAAkD97L,EAAoB,IACtE+7L,EAA+C/7L,EAAoB,ImRnm1C/Eo7L,EAAgB,gBAChBE,EAAmB,mBAE1BE,EAAS,GAAIQ,MAASC,aAAc,mBnR2v1CpC,SAAU77L,EAAQiE,EAAqBrE,GAE7C,YoRtw1Ce,SAASk8L,KAAyB,GAAfC,GAAe,0DACvCC,IAMN,OALAD,GAASr9I,QAAQ,SAACu9I,GACdA,EAASv9I,QAAQ,SAACr6C,GACd23L,EAAQn7L,KAAKwD,OAGd23L,ECHI,QAASrhI,KAA0D,GAA5BzJ,GAA4B,0DAAdjC,EAAc,0DAC1EitI,EAAe,CAEnB,OAAuB,KAAnBjtI,EAAQtuD,SAEJsa,GAAIi2C,EAAQwoB,KACZyiH,SAAUjrI,EAAQjuD,KAClBm5L,OAAQlrI,EAAQnF,YAGjB+vI,EACH7sI,EAAQz6B,OAAO,SAACu8B,GACZ,GAAIsrI,KAcJ,OAbAtrI,GAAOE,SAASvS,QAAQ,SAAC49I,EAAejsK,GAChCisK,EAAcrhL,KAAOi2C,EAAQj2C,KACzBi2C,EAAQsxC,WACJtxC,EAAQsxC,aAAezxC,EAAO9tD,OAC9Bo5L,KACAH,EAAe7rK,IAGnBgsK,KACAH,EAAe7rK,MAIpBgsK,IACR1rK,IAAI,SAACogC,GAAD,MAAYA,GAAOE,SAASz+C,MAAM0pL,EAAcnrI,EAAOE,SAAStwD,QAClEgwB,IAAI,SAAC2rK,GAAkB,MACyDA,EAArE5iH,KAAMz+D,WADM,EACD,KADC,IACyDqhL,EAApDr5L,KAAMk5L,WADX,EACsB,KADtB,IACyDG,EAA7BvwI,UAAWqwI,WADvC,EACgD,KADhD,CAEpB,OAAInhL,IAAMkhL,GAAYC,GAEdnhL,KACAkhL,WACAC,kBrRo31CxB,QAAS3sK,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GsRx51C1L,QAASgqL,KACAhnG,YAAe,gBAChBF,YAAe,kBCMR,QAASmnG,KAAuE,GAAtDC,GAAsD,uDAAvC,GAAIx4E,EAAmC,aAAvB56D,EAAuB,aAAVqzI,EAAU,aACvFC,EAA4B,gBAAbD,IAAsC,KAAbA,EAAmBA,EAAW,WAgB1E,OAZqB,KAAjBD,GAAwC,YAAjBA,IACvBE,EAAUA,EAAV,IAAkBF,GAGI,gBAAfx4E,IAA0C,KAAfA,IAClC04E,EAAUA,EAAV,IAAkB14E,GAGK,gBAAhB56D,IAA4C,KAAhBA,IACnCszI,EAAUA,EAAV,IAAkBtzI,GAGfszI,EvR8i2CX,QAASvuI,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WwRxj2Czb,QAASquI,GAAmB1zG,GACxB,MAA+B,gBAAjBA,KAA+E,IAAlDA,EAAal0D,cAAc3a,QAAQ,UAGlF,QAASwiL,GAAYtqI,GAAmE,gEAA5Dn9B,EAA4D,EAA5DA,MAAO0nK,EAAqD,EAArDA,UAAW72I,EAA0C,EAA1CA,SAAiB4gE,EAAyB,uDAAhBv6F,IAChEywK,EAASxqI,CACb,IACIn9B,GACAm9B,IACiC,IAAjCA,EAAIl4C,QAAQ,gBACd,CACE,GAAI2iL,GAAaA,UAAU5nK,EACvB6nK,EAAgB,EAEF,eAAdH,IACAE,iBAA4B5nK,EAC5B6nK,oBAAkCh3I,GAItC82I,EAASA,EAAOrxK,QAAQ,QAAS,UACjCqxK,KAAsC,IAAzBA,EAAO1iL,QAAQ,KAAc,IAAM,KAAhD,UAA6DwsG,EAASm2E,EAAaC,EAGvF,MAAOF,GCtCI,QAASG,GAAyBhsI,GAC7C,MAAKhI,aAAQgI,OAGAm9G,gBADeA,OADV8uB,YAAsBC,YAAiBlsI,EAAQnF,YAAcsxI,SAAU,KAC/E,IACoB/uB,eAAgB,SzRq01ClD,GAAI56J,GAAQ9T,EAAoB,GAG5BkoF,EAAYloF,EAAoB,GAGhCmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,I0R501CxO,WAACq9K,GAA6E,GAAxDC,GAAwD,0DAA/Bl1J,EAA+B,uDAAzB3jC,IAAQwD,KAAMyV,EAAW,aACjFwqE,EAAgBm1G,EAAhBn1G,kBACDm1G,GAAoBn1G,WAE3B,IAAIh6D,GAAOqB,GACI,SAAX7R,IACAwQ,EAAOoB,IAGX,IAAMiuK,GACFn9L,QACAA,OAAO4Z,UACP5Z,OAAO4Z,SAAS2B,UAChBvb,OAAO4Z,SAAS2B,SAASvB,QAAQ,UAAY,CAoCjD,QAhCIojL,iBACIC,KAASv1G,GAAc9/C,IAAQ3jC,IAAQwD,KAAO,YAAc,IAC5Dy1L,gBAAiBH,EAAmB,gBAAkB,eACtDI,uBAAwB,iBAE5BC,qBAAqBA,KAAMP,EAAwBC,GACnDO,WACIC,eAAcA,GAElBC,cACIC,UACI9vK,OACAwsE,SAAU,YACVlsE,OAAQ,MACRzmB,KACImmB,OACAwsE,SAAU,YACVlsE,OAAQ,OAEZrnB,MACI+mB,OACAwsE,SAAU,YACVlsE,OAAQ,QAGhByvK,kBACIxvK,KAAM4uK,EAAoB7/F,KAC1B7uE,KAAM0uK,EAAoB9/F,KAC1B8C,cAAeg9F,EAAoBh9F,kB1Ru11C/Cn6B,EAAgBvmE,EAAoB,KAGpCkyE,EAAoBlyE,EAAoB,IAGxCwlG,EAAUxlG,EAAoB,KAG9Bg/H,EAAgBh/H,EAAoB,IACpCi/H,EAAqCj/H,EAAoB4D,EAAEo7H,GAG3D5oG,EAAep2B,EAAoB,IsRn41CxB,aAAmC,GAAlCu+L,GAAkC,0DAAdjrI,EAAc,eACgBirI,EAAtDC,8BADsC,OACgBD,EAA1Bj2B,yBADU,IAG9C,IAAIk2B,GAA2C,gBAAdlrI,IAA+C,KAArBA,EAAUgvC,OAAe,CAChFq6F,GACA,IAAM8B,GAAuB9oG,YAAe,cAE5C,QAAiD,IAA7C8oG,EAAqBhkL,QAAQ64C,KAC7BmiC,YAAe,iBAAf,SAAkCgpG,IAA0BnrI,SAOpE,MAAOg1G,ItRq61CPh/G,EAAUtpD,EAAoB,IAG9B0+L,EAAsB1+L,EAAoB,KAuH1C2+L,GApHkB3+L,EAAoB,KAsCLA,EAAoB,KAYlCA,EAAoB,KAG1BA,EAAoB,KAGTA,EAAoB,KAgChBA,EAAoB,KAGrBA,EAAoB,KAGrCA,EAAoB,KAGrBA,EAAoB,KAmBdA,EAAoB,MAGnC8e,EAAQC,KAER6/K,EAA4B19L,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IwRzj2C3P+kG,EAAWvgH,IAAhB0C,IACJqjG,SA6BW,cAwBT,GAvBFpyF,GAuBE,EAvBFA,OACA8hD,EAsBE,EAtBFA,OAsBE,IArBFukI,yBAqBE,OApBFC,EAoBE,EApBFA,cAoBE,IAnBFpB,+BAmBE,OAlBFqB,EAkBE,EAlBFA,qBAkBE,IAjBFlkL,oBAiBE,KAhBF4xE,EAgBE,EAhBFA,OAgBE,IAfFtoF,iBAeE,EAfM,KAeN,EAdFskC,EAcE,EAdFA,IACAxtB,EAaE,EAbFA,KAaE,IAZF0X,oBAYE,OAXF3Z,EAWE,EAXFA,WACAgmL,EAUE,EAVFA,OACAv1E,EASE,EATFA,KACAw1E,EAQE,EARFA,aACAC,EAOE,EAPFA,UACAvyF,EAME,EANFA,cACAtzF,EAKE,EALFA,aACAklL,EAIE,EAJFA,cACA13B,EAGE,EAHFA,UAGE,IAFFlwI,oBAEE,OADFm3H,EACE,EADFA,aAEQx8F,EAAYgJ,EAAZhJ,QACM6tI,EAAcxsK,EAApBtvB,KAKF+7L,IAAmBvkL,KAAoB8xF,EACzC0yF,EAAU,KAERppG,EAAa/jB,YAAkB5X,EAAQt0D,IAAUuH,KACvCiwD,IAAmByyF,WAAW1iJ,IAAMiwD,IAAmByyF,WAAWC,WAC5E5/E,IACFgvH,SAAUC,EAAkB7B,KAAyBj1J,EAAKwtD,GAC1DupG,SAAUT,EACVU,WACI9mE,IAAK,QACLpvF,OAAQ,aAKZ+B,GAAO,KACPrU,UAEEyoK,GAAYb,EAAcrpK,KAWhC,IAVIkqK,KACAzoK,IACIzB,MAAOqpK,EAAcc,QAAUD,GAAYj/L,OAAO+yL,KAAKlnE,SAAShgG,mBAAmBozK,MACnFr5I,SAAU5lD,OAAO+yL,KAAKlnE,SAAShgG,mBAAmBuyK,EAAc9yH,YAAc,MAC9EmxH,UAAW2B,EAAc3B,WAAa,YACtC0C,YAAaf,EAAce,YAC3BjpK,aAIJ26B,EAAQ7uD,OAASmD,IAAYyG,IAAK,CAClC,GAAMwzL,MACFvlI,GAAOQ,UAAYR,EAAOQ,SAAS/5D,OAAS,EAC5C8+L,GAAY/kI,SAAWR,EAAOQ,SAE9B+kI,GAAYC,OAASxlI,EAAOj/C,GAG5BotB,IAAQ3jC,IAAQwD,OAChB+2L,GACIU,YAAa,6CAIrBz0J,QACOu0J,IACHV,YACAa,SAAU/kL,EACVk1I,aACI8vC,cAAerD,EAAiB8B,cAAuBjyG,EAAQ,UAEnEnc,UAAUA,KACHA,IACH+uH,YAEJpoK,QACAmmG,SA1DS,KA2DT4hE,SACAv1E,OACAw1E,eACAC,YACAgB,SAAQA,EACRpB,gBACAM,yBAED,IAAI9tI,EAAQ7uD,OAASmD,IAAYwG,QAAS,CAAC,GAAD,IACsBkuD,EAA3Dh6C,OAAgB6/K,GADqB,GAC3B19L,KAAsB29L,GADK,GACT/kL,GAAgBA,GAAei/C,EAAfj/C,GAAIgxC,GAAWiO,EAAXjO,OAClDg0I,IACFC,UAAWF,GAEXD,MAAep6L,IAAWqH,QAAUi/C,KAAWvmD,IAAcmH,SAC7DozL,GAAME,QAAUllL,IAGhBotB,IAAQ3jC,IAAQwD,OAChB+2L,GACIU,YAAa,4CAIrB,IAAM77F,IAAO1rF,IAAW4sG,EAAO/8G,IAC3Bm4L,eAAgB,kDAGpBl1J,OACI6zJ,YACAa,SAAU/kL,EACVmiH,SAzFS,KA0FT4hE,SACAv1E,OACAw1E,eACAC,YACA/uC,aACIswC,QAASnmI,EAAOj/C,IAEpBi1D,UAAUA,KACHA,IACH+uH,YAEJn7F,OACAk7F,oBACGiB,IACHppK,QACA6nK,gBACA36L,UAQR,GAJKmlD,YAAQi1I,KACTjzJ,GAAKo1J,QAAUC,EAAkBpC,EAAejtI,EAAQj2C,MAGvDiwB,GACD,MAAOA,GAGXA,IAAK44D,IAAM54D,GAAK44D,QAChB54D,GAAK44D,IAAI4pD,aAAeA,GAAgBphI,GAExC,IAAMk0K,KACDz8L,GACDm2D,EAAOlnC,WAAaknC,EAAOlnC,UAAUryB,QACrCu5D,EAAOlnC,UAAU2B,KAAK,SAAA2yC,GAAA,OAAa1hE,IAAUqH,KAAMrH,IAAUwH,MAAMiN,QAAQitD,IAAa,KACxFpN,EAAO1G,OAAS0G,EAAO1G,MAAMqH,KAG7B4lI,GAAsBA,KAAKxnL,GAEzBusG,GAAWg7E,GAAyBA,WAAzB,MAAAx8L,EAAA,wBAAyB,WAAOoxC,GAAP,UAAA9rB,EAAA,4BAAiB7K,EAAjB,4IACDysB,GADC,IAC9BrU,KAD8B,kBACtBimK,EADsB,EACtBA,WACZtyF,IAAW/rF,GAAyB,cAAdq+K,EAFY,oBAI5B4D,EAAgBv6H,IAAcE,QAJF,EAKEmkC,EAA5B3xB,EAL0B,EAK1BA,SAAU8nH,EALgB,EAKhBA,cACb9nH,EAN6B,sBAO9BzjC,GAAS,KAAMo1D,GAPe,oDAWPk2F,EAAcrxH,UAAUwJ,EAXjB,SAWxBvJ,EAXwB,OAYxBl6C,EAAQ/0B,OAAO+yL,KAAKlnE,SAAShgG,mBAAmBojD,EAASl6C,SACzD6wB,EAAW5lD,OAAO+yL,KAAKlnE,SAAShgG,mBAAmBojD,EAAS3D,YAAc,MAChFzgC,GAAKrU,MAASzB,QAAO6wB,WAAU62I,aACzB8D,EAAY/D,EAAY8D,EAAez1J,GAAKrU,KAAM62H,GACxDljD,OAAeA,GAASo2F,cACxBxrJ,EAAS,KAAMo1D,GAjBe,kDAmB9Bp1D,OAnB8B,wDA0BhB8T,YAAQu3I,IA1BQ,sBA0BeA,GA1Bf,yCA0B2C3lI,0BAAgBZ,EAAO1G,MAAMqH,KA1BxE,gCA0B5ByU,EA1B4B,OA4BEA,MAA5B7U,EA5B0B,EA4B1BA,cAAeoe,EA5BW,EA4BXA,SA5BW,EA6BGpe,MAAlBkmI,EA7Be,EA6B1BC,UA7B0B,uBA+B9BxrJ,GAAS,wBAAyB,MA/BJ,2BAkC5BwrJ,EAAY/D,EAAY8D,EAAez1J,GAAKrU,KAAM62H,GACxDljD,OAAe/vC,GAAekmI,gBAAeC,YAAW/nH,aACxD4nH,GAAsB,KACtBrrJ,EAAS,KAAMo1D,GArCmB,mDAuClCp1D,OAvCkC,6DAAzB,uDAyCb,KAEEyrJ,GACFL,KACC5nL,GACDshD,EAAOh6C,OAAO7d,OAASsD,IAAWoH,OAClC,IAAY,IAWhB,IAPIy4G,KACAt6E,GAAKwvB,SAAW,KAChBxvB,GAAKw0J,OAAS,OAKbx2I,YAAQu9G,GAAY,CACrB,GAAMq6B,IAAkB9pH,IAAOzzE,IAAI,cAAgB,GAC3CyjK,GAA+DP,EAA/DO,iBAAkB+5B,GAA6Ct6B,EAA7Cs6B,YAAaC,GAAgCv6B,EAAhCu6B,SAAUC,GAAsBx6B,EAAtBw6B,iBAOjD,IALA/1J,GAAKg2J,gBAAkBl6B,GACvB97H,GAAK6kH,YAAYgxC,YAAcA,GAC/B71J,GAAK6kH,YAAYixC,SAAWA,GAC5B91J,GAAK+1J,kBAAoBA,GAErBrE,EAAmB51B,IAAmB,CAAC,GAC/BK,IAAmCZ,EAAnCY,MAAOC,GAA4Bb,EAA5Ba,YAAa65B,GAAe16B,EAAf06B,GAAIl6B,GAAWR,EAAXQ,MAEhC/7H,IAAK6kH,YAAYqxC,UAAY,SAAC1yC,GAC1B,GAAMh0I,GAAUg0I,MACV2yC,EAAY3mL,EAAQ2mL,cACpBC,EAAaD,EAAUE,eA8B7B,OA5BIl6B,MACA3sJ,EAAQ2sJ,MAAQA,IAIhBC,KACA5sJ,EAAQ4sJ,YAAcA,IAGtBL,KACAvsJ,EAAQusJ,OAASA,IAIjBk6B,KACAzmL,EAAQymL,GAAM1mL,EAAY0mL,GAAGr4E,OAASq4E,GAAGt4E,SAGzCi4E,KACAQ,EAAWE,aAAeV,GAC1BO,EAAUI,WAAaX,GACC,SAApBA,KACAO,EAAUK,IAAM,KAEpBL,EAAUE,YAAcD,EACxB5mL,EAAQ2mL,UAAYA,GAGjB3mL,GAGPw2C,EAAQ7uD,OAASmD,IAAYwG,SAAWk/B,GAAKrU,OAC7CqU,GAAKrU,KAAK8qK,MAASt5J,IAAQ3jC,IAAQwD,KAAQ,OAAS,MACpDgjC,GAAKrU,KAAK+qK,WAAa56B,KAQnC,MAFA97H,IAAK22J,aAEL,KACO32J,IACHs6E,YACAq7E,gCACAiB,iBAAgBA,KxRqq2CpBC,EAAcniM,EAAoB,I2Rv+2CtC,iK3Rug3CM,SAAUI,EAAQiE,EAAqBrE,GAE7C,YAWA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAd5c,GAAIqlD,GAAsCvjE,EAAoB,GAC1DwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEm8D,EAA4C1/H,EAAoB,GAChEoiM,EAA2CpiM,EAAoB,IAC/DqiM,EAAmDriM,EAAoB4D,EAAEw+L,GACzEpmE,EAAuDh8H,EAAoB,GAChGmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M4R7g3C1hB2/H,E,YACF,WAAY1jL,GAAO,yEACTA,GADS,OAGf,GAAK4E,OACD++K,WAAUA,GAJC,E5R0o3CnB,MAhHA1/H,GAAUy/H,EAAa3jL,GAcvBilD,EAAa0+H,IACT99L,IAAK,oBACLC,MAAO,Y4Rji3CFsa,KAAKH,MAAMokH,UAAYjkH,KAAKF,QAAQ2jL,gBACrCzjL,KAAKF,QAAQ2jL,eAAeC,YAAY1jL,S5Rsi3C5Cva,IAAK,wBACLC,MAAO,S4Rni3CWid,GAClB,MAAI3C,MAAKH,MAAM8jL,IAAIrnL,KAAOqG,EAAUghL,IAAIrnL,M5Ryi3CxC7W,IAAK,uBACLC,MAAO,W4Rni3CFsa,KAAKH,MAAMokH,UACZjkH,KAAKF,QAAQ2jL,eAAeG,eAAe5jL,S5Rwi3C/Cva,IAAK,SACLC,MAAO,W4Rri3CF,MAcDsa,KAAKH,MAZL8gD,EAFC,EAEDA,UACAkjI,EAHC,EAGDA,mBACAC,EAJC,EAIDA,QACAxnL,EALC,EAKDA,GACAynL,EANC,EAMDA,QACAC,EAPC,EAODA,OACAC,EARC,EAQDA,YACA/tF,EATC,EASDA,KACAguF,EAVC,EAUDA,mBACA9tF,EAXC,EAWDA,SACA6tB,EAZC,EAYDA,SACA5jH,EAbC,EAaDA,OAGE8jL,KACAC,GAAY9nL,KAAI7W,IAAK6W,EAG3B,IAAI2nH,GAAyB,OAAb7tB,EACZ,MAAO,KA8BX,aA1BWF,EAAKC,MACZD,EAAKC,IAAMC,GAIfj0G,OAAO6I,KAAKkrG,GAAMn2D,QAAQ,SAACt6C,GACX,OAARA,GAA2B,OAAXywG,EAAK6X,GACrBo2E,EAASjiM,KAAQuD,EAAjB,IAAwBywG,EAAKzwG,MAKrC2+L,EAAQzjI,UAAYtS,IAAW,WAAYsS,GACvC,WAAYqjI,IAGhBI,EAAQ,kBAAoBhuF,EAExB6tF,IACAG,EAAQ,oBAAsB,QAG9BP,IACAO,EAAQ,6BAA+B,QAGvCL,EAAQ/hM,OAAS,EAAG,CACpB,GAAMqiM,GAAaN,EAAQ9xK,KAAK,IAChCmyK,GAAQ,mBAAqBC,EAGjC,GAAIP,EAAQ9hM,OAAS,EAAG,CACpB,GAAMsiM,GAAaR,EAAQ7xK,KAAK,IAChCmyK,GAAQ,mBAAqBE,EAGjC,GAAIH,EAASniM,OAAS,EAAG,CACrB,GAAMuiM,GAAUJ,EAASlyK,KAAK,IAC9BmyK,GAAQ,kBAAoBG,EAOhC,OAAM,IAJFL,IACAE,EAAQ,4BAA8B,QAItC/jL,EAAO,2BAAKuF,IAAI,UAAaw+K,S5Rwi3C9Bb,G4R3o3Ce7iL,YAwG1B6iL,GAAY97F,cACR9mC,UAAW,GACXmjI,WACAC,WACAC,QAAOA,EACP9tF,QACAguF,oBAAmBA,EACnB9tF,SAAU,KACV6tB,UAASA,EACT5jH,OAAQ,SAAAI,GAAA,MAAYA,KAmBxB8iL,EAAYv/K,cACRy/K,eAAgBn/H,YAAUv/D,OAG9B,IAAMkjB,GAAkB,SAACxD,GAAD,OACpBk/K,IAAKl/K,EAAMk/K,IACX1/D,SAAU/mH,YAAauH,IAGZ+pF,iBAAQvmF,GAAiBs7K,I5R8h3ClC,SAAUliM,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIujE,GAAsCvjE,EAAoB,GAE/EqmG,GADmErmG,EAAoB4D,EAAE2/D,GAClF,WAAc,GAAI+iC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,W6Rjr3Cn4B28F,EAAO,SAAC,GAA2C,GAAzC7jI,GAAyC,EAAzCA,UAAyC,IAA9Bya,oBAA8B,EAFpC,eAEoC,CACrD,QAAqC,IAAjCA,EAAS1/D,QAAQ,WACjB,mBAA0BilD,EAA1B,2BAA6Dya,GAJhD,gBAIb,kBAEJ,mBACoBza,UADpB,aAEkBya,EAFlB,UAEsC,cAFtC,IAEwD,gBAU7CopH,Q7R8r3CT,SAAUnjM,EAAQiE,EAAqBrE,GAE7C,Y8Rjt3Ce,SAAS4pG,GAAT,EAA2CjzE,GAAuC,QAAvDg9B,mBAAuD,OAA7B39B,EAA6B,yDAC7F,SAAIszB,IAAQqK,IAAYrK,IAAQ3yB,IAAa2yB,IAAQtzB,KAKjDW,EAASlc,QAAQzU,IAAUqH,OAAS,GACpCsmD,EAAQ5+B,KAAK,YAAwE,QAArE3B,qBAAqE,WAArD6lD,oBAAqD,EAA1C,GAA0C,EAAvBuqH,EAAuB,EAAtC34H,cACvCA,EAAgB24H,CACpB,KAAK34H,EAAe,CAChB,GAAMrhD,GAAS,0BAA0B8oF,KAAKr5B,EAC1CzvD,IAAUA,EAAO,KACjBqhD,EAAgBrhD,EAAO,IAG/B,MACIqhD,IACAz3C,EAAU3Y,QAAQzU,IAAUqH,OAAS,IACc,IAAnD2oB,EAAuBvb,QAAQowD,KArB/C,iBAAAxqE,EAAA,aAAAA,I9R2v3CM,SAAUD,EAAQiE,EAAqBrE,GAE7C,Y+Rpv3Ce,SAASyjM,KAAiD,gEAAhCp3I,EAAgC,EAAhCA,OAAeomI,EAAiB,uDAAJ,EACjE,OAA0B,gBAAXpmI,IAAyC,KAAlBA,EAAOi2C,QAAgC,KAAfmwF,GAAqBA,IAAepmI,ECEvF,QAASq3I,KAAkD,GAA9B/sK,GAA8B,0DAAfhE,EAAe,uDAAJ,EAClE,IAAwB,IAApBgE,EAAS51B,QAAoC,gBAAb4xB,IAA6C,KAApBA,EAAS2vE,OAClE,OAAM,CAGV,IAAIqhG,SAOJ,OALIA,GADAhxK,IAAa3sB,IAAUuH,IACDopB,EAAS/B,OAAO,SAAAqC,GAAA,OAA0C,IAAlCA,EAAKxc,QAAQzU,IAAUqH,QAAiD,IAAjC4pB,EAAKxc,QAAQzU,IAAUsH,OAEtFqpB,EAAS/B,OAAO,SAAAqC,GAAA,OAAoC,IAA5BA,EAAKxc,QAAQkY,OAG3DgxK,EAAoB5iM,OCnBb,QAAS6iM,GAAuBjwI,EAASh9B,GAAU,2BAC9D,YAAmBg9B,EAAnB,+CAA4B,CAAC,GAApB2G,GAAmB,QAClBupI,EAAqBH,EAAoB/sK,EAAU3wB,IAAUqH,OAASq2L,EAAoB/sK,EAAU3wB,IAAUsH,KAC9Gw2L,EAAqBJ,EAAoB/sK,EAAU3wB,IAAUuH,KAC7Dw2L,EAAc7xH,YAAkB5X,EAAQt0D,IAAUuH,KAClDy2L,EAAc9xH,YAAkB5X,EAAQt0D,IAAUqH,OAAS6kE,YAAkB5X,EAAQt0D,IAAUsH,IAErG,IAAKu2L,GAAsBG,GAAiBF,GAAsBC,EAC9D,MAAOzpI,IAR+C,6EAW9D,MAAO,MjS+13CX,QAAS9L,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WA6Ezb,QAASs1I,GAAmDlrK,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WkSl73Cnd,QAASu1I,GAAmBt/K,EAAUu/K,EAAqB7pI,GAC9D11C,EAASsqD,aACL5d,QAAS6yI,EACT7pI,YAEH/oB,KAAK,SAACzd,GACH,IAAKA,EACD,MAAOlP,GAASwnD,iBCdrB,QAASggC,GAAaxtF,GAAO,GAE5B0yC,GAWA1yC,EAXA0yC,QAF4B,EAa5B1yC,EAVA4rF,iBAH4B,OAa5B5rF,EATA+sF,kCAJ4B,OAa5B/sF,EARAytF,uBAL4B,OAa5BztF,EAPAyzD,oBAN4B,EAMjB,KANiB,IAa5BzzD,EANAwlL,+BAP4B,OAa5BxlL,EALA+jF,kBAR4B,KAS5BhxC,EAIA/yC,EAJA+yC,SACAE,EAGAjzC,EAHAizC,QACA3uB,EAEAtkB,EAFAskB,MACAuyC,EACA72D,EADA62D,OAGJ,IAAInkB,EAAS,CAAC,GAAD,GAC2CmkB,GAAWA,EAAQr6D,8BAA/DkwC,EADC,EACDA,SAAiB+4I,EADhB,EACS/pL,MAAoBgB,EAD7B,EAC6BA,SAD7B,EAEkB+oL,MAAnB3qE,EAFC,EAEDA,WAAYr+G,EAFX,EAEWA,GAEhBi4C,QAEAA,GADAqvC,GAAUtnF,GACGA,MACNg3D,GACMh3D,GAAIg3D,GAELf,YAAahgB,EAG7B,IAAMh3C,GAAQA,GACVq3C,WACAE,WACGyB,EACApwB,GAGHohK,EAAY34F,EAAyB,qBAAuB,SAShE,IARKy4F,IACDE,EAAYhpL,GAGZo+G,IACAp/G,EAAMo/G,WAAaA,GAGnBlvB,EAAO,CAEP,GAAI6B,EAAa,CACb,GAAM9iE,GAAS9oC,QAAUA,OAAO4Z,UAAY5Z,OAAO4Z,SAASqC,QAC5D,IAAI6sB,EAAQ,CACR,GAAI5sB,GAAOlc,OAAO4Z,SAASsC,MAAQ,EAInC,OAHa,KAATA,IACAA,MAAWA,GAEf,UAAiB4sB,EAAS5sB,EAAO2uC,EAAWg5I,EAAY5sL,YAAY4C,IAG5E,MAAM,GAAIgxC,EAAWg5I,EAAY5sL,YAAY4C,GAGjD,OACIgB,SAAUgpL,EACVhqL,SAIR,MAAO,MnSmj4CX,QAASupF,GAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GAEnN,QAASkkL,GAAmCxrK,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WoSpm4Cnc,QAASg3C,GAAiBr0C,EAAS0O,GAAe,UACrD,sBAAA1oC,GAAA,0BAAO,WAAO1S,EAAUjD,GAAjB,GAAA+H,GAAA,kGACGlG,EAAQ7B,IACRwiL,EAAsB1pI,YAAwBj3C,GAChDghL,EAAsBxkI,EAEtBmkI,EAAoB9oL,KAAOi2C,EAAQj2C,KACnCmpL,EAAsB96F,YAAsBlmF,IAN7C,EAQ6B2gL,EAAxBvwI,iBARL,OAQiBr4C,EAAY4oL,EAAZ5oL,QACZ0kD,EAAyBz8C,EAAMrL,IAA/B8nD,sBAGHukI,IAAuBA,EAAoBzjM,QAAUk/D,IAAyB1kD,EAZhF,0CAcK4oL,sBACAM,kBAAmBD,GAfxB,aAmBGhxI,EAAeI,EAAMC,QAnBxB,uBAqBCjvC,GAASu7C,eArBV,UAsBOv7C,EAAS60C,YAAmBjG,EAAcj4C,GAtBjD,eAuBOmpL,GAAch7F,YAAsB/nF,KAvB3C,mBAyBKwiL,sBACAM,kBAAmBC,GA1BxB,iFAAP,4BAAAptK,GAAA,0BA6GG,QAASqtK,GAAmB/lL,GAE/BwsD,QAAQC,QAAQ4+B,aAAa26F,cAC7BC,EAAqBjmL,GAErBne,OAAO+uF,OAAOllE,aAAe7pB,OAAO+uF,OAAOllE,YAAY7pB,OAAO2qE,QAAQC,QAAQ4+B,aAAa66F,KAAKC,cAG7F,QAASC,KACZ,GAAMC,GAAeC,YAAOzkM,OAAQ,oBAC9B0kM,EAAcD,YAAOzkM,OAAQ,kDAC7B2kM,EAAgBF,YAAOzkM,OAAQ,0CACrC,OAAOwkM,IAAgBE,GAAeC,EAGnC,QAASC,GAA0BzmL,GAAO,GAEzC0yC,GAKA1yC,EALA0yC,QACA1sC,EAIAhG,EAJAgG,SACA4nF,EAGA5tF,EAHA4tF,UACAlF,EAEA1oF,EAFA0oF,MALyC,EAOzC1oF,EADAkuF,QAAWn2E,oBAN8B,SAQpB26B,EAAjBqC,mBARqC,OASvC+G,EAAiBkpI,EAAuBjwI,EAASh9B,IAAag9B,EAAQ,EAC5E,IAAI+G,IACA91C,EAASk3C,eACTpB,EAAe20G,cACfzqJ,EAASs1C,eACTt1C,EAASqzC,YAAayC,IAElB8xC,GAAW,CAAC,GACJtB,GAAmB5D,EAAnB4D,OAAQwB,EAAWpF,EAAXoF,OACVP,EAAYC,EAAaA,KAAII,GACnCtB,GAAOjqG,KAAP,KACOkrG,GACH3oF,MAAMA,KAAKkpF,OpSi14C3B,QAAS44F,GAA2CvsK,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WAxvBld,GAAIu5B,GAAYloF,EAAoB,GAGhC8T,EAAQ9T,EAAoB,GAG5BspG,EAAatpG,EAAoB,IAGjCglK,EAAwBhlK,EAAoB,IAG5CkyE,EAAoBlyE,EAAoB,IqS1v3CrC,aAAP,GAAAuB,GAAA,0BAAO,WAAkDqqB,GAAlD,QAAAlC,EAAA,yGAECy6K,EAQAv4K,EARAu4K,oBACAv/K,EAOAgH,EAPAhH,SACA2gL,EAMA35K,EANA25K,WAJD,EAUC35K,EALAo0C,yBALD,SAUCp0C,EAJAkhF,mBAND,OAOC1xF,EAGAwQ,EAHAxQ,0BACAH,EAEA2Q,EAFA3Q,KACArC,EACAgT,EADAhT,QATD,EAYsBurL,EAAjBxwI,mBAZL,OAaGge,EAAche,EAAQ,OAExB8vI,EAAe9xH,EAAa,YAC5B/sD,EAASyrD,aACL9Q,YAAanxC,IACbkjC,QAAS6yI,EACT7pI,OAAQqX,KAEL4zH,EACP14F,GACI5xF,OACArC,UACAgM,WACAo7C,gBACA8sC,UACAx7C,QAAS6yI,EACT78F,OAASlsF,gCAEV,EAOuB0xF,EAAlBn2E,oBAPL,OAQG6uK,EAAsB5B,EAAuBjwI,EAASh9B,IAAag7C,EACzE/sD,EAASo3C,YAAcwpI,IAxCxB,8CAAP,0BAAAjkM,GAAA,0BrSu63CI60B,EAAep2B,EAAoB,IkSv53ChC,aAAP,GAAAuB,GAAA,0BAAO,WAAgDqqB,GAAhD,UAAAlC,EAAA,uFACK+7K,EAAmE75K,EAAnE65K,cAAetB,EAAoDv4K,EAApDu4K,oBADpB,EACwEv4K,EAA/BtR,iBADzC,OACmDsK,EAAqBgH,EAArBhH,SAAU01C,EAAW1uC,EAAX0uC,OAC1DorI,EAAgC,QAAfprL,EAAM2c,KACvB0uK,EAAoBhiM,YAAIgpB,KAE1B84K,EAAcj1K,MAAM,SAAAk3C,GAAA,MAAYA,KAAa1hE,IAAUuH,OAAQk2L,EAAenpI,EAAQ,YACtF11C,EAASyrD,aACL9Q,YAAanxC,IACbkjC,QAAS6yI,EACT7pI,YAEGmrI,EAAcj1K,MAAM,SAAAk3C,GAAA,MAAaA,KAAa1hE,IAAUqH,MAAQq6D,IAAa1hE,IAAUsH,OAC9Fo4L,GAAiBC,EACbzB,EAAmBt/K,EAAUu/K,EAAqB7pI,GAEtD11C,EAASyrD,aACL9Q,YAAanxC,IACbkjC,QAAS6yI,EACT7pI,WAlBL,8CAAP,0BAAA/4D,GAAA,0BlSw+3CI+vE,EAAetxE,EAAoB,IAGnC0X,EAAc1X,EAAoB,IAGlCmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAmFnP6kL,EAASllM,EAAoB,KAG7B0pG,EAAwB1pG,EAAoB,KAG5Cy6D,EAA0Bz6D,EAAoB,IAG9Ck/H,EAAYl/H,EAAoB,IAGhC6xJ,EAAgB7xJ,EAAoB,KAMpC4lM,GAHiB5lM,EAAoB,IAGTkB,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,KoS/j4CjQ,aAAP,GAAA9e,GAAA,0BAAO,WAAoCqd,GAApC,YAAA8K,EAAA,+IAEC4nC,GAOA1yC,EAPA0yC,QACAg2C,EAMA1oF,EANA0oF,MACAkF,EAKA5tF,EALA4tF,UACAxsC,EAIAphD,EAJAohD,cACAqS,EAGAzzD,EAHAyzD,SACAztD,EAEAhG,EAFAgG,SAPD,EASChG,EADAkuF,QAAWn2E,oBARZ,OAUKu0E,EAAmD5D,EAAnD4D,OAAQwB,EAA2CpF,EAA3CoF,OAVb,EAUwDpF,EAAnClsF,qCAVrB,OAWKkwC,EAAwClwC,EAAxCkwC,SAXL,EAW6ClwC,EAA9BE,oBAXf,EAW0B,GAX1B,IAW6CF,EAAfd,iBAX9B,OAaKurL,EAAoDvrL,EAApDurL,MAAOxqL,EAA6Cf,EAA7Ce,GAAIyqL,EAAyCxrL,EAAzCwrL,QAAStxI,EAAgCl6C,EAAhCk6C,gBAAoBuxI,EAb7C,EAayDzrL,GAbzD,2CAcCiqG,KACAshF,IAKAthF,KAAOshF,SAAUE,IApBlB,SAsBsDnhL,EAAS+gF,EAAiBr0C,EAAS0O,GAtBzF,iBAsBKykI,EAtBL,EAsBKA,kBAAmBN,EAtBxB,EAsBwBA,oBACrB6B,EAAmBC,EAAwBxB,EAAmBpyH,GAC5DuqB,EAAsBtrC,EAAtBsrC,UAAWvwC,EAAWiF,EAAXjF,OACb65I,EAAuB,gBAAdtpG,EACXopG,GAAoBjzL,MAAM+c,QAAQk2K,EAAiBryI,UAE7C2G,EAAS0rI,EAAiBryI,QAAQ,GAClCi4C,EAAUimD,YAAcv3F,EAAQ3jC,OAChCi1E,IAAYs6F,GAAU1xI,GAAmB2vI,EAAoB9oL,KAAOm5C,IAStE+vD,EAAGlpG,GAAKi/C,EAAOj/C,GACf5a,OAAO4Z,SAASyC,KAAhB,GAA0BwuC,EAAWhwC,EAAW5D,YAAY6sG,KAE5D3/F,EAASk3C,eACTxB,EAAO+0G,cACPzqJ,EAASs1C,eACTt1C,EAASqzC,YAAaqC,IASlBkyC,IACM43F,GAAuB8B,IAAY7qL,GAAMm5C,KAAqBg4C,IAAengD,IAAWvmD,IAAckH,SAC5Gw/F,EAAUl7C,QAAU6yI,EACdh4F,EAAYC,EAAaA,GAAEg4F,uBAAwB53F,IAErDL,EAAU7xF,QACV6xF,EAAU7xF,MAAV,KACOiqG,EACApY,EAAU7xF,OACb+3D,cAGR64B,EAAOjqG,KAAP,KACOkrG,GACH3oF,MAAMA,GAAEw8C,cAAeykI,GAAsB/3F,SAKzD24F,EAA0BzmL,EAzE3B,+CAAP,0BAAArd,GAAA,0BAwHO,aAAP,GAAAA,GAAA,0BAAO,WAA0CyjM,EAAemB,EAAYC,GAArE,2FACCC,GAAQ,EADT,SAEU,GAAIpkM,SAAQ,SAAAC,GACvB,GAAMokM,GAAkBC,YAAY,WAC9BF,EAAQF,EACQnB,MAEZ9iM,MACAskM,cAAcF,KAIlBE,cAAcF,GACdpkM,OAEJmkM,GAAS,GACRD,IAhBF,sFAAP,8BAAA7kM,GAAA,0BAiCO,aAAP,GAAAA,GAAA,0BAAO,WAAgCqd,GAAhC,YAAA8K,EAAA,8HAEC4nC,EAUA1yC,EAVA0yC,QAFD,EAYC1yC,EATA0oF,iBAHD,OAIC1iF,EAQAhG,EARAgG,SAJD8E,EAYC9K,EAPAhG,mBALD8Q,EAKW,GALXA,EAAA,EAYC9K,EANA3D,gBAND,EAMQ,GANR,IAYC2D,EALAohD,yBAPD,SAYCphD,EAJAkuF,QARD,IASKn2E,oBATL,WAUKX,kCAVL,OAcCqwK,EAAQ,EACZzhL,EAAS+7C,eAfN,EAiBoD2mC,EAAMlsF,0BAjB1D,IAiBKE,oBAjBL,EAiBgB,GAjBhB,EAiB6Bk5C,EAjB7B,EAiBoBl6C,MAASk6C,gBAC1BiyI,GAA6C,IAAjCnrL,EAASb,QAAQ,YAM/B+5C,IAAmBwL,GAAkBA,EAAcj/D,OAxBpD,sBAyBiCuwD,EAAxBsC,iBAzBT,OAyBqBr4C,EAAY+1C,EAAZ/1C,QAEhBi5C,GAAmBj5C,IAAWq4C,EAAMC,OA3BzC,kCA4ByCjvC,EAAS+gF,EAAiBr0C,EAAS0O,GA5B5E,kBA4BaykI,EA5Bb,EA4BaA,kBACR7lL,EAAMohD,cAAgBykI,CA7B3B,eAiCCiC,UAjCD,UAkCGC,EAA2B3B,EA/NjB,EACI,KA8N0DzzJ,KAAM,SAAAs1F,GAAA,MAAQ6/D,GAAoB7/D,GAlC7G,SAoCH,GAAI6/D,EACA,IACQp1I,GAAWA,EAAQj2C,IAEnB5a,OAAO2qE,QAAQC,QAAQ4+B,aAAa28F,YAChCrrL,QAAS+1C,EAAQj2C,GACjBwrL,iBAAgBA,EAChB35I,aAAcv2B,EACdmwK,oBAAqB9wK,EACrB3iB,YAAauF,EACbqC,OACAwrL,aACDl1J,KAAK,WACJ9wC,OAAO+uF,OAAOvuE,UACVxgB,OAAO2qE,QAAQC,QAAQ4+B,aAAa66F,KAAKC,aAAc,SAAAl+D,GAAA,MAAO89D,GAAmBA,GAACtyH,SAAUw0D,EAAItvE,OAAOl8C,IAAOuD,MAElHgG,EAAS27C,aAAmBllD,GAAIi2C,EAAQj2C,GAAI0rL,UAAWV,OACxDv2H,MAAM,WACLlrD,EAAS67C,YAAgBA,mDAAmD4lI,IAC5E5lM,OAAO2qE,QAAQC,QAAQ4+B,aAAa26F,cACpCS,EAA0BzmL,KAGpC,MAAM3a,GACJ2gB,EAAS67C,YAAgBA,sBAAsBx8D,EAAIkO,cAGvDkzL,GAA0BzmL,EA/D3B,+CAAP,0BAAArd,GAAA,0BpSoy4CI+nD,EAAUtpD,EAAoB,IAG9BgnM,EAAoC9lM,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IsS7+4CzQ,aAAP,GAAA9e,GAAA,0BAAO,WAAyCy2D,GAAzC,UAAAtuC,EAAA,8HAEC9E,EAMAozC,EANApzC,SACAkoF,EAKA90C,EALA80C,QAHD,EAQC90C,EAJAgI,yBAJD,OAKC1O,EAGA0G,EAHA1G,QALD,EAQC0G,EAFA2uG,iBAND,SAQC3uG,EADA58C,qCAPD,SAU+Ck2C,EAA1CqC,mBAVL,SAU+CrC,EAA5BsrC,qBAVnB,EAU+B,GAV/B,EAUmCrpC,EAAYjC,EAAZiC,QAChC0zI,GAA2E,IAApDrqG,EAAUniF,QAAQ,6BACvCH,EAAwCc,EAAxCd,MAZL,EAY6Cc,EAAjCd,MAZZ,kBAYqBe,EAZrB,EAYqBA,GAAIg3D,EAZzB,EAYyBA,SAZzB,EAcuBy6B,EAAlBn2E,oBAdL,OAeE28B,EAAY+e,GAAYh3D,EACzBopL,EAAoBzkI,GAEpBinI,EAlBD,oBAmBC3zI,EAAYge,YAAahgB,GACzB1sC,EAASu7C,gBACJ5M,EArBN,kCAsB+B3uC,EAAS+gF,EAAiBr0C,EAAS0O,GAtBlE,SAsBKykI,EAtBL,eA0BCyC,EAAkBjB,EAAwBxB,EAAmBnxI,GAC7D4zI,GAAmBn0L,MAAM+c,QAAQo3K,EAAgBvzI,WACjDuzI,EAAkBA,EAAgBvzI,QAAQ,IAGzCuzI,IACDA,EAAkBvzI,EAAQ/+B,OAAO,SAAA0lC,GAAA,MAAUA,GAAOj/C,KAAOi4C,IAAW,IAGnE4zI,GAAoB59I,YAAQq9G,KACvBwgC,EAAYjmM,OAAO6I,KAAK48J,GAAO51I,IAAI,SAACvsB,GAAD,MAASmiK,GAAMniK,MAClD4iM,EAAqBzzI,EAAQ/+B,OAAO,qBAAGvZ,GAAS8rL,EAAU1sL,QAAQ64C,IAAc,IAAG,MAErF4zI,EAAkBE,IAKrBF,IACDA,EAAkBtD,EAAuBjwI,EAASh9B,IAAag9B,EAAQ,IAIvEuzI,IAAoBA,EAAgB51I,UACpC41I,OAAuBA,GAAiB51I,aAGxCugG,YAAcq1C,EAAiBvwK,OAA+C,aAA3BuwK,EAAgB76I,OACnEznC,EAASqzC,YAAaivI,IAEtBG,GACI/sL,QACAsK,WACA01C,OAAQ4sI,EACRzB,cAAeyB,EAAgB9zK,UAC/B+wK,oBAAqB7yI,GA7D1B,+CAAP,0BAAA/vD,GAAA,0BCTa0kM,EAA0B,SAACjmI,EAAe3kD,GACnD,GAAI2kD,GAAiBA,EAAcj/D,OAAQ,CACvC,GAAMswD,GAAW2O,EAAcjvC,IAAI,SAAA4iC,GAAA,MAAWA,GAAQtC,WAChDsC,EAAUtC,EAASz8B,OAAO,SAAA08B,GAAA,MAAWA,GAAQ18B,OAAO,SAAA0lC,GAAA,MAAUA,GAAOj/C,KAAOA,IAAIta,OAAS,IAAG,EAClG,IAAI4yD,GAAWA,EAAQ5yD,OACnB,MAAO4yD,GAAQ/+B,OAAO,SAAA0lC,GAAA,MAAUA,GAAOj/C,KAAOA,IAAI,GAG1D,MAAO,MCRX,kMxSyo5CM,SAAUjb,EAAQiE,EAAqBrE,GAE7C,YySho5CA,SAASsnM,GAAe30I,EAAKo1B,GACzB,MAAUp1B,GAAV,IAAiBo1B,EAAjB,IAQJ,QAASw/G,GAAU50I,EAAK8qI,GACpB,OAD0C,2DAC7B1sK,IAAI,SAACg3D,GAEd,MAAOu/G,GADU/J,YAAsB5qI,GAAO8qI,WAAU11G,UACxBA,KACjC/9E,OAAO,SAACC,EAAKu9L,GAAN,MAAyBA,GAAzB,KAAyCv9L,IzSon5ClC,GAAIs5D,GAAsCvjE,EAAoB,GAC1DwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEkkI,EAA2CznM,EAAoB,GAC/D0nM,EAAiD1nM,EAAoB,KAC1FmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPgmF,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UySvn5Cn4Bm9D,EAAsB,SAAC,GASvB,GARF4jC,GAQE,EARFA,IACAjoI,EAOE,EAPFA,UACA0a,EAME,EANFA,MACAwtH,EAKE,EALFA,SACAC,EAIE,EAJFA,aACKC,EAGH,EAHFhlM,IACAilM,EAEE,EAFFA,MACAtK,EACE,EADFA,QAEA,KAAKqK,EACD,MAAO,KAGX,IAAMhlM,GAAMy6L,YAAsBuK,GAAWrK,aACvCuK,EAAUH,EAAa9mM,OAAS,EAAKwmM,EAAUO,EAASrK,EAAUoK,GAAgB,KAEpFI,GACAnlM,MACAklM,SACAtoI,YACA0a,QAYJ,OATIwtH,KACAK,GACInlM,IAAKirB,IACL,WAAYjrB,EACZ,cAAeklM,EACftoI,UAAcA,EAAd,cAIR,sBAEQ,6BAASuoI,GAAUF,MAAOA,EAAOJ,IAAKA,MAgBlD5jC,GAAoBv9D,cAChB1jG,IAAK,GACL+kM,gBACAE,MAAO,OACProI,UAAW,sBACXkoI,UAASA,EACTnK,SAhFqB,IAmFV15B,OzS6o5CT,SAAU3jK,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GA6DrC,QAASsqD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIw2L,GAA+Cx+K,EAAE,SAAUxnB,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAOq0J,GAA+Cx+K,EAAExnB,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAA/K/B,GAAQuC,GAAqL,MAAOkqD,GAAK,WAE3gB,QAAS8T,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,G0S/r5Cje,QAAS8lJ,GAAchhJ,GAAkB,GAC/BmlL,GAD+B,YAEjC,QAAAhlM,GAAYyb,GAAO,yEACTA,GADS,OAEfyY,GAAK7T,OACD4kL,mBAAoB/wK,EAAKzY,MAAMypL,0BAC/BC,2BAA0BA,EAC1BC,0BAAyBA,EACzBr6H,aAAYA,EACZs6H,2BAA0BA,EAC1BC,cAAaA,EACbC,mBAAkBA,EAClBC,qBAAsB,IAE1BtxK,EAAKuxK,iBAAmBvxK,EAAKuxK,iBAAiB/kL,KAAtBwT,GACxBA,EAAKwxK,gBAAkBxxK,EAAKwxK,gBAAgBhlL,KAArBwT,GACvBA,EAAKyxK,eAAiBzxK,EAAKyxK,eAAejlL,KAApBwT,GACtBA,EAAK0xK,eAAiB1xK,EAAK0xK,eAAellL,KAApBwT,GACtBA,EAAK2xK,gBAAkB3xK,EAAK2xK,gBAAgBnlL,KAArBwT,GACvBA,EAAK4xK,gBAAkB5xK,EAAK4xK,gBAAgBplL,KAArBwT,GACvBA,EAAK6xK,WAAa7xK,EAAK6xK,WAAWrlL,KAAhBwT,GAClBA,EAAK8xK,kBAAoB9xK,EAAK8xK,kBAAkBtlL,KAAvBwT,GACzBA,EAAK+xK,gBAAkB/xK,EAAK+xK,gBAAgBvlL,KAArBwT,GACvBA,EAAKgyK,qBAAuBhyK,EAAKgyK,qBAAqBxlL,KAA1BwT,GAC5BA,EAAKiyK,iBAAmBjyK,EAAKiyK,iBAAiBzlL,KAAtBwT,GACxBA,EAAKkyK,mBAAqBlyK,EAAKkyK,mBAAmB1lL,KAAxBwT,GAC1BA,EAAKmyK,YAAcnyK,EAAKmyK,YAAY3lL,KAAjBwT,GACnBA,EAAKoyK,0BAA4BpyK,EAAKoyK,0BAA0B5lL,KAA/BwT,GACjCA,EAAKqyK,YAAcryK,EAAKqyK,YAAY7lL,KAAjBwT,GACnBA,EAAKsyK,iBAAmBtyK,EAAKsyK,iBAAiB9lL,KAAtBwT,GACxBA,EAAK+kG,YAAc/kG,EAAK+kG,YAAYv4G,KAAjBwT,GACnBA,EAAKuyK,iBAAmBvyK,EAAKuyK,iBAAiB/lL,KAAtBwT,GACxBA,EAAKwyK,eAAiBxyK,EAAKwyK,eAAehmL,KAApBwT,GACtBA,EAAKyyK,oBAAsBzyK,EAAKyyK,oBAAoBjmL,KAAzBwT,GAC3BA,EAAK0yK,cAAgB1yK,EAAK0yK,cAAclmL,KAAnBwT,GACrBA,EAAK2yK,YAAc3yK,EAAK2yK,YAAYnmL,KAAjBwT,GACnBA,EAAK4yK,WAAa5yK,EAAK4yK,WAAWpmL,KAAhBwT,GAClBA,EAAK6yK,yBAA2B7yK,EAAK6yK,yBAAyBrmL,KAA9BwT,GAChCA,EAAK8yK,iBAAmB9yK,EAAK8yK,iBAAiBtmL,KAAtBwT,GAExBA,EAAKtZ,OAAS,KAEdsZ,EAAK+yK,cAEL/yK,EAAKgzK,iBAELhzK,EAAKizK,gBAAkB,KACvBjzK,EAAKkzK,kBA7CU,EAFc,8DAmD7BxrL,KAAKqrL,cACLrrL,KAAK+qL,sBAQA/qL,KAAKH,MAAMo/G,kBAAoB33H,IAAgBqK,SAChDw5F,KAAmBsgG,QAClBzrL,KAAKH,MAAM/D,UAEZkE,KAAK4qL,sBAhEoB,+CA2EPjoL,GAAW,UACjC,SAAI3C,KAAKqrL,iBAAwBrrL,KAAKsrL,cAAtC,CADiC,MAe7BtrL,KAAKH,MATL3D,EAN6B,EAM7BA,KACArC,EAP6B,EAO7BA,QACAgM,EAR6B,EAQ7BA,SACAgxE,EAT6B,EAS7BA,gBACAl7B,EAV6B,EAU7BA,eACAkS,EAX6B,EAW7BA,cACAj2C,EAZ6B,EAY7BA,SACA8zK,EAb6B,EAa7BA,cACWrvL,EAdkB,EAc7Bq6D,QAAWr6D,0BAGM+oL,EASjBziL,EATAk0E,gBACe80G,EAQfhpL,EARAkrD,cACU+9H,EAOVjpL,EAPAiV,SACei0K,EAMflpL,EANA+oL,cACehG,EAKf/iL,EALAs+C,cACoB6qI,EAIpBnpL,EAJAopL,mBACsCC,EAGtCrpL,EAHA+zD,QAAWr6D,0BACA4vL,EAEXtpL,EAFAylL,UACwB8D,EACxBvpL,EADAsU,sBAIJ,IACI87H,YAA2BllF,EAAej2C,QACzCm7H,YAA2B44C,EAAmBC,MAG/C,WADA5rL,MAAKgrL,eAIT,KAAIhrL,KAAKyE,MAAMmlL,sBAAwB/yG,EAAgBv6E,KAAO8oL,EAAoB9oL,GAAlF,CAMI0D,KAAKyE,MAAM8kL,2BACX5mL,EAAUwpL,kBACT5hJ,YAAQ5nC,EAAUypL,uBAEnBpsL,KAAKmG,UAAWojL,2BAA0BA,IAC1CvpL,KAAK4qL,iBAAiBjoL,GAa1B,IAAM0pL,GAAqC,QAA7BjH,EAAoB1hM,IAClC,KACK4yG,YAAes1F,IAAiBS,IAAUT,EAAa5pM,UAEpDge,KAAKyE,MAAM+kL,2BAGFj/I,YAAQssC,IAAoBtsC,YAAQoR,KACnCpR,YAAQssC,KAAqBtsC,YAAQoR,IACtCpR,YAAQoR,KAAoB37C,KAAKyE,MAAMglL,2BACvC4C,IAAUT,EAAa5pM,UAE5B60F,EAAgBv6E,KAAO8oL,EAAoB9oL,MAI/C0D,KAAKyE,MAAM+kL,0BACXxpL,KAAKmG,UAAWqjL,0BAAyBA,IAOzC5+F,YAAew6F,EAAqBwG,QAAyB5rL,KAAKyE,MAAM6nL,iBAAiB,CAAC,GAAD,GAC5ClH,EAArCvwI,KADiF,sBACxEC,GADwE,EACxEA,OAAe+4C,EAAau3F,EAAbv3F,SADyD,EAEnCm+F,EAA9CzwL,KAFiF,sBAExEk6C,GAFwE,EAExEA,gBAAwBl5C,EAAayvL,EAAbzvL,SACnCwxF,GAAYn2E,SAAUg0K,EAAc30K,uBAAwBi1K,EAElE,IAAIr+F,GAAYhgC,IAAkD,IAAjCtxD,EAASb,QAAQ,WAM9C,MA0BJ,OAvBI+5C,IAAmBX,EACnBg5C,cACI5xF,OACArC,UACAgM,WACAkoF,UACA9sC,cAAeykI,EACfnzI,QAAS6yI,EACT78F,OAASlsF,0BAA2B2vL,KAGxCO,cACI1mL,WACAkoF,UACA9sC,cAAeykI,EACfnzI,QAAS6yI,EACTx9B,MAAOqkC,EACP5vL,0BAA2B2vL,SAG/BhsL,KAAKyE,MAAMmlL,sBACX5pL,KAAKmG,UAAWyjL,qBAAsB,MAOlD,GAAIvtL,EAA0BE,WAC1ByvL,EAA8BzvL,SAG9B,MAFAyD,MAAKsrL,qBACLtrL,MAAKgrL,eAIT,KAAIzgJ,YAAQshJ,IAAuBH,EAAcpvL,KAAOuvL,EAAkBvvL,SACtEqG,EAAU3D,OAAO2+G,gBAAsB39G,KAAKwrL,eAOhD,GAAIM,EACA9rL,KAAKkrL,WACDW,EACAplM,IAAYmF,YACZ,kCACA+W,OAED,IAAmC,kBAA/BkpL,EAAkBxK,SACzBrhL,KAAKirL,YAAYtoL,EAAWkpL,GAAqBp1K,MAAO,aAAc0nK,UAAW,eAC9E,IAAIx7K,EAAUyR,YACjBpU,KAAKirL,YAAYtoL,EAAWkpL,GACxBp1K,MAAOurF,mBAAmBr/F,EAAUyR,aACpC+pK,UAAW,aACXyC,SAAQA,QAET,IAAKiL,EAAkBx3K,WAAoD,IAAvCw3K,EAAkBx3K,UAAUryB,OAEhE,GAAImxE,YAAkB04H,EAAmB5kM,IAAUwH,MACtDuR,KAAKirL,YAAYtoL,EAAWkpL,GAAqBp1K,MAAO,OAAQ0nK,UAAW,aACxE,IAAIhrH,YAAkB04H,EAAmB5kM,IAAUsH,OAAuD,IAA/CoU,EAAUiV,SAASlc,QAAQzU,IAAUsH,KACnGyR,KAAKirL,YAAYtoL,EAAWkpL,GAAqBp1K,MAAO,SAAU0nK,UAAW,eAC1E,IAAIhrH,YAAkB04H,EAAmB5kM,IAAUqH,MAAO,CAC7D,GAAMiuF,GAAgBsvG,EAAkBtvG,aACxC,IAAIA,EAAe,CAAC,GACRpgF,GAA8DwG,EAA9DxG,SAAkBsuC,EAA4C9nC,EAApDupC,KAAQzB,cAAiBxzB,EAA2BtU,EAA3BsU,sBAC3CjX,MAAKwrL,kBACL3lL,EAAS0qD,YAAyCs7H,EAAkB3xH,WAC/D1nC,KAAK,SAACstJ,GACH,GAAIzjL,GAA6BA,EAA0Bd,OACvDc,EAA0Bd,MAAMixL,cAChC,MAAOtpM,KAAQG,OAAO,GAAIL,OAAMynD,EAActuC,EAAS,oCAE3D,IAAI2jL,EAAc9yH,YAAc8yH,EAAcrpK,MAAO,CAAC,GAAD,GAGvBo1K,EAAlB3xH,oBAHyC,EAG9B,GAH8B,EAI3CzvD,EAAS,0BAA0B8oF,KAAKr5B,EAC9C,IAAIzvD,GAAUA,EAAO,GAAI,CACrB,GAAMqhD,GAAgBrhD,EAAO,EAC7B,IAAIqhD,GACI70C,IAA6E,IAAnDA,EAAuBvb,QAAQowD,GAAuB,CAChF,GAAMplB,GAAYzvB,EAAuBpE,OAAOi5C,EAChDT,KAASe,aAAa1lB,EAAW,GACjC7gC,EAASqlD,YAAiCxkB,KAItD,MAAO7gC,GAAS2pD,YAA6B7mE,GAASI,kBACjDypC,KAAK,SAAAi6J,GAEF,MAAOn0K,GAAK2yK,YAAYtoL,EAAWkpL,EAAmB/L,GAClD9nK,KAAMukE,EAAc9xB,aACpBgiI,gBAIhB,MAAOvpM,KAAQG,OAAO,GAAIL,OAAMynD,EAActuC,EAAS,uCAE1D40D,MAAM,YAAiB,GAAd39D,GAAc,EAAdA,QAAc,EAC4BklB,EAAKzY,MAA7Co/G,EADY,EACZA,gBADY,IACKh+D,yBADL,MAMpB,OACK3oC,GAAK7T,MAAMglL,2BACZxqE,IAAoB33H,IAAgBqK,QACnC2mB,EAAKoyK,0BAA0BmB,IAsBpChmL,EAAS65G,aAA+BtsH,IACxCyS,EAAS04G,cAA4BhjE,OAAQswI,EAAmBzmM,OAAMA,KAEtEkzB,EAAK4yK,WACDW,EACAplM,IAAYkF,cACZyH,GAAuB,SAAZA,EAAqBA,EAAU,8BAC1CuP,GAGG,WA9BCs+C,EAAcj/D,QACds2B,EAAKuyK,mBACLvyK,EAAK0yK,gBAEL1yK,EAAKnS,UACDwjL,mBAAkBA,EAClBC,qBAAsBx2L,EACtBq2L,2BAA0BA,MAI9BnxK,EAAKnS,UACDsjL,2BAA0BA,IAE9B5jL,EAASu3C,eACTv3C,EAASk3C,mBAgBlB2vI,QAAQ,WACPp0K,EAAKkzK,yBAGVr4H,aAAkB04H,EAAmB5kM,IAAUuH,MAEtDwR,KAAKirL,YAAYtoL,EAAWkpL,OA1F5B7rL,MAAKirL,YAAYtoL,EAAWkpL,QAzOH,6CAwU7B,OAAM,IAAE7rL,KAAKqrL,iBAAuBrrL,KAAKsrL,iBAxUZ,4CA2UV,GACXzlL,GAAa7F,KAAKH,MAAlBgG,QACR7F,MAAKqrL,cACLxoM,aAAamd,KAAKurL,iBAClBvrL,KAAK6qL,mBACL7qL,KAAKgrL,eAAcA,GACnBnlL,EAASu7C,kBAjVoB,sCAoVhBl2B,EApVgB,GAoVY,QAAnBmzF,oBAAmB,IACzCr+G,MAAKH,MAAMgG,SAASu4G,aAA4BC,OArVnB,qCAwVjBnzF,GAA4C,gEAAnC5uB,EAAmC,EAAnCA,GAAIykL,EAA+B,EAA/BA,OAA+B,IAAvB4L,qBAAuB,MACxD,IAAIzhK,EAAMxnC,OAASgD,IAAa2F,oBAAqB,CAEjD,GAAI00L,GAAiC,YAAvB4L,EAAUtL,SACpBrhL,KAAKH,MAAMgG,SAASm6G,aAA2B+gE,GAAUzkL,QACtD,CAAC,GAAD,GACkC0D,KAAKH,MAAlCgG,EADL,EACKA,SAAU81C,EADf,EACeA,cACdA,GAAe20G,aACfzqJ,EAAS84G,aAAuBriH,UACzBq/C,GAAe20G,YAI9BtwJ,KAAKw+C,YAAYouI,UAAUnuI,IAAmByyF,WAAWC,YAAY5/E,UAAUs7H,WAC3EtM,SAAUC,aAAkBxgL,KAAKH,MAAM8+K,uBAAyB3+K,KAAKH,MAAM6pB,IAAK,oBAtW3D,sCA4W7B1pB,KAAKmG,UAAWujL,cAAaA,IACzB1pL,KAAKH,MAAMkqL,gBACX/pL,KAAKH,MAAMkqL,oBA9Wc,sCAmX7B/pL,KAAKmG,UAAWujL,cAAaA,IACzB1pL,KAAKH,MAAMmqL,gBACXhqL,KAAKH,MAAMmqL,oBArXc,uCA0X7BhqL,KAAKmG,UAAW2mL,eAAcA,IAC1B9sL,KAAKH,MAAMktL,iBACX/sL,KAAKH,MAAMktL,qBA5Xc,uCAiY7B/sL,KAAKmG,UAAW2mL,eAAcA,IAC1B9sL,KAAKH,MAAMmtL,iBACXhtL,KAAKH,MAAMmtL,qBAnYc,uCAuYf9hK,GAEd,IADoBA,EAAZqH,QACM,CACVptC,EAAQC,MAAM,oBAAqB8lC,EADzB,OAEwDlrB,KAAKH,MAA/DgG,EAFE,EAEFA,SAAUgxE,EAFR,EAEQA,gBAAiBl7B,EAFzB,EAEyBA,cAEnC,IAJU,EAEyCsD,WAEpCmkG,SAAU,CACrB,GAAI6pC,GAAaroM,aAAIspB,IACrB,IAAI++K,EAAY,CAEZ,IADAA,EAAavkK,SAASukK,EAAY,MAChB,EAGd,MAFA31I,cAAOppC,IAA+B++K,OACtCpnL,GAAS0pE,cAGb09G,IAAc,MAEdA,GAAa,CAWjB,OATAn8J,cAAI5iB,IAA+B++K,OACnCpnL,GAAS+pE,eACJp9C,KAAK,WACF9wC,OAAO4Z,SAAS0sF,WAEnBj3B,MAAM,SAAA7rE,GACHC,EAAQC,MAAMF,GACd2gB,EAAS0pE,iBAIrB1pE,EAASyrD,aACL9Q,YAAanxC,IACbkjC,QAASskC,EACTt7B,OAAQI,SAxaa,qCA6ajBzwB,GACZ/lC,EAAQqN,IAAI,kBAAmB04B,EADZ,OAEeA,EAA1B+0B,IAFW,sBAEH1E,GAFG,EAEHA,MAChB,IAAIA,EAAQ,CAAC,GAAD,GAC8Bv7C,KAAKH,MAAnCgG,EADA,EACAA,SAAUgxE,EADV,EACUA,eAClBhxE,GAASo3C,YAAcA,MAAK45B,GAAiBvoB,SAAQA,MAEjD6E,YAAkB5X,EAAQt0D,IAAUuH,MACpCqX,EAAS84G,aAAuBpjE,EAAOj/C,KAE3Ci/C,EAAO+0G,cACPzqJ,EAASqzC,YAAaqC,QAxbG,0CA4bZrwB,GACjB/lC,EAAQqN,IAAI,uBAAwB04B,MA7bP,sCAichBA,GACb/lC,EAAQqN,IAAI,mBAAoB04B,MAlcH,wCAqcdA,GACf/lC,EAAQqN,IAAI,qBAAsB04B,EADZ,OAEuBA,EAArCykF,SAFc,2BAEDv8G,mBAFC,EAES,GAFT,IAGoD4M,KAAKH,MAAvEgG,EAHc,EAGdA,SAAUgxE,EAHI,EAGJA,gBAAiBl7B,EAHb,EAGaA,eAHb,IAG6BsF,yBAH7B,MAItB,IAAgB,gBAAZ7tD,EACAyS,EAASyrD,aACL9Q,YAAanxC,IACbkjC,QAASskC,EACTt7B,OAAQI,SAET,CACH,GAAMuxI,GAAa95L,EAAQijB,cAAc3a,QAAQ,aAAe,EAC1DyxL,EAA+B/5L,EAAQijB,cAAc3a,QAAQ,+BAAiC,EAChGkuL,EAAuBx2L,CAEvB85L,IACAvxI,EAAewe,aAAe,WAC9ByvH,EAAuB,iDAChBuD,IACPvD,yJATD,OAasB/yG,EAAjBjiC,mBAbL,QAgBS5yD,OAAS,GAAKi/D,EAAcj/D,UACpCge,KAAK6qL,mBACL7qL,KAAKgrL,gBAELhrL,KAAKmG,UACDwjL,mBAAkBA,EAClBC,8BAreiB,qCA2ejB1+J,EA3eiB,GA2eiB,WAAzB5uB,EAAyB,EAAzBA,GAAIE,EAAqB,EAArBA,QAASi6B,EAAY,EAAZA,QAClC,IAAIvL,EAAMxnC,OAASgD,IAAa4F,oBAAqB,CAAC,GAAD,GAElB0T,KAAKH,MAA5BguD,aACR,cAHiD,QAG/BvxD,KAAOA,EACrB,MAEJ0D,MAAKmG,UAAWmmL,iBAAgBA,GAChC,IAAM/wL,GAAQiB,GAAYA,YAAcF,KACxC0D,MAAKH,MAAMgG,SAAS+5G,aAA0BrkH,EAAOe,IAAKk2B,KAAK,SAACutF,GAC5D,EAAK55G,UAAWmmL,iBAAgBA,IAEhC,EAAK9tI,YAAYouI,UAAUnuI,IAAmByyF,WAAWC,YAAY5/E,UAAUs7H,WAC3EtM,SAAUC,aACNzgE,GAAgB,EAAKlgH,MAAM8+K,qBACzByO,UAAW,sBACb,EAAKvtL,MAAM6pB,IACX,gBAIJ+M,GAAgC,kBAAbA,IACnBA,UAjgBiB,qCAugBjBvL,EAAO9lC,GAEnB,GADAD,EAAQqN,IAAI,kBAAmBpN,GAC3BA,EAAO,CACP,GAAIioM,UADG,EAE2ErtL,KAAKH,MAA/E87C,EAFD,EAECA,eAFD,IAEiBk7B,gBAAmBjiC,mBAFpC,WAEoDqM,yBAFpD,QAGa,aAAf77D,EAAMgoB,MAAuBhoB,EAAMgO,QAAQsI,QAAQ,gBAAkB,KACtEigD,EAAewe,aAAe,aAId,MAAf/0E,EAAMgoB,MAAiBhoB,EAAM1B,MAAQ0B,EAAM1B,KAAKgY,QAAQ,mBAChC,gBAAlBtW,GAAMgO,SACY,KAAzBhO,EAAMgO,QAAQmwF,SAEd8pG,EAAqB,8CAIrBz4I,EAAQ5yD,OAAS,GAAKi/D,EAAcj/D,UACpCge,KAAK6qL,mBACL7qL,KAAKgrL,gBACLhrL,KAAKmG,UACDwjL,mBAAkBA,EAClBC,qBAAsByD,GAAsBjoM,EAAMgO,eA9hBjC,gCAoiBtB83B,EAAO9lC,GACdD,EAAQqN,IAAI,aAAcpN,EADL,OAGuC4a,KAAKH,MAAzD87C,EAHa,EAGbA,eAAgBhhD,EAHH,EAGGA,QAASgC,EAHZ,EAGYA,QAASlD,EAHrB,EAGqBA,OAAQ0qB,EAH7B,EAG6BA,MAC5CmpK,GAA0B,kBAAZ3yL,GAA2C,WAAZA,IAAyBgC,EACtE4wL,EAAgBppK,EAAM98B,IAAMoK,iBAC5B+7L,EAAmC,OAAlBD,YAA0BA,CAEjD,IAAKD,GAAe3xI,GAAmB6xI,EAAvC,CAOA,GAAI55I,GAAMA,WAAWlyD,OAAO4Z,SAASgC,KAAjC,oBAAyDq+C,EAAer/C,GAAxE,kBACA7C,KACAm6C,EAASA,EAAT,WAAuBn6C,EAE3B,IAAMuZ,IACF4gC,IAAKrmC,mBAAmBqmC,IAGxBm2D,EAAU0jF,aAAW,cAAez6K,KACxC+2F,GAAUA,EAAQh9F,QAAQ,kBAAmB,yBAE7CrrB,OAAO4Z,SAAWyuG,MA9jBW,iCAikBrB2jF,GAAM,MACwB1tL,KAAKH,MAAnCgG,EADM,EACNA,SAAUgxE,EADJ,EACIA,gBADJ,EAEW62G,EAAjB94I,mBAFM,OAGV+4I,EAAaD,EACbE,EAAc/2G,CAEdjiC,IAAWA,EAAQ5yD,SACnB2rM,EAAa/4I,EAAQ,GACrBg5I,EAAcF,GAGdC,IACA3tL,KAAKmG,UACDyjL,qBAAsB,KAG1B/jL,EAASo3C,YAAcA,MAAK2wI,GAAat/H,SAAQA,MACjDzoD,EAASk3C,eACTl3C,EAASs1C,eACTwyI,EAAWr9B,cACXzqJ,EAASqzC,YAAay0I,QArlBG,wCA0lB7B3tL,KAAKmG,UAAWwjL,mBAAkBA,OA1lBL,iDA6lBLkE,EAAYC,GACpC,QAAIA,GAAkC,SAAbA,EAAqB,CAAC,GACnCC,GAAmB/tL,KAAKH,MAAxBkuL,eACJl9C,EAAQk9C,CAQZ,iBAPIF,SACIA,GAAuC,UAAfA,EACxBh9C,MAAQ,IACDg9C,GAAsC,SAAfA,IAC9Bh9C,OAGDA,EAEX,MAAO,SA1mBsB,+CAsnBPm9C,GACtB,SAAOA,IAAiBA,EAAc19B,aAAa09B,EAAc19B,cAvnBpC,mCA2nBO,GAA5B87B,GAA4B,uDAAN,KAAM,EAahCpsL,KAAKH,MAXLouL,EAFgC,EAEhCA,kBACApoL,EAHgC,EAGhCA,SACAg4E,EAJgC,EAIhCA,UACAjrC,EALgC,EAKhCA,SACAixC,EANgC,EAMhCA,WACAl5C,EAPgC,EAOhCA,OACAyB,EARgC,EAQhCA,SACA6yE,EATgC,EAShCA,gBACArnG,EAVgC,EAUhCA,SACAwwK,EAXgC,EAWhCA,UACW/rL,EAZqB,EAYhCq6D,QAAWr6D,0BAZqB,EAcHA,MAdG,IAc5Bd,iBAd4B,OAchBgB,EAdgB,EAchBA,SACd2xL,EAAoBroL,EACtBm5G,aAAwBC,EAAiBmtE,IAGvC+B,EAAgBC,YAAiB7yL,EAEvC,SAAI2yL,EAAkB7uE,UAAoB,CACtCx5G,EAASo3C,YAAcA,MAChBmvI,GACH6B,oBACApwG,YACAjrC,WACAixC,aACAl5C,SACAyB,YACG+hJ,IAT+B,OAYYnuL,KAAKH,MAA/CoX,EAZ8B,EAY9BA,uBAAwBgqC,EAZM,EAYNA,cAC1B8sC,GAAYn2E,WAAUX,0BACtBo1K,EAAQD,GAAoD,QAA7BA,EAAoB1oM,IAErD4yG,aAAe1+E,IAAay0K,IAAUz0K,EAAS51B,OAC3C4oG,YAAewhG,EAAqBx0K,OACpC20K,cACI1mL,WACAkoF,UACA9sC,gBACA1O,QAAS65I,EACTxkC,MAAOwgC,EACP/rL,gCAQ6B,IAAjCE,EAASb,QAAQ,YAAqB0wL,EAAoB9vL,KAAOf,EAAMe,IACvEuJ,EAASo3C,YAAcmvI,IAE3BpsL,KAAKmG,UAAWqjL,0BAAyBA,SAnrBpB,wIAwrBFjuI,GAxrBE,gHA+rBxBv7C,KAAKH,MALN6pB,EA1rByB,EA0rBzBA,IACAgkD,EA3rByB,EA2rBzBA,OACA2gH,EA5rByB,EA4rBzBA,kBACAC,EA7rByB,EA6rBzBA,kBACAt7H,EA9rByB,EA8rBzBA,MAEI12D,EAAyBi/C,EAAzBj/C,GAAIi2C,EAAqBgJ,EAArBhJ,QAASqC,EAAY2G,EAAZ3G,QACf25I,GACFF,oBACAC,oBACAvuE,cACIr2F,MACAgkD,SACAlxE,QAAS+1C,EAAUA,EAAQ/1C,QAAU,KACrCgjH,OAAQ,yBACR5qE,QAASt4C,EACTkyL,YAAa55I,EAAUA,EAAQ5yD,OAAS,EACxC00D,KAAMsc,EAAMtc,KACZ+3I,UAAW,eACXC,eAAgB,aA7sBK,SAitBvBC,YAAmBJ,EAjtBI,mGAstBhB5rL,GACb,GAAM9C,GAAQ8C,GAAa3C,KAAKH,KAChC,SAAIG,KAAKyE,MAAM0qD,YAAuB,CAClC,QAAInvD,KAAKqrL,WACL,MAF8B,IAMjB51K,GAKb5V,EALAg+C,UAAapoC,IACb22K,EAIAvsL,EAJAusL,oBACAD,EAGAtsL,EAHAssL,gBACAj1G,EAEAr3E,EAFAq3E,WACW76E,EACXwD,EADA62D,QAAWr6D,0BAVmB,EAYXA,MAZW,IAY1Bd,iBAZ0B,MAgBlC,KAAM6wL,GAAuB7hJ,YAAQ6hJ,KAA0BD,EAE3D,WADAnsL,MAAKmG,UAAWojL,2BAA0BA,GAI9CvpL,MAAKw+C,YAAc,GAAIC,MACnBC,iBAAkBnjD,EAAMlU,IAAM0J,SAAZ,MAA4B0kB,GAAKiU,IAAKnuB,EAAMlU,IAAM0J,WAAa0kB,EACjF+7H,yBACIt6D,aACA03G,cAAaA,EAGbC,OAAwB,WAAf33G,KAGjBl3E,KAAK2qL,YAAYyB,GACjBpsL,KAAKmG,UAAWgpD,aAAYA,QAxvBH,iCA4vBrBjkC,GACRA,EAAMkvD,iBACN+Q,KAAmBiB,QAEfpsF,KAAKH,MAAMyrF,cACXtrF,KAAKH,MAAMyrF,aAAapgE,QAIxBlrB,KAAKH,MAAMb,OAAO8+G,UAClB99G,KAAK4qL,iBAAiB5qL,KAAKH,UAtwBF,wCA2wBxBG,KAAKw+C,cAIVx+C,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOxzD,sBAAuByT,KAAK6pL,kBAC3E7pL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOzzD,oBAAqB0T,KAAKiqL,iBACzEjqL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAO1zD,oBAAqB2T,KAAK8pL,iBACzE9pL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOvzD,mBAAoBwT,KAAK+pL,gBACxE/pL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOtzD,mBAAoBuT,KAAKgqL,gBACxEhqL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOrzD,oBAAqBsT,KAAK+sL,iBACzE/sL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOpzD,oBAAqBqT,KAAKgtL,iBACzEhtL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOnzD,WAAYoT,KAAKkqL,iBAChElqL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOsxF,eAAgBrxI,KAAKmqL,YACpEnqL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOuxF,oBAAqBpjE,KAGpEluE,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAO+uI,eAAgB9uL,KAAKoqL,mBACpEpqL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOgvI,oBAAqB/uL,KAAKqqL,iBACzErqL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOivI,iBAAkBhvL,KAAKsqL,sBACtEtqL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOkvI,aAAcjvL,KAAKuqL,kBAClEvqL,KAAKw+C,YAAY+5B,IAAI95B,IAAmBsB,OAAOmvI,eAAgBlvL,KAAKwqL,wBA/xBvC,sCAmyBxBxqL,KAAKw+C,cAIVx+C,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOxzD,sBAAuByT,KAAK6pL,kBAC1E7pL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOzzD,oBAAqB0T,KAAKiqL,iBACxEjqL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAO1zD,oBAAqB2T,KAAK8pL,iBACxE9pL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOvzD,mBAAoBwT,KAAK+pL,gBACvE/pL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOtzD,mBAAoBuT,KAAKgqL,gBACvEhqL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOrzD,oBAAqBsT,KAAK+sL,iBACxE/sL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOpzD,oBAAqBqT,KAAKgtL,iBACxEhtL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOnzD,WAAYoT,KAAKkqL,iBAC/DlqL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOsxF,eAAgBrxI,KAAKmqL,YACnEnqL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOuxF,oBAAqBpjE,KAGnEluE,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAO+uI,eAAgB9uL,KAAKoqL,mBACnEpqL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOgvI,oBAAqB/uL,KAAKqqL,iBACxErqL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOivI,iBAAkBhvL,KAAKsqL,sBACrEtqL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOkvI,aAAcjvL,KAAKuqL,kBACjEvqL,KAAKw+C,YAAY65B,GAAG55B,IAAmBsB,OAAOmvI,eAAgBlvL,KAAKwqL,wBAvzBtC,2CA2zB7B,GAAIxqL,KAAKyE,MAAM4kL,oBAAsB,EAGjC,MAFArpL,MAAKH,MAAMgG,SAASq4G,oBACpBr7H,cAAamd,KAAKurL,kBAAiBA,IAGnCvrL,KAAKqrL,YAAuBrrL,KAAKyE,MAAM4kL,mBAAqB,IAC5DrpL,KAAKmG,UAAWkjL,mBAAoBrpL,KAAKyE,MAAM4kL,mBAAqB,IACpErpL,KAAKurL,gBAAkBtnM,WAAW+b,KAAK+qL,oBAAqB,SAl0BnC,gCA80BtBxvI,GAAoE,GAA5D73D,GAA4D,uDAArD+C,IAAYoD,QAASslM,EAAgC,aAApBtvL,EAAoB,uDAAZG,KAAKH,MAEhE1D,EAKA0D,EALA1D,SACQsuC,EAIR5qC,EAJAqsC,KAAQzB,cACRzrC,EAGAa,EAHAb,OACA63E,EAEAh3E,EAFAg3E,gBACWx6E,EACXwD,EADA62D,QAAWr6D,0BAN4D,EAQpDA,MARoD,IAQnEd,iBARmE,OASvEnI,EAAU+7L,CAC0B,KAApC/7L,EAAQsI,QAAQ,kBAChBtI,EAAUq3C,EAActuC,EAAS/I,IAGrC,IAAM8rB,IACFx7B,OACA0P,WAhBuE,EAkBpDyjF,EAAjBjiC,mBAlBqE,MAoB3EA,GAAUA,EAAQ5yD,QAAUonG,IAAOx0C,EAAS,MAExCr5C,EAAMixL,eAAoC,IAAnB53I,EAAQ5yD,SAC/B4yD,EAAQ1yD,KAAR,MAAkB0yD,EAAQ,IAAIuJ,KAAM,UAAW7hD,GAAOs4C,EAAQ,GAAGt4C,GAAlB,IAAyBspB,MAAKA,KAC7EgvB,EAAQ1yD,KAAR,MAAkB0yD,EAAQ,IAAIuJ,KAAM,UAAW7hD,GAAOs4C,EAAQ,GAAGt4C,GAAlB,IAAyBspB,MAAKA,KAC7EgvB,EAAQ1yD,KAAR,MAAkB0yD,EAAQ,IAAIuJ,KAAM,YAAa7hD,GAAOs4C,EAAQ,GAAGt4C,GAAlB,IAAyBspB,MAAKA,MAI/EgvB,EAAQ5yD,OAAS,GACjBge,KAAK6qL,mBACL7qL,KAAKgrL,gBACLhrL,KAAKmG,UACDwjL,mBAAkBA,EAClBC,qBAAsBx2L,UAEnB4L,EAAO8+G,SACd99G,KAAKirL,YAAYprL,EAAO07C,QAAgBr8B,GAExClf,KAAKw+C,YAAYp5D,MAAM85B,MAr3BE,6HAy3BbkwK,GAz3Ba,wFA03BrBvpL,EAAa7F,KAAKH,MAAlBgG,UACJ7F,KAAKw+C,YA33BoB,CAAC,EAAD,iBA63BzB2sC,KAAmBsyF,OAAS,GA73BH,UA+3BjB2R,EA/3BiB,CAAC,EAAD,6BAg4BXpvL,KAAKw+C,YAAY4wI,SAh4BN,gDAk4BXpvL,KAAKw+C,YAAYuzF,QAl4BN,2DAq4BrB5sJ,EAAQC,MAAR,KAr4BqB,SAw4B7BygB,EAAS04G,cAA4BhjE,aACrC11C,EAASg4G,iBAz4BoB,qHA44BRtiE,GAA4B,WAApB17C,EAAoB,uDAAZG,KAAKH,MAEtCgG,EAMAhG,EANAgG,SACA5L,EAKA4F,EALA5F,WACA2Z,EAIA/T,EAJA+T,SACAgE,EAGA/X,EAHA+X,SACAzb,EAEA0D,EAFA1D,SACQsuC,EACR5qC,EADAqsC,KAAQzB,cAEN4kJ,IAgBN,OAbIp1L,IACAk5D,YAAkB5X,EAAQt0D,IAAUqH,OACpCspB,EAASlc,QAAQzU,IAAUqH,OAAS,GACpCslB,EAAStvB,MAET+qM,EAAUntM,MACN4Q,MAAO23C,EAActuC,EAAS,uBAAyBouE,aAAc32D,EAAStvB,OAC9E01B,GAAI,WACAnU,EAASqoD,YAA6B51C,EAAKzY,MAAM6rL,oBAMzD2D,gBAt6ByB,sCA06BhB9zI,GAA4B,GAApB17C,GAAoB,uDAAZG,KAAKH,MAAO,EAQrCA,EANAg+C,UAAa7+C,MAFwB,2BAEdq6D,iBAFc,OAGrCp/D,EAKA4F,EALA5F,WACA2Z,EAIA/T,EAJA+T,SACWvX,EAGXwD,EAHA62D,QAAWr6D,0BACX8nB,EAEAtkB,EAFAskB,MACYtmB,EACZgC,EADAvE,SAAYuC,OAPyB,EASpBxB,MAAbE,EATiC,EASjCA,SACJmuG,QACJ,OAAKzwG,IAA2B,uBAAbsC,GAGf42D,YAAkB5X,EAAQt0D,IAAUqH,OAAS6kE,YAAkB5X,EAAQt0D,IAAUsH,KACjFm8G,GACI3mH,IAAKugF,IAAQ,0CAA2C1wD,IACxD0wD,IAAQ,mBAAoB1wD,GAC5B7V,KAAMumE,IAAQ,iBAAkB1wD,IAE7Bu/C,YAAkB5X,EAAQt0D,IAAUuH,OACvC0jE,YAAoB3W,EAAQp0D,IAAa0H,eACzC67G,EAAOrxC,EAAMlyE,IAAa0H,eACnBqjE,YAAoB3W,EAAQp0D,IAAayH,eAChD87G,EAAOrxC,EAAMlyE,IAAayH,eACnBsjE,YAAoB3W,EAAQp0D,IAAawH,aAChD+7G,EAAOrxC,EAAMlyE,IAAawH,aAG9B+7G,GAAQA,EAAK3sG,MAAsC,IAA9B2sG,EAAK3sG,KAAKrC,QAAQ,UACvCgvG,EAAK3sG,KAAL,GAAew1D,YAAcA,GAAG11D,EAAS6sG,EAAK3sG,KAAQomB,IAEnDumF,GApBIA,KAt7BkB,2CA68BXnvD,GAA4B,WAApB17C,EAAoB,uDAAZG,KAAKH,MAC/B+pL,EAAyB5pL,KAAKyE,MAA9BmlL,qBAEJztL,EAGA0D,EAHA1D,SACQsuC,EAER5qC,EAFAqsC,KAAQzB,cACRwW,EACAphD,EADAohD,cAGE2mG,EAAS3mG,EAAcj/D,OAAS,GAAMi/D,EAAcjvC,IAAI,SAAAs9K,GAC1D,GAAMC,GAAaA,MAAKD,EAUxB,OATIt7L,OAAM+c,QAAQw+K,EAAWj9I,WAAai9I,EAAWj9I,SAAStwD,OAAS,GACnEutM,EAAWj9I,SAASvS,QAAQ,SAAA3pB,GACxB,GAAMg4E,GAAYh4E,GAA2B,gBAAZA,GAAK9Z,IAAmB8Z,EAAK9Z,KAAOi/C,EAAOj/C,EAE5E8Z,GAAKg4E,SAAWA,EAChBh4E,EAAKo5K,qBAAuBphG,GAAYw7F,IAIhD,MACO2F,GACHv1K,GAAI,SAAC0zK,GACDp1K,EAAKmyK,YAAYiD,OAS7B,OAJkBzsI,GAAcj/D,OAAS,IACrCslC,MAAOmjB,EAActuC,EAAS,uBAC9ByrJ,YA1+ByB,sQA++Bf/nJ,GA/+Be,uDA++BPG,KAAKH,MAAO07C,GA/+BL,aA++BaukI,GA/+Bb,0DA++BiCC,GA/+BjC,0DA++BqD36L,GA/+BrD,uDA++B6D,KAAMqxC,GA/+BnE,uDA++B8E,YA/+B9E,qFAk/B0Cz2B,KAAK4+J,SAl/B/C,IAk/BrB6wB,iBAl/BqB,sBAk/BD7wB,KAAM8wB,WAl/BL,SAm/BrBC,EAAoBD,EAApBC,iBAn/BqB,CAAC,EAAD,iBAs/BzB3vL,KAAKmG,UACDwjL,mBAAkBA,EAClBC,qBAAsB,KAItBnwL,EA0BAoG,GA1BApG,OACAiwB,EAyBA7pB,GAzBA6pB,IACAxtB,EAwBA2D,GAxBA3D,KACAyiL,EAuBA9+K,GAvBA8+K,oBACAqB,EAsBAngL,GAtBAmgL,qBACAn6K,EAqBAhG,GArBAgG,SACA/J,EAoBA+D,GApBA/D,SACA4xE,EAmBA7tE,GAnBA6tE,OACA95D,EAkBA/T,GAlBA+T,SACA3Z,EAiBA4F,GAjBA5F,WACAxF,EAgBAoL,GAhBApL,QACAm7L,EAeA/vL,GAfA+vL,SACAlsG,EAcA7jF,GAdA6jF,QACAzkC,EAaAp/C,GAbAo/C,WACAF,EAYAl/C,GAZAk/C,eACA83B,EAWAh3E,GAXAg3E,gBACA+W,EAUA/tF,GAVA+tF,cACAtyF,EASAuE,GATAvE,SACWe,EAQXwD,GARA62D,QAAWr6D,0BACX/B,EAOAuF,GAPAvF,aACAklL,EAMA3/K,GANA2/K,cACAqQ,EAKAhwL,GALAgwL,gBACAj4K,EAIA/X,GAJA+X,SACAqpC,EAGAphD,GAHAohD,cACA8tF,EAEAlvI,GAFAkvI,aACA+gD,EACAjwL,GADAiwL,WArhCqB,EAuhCFzzL,MAvhCE,IAuhCjBd,iBAvhCiB,SAwhC8BD,MAAxCy0L,EAxhCU,EAwhCjBx0L,MAA4B+B,EAxhCX,EAwhCWA,KAAML,EAxhCjB,EAwhCiBA,SACpCib,EAzhCmB,MA0hClB4nK,IACHe,YAAatlL,EAAMlU,IAAMiJ,WAEvB2vL,GAAUv8F,IACZ9vC,IAAK,uCAEHsjC,EAAa/jB,YAAkB5X,GAAQt0D,IAAUuH,KACnDiwD,IAAmByyF,WAAW1iJ,IAAMiwD,IAAmByyF,WAAWC,WAClE6+C,SAEAhwL,KAAKw+C,cACCx/C,EAASgB,KAAKw+C,YAAYouI,YAC5B5tL,GAAUA,EAAO8yI,OAASrzF,IAAmByyF,WAAWC,WACxD6+C,EAAoBvxI,IAAmByyF,WAAWC,WAC3CnyI,GAAUA,EAAO8yI,OAASrzF,IAAmByyF,WAAW1iJ,MAC/DwhM,EAAoBvxI,IAAmByyF,WAAW1iJ,MAziCjC,UA8iCjBwhM,IAAsBvxI,IAAmByyF,WAAWC,WA9iCnC,CAAC,EAAD,+BAgjCXnxI,KAAKw+C,YAAYuzF,QAhjCN,oCAkjCjBi+C,IAAsBvxI,IAAmByyF,WAAW1iJ,KACpD0oF,IAAez4B,IAAmByyF,WAAWC,WAnjC5B,CAAC,EAAD,+BAujCXnxI,KAAKw+C,YAAYuzF,QAvjCN,4DA0jCrB5sJ,EAAQC,MAAR,KA1jCqB,YA8jCnBslH,EAAO1qG,KAAKiwL,iBAAiB10I,GAAQ17C,IAErCqgL,EAAelgL,KAAKkwL,yBAAyB30I,GAAQ17C,IAErDsgL,EAAYngL,KAAKmwL,sBAAsB50I,GAAQ17C,IAE/C0sB,GAAO6jK,cACT32L,SACA8hD,UACAukI,cAAe5nK,EACf6nK,iBACApB,sBACAqB,uBACAlkL,WACA4xE,SACAtoF,SACAskC,MACAxtB,OACA0X,WACA3Z,aACAgmL,SACAryF,gBACA8c,OACAw1E,eACAC,YACA7lL,eACAklL,gBACA13B,UAAW+nC,EACXp7L,UACAmjB,WACAqpC,gBACA8tF,eACA+gD,eAEJ3qM,EAAQqN,IAAI,0BAA2B2tL,GACvCh7L,EAAQqN,IAAI,uBAAwB+5B,IAG9B8xF,GAAWuxE,KAAczkG,KAAmBsgG,OAC5C4E,GAAcn5G,IAAez4B,IAAmByyF,WAAW1iJ,IAC3D8hM,GAAqBp5G,IAAez4B,IAAmByyF,WAAWC,WAExEtrI,EAAS63G,kBAEL4yE,KACAnlG,KAAmBsyF,OAASliI,GAAOhJ,QAAQnF,UAC3C+9C,KAAmBxqC,UAAY,YAG7BiH,GAAY0oI,GAAqB,mBAAqB,uBACxDC,UAGAP,IAAsBvxI,IAAmByyF,WAAW1iJ,KACpD0oF,IAAez4B,IAAmByyF,WAAW1iJ,MAG7C+hM,GAAYhtM,SAASE,cAAc,OACnC8sM,GAAUzsM,aAAa,kBAAmB,IAC1CysM,GAAUj0L,GAAKsrD,GACf2oI,GAAUl1H,MAAMqhB,QAAU,OACtBxF,IAAez4B,IAAmByyF,WAAWC,YAC7Co/C,GAAUrsM,YAAYinG,MAG1BwkG,EAAgBzrM,YAAYqsM,IAC5BA,GAAUl1H,MAAMqhB,QAAU,SAG1Bu1D,IACA/6D,aACAr2B,UAAWwvI,GAAcA,IAAIzoI,GAAcujC,MAG3CklG,IAEMG,IACFl0L,GAAIi/C,GAAOj/C,IAGTm0L,GAAgBnzL,GAAQL,EAAeA,EAAxB,KAAqCK,EAArC,gBAA2D,mCAChFkzL,GAAUE,SAAcD,GAAxB,OAA2Cl1I,GAAOj/C,GAE9Cf,EAAMo1L,KACNH,GAAUI,cAAgBr1L,EAAMo1L,IAIhCp1L,EAAM+c,EACNk4K,GAAUx/I,UAAYz1C,EAAM+c,EACrBy3K,EAAoBz3K,IAC3Bk4K,GAAUx/I,UAAY++I,EAAoBz3K,QACnCy3K,GAAoBz3K,GAGzBu4H,GAAQ7wI,KAAK6wL,4BAA4Bt1L,EAAMlU,IAAMqK,OAAQk+L,GAC7DzN,GAAkB9pH,IAAOzzE,IAAI,cAAgB,GAC3CyjK,GAAmCwnC,EAAnCxnC,iBAAkByoC,GAAiBjB,EAAjBiB,aAEtBhwI,IACA8uI,SAAUvxE,GACVwyB,SACAt/E,UAAWhlC,GAAKglC,UAChBksH,OAAQliI,GAAOhJ,QAAQnF,UACvBs9D,OACAqmF,QAAOA,EACPjpC,WACIO,oBACAK,MAAOooC,GAAeA,GAAapoC,MAAQ,GAC3CC,YAAamoC,GAAeA,GAAanoC,YAAc,KAI3Dw5B,KACArhI,GAAYgnG,UAAUkpC,UAAY7O,GAClCrhI,GAAYgnG,UAAUmpC,WAAa9O,GACnCrhI,GAAYgnG,UAAUi7B,IAA0B,SAApBZ,GAA6B,IAAM,KAI/DrhI,GADAvF,GAAO+0G,YAAc0/B,IAAsBvxI,IAAmByyF,WAAW1iJ,IACzEsyD,MACOA,IACHowI,aAAc31I,KAGlBuF,MACOA,IACHqwI,YAAYA,MACLt6G,GACE51B,oBAKjBgxF,SACOA,GACAlxF,YAAiB9B,EAAYF,EAAgBnnC,IAChDqpK,UACImQ,GAAI,KACJC,MAAO,MAEXt1I,UAAWy0I,IACXZ,SAAUvxE,GACVv9D,kBAEGwvI,KACPr+C,SACOA,IACHl2I,QAAQA,MAAMwwB,IAAM8xF,iBAltCH,WAwtCjB9iE,GAAO+0G,YACP0/B,IAAsBvxI,IAAmByyF,WAAW1iJ,KACpD0oF,IAAez4B,IAAmByyF,WAAW1iJ,IA1tC5B,CAAC,EAAD,2BA4tCV+sD,IAAO+0G,WA5tCG,UA6tCXtwJ,KAAKw+C,YAAY+zF,WAAWN,GA7tCjB,kDA+tCXjyI,KAAKw+C,YAAYp/C,OAAO6yI,GA/tCb,4DAkuCrB9sJ,EAAQC,MAAR,KAluCqB,YAquCzBygB,EAAS63G,mBAA4B,IACjC19G,KAAKqrL,iBAAwBrrL,KAAKsrL,cAtuCb,CAAC,EAAD,oBAuuCrBtrL,MAAKw+C,YAAYuzF,SAvuCI,2BA2uCrBw+C,KACAA,GAAUl1H,MAAMqhB,QAAU,SAE9B18E,KAAK6qL,mBACL7qL,KAAK8qL,iBAELjlL,EAASg4G,kBACTh4G,EAAS04G,cAA4BhjE,UAAQn2D,QAASA,MACtDqxC,KAnvCyB,wBA4vCzBtxC,EAAQC,MAAR,yBAAuC6e,EAAiBK,YAAxD,kCA5vCyB,8GAgwCxB,GACGqlL,GAAsB3pL,KAAKyE,MAA3BklL,kBADH,EAGgC3pL,KAAKH,MAAlC87C,EAHH,EAGGA,eAAgB/jC,EAHnB,EAGmBA,SACpBuoK,QAIJ,OAHIwJ,KACAxJ,EAAYngL,KAAKmwL,sBAAsBx0I,EAAgB37C,KAAKH,OAAMA,IAEtE,iBACkBkiJ,SAAU,WAAY/4E,MAAO,OAAQC,OAAQ,gBACvD,kBAAChlE,EAAD,IACI2B,IAAI,oBACA5F,KAAKH,MACLG,KAAKyE,OACT6mF,aAActrF,KAAKq9G,eAEtBssE,GAAqBxJ,GAArB,GACI,KADJ,MAEcA,EAAU74J,MAFxB,MAGc64J,EAAUv4B,MAHxB,SAIiBhwI,EAJjB,QAKgB5X,KAAKyqL,YALrB,QAMgBzqL,KAAKorL,wBAtxCD,GACZ1qL,YAy1CzB0oL,GAAW3hG,cACPwmG,mBAAkBA,EAClB3E,0BAA2B,EAC3B8C,uBACAL,oBAAmBA,EACnBn0K,YACAqnC,cAGJ,IAAMh3C,GAAkB,SAACxD,GAAU,MAK3BA,EAHArL,IAF2B,IAEpB0C,oBAFoB,KAEF4tB,EAFE,EAEFA,IAAKxtB,EAFH,EAEGA,KAAMrC,EAFT,EAESA,QAAS6zE,EAFlB,EAEkBA,OAAQm6G,EAF1B,EAE0BA,WAAYltL,EAFtC,EAEsCA,QACjEqE,EAEAyF,EAFAzF,OACA03D,EACAjyD,EADAiyD,QAEEzqB,EAAOD,YAAavnC,GACpBhQ,EAAUqF,YAAgB2K,GAAOhQ,QACjCs6I,EAAeV,aAAqB5pI,EAAOhQ,GAC3Cq7L,EAAa/wL,YAAsB0F,EAEzC,QACIo5C,UAAWjlD,YAAkB6L,GAC7BhL,OAAQD,YAAeiL,GACvBilB,MACAxtB,OACArC,UACAuyL,oBAAqBkF,YAAqB7sL,GAC1C3I,WACA4xE,SACAm6G,aACAlJ,oBAAqB98F,YAAwBp9E,GAC7Cu7K,qBAAsBl+F,YAAyBr9E,GAC/CinL,cAAe6F,YAAsB9sL,GACrCzF,SACAk4E,WAAYl7E,YAAmByI,GAC/BmrL,SAAUjpC,YAAiBliJ,GAC3BspL,eAAgB/mC,YAAuBviJ,GACvCoyE,gBAAiBn7B,YAAwBj3C,GACzCk3C,eAAgBC,YAAuBn3C,GACvCopD,cAAe48B,YAAsBhmF,GACrCmP,SAAU68C,YAAiBhsD,GAC3BiyD,UACAy1H,gBAAiBlgJ,EAAKuvB,OACtB5jD,SAAUzD,YAAiB1P,GAC3BwS,uBAAwBD,YAA+BvS,GACvDw6C,WAAYC,YAAmBz6C,GAC/Bs6C,eAAgB5mC,YAAuB1T,GACvC2P,YAAaxX,YAAoB6H,GACjCxK,WAAYF,YAAmB0K,GAC/BhQ,UACAivF,QAAShnF,YAAgB+H,GACzBsnL,mBAAoBhlC,YAA2BtiJ,GAC/C0f,MAAOm3B,YAAwB72C,GAC/BnJ,SAAU8B,YAAiBqH,GAC3BnK,aAAcD,YAAqBoK,GACnC+6K,cAAe14B,YAAsBriJ,GACrC2jL,UAAWxhC,YAAkBniJ,GAC7BorL,gBAAiBhpC,YAAwBpiJ,GACzCuuD,MAAOvuD,EAAMuuD,MACbq7H,kBAAmB5pL,EAAMrL,IAAIi1L,kBAC7BC,kBAAmB7pL,EAAMrL,IAAIk1L,kBAC7BkD,qBAAsBjzL,YAAyBkG,GAC/Cw8C,cAAe0pC,YAAsBlmF,GACrC9J,UACAgC,QAASF,YAAgBgI,GACzBsqI,eACA+gD,cAIR,OAAOthG,aACHvmF,EACA,KACA,MACEpE,SAAQA,IACZmgD,aAAWO,IAAa6kI,EAAYnlL,IAAqBJ,SAAQA,K1Sut2CH,GAAI2gD,GAAsCvjE,EAAoB,GACzGwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEm8D,EAA4C1/H,EAAoB,GAChEwwM,EAAyCxwM,EAAoB,IAC7DkoM,EAAiDloM,EAAoB4D,EAAE4sM,GACvEC,EAAwDzwM,EAAoB,KAC5E0wM,EAAgE1wM,EAAoB4D,EAAE6sM,GACtFE,EAAwC3wM,EAAoB,KAC5D4wM,EAAgD5wM,EAAoB4D,EAAE+sM,GACtEE,EAA8C7wM,EAAoB,KAClE8wM,EAAsD9wM,EAAoB4D,EAAEitM,GAC5EE,EAA8C/wM,EAAoB,IAClEgxM,EAAsDhxM,EAAoB4D,EAAEmtM,GAC5EE,EAA2CjxM,EAAoB,GAC/DkxM,EAAqDlxM,EAAoB,KACzEmxM,EAA+CnxM,EAAoB,KAEnEoxM,GADmDpxM,EAAoB,IAC/BA,EAAoB,IAC5DqxM,EAA4DrxM,EAAoB,IAChFsxM,EAAuEtxM,EAAoB,IAC3FuxM,EAA8DvxM,EAAoB,IAClFwxM,EAAqExxM,EAAoB,IACzFyxM,EAAsEzxM,EAAoB,IAC1F0xM,EAA+D1xM,EAAoB,GACnF2xM,EAAkE3xM,EAAoB,KACtF4xM,EAAwE5xM,EAAoB,KAC5F6xM,EAAyE7xM,EAAoB,KAC7F8xM,EAAgE9xM,EAAoB,IACpF+xM,EAA2E/xM,EAAoB,IAC/FgyM,EAA0EhyM,EAAoB,IAC9FiyM,EAAyEjyM,EAAoB,KAC7FkyM,EAAyElyM,EAAoB,KAC7FmyM,EAAoEnyM,EAAoB,IACxFoyM,EAA2EpyM,EAAoB,IAC/FqyM,EAAiEryM,EAAoB,IACrFsyM,EAAiEtyM,EAAoB,IACrFuyM,EAA0DvyM,EAAoB,IAC9EwyM,EAA6DxyM,EAAoB,IACjFyyM,EAA+DzyM,EAAoB,KACnF0yM,EAAsE1yM,EAAoB,KAC1F2yM,EAA0D3yM,EAAoB,KAC9E4yM,EAAoD5yM,EAAoB,KACxE6yM,EAAsD7yM,EAAoB,KAC1E8yM,EAAmD9yM,EAAoB,IACvE+yM,EAA4D/yM,EAAoB,KAChFgzM,EAA2DhzM,EAAoB,IAC/EizM,EAA+CjzM,EAAoB,IACnEkzM,GAAoDlzM,EAAoB,IACxEmzM,GAAuCnzM,EAAoB,KAC3DozM,GAA0CpzM,EAAoB,IAC9DqzM,GAAqDrzM,EAAoB,KACzEszM,GAAwDtzM,EAAoB,IAC5EuzM,GAAmDvzM,EAAoB,KACvEwzM,GAA4DxzM,EAAoB,KAChFyzM,GAAqEzzM,EAAoB,KAC9GqmG,GAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BzmF,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,GAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M0S1r5CxhBj7D,GAAa9C,IAAb8C,QA26COs8J,S1S245CczjK,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YA6BA,SAASwuD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WAEzb,QAAS8T,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,G2S958Cld,QAAS2wJ,KAAkC,GAAd/zJ,GAAc,4DAMiBA,EAA/D44L,kCAN8C,EAMrBtnI,IANqB,CAQtD,OAAO,UAAcppD,GAAkB,GAC7B2wL,GAD6B,YAE/B,QAAAxwM,GAAYyb,GAAO,yEACTA,GADS,OAEfyY,GAAKu8K,eAAiBv8K,EAAKu8K,eAAe/vL,KAApBwT,GACtBA,EAAKw8K,gBAAkBx8K,EAAKw8K,gBAAgBhwL,KAArBwT,GACvBA,EAAKy8K,6BAA+Bz8K,EAAKy8K,6BAA6BjwL,KAAlCwT,GACpCA,EAAK08K,+BAAiC18K,EAAK08K,+BAA+BlwL,KAApCwT,GACtCA,EAAK7T,OACDwwL,mBAAkBA,GAPP,EAFY,sEAsB5B,QARC1gL,UAAW2gL,WAQZ,OAPCC,EAOD,EAPCA,sBACAC,EAMD,EANCA,4BACiBhQ,EAKlB,EALCvuG,gBACgBw+G,EAIjB,EAJC15I,eACAsD,EAGD,EAHCA,WACArnC,EAED,EAFCA,SACa09K,EACd,EADC3+K,YACD,EASK3W,KAAKH,MAPLgG,EAFL,EAEKA,SAFL,IAGK0O,SAHL,2BAISY,mBAJT,sBAIgCN,GAJhC,EAIgCA,aAE3BgiE,EANL,EAMKA,gBACAl7B,EAPL,EAOKA,eACWt/C,EARhB,EAQKq6D,QAAWr6D,0BARhB,EAUkCA,MAVlC,IAUSd,iBAVT,OAUqBgB,EAVrB,EAUqBA,SAVrB,EAW0E24L,EAAjE//K,mBAXT,sBAW8CogL,GAX9C,EAWgC1gL,aACvBy4B,EAAW83I,EAAX93I,OACFkoJ,EAAwB,aAAXloJ,CAEnB,KAAI/C,YAAQ66I,GAAZ,CAIA,GAAMqQ,GAAqBl6L,EAAMm6L,4BAA8Bn6L,EAAMo6L,qBAGrE,IAAIF,EAAoB,CACpB,GAAMphL,IAAaptB,IAAUuH,KACvBshE,EAAWv0D,EAAMq6L,gBAAkBr6L,EAAMq6L,eAAel4L,MAAM,KAC9Dm4L,EAA4B/iD,aAAgBz+H,YAAWy7C,YAAYl4C,MACnEk+K,EAAaN,GAAel/F,YAAe1+E,KAAci+K,CAE/D,IAAIC,GAAcx/F,YAAe1+E,IAAc09K,IAAoB19K,EAAS51B,OAAS,CACjF,IAAK8tE,IAAaA,EAAS9tE,OACvB,MAKJ,KAAKge,KAAKyE,MAAMwwL,oBAAsBa,GAAeR,IAAoBO,GAA6B,CAClG,GAAMthJ,GAAYh5C,EAAMm6L,4BAA8Bn6L,EAAMo6L,sBACtD/2E,EAAWrjH,EAAM83D,eAAiB9e,EAClCgH,EAASqjE,IAActiH,GAAIsiH,EAOjC/4G,GAASyrD,aACL9Q,YAAanxC,IACbkjC,QAAS6yI,EACT7pI,YAEJv7C,KAAKmG,UACD8uL,mBAAkBA,IAI1B,GAAMl8I,GAAWA,KAAKx9C,EAMtB,OALAw9C,GAAS28I,kCACT38I,EAAS48I,6BACT58I,EAASsa,qBACTta,EAAS68I,0BACT/vL,GAASw1C,YAAYtC,KAK7B,GAAIg9I,GAAmClhL,IAAiB0gL,CAUpDC,KAAex1L,KAAKyE,MAAMwwL,oBACtBh2I,GAAe82I,IAAqCn+K,EAAS51B,QAC7D+zM,KACA/1L,KAAKmG,UACD8uL,mBAAkBA,KAGtBc,KAIR,IAAMC,GAAqBn/G,IAAoBuuG,EACzC6Q,GACDD,IACCzrJ,YAAQ8qJ,IAAuB15I,IAAmB05I,EAElD1O,EAA+B,QAAfprL,EAAM2c,KACtBg+K,EAAc36L,EAAMk6C,kBAAoD,IAAjCl5C,EAASb,QAAQ,WAKxDy6L,IAEA/Q,EAAoB6I,mBAAqBtH,GAAiBuP,KAC3DT,IAAuB7qG,YAAew6F,EAAqBxtK,QAExDm+K,GACCC,GAAsBZ,GAGzBgB,IACDtjD,YAAcuiD,EAAoBz9K,OAClCq+K,GAAqBb,CAG1B,IACID,IACCgB,GAAmBC,IACtB,CACE,GAAIA,GAwBA,YAtBIjjI,YAAkBkiI,EAAoBpuM,IAAUqH,OAChD6kE,YAAkBkiI,EAAoBpuM,IAAUsH,KAEhDsX,EAASsqD,aACL5d,QAAS6yI,EACT7pI,OAAQ85I,KAEP7iK,KAAK,SAACzd,GACEA,GACDlP,EAAS8uL,OAGdxhI,YAAkBkiI,EAAoBpuM,IAAUuH,OAClDwR,KAAKyE,MAAMwwL,mBACZpvL,EAASyrD,aACL9Q,YAAanxC,IACbkjC,QAAS6yI,EACT7pI,OAAQ85I,MApB1B,QA4BmDjQ,EAAzCxwI,oBA5BV,YA4BmDwwI,EAA3BvwI,KA5BxB,yBA4BiCC,IA5BjC,GA4BiCA,MAC/B,KAAKF,GAAQ5yD,OACT,MAYJ,IAAMwkM,aAAa1xI,EAKnB,IAAI0xI,KAAejrL,EAAMe,GAAI,CAAC,GAAD,IACwC0D,KAAKH,MAA9DoX,GADiB,GACjBA,uBAAwBpd,GADP,GACOA,QAASqC,GADhB,GACgBA,KAAM+kD,GADtB,GACsBA,cACzC8sC,IAAYn2E,WAAUX,0BAC5Bo/K,cACIn6L,QACArC,WACAurL,sBACAv/K,WACA2gL,cACAvlI,iBACA8sC,WACA1xF,kCAGD,CACH,GAAIi6L,IAAe1hJ,EACfr5C,GAAMe,IAAMs4C,GAAQ5yD,OAAS,IAC7Bs0M,GAAe1hJ,GAAQ/+B,OAAO,SAAAO,GAAA,MAAQA,GAAK9Z,KAAOf,EAAMe,KAE5D,IAAMoqL,IAAgB76H,IAAKyqI,GAAarrM,OAAO,SAACC,EAAD,MAAQmpB,GAAR,EAAQA,SAAR,OAAyBnpB,GAAI2nB,OAAOwB,QAEnFi0K,cACI5B,iBACAtB,sBACA7pL,QACAsK,WACA01C,OAAQ+6I,GAAa,WAjNN,oCA6NhB1iL,GACX5T,KAAKH,MAAMgG,SAASmrD,YAA2Bp9C,OA9NpB,uCAiOb,MACuB5T,KAAKH,MAAlC87C,EADM,EACNA,cACR,UAFc,EACU91C,UACRqoD,YAA6BvS,OAnOlB,4IAsOI7U,GAtOJ,0GA6OtB9mC,KAAKH,MALN6pB,EAxOuB,EAwOvBA,IACAgkD,EAzOuB,EAyOvBA,OACA2gH,EA1OuB,EA0OvBA,kBACAC,EA3OuB,EA2OvBA,kBACAt7H,EA5OuB,EA4OvBA,MAGEu7H,GACFF,oBACAC,oBACAvuE,aAAaA,GACTr2F,MACAgkD,UACG5mC,GACH4P,KAAMsc,EAAMtc,KACZ+3I,UAAW,eACXC,eAAgB,cAxPG,SA2PrBC,YAAmBJ,EA3PE,2MA+PMhzI,GA/PN,gHAsQtBv7C,KAAKH,MALN6pB,EAjQuB,EAiQvBA,IACAgkD,EAlQuB,EAkQvBA,OACA2gH,EAnQuB,EAmQvBA,kBACAC,EApQuB,EAoQvBA,kBACAt7H,EArQuB,EAqQvBA,MAEI12D,EAAyBi/C,EAAzBj/C,GAAIi2C,EAAqBgJ,EAArBhJ,QAASqC,EAAY2G,EAAZ3G,QACf25I,GACFF,oBACAC,oBACAvuE,cACIr2F,MACAgkD,SACAlxE,QAAS+1C,EAAUA,EAAQ/1C,QAAU,KACrCgjH,OAAQ,qBACR5qE,QAASt4C,EACTkyL,YAAa55I,EAAUA,EAAQ5yD,OAAS,EACxC00D,KAAMsc,EAAMtc,KACZ+3I,UAAW,eACXC,eAAgB,aApRG,SAuRrBC,YAAmBJ,EAvRE,2FA0RtB,GACGiD,GAAyBxxL,KAAKH,MAA9B2xL,qBACFnhC,EAAyBmhC,EAAuBxxL,KAAKg1L,+BAAiC,IAC5F,OACI,mBAAC/wL,EAAD,KACQjE,KAAKH,OACTg1L,eAAgB70L,KAAK60L,eACrBC,gBAAiB90L,KAAK80L,gBACtBzkC,uBAAwBA,SAlSL,GACD3vJ,YAuSlCk0L,GAAoBntG,cAChB5Q,mBA0BJ,IAAM5uE,GAAkB,SAACxD,GAAU,MAQ3BA,EAAMrL,GACV,QACIswB,IAV2B,EAE3BA,IASAxtB,KAX2B,EAG3BA,KASArC,QAZ2B,EAI3BA,QASA6zE,OAb2B,EAK3BA,OASA2gH,kBAd2B,EAM3BA,kBASAC,kBAf2B,EAO3BA,kBASA/5K,UAAWD,YAAkB7P,GAC7Bw6C,WAAYC,YAAmBz6C,GAC/B0wL,sBAAuBphL,YAA8BtP,GACrD2wL,4BAA6BlgL,YAAoCzQ,GACjEoyE,gBAAiBn7B,YAAwBj3C,GACzCk3C,eAAgBC,YAAuBn3C,GACvCkrD,eAAgBlrD,EAAMkrD,eACtB/3C,SAAUzD,YAAiB1P,GAC3BiyD,QAAS79D,YAAgB4L,GACzBuuD,MAAOvuD,EAAMuuD,MAEb/7C,uBAAwBD,YAA+BvS,GACvDw8C,cAAe0pC,YAAsBlmF,GACrCkS,YAAaD,YAAoBjS,IAIzC,OAAO+pF,aAAQvmF,GAAiB2sL,I3Sgh8CPtvM,EAAuB,EAAIwqK,CACvC,IAAItrG,GAAsCvjE,EAAoB,GAC1DwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEm8D,EAA4C1/H,EAAoB,GAChEs1M,EAA4Ct1M,EAAoB,IAChEu1M,EAAoDv1M,EAAoB4D,EAAE0xM,GAC1En0I,EAA2CnhE,EAAoB,GAC/Dg2F,EAAuCh2F,EAAoB,GAE3Dw1M,GADkDx1M,EAAoB,IACAA,EAAoB,KAC1Fy1M,EAA2Dz1M,EAAoB,IAC/E01M,EAAqD11M,EAAoB,KACzE21M,EAAkD31M,EAAoB,IACtE41M,EAA0D51M,EAAoB,IAC9E61M,EAA0D71M,EAAoB,KAC9E81M,EAAyD91M,EAAoB,KAC7E+1M,EAA6D/1M,EAAoB,IACjFg2M,EAAmDh2M,EAAoB,KACvEi2M,EAA2Ej2M,EAAoB,IAC/Fk2M,EAA2El2M,EAAoB,IAC/Fm2M,EAA0En2M,EAAoB,IAC9Fo2M,EAAmEp2M,EAAoB,IACvFq2M,EAAyEr2M,EAAoB,KAC7Fs2M,EAAiEt2M,EAAoB,IAC1GmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,OA2b1hB,SAAUviE,EAAQD,EAASH,GAEjC,cAAa,S4S539Cb;;;;;;AAaA,QAASu2M,GAAQ7sL,EAAG5C,GAClB,GAAI4C,IAAM5C,EACR,MAAO,EAMT,KAAK,GAHDvB,GAAImE,EAAE3oB,OACNykB,EAAIsB,EAAE/lB,OAEDV,EAAI,EAAGuxC,EAAMvU,KAAKgpD,IAAI9gE,EAAGC,GAAInlB,EAAIuxC,IAAOvxC,EAC/C,GAAIqpB,EAAErpB,KAAOymB,EAAEzmB,GAAI,CACjBklB,EAAImE,EAAErpB,GACNmlB,EAAIsB,EAAEzmB,EACN,OAIJ,MAAIklB,GAAIC,GACE,EAENA,EAAID,EACC,EAEF,EAET,QAASm8I,GAAS56I,GAChB,MAAI9T,GAAOwuJ,QAA4C,kBAA3BxuJ,GAAOwuJ,OAAOE,SACjC1uJ,EAAOwuJ,OAAOE,SAAS56I,KAEjB,MAALA,IAAaA,EAAE0vL,WAqC3B,QAASC,GAAWlyM,GAClB,MAAOrD,QAAOC,UAAU67B,SAASz8B,KAAKgE,GAExC,QAASmyM,GAAOC,GACd,OAAIj1C,EAASi1C,IAGqB,kBAAvB3jM,GAAOikL,cAGgB,kBAAvBA,aAAYyf,OACdzf,YAAYyf,OAAOC,KAEvBA,IAGDA,YAAkBpgB,cAGlBogB,EAAOC,QAAUD,EAAOC,iBAAkB3f,gBAkBhD,QAASjkG,GAAQjpE,GACf,GAAK3X,EAAK2nF,WAAWhwE,GAArB,CAGA,GAAI8sL,EACF,MAAO9sL,GAAK1mB,IAEd,IAAI0jC,GAAMhd,EAAKiT,WACX3T,EAAQ0d,EAAI1d,MAAMqyC,EACtB,OAAOryC,IAASA,EAAM,IAyCxB,QAASytL,GAAS1yM,EAAGR,GACnB,MAAiB,gBAANQ,GACFA,EAAErD,OAAS6C,EAAIQ,EAAIA,EAAEwO,MAAM,EAAGhP,GAE9BQ,EAGX,QAASoO,GAAQukM,GACf,GAAIF,IAAuBzkM,EAAK2nF,WAAWg9G,GACzC,MAAO3kM,GAAKI,QAAQukM,EAEtB,IAAIC,GAAUhkH,EAAQ+jH,EAEtB,OAAO,aADIC,EAAU,KAAOA,EAAU,IACT,IAE/B,QAASC,GAAWh3L,GAClB,MAAO62L,GAAStkM,EAAQyN,EAAK4qE,QAAS,KAAO,IACtC5qE,EAAKi3L,SAAW,IAChBJ,EAAStkM,EAAQyN,EAAK6qE,UAAW,KAc1C,QAAS75C,GAAK45C,EAAQC,EAAU34E,EAAS+kM,EAAUC,GACjD,KAAM,IAAItkM,GAAOukM,gBACfjlM,QAASA,EACT04E,OAAQA,EACRC,SAAUA,EACVosH,SAAUA,EACVC,mBAAoBA,IAcxB,QAASrkM,GAAGrO,EAAO0N,GACZ1N,GAAOwsC,EAAKxsC,KAAa0N,EAAS,KAAMU,EAAOC,IAoCtD,QAASmoE,GAAW4P,EAAQC,EAAUm8C,EAAQowE,GAE5C,GAAIxsH,IAAWC,EACb,OAAM,CACD,IAAI42E,EAAS72E,IAAW62E,EAAS52E,GACtC,MAAqC,KAA9ByrH,EAAQ1rH,EAAQC,EAIlB,IAAI14E,EAAKw0H,OAAO/7C,IAAWz4E,EAAKw0H,OAAO97C,GAC5C,MAAOD,GAAOqnC,YAAcpnC,EAASonC,SAKhC,IAAI9/G,EAAK8oK,SAASrwF,IAAWz4E,EAAK8oK,SAASpwF,GAChD,MAAOD,GAAOvqE,SAAWwqE,EAASxqE,QAC3BuqE,EAAO73E,SAAW83E,EAAS93E,QAC3B63E,EAAOysH,YAAcxsH,EAASwsH,WAC9BzsH,EAAOtpD,YAAcupD,EAASvpD,WAC9BspD,EAAO0sH,aAAezsH,EAASysH,UAIjC,IAAgB,OAAX1sH,GAAqC,gBAAXA,IACb,OAAbC,GAAyC,gBAAbA,GASjC,IAAI4rH,EAAO7rH,IAAW6rH,EAAO5rH,IACzB2rH,EAAU5rH,KAAY4rH,EAAU3rH,MAC9BD,YAAkB2sH,eAClB3sH,YAAkB4sH,eAC7B,MACoD,KAD7ClB,EAAQ,GAAImB,YAAW7sH,EAAO+rH,QACtB,GAAIc,YAAW5sH,EAAS8rH,QAQlC,IAAIl1C,EAAS72E,KAAY62E,EAAS52E,GACvC,OAAM,CAENusH,GAAQA,IAAUxsH,UAAYC,YAE9B,IAAI6sH,GAAcN,EAAMxsH,OAAOpwE,QAAQowE,EACvC,QAAqB,IAAjB8sH,GACEA,IAAgBN,EAAMvsH,SAASrwE,QAAQqwE,KAK7CusH,EAAMxsH,OAAO5pF,KAAK4pF,GAClBwsH,EAAMvsH,SAAS7pF,KAAK6pF,GAEb8sH,EAAS/sH,EAAQC,EAAUm8C,EAAQowE,IApC1C,MAAOpwE,GAASp8C,IAAWC,EAAWD,GAAUC,EAwCpD,QAASyhE,GAAYzoJ,GACnB,MAAiD,sBAA1C5C,OAAOC,UAAU67B,SAASz8B,KAAKuD,GAGxC,QAAS8zM,GAASluL,EAAG5C,EAAGmgH,EAAQ4wE,GAC9B,GAAU,OAANnuL,YAAcA,GAAyB,OAAN5C,YAAcA,EACjD,OAAM,CAER,IAAI1U,EAAK+0C,YAAYz9B,IAAMtX,EAAK+0C,YAAYrgC,GAC1C,MAAO4C,KAAM5C,CACf,IAAImgH,GAAU/lI,OAAOuuC,eAAe/lB,KAAOxoB,OAAOuuC,eAAe3oB,GAC/D,OAAM,CACR,IAAIgxL,GAAUvrD,EAAY7iI,GACtBquL,EAAUxrD,EAAYzlI,EAC1B,IAAKgxL,IAAYC,IAAcD,GAAWC,EACxC,OAAM,CACR,IAAID,EAGF,MAFApuL,GAAIsuL,EAAOz3M,KAAKmpB,GAChB5C,EAAIkxL,EAAOz3M,KAAKumB,GACTm0D,EAAWvxD,EAAG5C,EAAGmgH,EAE1B,IAEIziI,GAAKnE,EAFL43M,EAAK5lL,EAAW3I,GAChBwuL,EAAK7lL,EAAWvL,EAIpB,IAAImxL,EAAGl3M,SAAWm3M,EAAGn3M,OACnB,OAAM,CAKR,KAHAk3M,EAAGnvI,OACHovI,EAAGpvI,OAEEzoE,EAAI43M,EAAGl3M,OAAS,EAAGV,GAAK,EAAGA,IAC9B,GAAI43M,EAAG53M,KAAO63M,EAAG73M,GACf,OAAM,CAIV,KAAKA,EAAI43M,EAAGl3M,OAAS,EAAGV,GAAK,EAAGA,IAE9B,GADAmE,EAAMyzM,EAAG53M,IACJ46E,EAAWvxD,EAAEllB,GAAMsiB,EAAEtiB,GAAMyiI,EAAQ4wE,GACtC,OAAM,CAEV,UAaF,QAASM,GAAmBttH,EAAQC,EAAU34E,GACxC8oE,EAAW4P,EAAQC,OACrB75C,EAAK45C,EAAQC,EAAU34E,EAAS,qBAAsBgmM,GAuB1D,QAASC,GAAkBvtH,EAAQC,GACjC,IAAKD,IAAWC,EACd,OAAM,CAGR,IAAgD,mBAA5C5pF,OAAOC,UAAU67B,SAASz8B,KAAKuqF,GACjC,MAAOA,GAASnmD,KAAKkmD,EAGvB,KACE,GAAIA,YAAkBC,GACpB,OAAM,EAER,MAAOvpF,IAIT,OAAIQ,MAAMs2M,cAAcvtH,SAIjBA,EAASvqF,QAASsqF,GAG3B,QAASytH,GAAUC,GACjB,GAAIp0M,EACJ,KACEo0M,IACA,MAAOh3M,GACP4C,EAAQ5C,EAEV,MAAO4C,GAGT,QAASq0M,GAAQC,EAAaF,EAAOztH,EAAU34E,GAC7C,GAAI04E,EAEJ,IAAqB,kBAAV0tH,GACT,KAAM,IAAIt7K,WAAU,sCAGE,iBAAb6tD,KACT34E,EAAU24E,EACVA,EAAW,MAGbD,EAASytH,EAAUC,GAEnBpmM,GAAW24E,GAAYA,EAASznF,KAAO,KAAOynF,EAASznF,KAAO,KAAO,MAC1D8O,EAAU,IAAMA,EAAU,KAEjCsmM,IAAgB5tH,GAClB55C,EAAK45C,EAAQC,EAAU,6BAA+B34E,EAGxD,IAAIumM,GAAyC,gBAAZvmM,GAC7BwmM,GAAuBF,GAAermM,EAAK41C,QAAQ6iC,GACnD+tH,GAAyBH,GAAe5tH,IAAWC,CASvD,KAPK6tH,GACDD,GACAN,EAAkBvtH,EAAQC,IAC1B8tH,IACF3nK,EAAK45C,EAAQC,EAAU,yBAA2B34E,GAG/CsmM,GAAe5tH,GAAUC,IACzBstH,EAAkBvtH,EAAQC,KAAgB2tH,GAAe5tH,EAC5D,KAAMA,GAmBV,QAASo8C,GAAOxiI,EAAO0N,GAChB1N,GAAOwsC,EAAKxsC,KAAa0N,EAAS,KAAM80H,GAve/C,GAAI4xE,GAAe,EAAQ,IAsEvBzmM,EAAO,EAAQ,KACf0T,EAAS5kB,OAAOC,UAAUC,eAC1B42M,EAASjlM,MAAM5R,UAAUyR,MACzBikM,EAAsB,WACxB,MAAkC,QAA3B,aAAkBxzM,QA8BvBwP,EAASzS,EAAOD,QAAU2S,EAO1B4oD,EAAQ,6BAaZ7oD,GAAOukM,eAAiB,SAAwBt8L,GAC9CiE,KAAK1b,KAAO,iBACZ0b,KAAK8rE,OAAS/vE,EAAQ+vE,OACtB9rE,KAAK+rE,SAAWhwE,EAAQgwE,SACxB/rE,KAAKm4L,SAAWp8L,EAAQo8L,SACpBp8L,EAAQ3I,SACV4M,KAAK5M,QAAU2I,EAAQ3I,QACvB4M,KAAK+5L,sBAEL/5L,KAAK5M,QAAU8kM,EAAWl4L,MAC1BA,KAAK+5L,oBAEP,IAAI3B,GAAqBr8L,EAAQq8L,oBAAsBlmK,CACvD,IAAIlvC,MAAMqlC,kBACRrlC,MAAMqlC,kBAAkBroB,KAAMo4L,OACzB,CAEL,GAAIlzM,GAAM,GAAIlC,MACd,IAAIkC,EAAIqO,MAAO,CACb,GAAI4xI,GAAMjgJ,EAAIqO,MAGVymM,EAAU/lH,EAAQmkH,GAClB3qD,EAAMtI,EAAIzpI,QAAQ,KAAOs+L,EAC7B,IAAIvsD,GAAO,EAAG,CAGZ,GAAIwsD,GAAY90D,EAAIzpI,QAAQ,KAAM+xI,EAAM,EACxCtI,GAAMA,EAAI90C,UAAU4pG,EAAY,GAGlCj6L,KAAKzM,MAAQ4xI,KAMnB9xI,EAAKy5B,SAASh5B,EAAOukM,eAAgBr1M,OA6CrC8Q,EAAOo+B,KAAOA,EAYdp+B,EAAOC,GAAKA,EAMZD,EAAOomM,MAAQ,SAAepuH,EAAQC,EAAU34E,GAC1C04E,GAAUC,GAAU75C,EAAK45C,EAAQC,EAAU34E,EAAS,KAAMU,EAAOomM,QAMvEpmM,EAAOqmM,SAAW,SAAkBruH,EAAQC,EAAU34E,GAChD04E,GAAUC,GACZ75C,EAAK45C,EAAQC,EAAU34E,EAAS,KAAMU,EAAOqmM,WAOjDrmM,EAAOsmM,UAAY,SAAmBtuH,EAAQC,EAAU34E,GACjD8oE,EAAW4P,EAAQC,OACtB75C,EAAK45C,EAAQC,EAAU34E,EAAS,YAAaU,EAAOsmM,YAIxDtmM,EAAOumM,gBAAkB,SAAyBvuH,EAAQC,EAAU34E,GAC7D8oE,EAAW4P,EAAQC,OACtB75C,EAAK45C,EAAQC,EAAU34E,EAAS,kBAAmBU,EAAOumM,kBAuH9DvmM,EAAOwmM,aAAe,SAAsBxuH,EAAQC,EAAU34E,GACxD8oE,EAAW4P,EAAQC,OACrB75C,EAAK45C,EAAQC,EAAU34E,EAAS,eAAgBU,EAAOwmM,eAI3DxmM,EAAOslM,mBAAqBA,EAW5BtlM,EAAO4W,YAAc,SAAqBohE,EAAQC,EAAU34E,GACtD04E,IAAWC,GACb75C,EAAK45C,EAAQC,EAAU34E,EAAS,MAAOU,EAAO4W,cAOlD5W,EAAOymM,eAAiB,SAAwBzuH,EAAQC,EAAU34E,GAC5D04E,IAAWC,GACb75C,EAAK45C,EAAQC,EAAU34E,EAAS,MAAOU,EAAOymM,iBA+ElDzmM,EAAO0mM,OAAS,SAAShB,EAAmBp0M,EAAmBgO,GAC7DqmM,KAAcD,EAAOp0M,EAAOgO,IAI9BU,EAAO2mM,aAAe,SAASjB,EAAmBp0M,EAAmBgO,GACnEqmM,KAAeD,EAAOp0M,EAAOgO,IAG/BU,EAAO4mM,QAAU,SAASx1M,GAAO,GAAIA,EAAK,KAAMA,IAMhD4O,EAAOo0H,OAAS4xE,EAAa5xE,EAAQp0H,GACnComM,MAAOpmM,EAAO4W,YACd0vL,UAAWtmM,EAAOumM,gBAClBF,SAAUrmM,EAAOymM,eACjBD,aAAcxmM,EAAOslM,qBAEvBtlM,EAAOo0H,OAAOA,OAASp0H,EAAOo0H,MAE9B,IAAI50G,GAAanxB,OAAO6I,MAAQ,SAAUxF,GACxC,GAAIwF,KACJ,KAAK,GAAIvF,KAAOD,GACVuhB,EAAOvlB,KAAKgE,EAAKC,IAAMuF,EAAK9I,KAAKuD,EAEvC,OAAOuF,M5Sg49CoBxJ,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,GAEjC,Y6St2+CAI,GAAOD,SAXHu5M,G7S84+CE,SAAUt5M,EAAQD,EAASH,GAEjC,Y8S74+CA,IAAIsmG,GAAuC,kBAAXz9C,SAAyBA,OAAY,KAAKA,OAAY,IAAE,kBAAoB,KAE5GzoD,GAAOD,QAAUmmG,G9Sk6+CX,SAAUlmG,EAAQD,EAASH,GAEjC,Y+St5+CA,SAAS25M,GAAcC,GACrB,GAAIC,GAAaD,IAAkBE,GAAmBF,EAAcE,IAAoBF,EAAcG,GACtG,IAA0B,kBAAfF,GACT,MAAOA,GApBX,GAAIC,GAAoC,kBAAXjxJ,SAAyBA,OAAOnD,SACzDq0J,EAAuB,YAuB3B35M,GAAOD,QAAUw5M,G/S27+CX,SAAUv5M,EAAQD,EAASH,GAEjC,YgTv9+CA,IAAIg6M,KAUJ55M,GAAOD,QAAU65M,GhTy++CX,SAAU55M,EAAQD,EAASH,GAEjC,YiTt/+CA,IAAIkmE,IACFlB,oBAAqB,EAGvB5kE,GAAOD,QAAU+lE,GjTug/CX,SAAU9lE,EAAQD,EAASH,GAEjC,YkT3/+CA,SAASyhI,GAAe9gH,EAASC,GAG/B,MAFU,OAARA,GAAoJ6kD,EAAe,MAEtJ,MAAX9kD,EACKC,EAKL7N,MAAM+c,QAAQnP,GACZ5N,MAAM+c,QAAQlP,IAChBD,EAAQ1f,KAAKwQ,MAAMkP,EAASC,GACrBD,IAETA,EAAQ1f,KAAK2f,GACND,GAGL5N,MAAM+c,QAAQlP,IAERD,GAASiR,OAAOhR,IAGlBD,EAASC,GAxCnB,GAAI6kD,GAAiB,EAAQ,EAEb,GAAQ,GAyCxBrlE,EAAOD,QAAUshI,GlT8h/CX,SAAUrhI,EAAQD,EAASH,GAEjC,YmTnk/CA,SAASqiI,GAAmB1vH,EAAK8tB,EAAIg0D,GAC/B1hF,MAAM+c,QAAQnd,GAChBA,EAAImsC,QAAQre,EAAIg0D,GACP9hF,GACT8tB,EAAGlgC,KAAKk0F,EAAO9hF,GAInBvS,EAAOD,QAAUkiI,GnT6l/CX,SAAUjiI,EAAQD,EAASH,GAEjC,YoTtm/CA,SAASi6M,KAMP,OALKC,GAAcv3H,EAAqBxsD,YAGtC+jL,EAAa,eAAiB53M,UAAS63M,gBAAkB,cAAgB,aAEpED,EAhBT,GAAIv3H,GAAuB,EAAQ,IAE/Bu3H,EAAa,IAiBjB95M,GAAOD,QAAU85M,GpTio/CX,SAAU75M,EAAQD,EAASH,GAEjC,YqTnp/CA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAFhH,GAAIwoC,GAAiB,EAAQ,GAIzBmuB,EAAc,EAAQ,IAgBtBhC,GAdY,EAAQ,GAcJ,WAClB,QAASA,GAActoE,GACrBm5C,EAAgB1jD,KAAM6yE,GAEtB7yE,KAAKq7L,WAAa,KAClBr7L,KAAKs7L,UAAY,KACjBt7L,KAAKu7L,KAAOhxL,EA2Ed,MA/DAsoE,GAAczwF,UAAUgyF,QAAU,SAAiB39C,EAAU32B,GAC3DE,KAAKq7L,WAAar7L,KAAKq7L,eACvBr7L,KAAKq7L,WAAWn5M,KAAKu0C,GACrBz2B,KAAKs7L,UAAYt7L,KAAKs7L,cACtBt7L,KAAKs7L,UAAUp5M,KAAK4d,IAWtB+yE,EAAczwF,UAAUgzF,UAAY,WAClC,GAAI3B,GAAYzzE,KAAKq7L,WACjBG,EAAWx7L,KAAKs7L,UAChB/wL,EAAMvK,KAAKu7L,IACf,IAAI9nH,GAAa+nH,EAAU,CACvB/nH,EAAUzxF,SAAWw5M,EAASx5M,QAAsH0kE,EAAe,MACrK1mD,KAAKq7L,WAAa,KAClBr7L,KAAKs7L,UAAY,IACjB,KAAK,GAAIh6M,GAAI,EAAGA,EAAImyF,EAAUzxF,OAAQV,IACpCmyF,EAAUnyF,GAAGE,KAAKg6M,EAASl6M,GAAIipB,EAEjCkpE,GAAUzxF,OAAS,EACnBw5M,EAASx5M,OAAS,IAItB6wF,EAAczwF,UAAUq5M,WAAa,WACnC,MAAOz7L,MAAKq7L,WAAar7L,KAAKq7L,WAAWr5M,OAAS,GAGpD6wF,EAAczwF,UAAUs5M,SAAW,SAAkB7oK,GAC/C7yB,KAAKq7L,YAAcr7L,KAAKs7L,YAC1Bt7L,KAAKq7L,WAAWr5M,OAAS6wC,EACzB7yB,KAAKs7L,UAAUt5M,OAAS6wC,IAW5BggD,EAAczwF,UAAU+yF,MAAQ,WAC9Bn1E,KAAKq7L,WAAa,KAClBr7L,KAAKs7L,UAAY,MAQnBzoH,EAAczwF,UAAUmzF,WAAa,WACnCv1E,KAAKm1E,SAGAtC,KAGTxxF,GAAOD,QAAUyzF,EAAYc,aAAa9C,IrTuq/CpC,SAAUxxF,EAAQD,EAASH,GAEjC,YsTjx/CA,IAAI2yF,IAIFC,oBAAmBA,EAGrBxyF,GAAOD,QAAUwyF,GtTmy/CX,SAAUvyF,EAAQD,EAASH,GAEjC,YuTtx/CA,SAAS06M,GAAmBxnC,GAC1B,GAAI13D,GAAW03D,GAAQA,EAAK13D,UAAY03D,EAAK13D,SAASpmF,aAEtD,OAAiB,UAAbomF,IACOm/F,EAAoBznC,EAAKzwK,MAGnB,aAAb+4G,EAzBN,GAAIm/F,IACF,SACA,QACA,YACA,oBACA,SACA,SACA,UACA,YACA,SACA,UACA,OACA,QACA,QACA,OACA,QAiBFv6M,GAAOD,QAAUu6M,GvT8z/CX,SAAUt6M,EAAQD,EAASH,GAEjC,YwTr2/CA,IAAI2yJ,IAEFmB,kBAAmB,EAEnBE,iBAAkB,EAElB4G,oBAAqB,SAAUggD,GAC7BjoD,EAAgBmB,kBAAoB8mD,EAAer1L,EACnDotI,EAAgBqB,iBAAmB4mD,EAAep1L,GAKtDplB,GAAOD,QAAUwyJ,GxTs3/CX,SAAUvyJ,EAAQD,EAASH,GAEjC,YyTr4/CA,IAAI2iF,GAAuB,EAAQ,IAC/BiyE,EAA8B,EAAQ,KACtCh6C,EAAe,EAAQ,KAYvBE,EAAiB,SAAU9uE,EAAM6uE,GACnC,GAAIA,EAAM,CACR,GAAI11C,GAAan5B,EAAKm5B,UAEtB,IAAIA,GAAcA,IAAen5B,EAAK6uK,WAAqC,IAAxB11I,EAAWjB,SAE5D,YADAiB,EAAWd,UAAYw2C,GAI3B7uE,EAAK8uK,YAAcjgG,EAGjBl4B,GAAqBxsD,YACjB,eAAiB7zB,UAAS63M,kBAC9Br/F,EAAiB,SAAU9uE,EAAM6uE,GAC/B,GAAsB,IAAlB7uE,EAAKk4B,SAEP,YADAl4B,EAAKq4B,UAAYw2C,EAGnBD,GAAa5uE,EAAM4oH,EAA4B/5C,OAKrDz6G,EAAOD,QAAU26G,GzTs5/CX,SAAU16G,EAAQD,EAASH,GAEjC,Y0T57/CA,SAAS+6M,GAAU/uK,GAIjB,IACEA,EAAKgvK,QACL,MAAOz5M,KAGXnB,EAAOD,QAAU46M,G1T+8/CX,SAAU36M,EAAQD,EAASH,GAEjC,Y2T36/CA,SAASi7M,GAAUlzJ,EAAQvjD,GACzB,MAAOujD,GAASvjD,EAAI2hC,OAAO,GAAGstB,cAAgBjvD,EAAI4qG,UAAU,GA9C9D,GAAI8rG,IACFC,yBAAwBA,EACxBC,mBAAkBA,EAClBC,kBAAiBA,EACjBC,kBAAiBA,EACjBC,SAAQA,EACRC,cAAaA,EACbC,iBAAgBA,EAChBC,aAAYA,EACZC,MAAKA,EACLC,UAASA,EACTC,cAAaA,EACbC,YAAWA,EACXC,cAAaA,EACbC,WAAUA,EACVC,SAAQA,EACRC,YAAWA,EACXC,YAAWA,EACXC,WAAUA,EACVC,YAAWA,EACXxjC,SAAQA,EACRyjC,OAAMA,EACNC,SAAQA,EACRC,SAAQA,EACRC,QAAOA,EACPC,QAAOA,EACPC,MAAKA,EAGLC,aAAYA,EACZC,cAAaA,EACbC,aAAYA,EACZC,iBAAgBA,EAChBC,kBAAiBA,EACjBC,kBAAiBA,EACjBC,eAAcA,EACdC,aAAYA,GAiBVC,GAAY,SAAU,KAAM,MAAO,IAIvCl8M,QAAO6I,KAAKmxM,GAAkBp8J,QAAQ,SAAUnP,GAC9CytK,EAASt+J,QAAQ,SAAUiJ,GACzBmzJ,EAAiBD,EAAUlzJ,EAAQpY,IAASurK,EAAiBvrK,MAajE,IAAI0tK,IACF/vC,YACEgwC,sBAAqBA,EACrB7vC,iBAAgBA,EAChBgB,iBAAgBA,EAChB8uC,qBAAoBA,EACpBC,qBAAoBA,EACpB7uC,kBAAiBA,GAEnB8uC,oBACEF,qBAAoBA,EACpBC,qBAAoBA,GAEtBE,QACEC,aAAYA,EACZC,aAAYA,EACZC,aAAYA,GAEdC,cACEC,mBAAkBA,EAClBC,mBAAkBA,EAClBC,mBAAkBA,GAEpBC,YACEC,iBAAgBA,EAChBC,iBAAgBA,EAChBC,iBAAgBA,GAElBC,aACEC,kBAAiBA,EACjBC,kBAAiBA,EACjBC,kBAAiBA,GAEnBC,WACEC,gBAAeA,EACfC,gBAAeA,EACfC,gBAAeA,GAEjBC,MACEC,WAAUA,EACVC,aAAYA,EACZ7C,YAAWA,EACX8C,UAASA,EACT5C,YAAWA,EACX6C,YAAWA,GAEbC,SACEC,cAAaA,EACbC,cAAaA,EACbC,cAAaA,IAIbC,GACFrE,iBAAkBA,EAClBmC,4BAA6BA,EAG/Bj9M,GAAOD,QAAUo/M,G3T6+/CX,SAAUn/M,EAAQD,EAASH,GAEjC,Y4T1mgDA,SAASw/M,GAAoB/mG,GAC3B,QAAIgnG,EAA4Br+M,eAAeq3G,KAG3CinG,EAA0Bt+M,eAAeq3G,KAGzCknG,EAA2Bh7K,KAAK8zE,IAClCgnG,EAA4BhnG,OAAiB,IAG/CinG,EAA0BjnG,OAAiB,IAK7C,QAASmnG,GAAkBpnG,EAAc/zG,GACvC,MAAgB,OAATA,GAAiB+zG,EAAaK,kBAAoBp0G,GAAS+zG,EAAaM,iBAAmBwvB,MAAM7jI,IAAU+zG,EAAaO,yBAA2Bt0G,EAAQ,GAAK+zG,EAAaQ,gCAA6Bv0G,EA5BnN,GAAIwhE,GAAc,EAAQ,IAItB45I,GAHwB,EAAQ,IACT,EAAQ,IAEC,EAAQ,MAGxCF,GAFU,EAAQ,GAEW,GAAIhiK,QAAO,KAAOsoB,EAAYgzC,0BAA4B,KAAOhzC,EAAYkzC,oBAAsB,QAChIumG,KACAD,KAyBAK,GAQFC,kBAAmB,SAAU1kM,GAC3B,MAAO4qD,GAAYE,kBAAoB,IAAM05I,EAA8BxkM,IAG7E2kM,kBAAmB,SAAUh0K,EAAM3wB,GACjC2wB,EAAKnpC,aAAaojE,EAAYE,kBAAmB9qD,IAGnD4kM,oBAAqB,WACnB,MAAOh6I,GAAYizC,oBAAsB,OAG3CgnG,oBAAqB,SAAUl0K,GAC7BA,EAAKnpC,aAAaojE,EAAYizC,oBAAqB,KAUrDinG,wBAAyB,SAAU98M,EAAMoB,GACvC,GAAI+zG,GAAevyC,EAAYoyC,WAAWj3G,eAAeiC,GAAQ4iE,EAAYoyC,WAAWh1G,GAAQ,IAChG,IAAIm1G,EAAc,CAChB,GAAIonG,EAAkBpnG,EAAc/zG,GAClC,MAAO,EAET,IAAIg0G,GAAgBD,EAAaC,aACjC,OAAID,GAAaK,iBAAmBL,EAAaQ,gCAA6Bv0G,EACrEg0G,EAAgB,MAElBA,EAAgB,IAAMonG,EAA8Bp7M,GACtD,MAAIwhE,GAAYkyC,kBAAkB90G,GAC1B,MAAToB,EACK,GAEFpB,EAAO,IAAMw8M,EAA8Bp7M,GAE7C,MAUT27M,+BAAgC,SAAU/8M,EAAMoB,GAC9C,MAAK+6M,GAAoBn8M,IAAkB,MAAToB,EAG3BpB,EAAO,IAAMw8M,EAA8Bp7M,GAFzC,IAYX47M,oBAAqB,SAAUr0K,EAAM3oC,EAAMoB,GACzC,GAAI+zG,GAAevyC,EAAYoyC,WAAWj3G,eAAeiC,GAAQ4iE,EAAYoyC,WAAWh1G,GAAQ,IAChG,IAAIm1G,EAAc,CAChB,GAAIG,GAAiBH,EAAaG,cAClC,IAAIA,EACFA,EAAe3sE,EAAMvnC,OAChB,IAAIm7M,EAAkBpnG,EAAc/zG,GAEzC,WADAsa,MAAKuhM,uBAAuBt0K,EAAM3oC,EAE7B,IAAIm1G,EAAaI,gBAGtB5sE,EAAKwsE,EAAa76E,cAAgBl5B,MAC7B,CACL,GAAIg0G,GAAgBD,EAAaC,cAC7B8nG,EAAY/nG,EAAaE,kBAGzB6nG,GACFv0K,EAAKw0K,eAAeD,EAAW9nG,EAAe,GAAKh0G,GAC1C+zG,EAAaK,iBAAmBL,EAAaQ,gCAA6Bv0G,EACnFunC,EAAKnpC,aAAa41G,EAAe,IAEjCzsE,EAAKnpC,aAAa41G,EAAe,GAAKh0G,SAGrC,IAAIwhE,EAAYkyC,kBAAkB90G,GAEvC,WADAy8M,GAAsBW,qBAAqBz0K,EAAM3oC,EAAMoB,IAe3Dg8M,qBAAsB,SAAUz0K,EAAM3oC,EAAMoB,GACrC+6M,EAAoBn8M,KAGZ,MAAToB,EACFunC,EAAKiyC,gBAAgB56E,GAErB2oC,EAAKnpC,aAAaQ,EAAM,GAAKoB,KAoBjCi8M,wBAAyB,SAAU10K,EAAM3oC,GACvC2oC,EAAKiyC,gBAAgB56E,IAgBvBi9M,uBAAwB,SAAUt0K,EAAM3oC,GACtC,GAAIm1G,GAAevyC,EAAYoyC,WAAWj3G,eAAeiC,GAAQ4iE,EAAYoyC,WAAWh1G,GAAQ,IAChG,IAAIm1G,EAAc,CAChB,GAAIG,GAAiBH,EAAaG,cAClC,IAAIA,EACFA,EAAe3sE,cACV,IAAIwsE,EAAaI,gBAAiB,CACvC,GAAIrgB,GAAWigB,EAAa76E,YACxB66E,GAAaK,gBACf7sE,EAAKusD,MAELvsD,EAAKusD,GAAY,OAGnBvsD,GAAKiyC,gBAAgBu6B,EAAaC,mBAE3BxyC,GAAYkyC,kBAAkB90G,IACvC2oC,EAAKiyC,gBAAgB56E,IAc3BjD,GAAOD,QAAU2/M,G5TsogDX,SAAU1/M,EAAQD,EAASH,GAEjC,Y6T51gDA,SAAS2gN,KACP,GAAI5hM,KAAK4kH,aAAe5kH,KAAK6hM,cAAcC,cAAe,CACxD9hM,KAAK6hM,cAAcC,gBAEnB,IAAIjiM,GAAQG,KAAK+zE,gBAAgBl0E,MAC7Bna,EAAQ4/K,EAAiBpzE,SAASryF,EAEzB,OAATna,GACFq8M,EAAc/hM,KAAM4E,QAAQ/E,EAAMmiM,UAAWt8M,IAkDnD,QAASq8M,GAAc39I,EAAM49I,EAAUC,GACrC,GAAIC,GAAe5gN,EACfya,EAAUurD,EAAsBN,oBAAoB5C,GAAMroD,OAE9D,IAAIimM,EAAU,CAEZ,IADAE,KACK5gN,EAAI,EAAGA,EAAI2gN,EAAUjgN,OAAQV,IAChC4gN,EAAc,GAAKD,EAAU3gN,MAE/B,KAAKA,EAAI,EAAGA,EAAIya,EAAQ/Z,OAAQV,IAAK,CACnC,GAAI8sG,GAAW8zG,EAAc7/M,eAAe0Z,EAAQza,GAAGoE,MACnDqW,GAAQza,GAAG8sG,WAAaA,IAC1BryF,EAAQza,GAAG8sG,SAAWA,QAGrB,CAIL,IADA8zG,EAAgB,GAAKD,EAChB3gN,EAAI,EAAGA,EAAIya,EAAQ/Z,OAAQV,IAC9B,GAAIya,EAAQza,GAAGoE,QAAUw8M,EAEvB,YADAnmM,EAAQza,GAAG8sG,YAIXryF,GAAQ/Z,SACV+Z,EAAQ,GAAGqyF,cAgFjB,QAAS+zG,GAAcj3K,GACrB,GAAIrrB,GAAQG,KAAK+zE,gBAAgBl0E,MAC7BqlB,EAAcogJ,EAAiBG,gBAAgB5lK,EAAOqrB,EAM1D,OAJIlrB,MAAK4kH,cACP5kH,KAAK6hM,cAAcC,kBAErBxvH,EAAamC,KAAKmtH,EAAwC5hM,MACnDklB,EAvLT,GAAI0vD,GAAU,EAAQ,IAElB0wF,EAAmB,EAAQ,KAC3Bh+G,EAAwB,EAAQ,IAChCgrB,EAAe,EAAQ,IAKvB8vH,GAHU,EAAQ,OA6GlBC,GACFC,aAAc,SAAUl+I,EAAMvkD,GAC5B,MAAO+0E,MAAY/0E,GACjBilK,SAAU1gH,EAAKy9I,cAAc/8B,SAC7Bp/K,UAAMA,MAIV68M,aAAc,SAAUn+I,EAAMvkD,GAK5B,GAAIna,GAAQ4/K,EAAiBpzE,SAASryF,EACtCukD,GAAKy9I,eACHC,eAAcA,EACdxgK,aAAuB,MAAT57C,EAAgBA,EAAQma,EAAM2oC,aAC5CvmC,UAAW,KACX6iK,SAAUq9B,EAAcr9L,KAAKs/C,GAC7Bo+I,YAAa59L,QAAQ/E,EAAMmiM,oBAGzBniM,EAAMna,gBAAuBma,EAAM2oC,cAA+B45J,IAEpEA,OAIJK,sBAAuB,SAAUr+I,GAG/B,MAAOA,GAAKy9I,cAAcvgK,cAG5BohK,kBAAmB,SAAUt+I,GAC3B,GAAIvkD,GAAQukD,EAAK2vB,gBAAgBl0E,KAIjCukD,GAAKy9I,cAAcvgK,mBAEnB,IAAIkhK,GAAcp+I,EAAKy9I,cAAcW,WACrCp+I,GAAKy9I,cAAcW,YAAc59L,QAAQ/E,EAAMmiM,SAE/C,IAAIt8M,GAAQ4/K,EAAiBpzE,SAASryF,EACzB,OAATna,GACF0+D,EAAKy9I,cAAcC,iBACnBC,EAAc39I,EAAMx/C,QAAQ/E,EAAMmiM,UAAWt8M,IACpC88M,IAAgB59L,QAAQ/E,EAAMmiM,YAEb,MAAtBniM,EAAM2oC,aACRu5J,EAAc39I,EAAMx/C,QAAQ/E,EAAMmiM,UAAWniM,EAAM2oC,cAGnDu5J,EAAc39I,EAAMx/C,QAAQ/E,EAAMmiM,UAAWniM,EAAMmiM,YAAgB,MAiB3E3gN,GAAOD,QAAUihN,G7Tw3gDX,SAAUhhN,EAAQD,EAASH,GAEjC,Y8TjihDA,SAASgkL,GAA4BntE,GACnC,GAAIA,EAAO,CACT,GAAIxzG,GAAOwzG,EAAM7jB,SACjB,IAAI3vF,EACF,MAAO,gCAAkCA,EAAO,KAGpD,MAAO,GAUT,QAASq+M,GAAwBj/M,GAC/B,MAAuB,kBAATA,aAA8BA,EAAKtB,WAAsE,kBAAlCsB,GAAKtB,UAAUo4G,gBAA4E,kBAApC92G,GAAKtB,UAAU+4G,iBAW7J,QAASynG,GAA0B31K,EAAM41K,GACvC,GAAIl/I,EAEJ,IAAa,OAAT12B,QAAiBA,EACnB02B,EAAWm/I,EAAoB1jM,OAAOwjM,OACjC,IAAoB,gBAAT31K,GAAmB,CACnC,GAAInsB,GAAUmsB,EACVvpC,EAAOod,EAAQpd,IACnB,IAAoB,kBAATA,IAAuC,gBAATA,GAAmB,CAC1D,GAAI+O,GAAO,EAMXA,IAAQwyK,EAA4BnkK,EAAQ+mF,QACuMnhC,EAAe,MAAe,MAARhjE,EAAeA,QAAcA,GAAM+O,GAIlR,gBAAjBqO,GAAQpd,KACjBigE,EAAWo/I,EAAmBC,wBAAwBliM,GAC7C6hM,EAAwB7hM,EAAQpd,OAIzCigE,EAAW,GAAI7iD,GAAQpd,KAAKod,GAGvB6iD,EAASo3C,cACZp3C,EAASo3C,YAAcp3C,EAASs/I,gBAGlCt/I,EAAW,GAAIu/I,GAA+BpiM,OAEvB,gBAATmsB,IAAqC,gBAATA,GAC5C02B,EAAWo/I,EAAmBI,sBAAsBl2K,GAE0Ey5B,EAAe,YAAcz5B,GAyB7J,OAfA02B,GAASy/I,YAAc,EACvBz/I,EAAS0/I,YAAc,KAchB1/I,EA/GT,GAAI+C,GAAiB,EAAQ,GACzBkuB,EAAU,EAAQ,IAElB0uH,EAA0B,EAAQ,KAClCR,EAAsB,EAAQ,KAC9BC,EAAqB,EAAQ,KAO7BG,GALiB,EAAQ,KACb,EAAQ,GACV,EAAQ,GAGe,SAAUpiM,GAC7Cd,KAAKujM,UAAUziM,IAEjB8zE,GAAQsuH,EAA+B9gN,UAAWkhN,GAChDE,2BAA4BZ,IAkG9BvhN,EAAOD,QAAUwhN,G9TqkhDX,SAAUvhN,EAAQD,EAASH,GAEjC,Y+TxrhDA,IAAIylE,GAAiB,EAAQ,GAEzBywC,EAAQ,EAAQ,IAIhBssG,GAFY,EAAQ,IAGtBC,KAAM,EACNC,UAAW,EACXC,MAAO,EAEPC,QAAS,SAAU52K,GACjB,MAAa,QAATA,QAAiBA,EACZw2K,EAAeG,MACbzsG,EAAMhP,eAAel7D,GACL,kBAAdA,GAAKvpC,KACP+/M,EAAeE,UAEfF,EAAeC,SAGuEh9I,GAAe,KAAMz5B,KAI1H5rC,GAAOD,QAAUqiN,G/T0shDX,SAAUpiN,EAAQD,EAASH,GAEjC,YgUtuhDA,IAAI6iN,GAEAC,GACFC,4BAA6B,SAAUhxG,GACrC8wG,EAAwB9wG,IAIxB8vG,GACF1jM,OAAQ,SAAU6kM,GAChB,MAAOH,GAAsBG,IAIjCnB,GAAoB7sH,UAAY8tH,EAEhC1iN,EAAOD,QAAU0hN,GhUuvhDX,SAAUzhN,EAAQD,EAASH,GAEjC,YiU/uhDA,SAAS+hN,GAAwBliM,GAE/B,MADCojM,IAAoJx9I,EAAe,MAAO5lD,EAAQpd,MAC5K,GAAIwgN,GAAsBpjM,GAOnC,QAASqiM,GAAsBrnG,GAC7B,MAAO,IAAIqoG,GAAmBroG,GAOhC,QAASsoG,GAAgB5+I,GACvB,MAAOA,aAAqB2+I,GA5C9B,GAAIz9I,GAAiB,EAAQ,GAIzBw9I,GAFY,EAAQ,GAEI,MACxBC,EAAqB,KAErBE,GAGFC,4BAA6B,SAAUC,GACrCL,EAAwBK,GAI1BC,yBAA0B,SAAUD,GAClCJ,EAAqBI,IA+BrBxB,GACFC,wBAAyBA,EACzBG,sBAAuBA,EACvBiB,gBAAiBA,EACjBnuH,UAAWouH,EAGbhjN,GAAOD,QAAU2hN,GjU0xhDX,SAAU1hN,EAAQD,EAASH,GAEjC,YkUjzhDA,SAASwjN,GAAgBj/I,EAAW9zC,GAGlC,MAAI8zC,IAAkC,gBAAdA,IAA2C,MAAjBA,EAAU//D,IAEnD+gL,EAAeh5D,OAAOhoD,EAAU//D,KAGlCisB,EAAMuM,SAAS,IAWxB,QAASymL,GAAwBjkM,EAAUkkM,EAAWluK,EAAUmuK,GAC9D,GAAIlhN,SAAc+c,EAOlB,IALa,cAAT/c,GAAiC,YAATA,IAE1B+c,EAAW,MAGI,OAAbA,GAA8B,WAAT/c,GAA8B,WAATA,GAGrC,WAATA,GAAqB+c,EAASmnF,WAAaL,EAKzC,MAJA9wD,GAASmuK,EAAiBnkM,EAGZ,KAAdkkM,EAAmBE,EAAYJ,EAAgBhkM,EAAU,GAAKkkM,GACvD,CAGT,IAAIplL,GACAulL,EACAC,EAAe,EACfC,EAA+B,KAAdL,EAAmBE,EAAYF,EAAYM,CAEhE,IAAIjxM,MAAM+c,QAAQtQ,GAChB,IAAK,GAAInf,GAAI,EAAGA,EAAImf,EAASze,OAAQV,IACnCi+B,EAAQ9e,EAASnf,GACjBwjN,EAAWE,EAAiBP,EAAgBllL,EAAOj+B,GACnDyjN,GAAgBL,EAAwBnlL,EAAOulL,EAAUruK,EAAUmuK,OAEhE,CACL,GAAI9J,GAAaF,EAAcn6L,EAC/B,IAAIq6L,EAAY,CACd,GACIlrJ,GADAjJ,EAAWm0J,EAAWt5M,KAAKif,EAE/B,IAAIq6L,IAAer6L,EAAS8+B,QAE1B,IADA,GAAI+xF,GAAK,IACA1hF,EAAOjJ,EAAS9kC,QAAQizB,MAC/BvV,EAAQqwB,EAAKlqD,MACbo/M,EAAWE,EAAiBP,EAAgBllL,EAAO+xG,KACnDyzE,GAAgBL,EAAwBnlL,EAAOulL,EAAUruK,EAAUmuK,OAerE,QAASh1J,EAAOjJ,EAAS9kC,QAAQizB,MAAM,CACrC,GAAI+qB,GAAQjQ,EAAKlqD,KACbm6D,KACFtgC,EAAQsgC,EAAM,GACdilJ,EAAWE,EAAiBx+B,EAAeh5D,OAAO3tD,EAAM,IAAMolJ,EAAeR,EAAgBllL,EAAO,GACpGwlL,GAAgBL,EAAwBnlL,EAAOulL,EAAUruK,EAAUmuK,SAIpE,IAAa,WAATlhN,EAAmB,CAC5B,GAaIwhN,GAAiBz9K,OAAOhnB,EACkOimD,GAAe,KAAyB,oBAAnBw+I,EAAuC,qBAAuB/iN,OAAO6I,KAAKyV,GAAUwR,KAAK,MAAQ,IAAMizL,EAd3W,KAkBnB,MAAOH,GAmBT,QAASI,GAAoB1kM,EAAUg2B,EAAUmuK,GAC/C,MAAgB,OAAZnkM,EACK,EAGFikM,EAAwBjkM,EAAU,GAAIg2B,EAAUmuK,GA/JzD,GAAIl+I,GAAiB,EAAQ,GAGzB6gC,GADoB,EAAQ,IACP,EAAQ,MAE7BqzG,EAAgB,EAAQ,KAExBp0B,GADY,EAAQ,GACH,EAAQ,MAGzBq+B,GAFU,EAAQ,GAEN,KACZI,EAAe,GAuJnB5jN,GAAOD,QAAU+jN,GlUm2hDX,SAAU9jN,EAAQD,EAASH,GAEjC,YmU//hDA,SAASmkN,GAASprL,GAEhB,GAAI6tJ,GAAen+H,SAAStnD,UAAU67B,SAClC57B,EAAiBF,OAAOC,UAAUC,eAClCgjN,EAAazmK,OAAO,IAAMipI,EAE7BrmL,KAAKa,GAEL0qB,QAAQ,sBAAuB,QAE/BA,QAAQ,yDAA0D,SAAW,IAC9E,KACE,GAAIxL,GAASsmK,EAAarmL,KAAKw4B,EAC/B,OAAOqrL,GAAWz/K,KAAKrkB,GACvB,MAAOrc,GACP,OAAM,GA8FV,QAASogN,GAAUhpM,GACjB,GAAI8Z,GAAOkB,EAAQhb,EACnB,IAAI8Z,EAAM,CACR,GAAImvL,GAAWnvL,EAAKmvL,QAEpBx7H,GAAWztE,GACXipM,EAASxlK,QAAQulK,IAIrB,QAASE,GAAuBlhN,EAAMid,EAAQkkM,GAC5C,MAAO,aAAenhN,GAAQ,YAAcid,EAAS,QAAUA,EAAOknB,SAAS1b,QAAQ,YAAa,IAAM,IAAMxL,EAAOmkM,WAAa,IAAMD,EAAY,gBAAkBA,EAAY,IAAM,IAG5L,QAASriM,GAAetC,GACtB,MAAe,OAAXA,EACK,SACqB,gBAAZA,IAA2C,gBAAZA,GACxC,QAC0B,gBAAjBA,GAAQpd,KACjBod,EAAQpd,KAERod,EAAQpd,KAAK4gB,aAAexD,EAAQpd,KAAKY,MAAQ,UAI5D,QAASqhN,GAAWrpM,GAClB,GAGImpM,GAHAnhN,EAAOshN,EAAuBxiM,eAAe9G,GAC7CwE,EAAU8kM,EAAuBC,WAAWvpM,GAC5CwpM,EAAUF,EAAuBG,WAAWzpM,EAMhD,OAJIwpM,KACFL,EAAYG,EAAuBxiM,eAAe0iM,IAG7CN,EAAuBlhN,EAAMwc,GAAWA,EAAQq3F,QAASstG,GAvJlE,GAsCI36H,GACAxzD,EACAyyD,EACAi8H,EACAC,EACAC,EACAC,EA5CAz/I,EAAiB,EAAQ,IAEzBsyB,EAAoB,EAAQ,GA4ChC,IA1CgB,EAAQ,GACV,EAAQ,GAuBA,kBAAfhlF,OAAMid,MAEE,kBAAR2rB,MAAsBwoK,EAASxoK,MAErB,MAAjBA,IAAIx6C,WAAmD,kBAAvBw6C,KAAIx6C,UAAU4I,MAAuBo6M,EAASxoK,IAAIx6C,UAAU4I,OAE7E,kBAARysL,MAAsB2tB,EAAS3tB,MAErB,MAAjBA,IAAIr1L,WAAmD,kBAAvBq1L,KAAIr1L,UAAU4I,MAAuBo6M,EAAS3tB,IAAIr1L,UAAU4I,MAUrE,CACrB,GAAIo7M,GAAU,GAAIxpK,KACdypK,EAAY,GAAI5uB,IAEpB3sG,GAAU,SAAUxuE,EAAI8Z,GACtBgwL,EAAQt1K,IAAIx0B,EAAI8Z,IAElBkB,EAAU,SAAUhb,GAClB,MAAO8pM,GAAQxhN,IAAI0X,IAErBytE,EAAa,SAAUztE,GACrB8pM,EAAgB,OAAE9pM,IAEpB0pM,EAAa,WACX,MAAOhyM,OAAMid,KAAKm1L,EAAQp7M,SAG5Bi7M,EAAU,SAAU3pM,GAClB+pM,EAAUrgI,IAAI1pE,IAEhB4pM,EAAa,SAAU5pM,GACrB+pM,EAAkB,OAAE/pM,IAEtB6pM,EAAa,WACX,MAAOnyM,OAAMid,KAAKo1L,EAAUr7M,aAEzB,CACL,GAAIs7M,MACAC,KAIAC,EAAe,SAAUlqM,GAC3B,MAAO,IAAMA,GAEXmqM,EAAe,SAAUhhN,GAC3B,MAAOijC,UAASjjC,EAAIyiC,OAAO,GAAI,IAGjC4iD,GAAU,SAAUxuE,EAAI8Z,GACtB,GAAI3wB,GAAM+gN,EAAalqM,EACvBgqM,GAAU7gN,GAAO2wB,GAEnBkB,EAAU,SAAUhb,GAClB,GAAI7W,GAAM+gN,EAAalqM,EACvB,OAAOgqM,GAAU7gN,IAEnBskF,EAAa,SAAUztE,GACrB,GAAI7W,GAAM+gN,EAAalqM,SAChBgqM,GAAU7gN,IAEnBugN,EAAa,WACX,MAAO7jN,QAAO6I,KAAKs7M,GAAWt0L,IAAIy0L,IAGpCR,EAAU,SAAU3pM,GAClB,GAAI7W,GAAM+gN,EAAalqM,EACvBiqM,GAAU9gN,OAEZygN,EAAa,SAAU5pM,GACrB,GAAI7W,GAAM+gN,EAAalqM,SAChBiqM,GAAU9gN,IAEnB0gN,EAAa,WACX,MAAOhkN,QAAO6I,KAAKu7M,GAAWv0L,IAAIy0L,IAItC,GAAIC,MAwCAd,GACFe,cAAe,SAAUrqM,EAAIsqM,GAC3B,GAAIxwL,GAAOkB,EAAQhb,EAClB8Z,IAA6FswC,EAAe,OAC7GtwC,EAAKmvL,SAAWqB,CAEhB,KAAK,GAAItlN,GAAI,EAAGA,EAAIslN,EAAa5kN,OAAQV,IAAK,CAC5C,GAAIulN,GAAcD,EAAatlN,GAC3BwlN,EAAYxvL,EAAQuvL,EACvBC,IAAuKpgJ,EAAe,OAC/J,MAAtBogJ,EAAUvB,UAAiD,gBAAtBuB,GAAUhmM,SAA6C,MAArBgmM,EAAUhmM,SAA0L4lD,EAAe,OAC3RogJ,EAAU3nC,WAA8Kz4G,EAAe,MAC9K,MAAtBogJ,EAAUC,WACZD,EAAUC,SAAWzqM,GAKrBwqM,EAAUC,WAAazqM,GAAmNoqD,EAAe,MAAOmgJ,EAAaC,EAAUC,SAAUzqM,KAGvS0qM,uBAAwB,SAAU1qM,EAAIwE,EAASimM,GAS7Cj8H,EAAQxuE,GAPNwE,QAASA,EACTimM,SAAUA,EACVjrG,KAAM,KACNypG,YACApmC,WAAUA,EACV8nC,YAAa,KAIjBC,wBAAyB,SAAU5qM,EAAIwE,GACrC,GAAIsV,GAAOkB,EAAQhb,EACd8Z,IAASA,EAAK+oJ,YAKnB/oJ,EAAKtV,QAAUA,IAEjBqmM,iBAAkB,SAAU7qM,GAC1B,GAAI8Z,GAAOkB,EAAQhb,EAClB8Z,IAA6FswC,EAAe,OAC7GtwC,EAAK+oJ,aAC0B,IAAlB/oJ,EAAK2wL,UAEhBd,EAAQ3pM,IAGZ8qM,kBAAmB,SAAU9qM,GAC3B,GAAI8Z,GAAOkB,EAAQhb,EACd8Z,IAASA,EAAK+oJ,WAKnB/oJ,EAAK6wL,eAEPI,mBAAoB,SAAU/qM,GAC5B,GAAI8Z,GAAOkB,EAAQhb,EACf8Z,KAMFA,EAAK+oJ,aAC0B,IAAlB/oJ,EAAK2wL,UAEhBb,EAAW5pM,IAGfoqM,EAAaxkN,KAAKoa,IAEpBgrM,yBAA0B,WACxB,IAAI1B,EAAuB2B,gBAA3B,CAKA,IAAK,GAAIjmN,GAAI,EAAGA,EAAIolN,EAAa1kN,OAAQV,IAEvCgkN,EADSoB,EAAaplN,GAGxBolN,GAAa1kN,OAAS,IAExBm9K,UAAW,SAAU7iK,GACnB,GAAI8Z,GAAOkB,EAAQhb,EACnB,SAAO8Z,GAAOA,EAAK+oJ,WAErBqoC,wBAAyB,SAAUC,GACjC,GAAIh1M,GAAO,EACX,IAAIg1M,EAAY,CACd,GAAInjN,GAAO8e,EAAeqkM,GACtB3vG,EAAQ2vG,EAAW5/G,MACvBp1F,IAAQ+yM,EAAuBlhN,EAAMmjN,EAAWtvG,QAASL,GAASA,EAAM7jB,WAG1E,GAAIyzH,GAAe1uH,EAAkBp3E,QACjCtF,EAAKorM,GAAgBA,EAAaC,QAGtC,OADAl1M,IAAQmzM,EAAuBgC,qBAAqBtrM,IAGtDsrM,qBAAsB,SAAUtrM,GAE9B,IADA,GAAI7J,GAAO,GACJ6J,GACL7J,GAAQkzM,EAAWrpM,GACnBA,EAAKspM,EAAuBiC,YAAYvrM,EAE1C,OAAO7J,IAETq1M,YAAa,SAAUxrM,GACrB,GAAI8Z,GAAOkB,EAAQhb,EACnB,OAAO8Z,GAAOA,EAAKmvL,aAErBniM,eAAgB,SAAU9G,GACxB,GAAIwE,GAAU8kM,EAAuBC,WAAWvpM,EAChD,OAAKwE,GAGEsC,EAAetC,GAFb,MAIX+kM,WAAY,SAAUvpM,GACpB,GAAI8Z,GAAOkB,EAAQhb,EACnB,OAAO8Z,GAAOA,EAAKtV,QAAU,MAE/BilM,WAAY,SAAUzpM,GACpB,GAAIwE,GAAU8kM,EAAuBC,WAAWvpM,EAChD,OAAKwE,IAAYA,EAAQ+mF,OAGlB/mF,EAAQ+mF,OAAO8/G,SAFb,MAIXE,YAAa,SAAUvrM,GACrB,GAAI8Z,GAAOkB,EAAQhb,EACnB,OAAO8Z,GAAOA,EAAK2wL,SAAW,MAEhCgB,UAAW,SAAUzrM,GACnB,GAAI8Z,GAAOkB,EAAQhb,GACfwE,EAAUsV,EAAOA,EAAKtV,QAAU,IAEpC,OADwB,OAAXA,EAAkBA,EAAQq3F,QAAU,MAGnD6vG,QAAS,SAAU1rM,GACjB,GAAIwE,GAAU8kM,EAAuBC,WAAWvpM,EAChD,OAAuB,gBAAZwE,GACFA,EACqB,gBAAZA,GACT,GAAKA,EAEL,MAGXmnM,eAAgB,SAAU3rM,GACxB,GAAI8Z,GAAOkB,EAAQhb,EACnB,OAAO8Z,GAAOA,EAAK6wL,YAAc,GAInCd,WAAYA,EACZ+B,iBAAkBlC,EAGpB3kN,GAAOD,QAAUwkN,GnUwhiDX,SAAUvkN,EAAQD,EAASH,GAEjC,YoU31iDA,IAAIgsB,GAAgB,EAAQ,IAMxBk7L,GASFt4G,OAAQ,SAAgBvuF,EAAQmtL,EAAWh4J,GACzC,MAAIn1B,GAAO0iE,kBACT1iE,EAAO0iE,iBAAiByqH,EAAWh4J,OAEjC6gB,OAAQ,WACNh2C,EAAOirJ,oBAAoBkiC,EAAWh4J,SAGjCn1B,EAAO2iE,aAChB3iE,EAAO2iE,YAAY,KAAOwqH,EAAWh4J,IAEnC6gB,OAAQ,WACNh2C,EAAO4pK,YAAY,KAAOujB,EAAWh4J,cAc7C2rI,QAAS,SAAiB9gK,EAAQmtL,EAAWh4J,GAC3C,MAAIn1B,GAAO0iE,kBACT1iE,EAAO0iE,iBAAiByqH,EAAWh4J,OAEjC6gB,OAAQ,WACNh2C,EAAOirJ,oBAAoBkiC,EAAWh4J,UAQxC6gB,OAAQrqC,IAKdm7L,gBAAiB,aAGnB/mN,GAAOD,QAAU+mN,GpU22iDX,SAAU9mN,EAAQD,EAASH,GAEjC,YqUp6iDA,SAASonN,GAAap7K,GACpB,MAAOq7K,GAAa/kN,SAAS63M,gBAAiBnuK,GAPhD,GAAIs7K,GAAoB,EAAQ,KAE5BD,EAAe,EAAQ,KACvBtM,EAAY,EAAQ,KACpBwM,EAAmB,EAAQ,KAY3BC,GAEFC,yBAA0B,SAAUv0C,GAClC,GAAI13D,GAAW03D,GAAQA,EAAK13D,UAAY03D,EAAK13D,SAASpmF,aACtD,OAAOomF,KAA0B,UAAbA,GAAsC,SAAd03D,EAAKzwK,MAAgC,aAAb+4G,GAAoD,SAAzB03D,EAAKw0C,kBAGtGC,wBAAyB,WACvB,GAAIC,GAAcL,GAClB,QACEK,YAAaA,EACbC,eAAgBL,EAAoBC,yBAAyBG,GAAeJ,EAAoBM,aAAaF,GAAe,OAShIG,iBAAkB,SAAUC,GAC1B,GAAIC,GAAiBV,IACjBW,EAAmBF,EAA0BJ,YAC7CO,EAAsBH,EAA0BH,cAChDI,KAAmBC,GAAoBd,EAAac,KAClDV,EAAoBC,yBAAyBS,IAC/CV,EAAoBY,aAAaF,EAAkBC,GAErDpN,EAAUmN,KAUdJ,aAAc,SAAUrhK,GACtB,GAAI4hK,EAEJ,IAAI,kBAAoB5hK,GAEtB4hK,GACE3iI,MAAOj/B,EAAM6hK,eACb3iI,IAAKl/B,EAAM8hK,kBAER,IAAIjmN,SAAS+lN,WAAa5hK,EAAM+0D,UAA6C,UAAjC/0D,EAAM+0D,SAASpmF,cAA2B,CAE3F,GAAIozL,GAAQlmN,SAAS+lN,UAAUI,aAG3BD,GAAME,kBAAoBjiK,IAC5B4hK,GACE3iI,OAAQ8iI,EAAMG,UAAU,aAAcliK,EAAMhiD,MAAM1D,QAClD4kF,KAAM6iI,EAAMI,QAAQ,aAAcniK,EAAMhiD,MAAM1D,cAKlDsnN,GAAYf,EAAkBuB,WAAWpiK,EAG3C,OAAO4hK,KAAe3iI,MAAO,EAAGC,IAAK,IASvCyiI,aAAc,SAAU3hK,EAAOqiK,GAC7B,GAAIpjI,GAAQojI,EAAQpjI,MAChBC,EAAMmjI,EAAQnjI,GAKlB,aAJIA,IACFA,EAAMD,GAGJ,kBAAoBj/B,GACtBA,EAAM6hK,eAAiB5iI,EACvBj/B,EAAM8hK,aAAelrL,KAAKgpD,IAAIV,EAAKl/B,EAAMhiD,MAAM1D,YAC1C,IAAIuB,SAAS+lN,WAAa5hK,EAAM+0D,UAA6C,UAAjC/0D,EAAM+0D,SAASpmF,cAA2B,CAC3F,GAAIozL,GAAQ/hK,EAAMsiK,iBAClBP,GAAMQ,UAASA,GACfR,EAAMG,UAAU,YAAajjI,GAC7B8iI,EAAMI,QAAQ,YAAajjI,EAAMD,GACjC8iI,EAAMS,aAEN3B,GAAkB4B,WAAWziK,EAAOqiK,IAK1C1oN,GAAOD,QAAUqnN,GrU27iDX,SAAUpnN,EAAQD,EAASH,GAEjC,YsUhijDA,SAASunN,GAAiBn7F,GAExB,aADAA,EAAMA,IAA4B,mBAAb9pH,UAA2BA,kBAE9C,MAAO,KAET,KACE,MAAO8pH,GAAI+8F,eAAiB/8F,EAAIptD,KAChC,MAAOz9D,GACP,MAAO6qH,GAAIptD,MAIf5+D,EAAOD,QAAUonN,GtU4jjDX,SAAUnnN,EAAQD,EAASH,GAEjC,cAAa,SuUjmjDb,GAoDA,QAASopN,GAAqBC,EAASC,GAErC,IAAK,GADDC,GAASlsL,KAAKgpD,IAAIgjI,EAAQtoN,OAAQuoN,EAAQvoN,QACrCV,EAAI,EAAGA,EAAIkpN,EAAQlpN,IAC1B,GAAIgpN,EAAQljL,OAAO9lC,KAAOipN,EAAQnjL,OAAO9lC,GACvC,MAAOA,EAGX,OAAOgpN,GAAQtoN,SAAWuoN,EAAQvoN,QAAU,EAAIwoN,EAQlD,QAASC,GAA+B5pJ,GACtC,MAAKA,GAIDA,EAAUsE,WAAaulJ,EAClB7pJ,EAAUu6I,gBAEVv6I,EAAUuF,WANV,KAUX,QAASukJ,GAAc19K,GAIrB,MAAOA,GAAKm4B,cAAgBn4B,EAAKm4B,aAAaC,IAAc,GAW9D,QAASulJ,GAAuBC,EAAiBhqJ,EAAWyyB,EAAaw3H,EAAmBhrM,GAC1F,GAAI6zE,EACJ,IAAIC,EAAkBC,mBAAoB,CACxC,GAAIk3H,GAAiBF,EAAgB92H,gBAAgBl0E,MAAM0f,MACvD77B,EAAOqnN,EAAernN,IAC1BiwF,GAAa,iBAAmC,gBAATjwF,GAAoBA,EAAOA,EAAK4gB,aAAe5gB,EAAKY,MAC3Fa,EAAQ0N,KAAK8gF,GAGf,GAAIknB,GAAS3mB,EAAgBsmB,eAAeqwG,EAAiBv3H,EAAa,KAAM03H,EAAsBH,EAAiBhqJ,GAAY/gD,EAAS,EAGxI6zE,IACFxuF,EAAQ8N,QAAQ0gF,GAGlBk3H,EAAgBplJ,mBAAmBwlJ,iBAAmBJ,EACtDK,EAAWC,oBAAoBtwG,EAAQh6C,EAAWgqJ,EAAiBC,EAAmBx3H,GAUxF,QAAS83H,GAA8BC,EAAmBxqJ,EAAWiqJ,EAAmBhrM,GACtF,GAAIwzE,GAAchB,EAAaC,0BAA0BO,WAExDg4H,GAAqBQ,EAAqBC,iBAC3Cj4H,GAAYmC,QAAQm1H,EAAwB,KAAMS,EAAmBxqJ,EAAWyyB,EAAaw3H,EAAmBhrM,GAChHwyE,EAAaC,0BAA0BiD,QAAQlC,GAYjD,QAASk4H,GAAyB7nJ,EAAU9C,EAAWo6C,GAcrD,IAVA/mB,EAAgB8mB,iBAAiBr3C,EAAUs3C,GAKvCp6C,EAAUsE,WAAaulJ,IACzB7pJ,EAAYA,EAAUu6I,iBAIjBv6I,EAAUi7I,WACfj7I,EAAUof,YAAYpf,EAAUi7I,WAcpC,QAAS2P,GAAqB5qJ,GAC5B,GAAI6qJ,GAASjB,EAA+B5pJ,EAC5C,IAAI6qJ,EAAQ,CACV,GAAItnJ,GAAOkD,EAAsBP,oBAAoB2kJ,EACrD,UAAUtnJ,IAAQA,EAAK6C,cAwB3B,QAAS0kJ,GAAiB1+K,GACxB,SAAUA,GAASA,EAAKk4B,WAAaymJ,GAAqB3+K,EAAKk4B,WAAaulJ,GAAiBz9K,EAAKk4B,WAAa0mJ,GAcjH,QAASC,GAA+BjrJ,GACtC,GAAI6qJ,GAASjB,EAA+B5pJ,GACxCkrJ,EAAmBL,GAAUpkJ,EAAsBP,oBAAoB2kJ,EAC3E,OAAOK,KAAqBA,EAAiB9kJ,YAAc8kJ,EAAmB,KAGhF,QAASC,GAA8BnrJ,GACrC,GAAIrR,GAAOs8J,EAA+BjrJ,EAC1C,OAAOrR,GAAOA,EAAKy8J,mBAAmBhB,iBAAmB,KA9M3D,GAAIvkJ,GAAiB,EAAQ,GAEzBg2C,EAAc,EAAQ,IACtBx1C,EAAc,EAAQ,IACtBiwC,EAAQ,EAAQ,IAChBsjD,EAA2B,EAAQ,KAEnCnzF,GADoB,EAAQ,IACJ,EAAQ,KAChC0jJ,EAAwB,EAAQ,KAChCM,EAAuB,EAAQ,KAC/B13H,EAAoB,EAAQ,KAC5B8yC,EAAmB,EAAQ,KAE3BwlF,GADuB,EAAQ,IACT,EAAQ,MAC9Bh4H,EAAkB,EAAQ,IAC1B0yF,EAAmB,EAAQ,KAC3Bt0F,EAAe,EAAQ,IAEvB2vC,EAAc,EAAQ,KACtB2gF,EAA4B,EAAQ,KAEpC/mG,GADY,EAAQ,GACL,EAAQ,MACvBmqE,EAA6B,EAAQ,KAGrC3gH,GAFU,EAAQ,GAEN6B,EAAYE,mBACxB+kJ,EAAiBjlJ,EAAYizC,oBAE7ByxG,EAAoB,EACpBlB,EAAgB,EAChBmB,EAA8B,GAE9BO,KAsLAC,EAAsB,EACtBC,EAAkB,WACpBtsM,KAAKusM,OAASF,IAEhBC,GAAgBlqN,UAAU08K,oBAI1BwtC,EAAgBlqN,UAAUie,OAAS,WACjC,MAAOL,MAAKH,MAAM0f,OAEpB+sL,EAAgBt4H,yBAoBhB,IAAIk3H,IAEFoB,gBAAiBA,EAKjBE,wBAAyBJ,EAUzBK,cAAe,SAAU5rJ,EAAW6rJ,GAClCA,KAUFC,qBAAsB,SAAUC,EAAexxG,EAAaiU,EAAaxuD,EAAWpqB,GAQlF,MAPAy0K,GAAWuB,cAAc5rJ,EAAW,WAClC+lH,EAAiBM,uBAAuB0lC,EAAexxG,EAAaiU,GAChE54E,GACFmwI,EAAiBE,wBAAwB8lC,EAAen2K,KAIrDm2K,GAWTC,wBAAyB,SAAUzxG,EAAav6C,EAAWiqJ,EAAmBhrM,GAM3E6rM,EAAiB9qJ,IAA2I6F,EAAe,MAE5K+zF,EAAyBkB,6BACzB,IAAI0vD,GAAoBzI,EAA0BxnG,KAMlD9oB,GAAaU,eAAeo4H,EAA+BC,EAAmBxqJ,EAAWiqJ,EAAmBhrM,EAE5G,IAAIgtM,GAAYzB,EAAkB0B,UAAUR,MAG5C,OAFAH,GAAuBU,GAAazB,EAE7BA,GAgBT2B,2BAA4B,SAAUC,EAAiB7xG,EAAav6C,EAAWpqB,GAE7E,MADqB,OAAnBw2K,GAA2BvmF,EAAiB31F,IAAIk8K,IAAkIvmJ,EAAe,MAC5LwkJ,EAAWgC,4BAA4BD,EAAiB7xG,EAAav6C,EAAWpqB,IAGzFy2K,4BAA6B,SAAUD,EAAiB7xG,EAAav6C,EAAWpqB,GAC9EmwI,EAAiBC,iBAAiBpwI,EAAU,mBAC3C0gE,EAAMhP,eAAeiT,IAEkI10C,EAAe,KAA6B,gBAAhB00C,GAA2B,uFAAyH,kBAAhBA,GAA6B,kFAAwG,MAAfA,YAAuBA,EAAYv7F,MAAsB,kFAAyF,GAIhkB,IAEIwvG,GAFA89F,EAAqBh2G,EAAM1zG,cAAc6oN,GAAmB/sL,MAAO67E,GAGvE,IAAI6xG,EAAiB,CACnB,GAAIjqF,GAAa0D,EAAiB9hI,IAAIqoN,EACtC59F,GAAc2T,EAAWoqF,qBAAqBpqF,EAAWh8E,cAEzDqoE,GAAc4S,CAGhB,IAAI2qF,GAAgBZ,EAA8BnrJ,EAElD,IAAI+rJ,EAAe,CACjB,GAAIS,GAAqBT,EAAc74H,gBACnCsnB,EAAcgyG,EAAmBxtM,MAAM0f,KAC3C,IAAIymJ,EAA2B3qE,EAAaD,GAAc,CACxD,GAAIkyG,GAAaV,EAAcnnJ,mBAAmB4uB,oBAC9Ck5H,EAAkB92K,GAAY,WAChCA,EAASj1C,KAAK8rN,GAGhB,OADApC,GAAWyB,qBAAqBC,EAAeO,EAAoB99F,EAAaxuD,EAAW0sJ,GACpFD,EAEPpC,EAAWsC,uBAAuB3sJ,GAItC,GAAI4sJ,GAAmBhD,EAA+B5pJ,GAClD6sJ,EAA0BD,KAAsB9C,EAAc8C,GAC9DE,EAAgClC,EAAqB5qJ,GAiBrDiqJ,EAAoB4C,IAA4Bd,IAAkBe,EAClEnoJ,EAAY0lJ,EAAW2B,wBAAwBM,EAAoBtsJ,EAAWiqJ,EAAmBz7F,GAAa5pD,mBAAmB4uB,mBAIrI,OAHI59C,IACFA,EAASj1C,KAAKgkE,GAETA,GAgBTnlD,OAAQ,SAAU+6F,EAAav6C,EAAWpqB,GACxC,MAAOy0K,GAAWgC,4BAA4B,KAAM9xG,EAAav6C,EAAWpqB,IAW9E+2K,uBAAwB,SAAU3sJ,GAO/B8qJ,EAAiB9qJ,IAA+I6F,EAAe,KAMhL,IAAIkmJ,GAAgBZ,EAA8BnrJ,EAClD,OAAK+rJ,UAcER,GAAuBQ,EAAcG,UAAUR,QACtDj6H,EAAaU,eAAew4H,EAA0BoB,EAAe/rJ,OAAW,IAZ1C4qJ,EAAqB5qJ,GAGP,IAAvBA,EAAUsE,UAAkBtE,EAAU+sJ,aAAazB,IAM9E,IAOJhB,oBAAqB,SAAUtwG,EAAQh6C,EAAW8C,EAAUmnJ,EAAmBx3H,GAG7E,GAFCq4H,EAAiB9qJ,IAAuI6F,EAAe,MAEpKokJ,EAAmB,CACrB,GAAI+C,GAAcpD,EAA+B5pJ,EACjD,IAAIqrJ,EAAoB4B,eAAejzG,EAAQgzG,GAE7C,WADAvmJ,GAAsB5B,aAAa/B,EAAUkqJ,EAG7C,IAAIE,GAAWF,EAAYzoJ,aAAa8mJ,EAAoB8B,mBAC5DH,GAAY3uI,gBAAgBgtI,EAAoB8B,mBAEhD,IAAIC,GAAaJ,EAAYK,SAC7BL,GAAY/pN,aAAaooN,EAAoB8B,mBAAoBD,EAEjE,IAAII,GAAmBtzG,EAoBnBuzG,EAAY/D,EAAqB8D,EAAkBF,GACnDljH,EAAa,aAAeojH,EAAiB99G,UAAU+9G,EAAY,GAAIA,EAAY,IAAM,eAAiBH,EAAW59G,UAAU+9G,EAAY,GAAIA,EAAY,GAE7JvtJ,GAAUsE,WAAaulJ,GAAqjBhkJ,EAAe,KAAMqkC,GAUvmB,GAFElqC,EAAUsE,WAAaulJ,GAAkThkJ,EAAe,MAEtV4sB,EAAYi4H,iBAAkB,CAChC,KAAO1qJ,EAAUi7I,WACfj7I,EAAUof,YAAYpf,EAAUi7I,UAElCp/F,GAAYf,iBAAiB96C,EAAWg6C,EAAQ,UAEhDgB,GAAah7C,EAAWg6C,GACxBvzC,EAAsB5B,aAAa/B,EAAU9C,EAAUuF,aAgB7D/kE,GAAOD,QAAU8pN,IvUmmjDY1pN,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,GAEjC,YwUnnkDA,SAASotN,GAA8BjqJ,GAGrC,IAFA,GAAI1gE,IAEIA,EAAO0gE,EAAKkqJ,qBAAuB7K,EAAeE,WACxDv/I,EAAOA,EAAKqB,kBAGd,OAAI/hE,KAAS+/M,EAAeC,KACnBt/I,EAAKqB,mBACH/hE,IAAS+/M,EAAeG,MAC1B,YAZX,GAAIH,GAAiB,EAAQ,IAgB7BpiN,GAAOD,QAAUitN,GxUsokDX,SAAUhtN,EAAQiE,EAAqBrE,GAE7C,cAAa,SyUpqkDb,MzU2rkD6BO,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,GAEjC,Y0U3rkDA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQ,QAAWA,GAwBzF,QAAS+oN,GAAe9yM,GACtB,MAAuB,gBAATA,IAAwC,MAAnBA,EAAK2rB,OAAO,GAGjD,QAASonL,KACP,GAAI/yM,GAAOgzM,EAAUtjC,aAErB,SAAIojC,EAAe9yM,KAEnBgzM,EAAUrjC,gBAAgB,IAAM3vK,OAKlC,QAASizM,GAA0BjzM,EAAMhW,EAAKC,GAC5C,MAAO+V,KAA+B,IAAvBA,EAAKC,QAAQ,KAAc,IAAM,KAAQjW,EAAM,IAAMC,EAGtE,QAASipN,GAA8BlzM,EAAMhW,GAC3C,MAAOgW,GAAKsR,QAAQ,GAAI6xB,QAAO,QAAUn5C,EAAM,iBAAkB,IAGnE,QAASmpN,GAA4BnzM,EAAMhW,GACzC,GAAI6kB,GAAQ7O,EAAK6O,MAAM,GAAIs0B,QAAO,YAAcn5C,EAAM,aACtD,OAAO6kB,IAASA,EAAM,GAKxB,QAASukM,KASP,QAASC,KACP,GAAIrzM,GAAOgzM,EAAUtjC,cAEjB1lL,SACAgf,QACA4yE,IACF5xF,EAAMmpN,EAA4BnzM,EAAM47E,GACxC57E,EAAOkzM,EAA8BlzM,EAAM47E,GAEvC5xF,EACFgf,EAAQsqM,EAAiB/iC,UAAUvmL,IAEnCgf,EAAQ,KACRhf,EAAMmqG,EAAQ+7E,YACd8iC,EAAUrjC,gBAAgBsjC,EAA0BjzM,EAAM47E,EAAU5xF,MAGtEA,EAAMgf,EAAQ,IAGhB,IAAInJ,GAAWwhJ,EAAWxsD,UAAU70F,EAEpC,OAAOm0F,GAAQwtD,eAAeh8I,KAAa9F,GAAYmJ,MAAOA,WAAqBhf,GAGrF,QAASupN,GAAwB5uM,GAG/B,QAAS6uM,KACFT,KAELU,EAAaJ,KALf,GAAII,GAAe9uM,EAAK8uM,YAWxB,OAHAV,KACAC,EAAUzqI,iBAAiBtiF,OAAQ,aAAcutN,GAE1C,WACLR,EAAUliD,oBAAoB7qK,OAAQ,aAAcutN,IAIxD,QAASE,GAAiB7zM,GACxB,GAAIixC,GAAWjxC,EAASixC,SACpBhwC,EAAWjB,EAASiB,SACpBuB,EAASxC,EAASwC,OAClB2G,EAAQnJ,EAASmJ,MACjB+6G,EAASlkH,EAASkkH,OAClB/5H,EAAM6V,EAAS7V,GAEnB,IAAI+5H,IAAW4vF,EAASj/G,IAAxB,CAEA,GAAI10F,IAAQ8wC,GAAY,IAAMhwC,EAAWuB,CAErCu5E,IACF57E,EAAOizM,EAA0BjzM,EAAM47E,EAAU5xF,GACjDspN,EAAiBljC,UAAUpmL,EAAKgf,IAGhCnJ,EAAS7V,IAAM6V,EAASmJ,MAAQ,IAGlC,IAAI4qM,GAAcZ,EAAUtjC,aAExB3rD,KAAW4vF,EAASn/G,KAClBo/G,IAAgB5zM,IAClB/Z,OAAO4Z,SAASkC,KAAO/B,GAIhB4zM,IAAgB5zM,GAEzBgzM,EAAUrjC,gBAAgB3vK,IAa9B,QAASshJ,GAAa56I,GACI,KAAlBg/I,IAAqBmuD,EAAyBN,EAAwBp/G,GAE5E,IAAI2/G,GAAW3/G,EAAQmtD,aAAa56I,EAEpC,OAAO,YACLotM,IAEwB,KAAlBpuD,GAAqBmuD,KAI/B,QAASz/G,GAAO1tF,GACU,KAAlBg/I,IAAqBmuD,EAAyBN,EAAwBp/G,GAE5E,IAAI2/G,GAAW3/G,EAAQC,OAAO1tF,EAE9B,OAAO,YACLotM,IAEwB,KAAlBpuD,GAAqBmuD,KAI/B,QAASptN,GAAKoZ,GAGZs0F,EAAQ1tG,KAAKoZ,GAGf,QAASyR,GAAQzR,GAGfs0F,EAAQ7iF,QAAQzR,GAKlB,QAASw0F,GAAGjrG,GAGV+qG,EAAQE,GAAGjrG,GAGb,QAASs4J,GAAW1hJ,GAClB,MAAO,IAAMm0F,EAAQutD,WAAW1hJ,GAIlC,QAAS+zM,GAAuBxyD,GACN,KAAlBmE,IAAqBmuD,EAAyBN,EAAwBp/G,IAE5EA,EAAQ4/G,uBAAuBxyD,GAIjC,QAASyyD,GAAyBzyD,GAChCptD,EAAQ6/G,yBAAyBzyD,GAET,KAAlBmE,GAAqBmuD,IAI7B,QAAShyD,GAAU74I,EAAOhJ,GAGxBm0F,EAAQ0tD,UAAU74I,EAAOhJ,GAI3B,QAAS8hJ,GAAa94I,EAAOhJ,GAG3Bm0F,EAAQ2tD,aAAa94I,EAAOhJ,GAtK9B,GAAIM,GAAUpJ,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,EAElF+8M,GAAsBt4L,WAAgHqrF,EAAqB,WAE5J,IAAIprB,GAAWt7E,EAAQs7E,mBAEnBA,GAA4BA,KAAUA,EAA+B,gBAAbA,GAAwBA,EAAWs4H,EA8E/F,IAAI//G,GAAUggH,EAA4B,QAAExuM,KAAarF,GACvD+yM,mBAAoBA,EACpBK,iBAAkBA,EAClBtjC,UAAWkjC,EAAiBljC,aAG1B1qB,EAAgB,EAChBmuD,QA8EJ,OAxCiCb,GAAU/iC,mCAwCpCtqK,KAAawuF,GAClBmtD,aAAcA,EACdltD,OAAQA,EACR3tG,KAAMA,EACN6qB,QAASA,EACT+iF,GAAIA,EACJqtD,WAAYA,EAEZqyD,uBAAwBA,EACxBC,yBAA0BA,EAC1BnyD,UAAWA,EACXC,aAAcA,IA9OlBn8J,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAInP41D,EAAW,EAAQ,IAInByrC,GAFY9mC,EAAuB3E,GAEtB,EAAQ,KAErBurC,EAAc5mC,EAAuB8mC,GAErCysG,EAAW,EAAQ,IAEnBtyD,EAAa,EAAQ,IAErB4yD,EAAwB,EAAQ,KAEhCjB,EAAY,EAAQ,KAEpBM,EAAmB,EAAQ,KAE3Bc,EAAoB,EAAQ,KAE5BD,EAAqB/zI,EAAuBg0I,GA6B5CF,EAAkB,IA2LtBvuN,GAAiB,QAAIytN,EACrBxtN,EAAOD,QAAUA,EAAiB,S1UsskD5B,SAAUC,EAAQD,EAASH,GAEjC,Y2Uv7kDA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQ,QAAWA,GAczF,QAASsqN,GAAiB/zM,GAOxB,QAAS8zF,GAAO1tF,GAGd,MAFCutM,GAAsBt4L,WAA+GqrF,EAAqB,YAEpJ7S,EAAQC,OAAO1tF,GATxB,GAAIytF,GAAUmgH,EAAyB,QAAE3uM,GACvCkqK,oBAAqBmjC,EAAUnjC,qBAC9BvvK,GACD+zF,GAAI2+G,EAAU3+G,KAShB,OAAO1uF,MAAawuF,GAClBC,OAAQA,IAhCZzuG,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAInPqhG,EAAa,EAAQ,IAErBF,EAAc5mC,EAAuB8mC,GAErC+sG,EAAwB,EAAQ,KAEhCjB,EAAY,EAAQ,KAEpBuB,EAAiB,EAAQ,KAEzBD,EAAkBl0I,EAAuBm0I,EAoB7C5uN,GAAiB,QAAI0uN,EACrBzuN,EAAOD,QAAUA,EAAiB,S3Uk8kD5B,SAAUC,EAAQD,EAASH,GAEjC,Y4Ur+kDA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQ,QAAWA,GA4BzF,QAASyqN,GAAgBjuN,GACvB,MAAOs8B,MAAK+oC,SAASppC,SAAS,IAAIiK,OAAO,EAAGlmC,GAG9C,QAASkuN,GAAkBvlM,EAAG5C,GAC5B,MAAO4C,GAAEpO,WAAawL,EAAExL,UAAYoO,EAAE7M,SAAWiK,EAAEjK,QAEnD6M,EAAEllB,MAAQsiB,EAAEtiB,KAAO02E,EAAqB,QAAExxD,EAAElG,MAAOsD,EAAEtD,OAKvD,QAAS43I,KAaP,QAASU,GAAaC,GAGpB,MAFAmzD,GAAgBjuN,KAAK86J,GAEd,WACLmzD,EAAkBA,EAAgBt6L,OAAO,SAAUO,GACjD,MAAOA,KAAS4mI,KAStB,QAASozD,KACP,MAAIC,IAAmBA,EAAgB7wF,SAAW4vF,EAASj/G,IAClDmgH,EAAQ50M,QAAQ20M,EAAgB5qN,KAC9B6V,EACFg1M,EAAQ50M,QAAQJ,EAAS7V,MAExB,EAIZ,QAAS8qN,GAAeC,GACtB,GAAI5uM,GAAUwuM,GAEd90M,GAAWk1M,EAEPl1M,EAASkkH,SAAW4vF,EAASn/G,KAC/BqgH,KAAaz9L,OAAOy9L,EAAQz8M,MAAM,EAAG+N,EAAU,IAAKtG,EAAS7V,MACpD6V,EAASkkH,SAAW4vF,EAASl/G,UACtCogH,EAAQ1uM,GAAWtG,EAAS7V,KAG9BgrN,EAAgB1wK,QAAQ,SAAU59B,GAChCA,EAAS7G,KAIb,QAASu0F,GAAO1tF,GAGd,GAFAsuM,EAAgBvuN,KAAKigB,GAEjB7G,EACF6G,EAAS7G,OACJ,CACL,GAAIo1M,GAAY5B,GAChBwB,IAAWI,EAAUjrN,KACrB8qN,EAAeG,GAGjB,MAAO,YACLD,EAAkBA,EAAgB56L,OAAO,SAAUO,GACjD,MAAOA,KAASjU,KAKtB,QAASwuM,GAAoBr1M,EAAUm7B,GACrCm6K,EAAYzhC,UAAUghC,EAAgBnuN,OAAQ,SAAU0vB,EAAO7P,EAAMizB,GACnEmoH,EAA6B,QAAEkzD,EAAgBz+L,GAAQpW,EAAU,SAAUmP,GAC3D,MAAVA,EACFqqB,EAAKrqB,GAEL5I,OAGH,SAAUzO,GACPk4K,GAA0C,gBAAZl4K,GAChCk4K,EAAoBl4K,EAAS,SAAUW,GACrC0iC,OAAS1iC,KAGX0iC,OAASrjC,KAOf,QAAS87M,GAAa2B,GAChBv1M,GAAY40M,EAAkB50M,EAAUu1M,KAE5CR,EAAkBQ,EAElBF,EAAoBE,EAAc,SAAU98M,GAC1C,GAAIs8M,IAAoBQ,EAExB,GAAI98M,EAAI,CAEN,GAAI88M,EAAarxF,SAAW4vF,EAASn/G,KAAM,CACzC,GAAI6gH,GAAW5zD,EAAW5hJ,GACtBy1M,EAAW7zD,EAAW2zD,EAEtBE,KAAaD,GAAY30I,EAAqB,QAAE7gE,EAASmJ,MAAOosM,EAAapsM,SAAQosM,EAAarxF,OAAS4vF,EAASl/G,cAGtHi/G,EAAiB0B,IAAyBN,EAAeM,OACxD,IAAIv1M,GAAYu1M,EAAarxF,SAAW4vF,EAASj/G,IAAK,CAC3D,GAAI6gH,GAAYV,EAAQ50M,QAAQJ,EAAS7V,KACrCwrN,EAAYX,EAAQ50M,QAAQm1M,EAAaprN,MAE1B,IAAfurN,IAAmC,IAAfC,GAAkBnhH,EAAGkhH,EAAYC,OAK/D,QAAS/uN,GAAKoZ,GACZ4zM,EAAa9xD,EAAe9hJ,EAAU8zM,EAASn/G,KAAM07E,MAGvD,QAAS5+J,GAAQzR,GACf4zM,EAAa9xD,EAAe9hJ,EAAU8zM,EAASl/G,QAASy7E,MAG1D,QAAS57E,KACPD,GAAI,GAGN,QAASE,KACPF,EAAG,GAGL,QAAS67E,KACP,MAAOskC,GAAgBiB,GAGzB,QAASh0D,GAAW5hJ,GAClB,GAAgB,MAAZA,GAAwC,gBAAbA,GAAuB,MAAOA,EAE7D,IAAIiB,GAAWjB,EAASiB,SACpBuB,EAASxC,EAASwC,OAClBN,EAAOlC,EAASkC,KAEhBiN,EAASlO,CAMb,OAJIuB,KAAQ2M,GAAU3M,GAElBN,IAAMiN,GAAUjN,GAEbiN,EAGT,QAAS0yI,GAAW7hJ,GAClB,MAAO4hJ,GAAW5hJ,GAGpB,QAAS8hJ,GAAe9hJ,EAAUkkH,GAChC,GAAI/5H,GAAMkN,UAAU3Q,QAAU,YAAK2Q,UAAU,GAAmBg5K,IAAch5K,UAAU,EAaxF,OAXsB,gBAAX6sH,KAGe,gBAAblkH,KAAuBA,EAAWwhJ,EAAWxsD,UAAUh1F,IAElEA,EAAW8F,KAAa9F,GAAYmJ,MAAO+6G,IAE3CA,EAAS/5H,EACTA,EAAMkN,UAAU,IAAMg5K,KAGjBwlC,EAA0B,QAAE71M,EAAUkkH,EAAQ/5H,GAIvD,QAAS0gB,GAAS1B,GACZnJ,GACF81M,EAAoB91M,EAAUmJ,GAC9B8rM,EAAej1M,IAEf81M,EAAoBtC,IAAsBrqM,GAI9C,QAAS2sM,GAAoB91M,EAAUmJ,GACrCnJ,EAASmJ,MAAQrD,KAAa9F,EAASmJ,MAAOA,GAC9ConK,EAAUvwK,EAAS7V,IAAK6V,EAASmJ,OAInC,QAAS+qM,GAAuBxyD,IACS,IAAnCmzD,EAAgBz0M,QAAQshJ,IAAcmzD,EAAgBjuN,KAAK86J,GAIjE,QAASyyD,GAAyBzyD,GAChCmzD,EAAkBA,EAAgBt6L,OAAO,SAAUO,GACjD,MAAOA,KAAS4mI,IAKpB,QAASM,GAAU74I,EAAOhJ,GACJ,gBAATA,KAAmBA,EAAOqhJ,EAAWxsD,UAAU70F,IAE1DvZ,EAAKkf,GAAWqD,MAAOA,GAAShJ,IAIlC,QAAS8hJ,GAAa94I,EAAOhJ,GACP,gBAATA,KAAmBA,EAAOqhJ,EAAWxsD,UAAU70F,IAE1DsR,EAAQ3L,GAAWqD,MAAOA,GAAShJ,IAtNrC,GAAIM,GAAUpJ,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,GAC/Em8M,EAAqB/yM,EAAQ+yM,mBAC7BK,EAAmBpzM,EAAQozM,iBAC3BtjC,EAAY9vK,EAAQ8vK,UACpB/7E,EAAK/zF,EAAQ+zF,GACbw7E,EAAsBvvK,EAAQuvK,oBAC9B4lC,EAAYn1M,EAAQm1M,SAEC,iBAAdA,KAAwBA,EAAYG,EAE/C,IAAIlB,MAYAG,KACAG,KACAn1M,SAkEA+0M,QA+HJ,QACEtzD,aAAcA,EACdltD,OAAQA,EACRq/G,aAAcA,EACdhtN,KAAMA,EACN6qB,QAASA,EACT+iF,GAAIA,EACJC,OAAQA,EACRC,UAAWA,EACX27E,UAAWA,EACXzuB,WAAYA,EACZC,WAAYA,EACZC,eAAgBA,EAEhBj3I,SAAUs3I,EAAqB,QAAEt3I,EAAU,kEAC3CqpM,uBAAwB/xD,EAAqB,QAAE+xD,EAAwB,kEACvEC,yBAA0BhyD,EAAqB,QAAEgyD,EAA0B,+FAC3EnyD,UAAWG,EAAqB,QAAEH,EAAW,6CAC7CC,aAAcE,EAAqB,QAAEF,EAAc,oDAxRvDn8J,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAInP41D,EAAW,EAAQ,IAInBgF,GAFYL,EAAuB3E,GAEtB,EAAQ,MAErBiF,EAAcN,EAAuBK,GAErC4gF,EAAa,EAAQ,IAErB8zD,EAAc,EAAQ,KAEtBxB,EAAW,EAAQ,IAEnBkC,EAAmB,EAAQ,KAE3BH,EAAmBt1I,EAAuBy1I,GAE1C5zD,EAAqB,EAAQ,KAE7BT,EAAsBphF,EAAuB6hF,GAE7CC,EAAa,EAAQ,KAErBF,EAAc5hF,EAAuB8hF,GAYrC0zD,EAAmB,CAkPvBjwN,GAAiB,QAAIi7J,EACrBh7J,EAAOD,QAAUA,EAAiB,S5Ug/kD5B,SAAUC,EAAQD,EAASH,GAEjC,Y6U/wlDA,IAAI4S,GAAQG,MAAM5R,UAAUyR,MACxB09M,EAAS,EAAQ,KAEjBC,EAAWrvN,OAAO6I,KAClBymN,EAAWD,EAAW,SAAchtN,GAAK,MAAOgtN,GAAShtN,IAAQ,EAAQ,KAEzEktN,EAAevvN,OAAO6I,IAE1BymN,GAASE,KAAO,WAkBf,MAjBIxvN,QAAO6I,KAAO,WAGhB,GAAI6hB,GAAO1qB,OAAO6I,KAAK2H,UACvB,OAAOka,IAAQA,EAAK7qB,SAAW2Q,UAAU3Q,QACxC,EAAG,KAEJG,OAAO6I,KAAO,SAAcjG,GAC3B,MACQ2sN,GADJH,EAAOxsN,GACU8O,EAAMrS,KAAKuD,GAEZA,KAItB5C,OAAO6I,KAAOymN,EAERtvN,OAAO6I,MAAQymN,GAGvBpwN,EAAOD,QAAUqwN,G7UuxlDX,SAAUpwN,EAAQD,EAASH,GAEjC,Y8UtzlDA,IAAIkrL,GAAQhqL,OAAOC,UAAU67B,QAE7B58B,GAAOD,QAAU,SAAqBsE,GACrC,GAAIsiC,GAAMmkJ,EAAM3qL,KAAKkE,GACjB6rN,EAAiB,uBAARvpL,CASb,OARKupL,KACJA,EAAiB,mBAARvpL,GACE,OAAVtiC,GACiB,gBAAVA,IACiB,gBAAjBA,GAAM1D,QACb0D,EAAM1D,QAAU,GACa,sBAA7BmqL,EAAM3qL,KAAKkE,EAAMksN,SAEZL,I9U+zlDF,SAAUlwN,EAAQD,EAASH,GAEjC,Y+U90lDA,IAAIytD,GAAWvsD,OACX0vN,EAAU3zL,SAEd78B,GAAOD,QAAU,WAChB,GAAY,MAAR4e,MAAgBA,OAAS0uC,EAAS1uC,MACrC,KAAM,IAAI6xM,GAAQ,qDAEnB,IAAIpnM,GAAS,EAmBb,OAlBIzK,MAAK/L,SACRwW,GAAU,KAEPzK,KAAKw4L,aACR/tL,GAAU,KAEPzK,KAAKu4L,YACR9tL,GAAU,KAEPzK,KAAK8xM,SACRrnM,GAAU,KAEPzK,KAAK+xM,UACRtnM,GAAU,KAEPzK,KAAKgyM,SACRvnM,GAAU,KAEJA,I/Uu1lDF,SAAUppB,EAAQD,EAASH,GAEjC,YgVn3lDA,IAAIshL,GAAiB,EAAQ,KAEzB8J,EAAsB,EAAQ,KAAqBA,oBACnD4lC,EAAO9vN,OAAOouC,yBACdshL,EAAU3zL,SAEd78B,GAAOD,QAAU,WAChB,IAAKirL,EACJ,KAAM,IAAIwlC,GAAQ,4FAEnB,IAAqB,QAAjB,OAAO1tL,MAAiB,CAC3B,GAAI0M,GAAaohL,EAAKrzK,OAAOx8C,UAAW,QACxC,IAAIyuC,GAAwC,kBAAnBA,GAAWjsC,KAA8C,iBAAjB,IAAMktN,OACtE,MAAOjhL,GAAWjsC,IAGpB,MAAO29K,KhV43lDF,SAAUlhL,EAAQD,EAASH,GAEjC,YiVh4lDA,SAASixN,GAAsBztM,EAAOnJ,GA8BpC,MAAO8F,MAAaqD,EAAOnJ,GA5C7Bla,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,GAEvPlgB,GAAQqtD,QAAUyjK,CAElB,IAEIl2D,IAF6B,EAAQ,KAEpB,EAAQ,MAI7B,SAAgCx2J,GAAcA,GAAOA,EAAIV,YAFZk3J,GAoC7C36J,EAAOD,QAAUA,EAAiB,SjVq5lD5B,SAAUC,EAAQD,EAASH,GAEjC,YkVx7lDA,SAASkxN,GAAmBviH,EAASwiH,GACnC,MAAOhxM,MAAawuF,GAClBouD,kBAAmBo0D,EAAkBn0D,yBACrCloI,SAAUq8L,EAAkBr8L,WAKhC,QAASs8L,GAAqBziH,EAASwiH,GAOrC,MANAxiH,GAAUxuF,KAAawuF,EAASwiH,GAtBlChxN,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,GAEvPlgB,GAAQ+wN,mBAAqBA,EAC7B/wN,EAAQixN,qBAAuBA,CAE/B,IAAIz0D,GAA6B,EAAQ,MAIzC,SAAgCp4J,GAAcA,GAAOA,EAAIV,YAFA84J,IlVg+lDnD,SAAUv8J,EAAQD,EAASH,GAEjC,YmVz9lDA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASs/F,GAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GAUnN,QAASgxM,GAAiBpnL,GACxB,MAAwB,KAAjBA,EAAMspH,OAGf,QAAS+9D,GAAgBrnL,GACvB,SAAUA,EAAMopH,SAAWppH,EAAMmpH,QAAUnpH,EAAMipH,SAAWjpH,EAAMkpH,UAIpE,QAASo+D,GAAcztN,GACrB,IAAK,GAAIf,KAAKe,GACZ,GAAI5C,OAAOC,UAAUC,eAAeb,KAAKuD,EAAQf,GAAI,OAAM,CAC5D,UAGH,QAASyuN,GAAyBtpK,EAAI/oC,GACpC,GAAI7E,GAAQ6E,EAAK7E,MACbiC,EAAO4C,EAAK5C,KACZiH,EAAQrE,EAAKqE,KAEjB,OAAIlJ,IAASiC,GAAQiH,GACVlI,SAAU4sC,EAAI5tC,MAAOA,EAAOiC,KAAMA,EAAMiH,MAAOA,GAGnD0kC,EAtDT/nD,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCkgF,EAAiB,EAAQ,IAIzBr5C,GAFkB9mC,EAAuBmgF,GAE5B,EAAQ,KAErBv5C,EAAc5mC,EAAuB8mC,GAErC+vG,EAAa,EAAQ,KAMrB30D,EAAmBhiF,EAAQttB,QAAQ6V,UACnCuU,EAAOklF,EAAiBllF,KACxB9zE,EAASg5J,EAAiBh5J,OAC1B4zE,EAASolF,EAAiBplF,OAC1B3tD,EAAO+yI,EAAiB/yI,KACxBguD,EAAY+kF,EAAiB/kF,UAgD7BolC,EAAOriC,EAAQttB,QAAQ4oD,aACzB/yF,YAAa,OAGbN,cACEmoF,OAAQumH,EAAWn1G,aAGrB58F,WACEwoC,GAAI6vB,GAAWL,EAAQ5zE,IACvBwW,MAAOxW,EACPyY,KAAMm7D,EACNl0D,MAAO1f,EACP4tN,YAAa5tN,EACb6tN,gBAAiBj6I,EACjBk6I,kBAAmBh6I,EAAKh4D,WACxBy8G,QAAStyG,EACT1J,OAAQq3D,GAGVkuD,gBAAiB,WACf,OACEgsF,mBAAkBA,EAClBx3I,WAGJgiD,YAAa,SAAqBnyF,GAGhC,GAFIlrB,KAAKH,MAAMy9G,SAASt9G,KAAKH,MAAMy9G,QAAQpyF,IAEvCA,EAAMwuD,mBAET15E,KAAKF,QAAQqsF,WAAwJsW,EAAYh0D,UAASA,IAEvL8jK,EAAgBrnL,IAAWonL,EAAiBpnL,KAI5ClrB,KAAKH,MAAMyB,QAAf,CAEA4pB,EAAMkvD,gBAEN,IAAI89B,GAASl4G,KAAKH,MACdspC,EAAK+uE,EAAO/uE,GACZ5tC,EAAQ28G,EAAO38G,MACfiC,EAAO06G,EAAO16G,KACdiH,EAAQyzG,EAAOzzG,MAEfnJ,EAAWm3M,EAAyBtpK,GAAM5tC,MAAOA,EAAOiC,KAAMA,EAAMiH,MAAOA,GAE/EzE,MAAKF,QAAQqsF,OAAOjqG,KAAKoZ,KAE3B+E,OAAQ,WACN,GAAI69I,GAAUl+I,KAAKH,MACfspC,EAAK+0G,EAAQ/0G,GACb5tC,EAAQ2iJ,EAAQ3iJ,MAChBiC,EAAO0gJ,EAAQ1gJ,KACfiH,EAAQy5I,EAAQz5I,MAChBmuM,EAAkB10D,EAAQ00D,gBAC1BD,EAAcz0D,EAAQy0D,YACtBE,EAAoB30D,EAAQ20D,kBAE5BhzM,EAAQilF,EAAyBo5D,GAAU,KAAM,QAAS,OAAQ,QAAS,kBAAmB,cAAe,sBAK7G/xD,EAASnsF,KAAKF,QAAQqsF,MAG1B,IAAIA,EAAQ,CAEV,GAAU,MAANhjD,EACF,MAAO4yB,GAAQttB,QAAQhrD,cAAc,IAAKoc,EAG5C,IAAIvE,GAAWm3M,EAAyBtpK,GAAM5tC,MAAOA,EAAOiC,KAAMA,EAAMiH,MAAOA,GAC/E5E,GAAM9B,KAAOouF,EAAOgxD,WAAW7hJ,IAE3Bs3M,GAAkC,MAAfD,IAAwBH,EAAcG,KACvDxmH,EAAOp2E,SAASza,EAAUu3M,KACxBD,IACE/yM,EAAM8gD,UACR9gD,EAAM8gD,WAAa,IAAMiyJ,EAEzB/yM,EAAM8gD,UAAYiyJ,GAIlBD,IAAa9yM,EAAMw7D,MAAQj6D,KAAavB,EAAMw7D,MAAOs3I,KAK/D,MAAO52I,GAAQttB,QAAQhrD,cAAc,IAAK2d,KAAavB,GAASy9G,QAASt9G,KAAKq9G,iBAIlFj8H,GAAQqtD,QAAU2vD,EAClB/8G,EAAOD,QAAUA,EAAiB,SnVk/lD5B,SAAUC,EAAQD,EAASH,GAEjC,YoVjpmDA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAhBvFpE,EAAQ0D,aAER,IAAIg3E,GAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjC6mC,EAAa,EAAQ,IAErBF,EAAc5mC,EAAuB8mC,GAErCrE,EAAc,EAAQ,IAEtBE,EAAgB,EAAQ,IAExBusE,EAAqB,EAAQ,IAI7BhtB,EAAmBhiF,EAAQttB,QAAQ6V,UACnCqU,EAASolF,EAAiBplF,OAC1B5zE,EAASg5J,EAAiBh5J,OAU1Bi5G,EAAWjiC,EAAQttB,QAAQ4oD,aAC7B/yF,YAAa,WAGbwuM,SACExqH,4BAA6B,SAAqCxnF,GAChE,GAAIynF,MAAY+V,EAAYhW,6BAA6BxnF,EA4BzD,OA1BIynF,GAAMt3E,OAAMs3E,EAAM9sF,KAAO8sF,EAAMt3E,MAEnCs3E,EAAMwqH,QAAU,SAAUnpM,EAAWmD,GACnC,GAAIzR,GAAWsO,EAAUtO,SACrB0X,EAASpJ,EAAUoJ,OAGnBzW,QACJ,IAA2B,MAAvBgsF,EAAMp/C,GAAG/hB,OAAO,GAClB7qB,KAAeiiG,EAAcnB,eAAe9U,EAAMp/C,GAAIn2B,OACjD,IAAKu1E,EAAMp/C,GAEX,CACL,GAAI6pK,GAAappM,EAAU++E,OAAOjtF,QAAQ6sF,GACtC0qH,EAAgBj1G,EAASk1G,gBAAgBtpM,EAAU++E,OAAQqqH,EAAa,GACxE5xG,EAAU6xG,EAAclmM,QAAQ,OAAQ,KAAOw7E,EAAMp/C,EACzD5sC,MAAeiiG,EAAcnB,eAAe+D,EAASpuF,OALrDzW,GAAWjB,EAASiB,QAQtBwQ,IACExQ,SAAUA,EACVhB,MAAOgtF,EAAMhtF,OAASD,EAASC,MAC/BkJ,MAAO8jF,EAAM9jF,OAASnJ,EAASmJ,SAI5B8jF,GAET2qH,gBAAiB,SAAyBvqH,EAAQqqH,GAGhD,IAAK,GAFDC,GAAgB,GAEX3xN,EAAI0xN,EAAY1xN,GAAK,EAAGA,IAAK,CACpC,GAAIinG,GAAQI,EAAOrnG,GACf8/G,EAAU7Y,EAAM9sF,MAAQ,EAI5B,IAFAw3M,EAAgB7xG,EAAQr0F,QAAQ,OAAQ,KAAOkmM,EAElB,IAAzB7xG,EAAQ1lG,QAAQ,KAAY,MAGlC,MAAO,IAAMu3M,IAIjBtyM,WACElF,KAAMk9D,EACN1nD,KAAM0nD,EACNxvB,GAAIwvB,EAAO93D,WACXtF,MAAOxW,EACP0f,MAAO1f,EACPguN,QAAShoC,EAAmBt7E,MAC5BhvF,SAAUsqK,EAAmBt7E,OAI/BpvF,OAAQ,cACqKoiG,EAAYh0D,UAASA,KAIpMrtD,GAAQqtD,QAAUuvD,EAClB38G,EAAOD,QAAUA,EAAiB,SpVwqmD5B,SAAUC,EAAQD,EAASH,GAEjC,YqV9vmDA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASy3G,GAAoBlhG,GAI3B,GAAIo3M,MAAoBnyG,EAAsBvyD,SAAS1yC,GACnDsgJ,EAAgB,WAClB,MAAO82D,IAELvjH,KAAcwjH,EAAa3kK,UAASA,EAAI4kK,EAAc5kK,SAAS4tG,IAAgBtgJ,EAEnF,OADA6zF,GAAQ0jH,qBACD1jH,EA3BTxuG,EAAQ0D,cACR1D,EAAQqtD,QAAUwuD,CAElB,IAAIs2G,GAAc,EAAQ,KAEtBH,EAAev3I,EAAuB03I,GAEtCC,EAAe,EAAQ,KAEvBH,EAAgBx3I,EAAuB23I,GAEvCC,EAAuB,EAAQ,KAE/BzyG,EAAwBnlC,EAAuB43I,EAgBnDpyN,GAAOD,QAAUA,EAAiB,SrVoxmD5B,SAAUC,EAAQD,EAASH,GAEjC,YsV/ymDA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQ,QAAWA,GAkBzF,QAASkuN,GAAYr3D,GACnB,MAAO,YASL,QAASs3D,KACP,IAAIC,EAAJ,CAMA,GAAgB,MAAZrnK,GAAoBmjK,EAAsBt4L,UAAW,CACvD,GAAImkB,GAAOh4C,SAASC,qBAAqB,QAAQ,GAC7CqwN,EAAWt4K,GAAQA,EAAK6pB,aAAa,OAEzB,OAAZyuJ,IACFtnK,EAAWsnK,GAMfD,MAGF,QAASE,GAAYx4M,GAcnB,MAbAq4M,KAEIpnK,GAAiC,MAArBjxC,EAASixC,WACqB,IAAxCjxC,EAASiB,SAASb,QAAQ6wC,IAC5BjxC,EAASiB,SAAWjB,EAASiB,SAAS8zF,UAAU9jD,EAASvqD,QACzDsZ,EAASixC,SAAWA,EAEM,KAAtBjxC,EAASiB,WAAiBjB,EAASiB,SAAW,MAElDjB,EAASixC,SAAW,IAIjBjxC,EAGT,QAASy4M,GAAgBz4M,GAGvB,GAFAq4M,KAEKpnK,EAAU,MAAOjxC,EAEE,iBAAbA,KAAuBA,EAAWwhJ,EAAWxsD,UAAUh1F,GAElE,IAAI04M,GAAQ14M,EAASiB,SACjB03M,EAA4C,MAAvB1nK,EAAS14C,OAAO,GAAa04C,EAAWA,EAAW,IACxE2nK,EAAyC,MAApBF,EAAM5sL,OAAO,GAAa4sL,EAAMngN,MAAM,GAAKmgN,CAGpE,OAAO5yM,MAAa9F,GAClBiB,SAHa03M,EAAqBC,IAQtC,QAASn3D,GAAaC,GACpB,MAAOptD,GAAQmtD,aAAa,SAAUzhJ,EAAUm7B,GAC9CwmH,EAA6B,QAAED,EAAM82D,EAAYx4M,GAAWm7B,KAIhE,QAASo5D,GAAO1tF,GACd,MAAOytF,GAAQC,OAAO,SAAUv0F,GAC9B6G,EAAS2xM,EAAYx4M,MAKzB,QAASpZ,GAAKoZ,GACZs0F,EAAQ1tG,KAAK6xN,EAAgBz4M,IAG/B,QAASyR,GAAQzR,GACfs0F,EAAQ7iF,QAAQgnM,EAAgBz4M,IAGlC,QAAS4hJ,GAAW5hJ,GAClB,MAAOs0F,GAAQstD,WAAW62D,EAAgBz4M,IAG5C,QAAS6hJ,GAAW7hJ,GAClB,MAAOs0F,GAAQutD,WAAW42D,EAAgBz4M,IAG5C,QAAS8hJ,GAAe9hJ,GACtB,IAAK,GAAIiW,GAAO5e,UAAU3Q,OAAQ6qB,EAAO7Y,MAAMud,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F3E,EAAK2E,EAAO,GAAK7e,UAAU6e,EAG7B,OAAOsiM,GAAYlkH,EAAQwtD,eAAe1qJ,MAAMk9F,GAAUmkH,EAAgBz4M,IAAWuX,OAAOhG,KAI9F,QAASywI,GAAU74I,EAAOhJ,GACJ,gBAATA,KAAmBA,EAAOqhJ,EAAWxsD,UAAU70F,IAE1DvZ,EAAKkf,GAAWqD,MAAOA,GAAShJ,IAIlC,QAAS8hJ,GAAa94I,EAAOhJ,GACP,gBAATA,KAAmBA,EAAOqhJ,EAAWxsD,UAAU70F,IAE1DsR,EAAQ3L,GAAWqD,MAAOA,GAAShJ,IAhHrC,GAAIM,GAAUpJ,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,GAE/Ei9F,EAAUysD,EAActgJ,GAExBwwC,EAAWxwC,EAAQwwC,SAEnBqnK,IA6GJ,OAAOxyM,MAAawuF,GAClBmtD,aAAcA,EACdltD,OAAQA,EACR3tG,KAAMA,EACN6qB,QAASA,EACTmwI,WAAYA,EACZC,WAAYA,EACZC,eAAgBA,EAEhBE,UAAWG,EAAqB,QAAEH,EAAW,6CAC7CC,aAAcE,EAAqB,QAAEF,EAAc,sDArJzDn8J,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAInP41D,EAAW,EAAQ,IAInBw4I,GAFY7zI,EAAuB3E,GAEX,EAAQ,MAEhC4lF,EAAa,EAAQ,IAErBY,EAAqB,EAAQ,KAE7BT,EAAsBphF,EAAuB6hF,GAE7CC,EAAa,EAAQ,KAErBF,EAAc5hF,EAAuB8hF,EAsIzCv8J,GAAiB,QAAIsyN,EACrBryN,EAAOD,QAAUA,EAAiB,StV0zmD5B,SAAUC,EAAQD,EAASH,GAEjC,YuV58mDA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAAS83G,GAAiB++C,GACxB,MAAO,UAAUtgJ,GACf,GAAI6zF,MAAcwjH,EAAa3kK,UAASA,EAAI4kK,EAAc5kK,SAAS4tG,IAAgBtgJ,EAEnF,OADA6zF,GAAQ0jH,qBACD1jH,GAjBXxuG,EAAQ0D,cACR1D,EAAQqtD,QAAU6uD,CAElB,IAAIi2G,GAAc,EAAQ,KAEtBH,EAAev3I,EAAuB03I,GAEtCC,EAAe,EAAQ,KAEvBH,EAAgBx3I,EAAuB23I,EAW3CnyN,GAAOD,QAAUA,EAAiB,SvV89mD5B,SAAUC,EAAQD,EAASH,GAEjC,YwVp/mDAG,GAAQ0D,cAER1D,EAAQqtD,QAAU,SAAU4tG,GAC1B,GAAIzsD,SAEJ,OADIx4E,KAAWw4E,KAAc4Q,EAAmB/xD,SAAS4tG,MAClDzsD,EAGT,IAAIukH,GAAoB,EAAQ,KAE5B3zG,EAEJ,SAAgCh7G,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,IAFvC2uN,GAI5C/8L,IAAiC,mBAAX11B,UAA0BA,OAAO6B,WAAY7B,OAAO6B,SAASE,cAEvFpC,GAAOD,QAAUA,EAAiB,SxV2/mD5B,SAAUC,EAAQD,EAASH,GAEjC,YyV7gnDAI,GAAOD,QAAU,SAAmB6rC,GAClC,MAAOA,KAASA,EAAKvrC,OAASurC,EAAyB,IAAlBA,EAAKk4B,WAAiBl4B,EAAKu5F,aAAev5F,EAAKw5F,gBzVqhnDhF,SAAUplI,EAAQiE,EAAqBrE,GAE7C,Y0VphnDA,SAASmzN,GAAT,GAAoE,QAAvC93M,GAAIquC,WAAmC,EAA1B,GAA0B,MAAtBrmD,KAAM8nD,WAAgB,EAAL,GAAK,CAChE,OAAmB,aAAXzB,GAAyBA,IAAWyB,EAAS/1B,cAclD,QAAS6pE,KAAoC,GAAb3kC,GAAa,yDAChD,OAAIA,GAAOjO,OAEHiO,EAAOjO,SAAWvmD,IAAcoH,KACzBpH,IAAciH,KAElButD,EAAOjO,OAEXzmD,IAAYyG,IAGhB,QAASy/E,GAAoB9gC,GAAM,MACWA,EAAzC3vC,GAAIquC,WAD0B,EACjB,GADiB,IACWsB,EAAxB3nD,KAAM8nD,WADO,EACI,GADJ,EAEhCioK,EAAoBjoK,EAAS/1B,cAC7Bi+L,EAAkB3pK,EAAOt0B,aAC/B,OAAS+9L,GAAkBnoK,GAA6BqoK,EAAhD,IAAmED,EAAxCC,EAGhC,QAAS9mI,GAAoBvhC,GAAM,MACNA,EAAxB3nD,KAAM8nD,WADwB,EACb,GADa,EAEhCioK,EAAoBjoK,EAAS/1B,cAE7Bk+L,EAAmBxnI,EAAoB9gC,GAEvCuoK,IAaN,OAZIJ,GAAkBnoK,KAClBuoK,EAAoBC,OAASJ,GAWjC,MAPIjoK,SAAUmoK,EACVG,SAAUH,EACVvkM,QAASukM,EAET7pK,YAAoC,aAAtB2pK,EAAoC,WAAa,SAG1CG,GAGtB,QAASlqI,KAAqE,GAAjD1yD,GAAiD,0DAAlChE,EAAkC,0DAAnB3Z,IAAmB,yDAC3E06M,GAAuD,IAAtC/8L,EAASlc,QAAQzU,IAAUqH,QAAqD,IAArCspB,EAASlc,QAAQzU,IAAUsH,KACvFqmN,EAAuB51H,YAA6BpnE,GACpDrb,EAAW7a,QAAUA,OAAO4Z,UAAY5Z,OAAO4Z,SAASiB,SACxDs4M,GAAwE,IAA5Ct4M,EAASb,QAAQ,sBAC/C6uE,EAAe,oBACfuqI,EAAsB,mBAE1B,SAAIH,EAOA,GALI/gM,EAAStvB,OACTimF,EAAe32D,EAAStvB,MAIxB2V,EACI2Z,EAAS62C,eACTqqJ,EAAsBlhM,EAAS62C,kBAEhC,CAAC,GAAD,GACuC72C,EAAlCo8C,QAAS+kJ,WADd,MAKHD,GAAsBC,EAAgB9xD,aAAe8xD,EAAgBzwN,MAAQ,cAIrF,GAAM2nF,IACFC,OAAQ3B,EACR4B,OAAQ5B,EACR8B,OAAQyoI,EACRE,OAAQJ,EAOZ,OAJIC,KACA5oI,EAAUG,OAAS0oI,GAGhB7oI,EAGJ,QAAS+T,GAA4B9xC,EAAYn3B,GAAc,MAC4BA,MAD5B,IAC3Dk+L,qBAD2D,EAC/C,eAD+C,MAC/BC,oBAD+B,EACpB,gBADoB,MACHzoB,qBADG,EACS,gBADT,CAQlE,OALIv+I,GACagnK,EAAb,IAAyBD,EAAzB,IAAsCxoB,EAEzByoB,EAAb,IAAyBD,EAK1B,QAASpqI,GAA6B5xB,GAAU,MACqDA,MAAhGumC,EAD2C,EAC3CA,eAAgBC,EAD2B,EAC3BA,eAAgBtxC,EADW,EACXA,aAAcuxC,EADH,EACGA,cAAe3oE,EADlB,EACkBA,aAAco+L,EADhC,EACgCA,gBAE7EC,EAAUp1H,EAA4BN,EAAe3oE,EAC3D,OAAKo3B,IAQDknK,QAFYF,EAAkB,MAAQ,KAGtCC,UACAE,OAAQ71H,EACR81H,MAAOpnK,EACPqnK,MAAOh2H,IAVH41H,WAeL,QAAShnB,KAA6B,GAAZ7yL,GAAY,yDAMzC,OALsBpZ,QAAO6I,KAAKuQ,GAAOsa,OAAO,SAACpwB,GAAD,MAAgC,KAAvBA,EAAIiW,QAAQ,SAAczQ,OAAO,SAACC,EAAKzF,GAE5F,MADAyF,GAAIzF,GAAO8V,EAAM9V,GACVyF,O1Vk5mDkB5F,EAAuB,EAAI46F,EAC3B56F,EAAuB,EAAIynF,EAC3BznF,EAAuB,EAAIkoF,EAC3BloF,EAAuB,EAAIglF,EAC3BhlF,EAAuB,EAAI06F,EAC3B16F,EAAuB,EAAIulF,EAC3BvlF,EAAuB,EAAI8oM,CACvC,IAAIhgH,GAAuCntF,EAAoB,GAC3Dw0N,EAAmEx0N,EAAoB,KAC5GmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,KA4LjP,SAAUjgB,EAAQD,EAASH,GAEjC,Y2V1snDA,SAAS2vG,KACP,GAAInsF,GAAQ9R,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,GAAK+iN,EAE5Et1M,EAAOzN,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACtEjP,EAAO0c,EAAK1c,KACZu1D,EAAU74C,EAAK64C,OAEnB,OAAIv1D,KAASmtG,EACJzvF,KAAaqD,GAASpI,0BAA2B48C,IAGnDx0C,EAlCTtiB,OAAOsC,eAAerD,EAAS,cAC7BsE,OAAMA,GAGR,IAAI0b,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,GAEvPlgB,GAAQwvG,cAAgBA,CAKxB,IAAIC,GAAkBzvG,EAAQyvG,gBAAkB,2BAE5C6kH,GACFr5M,0BAA2B,O3V6vnDvB,SAAUhb,EAAQD,EAASH,GAEjC,Y4VnwnDA,SAASsvN,GAAe3kL,GACtB,MAAO,YACL,IAAK,GAAIra,GAAO5e,UAAU3Q,OAAQ6qB,EAAO7Y,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3E,EAAK2E,GAAQ7e,UAAU6e,EAGzB,QACE9tB,KAAMitG,EACN13C,SAAWrtB,OAAQA,EAAQ/e,KAAMA,KAlBvC1qB,OAAOsC,eAAerD,EAAS,cAC7BsE,OAAMA,GAOR,IAAIirG,GAAsBvvG,EAAQuvG,oBAAsB,+BAoBpDzuG,EAAOd,EAAQc,KAAOquN,EAAe,QACrCxjM,EAAU3rB,EAAQ2rB,QAAUwjM,EAAe,WAC3CzgH,EAAK1uG,EAAQ0uG,GAAKygH,EAAe,MACjCxgH,EAAS3uG,EAAQ2uG,OAASwgH,EAAe,UACzCvgH,EAAY5uG,EAAQ4uG,UAAYugH,EAAe,YAE/BnvN,GAAQsvG,eAAkBxuG,KAAMA,EAAM6qB,QAASA,EAAS+iF,GAAIA,EAAIC,OAAQA,EAAQC,UAAWA,I5VoxnDzG,SAAU3uG,EAAQD,EAASH,G6VtznDjC,GAAIiC,GAAU,EAAQ,IAGlByyN,EAAat0N,EAAOD,QAAU,EAAQ,KACtCsxL,EAAUijC,EAAWjjC,OAEzBxvL,GAAQ6V,QAEJsmB,cAAaA,GAIjB,IAAIu2L,GAAyB,SAASxiN,EAASywG,GAC7C,GAAItwG,EACJyM,MAAK5M,QAAUA,EACf4M,KAAK1b,KAAO,yBACZ0b,KAAK6jG,cAAgBA,EAEjB7gH,MAAMqlC,mBACRrlC,MAAMqlC,kBAAkBroB,KAAMA,KAAKX,aACnC9L,EAAQyM,KAAKzM,OAGbA,EAAQ,GAAKvQ,OAAMoQ,GAAUG,MAG3BpR,OAAOsC,gBACTtC,OAAOsC,eAAeub,KAAM,SAC1Bpb,IAAK,WACH,MAAIob,MAAK6jG,cACAtwG,EAAQ,iBAAmByM,KAAK6jG,cAActwG,MAGhDA,KAMfqiN,GAAuBxzN,UAAY,GAAIY,OACvC4yN,EAAuBxzN,UAAUid,YAAcu2M,EAC/CD,EAAWC,uBAAyBA,EAgBpCljC,EAAQtwL,UAAUgB,QAAU,WAC1B,GACIgC,GADA2sL,EAAM/xK,IAGV,OAAO,IAAI9c,GAAQ,SAASC,EAASE,EAAQsgC,GACzCouJ,EAAInrG,IAAI,SAAS1hF,EAAK4iI,GACpB,YAAWA,GAAuBA,EAAIx6E,QAAU,IAAK,CACnD,GAAItnB,GAAM,UAAY+rJ,EAAInmJ,OAAS,IAAMmmJ,EAAIn+H,IAAM,KAAOk0E,EAAIx6E,OAAS,GACvEloD,GAAQ,GAAIwwN,GAAuB5vL,GACnC5gC,EAAMkoD,OAASw6E,EAAIx6E,OACnBloD,EAAM66D,KAAO6nE,EAAI7nE,KACjB76D,EAAM0iI,IAAMA,EACZzkI,EAAO+B,OACEF,GACT7B,EAAO,GAAIuyN,GAAuB,cAAe1wN,IAEjD/B,EAAQ2kI,KAGZnkG,EAAS,WACPouJ,EAAIkE,aAiBZvD,EAAQtwL,UAAUowC,KAAO,WACvB,GAAIpvC,GAAU4c,KAAK5c,SACnB,OAAOA,GAAQovC,KAAK9/B,MAAMtP,EAASuP,a7Vg0nD/B,SAAUtR,EAAQD,G8V15nDxB,QAAS0gC,GAASt8B,GAChB,MAAO,QAASA,GAAO,gBAAoBA,GAG7CnE,EAAOD,QAAU0gC,G9Vy6nDX,SAAUzgC,EAAQiE,EAAqBrE,GAE7C,Y+Vr7nDe,SAAS40N,KAAqC,GAAlBjiK,GAAkB,uDAAZ,GAAI5gC,EAAQ,aACrDq+E,KACEC,EAAe19C,EAAIl2C,MAAM,IAU/B,OATI4zF,GAAatvG,OAAS,IACtBqvG,EAAaG,YAA2BF,EAAa,KAGzDt+E,EAAOtV,MAAM,KAAKqiC,QAAQ,SAACwuJ,GACnBl9F,EAAWk9F,UACJl9F,GAAWk9F,KAG1B,GAAUj9F,EAAa,GAAK34F,YAAY04F,GAd5C,oB/Vg9nDM,SAAUhwG,EAAQiE,EAAqBrE,GAE7C,YgWh9nDe,SAAS60N,GAAT,GAA8E,QAApDzhM,qBAAoD,WAApCk+B,QAAW7uD,EAAyB,EAAzBA,KAAyB,IAAnBs3E,oBAAmB,EAAR,GAAQ,CAEzF,OAAIt3E,KAASmD,IAAYyG,KAA4B,IAArB+mB,EAAUryB,OAC/B,KAGJg5E,ECDI,QAAS+6I,GAAiBl8M,GACrC,OAA2C,IAApCm8M,EAAct6M,QAAQ7B,GAAkBA,EAAU,KCE9C,QAASo8M,GAAyBriK,EAAKsiK,GAClD,GAAmB,gBAARtiK,IAAoBA,EAAIl2C,MAAM,KAAK1b,OAAS,EAAG,CACxD,GAAMsjM,GAAc1xI,EAAIl2C,MAAM,KAAK,EAEnC,KAAK4nL,GAAsC,KAAvBA,EAAY/hG,OAC5B,MAAO,EAIX,IAAI2yH,GAAmBliN,MAAM+c,QAAQmlM,IAAoBA,EAAgBl0N,OAAQ,CAC7E,GAAMm0N,MACFC,EAAuB,EAiB3B,OAhBAF,GAAgBn2K,QAAQ,SAAC3pB,EAAM1E,GAC3B,GAAM2kM,GAAiBjgM,EAAKrJ,QAAQ,OAAQ,OAAOA,QAAQ,OAAQ,OAC7D4vC,EAAQ,GAAI/d,QAAO,SAAWy3K,EAAiB,aAC/C5rM,EAASkyC,EAAM42C,KAAK+xF,EAEtB76K,IAAUzW,MAAM+c,QAAQtG,IAAWA,EAAO,IAC1C0rM,EAAoBj0N,KAAKuoB,EAAO,GAAGsC,QAAQ,IAAK,OAIrB,IAA/BopM,EAAoBn0N,OACpBo0N,GAAwBD,EAAoBlkM,KAAK,IAC1CkkM,EAAoBn0N,OAAS,IACpCo0N,GAAwBD,EAAoBlkM,KAAK,MAG9CmkM,EAGX,MAAO9wB,GAGT,MAAO,GC1CI,QAASgxB,GAAc/jK,GAClC,GAAIgkK,SAmDJ,OAlDqB,UAAjBhkK,EAAQ7uD,KACR6yN,GACIj6M,GAAGA,GAAIi2C,EAAQj2C,GACfgxC,OAAQiF,EAAQjF,OAChB5pD,KAAMmD,IAAYwG,QAClB/I,KAAMiuD,EAAQjuD,KACdumD,YAAa0H,EAAQ1H,YACrBuC,UAAWmF,EAAQnF,UACnB4tB,SAAUzoB,EAAQyoB,SAClBC,KAAM1oB,EAAQ0oB,KACdC,UAAW3oB,EAAQ2oB,UACnBC,IAAK5oB,EAAQikK,QACb3jN,KAAM0/C,EAAQ1/C,KACd+hD,UACIt4C,GAAGA,GAAIi2C,EAAQj2C,GACfhY,KAAMiuD,EAAQjuD,KACdgpD,OAAQiF,EAAQjF,OAChBp6C,SAAUq/C,EAAQr/C,SAClBqO,QACIjF,GAAIi2C,EAAQ8uI,SACZ/8L,KAAMiuD,EAAQhxC,OACd7d,KAAM6uD,EAAQ6uI,YAElBnnH,MAAO1nB,EAAQ0nB,MACf5lD,UAAWk+B,EAAQl+B,UACnB6lD,SAAU3nB,EAAQ2nB,SAClBrlB,MAAOtC,EAAQsC,QAEnBumB,SAAU7oB,EAAQ6oB,UAEC,UAAjB7oB,EAAQ7uD,OACd6yN,GACIj6M,GAAGA,GAAIi2C,EAAQj2C,GACfy+D,KAAMxoB,EAAQwoB,KACdr3E,KAAMmD,IAAYyG,IAClBhJ,KAAMiuD,EAAQjuD,KACdumD,YAAa0H,EAAQ1H,YACrBuC,UAAWmF,EAAQnF,UACnB4tB,SAAUzoB,EAAQyoB,SAClBpmB,UACIt4C,GAAGA,GAAIi2C,EAAQj2C,GACfhY,KAAMiuD,EAAQjuD,KACd4O,SAAUq/C,EAAQr/C,SAClBqO,QACIjd,KAAMiuD,EAAQhxC,QAElBszC,MAAOtC,EAAQsC,UAIpB0hK,EChDI,QAASE,GAAoBlkK,GAAS,GACzCj2C,GAAqBi2C,EAArBj2C,GADyC,EACpBi2C,EAAjBqC,mBADqC,OAE7C2G,EAAS3G,EAAQ/+B,OAAO,SAAAy5K,GAAA,MAAcA,GAAWhzL,KAAOA,IAAI,EAIhE,OAHKs4C,KACD2G,EAAS3G,EAAQ,IAEd2G,ECTI,QAASm7J,GAAcnkK,GAClC,GAAMgJ,GAASk7J,EAAoBlkK,GAC7BgC,EAAYg1E,MAAM7gG,SAAS6pB,EAAQj2C,GAAI,KAAOi2C,EAAQj2C,GAAKosB,SAAS6pB,EAAQj2C,GAAI,IAClFq6M,QAqDJ,OApDIpkK,GAAQ7uD,OAASmD,IAAYwG,QAC7BspN,GACIr6M,GAAIi4C,EACJjH,OAAQiF,EAAQjF,OAChB5pD,KAAM,QACNY,KAAMiuD,EAAQjuD,KACdumD,YAAa0H,EAAQ1H,YACrBuC,UAAWmF,EAAQnF,UACnBl6C,SAAUqoD,EAAOroD,SACjB8nE,SAAUzoB,EAAQyoB,SAClBC,KAAM1oB,EAAQ0oB,KACdC,UAAW3oB,EAAQ2oB,UACnBs7I,QAASjkK,EAAQ4oB,IACjBtoE,KAAM0/C,EAAQ1/C,KACdwhB,UAAWknC,EAAOlnC,UAClB+mG,aAKA75G,OAAQg6C,EAAOh6C,OAAOjd,KACtB+8L,SAAU9lI,EAAOh6C,OAAOjF,GACxB8kL,WAAY7lI,EAAOh6C,OAAO7d,KAC1Bw2E,SAAU3e,EAAO2e,SACjBrlB,MAAO0G,EAAO1G,MACdtE,YAGA6qB,SAAU7oB,EAAQ6oB,UAEhB7oB,EAAQ7uD,OAASmD,IAAYyG,MACnCqpN,GACIr6M,GAAIi4C,EACJwmB,KAAMxoB,EAAQwoB,KACdr3E,KAAM,QACNY,KAAMiuD,EAAQjuD,KACdumD,YAAa0H,EAAQ1H,YACrBuC,UAAWmF,EAAQnF,UACnBl6C,SAAUqoD,EAAOroD,SACjB8nE,SAAUzoB,EAAQyoB,SAClBogD,UAEQ9nD,SAAU/gB,EAAQj2C,KAG1BiF,OAAQg6C,EAAOh6C,OAAOjd,KACtBuwD,MAAO0G,EAAO1G,MACdtE,cAKDomK,ErW05nDX,GAAIpjJ,GAAgBtyE,EAAoB,IAGpC0lH,EAAmB1lH,EAAoB,KAGvC8T,EAAQ9T,EAAoB,GAqB5BuwG,EAA6BvwG,EAAoB,KAGjDusD,EAA6BvsD,EAAoB,KAGjDwU,EAAaxU,EAAoB,IAGjC21N,EAAwB31N,EAAoB,KAG5CgoG,EAAuBhoG,EAAoB,KAG3C41N,EAAoB51N,EAAoB,KAGxC61N,EAAiB71N,EAAoB,KAGrC81N,EAAiC91N,EAAoB,KiWpgoDnD+0N,GAAiB,KAAM,KAAM,MjWkhoD/B19B,EAAuBr3L,EAAoB,KAG3C0X,EAAc1X,EAAoB,IAkDlC40N,EAAqB50N,EAAoB,KAyIzCovE,EAA0BpvE,EAAoB,IsWjtoDlD,4oBtWixoDM,SAAUI,EAAQiE,EAAqBrE,GAE7C,YuWnxoDe,SAASuwG,KAEpB,OAFiE,uDAAJ,IAC7B9zF,MAAM,KACnBzS,OAAO,SAACC,EAAK2W,GAC5B,GAAMm1M,GAAcn1M,EAAKnE,MAAM,IAK/B,OAJIs5M,GAAYh1N,OAAS,IAErBkJ,EADY8rN,EAAY,IACbA,EAAY,IAEpB9rN,OARf,OvWqyoDM,SAAU7J,EAAQiE,EAAqBrE,GAE7C,YwW7xoDe,SAASusD,GAA2BzoD,EAAQ40K,GACvD,IAAK50K,IAAW40K,QAAa3lK,MAAM+c,QAAQ4oJ,IAAwBA,EAAU33K,OAAS,EAClF,MAAO,EAGX,IAAIi1N,GAAkB,GAChBC,EAAiBC,IAAMpyN,EAAQ40K,EAErC,IAAIu9C,EAAgB,CAChB,GAAIE,GAAqB,EACrBC,EAAyBC,IAAMJ,EAEnC/0N,QAAO6I,KAAKksN,GAAgBn3K,QAAQ,SAAAt6C,GAChC,GAAIC,GAAQwxN,EAAezxN,EAC3B2xN,KACAH,GAAsBxxN,EAAtB,IAA6BC,EAEzB0xN,IAAuBC,IACzBJ,GAAmB,OAK/B,MAAOA,GAjCT,mBAAA31N,EAAA,0BxWm1oDM,SAAUD,EAAQD,EAASH,ayWn1oDjC,GACA,GAAIkxF,GAA8B,gBAAVl+E,IAAsBA,GAAUA,EAAO9R,SAAWA,QAAU8R,CAEpF5S,GAAOD,QAAU+wF,IzWu1oDY3wF,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,G0Wj1oDxB,QAASu2L,GAAS3sK,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,MAAO68J,GAAarmL,KAAKwpB,GACzB,MAAOxoB,IACT,IACE,MAAQwoB,GAAO,GACf,MAAOxoB,KAEX,MAAO,GArBT,GAAIsoL,GAAYphI,SAAStnD,UAGrBylL,EAAeiD,EAAU7sJ,QAqB7B58B,GAAOD,QAAUu2L,G1Wq2oDX,SAAUt2L,EAAQD,EAASH,G2W32oDjC,QAASs2N,GAAYxyN,EAAQU,EAAKC,GAChC,GAAI8xN,GAAWzyN,EAAOU,EAChBpD,GAAeb,KAAKuD,EAAQU,IAAQynJ,EAAGsqE,EAAU9xN,cAClDA,GAAyBD,IAAOV,KACnCs6J,EAAgBt6J,EAAQU,EAAKC,GAvBjC,GAAI25J,GAAkB,EAAQ,KAC1BnS,EAAK,EAAQ,KAGbK,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,cAoBjChB,GAAOD,QAAUm2N,G3Wq4oDX,SAAUl2N,EAAQD,EAASH,G4Wh6oDjC,GAAIgxG,GAAY,EAAQ,IAEpBxtG,EAAkB,WACpB,IACE,GAAIumB,GAAOinF,EAAU9vG,OAAQ,iBAE7B,OADA6oB,MAAS,OACFA,EACP,MAAOxoB,OAGXnB,GAAOD,QAAUqD,G5Wu6oDX,SAAUpD,EAAQD,EAASH,G6Wp5oDjC,QAASw2N,GAAM1yN,EAAQ0W,GACrB,MAAiB,OAAV1W,GAAkB2yN,EAAQ3yN,EAAQ0W,EAAMk8M,GA9BjD,GAAIA,GAAY,EAAQ,KACpBD,EAAU,EAAQ,IAgCtBr2N,GAAOD,QAAUq2N,G7Ww7oDX,SAAUp2N,EAAQD,EAASH,G8W38oDjC,QAAS22N,GAAYz2K,EAAO+5H,EAAOoR,EAAWx8C,EAAUrlH,GACtD,GAAIiH,IAAS,EACT1vB,EAASm/C,EAAMn/C,MAKnB,KAHAsqL,IAAcA,EAAYurC,GAC1BptM,IAAWA,QAEFiH,EAAQ1vB,GAAQ,CACvB,GAAI0D,GAAQy7C,EAAMzvB,EACdwpJ,GAAQ,GAAKoR,EAAU5mL,GACrBw1K,EAAQ,EAEV08C,EAAYlyN,EAAOw1K,EAAQ,EAAGoR,EAAWx8C,EAAUrlH,GAEnDqtM,EAAUrtM,EAAQ/kB,GAEVoqI,IACVrlH,EAAOA,EAAOzoB,QAAU0D,GAG5B,MAAO+kB,GAlCT,GAAIqtM,GAAY,EAAQ,KACpBD,EAAgB,EAAQ,IAoC5Bx2N,GAAOD,QAAUw2N,G9Wg+oDX,SAAUv2N,EAAQD,G+W7/oDxB,QAAS02N,GAAU32K,EAAO3tB,GAKxB,IAJA,GAAI9B,IAAS,EACT1vB,EAASwxB,EAAOxxB,OAChBu8I,EAASp9F,EAAMn/C,SAEV0vB,EAAQ1vB,GACfm/C,EAAMo9F,EAAS7sH,GAAS8B,EAAO9B,EAEjC,OAAOyvB,GAGT9/C,EAAOD,QAAU02N,G/W4gpDX,SAAUz2N,EAAQD,EAASH,GgXjhpDjC,QAAS82N,GAAS/sM,EAAM27D,EAAOwzF,GAE7B,MADAxzF,GAAQw0G,WAAUx0G,EAAuB37D,EAAKhpB,OAAS,EAAK2kF,EAAO,GAC5D,WAML,IALA,GAAI95D,GAAOla,UACP+e,GAAS,EACT1vB,EAASm5L,EAAUtuK,EAAK7qB,OAAS2kF,EAAO,GACxCxlC,EAAQntC,MAAMhS,KAET0vB,EAAQ1vB,GACfm/C,EAAMzvB,GAAS7E,EAAK85D,EAAQj1D,EAE9BA,IAAS,CAET,KADA,GAAIsmM,GAAYhkN,MAAM2yE,EAAQ,KACrBj1D,EAAQi1D,GACfqxI,EAAUtmM,GAAS7E,EAAK6E,EAG1B,OADAsmM,GAAUrxI,GAASwzF,EAAUh5H,GACtBzuC,EAAMsY,EAAMhL,KAAMg4M,IA/B7B,GAAItlN,GAAQ,EAAQ,KAGhByoL,EAAY78J,KAAKC,GAgCrBl9B,GAAOD,QAAU22N,GhXsipDX,SAAU12N,EAAQD,EAASH,GiXzkpDjC,GAAIg3N,GAAkB,EAAQ,KAC1BC,EAAW,EAAQ,KAUnBC,EAAcD,EAASD,EAE3B52N,GAAOD,QAAU+2N,GjXglpDX,SAAU92N,EAAQD,GkXrlpDxB,QAASsmL,GAAQ18J,EAAMmvJ,GACrB,MAAO,UAAS5vJ,GACd,MAAOS,GAAKmvJ,EAAU5vJ,KAI1BlpB,EAAOD,QAAUsmL,GlXompDX,SAAUrmL,EAAQD,EAASH,GmXlnpDjC,GAAIgxG,GAAY,EAAQ,IACpBziD,EAAO,EAAQ,IAGfioI,EAAMxlF,EAAUziD,EAAM,MAE1BnuD,GAAOD,QAAUq2L,GnXynpDX,SAAUp2L,EAAQD,GoXxnpDxB,QAASg3N,GAAa3yN,GACpB,MAAO,UAASV,GACd,MAAiB,OAAVA,SAA6BA,EAAOU,IAI/CpE,EAAOD,QAAUg3N,GpXsopDX,SAAU/2N,EAAQD,EAASH,aqXnppDjC,MAEE,SAAUgT,EAAQ++F,GAC+C3xG,EAAOD,QAGlE,WAAe,YAInB,SAASgtL,KACL,MAAOzmD,IAAaj1H,MAAM,KAAMC,WASpC,QAASoe,GAAQ22B,GACb,MAAOA,aAAiB1zC,QAAmD,mBAA1C7R,OAAOC,UAAU67B,SAASz8B,KAAKkmD,GAGpE,QAAS5lB,GAAS4lB,GAGd,MAAgB,OAATA,GAA2D,oBAA1CvlD,OAAOC,UAAU67B,SAASz8B,KAAKkmD,GAG3D,QAASkgF,GAAcpiI,GACnB,GAAIrD,OAAOsuC,oBACP,MAAmD,KAA3CtuC,OAAOsuC,oBAAoBjrC,GAAKxD,MAExC,IAAI+rH,EACJ,KAAKA,IAAKvoH,GACN,GAAIA,EAAInD,eAAe0rH,GACnB,OAAM,CAGd,UAIR,QAAS8b,GAAYniF,GACjB,WAAO,KAAAA,EAGX,QAASg1H,GAASh1H,GACd,MAAwB,gBAAVA,IAAgE,oBAA1CvlD,OAAOC,UAAU67B,SAASz8B,KAAKkmD,GAGvE,QAASmgF,GAAOngF,GACZ,MAAOA,aAAiBwI,OAAkD,kBAA1C/tD,OAAOC,UAAU67B,SAASz8B,KAAKkmD,GAGnE,QAAS11B,GAAIpe,EAAKomB,GACd,GAAc14B,GAAVwmI,IACJ,KAAKxmI,EAAI,EAAGA,EAAIsS,EAAI5R,SAAUV,EAC1BwmI,EAAI5lI,KAAK83B,EAAGpmB,EAAItS,GAAIA,GAExB,OAAOwmI,GAGX,QAASC,GAAWp9G,EAAG5C,GACnB,MAAO5lB,QAAOC,UAAUC,eAAeb,KAAKmpB,EAAG5C,GAGnD,QAASigH,GAAOr9G,EAAG5C,GACf,IAAK,GAAIzmB,KAAKymB,GACNggH,EAAWhgH,EAAGzmB,KACdqpB,EAAErpB,GAAKymB,EAAEzmB,GAYjB,OARIymI,GAAWhgH,EAAG,cACd4C,EAAEsT,SAAWlW,EAAEkW,UAGf8pG,EAAWhgH,EAAG,aACd4C,EAAE67D,QAAUz+D,EAAEy+D,SAGX77D,EAGX,QAAS0tM,GAAW3wK,EAAOp0C,EAAQ66G,EAAQ+Z,GACvC,MAAOC,IAAiBzgF,EAAOp0C,EAAQ66G,EAAQ+Z,MAAc/sD,MAGjE,QAASitD,KAEL,OACIC,SACAC,gBACAC,eACAC,UAAmB,EACnBC,cAAkB,EAClBC,aACAC,aAAkB,KAClBC,iBACAC,mBACAC,OACAC,mBACAC,SAAkB,KAClBsvF,WACAC,oBAIR,QAAStvF,GAAgB9kI,GAIrB,MAHa,OAATA,EAAE+kI,MACF/kI,EAAE+kI,IAAMd,KAELjkI,EAAE+kI,IAqBb,QAASliD,GAAQ7iF,GACb,GAAkB,MAAdA,EAAEilI,SAAkB,CACpB,GAAIjlG,GAAQ8kG,EAAgB9kI,GACxBklI,EAAcrzG,GAAKx0B,KAAK2iC,EAAM4kG,gBAAiB,SAAUznI,GACzD,MAAY,OAALA,IAEPgoI,GAAcC,MAAMplI,EAAEgyE,GAAGg9C,YACzBhvF,EAAMqkG,SAAW,IAChBrkG,EAAMkkG,QACNlkG,EAAMwkG,eACNxkG,EAAMqlG,iBACNrlG,EAAMo0L,kBACNp0L,EAAMukG,YACNvkG,EAAMykG,gBACNzkG,EAAM0kG,mBACL1kG,EAAM6kG,UAAa7kG,EAAM6kG,UAAYK,EAS3C,IAPIllI,EAAEslI,UACFH,EAAaA,GACe,IAAxBnlG,EAAMskG,eACwB,IAA9BtkG,EAAMmkG,aAAatmI,iBACnBmiC,EAAMulG,SAGS,MAAnBvnI,OAAOwnI,UAAqBxnI,OAAOwnI,SAASxlI,GAI5C,MAAOmlI,EAHPnlI,GAAEilI,SAAWE,EAMrB,MAAOnlI,GAAEilI,SAGb,QAASovF,GAAer0L,GACpB,GAAIhgC,GAAIk0N,EAAU5xI,IAQlB,OAPa,OAATtiD,EACA6jG,EAAOiB,EAAgB9kI,GAAIggC,GAG3B8kG,EAAgB9kI,GAAG0kI,mBAGhB1kI,EAOX,QAAS2lI,GAAW3gF,EAAIl4B,GACpB,GAAI3vB,GAAGsvC,EAAM+G,CAiCb,IA/BKkyF,EAAY54G,EAAK84G,oBAClB5gF,EAAG4gF,iBAAmB94G,EAAK84G,kBAE1BF,EAAY54G,EAAKqlD,MAClBntB,EAAGmtB,GAAKrlD,EAAKqlD,IAEZuzD,EAAY54G,EAAK+4G,MAClB7gF,EAAG6gF,GAAK/4G,EAAK+4G,IAEZH,EAAY54G,EAAKg5G,MAClB9gF,EAAG8gF,GAAKh5G,EAAKg5G,IAEZJ,EAAY54G,EAAKw4G,WAClBtgF,EAAGsgF,QAAUx4G,EAAKw4G,SAEjBI,EAAY54G,EAAKi5G,QAClB/gF,EAAG+gF,KAAOj5G,EAAKi5G,MAEdL,EAAY54G,EAAKk5G,UAClBhhF,EAAGghF,OAASl5G,EAAKk5G,QAEhBN,EAAY54G,EAAKm5G,WAClBjhF,EAAGihF,QAAUn5G,EAAKm5G,SAEjBP,EAAY54G,EAAKi4G,OAClB//E,EAAG+/E,IAAMD,EAAgBh4G,IAExB44G,EAAY54G,EAAKo5G,WAClBlhF,EAAGkhF,QAAUp5G,EAAKo5G,SAGlBC,GAAiBtoI,OAAS,EAC1B,IAAKV,EAAI,EAAGA,EAAIgpI,GAAiBtoI,OAAQV,IACrCsvC,EAAO05F,GAAiBhpI,GACxBq2C,EAAM1mB,EAAK2f,GACNi5F,EAAYlyF,KACbwR,EAAGvY,GAAQ+G,EAKvB,OAAOwR,GAMX,QAASohF,GAAOxxH,GACZ+wH,EAAW9pH,KAAMjH,GACjBiH,KAAKm2D,GAAK,GAAIjmB,MAAkB,MAAbn3C,EAAOo9D,GAAap9D,EAAOo9D,GAAGg9C,UAAY1sC,KACxDzmE,KAAKgnE,YACNhnE,KAAKm2D,GAAK,GAAIjmB,MAAKu2B,WAInB+jD,KACAA,MACA4jD,EAAM3jD,aAAazqH,MACnBwqH,OAIR,QAASE,GAAUllI,GACf,MAAOA,aAAe+kI,IAAkB,MAAP/kI,GAAuC,MAAxBA,EAAIukI,iBAGxD,QAASY,GAAU/xD,GACf,MAAIA,GAAS,EAEFt6C,KAAKssG,KAAKhyD,IAAW,EAErBt6C,KAAK+oD,MAAMzO,GAI1B,QAASiyD,GAAMC,GACX,GAAIC,IAAiBD,EACjBplI,EAAQ,CAMZ,OAJsB,KAAlBqlI,GAAuB30F,SAAS20F,KAChCrlI,EAAQilI,EAASI,IAGdrlI,EAIX,QAASslI,GAAcC,EAAQC,EAAQC,GACnC,GAGI7pI,GAHAuxC,EAAMvU,KAAKgpD,IAAI2jD,EAAOjpI,OAAQkpI,EAAOlpI,QACrCopI,EAAa9sG,KAAK8oD,IAAI6jD,EAAOjpI,OAASkpI,EAAOlpI,QAC7CqpI,EAAQ,CAEZ,KAAK/pI,EAAI,EAAGA,EAAIuxC,EAAKvxC,KACZ6pI,GAAeF,EAAO3pI,KAAO4pI,EAAO5pI,KACnC6pI,GAAeN,EAAMI,EAAO3pI,MAAQupI,EAAMK,EAAO5pI,MACnD+pI,GAGR,OAAOA,GAAQD,EAGnB,QAASx4H,GAAKozB,QACNooJ,EAAM9iD,sCACMnmI,GAA6BA,EAAQyN,MACjDzN,EAAQyN,KAAK,wBAA0BozB,GAI/C,QAASulG,GAAUvlG,EAAKhM,GACpB,GAAIwxG,KAEJ,OAAOxD,GAAO,WAIV,GAHgC,MAA5BomD,EAAM3iD,oBACN2iD,EAAM3iD,mBAAmB,KAAMzlG,GAE/BwlG,EAAW,CAGX,IAAK,GADDjhH,GADAsC,KAEKvrB,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAEvC,GADAipB,EAAM,GACsB,gBAAjB5X,WAAUrR,GAAiB,CAClCipB,GAAO,MAAQjpB,EAAI,IACnB,KAAK,GAAImE,KAAOkN,WAAU,GACtB4X,GAAO9kB,EAAM,KAAOkN,UAAU,GAAGlN,GAAO,IAE5C8kB,GAAMA,EAAI1W,MAAM,GAAI,OAEpB0W,GAAM5X,UAAUrR,EAEpBurB,GAAK3qB,KAAKqoB,GAEd3X,EAAKozB,EAAM,gBAAkBhyB,MAAM5R,UAAUyR,MAAMrS,KAAKqrB,GAAMoF,KAAK,IAAM,SAAYjvB,QAASuQ,OAC9Fi4H,KAEJ,MAAOxxG,GAAGtnB,MAAMsN,KAAMrN,YACvBqnB,GAKP,QAAS0xG,GAAgBpnI,EAAM0hC,GACK,MAA5BooJ,EAAM3iD,oBACN2iD,EAAM3iD,mBAAmBnnI,EAAM0hC,GAE9B2lG,GAAarnI,KACdsO,EAAKozB,GACL2lG,GAAarnI,OAOrB,QAAS02F,GAAWtzC,GAChB,MAAOA,aAAiBgC,WAAsD,sBAA1CvnD,OAAOC,UAAU67B,SAASz8B,KAAKkmD,GAGvE,QAAS5W,GAAK/3B,GACV,GAAI63B,GAAMtvC,CACV,KAAKA,IAAKyX,GACN63B,EAAO73B,EAAOzX,GACV05F,EAAWpqD,GACX5wB,KAAK1e,GAAKsvC,EAEV5wB,KAAK,IAAM1e,GAAKsvC,CAGxB5wB,MAAK23G,QAAU5+G,EAIfiH,KAAKy4M,+BAAiC,GAAI75K,SACrC5+B,KAAK04M,wBAAwBn3M,QAAUvB,KAAK8rH,cAAcvqH,QACvD,IAAM,UAAYA,QAG9B,QAASwqH,GAAaC,EAAcC,GAChC,GAAoCr7F,GAAhCk3F,EAAME,KAAWgE,EACrB,KAAKp7F,IAAQq7F,GACLlE,EAAWkE,EAAar7F,KACpB9O,EAASkqG,EAAap7F,KAAU9O,EAASmqG,EAAYr7F,KACrDk3F,EAAIl3F,MACJo3F,EAAOF,EAAIl3F,GAAOo7F,EAAap7F,IAC/Bo3F,EAAOF,EAAIl3F,GAAOq7F,EAAYr7F,KACF,MAArBq7F,EAAYr7F,GACnBk3F,EAAIl3F,GAAQq7F,EAAYr7F,SAEjBk3F,GAAIl3F,GAIvB,KAAKA,IAAQo7F,GACLjE,EAAWiE,EAAcp7F,KACpBm3F,EAAWkE,EAAar7F,IACzB9O,EAASkqG,EAAap7F,MAE1Bk3F,EAAIl3F,GAAQo3F,KAAWF,EAAIl3F,IAGnC,OAAOk3F,GAGX,QAASoE,GAAOnzH,GACE,MAAVA,GACAiH,KAAK8wB,IAAI/3B,GA6BjB,QAAS4oI,GAAUl8I,EAAK2mI,EAAKp5H,GACzB,GAAIq5H,GAASrsH,KAAKssH,UAAU7mI,IAAQua,KAAKssH,UAAoB,QAC7D,OAAOtxC,GAAWqxC,GAAUA,EAAO7qI,KAAK4qI,EAAKp5H,GAAOq5H,EAYxD,QAASE,GAAgB9mI,GACrB,GAAI6N,GAAS0M,KAAKwsH,gBAAgB/mI,GAC9BgnI,EAAczsH,KAAKwsH,gBAAgB/mI,EAAIivD,cAE3C,OAAIphD,KAAWm5H,EACJn5H,GAGX0M,KAAKwsH,gBAAgB/mI,GAAOgnI,EAAY1/G,QAAQ,mBAAoB,SAAU4qB,GAC1E,MAAOA,GAAI9jC,MAAM,KAGdmM,KAAKwsH,gBAAgB/mI,IAKhC,QAASinI,KACL,MAAO1sH,MAAK2sH,aAMhB,QAASC,GAASh0D,GACd,MAAO54D,MAAK6sH,SAAS9/G,QAAQ,KAAM6rD,GAoBvC,QAASguE,GAAchuE,EAAQm0D,EAAep0D,EAAQq0D,GAClD,GAAIX,GAASrsH,KAAKitH,cAAct0D,EAChC,OAAQqiB,GAAWqxC,GACfA,EAAOzzD,EAAQm0D,EAAep0D,EAAQq0D,GACtCX,EAAOt/G,QAAQ,MAAO6rD,GAG9B,QAASs0D,GAAYC,EAAMd,GACvB,GAAI/4H,GAAS0M,KAAKitH,cAAcE,EAAO,EAAI,SAAW,OACtD,OAAOnyC,GAAW1nF,GAAUA,EAAO+4H,GAAU/4H,EAAOyZ,QAAQ,MAAOs/G,GAKvE,QAASe,GAAcC,EAAMC,GACzB,GAAIC,GAAYF,EAAKh3G,aACrBm3G,IAAQD,GAAaC,GAAQD,EAAY,KAAOC,GAAQF,GAAaD,EAGzE,QAASI,GAAe3a,GACpB,MAAwB,gBAAVA,GAAqB0a,GAAQ1a,IAAU0a,GAAQ1a,EAAMz8F,sBAGvE,QAASq3G,GAAqBC,GAC1B,GACIC,GACAh9F,EAFAi9F,IAIJ,KAAKj9F,IAAQ+8F,GACL5F,EAAW4F,EAAa/8F,KACxBg9F,EAAiBH,EAAe78F,MAE5Bi9F,EAAgBD,GAAkBD,EAAY/8F,GAK1D,OAAOi9F,GAKX,QAASC,GAAgBT,EAAMU,GAC3BC,GAAWX,GAAQU,EAGvB,QAASE,GAAoBC,GACzB,GAAIpb,KACJ,KAAK,GAAIt6F,KAAK01G,GACVpb,EAAM5wH,MAAMmrI,KAAM70G,EAAGu1G,SAAUC,GAAWx1G,IAK9C,OAHAs6F,GAAM/oD,KAAK,SAAUp/C,EAAG5C,GACpB,MAAO4C,GAAEojH,SAAWhmH,EAAEgmH,WAEnBjb,EAGX,QAAS4b,GAAS91D,EAAQ+1D,EAAcC,GACpC,GAAIC,GAAY,GAAKvwG,KAAK8oD,IAAIxO,GAC1Bk2D,EAAcH,EAAeE,EAAU7sI,MAE3C,QADW42E,GAAU,EACLg2D,EAAY,IAAM,GAAM,KACpCtwG,KAAKywG,IAAI,GAAIzwG,KAAKC,IAAI,EAAGuwG,IAAc7wG,WAAWiK,OAAO,GAAK2mG,EAetE,QAASG,GAAgBv4G,EAAOw4G,EAAQrC,EAASn2F,GAC7C,GAAIzrB,GAAOyrB,CACa,iBAAbA,KACPzrB,EAAO,WACH,MAAOhL,MAAKy2B,OAGhBhgB,IACAy4G,GAAqBz4G,GAASzL,GAE9BikH,IACAC,GAAqBD,EAAO,IAAM,WAC9B,MAAOP,GAAS1jH,EAAKtY,MAAMsN,KAAMrN,WAAYs8H,EAAO,GAAIA,EAAO,MAGnErC,IACAsC,GAAqBtC,GAAW,WAC5B,MAAO5sH,MAAKkuG,aAAa0e,QAAQ5hH,EAAKtY,MAAMsN,KAAMrN,WAAY8jB,KAK1E,QAAS04G,GAAuBznF,GAC5B,MAAIA,GAAMp9B,MAAM,YACLo9B,EAAM36B,QAAQ,WAAY,IAE9B26B,EAAM36B,QAAQ,MAAO,IAGhC,QAASqiH,GAAmB97H,GACxB,GAA4ChS,GAAGU,EAA3Cm/C,EAAQ7tC,EAAOgX,MAAM+kH,GAEzB,KAAK/tI,EAAI,EAAGU,EAASm/C,EAAMn/C,OAAQV,EAAIU,EAAQV,IACvC4tI,GAAqB/tF,EAAM7/C,IAC3B6/C,EAAM7/C,GAAK4tI,GAAqB/tF,EAAM7/C,IAEtC6/C,EAAM7/C,GAAK6tI,EAAuBhuF,EAAM7/C,GAIhD,OAAO,UAAU8qI,GACb,GAAiB9qI,GAAb+qI,EAAS,EACb,KAAK/qI,EAAI,EAAGA,EAAIU,EAAQV,IACpB+qI,GAAUrxC,EAAW75C,EAAM7/C,IAAM6/C,EAAM7/C,GAAGE,KAAK4qI,EAAK94H,GAAU6tC,EAAM7/C,EAExE,OAAO+qI,IAKf,QAASiD,GAAanrI,EAAGmP,GACrB,MAAKnP,GAAE6iF,WAIP1zE,EAASi8H,EAAaj8H,EAAQnP,EAAE+pH,cAChCshB,GAAgBl8H,GAAUk8H,GAAgBl8H,IAAW87H,EAAmB97H,GAEjEk8H,GAAgBl8H,GAAQnP,IANpBA,EAAE+pH,aAAawe,cAS9B,QAAS6C,GAAaj8H,EAAQ66G,GAG1B,QAASshB,GAA4B/nF,GACjC,MAAOymE,GAAOoe,eAAe7kF,IAAUA,EAH3C,GAAIpmD,GAAI,CAOR,KADAouI,GAAsBltG,UAAY,EAC3BlhC,GAAK,GAAKouI,GAAsB9pG,KAAKtyB,IACxCA,EAASA,EAAOyZ,QAAQ2iH,GAAuBD,GAC/CC,GAAsBltG,UAAY,EAClClhC,GAAK,CAGT,OAAOgS,GA6BX,QAASq8H,GAAel5G,EAAOkmC,EAAOizE,GAClCC,GAAQp5G,GAASukE,EAAWr+B,GAASA,EAAQ,SAAUmzE,EAAU5hB,GAC7D,MAAQ4hB,IAAYF,EAAeA,EAAcjzE,GAIzD,QAASozE,GAAuBt5G,EAAO1d,GACnC,MAAKgvH,GAAW8H,GAASp5G,GAIlBo5G,GAAQp5G,GAAO1d,EAAO0wH,QAAS1wH,EAAOsxH,SAHlC,GAAIzrF,QAAOoxF,EAAev5G,IAOzC,QAASu5G,GAAe3qI,GACpB,MAAO4qI,GAAY5qI,EAAE0nB,QAAQ,KAAM,IAAIA,QAAQ,sCAAuC,SAAUmjH,EAASC,EAAIC,EAAIC,EAAIC,GACjH,MAAOH,IAAMC,GAAMC,GAAMC,KAIjC,QAASL,GAAY5qI,GACjB,MAAOA,GAAE0nB,QAAQ,yBAA0B,QAK/C,QAASwjH,GAAe95G,EAAOggB,GAC3B,GAAIn1C,GAAG0pB,EAAOyrB,CASd,KARqB,gBAAVhgB,KACPA,GAASA,IAETimJ,EAASjmI,KACTzrB,EAAO,SAAU08B,EAAOvG,GACpBA,EAAM1K,GAAYo0F,EAAMnjF,KAG3BpmD,EAAI,EAAGA,EAAIm1B,EAAMz0B,OAAQV,IAC1BigH,GAAO9qF,EAAMn1B,IAAM0pB,EAI3B,QAASwlH,GAAmB/5G,EAAOggB,GAC/B85F,EAAc95G,EAAO,SAAUixB,EAAOvG,EAAOpoC,EAAQ0d,GACjD1d,EAAO03H,GAAK13H,EAAO03H,OACnBh6F,EAASiR,EAAO3uC,EAAO03H,GAAI13H,EAAQ0d,KAI3C,QAASi6G,GAAwBj6G,EAAOixB,EAAO3uC,GAC9B,MAAT2uC,GAAiBqgF,EAAWxmB,GAAQ9qF,IACpC8qF,GAAO9qF,GAAOixB,EAAO3uC,EAAOi1G,GAAIj1G,EAAQ0d,GA0DhD,QAASy8G,IAAWjd,GAChB,MAAOkd,IAAWld,GAAQ,IAAM,IAGpC,QAASkd,IAAWld,GAChB,MAAQA,GAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,EAalE,QAASmd,MACL,MAAOD,IAAWnzH,KAAKi2G,QAG3B,QAASkY,IAAYd,EAAMe,GACvB,MAAO,UAAU1oI,GACb,MAAa,OAATA,GACAizN,GAAM34M,KAAMqtH,EAAM3nI,GAClB0oL,EAAM3jD,aAAazqH,KAAMouH,GAClBpuH,MAEApb,GAAIob,KAAMqtH,IAK7B,QAASzoI,IAAKwnI,EAAKiB,GACf,MAAOjB,GAAIplD,UACPolD,EAAIj2D,GAAG,OAASi2D,EAAIjC,OAAS,MAAQ,IAAMkD,KAAU5mD,IAG7D,QAASkyI,IAAOvsF,EAAKiB,EAAM3nI,GACnB0mI,EAAIplD,YAAcuiD,MAAM7jI,KACX,aAAT2nI,GAAuB8F,GAAW/G,EAAInW,SAA2B,IAAhBmW,EAAInb,SAAgC,KAAfmb,EAAInxD,OAC1EmxD,EAAIj2D,GAAG,OAASi2D,EAAIjC,OAAS,MAAQ,IAAMkD,GAAM3nI,EAAO0mI,EAAInb,QAAS0f,GAAYjrI,EAAO0mI,EAAInb,UAG5Fmb,EAAIj2D,GAAG,OAASi2D,EAAIjC,OAAS,MAAQ,IAAMkD,GAAM3nI,IAO7D,QAAS6oI,IAAWzb,GAEhB,MADAA,GAAQ2a,EAAe3a,GACnB93B,EAAWh7E,KAAK8yG,IACT9yG,KAAK8yG,KAET9yG,KAIX,QAASwuH,IAAW1b,EAAOptH,GACvB,GAAqB,gBAAVotH,GAAoB,CAC3BA,EAAQ4a,EAAqB5a,EAE7B,KAAK,GADD2b,GAAcR,EAAoBnb,GAC7BxxH,EAAI,EAAGA,EAAImtI,EAAYzsI,OAAQV,IACpC0e,KAAKyuH,EAAYntI,GAAG+rI,MAAMva,EAAM2b,EAAYntI,GAAG+rI,WAInD,IADAva,EAAQ2a,EAAe3a,GACnB93B,EAAWh7E,KAAK8yG,IAChB,MAAO9yG,MAAK8yG,GAAOptH,EAG3B,OAAOsa,MAGX,QAAS44M,IAAI/zN,EAAG2hB,GACZ,OAAS3hB,EAAI2hB,EAAKA,GAAKA,EAoB3B,QAASmqH,IAAY1a,EAAMhF,GACvB,GAAIsY,MAAMtT,IAASsT,MAAMtY,GACrB,MAAOxqC,IAEX,IAAIoyI,GAAWD,GAAI3nG,EAAO,GAE1B,OADAgF,KAAShF,EAAQ4nG,GAAY,GACT,IAAbA,EAAkB1lF,GAAWld,GAAQ,GAAK,GAAO,GAAK4iG,EAAW,EAAI,EAsDhF,QAAS/nF,IAAc3sI,EAAGmP,GACtB,MAAKnP,GAIE4sB,EAAQ/Q,KAAK+wH,SAAW/wH,KAAK+wH,QAAQ5sI,EAAE8sH,SAC1CjxG,KAAK+wH,SAAS/wH,KAAK+wH,QAAQC,UAAYC,IAAkBrrG,KAAKtyB,GAAU,SAAW,cAAcnP,EAAE8sH,SAJ5FlgG,EAAQ/Q,KAAK+wH,SAAW/wH,KAAK+wH,QAChC/wH,KAAK+wH,QAAoB,WAOrC,QAASG,IAAmB/sI,EAAGmP,GAC3B,MAAKnP,GAIE4sB,EAAQ/Q,KAAKmxH,cAAgBnxH,KAAKmxH,aAAahtI,EAAE8sH,SACpDjxG,KAAKmxH,aAAaF,GAAiBrrG,KAAKtyB,GAAU,SAAW,cAAcnP,EAAE8sH,SAJtElgG,EAAQ/Q,KAAKmxH,cAAgBnxH,KAAKmxH,aACrCnxH,KAAKmxH,aAAyB,WAM1C,QAAS2nF,IAAkBznF,EAAW/9H,EAAQ40H,GAC1C,GAAI5mI,GAAGgwI,EAAIlF,EAAKmF,EAAMF,EAAUG,mBAChC,KAAKxxH,KAAKyxH,aAKN,IAHAzxH,KAAKyxH,gBACLzxH,KAAK0xH,oBACL1xH,KAAK2xH,qBACArwI,EAAI,EAAGA,EAAI,KAAMA,EAClB8qI,EAAMisF,GAAW,IAAM/2N,IACvB0e,KAAK2xH,kBAAkBrwI,GAAK0e,KAAK4xH,YAAYxF,EAAK,IAAIoF,oBACtDxxH,KAAK0xH,iBAAiBpwI,GAAK0e,KAAK6xH,OAAOzF,EAAK,IAAIoF,mBAIxD,OAAItJ,GACe,QAAX50H,GACAg+H,EAAK51H,GAAQla,KAAKwe,KAAK2xH,kBAAmBJ,IAC3B,IAARD,EAAYA,EAAK,OAExBA,EAAK51H,GAAQla,KAAKwe,KAAK0xH,iBAAkBH,IAC1B,IAARD,EAAYA,EAAK,MAGb,QAAXh+H,GAEY,KADZg+H,EAAK51H,GAAQla,KAAKwe,KAAK2xH,kBAAmBJ,IAE/BD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAK0xH,iBAAkBH,IAC1B,IAARD,EAAYA,EAAK,OAGZ,KADZA,EAAK51H,GAAQla,KAAKwe,KAAK0xH,iBAAkBH,IAE9BD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAK2xH,kBAAmBJ,IAC3B,IAARD,EAAYA,EAAK,MAKpC,QAASQ,IAAmBT,EAAW/9H,EAAQ40H,GAC3C,GAAI5mI,GAAG8qI,EAAKzvE,CAEZ,IAAI38C,KAAK+xH,kBACL,MAAO+mF,IAAkBt3N,KAAKwe,KAAMqxH,EAAW/9H,EAAQ40H,EAY3D,KATKloH,KAAKyxH,eACNzxH,KAAKyxH,gBACLzxH,KAAK0xH,oBACL1xH,KAAK2xH,sBAMJrwI,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAYrB,GAVA8qI,EAAMisF,GAAW,IAAM/2N,IACnB4mI,IAAWloH,KAAK0xH,iBAAiBpwI,KACjC0e,KAAK0xH,iBAAiBpwI,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAK6xH,OAAOzF,EAAK,IAAIr/G,QAAQ,IAAK,IAAM,IAAK,KACzF/M,KAAK2xH,kBAAkBrwI,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAK4xH,YAAYxF,EAAK,IAAIr/G,QAAQ,IAAK,IAAM,IAAK,MAE9Fm7G,GAAWloH,KAAKyxH,aAAanwI,KAC9Bq7D,EAAQ,IAAM38C,KAAK6xH,OAAOzF,EAAK,IAAM,KAAOpsH,KAAK4xH,YAAYxF,EAAK,IAClEpsH,KAAKyxH,aAAanwI,GAAK,GAAIs9C,QAAO+d,EAAM5vC,QAAQ,IAAK,IAAK,MAG1Dm7G,GAAqB,SAAX50H,GAAqB0M,KAAK0xH,iBAAiBpwI,GAAGskC,KAAKyrG,GAC7D,MAAO/vI,EACJ,IAAI4mI,GAAqB,QAAX50H,GAAoB0M,KAAK2xH,kBAAkBrwI,GAAGskC,KAAKyrG,GACpE,MAAO/vI,EACJ,KAAK4mI,GAAUloH,KAAKyxH,aAAanwI,GAAGskC,KAAKyrG,GAC5C,MAAO/vI,IAOnB,QAAS0wI,IAAU5F,EAAK1mI,GACpB,GAAIusI,EAEJ,KAAK7F,EAAIplD,UAEL,MAAOolD,EAGX,IAAqB,gBAAV1mI,GACP,GAAI,QAAQkgC,KAAKlgC,GACbA,EAAQmlI,EAAMnlI,OAId,IAFAA,EAAQ0mI,EAAIle,aAAagkB,YAAYxsI,IAEhCg3K,EAASh3K,GACV,MAAO0mI,EAOnB,OAFA6F,GAAa3zG,KAAKgpD,IAAI8kD,EAAInxD,OAAQ01D,GAAYvE,EAAInW,OAAQvwH,IAC1D0mI,EAAIj2D,GAAG,OAASi2D,EAAIjC,OAAS,MAAQ,IAAM,SAASzkI,EAAOusI,GACpD7F,EAGX,QAAS+F,IAAazsI,GAClB,MAAa,OAATA,GACAssI,GAAShyH,KAAMta,GACf0oL,EAAM3jD,aAAazqH,MAAKA,GACjBA,MAEApb,GAAIob,KAAM,SAIzB,QAASoyH,MACL,MAAOzB,IAAY3wH,KAAKi2G,OAAQj2G,KAAKixG,SAIzC,QAASohB,IAAkBvC,GACvB,MAAI9vH,MAAK+xH,mBACAhK,EAAW/nH,KAAM,iBAClBsyH,GAAmB9wI,KAAKwe,MAExB8vH,EACO9vH,KAAKuyH,wBAELvyH,KAAKwyH,oBAGXzK,EAAW/nH,KAAM,uBAClBA,KAAKwyH,kBAAoBC,IAEtBzyH,KAAKuyH,yBAA2BzC,EACnC9vH,KAAKuyH,wBAA0BvyH,KAAKwyH,mBAKhD,QAASE,IAAa5C,GAClB,MAAI9vH,MAAK+xH,mBACAhK,EAAW/nH,KAAM,iBAClBsyH,GAAmB9wI,KAAKwe,MAExB8vH,EACO9vH,KAAK2yH,mBAEL3yH,KAAK4yH,eAGX7K,EAAW/nH,KAAM,kBAClBA,KAAK4yH,aAAeC,IAEjB7yH,KAAK2yH,oBAAsB7C,EAC9B9vH,KAAK2yH,mBAAqB3yH,KAAK4yH,cAI3C,QAASN,MACL,QAASQ,GAAUnoH,EAAG5C,GAClB,MAAOA,GAAE/lB,OAAS2oB,EAAE3oB,OAGxB,GACIV,GAAG8qI,EADH2G,KAAkBC,KAAiBC,IAEvC,KAAK3xI,EAAI,EAAGA,EAAI,GAAIA,IAEhB8qI,EAAMisF,GAAW,IAAM/2N,IACvByxI,EAAY7wI,KAAK8d,KAAK4xH,YAAYxF,EAAK,KACvC4G,EAAW9wI,KAAK8d,KAAK6xH,OAAOzF,EAAK,KACjC6G,EAAY/wI,KAAK8d,KAAK6xH,OAAOzF,EAAK,KAClC6G,EAAY/wI,KAAK8d,KAAK4xH,YAAYxF,EAAK,IAO3C,KAHA2G,EAAYhpE,KAAK+oE,GACjBE,EAAWjpE,KAAK+oE,GAChBG,EAAYlpE,KAAK+oE,GACZxxI,EAAI,EAAGA,EAAI,GAAIA,IAChByxI,EAAYzxI,GAAK2uI,EAAY8C,EAAYzxI,IACzC0xI,EAAW1xI,GAAK2uI,EAAY+C,EAAW1xI,GAE3C,KAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChB2xI,EAAY3xI,GAAK2uI,EAAYgD,EAAY3xI,GAG7C0e,MAAK4yH,aAAe,GAAIh0F,QAAO,KAAOq0F,EAAYhhH,KAAK,KAAO,IAAK,KACnEjS,KAAKwyH,kBAAoBxyH,KAAK4yH,aAC9B5yH,KAAK2yH,mBAAqB,GAAI/zF,QAAO,KAAOo0F,EAAW/gH,KAAK,KAAO,IAAK,KACxEjS,KAAKuyH,wBAA0B,GAAI3zF,QAAO,KAAOm0F,EAAY9gH,KAAK,KAAO,IAAK,KAGlF,QAASohH,IAAY5sH,EAAGtiB,EAAGE,EAAGivI,EAAGC,EAAGluI,EAAG2gD,GAGnC,GAAIi1B,EAYJ,OAVIx0D,GAAI,KAAOA,GAAK,GAEhBw0D,EAAO,GAAI/qB,MAAKzpC,EAAI,IAAKtiB,EAAGE,EAAGivI,EAAGC,EAAGluI,EAAG2gD,GACpC5P,SAAS6kC,EAAKu4D,gBACdv4D,EAAKw4D,YAAYhtH,IAGrBw0D,EAAO,GAAI/qB,MAAKzpC,EAAGtiB,EAAGE,EAAGivI,EAAGC,EAAGluI,EAAG2gD,GAG/Bi1B,EAGX,QAASy4D,IAAejtH,GACpB,GAAIw0D,EAEJ,IAAIx0D,EAAI,KAAOA,GAAK,EAAG,CACnB,GAAIoG,GAAO7Y,MAAM5R,UAAUyR,MAAMrS,KAAKmR,UAEtCka,GAAK,GAAKpG,EAAI,IACdw0D,EAAO,GAAI/qB,MAAKA,KAAK0gF,IAAIl+H,MAAM,KAAMma,IACjCupB,SAAS6kC,EAAK04D,mBACd14D,EAAK24D,eAAentH,OAGxBw0D,GAAO,GAAI/qB,MAAKA,KAAK0gF,IAAIl+H,MAAM,KAAMC,WAGzC,OAAOsoE,GAIX,QAAS44D,IAAgB5d,EAAM6d,EAAKC,GAChC,GACIC,GAAM,EAAIF,EAAMC,CAIpB,SAFa,EAAIL,GAAczd,EAAM,EAAG+d,GAAKC,YAAcH,GAAO,EAElDE,EAAM,EAI1B,QAASE,IAAmBje,EAAMke,EAAMpe,EAAS+d,EAAKC,GAClD,GAGIK,GAASC,EAHTC,GAAgB,EAAIve,EAAU+d,GAAO,EACrCS,EAAaV,GAAgB5d,EAAM6d,EAAKC,GACxCS,EAAY,EAAI,GAAKL,EAAO,GAAKG,EAAeC,CAcpD,OAXIC,IAAa,GACbJ,EAAUne,EAAO,EACjBoe,EAAenB,GAAWkB,GAAWI,GAC9BA,EAAYtB,GAAWjd,IAC9Bme,EAAUne,EAAO,EACjBoe,EAAeG,EAAYtB,GAAWjd,KAEtCme,EAAUne,EACVoe,EAAeG,IAIfve,KAAMme,EACNI,UAAWH,GAInB,QAASI,IAAWrI,EAAK0H,EAAKC,GAC1B,GAEIW,GAASN,EAFTG,EAAaV,GAAgBzH,EAAInW,OAAQ6d,EAAKC,GAC9CI,EAAO71G,KAAK+oD,OAAO+kD,EAAIoI,YAAcD,EAAa,GAAK,GAAK,CAchE,OAXIJ,GAAO,GACPC,EAAUhI,EAAInW,OAAS,EACvBye,EAAUP,EAAOQ,GAAYP,EAASN,EAAKC,IACpCI,EAAOQ,GAAYvI,EAAInW,OAAQ6d,EAAKC,IAC3CW,EAAUP,EAAOQ,GAAYvI,EAAInW,OAAQ6d,EAAKC,GAC9CK,EAAUhI,EAAInW,OAAS,IAEvBme,EAAUhI,EAAInW,OACdye,EAAUP,IAIVA,KAAMO,EACNze,KAAMme,GAId,QAASO,IAAY1e,EAAM6d,EAAKC,GAC5B,GAAIQ,GAAaV,GAAgB5d,EAAM6d,EAAKC,GACxCa,EAAiBf,GAAgB5d,EAAO,EAAG6d,EAAKC,EACpD,QAAQb,GAAWjd,GAAQse,EAAaK,GAAkB,EAiC9D,QAASC,IAAYzI,GACjB,MAAOqI,IAAWrI,EAAKpsH,KAAK80H,MAAMhB,IAAK9zH,KAAK80H,MAAMf,KAAKI,KAQ3D,QAASY,MACL,MAAO/0H,MAAK80H,MAAMhB,IAGtB,QAASkB,MACL,MAAOh1H,MAAK80H,MAAMf,IAKtB,QAASkB,IAAYvtF,GACjB,GAAIysF,GAAOn0H,KAAKkuG,aAAaimB,KAAKn0H,KAClC,OAAgB,OAAT0nC,EAAgBysF,EAAOn0H,KAAKgmE,IAAqB,GAAhBt+B,EAAQysF,GAAW,KAG/D,QAASe,IAAextF,GACpB,GAAIysF,GAAOM,GAAWz0H,KAAM,EAAG,GAAGm0H,IAClC,OAAgB,OAATzsF,EAAgBysF,EAAOn0H,KAAKgmE,IAAqB,GAAhBt+B,EAAQysF,GAAW,KAgE/D,QAASgB,IAAaztF,EAAOymE,GACzB,MAAqB,gBAAVzmE,GACAA,EAGN6hF,MAAM7hF,IAIXA,EAAQymE,EAAOinB,cAAc1tF,GACR,gBAAVA,GACAA,EAGJ,MARIhf,SAASgf,EAAO,IAW/B,QAAS2tF,IAAgB3tF,EAAOymE,GAC5B,MAAqB,gBAAVzmE,GACAymE,EAAOinB,cAAc1tF,GAAS,GAAK,EAEvC6hF,MAAM7hF,GAAS,KAAOA,EAIjC,QAASqxK,IAAeC,EAAIn0N,GACxB,MAAOm0N,GAAGnlN,MAAMhP,EAAG,GAAGguB,OAAOmmM,EAAGnlN,MAAM,EAAGhP,IAI7C,QAASywI,IAAgBnxI,EAAGmP,GACxB,GAAI6iI,GAAWplH,EAAQ/Q,KAAKu1H,WAAav1H,KAAKu1H,UAC1Cv1H,KAAKu1H,UAAWpxI,QAAKA,GAAc6b,KAAKu1H,UAAUvE,SAASprG,KAAKtyB,GAAW,SAAW,aAC1F,YAAQnP,EAAc40N,GAAc5iF,EAAUn2H,KAAK80H,MAAMhB,KACnD,EAAMqC,EAAShyI,EAAE6sH,OAASmlB,EAIpC,QAASX,IAAqBrxI,GAC1B,OAAM,IAAEA,EAAc40N,GAAc/4M,KAAKy1H,eAAgBz1H,KAAK80H,MAAMhB,KAC9D,EAAM9zH,KAAKy1H,eAAetxI,EAAE6sH,OAAShxG,KAAKy1H,eAIpD,QAASC,IAAmBvxI,GACxB,OAAM,IAAEA,EAAc40N,GAAc/4M,KAAK21H,aAAc31H,KAAK80H,MAAMhB,KAC5D,EAAM9zH,KAAK21H,aAAaxxI,EAAE6sH,OAAShxG,KAAK21H,aAGlD,QAASsjF,IAAoBpjF,EAAaviI,EAAQ40H,GAC9C,GAAI5mI,GAAGgwI,EAAIlF,EAAKmF,EAAMsE,EAAYrE,mBAClC,KAAKxxH,KAAK81H,eAKN,IAJA91H,KAAK81H,kBACL91H,KAAK+1H,uBACL/1H,KAAKg2H,qBAEA10I,EAAI,EAAGA,EAAI,IAAKA,EACjB8qI,EAAMisF,GAAW,IAAM,IAAIrnG,IAAI1vH,GAC/B0e,KAAKg2H,kBAAkB10I,GAAK0e,KAAKi2H,YAAY7J,EAAK,IAAIoF,oBACtDxxH,KAAK+1H,oBAAoBz0I,GAAK0e,KAAKk2H,cAAc9J,EAAK,IAAIoF,oBAC1DxxH,KAAK81H,eAAex0I,GAAK0e,KAAKm2H,SAAS/J,EAAK,IAAIoF,mBAIxD,OAAItJ,GACe,SAAX50H,GACAg+H,EAAK51H,GAAQla,KAAKwe,KAAK81H,eAAgBvE,IACxB,IAARD,EAAYA,EAAK,MACN,QAAXh+H,GACPg+H,EAAK51H,GAAQla,KAAKwe,KAAK+1H,oBAAqBxE,IAC7B,IAARD,EAAYA,EAAK,OAExBA,EAAK51H,GAAQla,KAAKwe,KAAKg2H,kBAAmBzE,IAC3B,IAARD,EAAYA,EAAK,MAGb,SAAXh+H,GAEY,KADZg+H,EAAK51H,GAAQla,KAAKwe,KAAK81H,eAAgBvE,IAE5BD,GAGC,KADZA,EAAK51H,GAAQla,KAAKwe,KAAK+1H,oBAAqBxE,IAEjCD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAKg2H,kBAAmBzE,IAC3B,IAARD,EAAYA,EAAK,MACN,QAAXh+H,GAEK,KADZg+H,EAAK51H,GAAQla,KAAKwe,KAAK+1H,oBAAqBxE,IAEjCD,GAGC,KADZA,EAAK51H,GAAQla,KAAKwe,KAAK81H,eAAgBvE,IAE5BD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAKg2H,kBAAmBzE,IAC3B,IAARD,EAAYA,EAAK,OAGZ,KADZA,EAAK51H,GAAQla,KAAKwe,KAAKg2H,kBAAmBzE,IAE/BD,GAGC,KADZA,EAAK51H,GAAQla,KAAKwe,KAAK81H,eAAgBvE,IAE5BD,GAEXA,EAAK51H,GAAQla,KAAKwe,KAAK+1H,oBAAqBxE,IAC7B,IAARD,EAAYA,EAAK,MAKpC,QAAS8E,IAAqBP,EAAaviI,EAAQ40H,GAC/C,GAAI5mI,GAAG8qI,EAAKzvE,CAEZ,IAAI38C,KAAKq2H,oBACL,MAAO4iF,IAAoBz3N,KAAKwe,KAAM61H,EAAaviI,EAAQ40H,EAU/D,KAPKloH,KAAK81H,iBACN91H,KAAK81H,kBACL91H,KAAKg2H,qBACLh2H,KAAK+1H,uBACL/1H,KAAKs2H,uBAGJh1I,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAcpB,GAXA8qI,EAAMisF,GAAW,IAAM,IAAIrnG,IAAI1vH,GAC3B4mI,IAAWloH,KAAKs2H,mBAAmBh1I,KACnC0e,KAAKs2H,mBAAmBh1I,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAKm2H,SAAS/J,EAAK,IAAIr/G,QAAQ,IAAK,QAAU,IAAK,KACjG/M,KAAK+1H,oBAAoBz0I,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAKk2H,cAAc9J,EAAK,IAAIr/G,QAAQ,IAAK,QAAU,IAAK,KACvG/M,KAAKg2H,kBAAkB10I,GAAK,GAAIs9C,QAAO,IAAM5+B,KAAKi2H,YAAY7J,EAAK,IAAIr/G,QAAQ,IAAK,QAAU,IAAK,MAElG/M,KAAK81H,eAAex0I,KACrBq7D,EAAQ,IAAM38C,KAAKm2H,SAAS/J,EAAK,IAAM,KAAOpsH,KAAKk2H,cAAc9J,EAAK,IAAM,KAAOpsH,KAAKi2H,YAAY7J,EAAK,IACzGpsH,KAAK81H,eAAex0I,GAAK,GAAIs9C,QAAO+d,EAAM5vC,QAAQ,IAAK,IAAK,MAG5Dm7G,GAAqB,SAAX50H,GAAqB0M,KAAKs2H,mBAAmBh1I,GAAGskC,KAAKiwG,GAC/D,MAAOv0I,EACJ,IAAI4mI,GAAqB,QAAX50H,GAAoB0M,KAAK+1H,oBAAoBz0I,GAAGskC,KAAKiwG,GACtE,MAAOv0I,EACJ,IAAI4mI,GAAqB,OAAX50H,GAAmB0M,KAAKg2H,kBAAkB10I,GAAGskC,KAAKiwG,GACnE,MAAOv0I,EACJ,KAAK4mI,GAAUloH,KAAK81H,eAAex0I,GAAGskC,KAAKiwG,GAC9C,MAAOv0I,IAOnB,QAASi1I,IAAiB7uF,GACtB,IAAK1nC,KAAKgnE,UACN,MAAgB,OAATt/B,EAAgB1nC,KAAOymE,GAElC,IAAIuqC,GAAMhxG,KAAKmqH,OAASnqH,KAAKm2D,GAAG89D,YAAcj0H,KAAKm2D,GAAGqgE,QACtD,OAAa,OAAT9uF,GACAA,EAAQytF,GAAaztF,EAAO1nC,KAAKkuG,cAC1BluG,KAAKgmE,IAAIt+B,EAAQspE,EAAK,MAEtBA,EAIf,QAASylB,IAAuB/uF,GAC5B,IAAK1nC,KAAKgnE,UACN,MAAgB,OAATt/B,EAAgB1nC,KAAOymE,GAElC,IAAIsvC,IAAW/1G,KAAKgxG,MAAQ,EAAIhxG,KAAKkuG,aAAa4mB,MAAMhB,KAAO,CAC/D,OAAgB,OAATpsF,EAAgBquE,EAAU/1G,KAAKgmE,IAAIt+B,EAAQquE,EAAS,KAG/D,QAAS2gB,IAAoBhvF,GACzB,IAAK1nC,KAAKgnE,UACN,MAAgB,OAATt/B,EAAgB1nC,KAAOymE,GAOlC,IAAa,MAAT/+B,EAAe,CACf,GAAIquE,GAAUsf,GAAgB3tF,EAAO1nC,KAAKkuG,aAC1C,OAAOluG,MAAKgxG,IAAIhxG,KAAKgxG,MAAQ,EAAI+E,EAAUA,EAAU,GAErD,MAAO/1G,MAAKgxG,OAAS,EAK7B,QAAS2lB,IAAe7G,GACpB,MAAI9vH,MAAKq2H,qBACAtO,EAAW/nH,KAAM,mBAClB42H,GAAqBp1I,KAAKwe,MAE1B8vH,EACO9vH,KAAK62H,qBAEL72H,KAAK82H,iBAGX/O,EAAW/nH,KAAM,oBAClBA,KAAK82H,eAAiBC,IAEnB/2H,KAAK62H,sBAAwB/G,EAChC9vH,KAAK62H,qBAAuB72H,KAAK82H,gBAK7C,QAASE,IAAoBlH,GACzB,MAAI9vH,MAAKq2H,qBACAtO,EAAW/nH,KAAM,mBAClB42H,GAAqBp1I,KAAKwe,MAE1B8vH,EACO9vH,KAAKi3H,0BAELj3H,KAAKk3H,sBAGXnP,EAAW/nH,KAAM,yBAClBA,KAAKk3H,oBAAsBC,IAExBn3H,KAAKi3H,2BAA6BnH,EACrC9vH,KAAKi3H,0BAA4Bj3H,KAAKk3H,qBAKlD,QAASE,IAAkBtH,GACvB,MAAI9vH,MAAKq2H,qBACAtO,EAAW/nH,KAAM,mBAClB42H,GAAqBp1I,KAAKwe,MAE1B8vH,EACO9vH,KAAKq3H,wBAELr3H,KAAKs3H,oBAGXvP,EAAW/nH,KAAM,uBAClBA,KAAKs3H,kBAAoBC,IAEtBv3H,KAAKq3H,yBAA2BvH,EACnC9vH,KAAKq3H,wBAA0Br3H,KAAKs3H,mBAKhD,QAASV,MACL,QAAS9D,GAAUnoH,EAAG5C,GAClB,MAAOA,GAAE/lB,OAAS2oB,EAAE3oB,OAGxB,GACIV,GAAG8qI,EAAKoL,EAAMC,EAAQC,EADtBC,KAAgB5E,KAAkBC,KAAiBC,IAEvD,KAAK3xI,EAAI,EAAGA,EAAI,EAAGA,IAEf8qI,EAAMisF,GAAW,IAAM,IAAIrnG,IAAI1vH,GAC/Bk2I,EAAOx3H,KAAKi2H,YAAY7J,EAAK,IAC7BqL,EAASz3H,KAAKk2H,cAAc9J,EAAK,IACjCsL,EAAQ13H,KAAKm2H,SAAS/J,EAAK,IAC3BuL,EAAUz1I,KAAKs1I,GACfzE,EAAY7wI,KAAKu1I,GACjBzE,EAAW9wI,KAAKw1I,GAChBzE,EAAY/wI,KAAKs1I,GACjBvE,EAAY/wI,KAAKu1I,GACjBxE,EAAY/wI,KAAKw1I,EAQrB,KAJAC,EAAU5tE,KAAK+oE,GACfC,EAAYhpE,KAAK+oE,GACjBE,EAAWjpE,KAAK+oE,GAChBG,EAAYlpE,KAAK+oE,GACZxxI,EAAI,EAAGA,EAAI,EAAGA,IACfyxI,EAAYzxI,GAAK2uI,EAAY8C,EAAYzxI,IACzC0xI,EAAW1xI,GAAK2uI,EAAY+C,EAAW1xI,IACvC2xI,EAAY3xI,GAAK2uI,EAAYgD,EAAY3xI,GAG7C0e,MAAK82H,eAAiB,GAAIl4F,QAAO,KAAOq0F,EAAYhhH,KAAK,KAAO,IAAK,KACrEjS,KAAKk3H,oBAAsBl3H,KAAK82H,eAChC92H,KAAKs3H,kBAAoBt3H,KAAK82H,eAE9B92H,KAAK62H,qBAAuB,GAAIj4F,QAAO,KAAOo0F,EAAW/gH,KAAK,KAAO,IAAK,KAC1EjS,KAAKi3H,0BAA4B,GAAIr4F,QAAO,KAAOm0F,EAAY9gH,KAAK,KAAO,IAAK,KAChFjS,KAAKq3H,wBAA0B,GAAIz4F,QAAO,KAAO+4F,EAAU1lH,KAAK,KAAO,IAAK,KAKhF,QAAS2lH,MACL,MAAO53H,MAAK63H,QAAU,IAAM,GAGhC,QAASC,MACL,MAAO93H,MAAK63H,SAAW,GAyB3B,QAAS7O,IAAUvyG,EAAOshH,GACtB/I,EAAev4G,EAAO,EAAG,EAAG,WACxB,MAAOzW,MAAKkuG,aAAa8a,SAAShpH,KAAK63H,QAAS73H,KAAKg4H,UAAWD,KAgBxE,QAASE,IAAenI,EAAU3hB,GAC9B,MAAOA,GAAO+pB,eA2DlB,QAASC,IAAYzwF,GAGjB,MAAiD,OAAxCA,EAAQ,IAAIrxB,cAAc+Q,OAAO,GAI9C,QAASgxG,IAAgBP,EAAOG,EAASK,GACrC,MAAIR,GAAQ,GACDQ,EAAU,KAAO,KAEjBA,EAAU,KAAO,KAsChC,QAASC,IAAgB7yI,GACrB,MAAOA,GAAMA,EAAI4wB,cAActJ,QAAQ,IAAK,KAAOtnB,EAMvD,QAAS8yI,IAAa/nG,GAGlB,IAFA,GAAWxO,GAAGngB,EAAMssG,EAAQzwG,EAAxBpc,EAAI,EAEDA,EAAIkvC,EAAMxuC,QAAQ,CAKrB,IAJA0b,EAAQ46H,GAAgB9nG,EAAMlvC,IAAIoc,MAAM,KACxCskB,EAAItkB,EAAM1b,OACV6f,EAAOy2H,GAAgB9nG,EAAMlvC,EAAI,IACjCugB,EAAOA,EAAOA,EAAKnE,MAAM,KAAO,KACzBskB,EAAI,GAAG,CAEV,GADAmsF,EAASqqB,GAAW96H,EAAM7J,MAAM,EAAGmuB,GAAG/P,KAAK,MAEvC,MAAOk8F,EAEX,IAAItsG,GAAQA,EAAK7f,QAAUggC,GAAKgpG,EAActtH,EAAOmE,OAAemgB,EAAI,EAEpE,KAEJA,KAEJ1gC,IAEJ,MAAOo3I,IAGX,QAASF,IAAWl0I,GAChB,GAAIm0I,GAAY,IAEhB,KAAKloB,GAAQjsH,aAAiBjD,GACtBA,GAAUA,EAAOD,QACrB,IACIq3I,EAAYC,GAAaC,OAEzB,iGACAugF,GAAmBzgF,GACrB,MAAOj2I,IAEb,MAAO+tH,IAAQjsH,GAMnB,QAAS40N,IAAoBzzN,EAAK+tB,GAC9B,GAAIszB,EAqBJ,OApBIrhD,KAEIqhD,EADA+iF,EAAYr2G,GACL2lM,GAAU1zN,GAGVqzI,GAAarzI,EAAK+tB,GAGzBszB,EAEA4xF,GAAe5xF,WAGH3hD,GAA6BA,EAAQyN,MAE7CzN,EAAQyN,KAAK,UAAYnN,EAAO,2CAKrCizI,GAAaC,MAGxB,QAASG,IAAcx0I,EAAMyU,GACzB,GAAe,OAAXA,EAAiB,CACjB,GAAIo1G,GAAQ6d,EAAe+M,EAE3B,IADAhgI,EAAOigI,KAAO10I,EACO,MAAjBisH,GAAQjsH,GACRonI,EAAgB,uBACR,2OAIRM,EAAezb,GAAQjsH,GAAMqzH,YAC1B,IAA2B,MAAvB5+G,EAAOkgI,aACd,GAAoC,MAAhC1oB,GAAQx3G,EAAOkgI,cACfjN,EAAezb,GAAQx3G,EAAOkgI,cAActhB,YACzC,CAEH,GAAc,OADdxJ,EAASqqB,GAAWz/H,EAAOkgI,eAWvB,MAPKmgF,IAAergN,EAAOkgI,gBACvBmgF,GAAergN,EAAOkgI,kBAE1BmgF,GAAergN,EAAOkgI,cAAc/2I,MAChCoC,KAAMA,EACNyU,OAAQA,IAEL,IATPizH,GAAe7d,EAAOwJ,QA2BlC,MAdApH,IAAQjsH,GAAQ,GAAI4nI,GAAOH,EAAaC,EAAcjzH,IAElDqgN,GAAe90N,IACf80N,GAAe90N,GAAMy7C,QAAQ,SAAUv5B,GACnCsyH,GAAatyH,EAAEliB,KAAMkiB,EAAEzN,UAO/BmgN,GAAmB50N,GAGZisH,GAAQjsH,GAIf,aADOisH,IAAQjsH,GACR,KAIf,QAAS40I,IAAa50I,EAAMyU,GACxB,GAAc,MAAVA,EAAgB,CAChB,GAAIo1G,GAAQkrG,EAAWrtF,EAAe+M,EAEtCsgF,GAAY7gF,GAAWl0I,GACN,MAAb+0N,IACArtF,EAAeqtF,EAAU1hG,SAE7B5+G,EAASgzH,EAAaC,EAAcjzH,GACpCo1G,EAAS,GAAI+d,GAAOnzH,GACpBo1G,EAAO8qB,aAAe1oB,GAAQjsH,GAC9BisH,GAAQjsH,GAAQ6pH,EAGhB+qG,GAAmB50N,OAGE,OAAjBisH,GAAQjsH,KAC0B,MAA9BisH,GAAQjsH,GAAM20I,aACd1oB,GAAQjsH,GAAQisH,GAAQjsH,GAAM20I,aACN,MAAjB1oB,GAAQjsH,UACRisH,IAAQjsH,GAI3B,OAAOisH,IAAQjsH,GAInB,QAAS60N,IAAW1zN,GAChB,GAAI0oH,EAMJ,IAJI1oH,GAAOA,EAAI4kI,SAAW5kI,EAAI4kI,QAAQsO,QAClClzI,EAAMA,EAAI4kI,QAAQsO,QAGjBlzI,EACD,MAAOizI,GAGX,KAAK3nH,EAAQtrB,GAAM,CAGf,GADA0oH,EAASqqB,GAAW/yI,GAEhB,MAAO0oH,EAEX1oH,IAAOA,GAGX,MAAO8yI,IAAa9yI,GAGxB,QAAS6zN,MACL,MAAOtuN,IAAKulH,IAGhB,QAAS6oB,IAAej1I,GACpB,GAAIqkI,GACA79G,EAAIxmB,EAAE6pH,EAyBV,OAvBIrjG,KAAsC,IAAjCs+G,EAAgB9kI,GAAGqkI,WACxBA,EACI79G,EAAE0uH,IAAe,GAAK1uH,EAAE0uH,IAAe,GAAMA,GAC7C1uH,EAAE2uH,IAAe,GAAK3uH,EAAE2uH,IAAe3I,GAAYhmH,EAAE4uH,IAAO5uH,EAAE0uH,KAAUC,GACxE3uH,EAAEgoG,IAAe,GAAKhoG,EAAEgoG,IAAe,IAAmB,KAAZhoG,EAAEgoG,MAA+B,IAAdhoG,EAAE+nG,KAA+B,IAAd/nG,EAAEooG,KAAoC,IAAnBpoG,EAAE6uH,KAAuB7mB,GAChIhoG,EAAE+nG,IAAe,GAAK/nG,EAAE+nG,IAAe,GAAMA,GAC7C/nG,EAAEooG,IAAe,GAAKpoG,EAAEooG,IAAe,GAAMA,GAC7CpoG,EAAE6uH,IAAe,GAAK7uH,EAAE6uH,IAAe,IAAMA,IAC5C,EAEDvQ,EAAgB9kI,GAAGs1I,qBAAuBjR,EAAW+Q,IAAQ/Q,EAAW8Q,MACxE9Q,EAAW8Q,IAEXrQ,EAAgB9kI,GAAGu1I,iBAAgC,IAAdlR,IACrCA,EAAWmR,IAEX1Q,EAAgB9kI,GAAGy1I,mBAAkC,IAAdpR,IACvCA,EAAWqR,IAGf5Q,EAAgB9kI,GAAGqkI,SAAWA,GAG3BrkI,EAIX,QAASu2I,IAAS/vH,EAAG5C,EAAG3jB,GACpB,MAAS,OAALumB,EACOA,EAEF,MAAL5C,EACOA,EAEJ3jB,EAGX,QAASu2I,IAAiB5hI,GAEtB,GAAI6hI,GAAW,GAAI1qF,MAAKk+H,EAAMp7K,MAC9B,OAAI+F,GAAO8hI,SACCD,EAASjH,iBAAkBiH,EAASE,cAAeF,EAAS/J,eAEhE+J,EAASpH,cAAeoH,EAASG,WAAYH,EAASI,WAOlE,QAASC,IAAiBliI,GACtB,GAAIzX,GAAG25E,EAAkBigE,EAAaq+E,EAAiBp+E,EAA1CzzF,IAEb,KAAI3uC,EAAOo9D,GAAX,CA6BA,IAzBA+kE,EAAcP,GAAiB5hI,GAG3BA,EAAO03H,IAAyB,MAAnB13H,EAAOi1G,GAAGsrB,KAAqC,MAApBvgI,EAAOi1G,GAAGqrB,KAClD+B,GAAsBriI,GAID,MAArBA,EAAOsiI,aACPF,EAAYT,GAAS3hI,EAAOi1G,GAAGurB,IAAO2B,EAAY3B,MAE9CxgI,EAAOsiI,WAAanI,GAAWiI,IAAoC,IAAtBpiI,EAAOsiI,cACpDpS,EAAgBlwH,GAAQ0gI,uBAG5Bx+D,EAAOy4D,GAAcyH,EAAW,EAAGpiI,EAAOsiI,YAC1CtiI,EAAOi1G,GAAGqrB,IAASp+D,EAAK6/D,cACxB/hI,EAAOi1G,GAAGsrB,IAAQr+D,EAAK41D,cAQtBvvI,EAAI,EAAGA,EAAI,GAAqB,MAAhByX,EAAOi1G,GAAG1sH,KAAcA,EACzCyX,EAAOi1G,GAAG1sH,GAAKomD,EAAMpmD,GAAK45I,EAAY55I,EAI1C,MAAOA,EAAI,EAAGA,IACVyX,EAAOi1G,GAAG1sH,GAAKomD,EAAMpmD,GAAsB,MAAhByX,EAAOi1G,GAAG1sH,GAAqB,IAANA,EAAU,EAAI,EAAKyX,EAAOi1G,GAAG1sH,EAI7D,MAApByX,EAAOi1G,GAAG2E,KACgB,IAAtB55G,EAAOi1G,GAAG0E,KACY,IAAtB35G,EAAOi1G,GAAG+E,KACiB,IAA3Bh6G,EAAOi1G,GAAGwrB,MACdzgI,EAAOuiI,YACPviI,EAAOi1G,GAAG2E,IAAQ,GAGtB55G,EAAOo9D,IAAMp9D,EAAO8hI,QAAUnH,GAAgBL,IAAY3gI,MAAM,KAAMg1C,GACtE6xK,EAAkBxgN,EAAO8hI,QAAU9hI,EAAOo9D,GAAG89D,YAAcl7H,EAAOo9D,GAAGqgE,SAIlD,MAAfz9H,EAAOmxH,MACPnxH,EAAOo9D,GAAGolE,cAAcxiI,EAAOo9D,GAAGqlE,gBAAkBziI,EAAOmxH,MAG3DnxH,EAAOuiI,WACPviI,EAAOi1G,GAAG2E,IAAQ,IAIlB55G,EAAO03H,aAAa13H,EAAO03H,GAAGpsI,GAAqB0U,EAAO03H,GAAGpsI,IAAMk1N,IACnEtwF,EAAgBlwH,GAAQw/M,qBAIhC,QAASn9E,IAAsBriI,GAC3B,GAAI0iI,GAAGC,EAAUvH,EAAMpe,EAAS+d,EAAKC,EAAK4H,EAAMC,CAGhD,IADAH,EAAI1iI,EAAO03H,GACC,MAARgL,EAAEI,IAAqB,MAAPJ,EAAEK,GAAoB,MAAPL,EAAE7gD,EACjCk5C,EAAM,EACNC,EAAM,EAMN2H,EAAWhB,GAASe,EAAEI,GAAI9iI,EAAOi1G,GAAGurB,IAAO9E,GAAW+kF,KAAe,EAAG,GAAGvjG,MAC3Eke,EAAOuG,GAASe,EAAEK,EAAG,KACrB/lB,EAAU2kB,GAASe,EAAE7gD,EAAG,IACV,GAAKm7B,EAAU,KACzB6lB,UAED,CACH9H,EAAM/6H,EAAOsxH,QAAQyK,MAAMhB,IAC3BC,EAAMh7H,EAAOsxH,QAAQyK,MAAMf,GAE3B,IAAI0lF,GAAUhlF,GAAW+kF,KAAe1lF,EAAKC,EAE7C2H,GAAWhB,GAASe,EAAEO,GAAIjjI,EAAOi1G,GAAGurB,IAAOkgF,EAAQxjG,MAGnDke,EAAOuG,GAASe,EAAEA,EAAGg+E,EAAQtlF,MAElB,MAAPsH,EAAEp3I,IAEF0xH,EAAU0lB,EAAEp3I,GACE,GAAK0xH,EAAU,KACzB6lB,MAEU,MAAPH,EAAEj5I,GAETuzH,EAAU0lB,EAAEj5I,EAAIsxI,GACZ2H,EAAEj5I,EAAI,GAAKi5I,EAAEj5I,EAAI,KACjBo5I,OAIJ7lB,EAAU+d,EAGdK,EAAO,GAAKA,EAAOQ,GAAY+G,EAAU5H,EAAKC,GAC9C9K,EAAgBlwH,GAAQ2gI,kBACE,MAAnBkC,EACP3S,EAAgBlwH,GAAQ6gI,qBAExB+B,EAAOzH,GAAmBwH,EAAUvH,EAAMpe,EAAS+d,EAAKC,GACxDh7H,EAAOi1G,GAAGurB,IAAQoC,EAAK1lB,KACvBl9G,EAAOsiI,WAAaM,EAAKnH,WA0CjC,QAASsF,IAAc/gI,GACnB,GAAIzX,GAAGC,EAGHw4I,EAAWtkI,EAAYsxE,EAAYizD,EAFnCrhE,EAAS5/D,EAAOu9D,GAChBhsD,EAAQ2vH,GAAiB1mC,KAAK56B,IAAWuhE,GAAc3mC,KAAK56B,EAGhE,IAAIruD,EAAO,CAGP,IAFA2+G,EAAgBlwH,GAAQ+vH,OAEnBxnI,EAAI,EAAGC,EAAI44I,GAASn4I,OAAQV,EAAIC,EAAGD,IACpC,GAAI64I,GAAS74I,GAAG,GAAGiyG,KAAKjpF,EAAM,IAAK,CAC/B7U,EAAa0kI,GAAS74I,GAAG,GACzBy4I,OAAYI,GAAS74I,GAAG,EACxB,OAGR,GAAkB,MAAdmU,EAEA,YADAsD,EAAOqwH,YAGX,IAAI9+G,EAAM,GAAI,CACV,IAAKhpB,EAAI,EAAGC,EAAI64I,GAASp4I,OAAQV,EAAIC,EAAGD,IACpC,GAAI84I,GAAS94I,GAAG,GAAGiyG,KAAKjpF,EAAM,IAAK,CAE/By8D,GAAcz8D,EAAM,IAAM,KAAO8vH,GAAS94I,GAAG,EAC7C,OAGR,GAAkB,MAAdylF,EAEA,YADAhuE,EAAOqwH,aAIf,IAAK2Q,GAA2B,MAAdhzD,EAEd,YADAhuE,EAAOqwH,YAGX,IAAI9+G,EAAM,GAAI,CACV,IAAI+vH,GAAQ9mC,KAAKjpF,EAAM,IAInB,YADAvR,EAAOqwH,YAFP4Q,GAAW,IAMnBjhI,EAAOixH,GAAKv0H,GAAcsxE,GAAc,KAAOizD,GAAY,IAC3DM,GAA0BvhI,OAE1BA,GAAOqwH,YAOf,QAASswF,IAA0BC,EAASC,EAAUC,EAAQC,EAASC,EAAWC,GAC9E,GAAIvvM,IACAwvM,GAAeN,GACf1vE,GAAyBvuI,QAAQk+M,GACjClxL,SAASmxL,EAAQ,IACjBnxL,SAASoxL,EAAS,IAClBpxL,SAASqxL,EAAW,IAOxB,OAJIC,IACAvvM,EAAOvoB,KAAKwmC,SAASsxL,EAAW,KAG7BvvM,EAGX,QAASwvM,IAAeN,GACpB,GAAI1jG,GAAOvtF,SAASixL,EAAS,GAC7B,OAAI1jG,IAAQ,GACD,IAAOA,EACPA,GAAQ,IACR,KAAOA,EAEXA,EAGX,QAASikG,IAAkB70N,GAEvB,MAAOA,GAAE0nB,QAAQ,oBAAqB,KAAKA,QAAQ,WAAY,KAAKA,QAAQ,SAAU,IAAIA,QAAQ,SAAU,IAGhH,QAASotM,IAAaC,EAAYl+E,EAAanjI,GAC3C,OAAIqhN,GAEsB9vE,GAA2B5uI,QAAQ0+M,KACrC,GAAIlqK,MAAKgsF,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAAI1F,WAEzEvN,EAAgBlwH,GAAQw/M,mBACxBx/M,EAAOqwH,aAAW,GAoB9B,QAASixF,IAAgBC,EAAWC,EAAgBC,GAChD,GAAIF,EACA,MAAOG,IAAWH,EACf,IAAIC,EAEP,MAAO,EAEP,IAAIG,GAAKhyL,SAAS8xL,EAAW,IACzBr2N,EAAIu2N,EAAK,GACb,QADuBA,EAAKv2N,GAAK,IACtB,GAAKA,EAKxB,QAASw2N,IAAkB5hN,GACvB,GAAIuR,GAAQguM,GAAQ/kH,KAAK2mH,GAAkBnhN,EAAOu9D,IAClD,IAAIhsD,EAAO,CACP,GAAIswM,GAAclB,GAA0BpvM,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GACpG,KAAK6vM,GAAa7vM,EAAM,GAAIswM,EAAa7hN,GACrC,MAGJA,GAAOi1G,GAAK4sG,EACZ7hN,EAAOmxH,KAAOmwF,GAAgB/vM,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExDvR,EAAOo9D,GAAKu9D,GAAchhI,MAAM,KAAMqG,EAAOi1G,IAC7Cj1G,EAAOo9D,GAAGolE,cAAcxiI,EAAOo9D,GAAGqlE,gBAAkBziI,EAAOmxH,MAE3DjB,EAAgBlwH,GAAQu/M,eAExBv/M,GAAOqwH,YAKf,QAASmR,IAAiBxhI,GACtB,GAAIm3H,GAAUsK,GAAgBjnC,KAAKx6F,EAAOu9D,GAE1C,IAAgB,OAAZ45D,EAEA,YADAn3H,EAAOo9D,GAAK,GAAIjmB,OAAMggF,EAAQ,IAIlC4J,IAAc/gI,QACVA,EAAOqwH,iBACArwH,GAAOqwH,SAKlBuxF,GAAkB5hN,QACdA,EAAOqwH,iBACArwH,GAAOqwH,SAMlBglD,EAAM3zC,wBAAwB1hI,KAoBlC,QAASuhI,IAA0BvhI,GAE/B,GAAIA,EAAOixH,KAAOokD,EAAMnyC,SAEpB,WADAnC,IAAc/gI,EAGlB,IAAIA,EAAOixH,KAAOokD,EAAMysC,SAEpB,WADAF,IAAkB5hN,EAGtBA,GAAOi1G,MACPib,EAAgBlwH,GAAQsvH,QAGxB,IACI/mI,GAAG46I,EAAa36B,EAAQ9qF,EAAO0lH,EAD/BxjE,EAAS,GAAK5/D,EAAOu9D,GAErB8lE,EAAezjE,EAAO32E,OACtBq6I,EAAyB,CAI7B,KAFA96B,EAASguB,EAAax2H,EAAOixH,GAAIjxH,EAAOsxH,SAAS//G,MAAM+kH,QAElD/tI,EAAI,EAAGA,EAAIigH,EAAOv/G,OAAQV,IAC3Bm1B,EAAQ8qF,EAAOjgH,GACf46I,GAAevjE,EAAOruD,MAAMylH,EAAsBt5G,EAAO1d,SAAgB,GAGrEmjI,IACAC,EAAUxjE,EAAOzwC,OAAO,EAAGywC,EAAOj9D,QAAQwgI,IACtCC,EAAQn6I,OAAS,GACjBinI,EAAgBlwH,GAAQwvH,YAAYrmI,KAAKi6I,GAE7CxjE,EAASA,EAAO9kE,MAAM8kE,EAAOj9D,QAAQwgI,GAAeA,EAAYl6I,QAChEq6I,GAA0BH,EAAYl6I,QAGtCktI,GAAqBz4G,IACjBylH,EACAjT,EAAgBlwH,GAAQsvH,SAGxBY,EAAgBlwH,GAAQuvH,aAAapmI,KAAKu0B,GAE9Ci6G,EAAwBj6G,EAAOylH,EAAanjI,IAEvCA,EAAO0wH,UAAYyS,GACxBjT,EAAgBlwH,GAAQuvH,aAAapmI,KAAKu0B,EAKlDwyG,GAAgBlwH,GAAQ0vH,cAAgB2T,EAAeC,EACnD1jE,EAAO32E,OAAS,GAChBinI,EAAgBlwH,GAAQwvH,YAAYrmI,KAAKy2E,GAIzC5/D,EAAOi1G,GAAG2E,KAAS,SACnBsW,EAAgBlwH,GAAQ2wH,SACxB3wH,EAAOi1G,GAAG2E,IAAQ,IAClBsW,EAAgBlwH,GAAQ2wH,gBAG5BT,EAAgBlwH,GAAQgwH,gBAAkBhwH,EAAOi1G,GAAGn6G,MAAM,GAC1Do1H,EAAgBlwH,GAAQiwH,SAAWjwH,EAAOujI,UAE1CvjI,EAAOi1G,GAAG2E,IAAQ4pB,GAAgBxjI,EAAOsxH,QAAStxH,EAAOi1G,GAAG2E,IAAO55G,EAAOujI,WAE1ErB,GAAgBliI,GAChBqgI,GAAcrgI,GAIlB,QAASwjI,IAAiBpuB,EAAQhnC,EAAM6hD,GACpC,GAAIwT,EAEJ,OAAgB,OAAZxT,EAEO7hD,EAEgB,MAAvBgnC,EAAOsuB,aACAtuB,EAAOsuB,aAAat1D,EAAM6hD,GACX,MAAf7a,EAAOuuB,MAEdF,EAAOruB,EAAOuuB,KAAK1T,GACfwT,GAAQr1D,EAAO,KACfA,GAAQ,IAEPq1D,GAAiB,KAATr1D,IACTA,EAAO,GAEJA,GAGAA,EAKf,QAASw1D,IAAyB5jI,GAC9B,GAAI6jI,GACAC,EAEAC,EACAx7I,EACAy7I,CAEJ,IAAyB,IAArBhkI,EAAOixH,GAAGhoI,OAGV,MAFAinI,GAAgBlwH,GAAQ6vH,sBACxB7vH,EAAOo9D,GAAK,GAAIjmB,MAAKu2B,KAIzB,KAAKnlF,EAAI,EAAGA,EAAIyX,EAAOixH,GAAGhoI,OAAQV,IAC9By7I,EAAe,EACfH,EAAa9S,KAAe/wH,GACN,MAAlBA,EAAO8hI,UACP+B,EAAW/B,QAAU9hI,EAAO8hI,SAEhC+B,EAAW5S,GAAKjxH,EAAOixH,GAAG1oI,GAC1Bg5I,GAA0BsC,GAErB51D,EAAQ41D,KAKbG,GAAgB9T,EAAgB2T,GAAYnU,cAG5CsU,GAAkE,GAAlD9T,EAAgB2T,GAAYtU,aAAatmI,OAEzDinI,EAAgB2T,GAAY3iE,MAAQ8iE,GAEjB,MAAfD,GAAuBC,EAAeD,KACtCA,EAAcC,EACdF,EAAaD,GAIrB5U,GAAOjvH,EAAQ8jI,GAAcD,GAGjC,QAASI,IAAiBjkI,GACtB,IAAIA,EAAOo9D,GAAX,CAIA,GAAI70E,GAAIosI,EAAqB30H,EAAOu9D,GACpCv9D,GAAOi1G,GAAKh8F,GAAK1wB,EAAE20H,KAAM30H,EAAE2vH,MAAO3vH,EAAE0vH,KAAO1vH,EAAE25E,KAAM35E,EAAE6lF,KAAM7lF,EAAEyvH,OAAQzvH,EAAEwvH,OAAQxvH,EAAE27I,aAAc,SAAUz3I,GACrG,MAAOA,IAAOkjC,SAASljC,EAAK,MAGhCy1I,GAAgBliI,IAGpB,QAASmkI,IAAkBnkI,GACvB,GAAI+uH,GAAM,GAAIyC,GAAO6O,GAAc+D,GAAcpkI,IAOjD,OANI+uH,GAAIwT,WAEJxT,EAAI9hD,IAAI,EAAG,KACX8hD,EAAIwT,iBAGDxT,EAGX,QAASqV,IAAepkI,GACpB,GAAI2uC,GAAQ3uC,EAAOu9D,GACfhjE,EAASyF,EAAOixH,EAIpB,OAFAjxH,GAAOsxH,QAAUtxH,EAAOsxH,SAAW8uF,GAAUpgN,EAAOkxH,IAEtC,OAAVviF,YAAmBp0C,GAAkC,KAAVo0C,EACpC8wK,GAAe9vF,WAAUA,KAGf,gBAAVhhF,KACP3uC,EAAOu9D,GAAK5uB,EAAQ3uC,EAAOsxH,QAAQ+S,SAAS11F,IAG5CgjF,EAAShjF,GACF,GAAI6iF,GAAO6O,GAAc1xF,KACzBmgF,EAAOngF,GACd3uC,EAAOo9D,GAAKzuB,EACL32B,EAAQzd,GACfqpI,GAAyB5jI,GAClBzF,EACPgnI,GAA0BvhI,GAE1BskI,GAAgBtkI,GAGfiuE,EAAQjuE,KACTA,EAAOo9D,GAAK,MAGTp9D,IAGX,QAASskI,IAAgBtkI,GACrB,GAAI2uC,GAAQ3uC,EAAOu9D,EACfuzD,GAAYniF,GACZ3uC,EAAOo9D,GAAK,GAAIjmB,MAAKk+H,EAAMp7K,OACpB60H,EAAOngF,GACd3uC,EAAOo9D,GAAK,GAAIjmB,MAAKxI,EAAM8+B,WACH,gBAAV9+B,GACd6yF,GAAiBxhI,GACVgY,EAAQ22B,IACf3uC,EAAOi1G,GAAKh8F,EAAI01B,EAAM7zC,MAAM,GAAI,SAAUrO,GACtC,MAAOkjC,UAASljC,EAAK,MAEzBy1I,GAAgBliI,IACT+oB,EAAS4lB,GAChBs1F,GAAiBjkI,GACV2jK,EAASh1H,GAEhB3uC,EAAOo9D,GAAK,GAAIjmB,MAAKxI,GAErB0mI,EAAM3zC,wBAAwB1hI,GAItC,QAASovH,IAAkBzgF,EAAOp0C,EAAQ66G,EAAQ+Z,EAAQoV,GACtD,GAAIl5I,KAoBJ,YAlBI+pH,QAAmBA,IACnB+Z,EAAS/Z,EACTA,WAGCrsF,EAAS4lB,IAAUkgF,EAAclgF,IAC7B32B,EAAQ22B,IAA2B,IAAjBA,EAAM1lD,UAC7B0lD,UAIJtjD,EAAE2lI,oBACF3lI,EAAEy2I,QAAUz2I,EAAE+lI,OAASmT,EACvBl5I,EAAE6lI,GAAK9b,EACP/pH,EAAEkyE,GAAK5uB,EACPtjD,EAAE4lI,GAAK12H,EACPlP,EAAEqlI,QAAUvB,EAELgV,GAAiB94I,GAG5B,QAASo1N,IAAa9xK,EAAOp0C,EAAQ66G,EAAQ+Z,GACzC,MAAOC,IAAiBzgF,EAAOp0C,EAAQ66G,EAAQ+Z,MAgCnD,QAASqV,IAAOvjH,EAAIwjH,GAChB,GAAI1V,GAAKxmI,CAIT,IAHuB,IAAnBk8I,EAAQx7I,QAAgB+uB,EAAQysH,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQx7I,OACT,MAAOw3N,KAGX,KADA1xF,EAAM0V,EAAQ,GACTl8I,EAAI,EAAGA,EAAIk8I,EAAQx7I,SAAUV,EACzBk8I,EAAQl8I,GAAG0lF,YAAaw2D,EAAQl8I,GAAG04B,GAAI8tG,KACxCA,EAAM0V,EAAQl8I,GAGtB,OAAOwmI,GAIX,QAASxgD,MAGL,MAAOi2D,IAAO,cAFA1pI,MAAMrS,KAAKmR,UAAW,IAKxC,QAAS4rB,MAGL,MAAOg/G,IAAO,aAFA1pI,MAAMrS,KAAKmR,UAAW,IAWxC,QAASmoN,IAAgB32N,GACrB,IAAK,GAAIsB,KAAOtB,GACZ,IAAuC,IAAjCuX,GAAQla,KAAKu5N,GAAUt1N,IAA0B,MAAVtB,EAAEsB,IAAiB8jI,MAAMplI,EAAEsB,IACpE,OAAM,CAKd,KAAK,GADDu1N,MACK15N,EAAI,EAAGA,EAAIy5N,GAAS/4N,SAAUV,EACnC,GAAI6C,EAAE42N,GAASz5N,IAAK,CAChB,GAAI05N,EACA,OAAM,CAENl6E,YAAW38I,EAAE42N,GAASz5N,OAASupI,EAAM1mI,EAAE42N,GAASz5N,OAChD05N,MAKZ,OAAM,EAGV,QAASC,MACL,MAAOj7M,MAAKopH,SAGhB,QAAS8xF,MACL,MAAOC,IAAe10I,KAG1B,QAASg3D,IAAUvqI,GACf,GAAI26H,GAAkBH,EAAqBx6H,GACvCwqI,EAAQ7P,EAAgB5X,MAAQ,EAChC0nB,EAAW9P,EAAgB+P,SAAW,EACtC/L,EAAShE,EAAgB5c,OAAS,EAClC4sB,EAAQhQ,EAAgBsG,MAAQtG,EAAgBkW,SAAW,EAC3DjG,EAAOjQ,EAAgB7c,KAAO,EAC9B6mB,EAAQhK,EAAgB1mD,MAAQ,EAChC6wD,EAAUnK,EAAgB9c,QAAU,EACpCgtB,EAAUlQ,EAAgB/c,QAAU,EACpCktB,EAAenQ,EAAgBoP,aAAe,CAElDj9H,MAAKopH,SAAW0xF,GAAgBjtF,GAGhC7tH,KAAKi+H,eAAiBD,EACR,IAAVD,EACU,IAAV/F,EACQ,IAARH,EAAe,GAAK,GAGxB73H,KAAKk+H,OAASJ,EACF,EAARD,EAIJ79H,KAAK+wH,SAAWc,EACD,EAAX8L,EACQ,GAARD,EAEJ19H,KAAK+mC,SAEL/mC,KAAKqqH,QAAU8uF,KAEfn5M,KAAKm+H,UAGT,QAASC,IAAY54I,GACjB,MAAOA,aAAei4I,IAG1B,QAASY,IAAUzlE,GACf,MAAIA,GAAS,GACyB,EAA3Bt6C,KAAKggH,OAAO,EAAI1lE,GAEhBt6C,KAAKggH,MAAM1lE,GAM1B,QAAS2lE,IAAQ9nH,EAAO+nH,GACpBxP,EAAev4G,EAAO,EAAG,EAAG,WACxB,GAAI8nH,GAASv+H,KAAKknE,YACdu3D,EAAO,GAKX,OAJIF,GAAS,IACTA,GAAUA,EACVE,EAAO,KAEJA,EAAO/P,KAAY6P,EAAS,IAAK,GAAKC,EAAY9P,IAAW,EAAW,GAAI,KAuB3F,QAASgQ,IAAiBl9B,EAAS7oC,GAC/B,GAAIpwC,IAAWowC,GAAU,IAAIruD,MAAMk3F,EAEnC,IAAgB,OAAZj5E,EACA,MAAO,KAGX,IAAIxlC,GAAUwlC,EAAQA,EAAQvmC,OAAS,OACnC28I,GAAW57I,EAAQ,IAAIunB,MAAMs0H,MAAiB,IAAK,EAAG,GACtD5G,EAAuB,GAAX2G,EAAM,GAAW9T,EAAM8T,EAAM,GAE7C,OAAmB,KAAZ3G,EACL,EACa,MAAb2G,EAAM,GAAa3G,GAAWA,EAIpC,QAAS6G,IAAgBn3F,EAAOo3F,GAC5B,GAAIhX,GAAKqF,CACT,OAAI2R,GAAM3U,QACNrC,EAAMgX,EAAM/4D,QACZonD,GAAQzC,EAAShjF,IAAUmgF,EAAOngF,GAASA,EAAM8+B,UAAYgzI,GAAY9xK,GAAO8+B,WAAashD,EAAIthD,UAEjGshD,EAAI3xD,GAAG4oE,QAAQjX,EAAI3xD,GAAGqQ,UAAY2mD,GAClCihD,EAAM3jD,aAAa3C,MACZA,GAEA0xF,GAAY9xK,GAAOs3F,QAIlC,QAASC,IAAe96I,GAGpB,MAAoD,KAA5Cm6B,KAAKggH,MAAMn6I,EAAEgyE,GAAG+oE,oBAAsB,IAqBlD,QAASC,IAAcz3F,EAAO03F,EAAeg8E,GACzC,GACI/7E,GADAd,EAASv+H,KAAKoqH,SAAW,CAE7B,KAAKpqH,KAAKgnE,UACN,MAAgB,OAATt/B,EAAgB1nC,KAAOymE,GAElC,IAAa,MAAT/+B,EAAe,CACf,GAAqB,gBAAVA,IAEP,GAAc,QADdA,EAAQg3F,GAAiBY,GAAkB53F,IAEvC,MAAO1nC,UAEJse,MAAK8oD,IAAI1/B,GAAS,KAAO0zK,IAChC1zK,GAAgB,GAmBpB,QAjBK1nC,KAAKmqH,QAAUiV,IAChBC,EAAcJ,GAAcj/H,OAEhCA,KAAKoqH,QAAU1iF,EACf1nC,KAAKmqH,UACc,MAAfkV,GACAr/H,KAAKgmE,IAAIq5D,EAAa,KAEtBd,IAAW72F,KACN03F,GAAiBp/H,KAAKu/H,kBACvB87E,GAAYr7M,KAAMm7M,GAAezzK,EAAQ62F,EAAQ,KAAM,GAAE,GACjDv+H,KAAKu/H,oBACbv/H,KAAKu/H,qBACL6uC,EAAM3jD,aAAazqH,MAAKA,GACxBA,KAAKu/H,kBAAoB,OAG1Bv/H,KAEP,MAAOA,MAAKmqH,OAASoU,EAASU,GAAcj/H,MAIpD,QAAS0/H,IAAYh4F,EAAO03F,GACxB,MAAa,OAAT13F,GACqB,gBAAVA,KACPA,GAASA,GAGb1nC,KAAKknE,UAAUx/B,EAAO03F,GAEfp/H,OAECA,KAAKknE,YAIrB,QAASy4D,IAAgBP,GACrB,MAAOp/H,MAAKknE,UAAU,EAAGk4D,GAG7B,QAASQ,IAAkBR,GASvB,MARIp/H,MAAKmqH,SACLnqH,KAAKknE,UAAU,EAAGk4D,GAClBp/H,KAAKmqH,UAEDiV,GACAp/H,KAAK6/H,SAASZ,GAAcj/H,MAAO,MAGpCA,KAGX,QAAS8/H,MACL,GAAiB,MAAb9/H,KAAKkqH,KACLlqH,KAAKknE,UAAUlnE,KAAKkqH,MAAKA,GAAC,OACvB,IAAuB,gBAAZlqH,MAAKs2D,GAAiB,CACpC,GAAIypE,GAAQrB,GAAiBsB,GAAahgI,KAAKs2D,GAClC,OAATypE,EACA//H,KAAKknE,UAAU64D,GAGf//H,KAAKknE,UAAU,GAAE,GAGzB,MAAOlnE,MAGX,QAASigI,IAAsBv4F,GAC3B,QAAK1nC,KAAKgnE,YAGVt/B,EAAQA,EAAQ8xK,GAAY9xK,GAAOw/B,YAAc,GAEzClnE,KAAKknE,YAAcx/B,GAAS,IAAO,GAG/C,QAASw4F,MACL,MACIlgI,MAAKknE,YAAclnE,KAAK+lE,QAAQkrC,MAAM,GAAG/pC,aACzClnE,KAAKknE,YAAclnE,KAAK+lE,QAAQkrC,MAAM,GAAG/pC,YAIjD,QAASi5D,MACL,IAAKtW,EAAY7pH,KAAKogI,eAClB,MAAOpgI,MAAKogI,aAGhB,IAAIh8I,KAKJ,IAHA0lI,EAAW1lI,EAAG4b,MACd5b,EAAI+4I,GAAc/4I,GAEdA,EAAE4pH,GAAI,CACN,GAAIgL,GAAQ50H,EAAE+lI,OAASkuF,EAAUj0N,EAAE4pH,IAAMwrG,GAAYp1N,EAAE4pH,GACvDhuG,MAAKogI,cAAgBpgI,KAAKgnE,WACtBgkD,EAAc5mI,EAAE4pH,GAAIgL,EAAM5hB,WAAa,MAE3Cp3F,MAAKogI,gBAGT,OAAOpgI,MAAKogI,cAGhB,QAASC,MACL,QAAOrgI,KAAKgnE,YAAahnE,KAAKmqH,OAGlC,QAASmW,MACL,QAAOtgI,KAAKgnE,WAAYhnE,KAAKmqH,OAGjC,QAASoW,MACL,QAAOvgI,KAAKgnE,WAAYhnE,KAAKmqH,QAA2B,IAAjBnqH,KAAKoqH,QAWhD,QAAS+wF,IAAgBzzK,EAAOjiD,GAC5B,GAGIg5I,GACA7lH,EACA4nH,EALAttI,EAAWw0C,EAEXp9B,EAAQ,IAuDZ,OAlDI8zH,IAAW12F,GACXx0C,GACI8yC,GAAK0B,EAAMu2F,cACX55I,EAAKqjD,EAAMw2F,MACX3K,EAAK7rF,EAAMqpF,SAER2rC,EAASh1H,IAChBx0C,KACIzN,EACAyN,EAASzN,GAAOiiD,EAEhBx0C,EAAS8qI,aAAet2F,IAElBp9B,EAAQm2H,GAAYltC,KAAK7rD,KACnC+2F,EAAqB,MAAbn0H,EAAM,IAAe,EAAI,EACjCpX,GACIuT,EAAK,EACLpiB,EAAKwmI,EAAMvgH,EAAMgvH,KAAiCmF,EAClDnL,EAAKzI,EAAMvgH,EAAMqoG,KAAiC8rB,EAClDt6I,EAAK0mI,EAAMvgH,EAAMooG,KAAiC+rB,EAClDp5I,EAAKwlI,EAAMvgH,EAAMyoG,KAAiC0rB,EAClDz4F,GAAK6kF,EAAMwT,GAA8B,IAArB/zH,EAAMkvH,MAAwBiF,KAE5Cn0H,EAAQo2H,GAASntC,KAAK7rD,KAChC+2F,EAAqB,MAAbn0H,EAAM,IAAe,EAAI,EACjCpX,GACIuT,EAAIk6H,GAASr2H,EAAM,GAAIm0H,GACvBlL,EAAIoN,GAASr2H,EAAM,GAAIm0H,GACvBhD,EAAIkF,GAASr2H,EAAM,GAAIm0H,GACvBp6I,EAAIs8I,GAASr2H,EAAM,GAAIm0H,GACvBnL,EAAIqN,GAASr2H,EAAM,GAAIm0H,GACvBt6I,EAAIw8I,GAASr2H,EAAM,GAAIm0H,GACvBp5I,EAAIs7I,GAASr2H,EAAM,GAAIm0H,KAER,MAAZvrI,EACPA,KAC2B,gBAAbA,KAA0B,QAAUA,IAAY,MAAQA,MACtEstI,EAAUI,GAAkB44E,GAAYtmN,EAAS+d,MAAOuoM,GAAYtmN,EAASi2C,KAE7Ej2C,KACAA,EAAS8yC,GAAKw6F,EAAQxC,aACtB9qI,EAASqgI,EAAIiN,EAAQ3O,QAGzBj5G,EAAM,GAAI6kH,IAASvqI,GAEfkrI,GAAW12F,IAAUqgF,EAAWrgF,EAAO,aACvC9uB,EAAIyxG,QAAU3iF,EAAM2iF,SAGjBzxG,EAMX,QAAS+nH,IAAUE,EAAKpC,GAIpB,GAAI3W,GAAM+Y,GAAOC,WAAWD,EAAI9zH,QAAQ,IAAK,KAE7C,QAAQw8G,MAAMzB,GAAO,EAAIA,GAAO2W,EAGpC,QAASsC,IAA0BxlG,EAAMy9E,GACrC,GAAI8O,KAUJ,OARAA,GAAI+J,OAAS7Y,EAAM/H,QAAU11E,EAAK01E,QACC,IAA9B+H,EAAM/C,OAAS16E,EAAK06E,QACrB16E,EAAKwqC,QAAQC,IAAI8hD,EAAI+J,OAAQ,KAAKzrD,QAAQ4yC,MACxC8O,EAAI+J,OAGV/J,EAAIkW,cAAgBhlB,GAAUz9E,EAAKwqC,QAAQC,IAAI8hD,EAAI+J,OAAQ,KAEpD/J,EAGX,QAAS8Y,IAAkBrlG,EAAMy9E,GAC7B,GAAI8O,EACJ,OAAMvsF,GAAKyrC,WAAagyC,EAAMhyC,WAI9BgyC,EAAQ6lB,GAAgB7lB,EAAOz9E,GAC3BA,EAAK8qC,SAAS2yC,GACd8O,EAAMiZ,GAA0BxlG,EAAMy9E,IAEtC8O,EAAMiZ,GAA0B/nB,EAAOz9E,GACvCusF,EAAIkW,cAAgBlW,EAAIkW,aACxBlW,EAAI+J,QAAU/J,EAAI+J,QAGf/J,IAZKkW,aAAc,EAAGnM,OAAQ,GAgBzC,QAASmP,IAAYC,EAAW38I,GAC5B,MAAO,UAAUqzC,EAAKupG,GAClB,GAAIC,GAAK1jI,CAWT,OATe,QAAXyjI,GAAoB3X,OAAO2X,KAC3BxV,EAAgBpnI,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,kGAE5GmZ,EAAMk6B,EAAKA,EAAMupG,EAAQA,EAASzjI,GAGtCk6B,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCwpG,EAAMg6E,GAAexjL,EAAKupG,GAC1Bm6E,GAAYr7M,KAAMmhI,EAAKF,GAChBjhI,MAIf,QAASq7M,IAAajvF,EAAKl5H,EAAUkuI,EAAU3W,GAC3C,GAAIuT,GAAe9qI,EAAS+qI,cACxBH,EAAOO,GAASnrI,EAASgrI,OACzBrM,EAASwM,GAASnrI,EAAS69H,QAE1B3E,GAAIplD,YAKTyjD,EAA+B,MAAhBA,GAA8BA,EAEzCoH,GACAG,GAAS5F,EAAKxnI,GAAIwnI,EAAK,SAAWyF,EAASuP,GAE3CtD,GACA66E,GAAMvsF,EAAK,OAAQxnI,GAAIwnI,EAAK,QAAU0R,EAAOsD,GAE7CpD,GACA5R,EAAIj2D,GAAG4oE,QAAQ3S,EAAIj2D,GAAGqQ,UAAYw3D,EAAeoD,GAEjD3W,GACA2jD,EAAM3jD,aAAa2B,EAAK0R,GAAQjM,IAOxC,QAASwP,IAAkBC,EAAUtuI,GACjC,GAAIm6H,GAAOmU,EAASnU,KAAKn6H,EAAK,UAC9B,OAAOm6H,IAAQ,EAAI,WACXA,GAAQ,EAAI,WACZA,EAAO,EAAI,UACXA,EAAO,EAAI,UACXA,EAAO,EAAI,UACXA,EAAO,EAAI,WAAa,WAGpC,QAASmuF,IAAYzoN,EAAMs+G,GAGvB,GAAIn+G,GAAMH,GAAQ2mN,KACdh4E,EAAM3C,GAAgB7rI,EAAKgN,MAAMyhI,QAAQ,OACzCnuI,EAAS86K,EAAM1sC,eAAe1hI,KAAMwhI,IAAQ,WAE5CnV,EAASlb,IAAYn2B,EAAWm2B,EAAQ79G,IAAW69G,EAAQ79G,GAAQ9R,KAAKwe,KAAMhN,GAAOm+G,EAAQ79G,GAEjG,OAAO0M,MAAK1M,OAAO+4H,GAAUrsH,KAAKkuG,aAAayzB,SAASruI,EAAQ0M,KAAMw5M,GAAYxmN,KAGtF,QAAS+yE,MACL,MAAO,IAAIwkD,GAAOvqH,MAGtB,QAASomE,IAAS1+B,EAAOorE,GACrB,GAAI8uB,GAAalX,EAAShjF,GAASA,EAAQ8xK,GAAY9xK,EACvD,UAAM1nC,KAAKgnE,YAAa46D,EAAW56D,aAGnC8rC,EAAQ2a,EAAe3a,IAAU,cACnB,gBAAVA,EACO9yG,KAAKwmE,UAAYo7D,EAAWp7D,UAE5Bo7D,EAAWp7D,UAAYxmE,KAAK+lE,QAAQ07D,QAAQ3uB,GAAOtsC,WAIlE,QAASH,IAAU3+B,EAAOorE,GACtB,GAAI8uB,GAAalX,EAAShjF,GAASA,EAAQ8xK,GAAY9xK,EACvD,UAAM1nC,KAAKgnE,YAAa46D,EAAW56D,aAGnC8rC,EAAQ2a,EAAe3a,IAAU,cACnB,gBAAVA,EACO9yG,KAAKwmE,UAAYo7D,EAAWp7D,UAE5BxmE,KAAK+lE,QAAQ87D,MAAM/uB,GAAOtsC,UAAYo7D,EAAWp7D,WAIhE,QAASs7D,IAAW7wH,EAAMk4B,EAAI2pE,EAAOivB,GACjC,GAAIw5E,GAAY7wF,EAASz5G,GAAQA,EAAOuoM,GAAYvoM,GAChDuqM,EAAU9wF,EAASvhF,GAAMA,EAAKqwK,GAAYrwK,EAC9C,UAAMnpC,KAAKgnE,WAAau0I,EAAUv0I,WAAaw0I,EAAQx0I,aAGvD+6D,EAAcA,GAAe,MACF,MAAnBA,EAAY,GAAa/hI,KAAKomE,QAAQm1I,EAAWzoG,IAAU9yG,KAAKqmE,SAASk1I,EAAWzoG,MACpE,MAAnBivB,EAAY,GAAa/hI,KAAKqmE,SAASm1I,EAAS1oG,IAAU9yG,KAAKomE,QAAQo1I,EAAS1oG,KAGzF,QAAS3sC,IAAQz+B,EAAOorE,GACpB,GACIkvB,GADAJ,EAAalX,EAAShjF,GAASA,EAAQ8xK,GAAY9xK,EAEvD,UAAM1nC,KAAKgnE,YAAa46D,EAAW56D,aAGnC8rC,EAAQ2a,EAAe3a,IAAU,cACnB,gBAAVA,EACO9yG,KAAKwmE,YAAco7D,EAAWp7D,WAErCw7D,EAAUJ,EAAWp7D,UACdxmE,KAAK+lE,QAAQ07D,QAAQ3uB,GAAOtsC,WAAaw7D,GAAWA,GAAWhiI,KAAK+lE,QAAQ87D,MAAM/uB,GAAOtsC,YAIxG,QAASy7D,IAAev6F,EAAOorE,GAC3B,MAAO9yG,MAAKmmE,OAAOz+B,EAAOorE,IAAU9yG,KAAKomE,QAAQ1+B,EAAOorE,GAG5D,QAASovB,IAAgBx6F,EAAOorE,GAC5B,MAAO9yG,MAAKmmE,OAAOz+B,EAAOorE,IAAU9yG,KAAKqmE,SAAS3+B,EAAOorE,GAG7D,QAASqa,IAAMzlF,EAAOorE,EAAOqvB,GACzB,GAAIC,GACAC,EACAhW,CAEJ,KAAKrsH,KAAKgnE,UACN,MAAOP,IAKX,IAFA27D,EAAOvD,GAAgBn3F,EAAO1nC,OAEzBoiI,EAAKp7D,UACN,MAAOP,IAOX,QAJA47D,EAAoD,KAAvCD,EAAKl7D,YAAclnE,KAAKknE,aAErC4rC,EAAQ2a,EAAe3a,IAGnB,IAAK,OAAQuZ,EAASiW,GAAUtiI,KAAMoiI,GAAQ,EAAI,MAClD,KAAK,QAAS/V,EAASiW,GAAUtiI,KAAMoiI,EAAO,MAC9C,KAAK,UAAW/V,EAASiW,GAAUtiI,KAAMoiI,GAAQ,CAAG,MACpD,KAAK,SAAU/V,GAAUrsH,KAAOoiI,GAAQ,GAAK,MAC7C,KAAK,SAAU/V,GAAUrsH,KAAOoiI,GAAQ,GAAK,MAC7C,KAAK,OAAQ/V,GAAUrsH,KAAOoiI,GAAQ,IAAM,MAC5C,KAAK,MAAO/V,GAAUrsH,KAAOoiI,EAAOC,GAAa,KAAO,MACxD,KAAK,OAAQhW,GAAUrsH,KAAOoiI,EAAOC,GAAa,MAAQ,MAC1D,SAAShW,EAASrsH,KAAOoiI,EAG7B,MAAOD,GAAU9V,EAAS1B,EAAS0B,GAGvC,QAASiW,IAAW33H,EAAG5C,GAEnB,GAGIw6H,GAASC,EAHTC,EAA0C,IAAvB16H,EAAEkuG,OAAStrG,EAAEsrG,SAAiBluG,EAAEkpG,QAAUtmG,EAAEsmG,SAE/DyxB,EAAS/3H,EAAEo7D,QAAQC,IAAIy8D,EAAgB,SAc3C,OAXI16H,GAAI26H,EAAS,GACbH,EAAU53H,EAAEo7D,QAAQC,IAAIy8D,EAAiB,EAAG,UAE5CD,GAAUz6H,EAAI26H,IAAWA,EAASH,KAElCA,EAAU53H,EAAEo7D,QAAQC,IAAIy8D,EAAiB,EAAG,UAE5CD,GAAUz6H,EAAI26H,IAAWH,EAAUG,MAI9BD,EAAiBD,IAAW,EAMzC,QAASvkH,MACL,MAAOje,MAAK+lE,QAAQooC,OAAO,MAAM76G,OAAO,oCAG5C,QAASi0E,IAAYk0I,GACjB,IAAKz7M,KAAKgnE,UACN,MAAO,KAEX,IAAI7L,QAAMsgJ,EACNt3N,EAAIg3E,EAAMn7D,KAAK+lE,QAAQ5K,MAAQn7D,IACnC,OAAI7b,GAAE8xH,OAAS,GAAK9xH,EAAE8xH,OAAS,KACpBqZ,EAAanrI,EAAGg3E,EAAM,iCAAmC,gCAEhE6f,EAAW9qC,KAAK9tD,UAAUmlF,aAEtBpM,EACOn7D,KAAKglE,SAASuC,cAEd,GAAIr3B,MAAKlwC,KAAKwmE,UAA+B,GAAnBxmE,KAAKknE,YAAmB,KAAMK,cAAcx6D,QAAQ,IAAKuiH,EAAanrI,EAAG,MAG3GmrI,EAAanrI,EAAGg3E,EAAM,+BAAiC,8BASlE,QAAS1nE,MACL,IAAKuM,KAAKgnE,UACN,MAAO,qBAAuBhnE,KAAKs2D,GAAK,MAE5C,IAAItrD,GAAO,SACP8gI,EAAO,EACN9rI,MAAKqgI,YACNr1H,EAA4B,IAArBhL,KAAKknE,YAAoB,aAAe,mBAC/C4kE,EAAO,IAEX,IAAI9iG,GAAS,IAAMh+B,EAAO,MACtBirG,EAAQ,GAAKj2G,KAAKi2G,QAAUj2G,KAAKi2G,QAAU,KAAQ,OAAS,SAE5Dv4E,EAASouG,EAAO,MAEpB,OAAO9rI,MAAK1M,OAAO01C,EAASitE,EAHb,wBAG+Bv4E,GAGlD,QAASpqC,IAAQsvI,GACRA,IACDA,EAAc5iI,KAAKugI,QAAU6tC,EAAMvrC,iBAAmBurC,EAAMtrC,cAEhE,IAAIzW,GAASiD,EAAatvH,KAAM4iI,EAChC,OAAO5iI,MAAKkuG,aAAa60B,WAAW1W,GAGxC,QAASp7G,IAAMpe,EAAMk6H,GACjB,MAAI/sH,MAAKgnE,YACC0jD,EAAS73H,IAASA,EAAKm0E,WACxBwyI,GAAY3mN,GAAMm0E,WAChBm0I,IAAgBhyK,GAAInpC,KAAMiR,KAAMpe,IAAOs7G,OAAOnuG,KAAKmuG,UAAU60B,UAAUjW,GAEvE/sH,KAAKkuG,aAAawe,cAIjC,QAASuW,IAASlW,GACd,MAAO/sH,MAAKiR,KAAKuoM,KAAezsF,GAGpC,QAAS5jF,IAAIt2C,EAAMk6H,GACf,MAAI/sH,MAAKgnE,YACC0jD,EAAS73H,IAASA,EAAKm0E,WACxBwyI,GAAY3mN,GAAMm0E,WAChBm0I,IAAgBlqM,KAAMjR,KAAMmpC,GAAIt2C,IAAOs7G,OAAOnuG,KAAKmuG,UAAU60B,UAAUjW,GAEvE/sH,KAAKkuG,aAAawe,cAIjC,QAASwW,IAAOnW,GACZ,MAAO/sH,MAAKmpC,GAAGqwK,KAAezsF,GAMlC,QAAS5e,IAAQ1oH,GACb,GAAI09I,EAEJ,iBAAI19I,EACOua,KAAKqqH,QAAQsO,OAEpBwK,EAAgBg2E,GAAU1zN,GACL,MAAjB09I,IACAnjI,KAAKqqH,QAAU8Y,GAEZnjI,MAef,QAASkuG,MACL,MAAOluG,MAAKqqH,QAShB,QAASqxF,IAAMC,EAAUC,GACrB,OAAQD,EAAWC,EAAUA,GAAWA,EAG5C,QAASC,IAAiBp1M,EAAGtiB,EAAGE,GAE5B,MAAIoiB,GAAI,KAAOA,GAAK,EAET,GAAIypC,MAAKzpC,EAAI,IAAKtiB,EAAGE,GAAKy3N,GAE1B,GAAI5rK,MAAKzpC,EAAGtiB,EAAGE,GAAGmiF,UAIjC,QAASu1I,IAAet1M,EAAGtiB,EAAGE,GAE1B,MAAIoiB,GAAI,KAAOA,GAAK,EAETypC,KAAK0gF,IAAInqH,EAAI,IAAKtiB,EAAGE,GAAKy3N,GAE1B5rK,KAAK0gF,IAAInqH,EAAGtiB,EAAGE,GAI9B,QAASo9I,IAAS3uB,GACd,GAAIjgH,EAEJ,cADAigH,EAAQ2a,EAAe3a,KACc,gBAAVA,IAA4B9yG,KAAKgnE,UACxD,MAAOhnE,KAGX,IAAIg8M,GAAch8M,KAAKmqH,OAAS4xF,GAAiBF,EAEjD,QAAQ/oG,GACJ,IAAK,OACDjgH,EAAOmpN,EAAYh8M,KAAKi2G,OAAQ,EAAG,EACnC,MACJ,KAAK,UACDpjH,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAAUjxG,KAAKixG,QAAU,EAAG,EACjE,MACJ,KAAK,QACDp+G,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAAS,EAC9C,MACJ,KAAK,OACDp+G,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAASjxG,KAAKi7D,OAASj7D,KAAK+1G,UACjE,MACJ,KAAK,UACDljH,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAASjxG,KAAKi7D,QAAUj7D,KAAKojI,aAAe,GACjF,MACJ,KAAK,MACL,IAAK,OACDvwI,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAASjxG,KAAKi7D,OACnD,MACJ,KAAK,OACDpoE,EAAOmN,KAAKm2D,GAAGqQ,UACf3zE,GAAQ6oN,GAAM7oN,GAAQmN,KAAKmqH,OAAS,EAAInqH,KAAKknE,YAAc+0I,IAAgBC,GAC3E,MACJ,KAAK,SACDrpN,EAAOmN,KAAKm2D,GAAGqQ,UACf3zE,GAAQ6oN,GAAM7oN,EAAMopN,GACpB,MACJ,KAAK,SACDppN,EAAOmN,KAAKm2D,GAAGqQ,UACf3zE,GAAQ6oN,GAAM7oN,EAAMspN,IAM5B,MAFAn8M,MAAKm2D,GAAG4oE,QAAQlsI,GAChBu7K,EAAM3jD,aAAazqH,MAAKA,GACjBA,KAGX,QAAS6hI,IAAO/uB,GACZ,GAAIjgH,EAEJ,cADAigH,EAAQ2a,EAAe3a,KACc,gBAAVA,IAA4B9yG,KAAKgnE,UACxD,MAAOhnE,KAGX,IAAIg8M,GAAch8M,KAAKmqH,OAAS4xF,GAAiBF,EAEjD,QAAQ/oG,GACJ,IAAK,OACDjgH,EAAOmpN,EAAYh8M,KAAKi2G,OAAS,EAAG,EAAG,GAAK,CAC5C,MACJ,KAAK,UACDpjH,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAAUjxG,KAAKixG,QAAU,EAAI,EAAG,GAAK,CAC1E,MACJ,KAAK,QACDp+G,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAAU,EAAG,GAAK,CACvD,MACJ,KAAK,OACDp+G,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAASjxG,KAAKi7D,OAASj7D,KAAK+1G,UAAY,GAAK,CAClF,MACJ,KAAK,UACDljH,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAASjxG,KAAKi7D,QAAUj7D,KAAKojI,aAAe,GAAK,GAAK,CAC3F,MACJ,KAAK,MACL,IAAK,OACDvwI,EAAOmpN,EAAYh8M,KAAKi2G,OAAQj2G,KAAKixG,QAASjxG,KAAKi7D,OAAS,GAAK,CACjE,MACJ,KAAK,OACDpoE,EAAOmN,KAAKm2D,GAAGqQ,UACf3zE,GAAQqpN,GAAcR,GAAM7oN,GAAQmN,KAAKmqH,OAAS,EAAInqH,KAAKknE,YAAc+0I,IAAgBC,IAAe,CACxG,MACJ,KAAK,SACDrpN,EAAOmN,KAAKm2D,GAAGqQ,UACf3zE,GAAQopN,GAAgBP,GAAM7oN,EAAMopN,IAAiB,CACrD,MACJ,KAAK,SACDppN,EAAOmN,KAAKm2D,GAAGqQ,UACf3zE,GAAQspN,GAAgBT,GAAM7oN,EAAMspN,IAAiB,EAM7D,MAFAn8M,MAAKm2D,GAAG4oE,QAAQlsI,GAChBu7K,EAAM3jD,aAAazqH,MAAKA,GACjBA,KAGX,QAASwmE,MACL,MAAOxmE,MAAKm2D,GAAGqQ,UAAmC,KAArBxmE,KAAKoqH,SAAW,GAGjD,QAASkZ,MACL,MAAOhlH,MAAK+oD,MAAMrnE,KAAKwmE,UAAY,KAGvC,QAASxB,MACL,MAAO,IAAI90B,MAAKlwC,KAAKwmE,WAGzB,QAAS4wB,MACL,GAAIjzG,GAAI6b,IACR,QAAQ7b,EAAE8xH,OAAQ9xH,EAAE8sH,QAAS9sH,EAAE82E,OAAQ92E,EAAEgjF,OAAQhjF,EAAE4sH,SAAU5sH,EAAE2sH,SAAU3sH,EAAE84I,eAG/E,QAASvuF,MACL,GAAIvqD,GAAI6b,IACR,QACI09H,MAAOv5I,EAAE8xH,OACT4b,OAAQ1tI,EAAE8sH,QACVh2C,KAAM92E,EAAE82E,OACR48D,MAAO1zI,EAAE0zI,QACTG,QAAS7zI,EAAE6zI,UACX+F,QAAS55I,EAAE45I,UACXC,aAAc75I,EAAE65I,gBAIxB,QAASzkG,MAEL,MAAOv5B,MAAKgnE,UAAYhnE,KAAKunE,cAAgB,KAGjD,QAAS60I,MACL,MAAOp1I,GAAQhnE,MAGnB,QAASwjI,MACL,MAAOxb,MAAWiB,EAAgBjpH,OAGtC,QAASyjI,MACL,MAAOxa,GAAgBjpH,MAAMwoH,SAGjC,QAASkb,MACL,OACIh8F,MAAO1nC,KAAKs2D,GACZhjE,OAAQ0M,KAAKgqH,GACb7b,OAAQnuG,KAAKqqH,QACbiT,MAAOt9H,KAAKmqH,OACZjC,OAAQloH,KAAKypH,SAcrB,QAASka,IAAwBltH,EAAOlyB,GACpCyqI,EAAe,GAAIv4G,EAAOA,EAAMz0B,QAAS,EAAGuC,GAwChD,QAASq/I,IAAgBl8F,GACrB,MAAOm8F,IAAqBriJ,KAAKwe,KACzB0nC,EACA1nC,KAAKm0H,OACLn0H,KAAK+1G,UACL/1G,KAAKkuG,aAAa4mB,MAAMhB,IACxB9zH,KAAKkuG,aAAa4mB,MAAMf,KAGpC,QAAS+P,IAAmBp8F,GACxB,MAAOm8F,IAAqBriJ,KAAKwe,KACzB0nC,EAAO1nC,KAAK+jI,UAAW/jI,KAAKojI,aAAc,EAAG,GAGzD,QAASY,MACL,MAAOrP,IAAY30H,KAAKi2G,OAAQ,EAAG,GAGvC,QAASguB,MACL,GAAIC,GAAWlkI,KAAKkuG,aAAa4mB,KACjC,OAAOH,IAAY30H,KAAKi2G,OAAQiuB,EAASpQ,IAAKoQ,EAASnQ,KAG3D,QAAS8P,IAAqBn8F,EAAOysF,EAAMpe,EAAS+d,EAAKC,GACrD,GAAIoQ,EACJ,OAAa,OAATz8F,EACO+sF,GAAWz0H,KAAM8zH,EAAKC,GAAK9d,MAElCkuB,EAAcxP,GAAYjtF,EAAOosF,EAAKC,GAClCI,EAAOgQ,IACPhQ,EAAOgQ,GAEJC,GAAW5iJ,KAAKwe,KAAM0nC,EAAOysF,EAAMpe,EAAS+d,EAAKC,IAIhE,QAASqQ,IAAW1I,EAAUvH,EAAMpe,EAAS+d,EAAKC,GAC9C,GAAIsQ,GAAgBnQ,GAAmBwH,EAAUvH,EAAMpe,EAAS+d,EAAKC,GACjE94D,EAAOy4D,GAAc2Q,EAAcpuB,KAAM,EAAGouB,EAAc7P,UAK9D,OAHAx0H,MAAKi2G,KAAKh7C,EAAK04D,kBACf3zH,KAAKixG,MAAMh2C,EAAK6/D,eAChB96H,KAAKi7D,KAAKA,EAAK41D,cACR7wH,KAwBX,QAASskI,IAAe58F,GACpB,MAAgB,OAATA,EAAgBppB,KAAKssG,MAAM5qH,KAAKixG,QAAU,GAAK,GAAKjxG,KAAKixG,MAAoB,GAAbvpE,EAAQ,GAAS1nC,KAAKixG,QAAU,GAyD3G,QAASszB,IAAiB78F,GACtB,GAAI8sF,GAAYl2G,KAAKggH,OAAOt+H,KAAK+lE,QAAQ07D,QAAQ,OAASzhI,KAAK+lE,QAAQ07D,QAAQ,SAAW,OAAS,CACnG,OAAgB,OAAT/5F,EAAgB8sF,EAAYx0H,KAAKgmE,IAAKt+B,EAAQ8sF,EAAY,KAiGrE,QAASgQ,IAAQ98F,EAAOvG,GACpBA,EAAMq4F,IAAe3O,EAAuB,KAAhB,KAAOnjF,IAiBvC,QAAS+8F,MACL,MAAOzkI,MAAKmqH,OAAS,MAAQ,GAGjC,QAASua,MACL,MAAO1kI,MAAKmqH,OAAS,6BAA+B,GAiFxD,QAASkyF,IAAY30K,GACjB,MAAO8xK,IAAoB,IAAR9xK,GAGvB,QAAS40K,MACL,MAAO9C,IAAY9mN,MAAM,KAAMC,WAAWkyI,YAG9C,QAASC,IAAoBnsE,GACzB,MAAOA,GAoCX,QAAS4jJ,IAAOjpN,EAAQoe,EAAOszH,EAAOC,GAClC,GAAI92B,GAASgrG,KACTh+I,EAAMk9I,IAAYvnL,IAAIm0G,EAAQvzH,EAClC,OAAOy8F,GAAO62B,GAAO7pE,EAAK7nE,GAG9B,QAAS4xI,IAAgB5xI,EAAQoe,EAAOszH,GAQpC,GAPI03B,EAASppK,KACToe,EAAQpe,EACRA,UAGJA,EAASA,GAAU,GAEN,MAAToe,EACA,MAAO6qM,IAAMjpN,EAAQoe,EAAOszH,EAAO,QAGvC,IAAI1jJ,GACA6jJ,IACJ,KAAK7jJ,EAAI,EAAGA,EAAI,GAAIA,IAChB6jJ,EAAI7jJ,GAAKi7N,GAAMjpN,EAAQhS,EAAG0jJ,EAAO,QAErC,OAAOG,GAWX,QAASC,IAAkBC,EAAc/xI,EAAQoe,EAAOszH,GACxB,iBAAjBK,IACHq3B,EAASppK,KACToe,EAAQpe,EACRA,UAGJA,EAASA,GAAU,KAEnBA,EAAS+xI,EACT3zH,EAAQpe,EACR+xI,KAEIq3B,EAASppK,KACToe,EAAQpe,EACRA,UAGJA,EAASA,GAAU,GAGvB,IAAI66G,GAASgrG,KACT72N,EAAQ+iJ,EAAel3B,EAAO2mB,MAAMhB,IAAM,CAE9C,IAAa,MAATpiH,EACA,MAAO6qM,IAAMjpN,GAASoe,EAAQpvB,GAAS,EAAG0iJ,EAAO,MAGrD,IAAI1jJ,GACA6jJ,IACJ,KAAK7jJ,EAAI,EAAGA,EAAI,EAAGA,IACf6jJ,EAAI7jJ,GAAKi7N,GAAMjpN,GAAShS,EAAIgB,GAAS,EAAG0iJ,EAAO,MAEnD,OAAOG,GAGX,QAASq3E,IAAYlpN,EAAQoe,GACzB,MAAOwzH,IAAe5xI,EAAQoe,EAAO,UAGzC,QAAS+qM,IAAiBnpN,EAAQoe,GAC9B,MAAOwzH,IAAe5xI,EAAQoe,EAAO,eAGzC,QAASgrM,IAAcr3E,EAAc/xI,EAAQoe,GACzC,MAAO0zH,IAAiBC,EAAc/xI,EAAQoe,EAAO,YAGzD,QAASirM,IAAmBt3E,EAAc/xI,EAAQoe,GAC9C,MAAO0zH,IAAiBC,EAAc/xI,EAAQoe,EAAO,iBAGzD,QAASkrM,IAAiBv3E,EAAc/xI,EAAQoe,GAC5C,MAAO0zH,IAAiBC,EAAc/xI,EAAQoe,EAAO,eAsBzD,QAAS01D,MACL,GAAItgC,GAAiB9mC,KAAK+mC,KAa1B,OAXA/mC,MAAKi+H,cAAgB2H,GAAQ5lI,KAAKi+H,eAClCj+H,KAAKk+H,MAAgB0H,GAAQ5lI,KAAKk+H,OAClCl+H,KAAK+wH,QAAgB6U,GAAQ5lI,KAAK+wH,SAElCjqF,EAAKk3F,aAAgB4H,GAAQ9+F,EAAKk3F,cAClCl3F,EAAKi3F,QAAgB6H,GAAQ9+F,EAAKi3F,SAClCj3F,EAAKkxF,QAAgB4N,GAAQ9+F,EAAKkxF,SAClClxF,EAAK+wF,MAAgB+N,GAAQ9+F,EAAK+wF,OAClC/wF,EAAK+qF,OAAgB+T,GAAQ9+F,EAAK+qF,QAClC/qF,EAAK42F,MAAgBkI,GAAQ9+F,EAAK42F,OAE3B19H,KAGX,QAAS68M,IAAe3pN,EAAUw0C,EAAOhiD,EAAOu7I,GAC5C,GAAIjoB,GAAQmiG,GAAezzK,EAAOhiD,EAMlC,OAJAwN,GAAS+qI,eAAiBgD,EAAYjoB,EAAMilB,cAC5C/qI,EAASgrI,OAAiB+C,EAAYjoB,EAAMklB,MAC5ChrI,EAAS69H,SAAiBkQ,EAAYjoB,EAAM+X,QAErC79H,EAASirI,UAIpB,QAAS2+E,IAAOp1K,EAAOhiD,GACnB,MAAOm3N,IAAc78M,KAAM0nC,EAAOhiD,EAAO,GAI7C,QAASq3N,IAAYr1K,EAAOhiD,GACxB,MAAOm3N,IAAc78M,KAAM0nC,EAAOhiD,GAAQ,GAG9C,QAASsgJ,IAASptE,GACd,MAAIA,GAAS,EACFt6C,KAAK+oD,MAAMzO,GAEXt6C,KAAKssG,KAAKhyD,GAIzB,QAASqtE,MACL,GAIIlI,GAAS/F,EAASH,EAAO6F,EAAOwI,EAJhClI,EAAeh+H,KAAKi+H,cACpBH,EAAe99H,KAAKk+H,MACpBrM,EAAe7xH,KAAK+wH,QACpBjqF,EAAe9mC,KAAK+mC,KAwCxB,OAnCOi3F,IAAgB,GAAKF,GAAQ,GAAKjM,GAAU,GAC1CmM,GAAgB,GAAKF,GAAQ,GAAKjM,GAAU,IACjDmM,GAAuD,MAAvCgI,GAAQG,GAAatU,GAAUiM,GAC/CA,EAAO,EACPjM,EAAS,GAKb/qF,EAAKk3F,aAAeA,EAAe,IAEnCD,EAAoBpT,EAASqT,EAAe,KAC5Cl3F,EAAKi3F,QAAeA,EAAU,GAE9B/F,EAAoBrN,EAASoT,EAAU,IACvCj3F,EAAKkxF,QAAeA,EAAU,GAE9BH,EAAoBlN,EAASqN,EAAU,IACvClxF,EAAK+wF,MAAeA,EAAQ,GAE5BiG,GAAQnT,EAASkN,EAAQ,IAGzBqO,EAAiBvb,EAASyb,GAAatI,IACvCjM,GAAUqU,EACVpI,GAAQkI,GAAQG,GAAaD,IAG7BxI,EAAQ/S,EAASkH,EAAS,IAC1BA,GAAU,GAEV/qF,EAAKg3F,KAASA,EACdh3F,EAAK+qF,OAASA,EACd/qF,EAAK42F,MAASA,EAEP19H,KAGX,QAASomI,IAActI,GAGnB,MAAc,MAAPA,EAAc,OAGzB,QAASqI,IAActU,GAEnB,MAAgB,QAATA,EAAkB,KAG7B,QAASwU,IAAIvzB,GACT,IAAK9yG,KAAKgnE,UACN,MAAOP,IAEX,IAAIq3D,GACAjM,EACAmM,EAAeh+H,KAAKi+H,aAIxB,IAAc,WAFdnrB,EAAQ2a,EAAe3a,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OAFAgrB,EAAO99H,KAAKk+H,MAAQF,EAAe,MACnCnM,EAAS7xH,KAAK+wH,QAAUqV,GAAatI,GAC7BhrB,GACJ,IAAK,QAAW,MAAO+e,EACvB,KAAK,UAAW,MAAOA,GAAS,CAChC,KAAK,OAAW,MAAOA,GAAS,OAKpC,QADAiM,EAAO99H,KAAKk+H,MAAQ5/G,KAAKggH,MAAM6H,GAAanmI,KAAK+wH,UACzCje,GACJ,IAAK,OAAW,MAAOgrB,GAAO,EAAQE,EAAe,MACrD,KAAK,MAAW,MAAOF,GAAeE,EAAe,KACrD,KAAK,OAAW,MAAc,IAAPF,EAAeE,EAAe,IACrD,KAAK,SAAW,MAAc,MAAPF,EAAeE,EAAe,GACrD,KAAK,SAAW,MAAc,OAAPF,EAAeE,EAAe,GAErD,KAAK,cAAe,MAAO1/G,MAAK+oD,MAAa,MAAPy2D,GAAgBE,CACtD,SAAS,KAAM,IAAIh7I,OAAM,gBAAkB8vH,IAMvD,QAASkqG,MACL,MAAKh9M,MAAKgnE,UAINhnE,KAAKi+H,cACQ,MAAbj+H,KAAKk+H,MACJl+H,KAAK+wH,QAAU,GAAM,OACK,QAA3BlG,EAAM7qH,KAAK+wH,QAAU,IANdtqD,IAUf,QAAS8/D,IAAQC,GACb,MAAO,YACH,MAAOxmI,MAAKqmI,GAAGG,IAcvB,QAASy2E,MACL,MAAO9B,IAAen7M,MAG1B,QAASk9M,IAAOpqG,GAEZ,MADAA,GAAQ2a,EAAe3a,GAChB9yG,KAAKgnE,UAAYhnE,KAAK8yG,EAAQ,OAASrsC,IAGlD,QAASigE,IAAWpiJ,GAChB,MAAO,YACH,MAAO0b,MAAKgnE,UAAYhnE,KAAK+mC,MAAMziD,GAAQmiF,KAYnD,QAASo3D,MACL,MAAOlT,GAAS3qH,KAAK89H,OAAS,GAclC,QAAS6I,IAAkBhuE,EAAQC,EAAQm0D,EAAeC,EAAU7e,GAChE,MAAOA,GAAOy4B,aAAahuE,GAAU,IAAKm0D,EAAep0D,EAAQq0D,GAGrE,QAASmwF,IAAgBr2E,EAAgB/Z,EAAe5e,GACpD,GAAIj7G,GAAWioN,GAAer0E,GAAgB1/D,MAC1C22D,EAAWO,GAAMprI,EAASmzI,GAAG,MAC7BrO,EAAWsG,GAAMprI,EAASmzI,GAAG,MAC7BxO,EAAWyG,GAAMprI,EAASmzI,GAAG,MAC7BvI,EAAWQ,GAAMprI,EAASmzI,GAAG,MAC7BxU,EAAWyM,GAAMprI,EAASmzI,GAAG,MAC7B3I,EAAWY,GAAMprI,EAASmzI,GAAG,MAE7B17H,EAAIozH,GAAWltB,GAAWusG,KAAO,IAAKr/E,IAClCA,EAAUltB,GAAWxrH,IAAQ,KAAM04I,IACnC/F,GAAW,IAAkB,MAC7BA,EAAUnnB,GAAW1sH,IAAQ,KAAM6zI,IACnCH,GAAW,IAAkB,MAC7BA,EAAUhnB,GAAWyiB,IAAQ,KAAMuE,IACnCiG,GAAW,IAAkB,MAC7BA,EAAUjtB,GAAWxsH,IAAQ,KAAMy5I,IACnCjM,GAAW,IAAkB,MAC7BA,EAAUhhB,GAAW0iB,IAAQ,KAAM1B,IACnC6L,GAAW,IAAkB,OAAmB,KAAMA,EAK9D,OAHA/yH,GAAE,GAAKoiH,EACPpiH,EAAE,IAAMm8H,EAAiB,EACzBn8H,EAAE,GAAKwjG,EACAw4B,GAAkBj0I,MAAM,KAAMiY,GAIzC,QAAS0yM,IAA4Br2E,GACjC,gBAAIA,EACO1I,GAEsB,kBAAvB,KACNA,GAAQ0I,MAOhB,QAASs2E,IAA6Bp2E,EAAWxxG,GAC7C,gBAAIm7E,GAAWq2B,cAGXxxG,EACOm7E,GAAWq2B,IAEtBr2B,GAAWq2B,GAAaxxG,EACN,MAAdwxG,IACAr2B,GAAWusG,GAAK1nL,EAAQ,QAKhC,QAASstG,IAAUmE,GACf,IAAKnnI,KAAKgnE,UACN,MAAOhnE,MAAKkuG,aAAawe,aAG7B,IAAIve,GAASnuG,KAAKkuG,aACdme,EAAS8wF,GAAen9M,MAAOmnI,EAAYh5B,EAM/C,OAJIg5B,KACA9a,EAASle,EAAO+e,YAAYltH,KAAMqsH,IAG/Ble,EAAO40B,WAAW1W,GAK7B,QAASoS,IAAKj4H,GACV,OAASA,EAAI,IAAMA,EAAI,KAAQA,EAGnC,QAAS+2M,MAQL,IAAKv9M,KAAKgnE,UACN,MAAOhnE,MAAKkuG,aAAawe,aAG7B,IAGIsL,GAASH,EAAO6F,EAHhBK,EAAUy/E,GAAMx9M,KAAKi+H,eAAiB,IACtCH,EAAe0/E,GAAMx9M,KAAKk+H,OAC1BrM,EAAe2rF,GAAMx9M,KAAK+wH,QAI9BiH,GAAoBrN,EAASoT,EAAU,IACvClG,EAAoBlN,EAASqN,EAAU,IACvC+F,GAAW,GACX/F,GAAW,GAGX0F,EAAS/S,EAASkH,EAAS,IAC3BA,GAAU,EAIV,IAAIyV,GAAI5J,EACJnK,EAAI1B,EACJ0V,EAAIzJ,EACJxK,EAAIuE,EACJ1zI,EAAI6zI,EACJ3yI,EAAI04I,EAAUA,EAAQ0/E,QAAQ,GAAG1wM,QAAQ,SAAU,IAAM,GACzDy6H,EAAQxnI,KAAKynI,WAEjB,KAAKD,EAGD,MAAO,KAGX,IAAIk2E,GAAYl2E,EAAQ,EAAI,IAAM,GAC9Bm2E,EAASl/E,GAAKz+H,KAAK+wH,WAAa0N,GAAK+I,GAAS,IAAM,GACpDo2E,EAAWn/E,GAAKz+H,KAAKk+H,SAAWO,GAAK+I,GAAS,IAAM,GACpDq2E,EAAUp/E,GAAKz+H,KAAKi+H,iBAAmBQ,GAAK+I,GAAS,IAAM,EAE/D,OAAOk2E,GAAY,KACdp2E,EAAIq2E,EAASr2E,EAAI,IAAM,KACvB/T,EAAIoqF,EAASpqF,EAAI,IAAM,KACvBgU,EAAIq2E,EAAWr2E,EAAI,IAAM,KACxBjU,GAAKnvI,GAAKkB,EAAK,IAAM,KACtBiuI,EAAIuqF,EAAUvqF,EAAI,IAAM,KACxBnvI,EAAI05N,EAAU15N,EAAI,IAAM,KACxBkB,EAAIw4N,EAAUx4N,EAAI,IAAM,IAp4IjC,GAAIsiI,IA6GA3xG,EAEAA,IADAhiB,MAAM5R,UAAU4zB,KACThiB,MAAM5R,UAAU4zB,KAEhB,SAAUyhE,GAIb,IAAK,GAHDn/D,GAAIn2B,OAAO6d,MACX6yB,EAAMva,EAAEt2B,SAAW,EAEdV,EAAI,EAAGA,EAAIuxC,EAAKvxC,IACrB,GAAIA,IAAKg3B,IAAKm/D,EAAIj2F,KAAKwe,KAAMsY,EAAEh3B,GAAIA,EAAGg3B,GAClC,OAAM,CAId,UAoDR,IAAIgyG,IAAmB8jD,EAAM9jD,oBAiDzBE,MA8FAmB,KAYJyiD,GAAM9iD,+BACN8iD,EAAM3iD,mBAAqB,IAyD3B,IAAIzgI,GAGAA,IADA7I,OAAO6I,KACA7I,OAAO6I,KAEP,SAAUxF,GACb,GAAIlE,GAAGwmI,IACP,KAAKxmI,IAAKkE,GACFuiI,EAAWviI,EAAKlE,IAChBwmI,EAAI5lI,KAAKZ,EAGjB,OAAOwmI,GAIf,IAAI4f,KACAC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAQXC,IACAC,IAAO,YACPC,GAAO,SACPC,EAAO,aACPC,GAAO,eACPC,IAAO,sBACPC,KAAO,6BAyBPu1E,GAAgC,UAMhCr1E,IACAC,OAAS,QACTC,KAAS,SACTtjJ,EAAK,gBACL+3N,GAAK,aACLj5N,EAAK,WACLykJ,GAAK,aACLtV,EAAK,UACLuV,GAAK,WACLxkJ,EAAK,QACLykJ,GAAK,UACLvV,EAAK,UACLwV,GAAK,YACLtiI,EAAK,SACLuiI,GAAK,YAeLxb,MA4BAQ,MAyBAqB,GAAmB,uLAEnBK,GAAwB,6CAExBF,MAEAN,MAoFA+Z,GAAiB,KACjBC,GAAiB,OACjBC,GAAiB,QACjBC,GAAiB,QACjBC,GAAiB,aACjBC,GAAiB,QACjBC,GAAiB,YACjBC,GAAiB,gBACjBC,GAAiB,UACjBC,GAAiB,UACjBC,GAAiB,eAEjBC,GAAiB,MACjBC,GAAiB,WAEjB7J,GAAiB,qBACjBV,GAAmB,0BAEnBwK,GAAiB,uBAIjBC,GAAY,wJAEZla,MA2BAtuB,MA8BAg4B,GAAO,EACPF,GAAQ,EACRC,GAAO,EACP3mB,GAAO,EACPD,GAAS,EACTK,GAAS,EACTymB,GAAc,EACdG,GAAO,EACPE,GAAU,CAId7K,GAAe,IAAK,EAAG,EAAG,WACtB,GAAIvoH,GAAIzG,KAAKi2G,MACb,OAAOxvG,IAAK,KAAO,GAAKA,EAAI,IAAMA,IAGtCuoH,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAOhvH,MAAKi2G,OAAS,MAGzB+Y,EAAe,GAAI,OAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,QAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,SAAU,GAAE,GAAQ,EAAG,QAI1C5B,EAAa,OAAQ,KAIrBU,EAAgB,OAAQ,GAIxB6B,EAAc,IAAUka,IACxBla,EAAc,KAAU2Z,GAAWJ,IACnCvZ,EAAc,OAAU+Z,GAAWN,IACnCzZ,EAAc,QAAUga,GAAWN,IACnC1Z,EAAc,SAAUga,GAAWN,IAEnC9Y,GAAe,QAAS,UAAWgJ,IACnChJ,EAAc,OAAQ,SAAU7oF,EAAOvG,GACnCA,EAAMo4F,IAAyB,IAAjB7xF,EAAM1lD,OAAeosL,EAAMlkC,kBAAkBxiG,GAASmjF,EAAMnjF,KAE9E6oF,EAAc,KAAM,SAAU7oF,EAAOvG,GACjCA,EAAMo4F,IAAQ60C,EAAMlkC,kBAAkBxiG,KAE1C6oF,EAAc,IAAK,SAAU7oF,EAAOvG,GAChCA,EAAMo4F,IAAQ7wG,SAASgf,EAAO,MAelC0mI,EAAMlkC,kBAAoB,SAAUxiG,GAChC,MAAOmjF,GAAMnjF,IAAUmjF,EAAMnjF,GAAS,GAAK,KAAO,KAKtD,IAiEIhsC,IAjEAyuI,GAAahc,GAAW,cAoExBzyH,IADA1H,MAAM5R,UAAUsZ,QACN1H,MAAM5R,UAAUsZ,QAEhB,SAAUlX,GAEhB,GAAIlD,EACJ,KAAKA,EAAI,EAAGA,EAAI0e,KAAKhe,SAAUV,EAC3B,GAAI0e,KAAK1e,KAAOkD,EACZ,MAAOlD,EAGf,QAAQ,GAehB0tI,EAAe,KAAM,KAAM,GAAI,KAAM,WACjC,MAAOhvH,MAAKixG,QAAU,IAG1B+d,EAAe,MAAO,EAAG,EAAG,SAAU17H,GAClC,MAAO0M,MAAKkuG,aAAa0jB,YAAY5xH,KAAM1M,KAG/C07H,EAAe,OAAQ,EAAG,EAAG,SAAU17H,GACnC,MAAO0M,MAAKkuG,aAAa2jB,OAAO7xH,KAAM1M,KAK1C85H,EAAa,QAAS,KAItBU,EAAgB,QAAS,GAIzB6B,EAAc,IAAQ2Z,IACtB3Z,EAAc,KAAQ2Z,GAAWJ,IACjCvZ,EAAc,MAAQ,SAAUG,EAAU3hB,GACtC,MAAOA,GAAOkkB,iBAAiBvC,KAEnCH,EAAc,OAAQ,SAAUG,EAAU3hB,GACtC,MAAOA,GAAOukB,YAAY5C,KAG9BS,GAAe,IAAK,MAAO,SAAU7oF,EAAOvG,GACxCA,EAAMk4F,IAASxO,EAAMnjF,GAAS,IAGlC6oF,GAAe,MAAO,QAAS,SAAU7oF,EAAOvG,EAAOpoC,EAAQ0d,GAC3D,GAAIw6F,GAAQl4G,EAAOsxH,QAAQ6H,YAAYxqF,EAAOjxB,EAAO1d,EAAO0wH,QAE/C,OAATxY,EACA9vE,EAAMk4F,IAASpoB,EAEfgY,EAAgBlwH,GAAQ4vH,aAAejhF,GAM/C,IAAIupF,IAAmB,gCACnB+Y,GAAsB,wFAAwFtsI,MAAM,KAUpHusI,GAA2B,kDAAkDvsI,MAAM,KAkInF+0H,GAA0BsX,GAoB1BlX,GAAqBkX,EA0JzB/a,GAAe,KAAM,KAAM,GAAI,KAAM,QACrCA,EAAe,KAAM,KAAM,GAAI,KAAM,WAIrC5B,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAIxBU,EAAgB,OAAQ,GACxBA,EAAgB,UAAW,GAI3B6B,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/BvZ,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAE/B1Y,GAAmB,IAAK,KAAM,IAAK,MAAO,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GACrE09G,EAAK19G,EAAMyR,OAAO,EAAG,IAAM2iG,EAAMnjF,IAWrC,IAAI0iG,KACAtW,IAAM,EACNC,IAAM,EAyBV/E,GAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,EAAG,SAAU17H,GACjC,MAAO0M,MAAKkuG,aAAa+nB,YAAYj2H,KAAM1M,KAG/C07H,EAAe,MAAO,EAAG,EAAG,SAAU17H,GAClC,MAAO0M,MAAKkuG,aAAagoB,cAAcl2H,KAAM1M,KAGjD07H,EAAe,OAAQ,EAAG,EAAG,SAAU17H,GACnC,MAAO0M,MAAKkuG,aAAaioB,SAASn2H,KAAM1M,KAG5C07H,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1B5B,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAG3BU,EAAgB,MAAO,IACvBA,EAAgB,UAAW,IAC3BA,EAAgB,aAAc,IAI9B6B,EAAc,IAAQ2Z,IACtB3Z,EAAc,IAAQ2Z,IACtB3Z,EAAc,IAAQ2Z,IACtB3Z,EAAc,KAAQ,SAAUG,EAAU3hB,GACtC,MAAOA,GAAOipB,iBAAiBtH,KAEnCH,EAAc,MAAS,SAAUG,EAAU3hB,GACvC,MAAOA,GAAO6oB,mBAAmBlH,KAErCH,EAAc,OAAU,SAAUG,EAAU3hB,GACxC,MAAOA,GAAOwoB,cAAc7G,KAGhCU,GAAmB,KAAM,MAAO,QAAS,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GACpE,GAAIs/F,GAAUh9G,EAAOsxH,QAAQ+K,cAAc1tF,EAAOjxB,EAAO1d,EAAO0wH,QAEjD,OAAX1T,EACAoe,EAAK9vI,EAAI0xH,EAETkT,EAAgBlwH,GAAQywH,eAAiB9hF,IAIjD8oF,GAAmB,IAAK,IAAK,KAAM,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GAC9D09G,EAAK19G,GAASo0G,EAAMnjF,IAkCxB,IAAI2iG,IAAwB,2DAA2D3sI,MAAM,KAQzF4sI,GAA6B,8BAA8B5sI,MAAM,KAMjE6sI,GAA2B,uBAAuB7sI,MAAM,KAsJxDq5H,GAAuBgT,GAoBvB5S,GAA4B4S,GAoB5BxS,GAA0BwS,EAwE9B/a,GAAe,KAAM,KAAM,GAAI,EAAG,QAClCA,EAAe,KAAM,KAAM,GAAI,EAAG4I,IAClC5I,EAAe,KAAM,KAAM,GAAI,EAAG8I,IAElC9I,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAK4I,GAAQllI,MAAMsN,MAAQ0uH,EAAS1uH,KAAKg4H,UAAW,KAG/DhJ,EAAe,QAAS,EAAG,EAAG,WAC1B,MAAO,GAAK4I,GAAQllI,MAAMsN,MAAQ0uH,EAAS1uH,KAAKg4H,UAAW,GACvDtJ,EAAS1uH,KAAK+9H,UAAW,KAGjC/O,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKhvH,KAAK63H,QAAUnJ,EAAS1uH,KAAKg4H,UAAW,KAGxDhJ,EAAe,QAAS,EAAG,EAAG,WAC1B,MAAO,GAAKhvH,KAAK63H,QAAUnJ,EAAS1uH,KAAKg4H,UAAW,GAChDtJ,EAAS1uH,KAAK+9H,UAAW,KASjC/U,GAAS,QACTA,GAAS,QAIToE,EAAa,OAAQ,KAGrBU,EAAgB,OAAQ,IAQxB6B,EAAc,IAAMsI,IACpBtI,EAAc,IAAMsI,IACpBtI,EAAc,IAAM2Z,IACpB3Z,EAAc,IAAM2Z,IACpB3Z,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/BvZ,EAAc,KAAM2Z,GAAWJ,IAC/BvZ,EAAc,KAAM2Z,GAAWJ,IAE/BvZ,EAAc,MAAO4Z,IACrB5Z,EAAc,QAAS6Z,IACvB7Z,EAAc,MAAO4Z,IACrB5Z,EAAc,QAAS6Z,IAEvBjZ,GAAe,IAAK,MAAO5d,IAC3B4d,GAAe,IAAK,MAAO,SAAU7oF,EAAOvG,EAAOpoC,GAC/C,GAAIglN,GAASlzF,EAAMnjF,EACnBvG,GAAMwxE,IAAmB,KAAXorG,EAAgB,EAAIA,IAEtCxtF,GAAe,IAAK,KAAM,SAAU7oF,EAAOvG,EAAOpoC,GAC9CA,EAAOyxI,MAAQzxI,EAAOsxH,QAAQqS,KAAKh1F,GACnC3uC,EAAOujI,UAAY50F,IAEvB6oF,GAAe,IAAK,MAAO,SAAU7oF,EAAOvG,EAAOpoC,GAC/CooC,EAAMwxE,IAAQkY,EAAMnjF,GACpBuhF,EAAgBlwH,GAAQ2wH,aAE5B6G,EAAc,MAAO,SAAU7oF,EAAOvG,EAAOpoC,GACzC,GAAIo9F,GAAMzuD,EAAM1lD,OAAS,CACzBm/C,GAAMwxE,IAAQkY,EAAMnjF,EAAMxf,OAAO,EAAGiuE,IACpCh1D,EAAMuxE,IAAUmY,EAAMnjF,EAAMxf,OAAOiuE,IACnC8yB,EAAgBlwH,GAAQ2wH,aAE5B6G,EAAc,QAAS,SAAU7oF,EAAOvG,EAAOpoC,GAC3C,GAAI0xI,GAAO/iG,EAAM1lD,OAAS,EACtB0oJ,EAAOhjG,EAAM1lD,OAAS,CAC1Bm/C,GAAMwxE,IAAQkY,EAAMnjF,EAAMxf,OAAO,EAAGuiH,IACpCtpG,EAAMuxE,IAAUmY,EAAMnjF,EAAMxf,OAAOuiH,EAAM,IACzCtpG,EAAM4xE,IAAU8X,EAAMnjF,EAAMxf,OAAOwiH,IACnCzhB,EAAgBlwH,GAAQ2wH,aAE5B6G,EAAc,MAAO,SAAU7oF,EAAOvG,EAAOpoC,GACzC,GAAIo9F,GAAMzuD,EAAM1lD,OAAS,CACzBm/C,GAAMwxE,IAAQkY,EAAMnjF,EAAMxf,OAAO,EAAGiuE,IACpCh1D,EAAMuxE,IAAUmY,EAAMnjF,EAAMxf,OAAOiuE,MAEvCo6B,EAAc,QAAS,SAAU7oF,EAAOvG,EAAOpoC,GAC3C,GAAI0xI,GAAO/iG,EAAM1lD,OAAS,EACtB0oJ,EAAOhjG,EAAM1lD,OAAS,CAC1Bm/C,GAAMwxE,IAAQkY,EAAMnjF,EAAMxf,OAAO,EAAGuiH,IACpCtpG,EAAMuxE,IAAUmY,EAAMnjF,EAAMxf,OAAOuiH,EAAM,IACzCtpG,EAAM4xE,IAAU8X,EAAMnjF,EAAMxf,OAAOwiH,KAWvC,IAyCIhS,IAzCAiS,GAA6B,gBAgB7BC,GAAazc,GAAW,YAExB4K,IACA4I,SAAU+F,GACVnb,eAAgB0b,GAChBvb,YA7zCqB,eA8zCrBE,QAxzCiB,KAyzCjBoxF,uBAAwBF,GACxBl3E,aAAc6B,GAEd5W,OAAQmY,GACRpY,YAAaqY,GAEb9V,KAAMiW,GAENjU,SAAUkU,GACVpU,YAAasU,GACbrU,cAAeoU,GAEfQ,cAAeH,IAIfp6B,MACA6oG,MA+WAn/E,GAAmB,mJACnBC,GAAgB,8IAEhBG,GAAU,wBAEVF,KACC,eAAgB,wBAChB,aAAc,oBACd,eAAgB,mBAChB,aAAc,eAAc,IAC5B,WAAY,gBACZ,UAAW,cAAa,IACxB,aAAc,eACd,WAAY,UAEZ,aAAc,gBACd,YAAa,eAAc,IAC3B,UAAW,UAIZC,KACC,gBAAiB,wBACjB,gBAAiB,uBACjB,WAAY,mBACZ,QAAS,cACT,cAAe,sBACf,cAAe,qBACf,SAAU,iBACV,OAAQ,aACR,KAAM,SAGPI,GAAkB,sBAwDlB89E,GAAU,0LA+CVmC,IACAwD,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IAgETtwC,GAAM3zC,wBAA0BlP,EAC5B,iVAIA,SAAUxyH,GACNA,EAAOo9D,GAAK,GAAIjmB,MAAKn3C,EAAOu9D,IAAMv9D,EAAO8hI,QAAU,OAAS,OAKpEuzC,EAAMnyC,SAAW,aAGjBmyC,EAAMysC,SAAW,YA6PjB,IAAI9vE,IAAexf,EACf,qGACA,WACI,GAAIvS,GAAQwgG,GAAY9mN,MAAM,KAAMC,UACpC,OAAIqN,MAAKgnE,WAAagyC,EAAMhyC,UACjBgyC,EAAQh5G,KAAOA,KAAOg5G,EAEtBw/F,MAKfxtE,GAAezf,EACf,qGACA,WACI,GAAIvS,GAAQwgG,GAAY9mN,MAAM,KAAMC,UACpC,OAAIqN,MAAKgnE,WAAagyC,EAAMhyC,UACjBgyC,EAAQh5G,KAAOA,KAAOg5G,EAEtBw/F,MAwCfxlN,GAAM,WACN,MAAOk9C,MAAKl9C,IAAMk9C,KAAKl9C,OAAS,GAAKk9C,OAGrC6qK,IAAY,OAAQ,UAAW,QAAS,OAAQ,MAAO,OAAQ,SAAU,SAAU,cA+FvFx8E,IAAO,IAAK,KACZA,GAAO,KAAM,IAIb5O,EAAc,IAAM2P,IACpB3P,EAAc,KAAM2P,IACpB/O,GAAe,IAAK,MAAO,SAAU7oF,EAAOvG,EAAOpoC,GAC/CA,EAAO8hI,WACP9hI,EAAOmxH,KAAOwU,GAAiBY,GAAkB53F,IAQrD,IAAIk3F,IAAc,iBA2ClBwvC,GAAM3jD,aAAe,YAmJrB,IAAIgW,IAAc,2DAKdC,GAAW,qKA+Dfy6E,IAAenhM,GAAKyjH,GAASr7I,UAC7B+4N,GAAeruE,QAAUouE,EAuFzB,IAAIl1I,IAAWg7D,GAAY,EAAG,OAC1BnB,GAAWmB,IAAa,EAAG,WA+I/BotC,GAAMtrC,cAAgB,uBACtBsrC,EAAMvrC,iBAAmB,wBAuGzB,IAAI3mI,IAAOqvH,EACP,kJACA,SAAU9lI,GACN,gBAAIA,EACOua,KAAKkuG,aAELluG,KAAKmuG,OAAO1oH,KAS3B02N,GAAgB,IAChBF,GAAgB,GAAKE,GACrBD,GAAc,GAAKD,GACnBH,GAAmB,QAAwBI,EAsL/CltF,GAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAOhvH,MAAK07H,WAAa,MAG7B1M,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAOhvH,MAAKmrI,cAAgB,MAOhCxH,GAAuB,OAAY,YACnCA,GAAuB,QAAY,YACnCA,GAAuB,OAAS,eAChCA,GAAuB,QAAS,eAIhCvW,EAAa,WAAY,MACzBA,EAAa,cAAe,MAI5BU,EAAgB,WAAY,GAC5BA,EAAgB,cAAe,GAK/B6B,EAAc,IAAUka,IACxBla,EAAc,IAAUka,IACxBla,EAAc,KAAU2Z,GAAWJ,IACnCvZ,EAAc,KAAU2Z,GAAWJ,IACnCvZ,EAAc,OAAU+Z,GAAWN,IACnCzZ,EAAc,OAAU+Z,GAAWN,IACnCzZ,EAAc,QAAUga,GAAWN,IACnC1Z,EAAc,QAAUga,GAAWN,IAEnC7Y,GAAmB,OAAQ,QAAS,OAAQ,SAAU,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GACjF09G,EAAK19G,EAAMyR,OAAO,EAAG,IAAM2iG,EAAMnjF,KAGrC8oF,GAAmB,KAAM,MAAO,SAAU9oF,EAAOysF,EAAMp7H,EAAQ0d,GAC3D09G,EAAK19G,GAAS23J,EAAMlkC,kBAAkBxiG,KAqD1CsnF,EAAe,IAAK,EAAG,KAAM,WAI7B5B,EAAa,UAAW,KAIxBU,EAAgB,UAAW,GAI3B6B,EAAc,IAAKsZ,IACnB1Y,EAAc,IAAK,SAAU7oF,EAAOvG,GAChCA,EAAMk4F,IAA8B,GAApBxO,EAAMnjF,GAAS,KAWnCsnF,EAAe,KAAM,KAAM,GAAI,KAAM,QAIrC5B,EAAa,OAAQ,KAGrBU,EAAgB,OAAQ,GAIxB6B,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/BvZ,EAAc,KAAM,SAAUG,EAAU3hB,GAEpC,MAAO2hB,GACJ3hB,EAAOuqG,yBAA2BvqG,EAAO2d,cAC1C3d,EAAOsqG,iCAGbloF,GAAe,IAAK,MAAO+I,IAC3B/I,EAAc,KAAM,SAAU7oF,EAAOvG,GACjCA,EAAMm4F,IAAQzO,EAAMnjF,EAAMp9B,MAAMg/H,IAAW,KAK/C,IAAI8B,IAAmBjd,GAAW,UAIlCa,GAAe,OAAQ,OAAQ,GAAI,OAAQ,aAI3C5B,EAAa,YAAa,OAG1BU,EAAgB,YAAa,GAI7B6B,EAAc,MAAQ8Z,IACtB9Z,EAAc,OAAQwZ,IACtB5Y,GAAe,MAAO,QAAS,SAAU7oF,EAAOvG,EAAOpoC,GACnDA,EAAOsiI,WAAaxQ,EAAMnjF,KAc9BsnF,EAAe,KAAM,KAAM,GAAI,EAAG,UAIlC5B,EAAa,SAAU,KAIvBU,EAAgB,SAAU,IAI1B6B,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/B3Y,GAAe,IAAK,MAAO7d,GAI3B,IAAI24B,IAAeld,GAAW,aAI9Ba,GAAe,KAAM,KAAM,GAAI,EAAG,UAIlC5B,EAAa,SAAU,KAIvBU,EAAgB,SAAU,IAI1B6B,EAAc,IAAM2Z,IACpB3Z,EAAc,KAAM2Z,GAAWJ,IAC/B3Y,GAAe,IAAK,MAAOxd,GAI3B,IAAIu4B,IAAend,GAAW,aAI9Ba,GAAe,IAAK,EAAG,EAAG,WACtB,SAAUhvH,KAAKi9H,cAAgB,OAGnCjO,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,SAAUhvH,KAAKi9H,cAAgB,MAGnCjO,EAAe,GAAI,MAAO,GAAI,EAAG,eACjCA,EAAe,GAAI,OAAQ,GAAI,EAAG,WAC9B,MAA4B,IAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,QAAS,GAAI,EAAG,WAC/B,MAA4B,KAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,SAAU,GAAI,EAAG,WAChC,MAA4B,KAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,UAAW,GAAI,EAAG,WACjC,MAA4B,KAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,WAAY,GAAI,EAAG,WAClC,MAA4B,KAArBhvH,KAAKi9H,gBAEhBjO,EAAe,GAAI,YAAa,GAAI,EAAG,WACnC,MAA4B,KAArBhvH,KAAKi9H,gBAMhB7P,EAAa,cAAe,MAI5BU,EAAgB,cAAe,IAI/B6B,EAAc,IAAQ8Z,GAAWR,IACjCtZ,EAAc,KAAQ8Z,GAAWP,IACjCvZ,EAAc,MAAQ8Z,GAAWN,GAEjC,IAAI1yH,GACJ,KAAKA,GAAQ,OAAQA,GAAMz0B,QAAU,EAAGy0B,IAAS,IAC7Ck5G,EAAcl5G,GAAOmzH,GAOzB,KAAKnzH,GAAQ,IAAKA,GAAMz0B,QAAU,EAAGy0B,IAAS,IAC1C85G,EAAc95G,GAAO+tH,GAIzB,IAAI+G,IAAoBpd,GAAW,kBAInCa,GAAe,IAAM,EAAG,EAAG,YAC3BA,EAAe,KAAM,EAAG,EAAG,WAY3B,IAAIh+F,IAAQu5F,EAAOnoI,SAEnB4uC,IAAMg1C,IAAoBA,GAC1Bh1C,GAAM2wG,SAAoB25E,GAC1BtqL,GAAM+0C,MAAoBA,GAC1B/0C,GAAMm8F,KAAoBA,GAC1Bn8F,GAAM6wG,MAAoBA,GAC1B7wG,GAAM19B,OAAoBA,GAC1B09B,GAAM/f,KAAoBA,GAC1B+f,GAAMiyG,QAAoBA,GAC1BjyG,GAAMmY,GAAoBA,GAC1BnY,GAAMkyG,MAAoBA,GAC1BlyG,GAAMpsC,IAAoB2pI,GAC1Bv9F,GAAMyyG,UAAoBA,GAC1BzyG,GAAMo1C,QAAoBA,GAC1Bp1C,GAAMq1C,SAAoBA,GAC1Br1C,GAAM8wG,UAAoBA,GAC1B9wG,GAAMm1C,OAAoBA,GAC1Bn1C,GAAMixG,cAAoBA,GAC1BjxG,GAAMkxG,eAAoBA,GAC1BlxG,GAAMg2C,QAAoBo1I,GAC1BprL,GAAM90B,KAAoBA,GAC1B80B,GAAMm9E,OAAoBA,GAC1Bn9E,GAAMk9E,WAAoBA,GAC1Bl9E,GAAMzS,IAAoBysH,GAC1Bh6G,GAAMs2C,IAAoByjE,GAC1B/5G,GAAMwyG,aAAoBA,GAC1BxyG,GAAMF,IAAoB09F,GAC1Bx9F,GAAMywG,QAAoBA,GAC1BzwG,GAAM6uG,SAAoBA,GAC1B7uG,GAAMomE,QAAoBA,GAC1BpmE,GAAM0d,SAAoBA,GAC1B1d,GAAMg0C,OAAoBA,GAC1Bh0C,GAAMu2C,YAAoBA,GAC1Bv2C,GAAMv9B,QAAoBA,GAC1Bu9B,GAAMuI,OAAoBA,GAC1BvI,GAAM/S,SAAoBA,GAC1B+S,GAAMsyG,KAAoBA,GAC1BtyG,GAAMw1C,QAAoBA,GAC1Bx1C,GAAM0yG,aAAoBA,GAC1B1yG,GAAMilF,KAAak0B,GACnBn5G,GAAMmiG,WAAaC,GACnBpiG,GAAM0qG,SAAckI,GACpB5yG,GAAMm6G,YAAcrH,GACpB9yG,GAAM4sG,QAAU5sG,GAAM2sG,SAAW2G,GACjCtzG,GAAMigF,MAAckhB,GACpBnhG,GAAM2/F,YAAcyB,GACpBphG,GAAMmjG,KAAiBnjG,GAAM6sG,MAAe5I,GAC5CjkG,GAAM+yG,QAAiB/yG,GAAMy6G,SAAevW,GAC5ClkG,GAAM2jG,YAAiBsP,GACvBjzG,GAAM06G,eAAiB1H,GACvBhzG,GAAMiqC,KAAamwE,GACnBp6G,GAAMggF,IAAahgF,GAAM8sG,KAAmBvH,GAC5CvlG,GAAM+kF,QAAa0gB,GACnBzlG,GAAMoyG,WAAa1M,GACnB1lG,GAAMwjG,UAAa+P,GACnBvzG,GAAMm2C,KAAOn2C,GAAM6mG,MAAQ+S,GAC3B55G,GAAM+/E,OAAS//E,GAAMgnG,QAAUqT,GAC/Br6G,GAAM8/E,OAAS9/E,GAAM+sG,QAAUuN,GAC/Bt6G,GAAMisG,YAAcjsG,GAAMgtG,aAAeuN,GACzCv6G,GAAMk2C,UAAuBi4D,GAC7BnuG,GAAMmqC,IAAuBwkE,GAC7B3uG,GAAMguG,MAAuBY,GAC7B5uG,GAAM6zG,UAAuB/E,GAC7B9uG,GAAMivG,qBAAuBA,GAC7BjvG,GAAM26G,MAAuBzL,GAC7BlvG,GAAMqvG,QAAuBA,GAC7BrvG,GAAMsvG,YAAuBA,GAC7BtvG,GAAMuvG,MAAuBA,GAC7BvvG,GAAMssG,MAAuBiD,GAC7BvvG,GAAM46G,SAAWnH,GACjBzzG,GAAM66G,SAAWnH,GACjB1zG,GAAM4nB,MAAS2yE,EAAU,kDAAmD6f,IAC5Ep6G,GAAM6gG,OAAStG,EAAU,mDAAoD4G,IAC7EnhG,GAAM0sG,MAASnS,EAAU,iDAAkD4e,IAC3En5G,GAAM86G,KAASvgB,EAAU,2GAA4GmU,IACrI1uG,GAAM+6G,aAAexgB,EAAU,0GAA2G4U,GAc1I,IAAIw+E,IAAUzyF,EAAO9pI,SAErBu8N,IAAQh9E,SAAkBA,EAC1Bg9E,GAAQpyF,eAAkBA,EAC1BoyF,GAAQjyF,YAAkBA,EAC1BiyF,GAAQ/xF,QAAkBA,EAC1B+xF,GAAQvhF,SAAkB0H,GAC1B65E,GAAQ57E,WAAkB+B,GAC1B65E,GAAQ/3E,aAAkBA,EAC1B+3E,GAAQzxF,WAAkBA,EAC1ByxF,GAAQ7tL,IAAkBA,EAE1B6tL,GAAQ9sF,OAA2Bf,GACnC6tF,GAAQ/sF,YAA2BV,GACnCytF,GAAQzsF,YAA2BJ,GACnC6sF,GAAQjsF,YAAoBA,GAC5BisF,GAAQtsF,iBAAoBA,GAC5BssF,GAAQxqF,KAAOU,GACf8pF,GAAQzyE,eAAiBlX,GACzB2pF,GAAQxyE,eAAiBpX,GAEzB4pF,GAAQxoF,SAAwBb,GAChCqpF,GAAQ1oF,YAAwBP,GAChCipF,GAAQzoF,cAAwBV,GAChCmpF,GAAQvpF,cAAwBgB,GAEhCuoF,GAAQhoF,cAA6BA,GACrCgoF,GAAQ3nF,mBAA6BA,GACrC2nF,GAAQvnF,iBAA6BA,GAErCunF,GAAQjiF,KAAOvE,GACfwmF,GAAQ31F,SAAWoP,GA4FnB8gF,GAAmB,MACf8E,uBAAwB,uBACxBpxF,QAAU,SAAUh0D,GAChB,GAAI7wD,GAAI6wD,EAAS,EAKjB,OAAOA,IAJoC,IAA7BiyD,EAAMjyD,EAAS,IAAM,IAAa,KACrC,IAAN7wD,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,SAO/BqmK,EAAMlyK,KAAOqvH,EAAU,wDAAyD2tF,IAChF9qC,EAAMhiC,SAAW7gB,EAAU,gEAAiE4tF,GAE5F,IAAIvzE,IAAUtnH,KAAK8oD,IA8JfilE,GAAiB9F,GAAO,MACxBkB,GAAiBlB,GAAO,KACxB+F,GAAiB/F,GAAO,KACxBgG,GAAiBhG,GAAO,KACxBiG,GAAiBjG,GAAO,KACxBkG,GAAiBlG,GAAO,KACxBmG,GAAiBnG,GAAO,KACxBq4E,GAAiBr4E,GAAO,KACxBoG,GAAiBpG,GAAO,KAiBxBvI,GAAe0I,GAAW,gBAC1B3I,GAAe2I,GAAW,WAC1B1O,GAAe0O,GAAW,WAC1B7O,GAAe6O,GAAW,SAC1B5I,GAAe4I,GAAW,QAC1B7U,GAAe6U,GAAW,UAC1BhJ,GAAegJ,GAAW,SAM1BpI,GAAQhgH,KAAKggH,MACbztB,IACAusG,GAAI,GACJ/3N,EAAI,GACJlB,EAAI,GACJmvI,EAAI,GACJjvI,EAAI,GACJkvI,EAAI,IA6EJiqF,GAAQl/L,KAAK8oD,IAgEby3I,GAAUphF,GAASr7I,SAwGvB,OAtGAy8N,IAAQ73I,QAAiBi0I,GACzB4D,GAAQz3I,IAAiBA,GACzBy3I,GAAQ74I,IAAiB82I,GACzB+B,GAAQh/E,SAAiBk9E,GACzB8B,GAAQx4E,GAAiBA,GACzBw4E,GAAQxyE,eAAiBA,GACzBwyE,GAAQp3E,UAAiBA,GACzBo3E,GAAQvyE,UAAiBA,GACzBuyE,GAAQtyE,QAAiBA,GACzBsyE,GAAQryE,OAAiBA,GACzBqyE,GAAQpyE,QAAiBA,GACzBoyE,GAAQnyE,SAAiBA,GACzBmyE,GAAQD,WAAiBA,GACzBC,GAAQlyE,QAAiBA,GACzBkyE,GAAQr4I,QAAiBw2I,GACzB6B,GAAQ1gF,QAAiB8H,GACzB44E,GAAQ94I,MAAiBk3I,GACzB4B,GAAQj6N,IAAiBs4N,GACzB2B,GAAQ7gF,aAAiBA,GACzB6gF,GAAQ9gF,QAAiBA,GACzB8gF,GAAQ7mF,QAAiBA,GACzB6mF,GAAQhnF,MAAiBA,GACzBgnF,GAAQ/gF,KAAiBA,GACzB+gF,GAAQhhF,MAAiBA,GACzBghF,GAAQhtF,OAAiBA,GACzBgtF,GAAQnhF,MAAiBA,GACzBmhF,GAAQ77E,SAAiBA,GACzB67E,GAAQt3I,YAAiBg2I,GACzBsB,GAAQ5gM,SAAiBs/L,GACzBsB,GAAQtlL,OAAiBgkL,GACzBsB,GAAQ1wG,OAAiBA,GACzB0wG,GAAQ3wG,WAAiBA,GAEzB2wG,GAAQhyE,YAActhB,EAAU,sFAAuFgyF,IACvHsB,GAAQ3iN,KAAOA,GAMf8yH,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BW,EAAc,IAAKka,IACnBla,EAAc,IAAKma,IACnBvZ,EAAc,IAAK,SAAU7oF,EAAOvG,EAAOpoC,GACvCA,EAAOo9D,GAAK,GAAIjmB,MAA6B,IAAxB4wF,WAAWp5F,EAAO,OAE3C6oF,EAAc,IAAK,SAAU7oF,EAAOvG,EAAOpoC,GACvCA,EAAOo9D,GAAK,GAAIjmB,MAAK26E,EAAMnjF,MAM/B0mI,EAAMnwK,QAAU,SA17IhB,SAA0Bw4B,GACtBkxF,GAAelxF,GA27IH+iL,IAEhBprC,EAAMp0J,GAAwBgX,GAC9Bo9I,EAAM9mG,IAAwBA,GAC9B8mG,EAAM7vJ,IAAwBA,GAC9B6vJ,EAAMp7K,IAAwBA,GAC9Bo7K,EAAMjzG,IAAwBk9I,EAC9BjqC,EAAM9qC,KAAwB+4E,GAC9BjuC,EAAMv8C,OAAwB2qF,GAC9BpuC,EAAMvmD,OAAwBA,EAC9BumD,EAAMjgE,OAAwB+qG,GAC9B9qC,EAAMthC,QAAwB0rE,EAC9BpqC,EAAMl7K,SAAwBioN,GAC9B/sC,EAAM1jD,SAAwBA,EAC9B0jD,EAAMj4C,SAAwBumF,GAC9BtuC,EAAMvpC,UAAwBy3E,GAC9BluC,EAAMlgE,WAAwBirG,GAC9B/qC,EAAMhwC,WAAwBA,GAC9BgwC,EAAMx8C,YAAwB6qF,GAC9BruC,EAAMn4C,YAAwB2mF,GAC9BxuC,EAAMt1C,aAAwBA,GAC9Bs1C,EAAMl1C,aAAwBA,GAC9Bk1C,EAAM79D,QAAwB+oG,GAC9BlrC,EAAMl4C,cAAwBymF,GAC9BvuC,EAAM3gD,eAAwBA,EAC9B2gD,EAAMrhC,qBAAwBswE,GAC9BjvC,EAAMphC,sBAAwBswE,GAC9BlvC,EAAM1sC,eAAwBL,GAC9B+sC,EAAMhsL,UAAwB4uC,GAG9Bo9I,EAAM0wC,WACFC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnB3lF,KAAM,aACN4lF,KAAM,QACNC,aAAc,WACdC,QAAS,eACTzlF,KAAM,aACNN,MAAO,WAGJ+0C,UrXyppDkB5sL,KAAKJ,EAASH,EAAoB,GAAIA,EAAoB,KAAKI,KAItF,SAAUA,EAAQiE,EAAqBrE,GAE7C,YsXppyDA,SAASo+N,KAA4C,GAAjB33G,GAAiB,0DAC3CrzF,IAWN,OAVIqzF,GAAW1lH,OAAS,KAC8D,KAA7E,WAAY,UAAW,YAAY0Z,QAAQgsG,EAAW,GAAG57C,eAC1Dz3C,EAAUnyB,KAAK+E,IAAUuH,KAEzB6lB,EAAUnyB,KAAK+E,IAAUqH,WAEzBo5G,EAAW,GAAGoU,QACdznG,EAAUnyB,KAAK+E,IAAUsH,MAG1B8lB,EAGX,QAASirM,KAA2C,GAAjB53G,GAAiB,0DAC5C53C,IAIJ,OAHI43C,GAAW1lH,OAAS,GAAK0lH,EAAW,GAAG53C,WACvCA,EAAW43C,EAAW,GAAG53C,UAEtBA,EAGX,QAASyvJ,KAA6C,GAAjB73G,GAAiB,0DAC9C05E,QAIJ,OAHI15E,GAAW1lH,OAAS,IACpBo/L,EAAa15E,EAAW,GAAGhkH,MAExB09L,EAGX,QAASo+B,KAA2C,GAAjB93G,GAAiB,0DAC5C25E,QAIJ,OAHI35E,GAAW1lH,OAAS,IACpBq/L,EAAW35E,EAAW,GAAGt6F,MAEtBi0K,EAGX,QAASo+B,KAAyC,GAAjB/3G,GAAiB,0DAC1CnmG,QAIJ,OAHImmG,GAAW1lH,OAAS,IACpBuf,EAASmmG,EAAW,GAAGmU,WAEpBt6G,EAGX,QAASm+M,KAAgD,GAAjBh4G,GAAiB,0DACjD57C,QAIJ,OAHI47C,GAAW1lH,OAAS,IACpB8pE,EAAgB47C,EAAW,GAAG57C,eAE3BA,EAGX,QAAS6zJ,KAA4C,GAAjB3jG,GAAiB,0DAC7C5uE,QAIJ,OAHI4uE,GAAWC,QACX7uE,EAAY4uE,EAAWC,MAAMl+G,MAE1BqvC,EAOI,QAASwpK,KAAoC,GAAd/qH,GAAc,yDACxD,QACIvvF,GAAIuvF,EAAQvvF,GAAG2hB,WACfv6B,KAAMmD,IAAYwG,QAClB/I,KAAMunG,EAAQvnG,KACdgpD,OAAQu+C,EAAQnoG,KAChB0pD,UAAWuyK,EAA2B9zH,EAAQmwB,YAC9CP,oBAAqB5vB,EAAQ4vB,oBAC7B7mE,UACIt4C,GAAIuvF,EAAQvvF,GAAG2hB,WACfqvB,OAAQu+C,EAAQnoG,KAChBY,KAAMunG,EAAQvnG,KACdid,QACIjF,GAAIkjN,EAA0B3zH,EAAQ6b,YACtCpjH,KAAMm7N,EAAwB5zH,EAAQ6b,YACtChkH,KAAM67N,EAA4B1zH,EAAQ6b,aAE9CrzF,UAAWgrM,EAA2BxzH,EAAQ6b,YAC9C57C,cAAe4zJ,EAA+B7zH,EAAQ6b,YACtD53C,SAAUwvJ,EAA0BzzH,EAAQ6b,eAxFxD,kBtX0xyDM,SAAUrmH,EAAQiE,EAAqBrE,GAE7C,YuXtxyDe,SAAS41N,KAAgC,GAAd+I,GAAc,uDAAJ,GAE1CnkN,EAAiC,IAAzBmkN,EAAQlkN,QAAQ,KAAckkN,EAA/B,IAA6CA,EACtDhsK,EAAMn4C,CACV,IAAI/Z,OAAQ,CAAC,GAAD,GAC2CA,OAD3C,IACA4Z,SAAYqC,EADZ,EACYA,SAAUC,EADtB,EACsBA,IAC9Bg2C,GAFQ,EAC4B32C,SACpC,KAAsBU,GAAWC,EAAOA,IAAIA,EAASA,GAAOiiN,EAAOpkN,EAEvE,MAAOm4C,GAdX,KAIA,IAAMisK,GAAO,UvXozyDP,SAAUx+N,EAAQiE,EAAqBrE,GAE7C,YwXrzyDe,SAAS61N,KACpB,GAAMv7M,IACF,eAAgB,WAChBW,KAAM,KACN4jN,OAAQ,KACRtqN,KAAM,OACN,YAAa,OACb9R,KAAM,MACNq8N,MAAO,YACP,eAAgB,aAChBtrN,QAAS,aAEb,UAAU4I,EAAU1E,YAAY4C,GAjBpC,kBAAAja,EAAA,MAGM+b,GAHN,IAAA/b,GAGgB,0DxXk1yDV,SAAUD,EAAQiE,EAAqBrE,GAE7C,YyXv0yDe,SAAS81N,GAA+BxkK,GAA8B,gEAAnBytK,EAAmB,EAAnBA,WAAmB,EAC7DztJ,YAAahgB,GAAzB/1C,EADyE,EACzEA,OACR,IAAIA,GAAWwjN,EAAY,CACvB,GAAMC,GAAkBD,EAAW3pM,aACnC,IAAwB,QAApB4pM,EACA,MAAUC,GAAV,yBAA6C1jN,CAC1C,IAAI2jN,EAAkBF,GACzB,MAAUG,GAAV,IAAwBD,EAAkBF,GAA1C,mCAA6FzjN,EAGrG,MAAO,MzX8zyDsBlX,EAAuB,EAAIyxN,CACvC,IAAIsJ,GAAmDp/N,EAAoB,IyXn1yD1Fm/N,EAAa,yBACbF,EAAa,oBAEbC,GACFG,MAAO,MACPC,IAAK,MACLC,IAAK,MACLC,MAAO,UzXi3yDL,SAAUp/N,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBgT,G0X73yD9B,QAASysN,GAAMnuK,EAASgJ,EAAQhgD,GACnC,GACOe,GAAgBf,EAAhBe,GAAIg3D,EAAY/3D,EAAZ+3D,QAMX,OALIA,IAAYA,IAAah3D,GACZA,GAAIg3D,GAEL/X,GAAWj/C,GAAIi/C,EAAOj/C,IAAOi2D,YAAahgB,GAK/C,QAAS8d,GAAT,GAA6F,GAA1D9d,GAA0D,EAA1DA,QAASgJ,EAAiD,EAAjDA,OAAiD,IAAzCp3B,iBAAyC,WAA7B5oB,iBAA6B,WAAjBgB,oBAAiB,EAAN,GAAM,CACxG,IAAe,MAAXg2C,GAAgD,6BAA7Bt+C,EAAOqH,SAASiB,SACnC,MAAO,EAF6F,IAIhGq2C,GAA+CL,EAA/CK,SAAUE,EAAqCP,EAArCO,QAASK,EAA4BZ,EAA5BY,QAJ6E,EAIjDZ,EAAnBsrC,qBAJoE,EAIxD,GAJwD,EAKlGtpC,EAAYmsK,EAAMnuK,EAASgJ,EAAQhgD,GAEnC4yL,EAAgBC,YAAiB7yL,GAEjCiqG,EAAK7sG,YAAYA,GACnBi6C,WACAE,UACAK,WACGoB,EACApwB,EACAgqK,IAGC7xL,EAAOf,EAAPe,GACFqkN,EAAapuK,EAAQqxC,QAAwB,gBAAd/F,GAAgCvhF,IAAOi2C,EAAQj2C,IAAmB,YAAbC,EAEpFd,EAAOklN,EAAa1sN,EAAOqH,SAASiB,SAASwQ,QAAQ,WAAY,IAAM,gBACvEnP,EAAiC,KAAzB3J,EAAOqH,SAASsC,KAAhB,IAAkC3J,EAAOqH,SAASsC,KAAS,EACzE,OAAU3J,GAAOqH,SAAS2B,SAA1B,KAAuChJ,EAAOqH,SAASqC,SAAWC,EAAOnC,EAAO+pG,E1X41yDnDlgH,EAAuB,EAAI+qE,CACvC,IAAIuwJ,GAA6C3/N,EAAoB,IACjE4/N,EAAmD5/N,EAAoB,IACvE6/N,EAA0C7/N,EAAoB,IACnFmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,MAyD1N9f,KAAK8D,EAAqBrE,EAAoB,MAIrE,SAAUI,EAAQD,EAASH,G2Xx7yDjC,QAAS8/N,GAAc5/K,EAAOz7C,GAE5B,SADsB,MAATy7C,EAAgB,EAAIA,EAAMn/C,SACpBg/N,EAAY7/K,EAAOz7C,EAAO,IAAM,EAbrD,GAAIs7N,GAAc,EAAQ,IAgB1B3/N,GAAOD,QAAU2/N,G3X08yDX,SAAU1/N,EAAQD,G4X/8yDxB,QAASg6L,GAAcj6I,EAAOmrI,EAAW2O,EAAWgmC,GAIlD,IAHA,GAAIj/N,GAASm/C,EAAMn/C,OACf0vB,EAAQupK,GAAagmC,EAAY,GAAK,GAElCA,EAAYvvM,MAAYA,EAAQ1vB,GACtC,GAAIsqL,EAAUnrI,EAAMzvB,GAAQA,EAAOyvB,GACjC,MAAOzvB,EAGX,QAAQ,EAGVrwB,EAAOD,QAAUg6L,G5Xi+yDX,SAAU/5L,EAAQD,G6X/+yDxB,QAAS8/N,GAAkB//K,EAAOz7C,EAAOy7N,GAIvC,IAHA,GAAIzvM,IAAS,EACT1vB,EAAkB,MAATm/C,EAAgB,EAAIA,EAAMn/C,SAE9B0vB,EAAQ1vB,GACf,GAAIm/N,EAAWz7N,EAAOy7C,EAAMzvB,IAC1B,OAAM,CAGV,UAGFrwB,EAAOD,QAAU8/N,G7X+/yDX,SAAU7/N,EAAQD,G8X7gzDxB,QAASyhK,GAAU73I,GACjB,MAAO,UAAStlB,GACd,MAAOslB,GAAKtlB,IAIhBrE,EAAOD,QAAUyhK,G9X2hzDX,SAAUxhK,EAAQD,EAASH,G+X5hzDjC,QAAS6hH,GAAS93F,EAAM27D,GACtB,MAAOwxI,GAAYJ,EAAS/sM,EAAM27D,EAAOonE,GAAW/iI,EAAO,IAb7D,GAAI+iI,GAAW,EAAQ,KACnBgqE,EAAW,EAAQ,KACnBI,EAAc,EAAQ,IAc1B92N,GAAOD,QAAU0hH,G/X+izDX,SAAUzhH,EAAQD,EAASH,GgYnizDjC,QAASmgO,GAAkB17N,GACzB,MAAOmjG,GAAanjG,IAAUo1F,EAAYp1F,GA7B5C,GAAIo1F,GAAc,EAAQ,IACtB+N,EAAe,EAAQ,GA+B3BxnG,GAAOD,QAAUggO,GhYskzDX,SAAU//N,EAAQiE,EAAqBrE,GAE7C,YiYxmzDA,oBAC8EogO,QAE/D,eAGP,MAAO,KADchyK,EAAf,OACoB8mC,kBAAmB,SjYknzD/C,SAAU90F,EAAQD,EAASH,GAEjC,cAAa,SkY1nzDb,GA+DA,QAASqgO,KACP,MAAO7+D,GAAO8+D,oBACV,WACA,WAGN,QAASC,GAAcp/E,EAAMpgJ,GAC3B,GAAIs/N,IAAet/N,EACjB,KAAM,IAAI6tC,YAAW,6BAcvB,OAZI4yH,GAAO8+D,qBAETn/E,EAAO,GAAIu2D,YAAW32M,GACtBogJ,EAAK9iI,UAAYmjJ,EAAOrgK,YAGX,OAATggJ,IACFA,EAAO,GAAIqgB,GAAOzgK,IAEpBogJ,EAAKpgJ,OAASA,GAGTogJ,EAaT,QAASqgB,GAAQl4I,EAAKk3M,EAAkBz/N,GACtC,KAAKygK,EAAO8+D,qBAAyBvhN,eAAgByiJ,IACnD,MAAO,IAAIA,GAAOl4I,EAAKk3M,EAAkBz/N,EAI3C,IAAmB,gBAARuoB,GAAkB,CAC3B,GAAgC,gBAArBk3M,GACT,KAAM,IAAIz+N,OACR,oEAGJ,OAAO0+N,GAAY1hN,KAAMuK,GAE3B,MAAO0G,GAAKjR,KAAMuK,EAAKk3M,EAAkBz/N,GAW3C,QAASivB,GAAMmxH,EAAM18I,EAAO+7N,EAAkBz/N,GAC5C,GAAqB,gBAAV0D,GACT,KAAM,IAAIw4B,WAAU,wCAGtB,OAA2B,mBAAhBg6J,cAA+BxyL,YAAiBwyL,aAClDypC,EAAgBv/E,EAAM18I,EAAO+7N,EAAkBz/N,GAGnC,gBAAV0D,GACFk8N,EAAWx/E,EAAM18I,EAAO+7N,GAG1BI,EAAWz/E,EAAM18I,GA4B1B,QAASo8N,GAAYhiL,GACnB,GAAoB,gBAATA,GACT,KAAM,IAAI5hB,WAAU,mCACf,IAAI4hB,EAAO,EAChB,KAAM,IAAIjQ,YAAW,wCAIzB,QAASkyL,GAAO3/E,EAAMtiG,EAAMkiL,EAAMC,GAEhC,MADAH,GAAWhiL,GACPA,GAAQ,EACH0hL,EAAap/E,EAAMtiG,YAExBkiL,EAIyB,gBAAbC,GACVT,EAAap/E,EAAMtiG,GAAMkiL,KAAKA,EAAMC,GACpCT,EAAap/E,EAAMtiG,GAAMkiL,KAAKA,GAE7BR,EAAap/E,EAAMtiG,GAW5B,QAAS4hL,GAAat/E,EAAMtiG,GAG1B,GAFAgiL,EAAWhiL,GACXsiG,EAAOo/E,EAAap/E,EAAMtiG,EAAO,EAAI,EAAoB,EAAhBklI,EAAQllI,KAC5C2iH,EAAO8+D,oBACV,IAAK,GAAIjgO,GAAI,EAAGA,EAAIw+C,IAAQx+C,EAC1B8gJ,EAAK9gJ,GAAK,CAGd,OAAO8gJ,GAgBT,QAASw/E,GAAYx/E,EAAMzpE,EAAQspJ,GAKjC,GAJwB,gBAAbA,IAAsC,KAAbA,IAClCA,EAAW,SAGRx/D,EAAOy/D,WAAWD,GACrB,KAAM,IAAI/jM,WAAU,6CAGtB,IAAIl8B,GAAwC,EAA/BmgO,EAAWxpJ,EAAQspJ,EAChC7/E,GAAOo/E,EAAap/E,EAAMpgJ,EAE1B,IAAI8pF,GAASs2D,EAAKlnH,MAAMy9C,EAAQspJ,EAShC,OAPIn2I,KAAW9pF,IAIbogJ,EAAOA,EAAKvuI,MAAM,EAAGi4E,IAGhBs2D,EAGT,QAASggF,GAAehgF,EAAMjhG,GAC5B,GAAIn/C,GAASm/C,EAAMn/C,OAAS,EAAI,EAA4B,EAAxBgjL,EAAQ7jI,EAAMn/C,OAClDogJ,GAAOo/E,EAAap/E,EAAMpgJ,EAC1B,KAAK,GAAIV,GAAI,EAAGA,EAAIU,EAAQV,GAAK,EAC/B8gJ,EAAK9gJ,GAAgB,IAAX6/C,EAAM7/C,EAElB,OAAO8gJ,GAGT,QAASu/E,GAAiBv/E,EAAMjhG,EAAOkhL,EAAYrgO,GAGjD,GAFAm/C,EAAMghL,WAEFE,EAAa,GAAKlhL,EAAMghL,WAAaE,EACvC,KAAM,IAAIxyL,YAAW,4BAGvB,IAAIsR,EAAMghL,WAAaE,GAAcrgO,GAAU,GAC7C,KAAM,IAAI6tC,YAAW,4BAmBvB,OAfEsR,YADEkhL,YAA4BrgO,EACtB,GAAI22M,YAAWx3J,YACdn/C,EACD,GAAI22M,YAAWx3J,EAAOkhL,GAEtB,GAAI1pB,YAAWx3J,EAAOkhL,EAAYrgO,GAGxCygK,EAAO8+D,qBAETn/E,EAAOjhG,EACPihG,EAAK9iI,UAAYmjJ,EAAOrgK,WAGxBggJ,EAAOggF,EAAchgF,EAAMjhG,GAEtBihG,EAGT,QAASy/E,GAAYz/E,EAAM58I,GACzB,GAAIi9J,EAAOE,SAASn9J,GAAM,CACxB,GAAIqtC,GAA4B,EAAtBmyI,EAAQx/K,EAAIxD,OAGtB,OAFAogJ,GAAOo/E,EAAap/E,EAAMvvG,GAEN,IAAhBuvG,EAAKpgJ,OACAogJ,GAGT58I,EAAI47J,KAAKhf,EAAM,EAAG,EAAGvvG,GACduvG,GAGT,GAAI58I,EAAK,CACP,GAA4B,mBAAhB0yL,cACR1yL,EAAIqyM,iBAAkB3f,cAAgB,UAAY1yL,GACpD,MAA0B,gBAAfA,GAAIxD,QAAuBsgO,EAAM98N,EAAIxD,QACvCw/N,EAAap/E,EAAM,GAErBggF,EAAchgF,EAAM58I,EAG7B,IAAiB,WAAbA,EAAI9B,MAAqBqtB,EAAQvrB,EAAIshD,MACvC,MAAOs7K,GAAchgF,EAAM58I,EAAIshD,MAInC,KAAM,IAAI5oB,WAAU,sFAGtB,QAAS8mJ,GAAShjL,GAGhB,GAAIA,GAAUs/N,IACZ,KAAM,IAAIzxL,YAAW,0DACayxL,IAAarjM,SAAS,IAAM,SAEhE,OAAgB,GAATj8B,EAGT,QAASugO,GAAYvgO,GAInB,OAHKA,GAAUA,IACbA,EAAS,GAEJygK,EAAOs/D,OAAO//N,GA+EvB,QAASmgO,GAAYxpJ,EAAQspJ,GAC3B,GAAIx/D,EAAOE,SAAShqF,GAClB,MAAOA,GAAO32E,MAEhB,IAA2B,mBAAhBk2L,cAA6D,kBAAvBA,aAAYyf,SACxDzf,YAAYyf,OAAOh/H,IAAWA,YAAkBu/G,cACnD,MAAOv/G,GAAOwpJ,UAEM,iBAAXxpJ,KACTA,EAAS,GAAKA,EAGhB,IAAI9lC,GAAM8lC,EAAO32E,MACjB,IAAY,IAAR6wC,EAAW,MAAO,EAItB,KADA,GAAI2vL,QAEF,OAAQP,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,MAAOpvL,EACT,KAAK,OACL,IAAK,QACL,SAAK,GACH,MAAO4vL,GAAY9pJ,GAAQ32E,MAC7B,KAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAa,GAAN6wC,CACT,KAAK,MACH,MAAOA,KAAQ,CACjB,KAAK,SACH,MAAO6vL,GAAc/pJ,GAAQ32E,MAC/B,SACE,GAAIwgO,EAAa,MAAOC,GAAY9pJ,GAAQ32E,MAC5CigO,IAAY,GAAKA,GAAU5rM,cAC3BmsM,MAMR,QAASG,GAAcV,EAAUt7I,EAAOC,GACtC,GAAI47I,KAcJ,cALI77I,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ3mE,KAAKhe,OACf,MAAO,EAOT,cAJI4kF,GAAqBA,EAAM5mE,KAAKhe,UAClC4kF,EAAM5mE,KAAKhe,QAGT4kF,GAAO,EACT,MAAO,EAOT,IAHAA,KAAS,EACTD,KAAW,EAEPC,GAAOD,EACT,MAAO,EAKT,KAFKs7I,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,MAAOW,GAAS5iN,KAAM2mE,EAAOC,EAE/B,KAAK,OACL,IAAK,QACH,MAAOi8I,GAAU7iN,KAAM2mE,EAAOC,EAEhC,KAAK,QACH,MAAOk8I,GAAW9iN,KAAM2mE,EAAOC,EAEjC,KAAK,SACL,IAAK,SACH,MAAOm8I,GAAY/iN,KAAM2mE,EAAOC,EAElC,KAAK,SACH,MAAOo8I,GAAYhjN,KAAM2mE,EAAOC,EAElC,KAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAOq8I,GAAajjN,KAAM2mE,EAAOC,EAEnC,SACE,GAAI47I,EAAa,KAAM,IAAItkM,WAAU,qBAAuB+jM,EAC5DA,IAAYA,EAAW,IAAI5rM,cAC3BmsM,MASR,QAASU,GAAMn7M,EAAGljB,EAAGV,GACnB,GAAI7C,GAAIymB,EAAEljB,EACVkjB,GAAEljB,GAAKkjB,EAAE5jB,GACT4jB,EAAE5jB,GAAK7C,EAmIT,QAAS6hO,GAAsBtrB,EAAQlgK,EAAK0qL,EAAYJ,EAAUzuN,GAEhE,GAAsB,IAAlBqkM,EAAO71M,OAAc,OAAQ,CAmBjC,IAhB0B,gBAAfqgO,IACTJ,EAAWI,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACV94F,MAAM84F,KAERA,EAAa7uN,EAAM,EAAKqkM,EAAO71M,OAAS,GAItCqgO,EAAa,IAAGA,EAAaxqB,EAAO71M,OAASqgO,GAC7CA,GAAcxqB,EAAO71M,OAAQ,CAC/B,GAAIwR,EAAK,OAAQ,CACZ6uN,GAAaxqB,EAAO71M,OAAS,MAC7B,IAAIqgO,EAAa,EAAG,CACzB,IAAI7uN,EACC,OAAQ,CADJ6uN,GAAa,EAUxB,GALmB,gBAAR1qL,KACTA,EAAM8qH,EAAOxxI,KAAK0mB,EAAKsqL,IAIrBx/D,EAAOE,SAAShrH,GAElB,MAAmB,KAAfA,EAAI31C,QACE,EAEHohO,EAAavrB,EAAQlgK,EAAK0qL,EAAYJ,EAAUzuN,EAClD,IAAmB,gBAARmkC,GAEhB,MADAA,IAAY,IACR8qH,EAAO8+D,qBACiC,kBAAjC5oB,YAAWv2M,UAAUsZ,QAC1BlI,EACKmlM,WAAWv2M,UAAUsZ,QAAQla,KAAKq2M,EAAQlgK,EAAK0qL,GAE/C1pB,WAAWv2M,UAAUihO,YAAY7hO,KAAKq2M,EAAQlgK,EAAK0qL,GAGvDe,EAAavrB,GAAUlgK,GAAO0qL,EAAYJ,EAAUzuN,EAG7D,MAAM,IAAI0qB,WAAU,wCAGtB,QAASklM,GAAcxvN,EAAK+jC,EAAK0qL,EAAYJ,EAAUzuN,GAmBrD,QAAS8vN,GAAMC,EAAKjiO,GAClB,MAAkB,KAAdkiO,EACKD,EAAIjiO,GAEJiiO,EAAIE,aAAaniO,EAAIkiO,GAtBhC,GAAIA,GAAY,EACZE,EAAY9vN,EAAI5R,OAChB2hO,EAAYhsL,EAAI31C,MAEpB,aAAIigO,IAEe,UADjBA,EAAWx6L,OAAOw6L,GAAU5rM,gBACY,UAAb4rM,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAIruN,EAAI5R,OAAS,GAAK21C,EAAI31C,OAAS,EACjC,OAAQ,CAEVwhO,GAAY,EACZE,GAAa,EACbC,GAAa,EACbtB,GAAc,EAYlB,GAAI/gO,EACJ,IAAIkS,EAAK,CACP,GAAIg/C,IAAc,CAClB,KAAKlxD,EAAI+gO,EAAY/gO,EAAIoiO,EAAWpiO,IAClC,GAAIgiO,EAAK1vN,EAAKtS,KAAOgiO,EAAK3rL,GAAqB,IAAhB6a,EAAoB,EAAIlxD,EAAIkxD,IAEzD,IADoB,IAAhBA,IAAmBA,EAAalxD,GAChCA,EAAIkxD,EAAa,IAAMmxK,EAAW,MAAOnxK,GAAagxK,OAEtC,IAAhBhxK,IAAmBlxD,GAAKA,EAAIkxD,GAChCA,GAAc,MAKlB,KADI6vK,EAAasB,EAAYD,IAAWrB,EAAaqB,EAAYC,GAC5DriO,EAAI+gO,EAAY/gO,GAAK,EAAGA,IAAK,CAEhC,IAAK,GADDsiO,MACK5hM,EAAI,EAAGA,EAAI2hM,EAAW3hM,IAC7B,GAAIshM,EAAK1vN,EAAKtS,EAAI0gC,KAAOshM,EAAK3rL,EAAK3V,GAAI,CACrC4hM,IACA,OAGJ,GAAIA,EAAO,MAAOtiO,GAItB,OAAQ,EAeV,QAASuiO,GAAUN,EAAK5qJ,EAAQ4lE,EAAQv8I,GACtCu8I,EAASl0F,OAAOk0F,IAAW,CAC3B,IAAIulF,GAAYP,EAAIvhO,OAASu8I,CACxBv8I,IAGHA,EAASqoD,OAAOroD,IACH8hO,IACX9hO,EAAS8hO,GAJX9hO,EAAS8hO,CASX,IAAIC,GAASprJ,EAAO32E,MACpB,IAAI+hO,EAAS,GAAM,EAAG,KAAM,IAAI7lM,WAAU,qBAEtCl8B,GAAS+hO,EAAS,IACpB/hO,EAAS+hO,EAAS,EAEpB,KAAK,GAAIziO,GAAI,EAAGA,EAAIU,IAAUV,EAAG,CAC/B,GAAIwjC,GAAS4D,SAASiwC,EAAOzwC,OAAW,EAAJ5mC,EAAO,GAAI,GAC/C,IAAIioI,MAAMzkG,GAAS,MAAOxjC,EAC1BiiO,GAAIhlF,EAASj9I,GAAKwjC,EAEpB,MAAOxjC,GAGT,QAAS0iO,GAAWT,EAAK5qJ,EAAQ4lE,EAAQv8I,GACvC,MAAOiiO,GAAWxB,EAAY9pJ,EAAQ4qJ,EAAIvhO,OAASu8I,GAASglF,EAAKhlF,EAAQv8I,GAG3E,QAASkiO,GAAYX,EAAK5qJ,EAAQ4lE,EAAQv8I,GACxC,MAAOiiO,GAAWE,EAAaxrJ,GAAS4qJ,EAAKhlF,EAAQv8I,GAGvD,QAASoiO,GAAab,EAAK5qJ,EAAQ4lE,EAAQv8I,GACzC,MAAOkiO,GAAWX,EAAK5qJ,EAAQ4lE,EAAQv8I,GAGzC,QAASqiO,GAAad,EAAK5qJ,EAAQ4lE,EAAQv8I,GACzC,MAAOiiO,GAAWvB,EAAc/pJ,GAAS4qJ,EAAKhlF,EAAQv8I,GAGxD,QAASsiO,GAAWf,EAAK5qJ,EAAQ4lE,EAAQv8I,GACvC,MAAOiiO,GAAWM,EAAe5rJ,EAAQ4qJ,EAAIvhO,OAASu8I,GAASglF,EAAKhlF,EAAQv8I,GAkF9E,QAASghO,GAAaO,EAAK58I,EAAOC,GAChC,MAAc,KAAVD,GAAeC,IAAQ28I,EAAIvhO,OACtBwiO,EAAOC,cAAclB,GAErBiB,EAAOC,cAAclB,EAAI1vN,MAAM8yE,EAAOC,IAIjD,QAASi8I,GAAWU,EAAK58I,EAAOC,GAC9BA,EAAMtoD,KAAKgpD,IAAIi8I,EAAIvhO,OAAQ4kF,EAI3B,KAHA,GAAIkhD,MAEAxmI,EAAIqlF,EACDrlF,EAAIslF,GAAK,CACd,GAAI89I,GAAYnB,EAAIjiO,GAChBqjO,EAAY,KACZC,EAAoBF,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,CAEJ,IAAIpjO,EAAIsjO,GAAoBh+I,EAAK,CAC/B,GAAIi+I,GAAYC,EAAWC,EAAYC,CAEvC,QAAQJ,GACN,IAAK,GACCF,EAAY,MACdC,EAAYD,EAEd,MACF,KAAK,GAEyB,MAAV,KADlBG,EAAatB,EAAIjiO,EAAI,OAEnB0jO,GAA6B,GAAZN,IAAqB,EAAoB,GAAbG,GACzB,MAClBF,EAAYK,EAGhB,MACF,KAAK,GACHH,EAAatB,EAAIjiO,EAAI,GACrBwjO,EAAYvB,EAAIjiO,EAAI,GACQ,MAAV,IAAbujO,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZN,IAAoB,IAAoB,GAAbG,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,EAGhB,MACF,KAAK,GACHH,EAAatB,EAAIjiO,EAAI,GACrBwjO,EAAYvB,EAAIjiO,EAAI,GACpByjO,EAAaxB,EAAIjiO,EAAI,GACO,MAAV,IAAbujO,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZN,IAAoB,IAAqB,GAAbG,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5CL,EAAYK,IAMJ,OAAdL,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACb78F,EAAI5lI,KAAKyiO,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvB78F,EAAI5lI,KAAKyiO,GACTrjO,GAAKsjO,EAGP,MAAOK,GAAsBn9F,GAQ/B,QAASm9F,GAAuBC,GAC9B,GAAIryL,GAAMqyL,EAAWljO,MACrB,IAAI6wC,GAAOsyL,EACT,MAAO19L,QAAOunB,aAAat8C,MAAM+0B,OAAQy9L,EAM3C,KAFA,GAAIp9F,GAAM,GACNxmI,EAAI,EACDA,EAAIuxC,GACTi1F,GAAOrgG,OAAOunB,aAAat8C,MACzB+0B,OACAy9L,EAAWrxN,MAAMvS,EAAGA,GAAK6jO,GAG7B,OAAOr9F,GAGT,QAASg7F,GAAYS,EAAK58I,EAAOC,GAC/B,GAAIhuD,GAAM,EACVguD,GAAMtoD,KAAKgpD,IAAIi8I,EAAIvhO,OAAQ4kF,EAE3B,KAAK,GAAItlF,GAAIqlF,EAAOrlF,EAAIslF,IAAOtlF,EAC7Bs3B,GAAO6O,OAAOunB,aAAsB,IAATu0K,EAAIjiO,GAEjC,OAAOs3B,GAGT,QAASmqM,GAAaQ,EAAK58I,EAAOC,GAChC,GAAIhuD,GAAM,EACVguD,GAAMtoD,KAAKgpD,IAAIi8I,EAAIvhO,OAAQ4kF,EAE3B,KAAK,GAAItlF,GAAIqlF,EAAOrlF,EAAIslF,IAAOtlF,EAC7Bs3B,GAAO6O,OAAOunB,aAAau0K,EAAIjiO,GAEjC,OAAOs3B,GAGT,QAASgqM,GAAUW,EAAK58I,EAAOC,GAC7B,GAAI/zC,GAAM0wL,EAAIvhO,SAET2kF,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAM/zC,KAAK+zC,EAAM/zC,EAGxC,KAAK,GADDsyG,GAAM,GACD7jJ,EAAIqlF,EAAOrlF,EAAIslF,IAAOtlF,EAC7B6jJ,GAAOigF,EAAM7B,EAAIjiO,GAEnB,OAAO6jJ,GAGT,QAAS89E,GAAcM,EAAK58I,EAAOC,GAGjC,IAAK,GAFDy+I,GAAQ9B,EAAI1vN,MAAM8yE,EAAOC,GACzBkhD,EAAM,GACDxmI,EAAI,EAAGA,EAAI+jO,EAAMrjO,OAAQV,GAAK,EACrCwmI,GAAOrgG,OAAOunB,aAAaq2K,EAAM/jO,GAAoB,IAAf+jO,EAAM/jO,EAAI,GAElD,OAAOwmI,GA0CT,QAASw9F,GAAa/mF,EAAQwyC,EAAK/uL,GACjC,GAAKu8I,EAAS,GAAO,GAAKA,EAAS,EAAG,KAAM,IAAI1uG,YAAW,qBAC3D,IAAI0uG,EAASwyC,EAAM/uL,EAAQ,KAAM,IAAI6tC,YAAW,yCA+JlD,QAAS01L,GAAUhC,EAAK79N,EAAO64I,EAAQwyC,EAAKxyJ,EAAK+oD,GAC/C,IAAKm7E,EAAOE,SAAS4gE,GAAM,KAAM,IAAIrlM,WAAU,8CAC/C,IAAIx4B,EAAQ64B,GAAO74B,EAAQ4hF,EAAK,KAAM,IAAIz3C,YAAW,oCACrD,IAAI0uG,EAASwyC,EAAMwyC,EAAIvhO,OAAQ,KAAM,IAAI6tC,YAAW,sBAkDtD,QAAS21L,GAAmBjC,EAAK79N,EAAO64I,EAAQknF,GAC1C//N,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,EACxC,KAAK,GAAIpE,GAAI,EAAG0gC,EAAI1D,KAAKgpD,IAAIi8I,EAAIvhO,OAASu8I,EAAQ,GAAIj9I,EAAI0gC,IAAK1gC,EAC7DiiO,EAAIhlF,EAASj9I,IAAMoE,EAAS,KAAS,GAAK+/N,EAAenkO,EAAI,EAAIA,MAClC,GAA5BmkO,EAAenkO,EAAI,EAAIA,GA8B9B,QAASokO,GAAmBnC,EAAK79N,EAAO64I,EAAQknF,GAC1C//N,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,EAC5C,KAAK,GAAIpE,GAAI,EAAG0gC,EAAI1D,KAAKgpD,IAAIi8I,EAAIvhO,OAASu8I,EAAQ,GAAIj9I,EAAI0gC,IAAK1gC,EAC7DiiO,EAAIhlF,EAASj9I,GAAMoE,IAAuC,GAA5B+/N,EAAenkO,EAAI,EAAIA,GAAU,IAmJnE,QAASqkO,GAAcpC,EAAK79N,EAAO64I,EAAQwyC,EAAKxyJ,EAAK+oD,GACnD,GAAIi3D,EAASwyC,EAAMwyC,EAAIvhO,OAAQ,KAAM,IAAI6tC,YAAW,qBACpD,IAAI0uG,EAAS,EAAG,KAAM,IAAI1uG,YAAW,sBAGvC,QAAS+1L,GAAYrC,EAAK79N,EAAO64I,EAAQknF,EAAcI,GAKrD,MAJKA,IACHF,EAAapC,EAAK79N,EAAO64I,EAAQ,EAAG,uBAAyB,uBAE/DunF,EAAQ5qM,MAAMqoM,EAAK79N,EAAO64I,EAAQknF,EAAc,GAAI,GAC7ClnF,EAAS,EAWlB,QAASwnF,GAAaxC,EAAK79N,EAAO64I,EAAQknF,EAAcI,GAKtD,MAJKA,IACHF,EAAapC,EAAK79N,EAAO64I,EAAQ,EAAG,wBAA0B,wBAEhEunF,EAAQ5qM,MAAMqoM,EAAK79N,EAAO64I,EAAQknF,EAAc,GAAI,GAC7ClnF,EAAS,EAgIlB,QAASynF,GAAah+L,GAIpB,GAFAA,EAAMi+L,EAAWj+L,GAAKjb,QAAQm5M,GAAmB,IAE7Cl+L,EAAIhmC,OAAS,EAAG,MAAO,EAE3B,MAAOgmC,EAAIhmC,OAAS,GAAM,GACxBgmC,GAAY,GAEd,OAAOA,GAGT,QAASi+L,GAAYj+L,GACnB,MAAIA,GAAIu7D,KAAav7D,EAAIu7D,OAClBv7D,EAAIjb,QAAQ,aAAc,IAGnC,QAASq4M,GAAOvgO,GACd,MAAIA,GAAI,GAAW,IAAMA,EAAEo5B,SAAS,IAC7Bp5B,EAAEo5B,SAAS,IAGpB,QAASwkM,GAAa9pJ,EAAQm6C,GAC5BA,EAAQA,GAASqzG,GAMjB,KAAK,GALDxB,GACA3iO,EAAS22E,EAAO32E,OAChBokO,EAAgB,KAChBf,KAEK/jO,EAAI,EAAGA,EAAIU,IAAUV,EAAG,CAI/B,IAHAqjO,EAAYhsJ,EAAOi9E,WAAWt0J,IAGd,OAAUqjO,EAAY,MAAQ,CAE5C,IAAKyB,EAAe,CAElB,GAAIzB,EAAY,MAAQ,EAEjB7xG,GAAS,IAAM,GAAGuyG,EAAMnjO,KAAK,IAAM,IAAM,IAC9C,UACK,GAAIZ,EAAI,IAAMU,EAAQ,EAEtB8wH,GAAS,IAAM,GAAGuyG,EAAMnjO,KAAK,IAAM,IAAM,IAC9C,UAIFkkO,EAAgBzB,CAEhB,UAIF,GAAIA,EAAY,MAAQ,EACjB7xG,GAAS,IAAM,GAAGuyG,EAAMnjO,KAAK,IAAM,IAAM,KAC9CkkO,EAAgBzB,CAChB,UAIFA,EAAkE,OAArDyB,EAAgB,OAAU,GAAKzB,EAAY,WAC/CyB,KAEJtzG,GAAS,IAAM,GAAGuyG,EAAMnjO,KAAK,IAAM,IAAM,IAMhD,IAHAkkO,EAAgB,KAGZzB,EAAY,IAAM,CACpB,IAAK7xG,GAAS,GAAK,EAAG,KACtBuyG,GAAMnjO,KAAKyiO,OACN,IAAIA,EAAY,KAAO,CAC5B,IAAK7xG,GAAS,GAAK,EAAG,KACtBuyG,GAAMnjO,KACJyiO,GAAa,EAAM,IACP,GAAZA,EAAmB,SAEhB,IAAIA,EAAY,MAAS,CAC9B,IAAK7xG,GAAS,GAAK,EAAG,KACtBuyG,GAAMnjO,KACJyiO,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,KAAM,IAAI3hO,OAAM,qBARhB,KAAK8vH,GAAS,GAAK,EAAG,KACtBuyG,GAAMnjO,KACJyiO,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,MAAOU,GAGT,QAASlB,GAAcn8L,GAErB,IAAK,GADDq+L,MACK/kO,EAAI,EAAGA,EAAI0mC,EAAIhmC,SAAUV,EAEhC+kO,EAAUnkO,KAAyB,IAApB8lC,EAAI4tH,WAAWt0J,GAEhC,OAAO+kO,GAGT,QAAS9B,GAAgBv8L,EAAK8qF,GAG5B,IAAK,GAFD1uH,GAAGkiO,EAAIC,EACPF,KACK/kO,EAAI,EAAGA,EAAI0mC,EAAIhmC,WACjB8wH,GAAS,GAAK,KADaxxH,EAGhC8C,EAAI4jC,EAAI4tH,WAAWt0J,GACnBglO,EAAKliO,GAAK,EACVmiO,EAAKniO,EAAI,IACTiiO,EAAUnkO,KAAKqkO,GACfF,EAAUnkO,KAAKokO,EAGjB,OAAOD,GAGT,QAAS3D,GAAe16L,GACtB,MAAOw8L,GAAOgC,YAAYR,EAAYh+L,IAGxC,QAASi8L,GAAYlgO,EAAKs8C,EAAKk+F,EAAQv8I,GACrC,IAAK,GAAIV,GAAI,EAAGA,EAAIU,KACbV,EAAIi9I,GAAUl+F,EAAIr+C,QAAYV,GAAKyC,EAAI/B,UADhBV,EAE5B++C,EAAI/+C,EAAIi9I,GAAUx6I,EAAIzC,EAExB,OAAOA,GAGT,QAASghO,GAAO3qL,GACd,MAAOA,KAAQA;;;;;;AAjvDjB,GAAI6sL,GAAS,EAAQ,KACjBsB,EAAU,EAAQ,KAClB/0M,EAAU,EAAQ,IAEtB3vB,GAAQqhK,OAASA,EACjBrhK,EAAQmhO,WAAaA,EACrBnhO,EAAQqlO,kBAAoB,GA0B5BhkE,EAAO8+D,6BAAsBttN,EAAOstN,oBAChCttN,EAAOstN,oBAQX,WACE,IACE,GAAI3tN,GAAM,GAAI+kM,YAAW,EAEzB,OADA/kM,GAAI0L,WAAaA,UAAWq5L,WAAWv2M,UAAWskO,IAAK,WAAc,MAAO,MACvD,KAAd9yN,EAAI8yN,OACiB,kBAAjB9yN,GAAI+yN,UACuB,IAAlC/yN,EAAI+yN,SAAS,EAAG,GAAGxE,WACvB,MAAO3/N,GACP,OAAM,MAVVpB,EAAQkgO,WAAaA,IAkErB7+D,EAAOrzD,SAAW,KAGlBqzD,EAAOmkE,SAAW,SAAUhzN,GAE1B,MADAA,GAAI0L,UAAYmjJ,EAAOrgK,UAChBwR,GA2BT6uJ,EAAOxxI,KAAO,SAAUvrB,EAAO+7N,EAAkBz/N,GAC/C,MAAOivB,GAAK,KAAMvrB,EAAO+7N,EAAkBz/N,IAGzCygK,EAAO8+D,sBACT9+D,EAAOrgK,UAAUkd,UAAYq5L,WAAWv2M,UACxCqgK,EAAOnjJ,UAAYq5L,WACG,mBAAX7uJ,SAA0BA,OAAO+8K,SACxCpkE,EAAO34G,OAAO+8K,WAAapkE,GAE7BtgK,OAAOsC,eAAeg+J,EAAQ34G,OAAO+8K,SACnCnhO,MAAO,KACPhB,cAAaA,KAiCnB+9J,EAAOs/D,MAAQ,SAAUjiL,EAAMkiL,EAAMC,GACnC,MAAOF,GAAM,KAAMjiL,EAAMkiL,EAAMC,IAiBjCx/D,EAAOi/D,YAAc,SAAU5hL,GAC7B,MAAO4hL,GAAY,KAAM5hL,IAK3B2iH,EAAOqkE,gBAAkB,SAAUhnL,GACjC,MAAO4hL,GAAY,KAAM5hL,IAiH3B2iH,EAAOE,SAAW,SAAmB56I,GACnC,QAAe,MAALA,IAAaA,EAAE0vL,YAG3Bh1C,EAAO+0C,QAAU,SAAkB7sL,EAAG5C,GACpC,IAAK06I,EAAOE,SAASh4I,KAAO83I,EAAOE,SAAS56I,GAC1C,KAAM,IAAImW,WAAU,4BAGtB,IAAIvT,IAAM5C,EAAG,MAAO,EAKpB,KAAK,GAHDvB,GAAImE,EAAE3oB,OACNykB,EAAIsB,EAAE/lB,OAEDV,EAAI,EAAGuxC,EAAMvU,KAAKgpD,IAAI9gE,EAAGC,GAAInlB,EAAIuxC,IAAOvxC,EAC/C,GAAIqpB,EAAErpB,KAAOymB,EAAEzmB,GAAI,CACjBklB,EAAImE,EAAErpB,GACNmlB,EAAIsB,EAAEzmB,EACN,OAIJ,MAAIklB,GAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GAGTi8I,EAAOy/D,WAAa,SAAqBD,GACvC,OAAQx6L,OAAOw6L,GAAU5rM,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAM,CACR,SACE,OAAM,IAIZosI,EAAO5vI,OAAS,SAAiB+sC,EAAM59D,GACrC,IAAK+uB,EAAQ6uC,GACX,KAAM,IAAI1hC,WAAU,8CAGtB,IAAoB,IAAhB0hC,EAAK59D,OACP,MAAOygK,GAAOs/D,MAAM,EAGtB,IAAIzgO,EACJ,aAAIU,EAEF,IADAA,EAAS,EACJV,EAAI,EAAGA,EAAIs+D,EAAK59D,SAAUV,EAC7BU,GAAU49D,EAAKt+D,GAAGU,MAItB,IAAI61M,GAASp1C,EAAOi/D,YAAY1/N,GAC5Bm0G,EAAM,CACV,KAAK70G,EAAI,EAAGA,EAAIs+D,EAAK59D,SAAUV,EAAG,CAChC,GAAIiiO,GAAM3jK,EAAKt+D,EACf,KAAKmhK,EAAOE,SAAS4gE,GACnB,KAAM,IAAIrlM,WAAU,8CAEtBqlM,GAAIniE,KAAKy2C,EAAQ1hG,GACjBA,GAAOotH,EAAIvhO,OAEb,MAAO61M,IA8CTp1C,EAAO0/D,WAAaA,EA0EpB1/D,EAAOrgK,UAAUq1M,aAQjBh1C,EAAOrgK,UAAU2kO,OAAS,WACxB,GAAIl0L,GAAM7yB,KAAKhe,MACf,IAAI6wC,EAAM,GAAM,EACd,KAAM,IAAIhD,YAAW,4CAEvB,KAAK,GAAIvuC,GAAI,EAAGA,EAAIuxC,EAAKvxC,GAAK,EAC5B4hO,EAAKljN,KAAM1e,EAAGA,EAAI,EAEpB,OAAO0e,OAGTyiJ,EAAOrgK,UAAU4kO,OAAS,WACxB,GAAIn0L,GAAM7yB,KAAKhe,MACf,IAAI6wC,EAAM,GAAM,EACd,KAAM,IAAIhD,YAAW,4CAEvB,KAAK,GAAIvuC,GAAI,EAAGA,EAAIuxC,EAAKvxC,GAAK,EAC5B4hO,EAAKljN,KAAM1e,EAAGA,EAAI,GAClB4hO,EAAKljN,KAAM1e,EAAI,EAAGA,EAAI,EAExB,OAAO0e,OAGTyiJ,EAAOrgK,UAAU6kO,OAAS,WACxB,GAAIp0L,GAAM7yB,KAAKhe,MACf,IAAI6wC,EAAM,GAAM,EACd,KAAM,IAAIhD,YAAW,4CAEvB,KAAK,GAAIvuC,GAAI,EAAGA,EAAIuxC,EAAKvxC,GAAK,EAC5B4hO,EAAKljN,KAAM1e,EAAGA,EAAI,GAClB4hO,EAAKljN,KAAM1e,EAAI,EAAGA,EAAI,GACtB4hO,EAAKljN,KAAM1e,EAAI,EAAGA,EAAI,GACtB4hO,EAAKljN,KAAM1e,EAAI,EAAGA,EAAI,EAExB,OAAO0e,OAGTyiJ,EAAOrgK,UAAU67B,SAAW,WAC1B,GAAIj8B,GAAuB,EAAdge,KAAKhe,MAClB,OAAe,KAAXA,EAAqB,GACA,IAArB2Q,UAAU3Q,OAAqB6gO,EAAU7iN,KAAM,EAAGhe,GAC/C2gO,EAAajwN,MAAMsN,KAAMrN,YAGlC8vJ,EAAOrgK,UAAU8kO,OAAS,SAAiBn/M,GACzC,IAAK06I,EAAOE,SAAS56I,GAAI,KAAM,IAAImW,WAAU,4BAC7C,OAAIle,QAAS+H,GACsB,IAA5B06I,EAAO+0C,QAAQx3L,KAAM+H,IAG9B06I,EAAOrgK,UAAUqR,QAAU,WACzB,GAAIu0B,GAAM,GACNzJ,EAAMn9B,EAAQqlO,iBAKlB,OAJIzmN,MAAKhe,OAAS,IAChBgmC,EAAMhoB,KAAKie,SAAS,MAAO,EAAGM,GAAKjU,MAAM,SAAS2H,KAAK,KACnDjS,KAAKhe,OAASu8B,IAAKyJ,GAAO,UAEzB,WAAaA,EAAM,KAG5By6H,EAAOrgK,UAAUo1M,QAAU,SAAkBl2L,EAAQqlE,EAAOC,EAAKugJ,EAAWC,GAC1E,IAAK3kE,EAAOE,SAASrhJ,GACnB,KAAM,IAAI4c,WAAU,4BAgBtB,aAbIyoD,IACFA,EAAQ,YAENC,IACFA,EAAMtlE,EAASA,EAAOtf,OAAS,YAE7BmlO,IACFA,EAAY,YAEVC,IACFA,EAAUpnN,KAAKhe,QAGb2kF,EAAQ,GAAKC,EAAMtlE,EAAOtf,QAAUmlO,EAAY,GAAKC,EAAUpnN,KAAKhe,OACtE,KAAM,IAAI6tC,YAAW,qBAGvB,IAAIs3L,GAAaC,GAAWzgJ,GAASC,EACnC,MAAO,EAET,IAAIugJ,GAAaC,EACf,OAAQ,CAEV,IAAIzgJ,GAASC,EACX,MAAO,EAQT,IALAD,KAAW,EACXC,KAAS,EACTugJ,KAAe,EACfC,KAAa,EAETpnN,OAASsB,EAAQ,MAAO,EAS5B,KAAK,GAPDkF,GAAI4gN,EAAUD,EACd1gN,EAAImgE,EAAMD,EACV9zC,EAAMvU,KAAKgpD,IAAI9gE,EAAGC,GAElB4gN,EAAWrnN,KAAKnM,MAAMszN,EAAWC,GACjCE,EAAahmN,EAAOzN,MAAM8yE,EAAOC,GAE5BtlF,EAAI,EAAGA,EAAIuxC,IAAOvxC,EACzB,GAAI+lO,EAAS/lO,KAAOgmO,EAAWhmO,GAAI,CACjCklB,EAAI6gN,EAAS/lO,GACbmlB,EAAI6gN,EAAWhmO,EACf,OAIJ,MAAIklB,GAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GA6HTi8I,EAAOrgK,UAAUk0B,SAAW,SAAmBqhB,EAAK0qL,EAAYJ,GAC9D,OAAoD,IAA7CjiN,KAAKtE,QAAQi8B,EAAK0qL,EAAYJ,IAGvCx/D,EAAOrgK,UAAUsZ,QAAU,SAAkBi8B,EAAK0qL,EAAYJ,GAC5D,MAAOkB,GAAqBnjN,KAAM23B,EAAK0qL,EAAYJ,OAGrDx/D,EAAOrgK,UAAUihO,YAAc,SAAsB1rL,EAAK0qL,EAAYJ,GACpE,MAAOkB,GAAqBnjN,KAAM23B,EAAK0qL,EAAYJ,OAkDrDx/D,EAAOrgK,UAAU84B,MAAQ,SAAgBy9C,EAAQ4lE,EAAQv8I,EAAQigO,GAE/D,YAAI1jF,EACF0jF,EAAW,OACXjgO,EAASge,KAAKhe,OACdu8I,EAAS,MAEJ,aAAIv8I,GAA0C,gBAAXu8I,GACxC0jF,EAAW1jF,EACXv8I,EAASge,KAAKhe,OACdu8I,EAAS,MAEJ,KAAInoG,SAASmoG,GAWlB,KAAM,IAAIv7I,OACR,0EAXFu7I,IAAkB,EACdnoG,SAASp0C,IACXA,GAAkB,WACdigO,IAAwBA,EAAW,UAEvCA,EAAWjgO,EACXA,UASJ,GAAI8hO,GAAY9jN,KAAKhe,OAASu8I,CAG9B,cAFIv8I,GAAwBA,EAAS8hO,KAAW9hO,EAAS8hO,GAEpDnrJ,EAAO32E,OAAS,IAAMA,EAAS,GAAKu8I,EAAS,IAAOA,EAASv+H,KAAKhe,OACrE,KAAM,IAAI6tC,YAAW,yCAGlBoyL,KAAUA,EAAW,OAG1B,KADA,GAAIO,QAEF,OAAQP,GACN,IAAK,MACH,MAAO4B,GAAS7jN,KAAM24D,EAAQ4lE,EAAQv8I,EAExC,KAAK,OACL,IAAK,QACH,MAAOgiO,GAAUhkN,KAAM24D,EAAQ4lE,EAAQv8I,EAEzC,KAAK,QACH,MAAOkiO,GAAWlkN,KAAM24D,EAAQ4lE,EAAQv8I,EAE1C,KAAK,SACL,IAAK,SACH,MAAOoiO,GAAYpkN,KAAM24D,EAAQ4lE,EAAQv8I,EAE3C,KAAK,SAEH,MAAOqiO,GAAYrkN,KAAM24D,EAAQ4lE,EAAQv8I,EAE3C,KAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAOsiO,GAAUtkN,KAAM24D,EAAQ4lE,EAAQv8I,EAEzC,SACE,GAAIwgO,EAAa,KAAM,IAAItkM,WAAU,qBAAuB+jM,EAC5DA,IAAY,GAAKA,GAAU5rM,cAC3BmsM,OAKR//D,EAAOrgK,UAAUm3C,OAAS,WACxB,OACE71C,KAAM,SACNojD,KAAM9yC,MAAM5R,UAAUyR,MAAMrS,KAAKwe,KAAKi2D,MAAQj2D,KAAM,IAwFxD,IAAImlN,GAAuB,IA8D3B1iE,GAAOrgK,UAAUyR,MAAQ,SAAgB8yE,EAAOC,GAC9C,GAAI/zC,GAAM7yB,KAAKhe,MACf2kF,KAAUA,EACVC,WAAMA,EAAoB/zC,IAAQ+zC,EAE9BD,EAAQ,GACVA,GAAS9zC,GACG,IAAG8zC,EAAQ,GACdA,EAAQ9zC,IACjB8zC,EAAQ9zC,GAGN+zC,EAAM,GACRA,GAAO/zC,GACG,IAAG+zC,EAAM,GACVA,EAAM/zC,IACf+zC,EAAM/zC,GAGJ+zC,EAAMD,IAAOC,EAAMD,EAEvB,IAAI4gJ,EACJ,IAAI9kE,EAAO8+D,oBACTgG,EAASvnN,KAAK2mN,SAAShgJ,EAAOC,GAC9B2gJ,EAAOjoN,UAAYmjJ,EAAOrgK,cACrB,CACL,GAAIolO,GAAW5gJ,EAAMD,CACrB4gJ,GAAS,GAAI9kE,GAAO+kE,SACpB,KAAK,GAAIlmO,GAAI,EAAGA,EAAIkmO,IAAYlmO,EAC9BimO,EAAOjmO,GAAK0e,KAAK1e,EAAIqlF,GAIzB,MAAO4gJ,IAWT9kE,EAAOrgK,UAAUqlO,WAAa,SAAqBlpF,EAAQ4jF,EAAY0D,GACrEtnF,GAAkB,EAClB4jF,GAA0B,EACrB0D,GAAUP,EAAY/mF,EAAQ4jF,EAAYniN,KAAKhe,OAKpD,KAHA,GAAI21C,GAAM33B,KAAKu+H,GACXmpF,EAAM,EACNpmO,EAAI,IACCA,EAAI6gO,IAAeuF,GAAO,MACjC/vL,GAAO33B,KAAKu+H,EAASj9I,GAAKomO,CAG5B,OAAO/vL,IAGT8qH,EAAOrgK,UAAUulO,WAAa,SAAqBppF,EAAQ4jF,EAAY0D,GACrEtnF,GAAkB,EAClB4jF,GAA0B,EACrB0D,GACHP,EAAY/mF,EAAQ4jF,EAAYniN,KAAKhe,OAKvC,KAFA,GAAI21C,GAAM33B,KAAKu+H,IAAW4jF,GACtBuF,EAAM,EACHvF,EAAa,IAAMuF,GAAO,MAC/B/vL,GAAO33B,KAAKu+H,IAAW4jF,GAAcuF,CAGvC,OAAO/vL,IAGT8qH,EAAOrgK,UAAUwlO,UAAY,SAAoBrpF,EAAQsnF,GAEvD,MADKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QACpCge,KAAKu+H,IAGdkkB,EAAOrgK,UAAUylO,aAAe,SAAuBtpF,EAAQsnF,GAE7D,MADKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QACpCge,KAAKu+H,GAAWv+H,KAAKu+H,EAAS,IAAM,GAG7CkkB,EAAOrgK,UAAUqhO,aAAe,SAAuBllF,EAAQsnF,GAE7D,MADKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QACnCge,KAAKu+H,IAAW,EAAKv+H,KAAKu+H,EAAS,IAG7CkkB,EAAOrgK,UAAU0lO,aAAe,SAAuBvpF,EAAQsnF,GAG7D,MAFKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,SAElCge,KAAKu+H,GACTv+H,KAAKu+H,EAAS,IAAM,EACpBv+H,KAAKu+H,EAAS,IAAM,IACD,SAAnBv+H,KAAKu+H,EAAS,IAGrBkkB,EAAOrgK,UAAU2lO,aAAe,SAAuBxpF,EAAQsnF,GAG7D,MAFKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QAEpB,SAAfge,KAAKu+H,IACTv+H,KAAKu+H,EAAS,IAAM,GACrBv+H,KAAKu+H,EAAS,IAAM,EACrBv+H,KAAKu+H,EAAS,KAGlBkkB,EAAOrgK,UAAU4lO,UAAY,SAAoBzpF,EAAQ4jF,EAAY0D,GACnEtnF,GAAkB,EAClB4jF,GAA0B,EACrB0D,GAAUP,EAAY/mF,EAAQ4jF,EAAYniN,KAAKhe,OAKpD,KAHA,GAAI21C,GAAM33B,KAAKu+H,GACXmpF,EAAM,EACNpmO,EAAI,IACCA,EAAI6gO,IAAeuF,GAAO,MACjC/vL,GAAO33B,KAAKu+H,EAASj9I,GAAKomO,CAM5B,OAJAA,IAAO,IAEH/vL,GAAO+vL,IAAK/vL,GAAOrZ,KAAKywG,IAAI,EAAG,EAAIozF,IAEhCxqL,GAGT8qH,EAAOrgK,UAAU6lO,UAAY,SAAoB1pF,EAAQ4jF,EAAY0D,GACnEtnF,GAAkB,EAClB4jF,GAA0B,EACrB0D,GAAUP,EAAY/mF,EAAQ4jF,EAAYniN,KAAKhe,OAKpD,KAHA,GAAIV,GAAI6gO,EACJuF,EAAM,EACN/vL,EAAM33B,KAAKu+H,IAAWj9I,GACnBA,EAAI,IAAMomO,GAAO,MACtB/vL,GAAO33B,KAAKu+H,IAAWj9I,GAAKomO,CAM9B,OAJAA,IAAO,IAEH/vL,GAAO+vL,IAAK/vL,GAAOrZ,KAAKywG,IAAI,EAAG,EAAIozF,IAEhCxqL,GAGT8qH,EAAOrgK,UAAU8lO,SAAW,SAAmB3pF,EAAQsnF,GAErD,MADKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QACtB,IAAfge,KAAKu+H,IAC0B,GAA5B,IAAOv+H,KAAKu+H,GAAU,GADKv+H,KAAKu+H,IAI3CkkB,EAAOrgK,UAAU+lO,YAAc,SAAsB5pF,EAAQsnF,GACtDA,GAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,OAC3C,IAAI21C,GAAM33B,KAAKu+H,GAAWv+H,KAAKu+H,EAAS,IAAM,CAC9C,OAAc,OAAN5mG,EAAsB,WAANA,EAAmBA,GAG7C8qH,EAAOrgK,UAAUgmO,YAAc,SAAsB7pF,EAAQsnF,GACtDA,GAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,OAC3C,IAAI21C,GAAM33B,KAAKu+H,EAAS,GAAMv+H,KAAKu+H,IAAW,CAC9C,OAAc,OAAN5mG,EAAsB,WAANA,EAAmBA,GAG7C8qH,EAAOrgK,UAAUimO,YAAc,SAAsB9pF,EAAQsnF,GAG3D,MAFKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QAEnCge,KAAKu+H,GACVv+H,KAAKu+H,EAAS,IAAM,EACpBv+H,KAAKu+H,EAAS,IAAM,GACpBv+H,KAAKu+H,EAAS,IAAM,IAGzBkkB,EAAOrgK,UAAUkmO,YAAc,SAAsB/pF,EAAQsnF,GAG3D,MAFKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QAEnCge,KAAKu+H,IAAW,GACrBv+H,KAAKu+H,EAAS,IAAM,GACpBv+H,KAAKu+H,EAAS,IAAM,EACpBv+H,KAAKu+H,EAAS,IAGnBkkB,EAAOrgK,UAAUmmO,YAAc,SAAsBhqF,EAAQsnF,GAE3D,MADKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QACpC8jO,EAAQxC,KAAKtjN,KAAMu+H,KAAc,GAAI,IAG9CkkB,EAAOrgK,UAAUomO,YAAc,SAAsBjqF,EAAQsnF,GAE3D,MADKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QACpC8jO,EAAQxC,KAAKtjN,KAAMu+H,KAAe,GAAI,IAG/CkkB,EAAOrgK,UAAUqmO,aAAe,SAAuBlqF,EAAQsnF,GAE7D,MADKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QACpC8jO,EAAQxC,KAAKtjN,KAAMu+H,KAAc,GAAI,IAG9CkkB,EAAOrgK,UAAUsmO,aAAe,SAAuBnqF,EAAQsnF,GAE7D,MADKA,IAAUP,EAAY/mF,EAAQ,EAAGv+H,KAAKhe,QACpC8jO,EAAQxC,KAAKtjN,KAAMu+H,KAAe,GAAI,IAS/CkkB,EAAOrgK,UAAUumO,YAAc,SAAsBjjO,EAAO64I,EAAQ4jF,EAAY0D,GAC9EngO,GAASA,EACT64I,GAAkB,EAClB4jF,GAA0B,EACrB0D,GAEHN,EAASvlN,KAAMta,EAAO64I,EAAQ4jF,EADf7jM,KAAKywG,IAAI,EAAG,EAAIozF,GAAc,EACO,EAGtD,IAAIuF,GAAM,EACNpmO,EAAI,CAER,KADA0e,KAAKu+H,GAAkB,IAAR74I,IACNpE,EAAI6gO,IAAeuF,GAAO,MACjC1nN,KAAKu+H,EAASj9I,GAAMoE,EAAQgiO,EAAO,GAGrC,OAAOnpF,GAAS4jF,GAGlB1/D,EAAOrgK,UAAUwmO,YAAc,SAAsBljO,EAAO64I,EAAQ4jF,EAAY0D,GAC9EngO,GAASA,EACT64I,GAAkB,EAClB4jF,GAA0B,EACrB0D,GAEHN,EAASvlN,KAAMta,EAAO64I,EAAQ4jF,EADf7jM,KAAKywG,IAAI,EAAG,EAAIozF,GAAc,EACO,EAGtD,IAAI7gO,GAAI6gO,EAAa,EACjBuF,EAAM,CAEV,KADA1nN,KAAKu+H,EAASj9I,GAAa,IAARoE,IACVpE,GAAK,IAAMomO,GAAO,MACzB1nN,KAAKu+H,EAASj9I,GAAMoE,EAAQgiO,EAAO,GAGrC,OAAOnpF,GAAS4jF,GAGlB1/D,EAAOrgK,UAAUymO,WAAa,SAAqBnjO,EAAO64I,EAAQsnF,GAMhE,MALAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,IAAM,GACjDkkB,EAAO8+D,sBAAqB77N,EAAQ44B,KAAK+oD,MAAM3hF,IACpDsa,KAAKu+H,GAAmB,IAAR74I,EACT64I,EAAS,GAWlBkkB,EAAOrgK,UAAU0mO,cAAgB,SAAwBpjO,EAAO64I,EAAQsnF,GAUtE,MATAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,MAAQ,GACpDkkB,EAAO8+D,qBACTvhN,KAAKu+H,GAAmB,IAAR74I,EAChBsa,KAAKu+H,EAAS,GAAM74I,IAAU,GAE9B8/N,EAAkBxlN,KAAMta,EAAO64I,MAE1BA,EAAS,GAGlBkkB,EAAOrgK,UAAU2mO,cAAgB,SAAwBrjO,EAAO64I,EAAQsnF,GAUtE,MATAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,MAAQ,GACpDkkB,EAAO8+D,qBACTvhN,KAAKu+H,GAAW74I,IAAU,EAC1Bsa,KAAKu+H,EAAS,GAAc,IAAR74I,GAEpB8/N,EAAkBxlN,KAAMta,EAAO64I,MAE1BA,EAAS,GAUlBkkB,EAAOrgK,UAAU4mO,cAAgB,SAAwBtjO,EAAO64I,EAAQsnF,GAYtE,MAXAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,WAAY,GACxDkkB,EAAO8+D,qBACTvhN,KAAKu+H,EAAS,GAAM74I,IAAU,GAC9Bsa,KAAKu+H,EAAS,GAAM74I,IAAU,GAC9Bsa,KAAKu+H,EAAS,GAAM74I,IAAU,EAC9Bsa,KAAKu+H,GAAmB,IAAR74I,GAEhBggO,EAAkB1lN,KAAMta,EAAO64I,MAE1BA,EAAS,GAGlBkkB,EAAOrgK,UAAU6mO,cAAgB,SAAwBvjO,EAAO64I,EAAQsnF,GAYtE,MAXAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,WAAY,GACxDkkB,EAAO8+D,qBACTvhN,KAAKu+H,GAAW74I,IAAU,GAC1Bsa,KAAKu+H,EAAS,GAAM74I,IAAU,GAC9Bsa,KAAKu+H,EAAS,GAAM74I,IAAU,EAC9Bsa,KAAKu+H,EAAS,GAAc,IAAR74I,GAEpBggO,EAAkB1lN,KAAMta,EAAO64I,MAE1BA,EAAS,GAGlBkkB,EAAOrgK,UAAU8mO,WAAa,SAAqBxjO,EAAO64I,EAAQ4jF,EAAY0D,GAG5E,GAFAngO,GAASA,EACT64I,GAAkB,GACbsnF,EAAU,CACb,GAAInwL,GAAQpX,KAAKywG,IAAI,EAAG,EAAIozF,EAAa,EAEzCoD,GAASvlN,KAAMta,EAAO64I,EAAQ4jF,EAAYzsL,EAAQ,GAAIA,GAGxD,GAAIp0C,GAAI,EACJomO,EAAM,EACN5xM,EAAM,CAEV,KADA9V,KAAKu+H,GAAkB,IAAR74I,IACNpE,EAAI6gO,IAAeuF,GAAO,MAC7BhiO,EAAQ,GAAa,IAARowB,GAAsC,IAAzB9V,KAAKu+H,EAASj9I,EAAI,KAC9Cw0B,EAAM,GAER9V,KAAKu+H,EAASj9I,IAAOoE,EAAQgiO,GAAQ,GAAK5xM,EAAM,GAGlD,OAAOyoH,GAAS4jF,GAGlB1/D,EAAOrgK,UAAU+mO,WAAa,SAAqBzjO,EAAO64I,EAAQ4jF,EAAY0D,GAG5E,GAFAngO,GAASA,EACT64I,GAAkB,GACbsnF,EAAU,CACb,GAAInwL,GAAQpX,KAAKywG,IAAI,EAAG,EAAIozF,EAAa,EAEzCoD,GAASvlN,KAAMta,EAAO64I,EAAQ4jF,EAAYzsL,EAAQ,GAAIA,GAGxD,GAAIp0C,GAAI6gO,EAAa,EACjBuF,EAAM,EACN5xM,EAAM,CAEV,KADA9V,KAAKu+H,EAASj9I,GAAa,IAARoE,IACVpE,GAAK,IAAMomO,GAAO,MACrBhiO,EAAQ,GAAa,IAARowB,GAAsC,IAAzB9V,KAAKu+H,EAASj9I,EAAI,KAC9Cw0B,EAAM,GAER9V,KAAKu+H,EAASj9I,IAAOoE,EAAQgiO,GAAQ,GAAK5xM,EAAM,GAGlD,OAAOyoH,GAAS4jF,GAGlB1/D,EAAOrgK,UAAUgnO,UAAY,SAAoB1jO,EAAO64I,EAAQsnF,GAO9D,MANAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,KAAO,KAClDkkB,EAAO8+D,sBAAqB77N,EAAQ44B,KAAK+oD,MAAM3hF,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCsa,KAAKu+H,GAAmB,IAAR74I,EACT64I,EAAS,GAGlBkkB,EAAOrgK,UAAUinO,aAAe,SAAuB3jO,EAAO64I,EAAQsnF,GAUpE,MATAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,OAAS,OACrDkkB,EAAO8+D,qBACTvhN,KAAKu+H,GAAmB,IAAR74I,EAChBsa,KAAKu+H,EAAS,GAAM74I,IAAU,GAE9B8/N,EAAkBxlN,KAAMta,EAAO64I,MAE1BA,EAAS,GAGlBkkB,EAAOrgK,UAAUknO,aAAe,SAAuB5jO,EAAO64I,EAAQsnF,GAUpE,MATAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,OAAS,OACrDkkB,EAAO8+D,qBACTvhN,KAAKu+H,GAAW74I,IAAU,EAC1Bsa,KAAKu+H,EAAS,GAAc,IAAR74I,GAEpB8/N,EAAkBxlN,KAAMta,EAAO64I,MAE1BA,EAAS,GAGlBkkB,EAAOrgK,UAAUmnO,aAAe,SAAuB7jO,EAAO64I,EAAQsnF,GAYpE,MAXAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,YAAa,YACzDkkB,EAAO8+D,qBACTvhN,KAAKu+H,GAAmB,IAAR74I,EAChBsa,KAAKu+H,EAAS,GAAM74I,IAAU,EAC9Bsa,KAAKu+H,EAAS,GAAM74I,IAAU,GAC9Bsa,KAAKu+H,EAAS,GAAM74I,IAAU,IAE9BggO,EAAkB1lN,KAAMta,EAAO64I,MAE1BA,EAAS,GAGlBkkB,EAAOrgK,UAAUonO,aAAe,SAAuB9jO,EAAO64I,EAAQsnF,GAapE,MAZAngO,IAASA,EACT64I,GAAkB,EACbsnF,GAAUN,EAASvlN,KAAMta,EAAO64I,EAAQ,EAAG,YAAa,YACzD74I,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxC+8J,EAAO8+D,qBACTvhN,KAAKu+H,GAAW74I,IAAU,GAC1Bsa,KAAKu+H,EAAS,GAAM74I,IAAU,GAC9Bsa,KAAKu+H,EAAS,GAAM74I,IAAU,EAC9Bsa,KAAKu+H,EAAS,GAAc,IAAR74I,GAEpBggO,EAAkB1lN,KAAMta,EAAO64I,MAE1BA,EAAS,GAgBlBkkB,EAAOrgK,UAAUqnO,aAAe,SAAuB/jO,EAAO64I,EAAQsnF,GACpE,MAAOD,GAAW5lN,KAAMta,EAAO64I,KAAcsnF,IAG/CpjE,EAAOrgK,UAAUsnO,aAAe,SAAuBhkO,EAAO64I,EAAQsnF,GACpE,MAAOD,GAAW5lN,KAAMta,EAAO64I,KAAesnF,IAWhDpjE,EAAOrgK,UAAUunO,cAAgB,SAAwBjkO,EAAO64I,EAAQsnF,GACtE,MAAOE,GAAY/lN,KAAMta,EAAO64I,KAAcsnF,IAGhDpjE,EAAOrgK,UAAUwnO,cAAgB,SAAwBlkO,EAAO64I,EAAQsnF,GACtE,MAAOE,GAAY/lN,KAAMta,EAAO64I,KAAesnF,IAIjDpjE,EAAOrgK,UAAUg/J,KAAO,SAAe9/I,EAAQuoN,EAAaljJ,EAAOC,GAQjE,GAPKD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAM5mE,KAAKhe,QAC9B6nO,GAAevoN,EAAOtf,SAAQ6nO,EAAcvoN,EAAOtf,QAClD6nO,IAAaA,EAAc,GAC5BjjJ,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,MAAO,EAC1B,IAAsB,IAAlBrlE,EAAOtf,QAAgC,IAAhBge,KAAKhe,OAAc,MAAO,EAGrD,IAAI6nO,EAAc,EAChB,KAAM,IAAIh6L,YAAW,4BAEvB,IAAI82C,EAAQ,GAAKA,GAAS3mE,KAAKhe,OAAQ,KAAM,IAAI6tC,YAAW,4BAC5D,IAAI+2C,EAAM,EAAG,KAAM,IAAI/2C,YAAW,0BAG9B+2C,GAAM5mE,KAAKhe,SAAQ4kF,EAAM5mE,KAAKhe,QAC9Bsf,EAAOtf,OAAS6nO,EAAcjjJ,EAAMD,IACtCC,EAAMtlE,EAAOtf,OAAS6nO,EAAcljJ,EAGtC,IACIrlF,GADAuxC,EAAM+zC,EAAMD,CAGhB,IAAI3mE,OAASsB,GAAUqlE,EAAQkjJ,GAAeA,EAAcjjJ,EAE1D,IAAKtlF,EAAIuxC,EAAM,EAAGvxC,GAAK,IAAKA,EAC1BggB,EAAOhgB,EAAIuoO,GAAe7pN,KAAK1e,EAAIqlF,OAEhC,IAAI9zC,EAAM,MAAS4vH,EAAO8+D,oBAE/B,IAAKjgO,EAAI,EAAGA,EAAIuxC,IAAOvxC,EACrBggB,EAAOhgB,EAAIuoO,GAAe7pN,KAAK1e,EAAIqlF,OAGrCgyH,YAAWv2M,UAAU0uC,IAAItvC,KACvB8f,EACAtB,KAAK2mN,SAAShgJ,EAAOA,EAAQ9zC,GAC7Bg3L,EAIJ,OAAOh3L,IAOT4vH,EAAOrgK,UAAU4/N,KAAO,SAAerqL,EAAKgvC,EAAOC,EAAKq7I,GAEtD,GAAmB,gBAARtqL,GAAkB,CAS3B,GARqB,gBAAVgvC,IACTs7I,EAAWt7I,EACXA,EAAQ,EACRC,EAAM5mE,KAAKhe,QACa,gBAAR4kF,KAChBq7I,EAAWr7I,EACXA,EAAM5mE,KAAKhe,QAEM,IAAf21C,EAAI31C,OAAc,CACpB,GAAIorB,GAAOuqB,EAAIi+G,WAAW,EACtBxoI,GAAO,MACTuqB,EAAMvqB,GAGV,YAAI60M,GAA8C,gBAAbA,GACnC,KAAM,IAAI/jM,WAAU,4BAEtB,IAAwB,gBAAb+jM,KAA0Bx/D,EAAOy/D,WAAWD,GACrD,KAAM,IAAI/jM,WAAU,qBAAuB+jM,OAErB,gBAARtqL,KAChBA,GAAY,IAId,IAAIgvC,EAAQ,GAAK3mE,KAAKhe,OAAS2kF,GAAS3mE,KAAKhe,OAAS4kF,EACpD,KAAM,IAAI/2C,YAAW,qBAGvB,IAAI+2C,GAAOD,EACT,MAAO3mE,KAGT2mE,MAAkB,EAClBC,WAAMA,EAAoB5mE,KAAKhe,OAAS4kF,IAAQ,EAE3CjvC,IAAKA,EAAM,EAEhB,IAAIr2C,EACJ,IAAmB,gBAARq2C,GACT,IAAKr2C,EAAIqlF,EAAOrlF,EAAIslF,IAAOtlF,EACzB0e,KAAK1e,GAAKq2C,MAEP,CACL,GAAI0tL,GAAQ5iE,EAAOE,SAAShrH,GACxBA,EACA8qL,EAAY,GAAIhgE,GAAO9qH,EAAKsqL,GAAUhkM,YACtC4U,EAAMwyL,EAAMrjO,MAChB,KAAKV,EAAI,EAAGA,EAAIslF,EAAMD,IAASrlF,EAC7B0e,KAAK1e,EAAIqlF,GAAS0+I,EAAM/jO,EAAIuxC,GAIhC,MAAO7yB,MAMT,IAAIkmN,IAAoB,uBlY4wzDK1kO,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,GAEjC,YmY732DA,IAAI6oO,GAAa,EAAQ,IAAUA,WAC/B7rM,EAAW97B,OAAOC,UAAU67B,QAEhC78B,GAAQ2oO,YAAc,SAAsBl9M,EAAM9T,GAChD,GAAI7T,EA0EJ,OAxEA2nB,GAAKm9M,SAASjqL,QAAQ,SAAUwhE,GAC9B,GAAI97G,GAAM87G,EAAO,GACb77G,EAAQmnB,EAAKpnB,EAEjB,QAAO87G,EAAO,IACZ,IAAKl3D,QAC0B,oBAAzBpsB,EAASz8B,KAAKkE,KAChBR,EAAM,aAAeO,EAAM,2BAG7B,MAEF,KAAKmf,SAC0B,qBAAzBqZ,EAASz8B,KAAKkE,KAChBR,EAAM,aAAeO,EAAM,4BAG7B,MAEF,KAAKuO,OAIH,GAH6B,mBAAzBiqB,EAASz8B,KAAKkE,KAChBR,EAAM,aAAeO,EAAM,4BAExBP,GAAe,QAARO,EACV,IAAK,GAAIwkO,GAAK,EAAGA,EAAKvkO,EAAM1D,OAAQioO,IAAQ,CAC1C,GAAIC,GAASxkO,EAAMukO,GACfx/M,EAAS0/M,EAAgBpxN,EAAQkxN,EAAMC,EACvCz/M,GAAOvlB,IACTA,EAAMulB,EAAOvlB,IAEb2nB,EAAKu9M,QAAUv9M,EAAKu9M,QAAQr9M,QAAQm9M,EAAQz/M,EAAc,OAIhE,KAEF,KAAKtoB,QAC0B,oBAAzB87B,EAASz8B,KAAKkE,KAChBR,EAAM,aAAeO,EAAM,2BAG7B,MAEF,KAAKikD,UAC0B,sBAAzBzrB,EAASz8B,KAAKkE,KAChBR,EAAM,aAAeO,EAAM,6BAG7B,MAEF,KAAKgiC,QAKH,GAJ6B,oBAAzBxJ,EAASz8B,KAAKkE,KAChBR,EAAM,aAAeO,EAAM,6BAGxBP,GAAe,QAARO,EAAe,CACzB,GAAIglB,GAAS0/M,EAAgBpxN,EAAQtT,EAAKC,EACtC+kB,GAAOvlB,IACTA,EAAMulB,EAAOvlB,IAEb2nB,EAAKu9M,QAAUC,EAAcx9M,EAAKu9M,SAASr9M,QAAQrnB,EAAO+kB,EAAc,OAG5E,KAEF,SAC+B,oBAAzBwT,EAASz8B,KAAKkE,IAAiC67G,EAAO,KACxDr8G,EAAM,aAAeO,EAAM,yBAK/BP,IACE2nB,EAAK4pB,UAAU5pB,EAAK4pB,SAAS,GAAIzzC,OAAMkC,QAO/C,IAAIilO,GAAkB,SAAyBpxN,EAAQtT,EAAKC,GAC1D,MAAIA,GAAM1D,OAAS+W,EAAOuxN,WACpBvxN,EAAOwxN,gBACArlO,KAAIA,EAAQQ,MAAOokO,EAAW,OAAO9lD,OAAOt+K,GAAO8kO,OAAO,SAE1DtlO,IAAK,aAAeO,EAAM,kDAAoDsT,EAAOuxN,YAEvF,WAAW1kM,KAAKlgC,IAChBR,IAAK,2DAELA,KAAIA,EAAQQ,MAAOA,GAKhCtE,GAAQqpO,KAAO,SAAenpN,EAAQopN,GACpC,IAAK,GAAIppO,KAAKopO,GACRA,EAASroO,eAAef,IAC1BggB,EAAO+2E,GAAG/2F,EAAGopO,EAASppO,KAK5BF,EAAQupO,MAAQ,SAAgBrpN,EAAQ9b,GACtC,IAAK,GAAIlE,KAAKkE,GACZ8b,EAAOhgB,GAAKkE,EAAIlE,EAGlB,OAAOggB,IAITlgB,EAAQwpO,MAAQ,SAAgB9qN,EAASka,GACvC,GAAIonI,GAAOptJ,MAAM5R,UAAUyR,MACvBgZ,EAAOu0I,EAAK5/J,KAAKmR,UAAW,EAEhC,OAAO,YACL,MAAOqnB,GAAGtnB,MAAMoN,GAAWE,KAAM6M,EAAKgG,OAAOuuI,EAAK5/J,KAAKmR,eAK3DvR,EAAQypO,SAAW,SAAmBC,EAAYr0L,GAChD,GAAI7iC,GAAMI,MAAM+c,QAAQ+5M,GACpB9/N,GAAQ4I,GAAMzR,OAAO6I,KAAK8/N,GAC1Bp5M,EAAQ,EACRq5M,EAAUn3N,EAAMk3N,EAAW9oO,OAASgJ,EAAKhJ,OACzCkf,EAAOlB,IAGXA,MAAK6B,KAAO,WACV,GAAIrc,GAAMoO,EAAMk3N,EAAWp5M,IAAWjsB,IAAKuF,EAAK0mB,GAAQhsB,MAAOolO,EAAW9/N,EAAK0mB,IAC/E+kB,GAASjxC,EAAKksB,IAASo5M,EAAY5pN,IAIrClB,KAAKyvK,QAAU,WACb,MAAO/9J,GAAQq5M,IAKnB3pO,EAAQ4pO,YAAc,SAAStlO,GAC7B,MAAOA,GAAMqnB,QAAQ,WAAY,SAInC3rB,EAAQ6pO,cAAgB,SAASvlO,GAC/B,MAAOA,GAAMqnB,QAAQ,aAAc,MAGrC,IAAIs9M,GAAgBjpO,EAAQipO,cAAgB,SAAS3kO,GAGnD,OAAQ,IAAMA,GAAOwiC,OAAO,KnYs42DxB,SAAU7mC,EAAQiE,EAAqBrE,GAE7C,YoY9h3De,SAASiqO,GAAkBx0K,GACtC,QAAIA,IAC4C,IAApCy0K,EAAiBzvN,QAAQg7C,GpY+h3DzC,GAAI5hD,GAAM7T,EAAoB,GAI1Bk3E,EAAcl3E,EAAoB,IoYjj3DhCkqO,GACF,yCACA,yCACA,yCACA,yCACA,yCACA,yCACA,yCACA,yCACA,yCCLW7xN,8BACX6+D,IACA,kBAAY+yJ,GAAZ,EAAG5uN,OrY2k3DD,SAAUjb,EAAQD,GsY9k3DxBC,EAAOD,SACHgqO,OAAQ,SACRxwN,QAAS,YtYwl3DP,SAAUvZ,EAAQiE,EAAqBrE,GAE7C,YuY/l3DA,4DAGMoqO,EAAc,SAAC,GAAD,QAAG1nC,GAAH,yBAIPt3E,GAFE/yG,yBAAe+xN,EAAa,SAAC1nC,GAAD,MAASA,KAEtBrqL,yBAC1BQ,IACA4C,IACA,WAASgnF,GAAT,GAAGnuF,GAAH,EAAGA,EAAH,OACImuF,GAAU,iBAAmBnuF,EAAGC,SvY6m3DlC,SAAUnU,EAAQD,EAASH,GwYvm3DjC,QAASqqO,GAAY5lO,EAAOszH,EAAO3gB,EAASkzH,EAAYh4N,GACtD,MAAI7N,KAAUszH,IAGD,MAATtzH,GAA0B,MAATszH,IAAmBnwB,EAAanjG,KAAWmjG,EAAamwB,GACpEtzH,IAAUA,GAASszH,IAAUA,EAE/BwyG,EAAgB9lO,EAAOszH,EAAO3gB,EAASkzH,EAAYD,EAAa/3N,IAxBzE,GAAIi4N,GAAkB,EAAQ,KAC1B3iI,EAAe,EAAQ,GA0B3BxnG,GAAOD,QAAUkqO,GxY+n3DX,SAAUjqO,EAAQD,EAASH,GyYro3DjC,QAASwqO,GAAYtqL,EAAO63E,EAAO3gB,EAASkzH,EAAYG,EAAWn4N,GACjE,GAAIo4N,GAAYtzH,EAAUuzH,EACtBlI,EAAYviL,EAAMn/C,OAClB6pO,EAAY7yG,EAAMh3H,MAEtB,IAAI0hO,GAAamI,KAAeF,GAAaE,EAAYnI,GACvD,OAAM,CAGR,IAAIoI,GAAUv4N,EAAM3O,IAAIu8C,EACxB,IAAI2qL,GAAWv4N,EAAM3O,IAAIo0H,GACvB,MAAO8yG,IAAW9yG,CAEpB,IAAItnG,IAAS,EACTjH,KACAswJ,EAAQ1iE,EAAU0zH,EAA0B,GAAIrzC,SAMpD,KAJAnlL,EAAMu9B,IAAIqQ,EAAO63E,GACjBzlH,EAAMu9B,IAAIkoF,EAAO73E,KAGRzvB,EAAQgyM,GAAW,CAC1B,GAAIsI,GAAW7qL,EAAMzvB,GACjBu6M,EAAWjzG,EAAMtnG,EAErB,IAAI65M,EACF,GAAIW,GAAWP,EACXJ,EAAWU,EAAUD,EAAUt6M,EAAOsnG,EAAO73E,EAAO5tC,GACpDg4N,EAAWS,EAAUC,EAAUv6M,EAAOyvB,EAAO63E,EAAOzlH,EAE1D,aAAI24N,EAAwB,CAC1B,GAAIA,EACF,QAEFzhN,KACA,OAGF,GAAIswJ,GACF,IAAKoxD,EAAUnzG,EAAO,SAASizG,EAAUG,GACnC,IAAKvzC,EAAS9d,EAAMqxD,KACfJ,IAAaC,GAAYP,EAAUM,EAAUC,EAAU5zH,EAASkzH,EAAYh4N,IAC/E,MAAOwnK,GAAK74K,KAAKkqO,KAEjB,CACN3hN,IACA,YAEG,IACDuhN,IAAaC,IACXP,EAAUM,EAAUC,EAAU5zH,EAASkzH,EAAYh4N,GACpD,CACLkX,IACA,QAKJ,MAFAlX,GAAc,OAAE4tC,GAChB5tC,EAAc,OAAEylH,GACTvuG,EA/ET,GAAIiuK,GAAW,EAAQ,KACnByzC,EAAY,EAAQ,KACpBtzC,EAAW,EAAQ,KAGnB+yC,EAAuB,EACvBG,EAAyB,CA4E7B1qO,GAAOD,QAAUqqO,GzYiq3DX,SAAUpqO,EAAQD,EAASH,G0Ynv3DjC,GAAIuuD,GAAO,EAAQ,IAGfmpJ,EAAanpJ,EAAKmpJ,UAEtBt3M,GAAOD,QAAUu3M,G1Y0v3DX,SAAUt3M,EAAQD,EAASH,G2Y1u3DjC,QAASkhK,GAAcz8J,EAAO2mO,GAC5B,GAAIC,GAAQv7M,EAAQrrB,GAChB6mO,GAASD,GAAS9+E,EAAY9nJ,GAC9B8mO,GAAUF,IAAUC,GAAS5pE,EAASj9J,GACtC+mO,GAAUH,IAAUC,IAAUC,GAAUxpE,EAAat9J,GACrDgnO,EAAcJ,GAASC,GAASC,GAAUC,EAC1ChiN,EAASiiN,EAAcC,EAAUjnO,EAAM1D,OAAQylC,WAC/CzlC,EAASyoB,EAAOzoB,MAEpB,KAAK,GAAIyD,KAAOC,IACT2mO,IAAahqO,EAAeb,KAAKkE,EAAOD,IACvCinO,IAEQ,UAAPjnO,GAEC+mO,IAAkB,UAAP/mO,GAA0B,UAAPA,IAE9BgnO,IAAkB,UAAPhnO,GAA0B,cAAPA,GAA8B,cAAPA,IAEtD65J,EAAQ75J,EAAKzD,KAElByoB,EAAOvoB,KAAKuD,EAGhB,OAAOglB,GA7CT,GAAIkiN,GAAY,EAAQ,KACpBn/E,EAAc,EAAQ,KACtBz8H,EAAU,EAAQ,IAClB4xI,EAAW,EAAQ,KACnBrD,EAAU,EAAQ,KAClB0D,EAAe,EAAQ,KAGvBzV,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,cAqCjChB,GAAOD,QAAU+gK,G3Ysw3DX,SAAU9gK,EAAQD,EAASH,G4Y5y3DjC,QAAS2rO,GAAmBlnO,GAC1B,MAAOA,KAAUA,IAAUo8B,EAASp8B,GAXtC,GAAIo8B,GAAW,EAAQ,GAcvBzgC,GAAOD,QAAUwrO,G5Y6z3DX,SAAUvrO,EAAQD,G6Yl03DxB,QAASyrO,GAAwBpnO,EAAKqnO,GACpC,MAAO,UAAS/nO,GACd,MAAc,OAAVA,GAGGA,EAAOU,KAASqnO,aACpBA,GAA2BrnO,IAAOtD,QAAO4C,KAIhD1D,EAAOD,QAAUyrO,G7Yk13DX,SAAUxrO,EAAQD,EAASH,G8Yz03DjC,QAASi6L,GAAUx1L,GACjB,GAAI+kB,GAASsiN,EAASrnO,GAClBsnO,EAAYviN,EAAS,CAEzB,OAAOA,KAAWA,EAAUuiN,EAAYviN,EAASuiN,EAAYviN,EAAU,EAhCzE,GAAIsiN,GAAW,EAAQ,IAmCvB1rO,GAAOD,QAAU85L,G9Y423DX,SAAU75L,EAAQD,EAASH,G+Yn23DjC,QAASgsO,GAASvnO,GAChB,GAAoB,gBAATA,GACT,MAAOA,EAET,IAAI0nJ,EAAS1nJ,GACX,MAAOwnO,EAET,IAAIprM,EAASp8B,GAAQ,CACnB,GAAIszH,GAAgC,kBAAjBtzH,GAAM8gF,QAAwB9gF,EAAM8gF,UAAY9gF,CACnEA,GAAQo8B,EAASk3F,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,gBAATtzH,GACT,MAAiB,KAAVA,EAAcA,GAASA,CAEhCA,GAAQA,EAAMqnB,QAAQogN,EAAQ,GAC9B,IAAIC,GAAWC,EAAWznM,KAAKlgC,EAC/B,OAAQ0nO,IAAYE,EAAU1nM,KAAKlgC,GAC/B6nO,EAAa7nO,EAAMmO,MAAM,GAAIu5N,EAAW,EAAI,GAC3CI,EAAW5nM,KAAKlgC,GAASwnO,GAAOxnO,EA9DvC,GAAIo8B,GAAW,EAAQ,IACnBsrH,EAAW,EAAQ,KAGnB8/E,EAAM,IAGNC,EAAS,aAGTK,EAAa,qBAGbH,EAAa,aAGbC,EAAY,cAGZC,EAAe7kM,QA8CnBrnC,GAAOD,QAAU6rO,G/Ys53DX,SAAU5rO,EAAQiE,EAAqBrE,GAE7C,YgZz93DA,8BAKIgpE,MAF0BpkE,KAAtB2C,IAGJilO,SAES/lK,EAAQ,SAACn7B,GAClB,GAAIkhM,EACA,MAAOA,EAGX,KAAKlhM,EACD,KAAM,IAAIvpC,OAAM,oEAIpB,OADAyqO,GAAyB,GAAIC,0BAAuBnhM,IAI3ClX,EAAK,WAAsD,GAArDkX,GAAqD,wDAA5CosB,QAAS,YAAa8O,SAAU,MACxD,IAAIwC,EACA,MAAOA,EAGX,KAAK19B,EACD,KAAM,IAAIvpC,OAAM,iEAIpB,OADAinE,GAAkB,GAAI0jK,mBAAgBphM,GAI3B,MACXm7B,QACAryC,OhZu+3DE,SAAUh0B,EAAQD,GiZ7+3DxB,QAASsR,GAAMsY,EAAMyR,EAAS5P,GAC5B,OAAQA,EAAK7qB,QACX,IAAK,GAAG,MAAOgpB,GAAKxpB,KAAKi7B,EACzB,KAAK,GAAG,MAAOzR,GAAKxpB,KAAKi7B,EAAS5P,EAAK,GACvC,KAAK,GAAG,MAAO7B,GAAKxpB,KAAKi7B,EAAS5P,EAAK,GAAIA,EAAK,GAChD,KAAK,GAAG,MAAO7B,GAAKxpB,KAAKi7B,EAAS5P,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,MAAO7B,GAAKtY,MAAM+pB,EAAS5P,GAY7B,QAAS8/M,GAAU9nO,EAAGu6J,GAIpB,IAHA,GAAI1tI,IAAS,EACTjH,EAASzW,MAAMnP,KAEV6sB,EAAQ7sB,GACf4lB,EAAOiH,GAAS0tI,EAAS1tI,EAE3B,OAAOjH,GAgDT,QAAS03I,GAAcz8J,EAAO2mO,GAG5B,GAAI5hN,GAAUsG,EAAQrrB,IAAU8nJ,EAAY9nJ,GACxCinO,EAAUjnO,EAAM1D,OAAQylC,WAGxBzlC,EAASyoB,EAAOzoB,OAChB0qO,IAAgB1qO,CAEpB,KAAK,GAAIyD,KAAOC,IACT2mO,IAAahqO,EAAeb,KAAKkE,EAAOD,IACvCinO,IAAuB,UAAPjnO,GAAmB65J,EAAQ75J,EAAKzD,KACpDyoB,EAAOvoB,KAAKuD,EAGhB,OAAOglB,GAaT,QAAS8sM,GAAYxyN,EAAQU,EAAKC,GAChC,GAAI8xN,GAAWzyN,EAAOU,EAChBpD,GAAeb,KAAKuD,EAAQU,IAAQynJ,EAAGsqE,EAAU9xN,cAClDA,GAAyBD,IAAOV,MACnCA,EAAOU,GAAOC,GAWlB,QAAS08J,GAASr9J,GAChB,IAAK06J,EAAY16J,GACf,MAAOwyL,GAAWxyL,EAEpB,IAAI0lB,KACJ,KAAK,GAAIhlB,KAAOtD,QAAO4C,GACjB1C,EAAeb,KAAKuD,EAAQU,IAAe,eAAPA,GACtCglB,EAAOvoB,KAAKuD,EAGhB,OAAOglB,GAWT,QAASq4F,GAAS93F,EAAM27D,GAEtB,MADAA,GAAQw0G,WAAUx0G,EAAuB37D,EAAKhpB,OAAS,EAAK2kF,EAAO,GAC5D,WAML,IALA,GAAI95D,GAAOla,UACP+e,GAAS,EACT1vB,EAASm5L,EAAUtuK,EAAK7qB,OAAS2kF,EAAO,GACxCxlC,EAAQntC,MAAMhS,KAET0vB,EAAQ1vB,GACfm/C,EAAMzvB,GAAS7E,EAAK85D,EAAQj1D,EAE9BA,IAAS,CAET,KADA,GAAIsmM,GAAYhkN,MAAM2yE,EAAQ,KACrBj1D,EAAQi1D,GACfqxI,EAAUtmM,GAAS7E,EAAK6E,EAG1B,OADAsmM,GAAUrxI,GAASxlC,EACZzuC,EAAMsY,EAAMhL,KAAMg4M,IAc7B,QAAS4V,GAAWrsN,EAAQ1B,EAAO9a,EAAQwmO,GACzCxmO,IAAWA,KAKX,KAHA,GAAI2sB,IAAS,EACT1vB,EAAS6d,EAAM7d,SAEV0vB,EAAQ1vB,GAAQ,CACvB,GAAIyD,GAAMoa,EAAM6R,GAEZm8M,EAAWtC,EACXA,EAAWxmO,EAAOU,GAAM8b,EAAO9b,GAAMA,EAAKV,EAAQwc,SAGtDg2M,GAAYxyN,EAAQU,WAAKooO,EAAyBtsN,EAAO9b,GAAOooO,GAElE,MAAO9oO,GA4CT,QAASu6J,GAAQ55J,EAAO1D,GAEtB,SADAA,EAAmB,MAAVA,EAAiBu9J,EAAmBv9J,KAE1B,gBAAT0D,IAAqB85J,EAAS55H,KAAKlgC,KAC1CA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQ1D,EAa7C,QAAS8rO,GAAepoO,EAAOgsB,EAAO3sB,GACpC,IAAK+8B,EAAS/8B,GACZ,OAAM,CAER,IAAIrB,SAAcguB,EAClB,UAAY,UAARhuB,EACKo3F,EAAY/1F,IAAWu6J,EAAQ5tI,EAAO3sB,EAAO/C,QACrC,UAAR0B,GAAoBguB,IAAS3sB,KAE7BmoJ,EAAGnoJ,EAAO2sB,GAAQhsB,GAY7B,QAAS+5J,GAAY/5J,GACnB,GAAIg6J,GAAOh6J,GAASA,EAAM2Z,WAG1B,OAAO3Z,MAFqB,kBAARg6J,IAAsBA,EAAKt9J,WAAcmrJ,GAqC/D,QAASL,GAAGxnJ,EAAOszH,GACjB,MAAOtzH,KAAUszH,GAAUtzH,IAAUA,GAASszH,IAAUA,EAqB1D,QAASw0B,GAAY9nJ,GAEnB,MAAO07N,GAAkB17N,IAAUrD,EAAeb,KAAKkE,EAAO,aAC1DmpD,EAAqBrtD,KAAKkE,EAAO,WAAaqsG,EAAevwG,KAAKkE,IAAUqoO,GAqDlF,QAASjzI,GAAYp1F,GACnB,MAAgB,OAATA,GAAiBq1F,EAASr1F,EAAM1D,UAAYg5F,EAAWt1F,GA4BhE,QAAS07N,GAAkB17N,GACzB,MAAOmjG,GAAanjG,IAAUo1F,EAAYp1F,GAoB5C,QAASs1F,GAAWt1F,GAGlB,GAAI83E,GAAM17C,EAASp8B,GAASqsG,EAAevwG,KAAKkE,GAAS,EACzD,OAAO83E,IAAO25G,GAAW35G,GAAO45G,EA6BlC,QAASr8F,GAASr1F,GAChB,MAAuB,gBAATA,IACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS65J,EA4B7C,QAASz9H,GAASp8B,GAChB,GAAIhC,SAAcgC,EAClB,SAASA,IAAkB,UAARhC,GAA4B,YAARA,GA2BzC,QAASmlG,GAAanjG,GACpB,QAASA,GAAyB,gBAATA,GA2E3B,QAASsF,GAAKjG,GACZ,MAAO+1F,GAAY/1F,GAAUo9J,EAAcp9J,GAAUq9J,EAASr9J,GA/mBhE,GAAIw6J,GAAmB,iBAGnBwuE,EAAU,qBACV52C,EAAU,oBACVC,EAAS,6BAGT53B,EAAW,mBAwDXjS,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,eAO7B0vG,EAAiBw7C,EAAYtvH,SAG7B4wB,EAAuB0+F,EAAY1+F,qBAGnC0oI,EAvBJ,SAAiBvsK,EAAMmvJ,GACrB,MAAO,UAAS5vJ,GACd,MAAOS,GAAKmvJ,EAAU5vJ,MAqBDpoB,OAAO6I,KAAM7I,QAClCg5L,EAAY78J,KAAKC,IAGjByvM,GAAkBn/K,EAAqBrtD,MAAO,QAAW,GAAK,WAqS9DuvB,EAAU/c,MAAM+c,QA6MhB1P,EA/WJ,SAAwB4sN,GACtB,MAAOnrH,GAAS,SAAS/9G,EAAQmpO,GAC/B,GAAIx8M,IAAS,EACT1vB,EAASksO,EAAQlsO,OACjBupO,EAAavpO,EAAS,EAAIksO,EAAQlsO,EAAS,UAC3CmsO,EAAQnsO,EAAS,EAAIksO,EAAQ,SAWjC,KATA3C,EAAc0C,EAASjsO,OAAS,GAA0B,kBAAdupO,IACvCvpO,IAAUupO,UAGX4C,GAASL,EAAeI,EAAQ,GAAIA,EAAQ,GAAIC,KAClD5C,EAAavpO,EAAS,SAAgBupO,EACtCvpO,EAAS,GAEX+C,EAAS5C,OAAO4C,KACP2sB,EAAQ1vB,GAAQ,CACvB,GAAIuf,GAAS2sN,EAAQx8M,EACjBnQ,IACF0sN,EAASlpO,EAAQwc,GAGrB,MAAOxc,MAyViB,SAASA,EAAQwc,GAC3C,GAAIysN,GAAkBvuE,EAAYl+I,IAAWu5E,EAAYv5E,GAEvD,WADAqsN,GAAWrsN,EAAQvW,EAAKuW,GAASxc,EAGnC,KAAK,GAAIU,KAAO8b,GACVlf,EAAeb,KAAK+f,EAAQ9b,IAC9B8xN,EAAYxyN,EAAQU,EAAK8b,EAAO9b,KAqCtCpE,GAAOD,QAAUigB,GjZkh4DX,SAAUhgB,EAAQD,EAASH,akZ9o5DjC,GAkDA,QAASywG,GAAWhsG,GAClB,MAAa,OAATA,WACKA,EAAsBisG,EAAeC,EAEtCC,GAAkBA,IAAkB1vG,QAAOuD,GAC/CosG,EAAUpsG,GACVqsG,EAAersG,GAUrB,QAASosG,GAAUpsG,GACjB,GAAI6hL,GAAQllL,EAAeb,KAAKkE,EAAOmsG,GACnCr0B,EAAM93E,EAAMmsG,EAEhB,KACEnsG,EAAMmsG,SACN,IAAI21E,MACJ,MAAOhlL,IAET,GAAIioB,GAASg9J,EAAqBjmL,KAAKkE,EAQvC,OAPI8hL,KACED,EACF7hL,EAAMmsG,GAAkBr0B,QAEjB93E,GAAMmsG,IAGVpnF,EAUT,QAASsnF,GAAersG,GACtB,MAAO+hL,GAAqBjmL,KAAKkE,GAoBnC,QAASs1F,GAAWt1F,GAClB,IAAKo8B,EAASp8B,GACZ,OAAM,CAIR,IAAI83E,GAAMk0B,EAAWhsG,EACrB,OAAO83E,IAAO25G,GAAW35G,GAAO45G,GAAU55G,GAAO65G,GAAY75G,GAAO85G,EA4BtE,QAASx1J,GAASp8B,GAChB,GAAIhC,SAAcgC,EAClB,OAAgB,OAATA,IAA0B,UAARhC,GAA4B,YAARA,GA7I/C,GAAI2zL,GAAW,yBACXF,EAAU,oBACVC,EAAS,6BACTxlF,EAAU,gBACV0lF,EAAW,iBACX3lF,EAAe,qBAGfxf,EAA8B,gBAAVl+E,IAAsBA,GAAUA,EAAO9R,SAAWA,QAAU8R,EAGhFm+E,EAA0B,gBAARlxE,OAAoBA,MAAQA,KAAK/e,SAAWA,QAAU+e,KAGxEsuC,EAAO2iC,GAAcC,GAAY1oC,SAAS,iBAG1C6jG,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,eAO7BolL,EAAuBl6B,EAAYtvH,SAGnC6rB,EAAS0F,EAAK1F,OACd+nD,EAAiB/nD,EAASA,EAAOkoD,kBAiHrC3wG,GAAOD,QAAU45F,IlZkp5DYx5F,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQiE,EAAqBrE,GAE7C,YmZ7y5DO,SAASqqE,KAEZ,MADkB1mE,aAAIqpB,KAKnB,QAASm+C,GAAa1lB,GAA2B,GAAhB+vC,GAAgB,uDAAH,CACjD3lD,aAAI7iB,IAA0By4B,EAAwB,GAAb+vC,EAAkB,GAAK,IAG7D,QAAS30E,KACZw1C,YAAOrpC,KAhBX,kBAmBe,MACX+9C,mBAjB8B,EAkB9BV,eACAc,eACAtqD,UnZg05DE,SAAUzgB,EAAQD,EAASH,GoZp05DjC,QAAS0sH,GAASxsE,EAAOi+G,EAAU+hE,GACjC,GAAIzvM,IAAS,EACT4E,EAAWyqM,EACX/+N,EAASm/C,EAAMn/C,OACfosO,KACA3jN,KACAswJ,EAAOtwJ,CAEX,IAAI02M,EACFiN,KACA93M,EAAW4qM,MAER,IAAIl/N,GAAUqsO,EAAkB,CACnC,GAAIv9L,GAAMsuH,EAAW,KAAOkvE,EAAUntL,EACtC,IAAIrQ,EACF,MAAO6qJ,GAAW7qJ,EAEpBs9L,MACA93M,EAAWuiK,EACX9d,EAAO,GAAI2d,OAGX3d,GAAO3b,KAAgB30I,CAEzB47C,GACA,OAAS30C,EAAQ1vB,GAAQ,CACvB,GAAI0D,GAAQy7C,EAAMzvB,GACd68M,EAAWnvE,EAAWA,EAAS15J,GAASA,CAG5C,IADAA,EAASy7N,GAAwB,IAAVz7N,EAAeA,EAAQ,EAC1C0oO,GAAYG,IAAaA,EAAU,CAErC,IADA,GAAIC,GAAYzzD,EAAK/4K,OACdwsO,KACL,GAAIzzD,EAAKyzD,KAAeD,EACtB,QAASloK,EAGT+4F,IACF2b,EAAK74K,KAAKqsO,GAEZ9jN,EAAOvoB,KAAKwD,OAEJ4wB,GAASykJ,EAAMwzD,EAAUpN,KAC7BpmD,IAAStwJ,GACXswJ,EAAK74K,KAAKqsO,GAEZ9jN,EAAOvoB,KAAKwD,IAGhB,MAAO+kB,GApET,GAAIiuK,GAAW,EAAQ,KACnBqoC,EAAgB,EAAQ,KACxBG,EAAoB,EAAQ,KAC5BroC,EAAW,EAAQ,KACnBy1C,EAAY,EAAQ,KACpB3yC,EAAa,EAAQ,KAGrB0yC,EAAmB,GA+DvBhtO,GAAOD,QAAUusH,GpZ815DX,SAAUtsH,EAAQD,EAASH,GqZt55DjC,QAAS6sO,GAAepoO,EAAOgsB,EAAO3sB,GACpC,IAAK+8B,EAAS/8B,GACZ,OAAM,CAER,IAAIrB,SAAcguB,EAClB,UAAY,UAARhuB,EACKo3F,EAAY/1F,IAAWu6J,EAAQ5tI,EAAO3sB,EAAO/C,QACrC,UAAR0B,GAAoBguB,IAAS3sB,KAE7BmoJ,EAAGnoJ,EAAO2sB,GAAQhsB,GAxB7B,GAAIwnJ,GAAK,EAAQ,KACbpyD,EAAc,EAAQ,IACtBwkE,EAAU,EAAQ,KAClBx9H,EAAW,EAAQ,GA0BvBzgC,GAAOD,QAAU0sO,GrZ465DX,SAAUzsO,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAsBrC,QAASI,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,EAE3M,QAASiqD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WAEzb,QAAS8T,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA9BnZle,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOmpO,IAC7H,IAejBC,GAAuBC,EAfFnqK,EAAsCvjE,EAAoB,GAE1D0/H,GAD8C1/H,EAAoB4D,EAAE2/D,GACxBvjE,EAAoB,IAChE2/H,EAA6C3/H,EAAoB,IACjE4/H,EAAqD5/H,EAAoB4D,EAAE+7H,GAC3En1E,EAAuCxqD,EAAoB,GAC3D2tO,EAA2C3tO,EAAoB,IAC/D4tO,EAA8D5tO,EAAoB,KAClF6tO,EAAqE7tO,EAAoB,KACzF8tO,EAA0D9tO,EAAoB,IAC9E+tO,EAAsD/tO,EAAoB,IAC1EguO,EAAyChuO,EAAoB,IAC7DiuO,EAAwDjuO,EAAoB,GAC5EkuO,EAA0DluO,EAAoB,IAC9EwwF,EAAoExwF,EAAoB,IAG7GqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MsZl95DxhB+3B,EAAY3oB,IAEPy7J,EAAb,YACI,WAAY5uN,GAAO,yEACTA,GADS,OAEfyY,GAAK7T,OACD2qN,cAAaA,EACbC,KAAMZ,EAAyBa,KAAKC,SAExCj3M,EAAKw3D,SAAWx3D,EAAKw3D,SAAShrE,KAAdwT,GAChBA,EAAK03D,WAAa13D,EAAK03D,WAAWlrE,KAAhBwT,GAClBA,EAAKk3M,WAAal3M,EAAKk3M,WAAW1qN,KAAhBwT,GAClBA,EAAKm3M,gBAAkBn3M,EAAKm3M,gBAAgB3qN,KAArBwT,GACvBA,EAAKo3M,QAAUp3M,EAAKo3M,QAAQ5qN,KAAbwT,GACfA,EAAKq3M,cAAgBr3M,EAAKq3M,cAAc7qN,KAAnBwT,GACrBA,EAAKs3M,gBAAkBt3M,EAAKs3M,gBAAgB9qN,KAArBwT,GACvBA,EAAKu3M,sBAAwBv3M,EAAKu3M,sBAAsB/qN,KAA3BwT,GAC7BA,EAAKw3M,mBAAqBx3M,EAAKw3M,mBAAmBhrN,KAAxBwT,GAdX,EADvB,8PAmB0DtY,KAAKH,MAA/CgG,EAnBhB,EAmBgBA,SAA+BvJ,EAnB/C,EAmB0BhB,SAAYC,MAASe,GACvC02D,IAAS,QAAShzD,KAAK8vE,UACvB9c,IAAS,SAAUhzD,KAAKgwE,YArBhC,SAsBqCnqE,EAASkwC,cAtB9C,oBAsBgB7H,EAtBhB,EAsBgBA,YACJ5xC,EAvBZ,2CAyBqCuJ,EAASyyC,aAAYh8C,OAzB1D,SAyBsBk8C,EAzBtB,OA0BgBx4C,KAAK+vN,WAAWv3K,GA1BhC,kDA4BgBrzD,EAAQC,MAAR,KA5BhB,SA+BiB8oD,GACDluC,KAAK0vN,SAhCrB,sHAqC8B/sN,GAAW,GACzBmtD,GAAa9vD,KAAKyE,MAAlBqrD,SACFkgK,EAAwBhwN,KAAKiwN,0BAC7BC,EAA4BlwN,KAAKiwN,wBAAwBttN,EAC3DmtD,IAAYkgK,IAA0BE,GACtClwN,KAAK4vN,qBA1CjB,wCA8CuBO,EA9CvB,GA8C8D,GAAhBC,GAAgB,EAA1BtgK,SACpBA,EAAa9vD,KAAKyE,MAAlBqrD,UACHsgK,GAAgBtgK,IACa9vD,KAAKiwN,2BAE/BjwN,KAAK4vN,sBAnDrB,4CAyDQ58J,IAAU,QAAShzD,KAAK8vE,UACxB9c,IAAU,SAAUhzD,KAAKgwE,eA1DjC,kCA6DiB,MAC6ChwE,KAAKH,MAAnDvE,SAAYC,KADX,sBACoBusD,GADpB,EACoBA,WACzBA,MACYpmE,OAAOm+B,SAAWn+B,OAAOwf,KAAOxf,OAAOm+B,OAASn+B,QACxD4Z,SAASyC,KAAU+pD,GAAcA,EAAYpsD,QAAQ,MAAQ,EAAI,IAAM,KAA3E,eAjEZ,+BAqEc,MAC2BsE,KAAKH,MAA9BgG,EADF,EACEA,QACR,IAFM,EACYqoC,WAGd,WADAroC,GAAS6pE,cAGb7pE,GAAS2tD,kBA3EjB,uCA+EQ68J,MAAM,oBA/Ed,qCAmFQrwN,KAAK8vN,wBAnFb,kCAsF4B,GAAbt3K,GAAa,0DACdsX,EAAWtX,EAAOsX,UAAYtX,EAAOsX,SAAS99C,IAAI,qBAAG1tB,MACtDwrE,KAGL3qE,EAAQqN,IAAI,UAAWgmD,GACvBx4C,KAAKmG,UAAW2pD,iBA5FxB,+BAgGQ,GAAIu/J,GAAOZ,EAAyBa,KAAKC,QACjCz/J,EAAa9vD,KAAKyE,MAAlBqrD,SAFF,EAG+E9vD,KAAKH,MAHpF,IAGEvE,SAAYC,MAAe+0N,EAH7B,EAGuBjB,KAAwBj9J,EAH/C,EAGsCC,QAAwBlkB,EAH9D,EAG8DA,YACpE,aAAImiL,EACAjB,EAAO3mM,SAAS4nM,EAAS,QACtB,IAAIxgK,EAAU,CACjB,GAAMmC,GAASC,aAAsBpC,YAAY3oE,IAAayH,eACxDujE,EAAaF,GAAUC,aAAsBpC,YAAY3oE,IAAa0H,eACtE0hO,EAAkBpiL,GAAgBA,EAAazyC,QAAQvU,IAAawH,YAAc,CAWpF0gO,GATCl9J,EAMOF,EAEDs+J,EACA9B,EAAyBa,KAAKkB,mBAE9B/B,EAAyBa,KAAKmB,oBAJ9BhC,EAAyBa,KAAKoB,aANjCt+J,EACOq8J,EAAyBa,KAAKqB,sBAE9BlC,EAAyBa,KAAKsB,cAWjD,MAAOvB,MAzHf,gCA6HQrvN,KAAKH,MAAMgG,SAASkwC,kBA7H5B,kCAiIQ,MAAO/1C,MAAKH,MAAMgG,SAASmqE,kBAjInC,uCAoIoC,GAAhB6gJ,GAAgB,0DAC0B7wN,KAAKH,MAAnDvE,SAAYC,KADQ,sBACCusD,GADD,EACCA,WACzBA,MACYpmE,OAAOm+B,SAAWn+B,OAAOwf,KAAOxf,OAAOm+B,OAASn+B,QACxD4Z,SAASyC,KAAU+pD,GAAc+oK,EAAS,mBAAqB,QAxI/E,6CA8IQ7wN,KAAK8vN,wBA9Ib,0CAiJyB,MACoB9vN,KAAKH,MAAlCvE,SAAYC,iBADH,OAEXw9C,IACFx9C,GAAMlU,IAAMgJ,aAAe9J,IAASmC,UACpCqwD,EAASh9B,SACTg9B,EAAS+3K,SAAW,QAEZpvO,OAAOm+B,SAAWn+B,OAAOwf,KAAOxf,OAAOm+B,OAASn+B,QACxD4Z,SAASyC,KAAOw1D,YAAiB7xE,OAAO4Z,SAASuC,OAAjC,kBAA0Dk7C,MAzJtF,+CA4JgD,GAApBl5C,GAAoB,uDAAZG,KAAKH,MACzBiwD,EAAa9vD,KAAKyE,MAAlBqrD,SAEJl4C,EACA/X,EADA+X,SAGEvD,GAAaptB,IAAUuH,IAC7B,QAAKshE,IAG0ByzF,aAA8BlvI,YAAWy7C,YAAYl4C,MAtK5F,8BA2Ka,MAMD5X,KAAKH,MAJLizD,EAFC,EAEDA,SACA5kB,EAHC,EAGDA,WACA6iL,EAJC,EAIDA,UACA5iL,EALC,EAKDA,aAGEkhL,EAAOrvN,KAAKgxN,UACZhB,EAAwBhwN,KAAKiwN,0BAC7BgB,EAAY5B,IAASZ,EAAyBa,KAAKC,QACnDjoM,EAAQmnM,EAAyB/vJ,MAAM2wJ,GACvCv8N,EAAQ27N,EAAyByC,MAAM7B,GACvC8B,EAAmBhjL,GAAgBA,EAAansD,OAA7B,IAA0CmsD,EAAal8B,KAAK,KAA5D,IAAsE,oBACzFm/M,EAAaljL,EAAaA,EAAbA,QAAA,UACC,sBADD,wBAEM,YAFN,QAE2BluC,KAAK0vN,gBAAUqB,EAAUt5J,QAAQ45J,WAAeF,GAF3E,oBAKC,sBALD,iBAK4B,YAL5B,QAKiDnxN,KAAK0vN,gBALtD,UAQnB,4BAES,KAFT,OAIkBprO,KAAM,SAAUiuD,QAAS,sBAJ3C,SAOgBxuD,IAAK43F,EAAQ7oB,KAP7B,QAUgB+M,QAAQA,oiHA0EfoxJ,GAAaA,EAAbA,OAAA,UACkB,2BADlB,uBAE0B,uBAF1B,eAGuBjxN,KAAK8vN,2BAH5B,mBAK6B,OAL7B,IAMuB,2FANvB,IAOuB,WAGXsB,GAVZ,kBAYqB,gBAAS9pM,GAZ9B,uBAa0B,yBACd+nM,IAASZ,EAAyBa,KAAKgC,kBAAvC,wCAEyB,UAFzB,QAE4CtxN,KAAKwvN,mBAFjD,iDAGyB,YAHzB,QAG8CxvN,KAAK0vN,gBAHnD,gDAIyB,YAJzB,QAI8C1vN,KAAKyvN,wBAAkB38N,IAGrEk9N,GAAyBA,EAAzBA,4BAAA,QAEwBhwN,KAAKyvN,wBAAkB38N,GAF/C,eAIoBkN,KAAK6vN,sBAJzB,OAKoBjiE,WAAY,YALhC,yBA1S7B,GAA8CvpG,gBAuU9CoqK,GAAyBa,MACrBC,SAAU,EACV+B,iBAAkB,EAClBZ,aAAc,EACdD,oBAAqB,EACrBD,mBAAoB,EACpBI,cAAe,EACfD,sBAAuB,GAG3BlC,EAAyB/vJ,OAAzB,SACK+vJ,EAAyBa,KAAKC,QAAU,IAD7C,IAEKd,EAAyBa,KAAKgC,iBAAmB,oBAFtD,IAGK7C,EAAyBa,KAAKoB,aAAe,uBAHlD,IAIKjC,EAAyBa,KAAKmB,oBAAsB,kBAJzD,IAKKhC,EAAyBa,KAAKkB,mBAAqB,uBALxD,IAMK/B,EAAyBa,KAAKsB,cAAgB,8BANnD,IAOKnC,EAAyBa,KAAKqB,sBAAwB,mBAP3D,GAUAlC,EAAyByC,OAAzB,SACKzC,EAAyBa,KAAKC,QAAU,IAD7C,IAEKd,EAAyBa,KAAKgC,iBAAmB,wBAFtD,IAGK7C,EAAyBa,KAAKoB,aAAe,kBAHlD,IAIKjC,EAAyBa,KAAKmB,oBAAsB,kBAJzD,IAKKhC,EAAyBa,KAAKkB,mBAAqB,kBALxD,IAMK/B,EAAyBa,KAAKsB,cAAgB,iBANnD,IAOKnC,EAAyBa,KAAKqB,sBAAwB,wBAP3D,EAUA,IAAM1oN,GAAkB,SAACxD,GACrB,GAAM8sN,GAAa96K,YAAchyC,EACjC,QACIquD,SAAUz3D,YAAiBoJ,GAC3BypC,WAAYD,YAAsBxpC,GAClC0pC,aAAc+I,YAA0BzyC,GACxCssN,UAAWQ,GAAcA,EAAWzqL,KACpClvB,SAAUzD,YAAiB1P,IAIpB+pF,iBAAQvmF,GAAiBwmN,KtZw+5DXjtO,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YuZ926De,SAAS0+L,KACpB,GAAIjyG,GAAS,IACb,IAAsB,mBAAXhsF,QAAwB,CAAC,GAAD,GACTA,OAAdshD,EADuB,EACvBA,SACR,aAAWA,EAA2B,CAAC,GAAD,GACPA,EAAnBwpC,qBAD0B,EACd,GADc,EAE5BglJ,EAAUhlJ,EAAUn2D,aAE1Bq3D,GAAS,UAEL8jJ,EAAQlnN,MAAM,kBACbknN,EAAQlnN,MAAM,YAAcknN,EAAQlnN,MAAM,UAE3CojE,EAAS,eACFlB,EAAUliE,MAAM,UAAYkiE,EAAUliE,MAAM,gBACnDojE,EAAS,MACFlB,EAAUliE,MAAM,cACvBojE,EAAS,YAIrB,MAAOA,GArBX,OvZ246DM,SAAUrsF,EAAQiE,EAAqBrE,GAE7C,YwZ746De,SAASwwO,KACpB,GAAIC,KACJ,IAAsB,mBAAXhwO,SAA0BA,OAAOshD,UAAW,CAAC,GAAD,GAC7BthD,OAAdshD,EAD2C,EAC3CA,SACR0uL,GACI1uL,EAAU2uL,QAAU3uL,EAAU2uL,OAAOj2N,QAAQ,UAAY,GACzDsnC,EAAUwpC,YAC+B,GAAzCxpC,EAAUwpC,UAAU9wE,QAAQ,WACa,GAAzCsnC,EAAUwpC,UAAU9wE,QAAQ,SAIpC,MAAOg2N,GAZX,OxZ656DM,SAAUrwO,EAAQiE,EAAqBrE,GAE7C,YyZ/56De,SAASuoK,KACpB,GAAIooE,SACJ,IAAsB,mBAAXlwO,QAAwB,CAAC,GACxB8qF,GAAc9qF,OAAOshD,UAArBwpC,SACJA,GAAU9wE,QAAQ,YAAc,IAChCk2N,EAAiB9wF,WAAWt0D,EAAU34E,MAAM24E,EAAU9wE,QAAQ,WAAa,KAGnF,MAAOk2N,GARX,OzZ+66DM,SAAUvwO,EAAQiE,EAAqBrE,GAE7C,Y0Zz66De,SAAS4wO,GAAWC,EAAcC,GAAe,GAC9CC,GAAcF,EAApBnoH,KACMsoH,EAAeF,EAArBpoH,IACR,OAAQqoH,KAAcC,EAAc,EAAKD,EAAYC,GAAe,EAAI,EAX5E,O1Zo86DM,SAAU5wO,EAAQiE,EAAqBrE,GAE7C,Y2Z776De,SAASgnK,GAAsBxzJ,GAAyB,GAAhBqzJ,GAAgB,yDAEnE,OAAKrzJ,IAAYqzJ,EAIbA,EAAUrzJ,GACHqzJ,EAAUrzJ,GAGL,OAAZA,GAAoBqzJ,EAAU9Y,SACvB8Y,EAAU9Y,eApBzB,O3Zu+6DM,SAAU3tJ,EAAQiE,EAAqBrE,GAE7C,Y4Z/96De,SAASgoK,GAA0Bx0J,GAA6B,GAApB+qL,GAAoB,yDAE3E,OAAK/qL,IAAY+qL,GAIbA,GAAiBA,EAAc/qL,IAAY+qL,EAAc/qL,GAASy9N,iBAC3D1yC,EAAc/qL,GAASy9N,oBAjBtC,O5Zsg7DM,SAAU7wO,EAAQiE,EAAqBrE,GAE7C,Y6Z//6De,SAASknK,GAAyBv0I,EAAUk0I,GACvD,GAAMO,GAAmBz0I,GAAak0I,GAAaA,EAAUO,iBACvDtvJ,EAAS+uJ,KAGf,OAAIO,IAAoBtvJ,EAAOsvJ,GAC3B,GACIA,oBACGtvJ,EACAA,EAAOsvJ,IAKdtvJ,EAAA,OACA,GACIsvJ,iBAbgB,UAcbtvJ,EACAA,EAAA,W7Z8+6DkBzT,EAAuB,EAAI6iK,CAC5D,IAAI/mJ,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,KAkCjP,SAAUjgB,EAAQiE,EAAqBrE,GAE7C,Y8Z9i7De,SAAS0mK,KAAsC,gEAA5BxpG,EAA4B,EAA5BA,KAAag0K,EAAe,uDAAJ,EACtD,OAAwB,gBAATh0K,IAAmC,KAAbg0K,GAAmBh0K,EAAKolC,OAAOltE,gBAAkB87M,EAD1F,O9Z2j7DM,SAAU9wO,EAAQiE,EAAqBrE,GAE7C,Y+Z7j7De,SAASklM,GAAO3gM,EAAK4sO,GAEhC,IAAK,GADCvyN,GAAQuyN,EAAS10N,MAAM,KACpBpc,EAAI,EAAGC,EAAEse,EAAM7d,OAAQV,EAAIC,EAAGD,IAAK,CAC1C,IAAKkE,IAAQA,EAAInD,eAAewd,EAAMve,IACpC,OAAM,CAERkE,GAAMA,EAAIqa,EAAMve,IAElB,OAAM,EARV,O/Z4k7DM,SAAUD,EAAQiE,EAAqBrE,GAE7C,Yga9k7De,SAASoxO,KACpB,OAAuC,KADK,uDAAJ,IAC5B32N,QAAQ,cCCT,QAAS42N,KAAuB,GAAV1+K,GAAU,uDAAJ,EACvC,QAAqC,IAA7BA,EAAIl4C,QAAQ,cAAuB22N,EAAcz+K,GCD9C,QAAS2+K,KAAwB,GAAV3+K,GAAU,uDAAJ,EACxC,QAAuC,IAA/BA,EAAIl4C,QAAQ,gBAAyB22N,EAAcz+K,GCHhD,QAAS4+K,KACpB,OAAwC,KADK,uDAAJ,IAC7B92N,QAAQ,enaqn7DxB,QAASopF,GAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,Goa7m7D5M,QAASmxN,GAAoB7+K,GAChC,MAAI2+K,GAAc3+K,GACPA,EAAI7mC,QAAQ,uBAAwB,8BAExC6mC,EAOJ,QAAS8+K,GAAqB9+K,GACjC,OAAIA,GAAQ2+K,EAAc3+K,IAASy+K,EAAcz+K,GAI1C6+K,EAAoB7+K,GAHhBA,EAAI7mC,QAAQ,4DAA6D,8CAWjF,QAAS4lN,GAA6Bp3N,GACzC,MAAOA,GAAMwR,QAAQ,SAAU,MAAMA,QAAQ,UAAW,MAOrD,QAAS0xK,GAAiB7qI,GAC7B,MAAIA,IAAsB,gBAARA,GACPA,EAAI7mC,QAAQ,+BAAgC,IAEhD6mC,EAuBJ,QAAS4qI,GAAsB3E,GAAwB,GAAhBxzF,GAAgB,yDAC1D,KAAKisI,EAAaz4C,KAAY24C,EAAe34C,GACzC,MAAOA,EAEX,IAAIjmI,GAAO0+K,EAAaz4C,GAAyCA,EAA/B64C,EAAqB74C,GAEnD7mK,EAASqzE,EAN6C,EAOhCrzE,EAAlBg2D,EAPkD,EAOlDA,MAAOC,EAP2C,EAO3CA,MAGf,KAAID,GAASC,KACTr1B,EAAM6qI,EAAiB7qI,GAGnB2+K,EAAc3+K,IAAQo1B,GAAS4pJ,GAAmB,CAAC,GAAD,GAEC5/M,CAFD,GAE1Cg2D,MACRh2D,EAHkD,eAO1D,GAAIwyF,GAAK7sG,YAAYqa,KAAe4gC,EAAIl4C,QAAQ,MAAQ,EAIxD,OAHI62N,GAAc3+K,KACd4xD,EAAKmtH,EAA6BntH,IAEtC,GAAU5xD,EAAM4xD,Epagh7DpB,GAAI7sG,GAAc1X,EAAoB,GAMLqE,GAAuB,EAAIm5L,EAE3Bn5L,EAAuB,EAAIk5L,Coa9m7D5D,IAAMo0C,GAAoB,Mpa+t7DpB,SAAUvxO,EAAQD,EAASH,GAEjC,Yqapu7DA,IAAI4xO,GAAoB,EAAQ,KAAuB,OAIvD,GAAQ,KAKRzxO,EAAUC,EAAOD,QAAUyxO,EAC3BzxO,EAAiB,QAAIA,Gra8u7Df,SAAUC,EAAQD,EAASH,GAEjC,Ysalv7DA,SAAS+mI,GAAOxiI,GACZ,GACIlE,GAAGuxC,EAAKtxB,EAAQ9b,EADhByoO,EAAUl6N,MAAM5R,UAAUyR,MAAMrS,KAAKmR,UAAW,EAGpD,KAAKrR,EAAI,EAAGuxC,EAAMq7L,EAAQlsO,OAAQV,EAAIuxC,EAAKvxC,GAAK,EAE5C,GADAigB,EAAS2sN,EAAQ5sO,GAGjB,IAAKmE,IAAO8b,GACJuxN,EAAItxO,KAAK+f,EAAQ9b,KACjBD,EAAIC,GAAO8b,EAAO9b,GAK9B,OAAOD,GAlBXpE,EAAQ4mI,OAASA,CACjB,IAAI8qG,GAAM3wO,OAAOC,UAAUC,cAmB3BjB,GAAQ0xO,IAAMA,Gtaqw7DR,SAAUzxO,EAAQiE,EAAqBrE,GAE7C,YAwNA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA0Jje,QAAS4zN,GAAkCpvK,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAElI,QAAS80M,GAA6C9xN,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAEpP,QAASyxO,GAA4B/zN,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA+Jnf,QAAS2R,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GAthB1L,GAAIgX,GAAQ3pB,EAAoB,GAC5BmpG,EAA6BnpG,EAAoB4D,EAAE+lB,GAGnDa,EAAKxqB,EAAoB,GAGzBiyO,EAAwBjyO,EAAoB,KAG5C+iE,EAAa/iE,EAAoB,IAGjC2X,EAAoB3X,EAAoB,IAGxCkY,EAAclY,EAAoB,GAGlC+qD,EAAe/qD,EAAoB,IAGnC8jK,EAAe9jK,EAAoB,IAGnCm/H,EAAqBn/H,EAAoB,IAGzC6T,EAAM7T,EAAoB,Guaj07DxBkyO,EAAyB,SAAC,GAAD,QAAGvpI,cAAH,yBAEhBtwF,2BACX65N,EACA,oBAAG7iL,OAAH,0BAGS8iL,EAA6B95N,yBACtC65N,EACA,oBAAG7uO,IAAH,mBAAU,iBAAV,Ivag17DAyQ,EAAQ9T,EAAoB,GAG5BujM,EAAOvjM,EAAoB,KAG3BinF,EAAWjnF,EAAoB,Iwa917DpBqY,2BACXH,IACA,YAAuB,QAApBmC,oBAAoB,OACXgC,EAA4BhC,EAA5BgC,IACR,OADoChC,GAAtB2B,SACd,MAAwBK,EADYhC,EAAZ+B,Uxa227D5B1E,EAAc1X,EAAoB,IAGlC4X,EAAkB5X,EAAoB,Iya/27D1C,EAAeqY,yBACXH,IACAN,IACA,cAA2D,QAAxDyC,oBAAwD,WAArCe,qCAAqC,OAC/CiB,EAA8ChC,EAA9CgC,KAAML,EAAwC3B,EAAxC2B,SAAUI,EAA8B/B,EAA9B+B,QAAgBivC,EAAchxC,EAArBC,MADsB,EAEWc,MAFX,IAE/CkwC,oBAF+C,EAEpClvC,EAFoC,MAE3Bd,oBAF2B,EAEhB,IAFgB,MAEXhB,iBAFW,EAEH+wC,EAFG,CAGvD,OAAUrvC,GAAV,MAAwBK,EAAOivC,EAAWhwC,EAAW5D,YAAY4C,Kzas47DrEk1D,EAAmBxvE,EAAoB,IAGvCypG,EAA0BzpG,EAAoB,IAG9CqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U0al57Dn4BwrI,EAAa,SAAC,GAA4B,GAA1BC,GAA0B,EAA1BA,WAAY/gL,EAAc,EAAdA,QACtBj2C,EAAsBi2C,EAAtBj2C,GAAUi3N,EAAYhhL,EAAlBjuD,KACNiX,EAAQ5C,aACVsnD,KAASqzK,EAAT,OAA0Bh3N,EAC1Bi3N,cAIJ,yBAEkB,yDAFlB,eAGqB,OAHrB,aAImB,QAJnB,KAViB,UAQkBh4N,KAiBxB83N,I1ay57DXG,EAAqB,WAAc,GAAIjsI,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U2ah77Dj5B4rI,EAAgB,SAAC,GAA2C,GAAzCH,GAAyC,EAAzCA,WAAY/gL,EAA6B,EAA7BA,QAASr2C,EAAoB,EAApBA,KAAMrC,EAAc,EAAdA,QACxCyC,EAAoBi2C,EAApBj2C,GAAUgrB,EAAUirB,EAAhBjuD,KACNovO,EAAax3N,GAAiB,KAATA,EAAT,SAAiCA,EAAS,GACtDy3N,EAAgB95N,GAAuB,KAAZA,EAAZ,YAA0CA,EAAQwc,cAAkB,GACnF9a,EAAQ5C,aACV2uB,QACA9O,EAAM86M,EAAN,OAAuBh3N,EAAKo3N,EAAYC,MAI5C,yBAEkB,4DAFlB,eAGqB,OAHrB,aAImB,QAJnB,KAZiB,6CAUkBp4N,KAmBxBk4N,I3au77DXG,EAAoB,WAAc,GAAIrsI,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U4al97Dh5BgsI,EAAe,SAAC,GAAwC,GAAtCP,GAAsC,EAAtCA,WAAY/gL,EAA0B,EAA1BA,QAASuhL,EAAiB,EAAjBA,WACjCx3N,EAAmBi2C,EAAnBj2C,GAAUw/F,EAASvpD,EAAfjuD,KACNiX,EAAQ5C,aACVuD,KAAM,KACN63N,iBAAkBD,EAClBh4H,OACAloD,IAAQ0/K,EAAR,OAAyBh3N,MAI7B,yBAEkB,2DAFlB,eAGqB,OAHrB,aAImB,QAJnB,KAZiB,mCAUkBf,KAkBxBs4N,I5ay97DXG,EAAoB,WAAc,GAAIzsI,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEl5BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M6a3+7D1hBqwK,IACAxuO,IAAK,QAASib,UAAW2yN,IACzB5tO,IAAK,WAAYib,UAAW+yN,IAC5BhuO,IAAK,UAAWib,UAAWmzN,IAI3BK,EAAuB,SAAC3hL,EAAStG,EAAMr4B,EAAUg5D,EAAgBh1D,EAAU42C,EAAsBv0D,GAA1E,MAAyF,UAACixB,GAC/GA,EAAMkvD,gBACNlvD,EAAMkvD,iBAGVzN,YAAsBp6B,EAAStG,EAAMr4B,EAAUg5D,EAAgBh1D,EAAU42C,EAAsBv0D,KAU7Fk6N,E,YACF,WAAYt0N,GAAO,yEACTA,GADS,OAEf,GAAKu0N,iBACL,EAAKC,oBAAsB,EAAKA,oBAAoBvvN,KAAzB,GAC3B,EAAKwvN,mBAAqB,EAAKA,mBAAmBxvN,KAAxB,GAJX,E7agl8DnB,MA/EAg/C,GAAUqwK,EAAcv0N,GAaxBilD,EAAasvK,IACT1uO,IAAK,oBACLC,MAAO,W6axg8DPsa,KAAKs0N,wB7a4g8DL7uO,IAAK,4BACLC,MAAO,S6a1g8Deid,GAEtB3C,KAAKq0N,sBACLr0N,KAAKs0N,mBAAmB3xN,M7a6g8DxBld,IAAK,uBACLC,MAAO,W6a1g8DPsa,KAAKq0N,yB7a8g8DL5uO,IAAK,qBACLC,MAAO,W6a5g8D4B,WAApBma,EAAoB,uDAAZG,KAAKH,MACpB0yC,EAAwE1yC,EAAxE0yC,QAAStG,EAA+DpsC,EAA/DosC,KAAMr4B,EAAyD/T,EAAzD+T,SAAUgE,EAA+C/X,EAA/C+X,SAAU42C,EAAqC3uD,EAArC2uD,qBAAsBv0D,EAAe4F,EAAf5F,UACjEg6N,GAAal0L,QAAQ,SAACw0L,GAClB,EAAKH,cAAcG,EAAO9uO,KAAOyuO,EAC7B3hL,EAAStG,EAAMr4B,EAAU2gN,EAAO9uO,IAAKmyB,EAAU42C,EAAsBv0D,GAEzE,EAAK2kK,KAAK21D,EAAO9uO,KAAKu+E,iBAAiB,QAAS,EAAKowJ,cAAcG,EAAO9uO,W7auh8D9EA,IAAK,sBACLC,MAAO,W6aph8DW,UAClBvD,QAAO6I,KAAKgV,KAAKo0N,eAAer0L,QAAQ,SAACt6C,GACrC,EAAKm5K,KAAKn5K,GAAK8mK,oBAAoB,QAAS,EAAK6nE,cAAc3uO,S7a0h8DnEA,IAAK,SACLC,MAAO,W6avh8DF,UACL,2BACmB,YADnB,OACwCg3F,QAAS18E,KAAKH,MAAM6jF,QAAU,OAAS,iBAD/E,oBAEwB,6DAFxB,kBAGsB,0BACTuwI,EAAajiN,IAAI,SAACuiN,GAAD,MACd,yBAAI3uN,IAAK2uN,EAAO9uO,IAAKA,IAAA,gBAAqB8uO,EAAO9uO,KAC7C,kBAAC8uO,EAAO7zN,UAAc,EAAKb,gB7aoi8D5Cs0N,G6ajl8DgBzzN,aAoErBuH,EAAkB,SAACxD,GAAD,OACpB6uN,WAAYkB,EAAmB/vN,GAC/BqvN,WAAYW,EAAmBhwN,GAC/B5K,QAASD,YAAgB6K,GACzBwnC,KAAMD,YAAavnC,GACnBmP,SAAU68C,YAAiBhsD,GAC3BmT,SAAUzD,YAAiB1P,GAC3B+pD,qBAAsBC,YAA6BhqD,GACnDi/E,QAAShnF,YAAgB+H,GACzBvI,KAAMD,YAAawI,GAAOvI,KAC1BjC,WAAYF,YAAmB0K,KAGpB+pF,cAAQvmF,GAAiBksN,G7aoh8DpCO,EAAgBzzO,EAAoB,KAGpC6kK,EAAW7kK,EAAoB,IAG/BgoG,EAAuBhoG,EAAoB,KAG3CwU,EAAaxU,EAAoB,IAGjC0zO,EAAyB,WAAc,GAAIptI,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEv5B+sI,GAAiC,WAAc,QAAS9vK,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M8a7o8D5iBixK,G,YACF,WAAYh1N,GAAO,yEACTA,GADS,OAEf,GAAK4E,OACDqwN,cAAaA,GAEjB,EAAKC,YAAc,EAAKA,YAAYjwN,KAAjB,GALJ,E9aoy8DnB,MAlIAmuN,GAA4B4B,EAAmBj1N,GAc/Cg1N,GAA+BC,IAC3BpvO,IAAK,aACLC,MAAO,S8a1q8DAohF,GAAa,GACZv0B,GAAYvyC,KAAKH,MAAjB0yC,OACR,OAAIvyC,MAAKyE,MAAMqwN,aACX,EACKJ,EAAA,GADL,MAEc,SAFd,UAGkB,QAHlB,QAIiBniL,EAJjB,YAKqBu0B,EALrB,QAMiB9mE,KAAK+0N,YANtB,QAOiB/0N,KAAK+0N,cAInB,Q9a4q8DPtvO,IAAK,iBACLC,MAAO,W8a1q8DM,MAMTsa,KAAKH,MAJMs7D,EAFF,EAET5oB,QAAW4oB,IACC65J,EAHH,EAGTv/N,WACAq2F,EAJS,EAITA,aACApmB,EALS,EAKTA,cAEExc,EAAW4iC,GAAgBA,EAAa5iC,QAE9C,OAAOzzD,KAAWgyE,kBACdtM,EACA65J,EACA9rK,EACA,iBACAwc,M9awq8DJjgF,IAAK,qBACLC,MAAO,W8arq8DU,MACmBsa,KAAKH,MAAjC0yC,EADS,EACTA,QAAS0iL,EADA,EACAA,cACjB,IAAI1iL,EAAQjF,SAAWvmD,IAAckH,SAAU,CAC3C,GAAMinO,GAAgBjsI,YAAqB12C,EAC3C,OAAQ2iL,IAAiB,GAAKA,GAAiBD,EAEnD,OAAM,K9a2q8DNxvO,IAAK,cACLC,MAAO,S8azq8DCwlC,GACRA,EAAMkvD,iBACNp6E,KAAKmG,UAAW2uN,cAAe90N,KAAKyE,MAAMqwN,kB9a4q8D1CrvO,IAAK,SACLC,MAAO,W8a1q8DF,MAMDsa,KAAKH,MAJL0yC,EAFC,EAEDA,QACA+4C,EAHC,EAGDA,aACAU,EAJC,EAIDA,iBACAiC,EALC,EAKDA,SAGI3xF,EAAuDi2C,EAAvDj2C,GAAIhY,EAAmDiuD,EAAnDjuD,KAAc6wO,EAAqC5iL,EAA7ChxC,OAA6B6zN,EAAgB7iL,EAA1ByoB,SACjCz5D,EAAS4zN,EACTn6J,EAAWo6J,CACf,KAAK7zN,GAAUy5D,EAAU,CACrB,GAAMq6J,GAASr6J,EAASt9D,MAAM,MAC9B6D,GAAS8zN,EAAO/yO,QAChB04E,EAAWq6J,EAAOpjN,KAAK,OAG3B,GAAIqjN,GAAat6J,CAGbgxB,KACAspI,EAjFmB,6BAsFvB,IAAMC,GAAWtnI,EAAW,0BAA4B,GAClDnnB,EAAc9mE,KAAKw1N,iBAEnBn4G,EAAcr9G,KAAKy1N,qBAAuBz1N,KAAK+0N,YAAczpI,CAEnE,+BACuB,wDADvB,UACwFhvF,UAC/E0D,KAAK01N,WAAW5uJ,GAFzB,sBAG0B,0DAH1B,cAIsB,IAJtB,UAIoC,uCAJpC,EAKiB09G,EAAA,GALjB,SAKgCjyI,EAAQ6oB,SALxC,UAK6D,wBAL7D,eAQoBiiD,UARpB,uBAS+B,4DAT/B,2DAUwEk4G,UAVxE,mBAWmC,mCAXnC,mBAY+BzuJ,GAZ/B,mBAa+BvlE,KAb/B,kBAgB8B,6BAAsBjd,KAhBpD,sBAmB0B,0DAnB1B,iBAb6B,KAa7B,UAoB0D,mBApB1D,mBAqBuBgxO,IArBvB,EAuBa,GAvBb,QAuBmC/iL,U9aqr8DhCsiL,G8ary8DqBn0N,YAkIhCm0N,IAAkBptI,cACdwtI,eAtIgC,GA0IrBnvE,oBAAS+uE,I9ayq8DpBc,GAA+B,WAAc,GAAIpuI,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U+a5y8Dp5B+tI,GAAiB,SAAC,GAWzB,GAVFtlL,GAUE,EAVFA,QACAulL,EASE,EATFA,mBASE,IARFC,wBAQE,EAbgB,EAahB,MAPFj4K,UAAa+rC,0BAOX,OANF39C,EAME,EANFA,KACAI,EAKE,EALFA,KACA0pL,EAIE,EAJFA,gBACA55N,EAGE,EAHFA,SACQsuC,EAEN,EAFFyB,KAAQzB,cACRurL,EACE,EADFA,eAEQrlL,EAAW1E,EAAX0E,OACJrC,EAAU,gEACV2nL,EAAcxrL,EAActuC,EAAS,gCACrCuuG,SACAuqH,SACAiB,EAAgB,WAChBr4I,EAAYk4I,EACZI,SACAC,IAEJ,IAAuB,IAAnB9lL,EAAQtuD,OAAc,CACtB,GAAMowD,GAAS9B,EAAQ,GADD,EAEU8B,EAAxBiD,KAAMghL,WAFQ,OAGhBhhL,cAAWghL,IACXC,EAAmBjhL,EAAK35C,QAAQpV,IAAa8E,cAC7CmrO,EAAelhL,EAAK35C,QAAQpV,IAAa6E,WACrB,IAAtBmrO,GACAL,EAAcxrL,EAActuC,EAAS,uCACrCk5C,EAAKhzC,OAAOi0N,EAAkB,KACL,IAAlBC,IACPN,EAAcxrL,EAActuC,EAAS,gCACrCk5C,EAAKhzC,OAAOk0N,EAAc,GAG9B,IAAMnqL,GAAWiJ,EAAK1iC,MAChB6jN,EAAuB5sI,EAAeisI,GACxC5iL,EAAU,EACVujL,KACAvjL,EAAUujL,EAAqBvjL,QAC/By3D,GACI3mH,IAAKyyO,EAAqB9rH,KAC1Bk+E,IAAKx8I,IAGb6oL,EAAiB,EACjBp3I,GAAa,WACbq4I,qBAAkCjjL,EAAUA,YAAYA,EAAY,IACpEkjL,EAAe/jL,EAId+jL,GACD7lL,EAAQt6B,KAAK,SAACo8B,GAAW,MACCA,EAAdiD,gBADa,MAErB,QACK1E,GAAWtE,IAASA,EAAK3oD,OAASmD,IAAYyG,KAAO++C,EAAKiB,SAAWvmD,IAAcmH,WAC3C,IAAzCmnD,EAAK35C,QAAQpV,IAAa6E,WAE1B8qO,EAAcxrL,EAActuC,EAAS,gCACrC0hF,GAAa,WACbvvC,GAAW,QACX6nL,EAAe/jL,UAGdzB,GAAWtE,GAASA,EAAK3oD,OAASmD,IAAYwG,SAAWg/C,EAAKiB,SAAWvmD,IAAcmH,UAC3C,IAA7CmnD,EAAK35C,QAAQpV,IAAa8E,gBAE1B6qO,EAAcxrL,EAActuC,EAAS,oCACrC0hF,GAAa,WACbq4I,GAAiB,iBACjBC,EAAe/jL,QAOvB+jL,IACAC,EAAmBD,EAAa7jL,SAGpC,IAAMmkL,GAAyBhsL,EAActuC,EAAS,uCAEhDm2C,EAAW8jL,EACZviO,MAAM,EAAGiiO,GACT/rK,KAAK,SAAC2sK,EAAUC,GACb,GAAMC,GAAQ,GAAI1mL,MAAKwmL,EAASv7J,KAAOu7J,EAAS7jO,MAC1CgkO,EAAQ,GAAI3mL,MAAKymL,EAASx7J,KAAOw7J,EAAS9jO,KAChD,OAAO+jO,GAAMzjH,UAAY0jH,EAAM1jH,YAGjC2jH,EAAQxkL,EAAStgC,IAAI,SAACugC,GAAD,UACtB,IADsB,QAGVA,EAHU,UAIRsrC,EAJQ,WAKPm4I,EALO,eAMHf,EANG,cAOJxqL,EAPI,SAQTtuC,EARS,cASJs6N,GATI,aAEDlkL,EAAQjuD,OAWlC,OAAQguD,GAAStwD,OAAS,EAAnB,qBACe27M,OAAQ,KADvB,UACyCrvJ,UADzC,GAEE4kL,EAAA,GAFF,aAGmB,WAHnB,KAIW+C,EAJX,KAKWvrH,EALX,KAMWwrH,IAETY,GAEL,MAgBF7uN,GAAkB,SAACxD,GAAD,OACpB6rC,QAASymL,EAA8BtyN,GACvCoxN,mBAAoBzC,EAA2B3uN,GAC/Co5C,UAAWjlD,YAAkB6L,GAC7BwnC,KAAMD,YAAavnC,GACnB4nC,KAAM04G,YAAatgJ,GACnBsxN,gBAAiB/zI,YAAwBv9E,GACzCuxN,eAAgBz7N,YAAmBkK,IAGxB+pF,iBAAQvmF,IAAiB+7C,YAAW4xK,M/amz8D7C,SAAUv0O,EAAQiE,EAAqBrE,GAE7C,YAGA,IAIIqmG,IAJQrmG,EAAoB,GAIrB,WAAc,GAAIsmG,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Wgbv98Dn4BmvI,EAAe,SAAC,GAAD,GAAG1vM,GAAH,EAAGA,MAAH,IAAUojF,IAAV,sBAAkB3mH,GAAlB,EAAkBA,IAAK6kM,EAAvB,EAAuBA,IAAYquC,EAAnC,EAAmCA,UAAnC,2BACF,iCADE,iBAGR3vM,EACAvjC,GAAOA,EAAPA,OAAA,UAEiB,+BAFjBA,IAGYA,EAHZ,IAIY6kM,KARJ,oBAYG,kBACXquC,KAWED,Ihbu98DXpzE,EAAgB3iK,EAAoB,KAGpC+iE,EAAa/iE,EAAoB,IAGjCi2O,EAA6B,WAAc,GAAI3vI,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Uibl/8Dz5BqrI,EAAwB,SAAC,GASzB,GARFvyK,GAQE,EARFA,UACAw2K,EAOE,EAPFA,YACQ1sL,EAMN,EANFyB,KAAQzB,cACRnmD,EAKE,EALFA,KACAomH,EAIE,EAJFA,KACAxoC,EAGE,EAHFA,KACA/lE,EAEE,EAFFA,SACA2jC,EACE,EADFA,KAEMxY,EAAWhjC,GAAQ6yO,GAAer3L,EAAhB,KAA6BA,EAA7B,IAAuC,GAC/D,8BACuB6gB,UACduhB,EAAOA,EACH0hF,EAAA,GADJ,GACsB1hF,EADtB,UACsC,wBADtC,aACyE,gBADzE,EAEQ,GAFR,MAE4B56C,EAF5B,KAEyCojF,EAFzC,WAE2DjgE,EAActuC,EAAS,iCAFlF,qBAMQ,GANR,MAM4BmrB,EAN5B,KAMyCojF,EANzC,WAM0D,OAkBxD1mD,iBAAWkvK,Ijbo/8DpB,SAAU7xO,EAAQiE,EAAqBrE,GAE7C,YAGA,IAAI2pB,GAAQ3pB,EAAoB,GAC5BmpG,EAA6BnpG,EAAoB4D,EAAE+lB,GAGnDwsN,EAAWn2O,EAAoB,IAG/BwqB,EAAKxqB,EAAoB,GAGzB+iE,EAAa/iE,EAAoB,IAMjC4jK,GAHY5jK,EAAoB,IAGnBA,EAAoB,KACjC6jK,EAAkC7jK,EAAoB4D,EAAEggK,GAGxDv9D,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Ukbpj9Dn4BwvI,GACFC,OAAQ,gBACRjhE,KAAM,iDACNiD,MAAO,oDAMLi+D,EAAQ,SAAC,GAOT,GANFC,GAME,EANFA,MACAC,EAKE,EALFA,UACA92K,EAIE,EAJFA,UACAvtD,EAGE,EAHFA,QACAioE,EAEE,EAFFA,MACAq8J,EACE,EADFA,QAEMC,EAAiBtpL,IACnB,QACAgpL,EAAeG,GACfH,EAAeI,GACf92K,EAEJ,2BACmB,mBADnB,MAC6C0a,UAD7C,mBAEwBs8J,UACXvkO,EAHb,eAIwBskO,EAJxB,UAI2C,kEAehCH,Ilb8i9DX9hO,EAAaxU,EAAoB,IAGjCkY,EAAclY,EAAoB,GAGlCypG,EAA0BzpG,EAAoB,IAG9CmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPs2N,EAAqB,WAAc,GAAIrwI,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Umbzl9Dj5B6sI,EAAgB,SAAC,GAYjB,GAXF8C,GAWE,EAXFA,MACAC,EAUE,EAVFA,UACA92K,EASE,EATFA,UACApO,EAQE,EARFA,QACAu0B,EAOE,EAPFA,YACAkuJ,EAME,EANFA,cACA74N,EAKE,EALFA,SACA07N,EAIE,EAJFA,SACAH,EAGE,EAHFA,QACAr8J,EAEE,EAFFA,MACAywB,EACE,EADFA,aAEQxnG,EAA2CiuD,EAA3CjuD,KAAM62E,EAAqC5oB,EAArC4oB,IAAag6J,EAAwB5iL,EAAhChxC,OAAmBy5D,EAAazoB,EAAbyoB,SAChC9R,EAAW4iC,GAAgBA,EAAa5iC,SACxClY,EAAY81B,GAAerxE,IAAWgyE,kBAAkBtM,EAAK65J,EAAe9rK,GAC9E3nD,EAAS4zN,GACR5zN,GAAUy5D,EAASt/D,QAAQ,QAAU,IAEtC6F,EADey5D,EAASt9D,MAAM,OACdpb,QAEpB,IAAM8Q,GACF,kBAAC,IAAD,KACQ+I,EAAS,mCACbyhE,QAAQ,IACRpqD,QACIlvB,OACA0sD,UAAUA,EAAVA,iBAAkBA,GAClBzvC,SACAs2N,cAIZ,UACK,GADL,MAEeL,EAFf,UAGmBC,EAHnB,UAImB92K,EAJnB,QAKiBvtD,EALjB,MAMeioE,EANf,QAOiBq8J,IAcrBhD,GAAcjtI,cACVl1C,WACAslL,SAAU,GAGd,IAAM5vN,GAAkB,SAACxD,GAAD,OACpBuwN,cAAez6N,YAAmBkK,GAClCqnF,aAAcv2E,YAAqB9Q,IAGxB+pF,iBAAQvmF,GAAiB+7C,YAAW0wK,Knbom9D7C,SAAUrzO,EAAQD,EAASH,Gobjr9DjC,GAAI62O,GAAa,EAAQ,KACrBC,EAAiB,EAAQ,KAUzBC,EAAWD,EAAeD,EAE9Bz2O,GAAOD,QAAU42O,Gpbwr9DX,SAAU32O,EAAQD,EAASH,Gqbrs9DjC,GAAIg3O,GAAgB,EAAQ,KAaxBC,EAAUD,GAEd52O,GAAOD,QAAU82O,Grb4s9DX,SAAU72O,EAAQD,EAASH,Gsb/s9DjC,QAASk3O,GAAiBpzO,EAAQU,EAAKC,aAChCA,GAAwBwnJ,EAAGnoJ,EAAOU,GAAMC,eACxCA,GAAyBD,IAAOV,KACnCs6J,EAAgBt6J,EAAQU,EAAKC,GAfjC,GAAI25J,GAAkB,EAAQ,KAC1BnS,EAAK,EAAQ,IAkBjB7rJ,GAAOD,QAAU+2O,Gtbku9DX,SAAU92O,EAAQD,EAASH,Gubrv9DjC,GAAIymL,GAAU,EAAQ,KAGlBmD,EAAenD,EAAQvlL,OAAOuuC,eAAgBvuC,OAElDd,GAAOD,QAAUypL,Gvb4v9DX,SAAUxpL,EAAQD,Gwbzv9DxB,QAASg3O,GAAQrzO,EAAQU,GACvB,IAAY,gBAARA,GAAgD,kBAAhBV,GAAOU,KAIhC,aAAPA,EAIJ,MAAOV,GAAOU,GAGhBpE,EAAOD,QAAUg3O,Gxbww9DX,SAAU/2O,EAAQD,EAASH,Gybjw9DjC,QAASo3O,GAAOtzO,GACd,MAAO+1F,GAAY/1F,GAAUo9J,EAAcp9J,MAAgBuzO,EAAWvzO,GA5BxE,GAAIo9J,GAAgB,EAAQ,KACxBm2E,EAAa,EAAQ,KACrBx9I,EAAc,EAAQ,GA6B1Bz5F,GAAOD,QAAUi3O,Gzbmy9DX,SAAUh3O,EAAQD,EAASH,G0b9w9DjC,QAASspD,GAAQ7kD,GACf,GAAa,MAATA,EACF,OAAM,CAER,IAAIo1F,EAAYp1F,KACXqrB,EAAQrrB,IAA0B,gBAATA,IAA4C,kBAAhBA,GAAM2c,QAC1DsgJ,EAASj9J,IAAUs9J,EAAat9J,IAAU8nJ,EAAY9nJ,IAC1D,OAAQA,EAAM1D,MAEhB,IAAIw7E,GAAMy6G,EAAOvyL,EACjB,IAAI83E,GAAO+6J,GAAU/6J,GAAOg7J,EAC1B,OAAQ9yO,EAAMo6C,IAEhB,IAAI2/G,EAAY/5J,GACd,OAAQ08J,EAAS18J,GAAO1D,MAE1B,KAAK,GAAIyD,KAAOC,GACd,GAAIrD,EAAeb,KAAKkE,EAAOD,GAC7B,OAAM,CAGV,UAzEF,GAAI28J,GAAW,EAAQ,KACnB61B,EAAS,EAAQ,KACjBzqC,EAAc,EAAQ,KACtBz8H,EAAU,EAAQ,IAClB+pE,EAAc,EAAQ,IACtB6nE,EAAW,EAAQ,KACnBlD,EAAc,EAAQ,KACtBuD,EAAe,EAAQ,KAGvBu1E,EAAS,eACTC,EAAS,eAGTjrF,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,cA2DjChB,GAAOD,QAAUmpD,G1by09DX,SAAUlpD,EAAQiE,EAAqBrE,GAE7C,Y2bv59DA,aAEMkqG,EAAqB/zE,IAAY7zB,SAASE,cAAc,SAAW,IAIrE2zB,OACA+zE,EAAmBiB,MAAQ,WAClBjB,EAAmBsgG,SACpBtgG,EAAmBstI,OACnBttI,EAAmBsgG,aAKhBtgG,O3b659DT,SAAU9pG,EAAQiE,EAAqBrE,GAE7C,YAwFA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAEje,QAAS5Z,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,E4b779DpM,QAASkzO,KAKd,GAJEC,GAIF,uDAJUlxO,IAAY8C,YACpBwzD,EAGF,uDAHOv2D,IAAYyK,cACjB8vH,EAEF,uDAFkB,EAChB62G,EACF,wDACQC,EAAUnxO,IAAgBq2D,GAAI46K,GAChC7zH,QAQJ,OAPI+zH,KAEI/zH,EADA8zH,EACOt6M,KAAKC,IAAI,EAAGD,KAAK+oD,MAAM06C,EAAgB82G,IAEvC92G,GAAiB,EAAI82G,EAAU,EAAI,IAGzC/zH,OAAM+zH,WAGZ,QAASC,GAAkBC,GAAgD,GAA3CJ,GAA2C,uDAAnClxO,IAAY8C,WAGvD,IAH8E,eAG7D/D,IAASkF,QACtB,MAAO,EAGX,IAAMstO,GAAcC,EAAmBN,GACnCO,EAAM,EA8BV,OA5BAF,GAAYj5L,QAAQ,SAAAt6C,GAChB,GAAM0zO,GAAgBC,EAAgB3zO,EACtC,IAAK0zO,EAAL,CAIA,GAAME,GAAM3xO,IAAgBjC,GAAKkzO,EACjC,IAAIA,IAAUlxO,IAAY8C,YACtB2uO,wBACMC,EADN,2EAE0DJ,EAF1D,iDAE8GM,EAAMN,EAAO,GAF3H,wGAOG,CACH,GAAMO,GAAYn3O,OAAO6I,KAAKvD,KAAaouB,OAAO,SAAA0jN,GAAA,MAAY9xO,KAAY8xO,KAAcZ,IAAO,GACzFrqI,EAAaroG,IAAaqzO,EAChCJ,yBACMC,EADN,wCAEuBK,EAAsBlrI,GAF7C,oBAE4EyqI,EAF5E,qCAEoHM,EAAMN,EAAO,GAFjI,wGAUDG,E5b0y9DX,GAmFIO,GAAuBC,EAnFvB9uN,EAAQ3pB,EAAoB,GAI5B04O,EAAS14O,EAAoB,IAC7B24O,EAA8B34O,EAAoB4D,EAAE80O,GAGpDn1E,EAAcvjK,EAAoB,KAGlC4jK,EAAa5jK,EAAoB,IACjC6jK,EAAkC7jK,EAAoB4D,EAAEggK,GAGxD9vJ,EAAQ9T,EAAoB,GAM5BujM,GAHYvjM,EAAoB,IAGzBA,EAAoB,MAG3BqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U6bt89Dn4BgyI,EAAsB,SAACh6N,GACzB,MAAIA,GAAMguC,QACN,sBACsB,yBADtB,EAES22I,EAAA,GAFT,QAEuB3kL,EAAMguC,QAF7B,KAE4ChuC,EAAMw1C,KAFlD,UAEmE,wBAFnE,kBAGsB,+BAAwBx1C,EAAMvb,OAKxD,sBACsB,yBADtB,kBAEsB,+BAAwBub,EAAMvb,QAWzCu1O,I7b089DX3G,EAAwBjyO,EAAoB,KAG5C64O,EAA8B,WAAc,GAAIvyI,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U8bp+9D15BkyI,EAAyB,SAAC,GAAD,GAAG3+J,GAAH,EAAGA,SAAU92E,EAAb,EAAaA,IAAb,8BACT,yBACZ82E,EAAWA,EAACopH,EAAA,GAAZppH,SAA2BA,EAA3B,UAAgD,wBAA4B,KAFvD,kBAGT,+BAAwB92E,KAS/By1O,I9b4+9DXC,EAAO/4O,EAAoB,KAK3Bg5O,EAAc,WAAc,GAAI1yI,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAE54BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M4b/+9D1hBs2K,EAA0B,iBAACC,EAAD,uDAAgB,GAAhB,iBAEvBl0O,IAAaoE,oBAAsB,EAAG8vO,IAFf,IAGvBl0O,IAAaqE,kBAAoB,EAAG6vO,IAHb,GAO1BX,YACDvzO,IAAauE,QAAU,0BADtB,IAEDvE,IAAawE,SAAW,yBAFvB,IAGDxE,IAAayE,UAAY,yBAHxB,GAMA0vO,GACFn0O,IAAauE,QACbvE,IAAawE,SACbxE,IAAayE,WAGX2vO,GACFp0O,IAAa,gBACbA,IAAa,iBACbA,IAAa+D,cACb/D,IAAagE,gBAGXqwO,GACFr0O,IAAa,gBACbA,IAAa+D,eAGXuwO,GACFt0O,IAAa,iBACbA,IAAagE,gBAGXmvO,GACFjvH,OAAQ,uCACR,YAAa,8DACbqwH,OAAQ,+DACRtwH,QAAS,gEACT,aAAc,yCAGZ+uH,YACDxxO,IAAY8C,aAAe,SAAU,UAAW,eAD/C,IAED9C,IAAYiD,WAAa,SAAU,YAAa,SAAU,UAAW,eAFpE,IAGDjD,IAAY+C,SAAW,SAAU,UAAW,eAH3C,IAID/C,IAAYgD,UAAY,SAAU,YAAa,SAAU,UAAW,eAJnE,GA4EAgwO,E,YACF,WAAY56N,GAAO,yEACTA,GADS,OAEf,GAAK66N,eAAiB,EAAKA,eAAe51N,KAApB,GACtB,EAAK61N,cAAgB,EAAKA,cAAc71N,KAAnB,GACrB,EAAK81N,cAAgB,EAAKA,cAAc91N,KAAnB,GACrB,EAAK+1N,eAAiB,EAAKA,eAAe/1N,KAApB,GACtB,EAAKg2N,cAAgB,EAAKA,cAAch2N,KAAnB,GACrB,EAAKi2N,mBAAqB,EAAKA,mBAAmBj2N,KAAxB,GAC1B,EAAKk2N,qBAAuB,EAAKA,qBAAqBl2N,KAA1B,GAC5B,EAAKL,OACDw2N,UAASA,GAVE,E5b00+DnB,MApWAn3K,GAAU22K,EAAQ76N,GA4BlBilD,EAAa41K,IACTh1O,IAAK,iBACLC,MAAO,W4bh/9DM,MAITsa,KAAKH,MAFLyyC,EAFS,EAETA,SACyB4oL,EAHhB,EAGTxmN,SAAYymN,YAHH,EAK+B7oL,EAAS,OAAhC8oL,EALR,EAKLD,WAER,OAAQD,IAAqBE,GAAsB3zO,IAAY8C,e5b+/9D/D9E,IAAK,gBACLC,MAAO,S4bp/9DG66H,GAA4B,GAAlB46G,GAAkB,uDAAJ,GAAI,EACHn7N,KAAKH,MAAhC6hH,EAD8B,EAC9BA,eAAgBnsE,EADc,EACdA,OAClB8lL,EAAY9lL,GAAU,GACxB+lL,QAuBJ,OAnBIA,GAFc,KAAdD,GAAoBp1O,IAAao1O,GAEnBp1O,IAAao1O,GACpBF,IAAgB1zO,IAAYgD,SACrBxE,IAAawE,SACpB0wO,IAAgB1zO,IAAYiD,UACrBzE,IAAayE,UACpBywO,IAAgB1zO,IAAY+C,QACrBvE,IAAauE,QACpB2wO,IAAgB1zO,IAAY8C,YACrBtE,IAAasE,YAEZg2H,IAAa/5H,IAASoD,WACjC3D,IAAa2D,WAAa3D,IAAa4D,QAI3C63H,IACA45G,EAAc55G,GAGX45G,K5bkg+DP71O,IAAK,gBACLC,MAAO,W4b1/9DK,MACWsa,KAAKH,MAApBqiE,EADI,EACJA,KAAM59E,EADF,EACEA,KACVi3O,QASJ,OANIv7N,MAAK86N,gBACLS,MAAiBj3O,EAAK+xB,cACf6rD,IAASliE,KAAK+6N,uBACrBQ,EAAar5J,GAGVq5J,K5bwg+DP91O,IAAK,gBACLC,MAAO,W4bhg+DK,GACJ2vD,GAASr1C,KAAKH,MAAdw1C,IACR,OAAOA,KAA2C,IAAlCA,EAAK35C,QAAQ,mB5b+g+D7BjW,IAAK,iBACLC,MAAO,S4bpg+DIgsB,EAAO48E,GAAqC,GAAzBktI,GAAyB,yDAGvD,OAFqBx7N,MAAKH,MAAlByyC,UAEsB,IAAV5gC,IAA2D,IAA5C8pN,EAAmB9/N,QAAQ4yF,M5bih+D9D7oG,IAAK,qBACLC,MAAO,W4bzg+DU,MACoBsa,KAAKH,MAAlC+hH,EADS,EACTA,eAAgBrB,EADP,EACOA,SAClBjyB,EAAatuF,KAAK26N,cAAcp6G,EAAUvgH,KAAK06N,iBAErD,OAAOn6G,KAAa/5H,IAASoD,aAEpB0kG,IAAeroG,IAAawE,UAAY6jG,IAAeroG,IAAayE,YACrEk3H,K5b4g+DRn8H,IAAK,uBACLC,MAAO,W4bxg+DPsa,KAAKmG,UAAW80N,UAAWj7N,KAAKyE,MAAMw2N,c5b4g+DtCx1O,IAAK,SACLC,MAAO,W4b1g+DF,aAWDsa,KAAKH,MATL+yC,EAFC,EAEDA,SACAN,EAHC,EAGDA,SACAQ,EAJC,EAIDA,QACAsoB,EALC,EAKDA,SALC,IAMD1mD,SAAY4mD,EANX,EAMWA,WAAYC,EANvB,EAMuBA,aACxBj3E,EAPC,EAODA,KACAi8H,EARC,EAQDA,SACAlrE,EATC,EASDA,KACA8I,EAVC,EAUDA,KAEEg9K,EAAcn7N,KAAK06N,iBACnBpsI,EAAatuF,KAAK26N,cAAcp6G,EAAU46G,GAC1CM,KAAoCp5O,eAAeb,KAAK0E,IAAkBooG,GAC1EitI,EAAav7N,KAAK46N,gBAClBc,GAAmE,IAA3CpB,EAAkB5+N,QAAQ4yF,GAClDqtI,GAAqE,IAA5CpB,EAAmB7+N,QAAQ4yF,GAIpDstI,GAAwD,IAAxCxB,EAAe1+N,QAAQ4yF,GAAqBnoG,IAAcyE,IAAMzE,IAAcyD,WAC9FiyO,EAAcD,IAAkBz1O,IAAcyE,IAC9CkxO,EAAkBD,EAClB1E,GAAen3N,KAAK86N,kBAAoBgB,EAC1CC,SACAj3H,QAEJ,IAAI22H,EACAM,EAAkB71O,IAAiBooG,OAChC,CAKH,GAAMsqI,GAAiBr9J,EAAeD,EALnC,EAWCo9J,EAAmByC,EAAa,aAAc7oL,EAAStwD,OAAQ42O,GAFzDoD,EATP,EASCl3H,KACA+zH,EAVD,EAUCA,OAGAmD,KAAeh8N,KAAK+6N,uBACpBj2H,EAAOk3H,EAIHD,EADAx7G,IAAa/5H,IAASkF,QACJ6vO,EAAcS,EAAanD,SAE1BmD,EAAanD,GAM5C,GAAMoD,GAAyB5tL,IAC3BmrL,EAAsBlrI,GACtBA,IAAeroG,IAAasE,aAAeu6G,GAA3C,mBAAsEA,EACtE+2H,GAAe/2H,GAAf,mBAA0CA,GAEtCo3H,gBAAiBL,EACjB,iBAAkBA,EAClB,0BAA2BA,GAAe77N,KAAK+6N,qBAC/C,8BAAgCx6G,IAAa/5H,IAASoD,WACtD,0BAA4B22H,IAAa/5H,IAASoD,aAKpDuyO,EAAsB9tL,IAAW,cACnC,qBAA8D,IAAxCgsL,EAAe3+N,QAAQ4yF,KAAuButI,EACpE,4BAA6BH,EAC7B,6BAA8BC,IAI9BtuE,SACE+uE,EAAmBlC,EAAwB5nL,EAAStwD,QACpDq6O,EAAahnL,EAAKx/B,OAAO,SAAC2nD,GAAD,OAAyD,IAAhDr7E,OAAO6I,KAAKoxO,GAAkB1gO,QAAQ8hE,IAE9E,IAAI6+J,EAAWr6O,OAAS,EAAG,CAAC,GAChBi5O,GAAaj7N,KAAKyE,MAAlBw2N,SACFqB,EAAYD,EAAW,GACvBE,EAAmBH,EAAiBE,GAAW,GAC/CE,GAAmBJ,EAAiBE,GAAW,EAGrD,IAFAP,EAAkBd,EAAWuB,GAAmBD,EAE5CjqL,EAAStwD,OAASu6O,EAAkB,CACpC,GAAMzgI,IAAOm/H,EAAW,aAAe,YACjCwB,GAAcpuL,IAAW,iBAAkB,oBAAsBquL,OAAQzB,GAC/E5tE,eAAA,UACsB,mBADtB,eAEoBrtJ,KAAKg7N,qBAFzB,UAE0DyB,WAF1D,mBAGmB3gI,OAQ3B,GAAIje,IAAYA,QAAQv5F,EAApB,QACA8rD,GAASA,EACR8iL,EAAA,GADD,UAEe,oBAFf,KAGU5uO,EAHV,UAIeu5F,GAJf,KAKU1/B,EALV,KAMUmd,EANV,KAOUigK,EAPV,YAQiBpE,EARjB,YASiB0E,GAIrB,QAAQt7G,GACJ,IAAK/5H,KAASoD,WACVwmD,KAAU,GAAV,KAAuC9rD,EAAvC,SAAuD82E,EAAvD,KAAuE/lB,IACvEwoC,kBAA2Bv5F,EAA3B,OACA,MACJ,KAAKkC,KAAS8E,SACVuyF,eAAwBv5F,EAAxB,OACA,MACJ,KAAKkC,KAAS+E,OACVsyF,aAAsB79E,KAAKH,MAAMvb,KAAjC,QACA8rD,KAAU,GAAV,KAAoCpwC,KAAKH,MAAMvb,KAA/C,QAA8D0b,KAAKH,MAAMguC,QAAzE,KAAwF7tC,KAAKH,MAAMw1C,OAM3G,GAAMsnL,IAAqBZ,EAAkBzpL,EAASz+C,MAAM,EAAGkoO,GAAmBzpL,EAE5EsqL,GAAwBD,GAAmB3qN,IAAI,SAACugC,EAAS7gC,GAC3D,MAAO,GACFsoN,EAAA,GADL,SAEkBpnL,EAFlB,QAGiBL,EAHjB,QAIiBO,EAJjB,SAKkB,EAAK+nL,eAAenpN,EAAO48E,EAAY+rI,GALzD,WAOoB/rI,EAPpB,YAQqBwtI,EARrB,UASmBj+I,GATnB,WAUoBv5F,EAVpB,KAWc65D,GAXd,QAMqBvL,EANrB,IAMiClhC,EANjC,IAM0C6gC,EAAQj2C,GANlD,MAkBAikH,KAAa/5H,IAASoD,YACtBgzO,GAAsBv6N,OAAO,EAAG,EAAhC,EACKmiJ,EAAA,GADL,SAGkB,KAHlB,YAIoB,qBAJpB,uBAEY,gCAQhB,IAAIpyG,IAAS,IACb,IAAIwqL,IAAyBA,GAAsB56O,OAAS,EAAG,CAE3D,GAAM66O,IAAY1B,GAAer2H,GAAQg0H,EAAkBh0H,EAAMq2H,EAAa56G,EAC9EnuE,aAAA,UACoB+pL,UACXU,IAAaA,EACT,KADJ,QAGWh9J,QAASg9J,OAIpBzsL,GATT,mBAUwB6rL,UACXW,IAEJvvE,GAKb,MAAOj7G,Q5byg+DJqoL,G4b30+DU/5N,YAuVrB+5N,GAAOhzI,cACHn1C,YACA59B,YACApwB,KAAM,GACN+wD,SAGWolL,O5b2/9DT,SAAUp5O,EAAQiE,EAAqBrE,GAE7C,YAGA,IAAI2pB,GAAQ3pB,EAAoB,GAC5BmpG,EAA6BnpG,EAAoB4D,EAAE+lB,GAGnDi6I,EAAa5jK,EAAoB,IACjC6jK,EAAkC7jK,EAAoB4D,EAAEggK,GAMxDi4E,GAHY77O,EAAoB,IAGxBA,EAAoB,MAG5BwqB,EAAKxqB,EAAoB,GAGzBupG,EAAgBvpG,EAAoB,IAGpCsyE,EAAgBtyE,EAAoB,IAGpCmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,I+b3/+DjPy7N,EAAkB,SAACl9N,GAAU,GACvB6H,GAA0B7H,EAA1B6H,SAAUyc,EAAgBtkB,EAAhBskB,MAAOpmB,EAAS8B,EAAT9B,IACzB,KAAKA,EACD,MAAO,0BAAU2J,EAErB,IAAMymF,GAAWA,KACVzmF,GACH3J,KAAMw1D,YAAcx1D,EAAMomB,IAE9B,OAAO,uBAAOgqE,IASZlmF,EAAkB,SAACxD,EAAOiD,GAAR,OACpBA,WACAyc,MAAOm3B,YAAwB72C,KAGpB+pF,cAAQvmF,GAAiB80N,G/bmg/DpC/3E,EAAsB/jK,EAAoB,KAG1C6kK,EAAW7kK,EAAoB,IAG/B8T,EAAQ9T,EAAoB,GAG5BqS,EAASrS,EAAoB,KAI7BqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Ugcli/Dn4Bm1I,GAAyB,IAAK,IAAK,MACnC73E,GAAgB,IAAK,IAAK,MAE1B83E,GACFh3O,IAAa4D,QACb5D,IAAa6D,kBACb7D,IAAa,gBACbA,IAAa,iBACbA,IAAa+D,cACb/D,IAAagE,eACbhE,IAAasE,aAGXyvO,EAAO,SAAC,GAYR,GAXF1uI,GAWE,EAXFA,aACA/4C,EAUE,EAVFA,QACA87C,EASE,EATFA,SACAH,EAQE,EARFA,WACAI,EAOE,EAPFA,WACA4uI,EAME,EANFA,YACAlxI,EAKE,EALFA,iBACAoC,EAIE,EAJFA,SACAH,EAGE,EAHFA,SACAnC,EAEE,EAFFA,aACAqxI,EACE,EADFA,eAEQ7gO,EAAoDi2C,EAApDj2C,GAAIuuC,EAAgD0H,EAAhD1H,YAAauC,EAAmCmF,EAAnCnF,UAAW9oD,EAAwBiuD,EAAxBjuD,KAAM21E,EAAkB1nB,EAAlB0nB,MAAO3sB,EAAWiF,EAAXjF,OAC3Ck9G,EAAoB/E,YAAgBlzG,GACpC6qL,EAAqB9vL,IAAWvmD,IAAckH,SAC9CovO,EAAiB/vL,IAAWvmD,IAAciH,KAC1CsvO,GAAsBJ,EAEtBK,EAAgBlvL,IAAW8uL,GAC7BK,iBAAkBN,EAClB,kBAAmBA,EACnB,wBAA2E,IAAlDD,EAAyBvhO,QAAQ4yF,KAAwBD,EAClF,yBAA0BC,IAAeroG,IAAa2D,WACtD,4BAA6BykG,IAG3Bq8D,EAAgBr8G,IAAW,uBAAwB,oBACrD,yBAA0B4/C,IAGxBwvI,EAAkBpvL,KACpB,iCAAkCivL,EAClC,oBAAsBA,GAAsBD,IAG1CK,EAAcrvL,IAAW,oBAC3B,2BAA4B+/C,EAC5B,8BAAgCkvI,GAAsBF,IAIpDO,EAAWprL,EAAQqrL,MAAR,mBAA+B,cAA/B,OAAiD,GAC5DC,EAAiBxvI,GAAYxjD,EAAb,iBAAyC,+BAAwBA,GAAmB,GACtG9sC,SACA+/N,UAEAR,GAAsBJ,KACtBY,EAAmBxyI,EACnBvtF,EAAOmwF,EAGX,IAAMu8D,GAAaD,EAAoBA,EAApBA,iBAA2BA,GAA4B,KACpEthG,EAAW4iC,GAAgBA,EAAa5iC,QAC9C,OAAOg0K,GAAcA,EAChB,GADE,aAEY,QAFZ,UAGU5gO,EAHV,aAIa29D,EAJb,UAKYsjK,EALZ,KAMOx/N,EANP,QAOU+/N,UAPV,mBASgB,mCAThB,mBAUoB,yBAVpB,IAUkD1wL,EAVlD,IAUkE9oD,MAVlE,qBAcew5O,EAdf,UAc4CP,EAd5C,UAcoEjhO,EAdpE,aAcoF29D,UAdpF,EAeE,GAfF,aAe6B,QAf7B,UAegDyjK,EAfhD,KAemE3/N,UAfnE,sBAgBuB,gCACb4/N,EAjBV,mBAkBwB,4CAlBxB,EAmBc34E,EAAA,GAnBd,IAoBsB53G,EApBtB,aAqB+BihD,EAAW2uI,EAAwB73E,EArBlE,MAsBwB,OAtBxB,IAuBsB7gK,IAvBtB,mBAyB6Bm5O,IAzB7B,EA0BcX,EAAA,GA1Bd,SA0B8B5zK,EA1B9B,QA0BiD3W,EA1BjD,iBA0B4Ey5C,EA1B5E,wDA6B2B,gCAAyB1nG,GA7BpD,mBA8B6BomK,UA9B7B,mBA+BgC,mCACVD,IAGRozE,MAsBV/3E,iBAASk0E,Ihc4i/DlB,SAAU34O,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIujE,GAAsCvjE,EAAoB,GAE1DojK,GAD8CpjK,EAAoB4D,EAAE2/D,GACzBvjE,EAAoB,KAC/DqjK,EAAmDrjK,EAAoB4D,EAAEw/J,GACzEliG,EAAuClhE,EAAoB,GAE3D88O,GADkD98O,EAAoB,IACnBA,EAAoB,KAC5FqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Uictr/Dn4Bi1I,EAAQ,SAAC,GAMT,GALFkB,GAKE,EALFA,OACAzrL,EAIE,EAJFA,QACQ9H,EAGN,EAHFyB,KAAQzB,cACRtuC,EAEE,EAFFA,SACA6vF,EACE,EADFA,iBAEQtoG,EAAsC6uD,EAAtC7uD,KAAM4pD,EAAgCiF,EAAhCjF,OAAQp6C,EAAwBq/C,EAAxBr/C,SAAUgoE,EAAc3oB,EAAd2oB,UAC1B+iK,EAAa5vL,IAAW,kBAC1B,uBAAwB2vL,EACxB,uBAAwB1wL,IAAWvmD,IAAciH,KACjD,2BAA4Bg+F,IAG5BkyI,EAAe,IACnB,IAAIlyI,EACAkyI,EAAezzL,EAActuC,EAASshH,cACnC,IAAI/5H,IAASmD,IAAYyG,IAE5B4wO,EAAehrO,GAAYq/C,EAAQqC,QAAQ,GAAG1hD,aAE9C,QAAQo6C,GACJ,IAAKvmD,KAAciH,KACfkwO,EAAezzL,EAActuC,EAASgiO,KACtC,MACJ,KAAKp3O,KAAckH,SACfiwO,EAAehjK,CACf,MAEJ,KAAKn0E,KAAcmH,OAEfgwO,EAAehrO,GAAYq/C,EAAQqC,QAAQ,GAAG1hD,QAC9C,MACJ,SACIgrO,EAAehrO,GAAY,KAIvC,MAAIgrO,GACA,mBAAwBD,UAAaC,GAElC,KAWIl6K,iBAAW84K,Ijcgs/DpB,SAAUz7O,EAAQiE,EAAqBrE,GAE7C,Ykc1v/De,SAASwkK,GAAT,GAAgE,GAArC/hK,GAAqC,EAArCA,KAAqC,IAA/Bs3E,oBAA+B,EAApB,GAAoB,MAAhBpmB,mBAAgB,MAE3E,OAAIlxD,KAASmD,IAAYyG,KAAOsnD,EAAQ,KAAOA,EAAQ,GAAGvgC,UAC/C,KAGJ2mD,EARX,kBlckx/DM,SAAU35E,EAAQiE,EAAqBrE,GAE7C,Ymcjx/DO,SAAS0tM,GAAmB11I,GAAS,GAChCo1I,GAAuDp1I,EAAvDo1I,kBAAmBC,EAAoCr1I,EAApCq1I,kBAAmBvuE,EAAiB9mE,EAAjB8mE,aACxCnsE,EAAMA,uDAAuD06I,EAA7D,SAEN,OAAOj4G,KAAQmgG,KAAK5iI,GACf0gE,KAAKyL,GACLjvF,IAAI,eAAgBu9J,GACpBv9J,IAAI,SAAU,oBACd4yE,IAAIl8F,KACJgrB,KAAK,SAAAs1F,GACF,MAAO3jH,MAAKC,UAAU0jH,EAAI7nE,QAE7B8Q,MAAM,SAAC7rE,GACJ,OACI,WACA,IAAOA,KAlBvB,kBAAA5D,EAAA,Onc8y/DM,SAAUD,EAAQiE,EAAqBrE,GAE7C,Yoc3x/DO,SAASwsM,GAAWjuE,GAAiD,GAAzC/xB,GAAyC,0DAAzB2wI,EAAyB,wDACpEr0H,QAIJ,IAAIq0H,EACA,MAAOC,EAGX,IAAI7+G,GAAU/xB,EAAW,CACrB,GAAM6wI,GAAaA,GAAG9+G,EAAS7mH,YAAY80F,KAC3Csc,GAAYw0H,EAAZ,IAAwBD,EAG5B,MAAOv0H,Gpc8w/DsBzkH,EAAuB,EAAImoM,CAMvC,IAAI+wC,GAAuCv9O,EAAoB,KAE3Dw9O,GAD0Dx9O,EAAoB,KAC1BA,EAAoB,Kochz/D3Fo9O,Gpciz/DSl8O,OAAOkf,Oocnz/DDq9N,cAEJ,mBAEXH,EAAcF,EADF,kBpc24/DZ,SAAUh9O,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIujE,GAAsCvjE,EAAoB,GAE1D09O,GAD8C19O,EAAoB4D,EAAE2/D,GACvBvjE,EAAoB,MACjEoiM,EAA2CpiM,EAAoB,IAC/DqiM,EAAmDriM,EAAoB4D,EAAEw+L,GAE9F/7F,GADgErmG,EAAoB,IAC7E,WAAc,GAAIsmG,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Wqcx5/Dn4B+2I,GACF70O,MACI80O,WAAY,cACZnrF,QAAS,mBACTpsH,MAAO,aACPkjB,KAAM,YACNutJ,SAAU,gBACV5kJ,QAAS,eACTjoB,MAAO,cAEX4zM,UACID,WAAY,uBACZnrF,QAAS,oBACTpsH,MAAO,kBACPkjB,KAAM,iBACNutJ,SAAU,oBACV5kJ,QAAS,GACTjoB,MAAO,KAITg6H,EAAuB,SAAC,GAQxB,GAPFS,GAOE,EAPFA,aACAr+H,EAME,EANFA,MACA0zC,EAKE,EALFA,SACAzoB,EAIE,EAJFA,QACAqxC,EAGE,EAHFA,OACAqK,EAEE,EAFFA,SACAjC,EACE,EADFA,iBAEMlsF,EAAU8jF,EAAS,OAAS,WAC5B8mE,EAAgBr8G,IAAWuwL,EAAa9+N,GAAS0qC,KAAM,oBACzD,yBAA0ByjD,GAG9B,kCAC2B2wI,EAAa9+N,GAAS++N,mBADjD,EAES,KAFT,QAEwBtsL,EAFxB,iBAEmDy5C,IAC1C25D,EAHT,mBAIwBi5E,EAAa9+N,GAAS4zI,gBAJ9C,mBAK4BkrF,EAAa9+N,GAASwnB,cAAQA,GAL1D,mBAM4BojI,UAN5B,mBAOgCk0E,EAAa9+N,GAASi4L,iBACjC/8H,GAAYA,EAAZA,iBAAmBA,OAkB5CkqF,GAAqBz9D,cACjBk+D,aAAc,KACdr+H,MAAO,GACP0zC,SAAU,IAGCkqF,Orc05/DT,SAAU7jK,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAkBrC,QAAS2rB,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GAE1L,QAAS8vD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAxB7Z,GAAIqlD,GAAsCvjE,EAAoB,GACzGwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEm8D,EAA4C1/H,EAAoB,GAChE89O,EAAuD99O,EAAoB,GAC3E+9O,EAAwD/9O,EAAoB,IAC5Eg+O,EAA2Dh+O,EAAoB,KAC/Ei+O,EAAuCj+O,EAAoB,GAC3Dk+O,EAA2Cl+O,EAAoB,IAC/Dm+O,EAAgDn+O,EAAoB,KACpEo+O,EAA4Cp+O,EAAoB,IAChEq+O,EAA8Cr+O,EAAoB,KAClEs+O,EAAoDt+O,EAAoB,IAC7FmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPgmF,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Msc1+/D1hB47K,GACFh3G,SAAU,SACVi3G,aAAc,WACdC,WAAY,UAGVC,E,YACF,WAAY9/N,GAAO,yEACTA,GADS,OAEfyY,GAAKsnN,YAActnN,EAAKsnN,YAAY96N,KAAjBwT,GACnBA,EAAKunN,YAAcvnN,EAAKunN,YAAY/6N,KAAjBwT,GACnBA,EAAKwnN,gBAAkBxnN,EAAKwnN,gBAAgBh7N,KAArBwT,GACvBA,EAAK7T,OAAU6rC,YALA,Etc4pgEnB,MA5JAwT,GAAU67K,EAAwB//N,GAclCilD,EAAa86K,IACTl6O,IAAK,4BACLC,MAAO,SscxggEeid,GACtB,GAAKA,EAAU64D,SAAWx7D,KAAKH,MAAM27D,QAAY74D,EAAU0oE,aAAerrE,KAAKH,MAAMwrE,WAAa,CAC9F,GAAIG,GAAaia,IAAa3nF,MAC1BtX,KAASiF,MAAQkX,EAAU49G,WAC3B/0C,EAAaia,IAAaO,sBAE9BhmF,KAAK6/N,YAAYl9N,EAAU0oE,WAAYG,Otc4ggE3C/lF,IAAK,qBACLC,MAAO,WsczggEU,MAC0Bsa,KAAKH,MAAxC1D,EADS,EACTA,SAAUkvE,EADD,EACCA,WAAYk1C,EADb,EACaA,SAC1Bw/G,QAEJ,IAAIx/G,IAAa/5H,IAASiF,KAAO4/E,EAAWrpF,OAAS,EAAG,CACpD,GAAMymC,GAAczoB,KAAKyE,MAAM2nC,SAAzB,eACN2zL,KACK,KADL,QAEiB//N,KAAKyE,MAAM6rC,QAF5B,KAGa,oBAHb,SAIkB7nB,EAJlB,SAKiB,aAIrB,MAAO,GAAP,iBACmB,wBADnB,OACoDuhI,UAAW,SAAUsE,QAAS,gBADlF,iBAGY,kBAAC,IAAD,KACQnyJ,EAAS,2BACbqX,QACIjY,MAAMA,EAANA,UAAA,MAAsBikO,UAAgBn0J,QAIjD00J,EAVT,cAWkB,Ytc+ggElBt6O,IAAK,cACLC,MAAO,Ssc3ggEC4sD,GACR,MAAItyC,MAAKH,MAAMpG,SAAW3T,IAAI0C,IAAIa,IACvBipD,EAEJA,EAAStgC,IAAI,SAACugC,GAMjB,MALIA,GAAQjuD,OACHiuD,EAAQjuD,KAAKgmB,MAAM,cACpBioC,EAAQjuD,KAAR,IAAmBiuD,EAAQ0nB,MAA3B,OAAuC1nB,EAAQjuD,OAGhDiuD,Otc+ggEX9sD,IAAK,cACLC,MAAO,Ssc5ggEC6V,GAA0F,GAAnFykO,GAAmF,uDAAvEv6I,IAAa3nF,OAA0D,OAAlD4nF,EAAkD,uDAAzC,YAAaC,EAA4B,uDAAhB/9F,IAAUwK,KAAM,EACrE4N,KAAKH,MAA1BgG,EAD0F,EAC1FA,SAAUpM,EADgF,EAChFA,MAClBoM,GAAS0/E,YAAiBhqF,EAAO9B,EAAQumO,EAAWt6I,EAAQC,IACvDnzD,KAAK,oBAAGyZ,KAAH,IAAWqE,mBAAX,OAA+BlE,EAA/B,EAAyB9nD,IAAzB,OAAiD,GAAK6hB,UAAWmqC,UAASlE,eAC/E2kB,MAAM,SAAC7rE,GAAD,MAASC,GAAQyN,KAAK1N,Qtc8hgEjCO,IAAK,kBACLC,MAAO,Ssc5hgEKggG,EAAQC,GAAW,GACvBta,GAAerrE,KAAKH,MAApBwrE,UACRrrE,MAAK6/N,YAAYx0J,EAAYoa,IAAaO,qBAAsBN,EAAQC,MtcgigExElgG,IAAK,SACLC,MAAO,Wsc9hgEF,UACL,KAAKsa,KAAKH,MAAM1E,aACZ,MAAO,KAFN,IAIGolH,GAAavgH,KAAKH,MAAlB0gH,SACF0/G,EAAkBjgO,KAAKkgO,qBAEzBC,SACE7vL,EAAUtwC,KAAKyE,MAAM6rC,WA0B3B,OAzBIA,GAAQtuD,OAAS,GAAKu+H,IAAa/5H,IAASiF,IAC5C00O,EAAgB7vL,EAAQt+B,IAAI,SAACogC,EAAQ1gC,GAAU,GACnCpV,GAAiD81C,EAAjD91C,GAAIhY,EAA6C8tD,EAA7C9tD,KAAMowB,EAAuC09B,EAAvC19B,SADyB,EACc09B,EAA7BE,oBADe,SACcF,EAAdiD,gBADA,OAErCmoB,EAAe,WAATl5E,EAAoB2B,IAAaqE,iBAAmBrE,IAAaoE,kBAC7E,UACK,KADL,SAEmB,EAAKu1O,YAAYttL,GAFpC,MAGe5gC,EAHf,WAKoBzrB,IAAa6D,kBALjC,SAMkB4qB,EANlB,KAOcpwB,EAPd,SAQkBi8H,EARlB,MASe/iD,GATf,OAAAjlD,EASuB88B,KALP/4C,EAJhB,IAIsBhY,KAQnBi8H,IAAa/5H,IAASiF,MAC7B00O,EAAgB7vL,EAAQt+B,IAAI,SAACogC,GAAW,MACVA,EAAlBE,oBAD4B,MAEpC,UAAS,KAAT,SACcA,EADd,aAEkB,EAAKwtL,qBAI/B,mBACmB,0BADnB,OACsDpxE,gBAAiB,iBAC9DuxE,EACAE,Otc4igENR,Gsc7pgE0Bj/N,aAiI/BuH,EAAkB,SAACxD,GAAD,OACpBhL,OAAQD,YAAeiL,GACvBtJ,aAAcD,YAAqBuJ,GACnC+2D,OAAQxvB,YAAavnC,GAAO+2D,QAGjBxX,iBAAWwqC,YAAQvmF,GAAiB03N,MtckigEtBn+O,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YucjsgEe,SAASm/O,KACpB,GAAsB,mBAAX1+O,QAAwB,CAC/B,GAAMgwO,GAAW,sBAAsB9rM,KAAKod,UAAUwpC,WAChD6zJ,IAAa3+O,OAAOwoD,UAAYxoD,OAAOwoD,OAAOo2L,QACpD,OAAO5O,IAAY2O,EAEvB,OAAM,ECDV,QAASE,GAAgB1gO,GACrB,IAAKA,EAAM8tC,SACP,MAAO,KAFiB,OAI6B9tC,EAAM8tC,SAAjD6yL,EAJc,EAIpBl8O,KAA6Bm8O,EAJT,EAIA5yL,OAC5B,2CAGsB,oBAHtB,QAIqB,SAAC3iB,GACNA,EAAMkvD,iBACN14F,OAAO4Z,SAAW,mBANlC,aASsBmlO,EATtB,UASiD,cATjD,IASoED,MCbxE,QAASD,GAAgB1gO,GACrB,IAAKA,EAAM8tC,SAAU,CACjB,GAAM+yL,IACFxgC,SAAU,OACVvyK,MAAO,WAGLgzM,GACF5gC,KAAM,qBACNG,SAAU,OACVvyK,MAAO,UAMX,sBAFIizM,aAAc,QAElB,QACkC,iBAAMl/O,QAAOkuG,QAAQ2kB,gBADvD,oBAEwB,gDAFxB,MAE+EmsH,IAF/E,gBAGqBC,UAHrB,SAhBwB,MAuB6B9gO,EAAM8tC,SAAjD6yL,EAvBc,EAuBpBl8O,KAA6Bm8O,EAvBT,EAuBA5yL,OAC5B,2BACmB,yBADnB,EAES+1G,EAAA,GAFT,aAEkC,QAFlC,UAEoD,uBAFpD,GAE8E,YAF9E,mCAKyB68E,EALzB,UAM8B,cAN9B,IAOyBD,EAPzB,OAQ6Bx3J,MAAO,OAAQ63J,SAAU,Uzc+8gE1D,QAASn9K,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GArTje,GAAIyL,GAAQ3pB,EAAoB,GAI5BwqB,EAAKxqB,EAAoB,GAGzB8T,EAAQ9T,EAAoB,GAG5BspD,EAAUtpD,EAAoB,IAG9BglK,EAAwBhlK,EAAoB,IAG5CkY,EAAclY,EAAoB,GAGlC+qD,EAAe/qD,EAAoB,IAGnCwvE,EAAmBxvE,EAAoB,IAGvCqjF,EAAUrjF,EAAoB,KAC9B6/O,EAA+B7/O,EAAoB4D,EAAEy/E,GAYrDtgB,EAAa/iE,EAAoB,IAGjCqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U0c3ugEn4Bk5I,GACFtyE,UAAW,2BAGTuyE,EAAS,SAAC,GAAD,GAAGC,GAAH,EAAGA,aAAc7tO,EAAjB,EAAiBA,QAAS8tO,EAA1B,EAA0BA,WAA1B,2BACI,mBADJ,MAC8BH,UAD9B,iBAEF3tO,GAFE,iBAGM,yBAHN,QAGwC6tO,UAAeC,KAUvDF,I1civgEXG,EAAwB,WAAc,GAAI55I,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U2chwgEp5Bu5I,EAAmB,SAAC,GAOpB,GANFC,GAME,EANFA,cACAC,EAKE,EALFA,YACAL,EAIE,EAJFA,aACAt2K,EAGE,EAHFA,aACAxuD,EAEE,EAFFA,SACQsuC,EACN,EADFyB,KAAQzB,cAEF82L,EAAWF,EAAgBA,EAC5B,GADY,aAEKJ,EAFL,QAGAx2L,EAActuC,EAAS,oBAAsBouE,aAAc5f,EAAarmE,OAHxE,YAIImmD,EAActuC,EAAS,oBAExC,IAIJ,2BACmB,wDADnB,sBAHoBklO,EAAyB,uEACzC,0CAEJ,QAE4CC,UAF5C,oBAG4B,iCACX72L,EAActuC,EAAS,4BAG/BolO,GAKbH,GAAiB35I,cACb98B,gBAYW3G,mBAAWo9K,G3c0vgEtBI,EAAoB,WAAc,GAAIj6I,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UwczwgEh5B45I,EAAe,SAAC,GAA4D,GAA1DJ,GAA0D,EAA1DA,cAAeJ,EAA2C,EAA3CA,aAAct2K,EAA6B,EAA7BA,aAAchd,EAAe,EAAfA,SACzD+zL,EAASp9J,IAAQ,0CAA2C3Z,IAC9D2Z,IAAQ,mBAAoB3Z,IAAiB,GAC3Cg3K,EAAUr9J,IAAQ,iBAAkB3Z,IAAiB,SACvDrpD,EAAS,GACPsgO,GACFxiC,gBAAiB,EAGjBghC,OACAwB,EAAS54J,MAAQ,OAErB,IAAM64J,GAAcH,EAASA,SAAT,IAAmBA,EAAnB,UAAqC,cAArC,MAA0DE,EAA1D,IAAwE,aAAgB,IAK5G,OAJoB,QAAhBC,IACAvgO,EAAS,UAGb,qEAESi/N,GAFT,SAEmC5yL,IAFnC,iBAGqB,0CAHrB,OAGuErsC,EAHvE,KAGqFqgO,UACxEE,GAJb,EAMS,GANT,cAO2BR,EAP3B,aAQ0BJ,EAR1B,aAS0Bt2K,EAT1B,aAU0BA,EAAarmE,QAgB3Cm9O,GAAah6I,cACT98B,gBAGW82K,SxcuygEX79E,EAAgB3iK,EAAoB,KAGpC4jK,EAAa5jK,EAAoB,IACjC6jK,EAAkC7jK,EAAoB4D,EAAEggK,GAGxDi9E,EAA4B,WAAc,GAAIv6I,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Uycz0gEx5Bk6I,EAAuB,SAAC,GAQxB,GAPFV,GAOE,EAPFA,cACAC,EAME,EANFA,YACAL,EAKE,EALFA,aACAe,EAIE,EAJFA,iBACAzqK,EAGE,EAHFA,SACA5M,EAEE,EAFFA,aACAhd,EACE,EADFA,SAEMs0L,EAAc5zL,IAAW,oBAC3B,6BAA8BkpB,IAE5BmqK,EAASp9J,IAAQ,0CAA2C3Z,IAC9D2Z,IAAQ,mBAAoB3Z,IAAiB,GAC3Cg3K,EAAUr9J,IAAQ,iBAAkB3Z,IAAiB,SACvDrpD,EAAS,GACT4gO,EAAiB,KACjBC,EAAqB,KACnBN,EAA0B,KAAXH,EAAD,aACNA,EADM,UACY,cADZ,OACmCU,cAAe,OADlD,IAC+D,aAAgB,IA6BnG,OA3BoB,QAAhBP,IACAvgO,EAAS,UAGR0gO,IAGDE,WAAA,UACmB,qBADnB,OACiDxlJ,QAAS,wBAD1D,iBAEqB,uBAFrB,OAEoDp7E,EAFpD,KAEkEqgO,UAFlE,sBAIiBE,KAMjBM,IACK,GADL,cAEuBd,EAFvB,YAGqBC,EAHrB,aAIsBL,EAJtB,aAKsBt2K,KAK1B,sBACuBs3K,UADvB,EAES,GAFT,SAEmCt0L,IAC1Bu0L,EACAC,GAkBbJ,GAAqBt6I,cACjB98B,gBAGWo3K,Szcm3gEXM,EAAyB,WAAc,GAAI96I,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEv5BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M4cp+gE1hB0+K,E,YACF,WAAYziO,EAAOC,GAAS,yEAClBD,EAAOC,GADW,OAExB,GAAKmhO,aAAe,EAAKA,aAAan8N,KAAlB,GACpB,EAAKy9N,6BAA+B,EAAKA,6BAA6Bz9N,KAAlC,GACpC,EAAKw8N,YAAc,EAAKA,YAAYx8N,KAAjB,GAJK,E5cylhE5B,MAjGAg/C,GAAUw+K,EAAmB1iO,GAgB7BilD,EAAay9K,IACT78O,IAAK,eACLC,MAAO,S4clghEEwlC,GACTA,EAAMkvD,gBADU,OAEap6E,KAAKH,MAA1B07C,EAFQ,EAERA,UAFQ,EAEA11C,UACPqoD,YAA6B3S,IACjCmxI,QAAQ,WACLhrM,OAAO4Z,SAAW5Z,OAAO4Z,c5c2ghEjC7V,IAAK,+BACLC,MAAO,S4cvghEkBwlC,GACzBA,EAAMkvD,gBAD0B,OAEHp6E,KAAKH,MAA1B07C,EAFwB,EAExBA,UAFwB,EAEhB11C,UACPqoD,YAA6B3S,O5c6ghEtC91D,IAAK,cACLC,MAAO,S4c3ghECwlC,GAAO,UACfA,GAAMkvD,iBACNp6E,KAAKH,MAAMgG,SAASsqD,YAA0C,OACzD39B,KAAK,SAACzd,QACCA,GACAuD,EAAKzY,MAAMgG,SAASwnD,oB5cihhEhC5nE,IAAK,SACLC,MAAO,W4c7ghEF,MACmFsa,KAAKH,MAArF8tC,EADH,EACGA,SAAU1zC,EADb,EACaA,WAAY6B,EADzB,EACyBA,SAAUR,EADnC,EACmCA,SAAUqvD,EAD7C,EAC6CA,aAAc32C,EAD3D,EAC2DA,UAAW4D,EADtE,EACsEA,SACrE2/C,GAAkD,IAAtC3/C,EAASlc,QAAQzU,IAAUqH,QAAqD,IAArCspB,EAASlc,QAAQzU,IAAUsH,KAClF8yO,GAAkB92L,YAAQogB,KAAuD,IAAtC/yC,EAASlc,QAAQzU,IAAUqH,MACtEk0O,EAAelnO,GAAkC,YAAtBA,EAASiB,SACpCylO,EAAoB/nO,GAAcuoO,GAAkBxuN,GAAalY,CAEvE,OAAI0mO,GACA,EACK,GADL,cAEuBnB,EAFvB,YAGqBrhO,KAAKshO,YAH1B,aAIsBthO,KAAKuiO,6BAJ3B,iBAK0BP,EAL1B,SAMkBzqK,EANlB,aAOsB5M,EAPtB,SAQkB/yC,EARlB,SASkB3d,EAAa,KAAO0zC,IAKtCq0L,EACO,KAGX,EACK,GADL,cAEuBX,EAFvB,aAGsBrhO,KAAKihO,aAH3B,aAIsBt2K,EAJtB,SAKkB/yC,EALlB,SAMkB3d,EAAa,KAAO0zC,Q5cuhhEnC20L,G4c1lhEqB5hO,YAqFhC4hO,GAAkB76I,cACd7vE,YACA+yC,gBAGJ,IAAM1iD,GAAkB,SAACxD,GAAU,MACYA,EAAnCrL,GADuB,2BAChB0C,oBADgB,KAEZ8b,EAAanT,EAAMyP,eAA9BG,SACR,QACIs5B,SAAU3C,YAAiBvmC,GAC3BxK,WAAYF,YAAmB0K,GAC/B3I,WACA6uD,aAAc8F,YAAiBhsD,GAC/BuP,UAAWrY,YAAkB8I,GAC7BmT,YAIO42E,iBAAQvmF,GAAiBq6N,I5cghhElC,SAAUjhP,EAAQiE,EAAqBrE,GAE7C,YA2CA,SAASsE,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,EAE3M,QAASsrB,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,G6czqhEnL,QAAS6uO,GAAY58N,EAAU6B,EAAUqxC,GAAU,GAC9C50B,GAAiCzc,EAAjCyc,MAAO7oB,EAA0BoM,EAA1BpM,SAAUonO,EAAgBh7N,EAAhBg7N,YAD6B,EAEjCpnO,EAAfC,iBAFgD,MAGtDA,QAAaA,EAAUw9C,EAAa50B,GACpCte,EAASkH,kBAAQA,KAAKzR,GAAUC,YAChCsK,EAAS68N,EAAYnnO,I7c0nhEzB,GAAIqP,GAAQ3pB,EAAoB,GAI5BwqB,EAAKxqB,EAAoB,GAGzB6T,EAAM7T,EAAoB,IAI1B+iE,EAAa/iE,EAAoB,IAGjC0lH,EAAmB1lH,EAAoB,KAGvCwU,EAAaxU,EAAoB,IAGjC22D,EAAU32D,EAAoB,IAG9B0hP,EAAS1hP,EAAoB,KAG7BqpE,EAAYrpE,EAAoB,KAChC2hP,EAAiC3hP,EAAoB4D,EAAEylE,GAGvDu4K,EAAa5hP,EAAoB,KAGjCw5H,EAAex5H,EAAoB,IAGnCqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4B9xB,EAAiB,WAAc,QAASC,GAAcpiE,EAAKtS,GAAK,GAAI20E,MAAeC,KAAeC,KAAgBC,QAAgB,KAAM,IAAK,GAAiCC,GAA7BC,EAAK1iE,EAAIk2C,OAAOnD,cAAmBuvB,GAAMG,EAAKC,EAAGz0D,QAAQizB,QAAoBmhC,EAAK/zE,KAAKm0E,EAAG3wE,QAAYpE,GAAK20E,EAAKj0E,SAAWV,GAA3D40E,OAAyE,MAAOhxE,GAAOixE,KAAWC,EAAKlxE,EAAO,QAAU,KAAWgxE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUriE,EAAKtS,GAAK,GAAI0S,MAAM+c,QAAQnd,GAAQ,MAAOA,EAAY,IAAIk2C,OAAOnD,WAAYxkD,QAAOyR,GAAQ,MAAOoiE,GAAcpiE,EAAKtS,EAAa,MAAM,IAAI48B,WAAU,4D8czqhEhlB4kN,EAAc,SAAC,GAcf,MAbFtoO,EAaE,EAbFA,OACAc,EAYE,EAZFA,SACAynO,EAWE,EAXFA,aACA78H,EAUE,EAVFA,WACA/5C,EASE,EATFA,SACA62K,EAQE,EARFA,qBACAC,EAOE,EAPFA,qBACAC,EAME,EANFA,qBACAC,EAKE,EALFA,sBACAC,EAIE,EAJFA,iBACAC,EAGE,EAHFA,mBACAlnO,EAEE,EAFFA,SACQsuC,EACN,EADFyB,KAAQzB,cAEFlvC,EAAQD,EAASC,MACjB+nO,EAAyB/nO,EAAM7X,MAAQ+2H,IAAaC,QAAQ1sH,KAC5Du1O,EAAchoO,EAAMgoO,YACpBC,EAAeJ,IACdtwO,MAAO23C,EAActuC,EAAS,uBAAwBzW,UAAMA,GAAYhC,KAAM,aAChFmvB,OAAOqzF,EAAWl0F,IAAI,SAACyxN,GAAD,OAAY3wO,MAAO2wO,EAAIn/O,MAAQm/O,EAAI1oK,KAAMr1E,MAAO+9O,EAAI1oK,KAAMr3E,KAAM+/O,EAAI//O,KAAM4Y,GAAImnO,EAAInnO,OAAU,KAEjHonO,EAAiBL,IAAwBvwO,MAAO23C,EAActuC,EAAS,yBAA0BzW,MAAO,KACzGmtB,UACG,SAAIs5C,IACHn6C,IAAI,SAACihC,GAAD,OACDngD,MAAOmgD,EAAQ3uD,KACfoB,MAAOutD,EAAQ8nB,KACfz+D,GAAI22C,EAAQ8nB,SAEhB,KACF4oK,EAAwBH,GAC1Bl5K,IAAUk5K,EAAc,SAACjmH,GAAD,MAAaA,GAAO73H,QAAU6V,EAAMo/G,aAC1DipH,EAA0BF,GAAkBp5K,IAAUo5K,EAAgB,SAACnmH,GAAD,MAAaA,GAAO73H,QAAU6V,EAAM03C,UAE1G4wL,EAAgBtoO,EAAMq9C,OAAS,SAAShzB,KAAKrqB,EAAMq9C,OACrDkrL,EAAevoO,EAAMq/G,UACrBmpH,SACAC,QACJ,IAAIH,EAAe,CAAC,GAAD,GACMtoO,EAAMq9C,MAAMl7C,MAAM,KADxB,SACRipE,EADQ,KACDC,EADC,KAETq9J,EAAQxuO,IAAWivE,UAAU,GAAIx0B,MAEvC,IADA4zL,EAAeG,EAAQt9J,EAAQA,EAAQs9J,EACnCr9J,GAAOA,EAAMk9J,EAAc,CAC3B,GAAMI,GAAat9J,CACnBo9J,GAAmBt7M,SAASw7M,EAAY,IAAMx7M,SAASo7M,EAAc,IAAO,EAEhFC,EAAgBD,EAEpB,GAAMK,GAAa1uO,IAAWqvE,YAAYi/J,IAAkB,GAAI7zL,MAC1Dk0L,EAAed,IAA2B7oH,IAAaC,QAAQzsH,SAAhD,EAChB40O,EAAA,GADgB,KAEPsB,EAFO,eAGGnB,EAHH,gBAIIgB,EAJJ,aAKCjB,EALD,OAMLvoO,EANK,SAOH2B,EAPG,cAQEsuC,EARF,YASA84L,IAEjB,KACAc,EAAqB,IACrBf,KAA2B7oH,IAAaC,QAAQxsH,SAEhDm2O,IACKxB,EAAA,GADL,KAEcsB,EAFd,eAGwBnB,EAHxB,gBAIyB,EAJzB,cAKuB,GALvB,aAMsBD,EANtB,yBAQgBvoO,EARhB,SASkB2B,EATlB,cAUuBsuC,EAVvB,YAWqB84L,IAKzB,IAAMe,GAAgBd,GAAgBE,GAAkBW,CAExD,2BACmB,4BADnB,EAES5pH,EAAA,GAFT,SAGsB6oH,EAHtB,YAIyBL,EAJzB,aAAA1qN,EAAA,EAMiBkiG,IAAaC,QAAQ1sH,KAAOy8C,EAActuC,EAAS,mBANpEoc,EAAA,EAOiBkiG,IAAaC,QAAQzsH,SAAWw8C,EAActuC,EAAS,uBAPxEoc,EAAA,EAQiBkiG,IAAaC,QAAQxsH,OAASu8C,EAActuC,EAAS,qBARtE,wBAYwBmoO,EAAgB,UAAY,WACvCd,EAAeA,EAACb,EAAA,GAAhB,iBACqBgB,EADrB,QAEYH,EAFZ,SAGaN,IACT,KACJQ,EAAiBA,EAACf,EAAA,GAAlB,iBACqBiB,EADrB,QAEYF,EAFZ,SAGaP,IACT,MAtBjB,mBAwBuB,0BACVkB,GAzBb,mBA2BuB,0BACVD,IAsBjBtB,GAAYr7I,cACRye,cACA/5C,YACAi3K,kBAAiBA,EACjBC,oBAAmBA,EAGRP,S9ckqhEX3pO,EAAclY,EAAoB,GAGlCupG,EAAgBvpG,EAAoB,IAGpC4X,EAAkB5X,EAAoB,IAItCmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,I6c5yhEjPsG,EAAqB,SAAC/B,EAAU6B,GAAX,OACvBw7N,qBADgD,SAC3B3lH,GACjBklH,EAAY58N,EAAU6B,GAClBizG,WAAY4C,EAAO73H,MAAQ63H,EAAO73H,gBAG1C6+O,2BANgD,SAMrBhnH,GACvB,GAAM3C,GAAY,GAAI1qE,MAChB+qB,EAAO2/C,EAAUogB,SACvBpgB,GAAU4pH,QAAQvpK,EAAOsiD,EAAO73H,MAChC,IAAMm1H,GAAU,GAAI3qE,KAEpBuyL,GAAY58N,EAAU6B,GAClBkzG,UAAWjU,YAAiBiU,GAC5BC,QAASlU,YAAiBkU,MAGlCsoH,sBAjBgD,SAiB1B5lH,GAClBklH,EAAY58N,EAAU6B,GAClBurC,QAASsqE,EAAO73H,iBAGxBs9O,qBAtBgD,SAsB3B/nK,GACjBwnK,EAAY58N,EAAU6B,GAClBkzG,UAAWjU,YAAiB1rC,MAGpCgoK,qBA3BgD,SA2B3B31L,GACjBznC,EAASy0G,YAAgBhtE,GADA,OAGuB5lC,EAAxCpM,SAAYC,KAHK,sBAGIq9C,GAHJ,EAGIA,MACvBirL,EAAgBjrL,GAAS,SAAShzB,KAAKgzB,GACzCgiE,QAEJ,IAAe,aAAXttE,GAAyBu2L,EAAe,CACxC,GAAMl9J,GAAQ/tB,EAAMl7C,MAAM,KAAK,GACzBumO,EAAQxuO,IAAWivE,UAAU,GAAIx0B,MACvC0qE,GAAYj0C,EAAQs9J,EAAQt9J,EAAQs9J,EAGxCxB,EAAY58N,EAAU6B,GAClBhkB,KAAM4pD,EACNstE,YACAC,oBAKN5yG,EAAkB,SAACxD,GAAU,MACO5L,YAAgB4L,GAA9CpI,EADuB,EACvBA,0BADuB,EAELA,MAFK,IAEvBE,oBAFuB,EAEZ,GAFY,EAGzBwmO,EAA4B,uBAAbxmO,CACrB,QACI/B,OAAQR,YAAeyK,GACvB0f,MAAOm3B,YAAwB72C,GAC/Bs+N,iBAIF0B,EAAuBj2I,YACzBvmF,EACAL,GACFo8C,YAAW8+K,GAEb2B,GAAqBh9I,cACjBi7I,YAAaxnH,KAGjBupH,EAAqB9jO,WACjB+hO,YAAap+K,YAAUt5C,MAGZy5N,O7co1hET,SAAUpjP,EAAQiE,EAAqBrE,GAE7C,YASA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAZ5c,GAAIqlD,GAAsCvjE,EAAoB,GAE1DojK,GAD8CpjK,EAAoB4D,EAAE2/D,GACzBvjE,EAAoB,KAC/DqjK,EAAmDrjK,EAAoB4D,EAAEw/J,GAC9F/8D,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M+ct7hE1hB++K,E,YACF,WAAY9iO,GAAO,yEACTA,GADS,OAEf,GAAKw9G,YAAc,EAAKA,YAAYv4G,KAAjB,GACnB,EAAK4/N,aAAe,EAAKA,aAAa5/N,KAAlB,GACpB,EAAKL,OAAU2pF,SAAU,EAAKu2I,uBAJf,E/cyjiEnB,MAxHA7gL,GAAU6+K,EAAQ/iO,GAoBlBilD,EAAa89K,IACTl9O,IAAK,4BACLC,MAAO,S+c38hEeid,GAClBA,EAAUiiO,mBAAqB5kO,KAAKH,MAAM+kO,kBAC1C5kO,KAAKmG,UAAWioF,SAAUzrF,EAAUiiO,sB/c+8hExCn/O,IAAK,sBACLC,MAAO,W+c58hEW,GACVk/O,GAAqB5kO,KAAKH,MAA1B+kO,gBACR,OAAOA,IAAoB,EAAIA,EAAmB,K/cg9hElDn/O,IAAK,cACLC,MAAO,S+c98hECgsB,EAAO6rG,EAAQryF,GACvBlrB,KAAKmG,UAAWioF,SAAU18E,IAC1B1R,KAAKH,MAAMilK,SAASvnD,GACpBryF,EAAMkvD,iBACNlvD,EAAMmvD,qB/ci9hEN50F,IAAK,eACLC,MAAO,S+c/8hEEwlC,GACT,GAAIxZ,GAAQ,KACamzN,EAAiB35M,EAAlC5pB,OAAU5b,MACZw8M,EAAgB2iC,GAAcA,EAAW5mN,WAH/B,EAIcje,KAAKH,MAA3B9D,EAJQ,EAIRA,QAAS+oK,EAJD,EAICA,QAGjB,IAAc,QAFdpzJ,EAAQ3V,EAAQiW,IAAI,eAAGtsB,GAAH,EAAGA,MAAOoN,EAAV,EAAUA,KAAV,OAAuBpN,IAASoN,IAAQ4I,QAAQwmM,IAEhD,CAQhB,GAAM3kF,GAAS7rG,EAAQ,EAAI3V,EAAQ2V,GAAS3V,EAAQ,EACpDiE,MAAKmG,UAAWioF,SAAU18E,IAC1BozJ,EAASvnD,O/c29hEb93H,IAAK,SACLC,MAAO,W+cx9hEF,aACyCsa,KAAKH,MAD9C,IACG9D,mBADH,OACiB+oO,EADjB,EACiBA,cAAexgP,EADhC,EACgCA,KAC7B8pG,EAAapuF,KAAKyE,MAAlB2pF,SACF22I,EAAgBlgF,IAAW,gBAAiBigF,GAC5CE,EAAiB52I,EAAW,EAAIryF,EAAQqyF,GAAYryF,EAAQ,EAElE,4BACoB,qCADpB,mBAEuB,6CAFvB,gBAEkF,0BAFlF,iBAGyB,SAHzB,UAG4C,4CAAqCipO,EAAelyO,OAHhG,kBAI2BiyO,EAJ3B,KAI+C,eAC9BhpO,EAAQiW,IAAI,SAACurG,EAAQ7rG,GAAT,2BACU6rG,EAAOzqH,MADjB,IAC0ByqH,EAAOjhH,GADjC,eAEO,SAAC4uB,GAAY,EAAKmyF,YAAY3rG,EAAO6rG,EAAQryF,YAAYqyF,EAAOzqH,YAPpG,mBAYuB,0DAZvB,oBAa4B,iBAb5B,qBAc8BkN,KAAK0kO,aAdnC,MAcwDM,EAAet/O,MAdvE,KAcoFpB,UACnEyX,EAAQiW,IAAI,SAACizN,GAAD,yBAEEA,EAAIv/O,OAASu/O,EAAInyO,OAFnB,gBAGgBmyO,EAAInyO,MAHpB,IAG6BmyO,EAAI3oO,GAErC2oO,EAAInyO,gB/c4+hE1B6vO,G+c1jiEUjiO,YAgGrBiiO,GAAOl7I,cACHq9E,SAAU,aACVggE,cAAe,MACfF,iBAAkB,GAGPjC,O/ci+hET,SAAUthP,EAAQiE,EAAqBrE,GAE7C,Ygd5kiEe,SAASikP,GAAgBC,GACpC,MAAsB,WAAfA,GAA0C,cAAfA,EADtC,OhdoliEM,SAAU9jP,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAA+B,GAAIq/D,GAAsCvjE,EAAoB,GACzGwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEm8D,EAA4C1/H,EAAoB,GAChE2jE,EAA2C3jE,EAAoB,IAC/DmkP,EAA+CnkP,EAAoB,KACnEokP,EAAuDpkP,EAAoB4D,EAAEugP,GAC7EE,EAA8CrkP,EAAoB,KAClEskP,EAAsDtkP,EAAoB4D,EAAEygP,GAC5EE,EAA2CvkP,EAAoB,GAC/DwkP,EAA6DxkP,EAAoB,KACjF0tJ,EAAuD1tJ,EAAoB,IAC3Eo+O,EAA4Cp+O,EAAoB,IAChEyhE,EAAuDzhE,EAAoB,GAC3EykP,EAAoEzkP,EAAoB,IACxF0kP,EAA8D1kP,EAAoB,KAClF2kP,EAAgE3kP,EAAoB,KACpF4kP,EAA+C5kP,EAAoB,IACnE6kP,EAAkD7kP,EAAoB,KAC3FmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPgmF,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Uid5liEn4Bk+I,EAAuB,SAACC,GAAD,MACzB,UAACr/N,EAAMC,GACH,GAAMq/N,GAAQt/N,EAAKriB,KAAKi/F,OAAOltE,cACzB6vN,EAAQt/N,EAAKtiB,KAAKi/F,OAAOltE,aAE/B,OAAI4vN,KAAUD,EACH,EAEPE,IAAUF,GACF,EAERC,EAAQC,EACD,EACAD,EAAQC,GACP,EAEL,IAITC,EAAmB,SAAChqO,EAAUiqO,GAAX,MACrB,YAAiC,GAAhCC,GAAgC,uDAAlB,GAAI3iP,EAAc,uDAAP,GAClB+B,EAAMA,YAAY4gP,EAAYhwN,aACrB,sBAAT3yB,IACA+B,GAAA,oBAGJ,IAAM6gP,GAAwBF,EAAgBjqO,EAAS1W,KAAS,EAEhE,OAA8B,KAA1B6gP,EACOD,EAGJC,IAITC,EAAoB,SAACtrK,EAAMxwB,EAAetuC,EAAUD,GACtD,GAAa,OAATA,EACA,MAAO++D,EAEX,KACI,GAAMrnE,GAAMqnE,EAAKv9D,MAAM,KACnB8oO,EAAU5yO,EAAI,GAAGmZ,QAAQ,IAAK,GAClCy5N,GAAU/7L,EAActuC,EAASA,yBAAyBqqO,GAC1D,IAAMv1H,GAAQxmE,EAActuC,EAASA,2BAA2BvI,EAAI,IACpE,OAAU4yO,GAAV,IAAqB5yO,EAAI,GAAzB,IAA+BA,EAAI,GAAnC,IAAyCq9G,EAC3C,MAAO/rH,GAEL,MADAC,GAAQC,MAAMF,EAAIiX,UACX8+D,IAITwrK,EAA4B,SAAC,GAe7B,GAdF5/H,GAcE,EAdFA,SACA5vF,EAaE,EAbFA,uBACAovN,EAYE,EAZFA,YACAK,EAWE,EAXFA,eACA9uN,EAUE,EAVFA,SACA+uN,EASE,EATFA,mBACAC,EAQE,EARFA,UACQn8L,EAON,EAPFyB,KAAQzB,cACRtuC,EAME,EANFA,SACA65N,EAKE,EALFA,eACA6Q,EAIE,EAJFA,mBACAhjJ,EAGE,EAHFA,WAGE,IAFF3nF,gBAEE,EAFK,KAEL,EADFqnO,EACE,EADFA,WAEA,IAAwB,IAApB18H,EAAS7kH,OAAc,CAEvB,GAAM8kP,GAAeX,EAAiBhqO,EAAUsuC,GAC1C67L,EAAwBQ,EAAaT,EAAa,oBAClDU,GACFtsH,IAAaC,QAAQ1sH,KACrBysH,IAAaC,QAAQzsH,SACrBwsH,IAAaC,QAAQxsH,QACvB2nB,OAAO,SAACmxN,GAAD,MAAUA,KAAQX,GAE3B,wBAEQ,kBAAC,IAAD,KACQlqO,EAAS,2BACbqX,QACIyzN,GAAGA,EAAHA,SACAZ,YAAaC,EACbY,WAAYJ,EAAaC,EAAU,IAAIv1G,oBACvC21G,WAAYL,EAAaC,EAAU,IAAIv1G,yBAO3D,GAyBMtrB,GAAa9c,IAAOyd,EAAS70F,IAAI,SAAC65E,GAAD,MAAaA,GAAQqa,WAAW,KAAK,QACzEn8C,KAAKg8K,EAAqBp3N,IAAwBzS,KAC/CkrO,EAA4BC,IAAQxgI,EAAU,SAAChb,GAAD,MAAaA,GAAQqa,WAAW,GAAG5hH,OACjFowN,EAAWxuG,EAAWl0F,IAAI,SAACupG,GAC7B,GAAM+rH,GAAmBF,EAA0B7rH,EAASj3H,KAC5D,UACK,KADL,SAEkBi3H,EAFlB,SAGkB+rH,EAHlB,SAIkB1vN,EAJlB,YAMqByuN,EANrB,uBAOgCpvN,EAPhC,aAQsBwzB,EAActuC,EAAS,wBAR7C,gBASyBsuC,EAActuC,EAAS,sBAThD,WAUoB65N,EAVpB,mBAW4B2Q,EAX5B,UAYmBC,EAZnB,WAaoB/iJ,GAbpB,kBAK+B03B,EAASj3H,OAa5C,0BAhD2B,SAACijP,EAAWC,GAAsC,GAAxBC,GAAwB,wDAOrExsK,QACJ,IAAIiqK,YAAgB3B,GAChBtoK,EAAOxlE,IAAWA,WAAW8xO,EAAW,cACrC,CACH,GAAMG,GAAcxrO,GAA+B,OAAvBA,EAAKma,aACjC4kD,GAAOxlE,IAAWA,WAAW8xO,EAAWC,GACxCvsK,EAAOsrK,EAAkBtrK,EAAMxwB,EAAetuC,EAAUD,GACpDwrO,IACAzsK,EAAOA,EAAKluD,QAAQ,KAAM,IAAIykH,qBAItC,GAAMm2G,GAA+B,WAAjBH,GAA+BI,cAAe,UAElE,YAAQH,GAAD,cAAqCE,EAArC,UAA2D,wBAAiB1sK,IA6B3DyrK,EAAgBG,EAAoBR,IAAgB5rH,IAAaC,QAAQzsH,UAFrG,kBAGcymN,IAKlB+xB,GAA0Bh/I,cACtB4+I,YAAa5rH,IAAaC,QAAQ1sH,KAClCipB,0BACAyvN,eAAgB//H,YAAiB,GAAIz2D,OAoBzC,IAAMjoC,GAAkB,SAACxD,GAAD,OACpBwS,uBAAwBD,YAA+BvS,GACvDuxN,eAAgBz7N,YAAmBkK,GACnCoiO,mBAAoBpsO,YAAmCgK,GACvDmiO,UAAWiB,YAAkBpjO,GAC7BvI,KAAMD,YAAawI,GAAOvI,MAGfsyF,iBAAQvmF,GAAiB+7C,YAAWyiL,Mjd8liEtBjlP,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,GkdtyiEjC,GAAIo+J,GAAkB,EAAQ,KAC1ByoF,EAAmB,EAAQ,KAG3Bv6F,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,eAyB7BglP,EAAUS,EAAiB,SAASr9N,EAAQ/kB,EAAOD,GACjDpD,EAAeb,KAAKipB,EAAQhlB,GAC9BglB,EAAOhlB,GAAKvD,KAAKwD,GAEjB25J,EAAgB50I,EAAQhlB,GAAMC,KAIlCrE,GAAOD,QAAUimP,Gld6yiEX,SAAUhmP,EAAQiE,EAAqBrE,GAE7C,Ymdv1iEA,4BAGeqY,8BACXT,IACA,kBAAyE,SAAzE,EAAGwD,0BAA6Bd,MAASmsL,Yndg2iEvC,SAAUrmM,EAAQD,EAASH,Godr2iEjCI,EAAOD,QAAU,EAAQ,Mpd62iEnB,SAAUC,EAAQD;;;;;;;;;;;Aqdj2iExB,QAAS2mP,GAAUjnO,EAASknO,GAC1B,GAAIvrI,GAAW37F,EAAQ27F,SAASpmF,aAChC,QAAQ,sCAAsCuP,KAAK62E,IAChD37F,EAAQmjH,SACT,MAAQxnB,EACN37F,EAAQ/C,MAAQiqO,EAChBA,IAAqBC,EAAQnnO,GAGnC,QAASonO,GAAOznL,GACd,MAAQA,GAAG2zG,aAAe,GAAK3zG,EAAG4zG,cAAgB,GAC3B,SAArB5zG,EAAG4a,MAAMqhB,QAGb,QAASurJ,GAAQnnO,GACf,KAAOA,GACDA,IAAYvd,SAAS08D,MADX,CAEd,GAAIioL,EAAOpnO,GAAU,OAAM,CAC3BA,GAAUA,EAAQ+lD,WAEpB,OAAM,EAGR,QAASshL,GAASrnO,GAChB,GAAIsnO,GAAWtnO,EAAQskD,aAAa,WACnB,QAAbgjL,IAAmBA,SACvB,IAAIC,GAAgB9+G,MAAM6+G,EAC1B,QAAQC,GAAiBD,GAAY,IAAML,EAAUjnO,GAAUunO,GAGjE,QAASC,GAAwBxnO,GAC/B,SAAUjN,MAAMrS,KAAKsf,EAAQy+D,iBAAiB,KAAM,GAAG1pD,OAAO,SAAS4qC,GACrE,MAAO0nL,GAAS1nL,KAIpBp/D,EAAOD,QAAUknP,Grdq3iEX,SAAUjnP,EAAQD,EAASH,Gsd94iEjC,QAASsnP,GAAWxjP,EAAQwc,EAAQgqN,GAKlC,IAJA,GAAI75M,IAAS,EACT7R,EAAQ7U,EAAKuW,GACbvf,EAAS6d,EAAM7d,SAEV0vB,EAAQ1vB,GAAQ,CACvB,GAAIyD,GAAMoa,EAAM6R,GACZhsB,EAAQX,EAAOU,GACfglB,EAAS8gN,EAAW7lO,EAAO6b,EAAO9b,GAAMA,EAAKV,EAAQwc,IAEpDkJ,IAAWA,EAAUA,IAAW/kB,EAAUA,IAAUA,cACpDA,GAAyBD,IAAOV,MACnCA,EAAOU,GAAOglB,GAGlB,MAAO1lB,GA9BT,GAAIyjP,GAAa,EAAQ,KACrBC,EAAiB,EAAQ,KACzBz9O,EAAO,EAAQ,KA+DfqW,EAASonO,EAAe,SAAS1jP,EAAQwc,EAAQgqN,GACnD,MAAOA,GACHgd,EAAWxjP,EAAQwc,EAAQgqN,GAC3Bid,EAAWzjP,EAAQwc,IAGzBlgB,GAAOD,QAAUigB,Gtd46iEX,SAAUhgB,EAAQD,EAASH,Gud77iEjC,QAAS65F,GAAYp1F,GACnB,MAAgB,OAATA,GAAiBq1F,EAAS2tJ,EAAUhjP,IAW7C,QAAS45J,GAAQ55J,EAAO1D,GAGtB,MAFA0D,GAAyB,gBAATA,IAAqB85J,EAAS55H,KAAKlgC,IAAWA,GAAS,EACvE1D,EAAmB,MAAVA,EAAiBu9J,EAAmBv9J,EACtC0D,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQ1D,EAYjD,QAAS+4F,GAASr1F,GAChB,MAAuB,gBAATA,IAAqBA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS65J,EAW9E,QAASopF,GAAS5jP,GAWhB,IAVA,GAAI8a,GAAQw4N,EAAOtzO,GACf6jP,EAAc/oO,EAAM7d,OACpBA,EAAS4mP,GAAe7jP,EAAO/C,OAE/B6mP,IAAiB7mP,GAAU+4F,EAAS/4F,KACrC+uB,EAAQhsB,IAAWyoJ,EAAYzoJ,IAE9B2sB,GAAS,EACTjH,OAEKiH,EAAQk3N,GAAa,CAC5B,GAAInjP,GAAMoa,EAAM6R,IACXm3N,GAAgBvpF,EAAQ75J,EAAKzD,IAAYK,EAAeb,KAAKuD,EAAQU,KACxEglB,EAAOvoB,KAAKuD,GAGhB,MAAOglB,GAuBT,QAASqX,GAASp8B,GAGhB,GAAIhC,SAAcgC,EAClB,SAASA,IAAkB,UAARhC,GAA4B,YAARA,GA6DzC,QAAS20O,GAAOtzO,GACd,GAAc,MAAVA,EACF,QAEG+8B,GAAS/8B,KACZA,EAAS5C,OAAO4C,GAElB,IAAI/C,GAAS+C,EAAO/C,MACpBA,GAAUA,GAAU+4F,EAAS/4F,KAC1B+uB,EAAQhsB,IAAWyoJ,EAAYzoJ,KAAY/C,GAAW,CAQzD,KANA,GAAI09J,GAAO36J,EAAOsa,YACdqS,GAAS,EACTo3N,EAAyB,kBAARppF,IAAsBA,EAAKt9J,YAAc2C,EAC1D0lB,EAASzW,MAAMhS,GACf0qO,EAAc1qO,EAAS,IAElB0vB,EAAQ1vB,GACfyoB,EAAOiH,GAAUA,EAAQ,EAE3B,KAAK,GAAIjsB,KAAOV,GACR2nO,GAAeptE,EAAQ75J,EAAKzD,IACrB,eAAPyD,IAAyBqjP,IAAYzmP,EAAeb,KAAKuD,EAAQU,KACrEglB,EAAOvoB,KAAKuD,EAGhB,OAAOglB,GAhOT,GAAIwnF,GAAY,EAAQ,KACpBu7C,EAAc,EAAQ,KACtBz8H,EAAU,EAAQ,KAGlByuI,EAAW,QAGXjS,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,eAG7Bk1L,EAAatlF,EAAU9vG,OAAQ,QAM/Bo9J,EAAmB,iBAyBnBmpF,EAhBJ,SAAsBjjP,GACpB,MAAO,UAASV,GACd,MAAiB,OAAVA,SAA6BA,EAAOU,WAwI3CuF,EAAQusL,EAAwB,SAASxyL,GAC3C,GAAI26J,GAAiB,MAAV36J,SAA6BA,EAAOsa,WAC/C,OAAoB,kBAARqgJ,IAAsBA,EAAKt9J,YAAc2C,GAC/B,kBAAVA,IAAwB+1F,EAAY/1F,GACvC4jP,EAAS5jP,GAEX+8B,EAAS/8B,GAAUwyL,EAAWxyL,OANd4jP,CA4DzBtnP,GAAOD,QAAU4J,GvdkgjEX,SAAU3J,EAAQiE,EAAqBrE,GAE7C,YAoNA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,Gwd56jEje,QAAS4pO,GAAkB1/K,GAA2B,GAAhB7uD,GAAgB,wDAC5CwuO,EAAmB3/K,EAAUxzC,OAAO,SAACjC,GAAD,MAAiC,KAAlBA,EAASuqC,MAElE,YAAQ3jD,EAAmBwuO,EAAiBj/K,KAAKk/K,KAAuBD,ExdotjE5E,GAAIp+N,GAAQ3pB,EAAoB,GAI5BwqB,EAAKxqB,EAAoB,GAGzB+iE,EAAa/iE,EAAoB,IAGjCqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Uyd1vjEn4BqhJ,EAAe,SAAC,GAAD,GAAGC,GAAH,EAAGA,YAAazE,EAAhB,EAAgBA,aAAc0E,EAA9B,EAA8BA,gBAA9B,+BACE,4FADF,gBAGJ,iBAHI,KAIJ,OAJI,aAKI,MALJ,YAMID,EANJ,SAOCzE,EAPD,QAQA0E,MAWNF,Izd6vjEXG,EAAgB,WAAc,GAAI9hJ,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U0dhxjE54BloF,EAAW,SAAC,GAAiC,GAA/BiU,GAA+B,EAA/BA,SAAUihL,EAAqB,EAArBA,eAClBv4L,EAAsBsX,EAAtBtX,GAAIhY,EAAkBsvB,EAAlBtvB,KAAMylH,EAAYn2F,EAAZm2F,QACdze,SACAvtF,EAAOgsG,CAKX,OAJI8qF,KACAvpG,EAAe,SAACpgE,GAAoC,MAAxBA,GAAMkvD,iBAAyBy6G,EAAejhL,IAC1E7V,EAAO,MAEX,UACazB,EADb,YAGkByB,EAHlB,QAIqButF,UAERhnG,KAWFqb,I1dkxjEX2pO,EAAoB,WAAc,GAAI/hJ,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U2d1yjEh5B0hJ,GACFC,OAAQ,UACRtpC,SAAU,QAGRupC,EAAe,SAAC,GAAkD,GAAhD5zN,GAAgD,EAAhDA,OAAQwzC,EAAwC,EAAxCA,UAAWwrI,EAA6B,EAA7BA,eAAgBzkJ,EAAa,EAAbA,OACjDs5L,EAAat5L,IAAWv6B,EAAX,kBACD,qCADC,aAED0zN,UAAcn5L,IAE5B,IACJ,0BACkB,oCACTs5L,EACArgL,EACIxzC,OAAO,SAACjC,GAAD,MAAeA,GAAStvB,KAAK+xB,cAAc3a,QAAQma,EAAOQ,gBAAkB,IACnFrE,IAAI,SAAC4B,GAAD,SACA,GADA,SAGaA,EAHb,eAImBihL,GAFXjhL,EAAStX,OAiBtCmtO,GAAahiJ,cACTp+B,aAGWogL,S3d0yjEXE,EAAqB,WAAc,GAAIpiJ,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U4dl1jEj5B+hJ,GACF/I,SAAU,MACVgJ,UAAW,MACX9nF,SAAU,WACVmM,IAAK,MACLE,KAAM,MACN+L,UAAW,yBAGT2vE,GACF7gK,OAAQ,OACRyT,QAAS,SAGPqtJ,EAAgB,SAAC,GAAyC,GAAvCvvO,GAAuC,EAAvCA,OAAQoZ,EAA+B,EAA/BA,SAAUihL,EAAqB,EAArBA,eAAqB,EACajhL,EAAjEC,OAAUihC,OAAU/2C,KAAMisO,WAD0B,EACP,GADO,EACCjgI,EAAYn2F,EAAZm2F,QACzDze,SACAvtF,EAAOgsG,EACPkgI,SACArI,QAWJ,OAVI/sC,KACAvpG,EAAe,SAACpgE,GAAoC,MAAxBA,GAAMkvD,iBAAyBy6G,EAAejhL,IAC1E7V,EAAO,MAGPvD,IACAyvO,EAAcH,EACdlI,EAAWgI,GAGf,gBACiBt+I,UADjB,aAEkB2+I,EAFlB,KAEqClsO,UAFrC,eAEuD6jO,EAFvD,IAEsEoI,EAFtE,IAE6Fp2N,EAAStvB,UAW3FylP,I5d+1jEXG,EAAyB,WAAc,GAAI3iJ,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U6dz4jEr5BsiJ,EAAoB,SAAC,GAAD,GAAG3vO,GAAH,EAAGA,OAAQ6uD,EAAX,EAAWA,UAAWwrI,EAAtB,EAAsBA,cAAtB,0BACR,gDACTxrI,EAAUr3C,IAAI,SAAC4B,GAAD,SACV,GADU,OAGCpZ,EAHD,SAIGoZ,EAJH,eAKSihL,GALT,gBAEcjhL,EAAStvB,UAe/B6lP,I7d44jEXC,EAAmB,WAAc,GAAI7iJ,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U8dh6jE/4BwiJ,EAAc,SAAC,GAAD,GAAGvuI,GAAH,EAAGA,KAAH,IAAS55B,IAAT,+BACG,6BADH,iBAEC,2BAFD,OAEmC,SAFnC,IAEgD,sBAFhD,gBAAgB,mCAAhB,6BAGD45B,MAUJuuI,I9du6jEXxY,EAAa5wO,EAAoB,KAGjCwvE,EAAmBxvE,EAAoB,IAGvCkY,EAAclY,EAAoB,GAGlCqpP,EAAsB,WAAc,GAAI/iJ,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEp5BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Mwdh6jE1hB2mL,E,YACF,WAAY1qO,GAAO,yEACTA,GADS,OAEf,GAAK4E,OAAU+lO,aAAc,GAAIC,aAAYA,GAC7C,EAAKC,oBAAsB,EAAKA,oBAAoB5lO,KAAzB,GAC3B,EAAK6lO,mBAAqB,EAAKA,mBAAmB7lO,KAAxB,GAJX,ExdkjkEnB,MA1GAg/C,GAAUymL,EAAgB3qO,GAa1BilD,EAAa0lL,IACT9kP,IAAK,sBACLC,MAAO,Swdh9jESwlC,GAChB,GAAMs/M,GAAet/M,EAAM5pB,OAAO5b,MAC1BoV,EAAckF,KAAKH,MAAnB/E,UAEF2vO,GAAgB3vO,GAA+B,KAAjB0vO,CACpCxqO,MAAKmG,UAAWqkO,eAAcC,mBxdo9jE9BhlP,IAAK,qBACLC,MAAO,Wwdj9jEHsa,KAAKH,MAAM/E,WACXkF,KAAKmG,UAAWskO,aAAYA,EAAQD,aAAc,axds9jEtD/kP,IAAK,SACLC,MAAO,Wwdn9jEF,MAaDsa,KAAKH,MAZD1D,EADH,EACGA,SACJyuO,EAFC,EAEDA,OACAC,EAHC,EAGDA,UACQpgM,EAJP,EAIDyB,KAAQzB,cACR4e,EALC,EAKDA,UACAwrI,EANC,EAMDA,eACAi2C,EAPC,EAODA,gBACAC,EARC,EAQDA,qBACAjwO,EATC,EASDA,UACAN,EAVC,EAUDA,OACAwwO,EAXC,EAWDA,cACAC,EAZC,EAYDA,cAIEpgM,EAAcJ,EAActuC,EAAS,gCACvC+uO,OAAOA,SAAUzgM,EAActuC,EAAS,uCAAxC,UACAgvO,IAAIA,4BAA6BP,EAAjC,mDACMngM,EAActuC,EAAS,8BAD7B,OAEAivO,KAAKA,4BAA6B3gM,EAActuC,EAAS,8BAAzD,mDACMsuC,EAActuC,EAAS,+BAD7B,SAGEkvO,EAAiBtC,EAAkB1/K,EAAW7uD,GAC9C8wO,EAAaP,GAAwBM,EAAerpP,OAAS,EAAjD,oBAETwnD,GAFS,OAEiBhvC,EAFjB,UAEoC6wO,EAFpC,eAEoEx2C,KAElF,KAEA02C,SACAC,SACAC,SACAC,SACA1wK,SACEwvK,EAAeA,EAChB,GADC,aAEgBxqO,KAAK0qO,oBAFrB,iBAGoB1qO,KAAK2qO,mBAHzB,YAIelgM,EAActuC,EAAS,+BAIxCrB,IACAywO,EAAYf,EACZxvK,EAAWvwB,EAActuC,EAAS,+BAElCsvO,UAAA,UACkB,+BADlB,mBAEehhM,EAActuC,EAAS,4BAGtCqvO,EAAahB,EAGjB,IAAMmB,GAAcb,IAEX,GAFW,KAGFrgM,EAActuC,EAAS,gCAHrB,KAIF0uO,IAEV,IAeR,OAbI7qO,MAAKyE,MAAMgmO,cACXiB,2BAAA,UAGsB,sBAHtB,yBAIuCtqK,OAAQv2B,KAEtCygM,EACAK,IAKb,kBAESF,EAFT,eAGoBT,EAHpB,UAG8CC,UACjCM,EACAG,EACAF,EANb,EAOa,GAPb,OAQwBxrO,KAAKyE,MAAM+lO,aARnC,OASwBxvK,EATxB,UAU2B3R,EAV3B,eAWgCwrI,Uxds8jE7B01C,GwdnjkEkB7pO,YAoI7B6pO,GAAe9iJ,cACXp+B,aACAmE,oBAAmBA,EACnB1yD,WAAUA,EACVN,QAAOA,EACPuwO,sBAAqBA,EAGzB,IAAM9iO,GAAkB,SAACxD,GAAD,OACpB4kD,UAAWO,YAAkBnlD,GAC7B3J,UAAWJ,YAAkB+J,GAC7BjK,OAAQR,YAAeyK,GACvBqmO,gBAAiB3tO,YAAwBsH,GACzComO,UAAWvsO,YAAkBmG,GAC7BmmO,OAAQ1wO,YAAeuK,IAGX+pF,iBAAQvmF,GAAiB+7C,YAAWumL,Kxdw7jE9C,SAAUlpP,EAAQD,G+dxmkExB,QAASwtC,GAAKk8L,EAAY9wM,GACtB,GAAI14B,GAAS,EACTU,EAAS8oO,EAAW9oO,MAGxB,KAAIV,EAAGA,EAAIU,QACAg4B,EAAG8wM,EAAWxpO,GAAIA,GADVA,MAcvB,QAASyvB,GAAQzP,GACb,MAAmD,mBAA5Cnf,OAAOC,UAAU67B,SAASvrB,MAAM4O,GAS3C,QAAS05E,GAAW15E,GAChB,MAAyB,kBAAXA,GAGlBjgB,EAAOD,SACH45F,WAAaA,EACbjqE,QAAUA,EACV6d,KAAOA,I/dsnkEL,SAAUvtC,EAAQiE,EAAqBrE,GAE7C,YAQA,SAASwuD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIg9C,GAA+ChlC,EAAE,SAAUxnB,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO6a,GAA+ChlC,EAAExnB,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAA/K/B,GAAQuC,GAAqL,MAAOkqD,GAAK,WgehqkEpgB,QAASg8L,GAAYnmP,GACxB,MAAO,kBAAM,IAAIvC,KAAQ,SAACC,EAASE,GAC/B,GAAMX,GAASa,SAASE,cAAc,SACtCf,GAAOqB,IAAP,gGAA6GmsD,KAAKl9C,MAAlH,QAA+HvN,EAC/H/C,EAAOkB,SACPlB,EAAOE,OAAS,WACZO,EAAQzB,OAAOmqP,SAEnBnpP,EAAOC,QAAU,SAACuC,GACd7B,EAAO6B,IAEX3B,SAAS08D,KAAK/7D,YAAYxB,MAI3B,QAASopP,KAA4B,UACxC,yBAAAvzN,EAAA,wBAAO,WAAO1S,EAAUjD,GAAjB,QAAA+H,EAAA,6FACGlG,GAAQ7B,IACR2vC,EAAUmJ,YAAwBj3C,GAClC82C,EAASK,YAAuBn3C,GAHnC,SAI2BoB,EAASsqD,aAA4C5d,UAASgJ,WAJzF,aAIGxmC,EAJH,yCAMoBlP,EAASwpD,cAN7B,QAMO58D,EANP,OAOsCi9D,EAAuBjrD,EAApDkrD,eAAkBtG,WACpBsB,EAAe+E,EAAiB75C,OAAO,qBAAG40C,eAC3Bh4D,EAAKulB,OACxB11B,UAEEujB,EAAS0oD,YAAkC5D,GAZhD,kCAeI51C,EAfJ,4CAAP,yDheyokE6BzvB,EAAuB,EAAIsmP,EAC3BtmP,EAAuB,EAAIwmP,CACvC,IAAI1yL,GAAyCn4D,EAAoB,IAC7D0uD,EAAiD1uD,EAAoB4D,EAAEu0D,GACvE2yL,EAAsE9qP,EAAoB,IAC1F+qP,EAA0E/qP,EAAoB,IAC9FgrP,EAAyEhrP,EAAoB,KAqFhH,SAAUI,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAuBrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA3BnZle,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAO4mP,IAC7H,IAAI1nL,GAAsCvjE,EAAoB,GAC1DwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpE6/F,EAA2CpjK,EAAoB,IAC/DqjK,EAAmDrjK,EAAoB4D,EAAEw/J,GACzEliG,EAAuClhE,EAAoB,GAE3DkrP,GADkDlrP,EAAoB,IACbA,EAAoB,KAC7EmrP,EAAkDnrP,EAAoB,IACtEorP,EAA4DprP,EAAoB,KAChFqrP,EAA4DrrP,EAAoB,KAChFsrP,EAA2DtrP,EAAoB,IAC/EurP,EAAgDvrP,EAAoB,IACpEwrP,EAAuExrP,EAAoB,IAC3FyrP,EAAiDzrP,EAAoB,KACrE0rP,EAAkD1rP,EAAoB,KACtE2rP,EAAwC3rP,EAAoB,KAC5D4rP,EAAiD5rP,EAAoB,IACrE6rP,EAA2D7rP,EAAoB,KACpGqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MierwkExhBhyD,EAAyCrK,IAAzCqK,KAAMC,EAAmCtK,IAAnCsK,WAAYC,EAAuBvK,IAAvBuK,mBACpBqzJ,GAAgB,IAAK,IAAK,KAAM,MAEzB+mF,GACT3c,QAAS,EACTwd,YAAa,EACbC,QAAS,GAGPC,E,YACF,WAAYptO,GAAO,yEACTA,GADS,OAEfyY,GAAK40N,gBAAkB50N,EAAK40N,gBAAgBpoO,KAArBwT,GACvBA,EAAK60N,cAAgB70N,EAAK60N,cAAcroO,KAAnBwT,GACrBA,EAAK7T,OACDsQ,iBAAgBA,EAChBq4N,UAAWvtO,EAAMutO,UACjBC,eAAgBxtO,EAAMwtO,gBAPX,EjeghlEnB,MA9OAvpL,GAAUmpL,EAAkB1mF,GAiB5B1hG,EAAaooL,IACTxnP,IAAK,oBACLC,MAAO,WiezykEPsa,KAAKstO,SAAW,GAAIC,KAAyBvtO,Sje6ykE7Cva,IAAK,4BACLC,MAAO,Sie3ykEeid,GACtB3C,KAAKstO,SAAShoO,0BAA0B3C,EADP,IAGb6qO,GAGhB7qO,EAHAioF,eACUghG,EAEVjpL,EAFAiV,SACc61N,EACd9qO,EADAinK,aAL6B,EAOmC5pK,KAAKH,MAAjEgG,EAPyB,EAOzBA,SAAU+kF,EAPe,EAOfA,eAAgBhzE,EAPD,EAOCA,QAEgB,UATjB,EAOWtc,SAAYC,MAE9ClU,IAAMmJ,+BACXi9O,GACAn3I,YAAe1+E,KAChB0+E,YAAes1F,KACmB,IAAlCA,EAAalwL,QAAQ,SAErBmK,EAASwnD,gBAERmgL,GAAsB5iJ,IACvB/kF,EAASu3C,eACTv3C,EAAS44G,eACT54G,EAASm4G,eACTn4G,EAAS4nD,kBACLztD,KAAKyE,MAAMsQ,iBAAmB/U,KAAKyE,MAAM2oO,YACzCptO,KAAKmG,UAAW4O,iBAAgBA,EAAQq4N,WAAUA,Qje6ykE1D3nP,IAAK,qBACLC,MAAO,SAA4B0a,GiezykEM,GAAfstO,GAAe,EAAxBn7L,QAAwB,EAC+BvyC,KAAKH,MAArE+qF,EADiC,EACjCA,eAAgBr4C,EADiB,EACjBA,QAAS+4C,EADQ,EACRA,aAAwBwyB,EADhB,EACM9+G,OAAU8+G,QACrDlzB,IAAkBkzB,GAAY4vH,EAAYpxO,KAAOi2C,EAAQj2C,IACzDgvF,OjemzkEJ7lG,IAAK,uBACLC,MAAO,Wie/ykEPsa,KAAKstO,SAASl+C,ajemzkEd3pM,IAAK,kBACLC,MAAO,SiejzkEKwlC,EAAOy/B,GAAc,MACO3qD,KAAKH,MAArC8tO,EADyB,EACzBA,YAAa94C,EADY,EACZA,cAErB,IAAI84C,IAAgB97O,EAQpB,GAJAq5B,EAAMkvD,iBAENp6E,KAAK2qD,aAAeA,EAEhBgjL,IAAgB/7O,EAChBijM,EAAelqI,OACZ,IAAIgjL,IAAgB77O,EAAoB,CAC3C,GAAM87O,GAAclsP,OAAO6rG,KAAKriE,EAAM6uD,cAAch8E,KAAM,sBAC1D,KAAK6vO,EAED,WADAzoP,GAAQyN,KAAK,2BAGjBoN,MAAK4tO,YAAcA,MjewzkEvBnoP,IAAK,gBACLC,MAAO,WiepzkEPsa,KAAK6tO,mBjewzkELpoP,IAAK,gBACLC,MAAO,WierzkEPsa,KAAKmG,UACD4O,iBAAgBA,EAChBq4N,WAAUA,EACVC,gBAAeA,Oje0zkEnB5nP,IAAK,eACLC,MAAO,WietzkEPsa,KAAK4tO,YAAc,Qje0zkEnBnoP,IAAK,qBACLC,MAAO,WievzkEPsa,KAAKH,MAAMg1L,eAAe70L,KAAK2qD,iBje2zkE/BllE,IAAK,aACLC,MAAO,SiezzkEA4X,GAAM,GACLwwO,GAAiB9tO,KAAKH,MAAtBiuO,YACJA,IACAA,EAAaxwO,Mje8zkEjB7X,IAAK,gBACLC,MAAO,Wie1zkEPsa,KAAKstO,SAAStlJ,Yje+zkEdviG,IAAK,SACLC,MAAO,Wie7zkEF,aACkDsa,KAAKyE,MAApDsQ,EADH,EACGA,gBAAiBq4N,EADpB,EACoBA,UAAWC,EAD/B,EAC+BA,eAD/B,EAmBDrtO,KAAKH,MAnBJ,IAGD8vD,eAAkBtG,EAHjB,EAGiBA,UAAWqzB,EAH5B,EAG4BA,QAH5B,IAIDnqC,QAAWjuD,EAJV,EAIUA,KAAMgpD,EAJhB,EAIgBA,OAAQF,EAJxB,EAIwBA,UACzBygB,EALC,EAKDA,cACAlgB,EANC,EAMDA,SACAryC,EAPC,EAODA,SACUwiH,EART,EAQD9+G,OAAU8+G,SACVlzB,EATC,EASDA,eACAmjJ,EAVC,EAUDA,WACAnkE,EAXC,EAWDA,aACAkrB,EAZC,EAYDA,gBACAxpG,EAbC,EAaDA,aACAy+F,EAdC,EAcDA,eACAC,EAfC,EAeDA,eACA+C,EAhBC,EAgBDA,gBACAC,EAjBC,EAiBDA,gBACA6H,EAlBC,EAkBDA,eAEErnI,EAAqBkvB,GAAW0wJ,CACtC,IAAIW,IAAe7B,EAAiB3c,QAChC,MAAO,KAGX,IAAM7pE,GAAoBr3G,IAAW,cAAe,sBAChD,oBAAsBf,IAAWvmD,IAAciH,OAE7CggP,IAGDpjJ,IAAmBkzB,IAAYvzE,YAAQsjB,IACxCmgL,EAAe9rP,KAAf,EACK,KADL,UAEkB,WAFlB,MAGesrE,GAAuBu0F,SAAU,WAAY+X,QAAS,OAHrE,IAIa1sH,EAJb,aAKsB+3G,EALtB,MAMc,QANd,IAOa7gK,EAPb,SAQkB,KAItB,IAAIm8D,SAEAA,GADAmpH,EACAnpH,SAAA,MAAiBk7G,IAAOvoK,gBAAUw2K,GAC3Bp8G,EACP/M,EACK,KADL,UAEmB4I,EAFnB,SAGkB1b,EAHlB,gBAIyB54B,EAJzB,gBAKyB/U,KAAKktO,gBAL9B,cAMuBltO,KAAKmtO,cAN5B,eAOwBt4C,EAPxB,UAQmBu4C,EARnB,eASwBC,IAIxB5sL,SAAA,UAAqBilG,IAEzBsoF,EAAe9rP,KAAKu+D,EAEpB,IAAMwtL,GAAarjJ,IAAmBg/E,EAChCskE,GAA2BtkE,IAAiBp8G,IAAuBswD,EAEnEqwH,EAAaA,EAAbA,OAAA,MACUxyE,IAAOyyE,wBACdJ,EACAC,GACG,kBAAC,KACGroO,IAAK,SAAA5G,GAAY,EAAKqvO,gBAAkBrvO,GACxCigH,gBAAiB33H,IAAgByC,KACjC4jD,SAAUA,EACVryC,SAAUA,EACV+E,OAAQy9G,EACRmjH,aAAcnsC,EACd/K,eAAgBA,EAChBC,eAAgBA,EAChB+C,gBAAiBA,EACjBC,gBAAiBA,IAMjC,2BAEkB,kCAFlB,MAGerxB,IAAO96G,UAHtB,QAIiBqtL,GAA2B5iJ,UAEnC6iJ,Ojes0kENlB,GiejhlEoB5oL,gBA8OhByrG,mBAAsBhK,YAASmnF,MjeuykEjBzrP,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,Gkel/kEjC,QAASqtP,GAAStjO,EAAMujO,EAAMxyO,GAuB5B,QAASyyO,GAAW37O,GAClB,GAAIga,GAAOwE,EACPoL,EAAUgyN,CAKd,OAHAp9N,GAAWo9N,SACXC,EAAiB77O,EACjB4X,EAASO,EAAKtY,MAAM+pB,EAAS5P,GAI/B,QAAS8hO,GAAY97O,GAMnB,MAJA67O,GAAiB77O,EAEjB+7O,EAAU3qP,WAAW4qP,EAAcN,GAE5BO,EAAUN,EAAW37O,GAAQ4X,EAGtC,QAASskO,GAAcl8O,GACrB,GAAIm8O,GAAoBn8O,EAAOo8O,EAC3BC,EAAsBr8O,EAAO67O,EAC7BS,EAAcZ,EAAOS,CAEzB,OAAOI,GACHC,EAAUF,EAAaG,EAAUJ,GACjCC,EAGN,QAASI,GAAa18O,GACpB,GAAIm8O,GAAoBn8O,EAAOo8O,EAC3BC,EAAsBr8O,EAAO67O,CAKjC,iBAAQO,GAA+BD,GAAqBT,GACzDS,EAAoB,GAAOI,GAAUF,GAAuBI,EAGjE,QAAST,KACP,GAAIh8O,GAAOG,GACX,IAAIu8O,EAAa18O,GACf,MAAO28O,GAAa38O,EAGtB+7O,GAAU3qP,WAAW4qP,EAAcE,EAAcl8O,IAGnD,QAAS28O,GAAa38O,GAKpB,MAJA+7O,UAIIa,GAAYp+N,EACPm9N,EAAW37O,IAEpBwe,EAAWo9N,SACJhkO,GAGT,QAAS2U,cACHwvN,GACF/rP,aAAa+rP,GAEfF,EAAiB,EACjBr9N,EAAW49N,EAAeR,EAAWG,SAGvC,QAASc,KACP,WAAO,KAAAd,EAAwBnkO,EAAS+kO,EAAax8O,KAGvD,QAAS28O,KACP,GAAI98O,GAAOG,IACP48O,EAAaL,EAAa18O,EAM9B,IAJAwe,EAAW1e,UACX87O,EAAWzuO,KACXivO,EAAep8O,EAEX+8O,EAAY,CACd,YAAIhB,EACF,MAAOD,GAAYM,EAErB,IAAIG,EAIF,MAFAvsP,cAAa+rP,GACbA,EAAU3qP,WAAW4qP,EAAcN,GAC5BC,EAAWS,GAMtB,WAAO,KAHHL,IACFA,EAAU3qP,WAAW4qP,EAAcN,IAE9B9jO,EArHT,GAAI4G,GACAo9N,EACAa,EACA7kO,EACAmkO,EACAK,EACAP,EAAiB,EACjBI,KACAM,KACAK,IAEJ,IAAmB,kBAARzkO,GACT,KAAM,IAAIkT,WAAU2xN,EA6GtB,OA3GAtB,GAAOthB,EAASshB,IAAS,EACrBzsN,EAAS/lB,KACX+yO,IAAY/yO,EAAQ+yO,QACpBM,EAAS,WAAarzO,GACtBuzO,EAAUF,EAASj0D,EAAU8xC,EAASlxN,EAAQuzO,UAAY,EAAGf,GAAQe,EACrEG,EAAW,YAAc1zO,KAAYA,EAAQ0zO,SAAWA,GAoG1DE,EAAUvwN,OAASA,EACnBuwN,EAAUD,MAAQA,EACXC,EA3LT,GAAI7tN,GAAW,EAAQ,IACnB9uB,EAAM,EAAQ,KACdi6N,EAAW,EAAQ,KAGnB4iB,EAAkB,sBAGlB10D,EAAY78J,KAAKC,IACjB8wN,EAAY/wN,KAAKgpD,GAqLrBjmF,GAAOD,QAAUktP,Gle0jlEX,SAAUjtP,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAiBrC,QAAS2rB,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GAE1L,QAAS67C,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WAEzb,QAAS8T,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCArB5C,GAAIkwD,GAAuCntF,EAAoB,GAC1G6uP,EAAiE7uP,EAAoB,KACrF8uP,EAAkD9uP,EAAoB,IACtE+uP,EAAqD/uP,EAAoB,IACzEgvP,EAAyChvP,EAAoB,KAC7DivP,EAAgEjvP,EAAoB,KACpFkvP,EAA2DlvP,EAAoB,IAC/EmvP,EAAgDnvP,EAAoB,IACpEovP,EAAiEpvP,EAAoB,KACrFqvP,EAAkDrvP,EAAoB,KACtEsvP,EAAsDtvP,EAAoB,KAC/F80E,EAAiB,WAAc,QAASC,GAAcpiE,EAAKtS,GAAK,GAAI20E,MAAeC,KAAeC,KAAgBC,QAAgB,KAAM,IAAK,GAAiCC,GAA7BC,EAAK1iE,EAAIk2C,OAAOnD,cAAmBuvB,GAAMG,EAAKC,EAAGz0D,QAAQizB,QAAoBmhC,EAAK/zE,KAAKm0E,EAAG3wE,QAAYpE,GAAK20E,EAAKj0E,SAAWV,GAA3D40E,OAAyE,MAAOhxE,GAAOixE,KAAWC,EAAKlxE,EAAO,QAAU,KAAWgxE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUriE,EAAKtS,GAAK,GAAI0S,MAAM+c,QAAQnd,GAAQ,MAAOA,EAAY,IAAIk2C,OAAOnD,WAAYxkD,QAAOyR,GAAQ,MAAOoiE,GAAcpiE,EAAKtS,EAAa,MAAM,IAAI48B,WAAU,4DAEllB9c,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MmexvlE1hB4sL,EAAS,iBAEFtsI,EAAiBr+G,IAAtB2C,IAEF+kP,E,WACF,WAAY/nL,GAAW,aAEf3lD,GACA2lD,EADA3lD,MAGAi1L,EAEAj1L,EAFAi1L,gBALe,EAOfj1L,EADAvE,SAAYC,KANG,sBAMgBk1O,GANhB,EAMMC,QAGzB1wO,MAAK2wO,aAAejvP,OAAOm+B,MATR,OAUOt8B,SAVP,IAUXmtP,oBAVW,EAUA,GAVA,EAYbE,EAAe,oBAAoBr9I,KAAKk9I,GAAiBC,EAE/D1wO,MAAK6wO,aAAgBD,GAAgBA,EAAa,IAAO,IACzD5wO,KAAKwlD,UAAYA,CAfE,OAgB6CxlD,KAAKwlD,UAA7D3lD,MAASvE,SAAYC,MAASu1O,sBAhBnB,EAgBgC,GAhBhC,CAiBnB9wO,MAAK8wO,WAAaA,EAClB9wO,KAAK80L,gBAAkBA,EAAgBhwL,KAAK9E,MAC5CA,KAAK+wO,eAAiB/wO,KAAK+wO,eAAejsO,KAAK9E,MAC/CA,KAAKgxO,WAAahxO,KAAKgxO,WAAWlsO,KAAK9E,MACvCA,KAAKixO,QAAUjxO,KAAKixO,QAAQnsO,KAAK9E,MACjCA,KAAKkxO,SAAWlxO,KAAKkxO,SAASpsO,KAAK9E,MACnCA,KAAKmxO,gBAAkBnxO,KAAKmxO,gBAAgBrsO,KAAK9E,MACjDA,KAAKoxO,cAAgBpxO,KAAKoxO,cAActsO,KAAK9E,MAC7CA,KAAKqxO,aAAerxO,KAAKqxO,aAAavsO,KAAK9E,MAC3CA,KAAKsxO,WAAatxO,KAAKsxO,WAAWxsO,KAAK9E,MACvCA,KAAKuxO,iBAAmBvxO,KAAKuxO,iBAAiBzsO,KAAK9E,MACnDA,KAAKwxO,iBAAmBxxO,KAAKwxO,iBAAiB1sO,KAAK9E,MACnDA,KAAKyxO,gBAAkBzxO,KAAKyxO,gBAAgB3sO,KAAK9E,MACjDA,KAAK0xO,SAAW1xO,KAAK0xO,SAAS5sO,KAAK9E,MACnCA,KAAK2xO,aAAe3xO,KAAK4xO,oBACzB5xO,KAAK6xO,SAAStE,EAAyBxtL,OAAO+xL,cneqgnElD,MA9uBAjtL,GAAa0oL,IACT9nP,IAAK,4BACLC,MAAO,SmetxlEeid,GAAW,GAEjBovO,GAMZpvO,EANAorO,WACciE,EAKdrvO,EALAgoD,aAC2BsnL,EAI3BtvO,EAJAgtD,eAAkB+sB,QACEw1J,EAGpBvvO,EAHA3D,OAAU8+G,SACHq0H,EAEPxvO,EAFApH,MACS62O,EACTzvO,EADA4vC,QAP6B,EAS8DvyC,KAAKwlD,UAAU3lD,MAAtGtE,EATyB,EASzBA,MAAOwyO,EATkB,EASlBA,WAAYpjL,EATM,EASNA,aAAgC+xB,EAT1B,EASQ/sB,eAAkB+sB,QAAqBohC,EAT/C,EASqC9+G,OAAU8+G,QAC5EiwH,KAAe7B,IAAiB3c,SAAWwiB,IAAmBhE,GAC9D/tO,KAAK6xO,SAAStE,EAAyBxtL,OAAOmyF,OAASmgG,QAASN,IAAmB7F,IAAiBa,cAEpGxiM,YAAQogB,KAAkBpgB,YAAQynM,GAClChyO,KAAK6xO,SAAStE,EAAyBxtL,OAAOuyL,mBAAqB1+N,SAAU5T,KAAKuyO,oBAAoB5vO,MAC9F4nC,YAAQogB,IAAiBpgB,YAAQynM,IACzChyO,KAAK6xO,SAAStE,EAAyBxtL,OAAOyyL,iBAE9CP,IAAgBv1J,GAChB18E,KAAK6xO,SAAStE,EAAyBxtL,OAAO0yL,wBAE9CP,GAAiBp0H,GAAa99G,KAAK0yO,oBAE3BR,GAAgBp0H,GAAY99G,KAAK0yO,oBACzC1yO,KAAK2yO,yBAFL3yO,KAAK4yO,uBAOJ5yO,KAAK6yO,YAAcV,EAAU71O,IAAM61O,EAAU71O,KAAOf,EAAMe,IAC3D0D,KAAK8yO,gBAAgBX,EAAU71O,IAC/B0D,KAAK6yO,eACE7yO,KAAK6yO,YAAcV,EAAU71O,IAAM81O,EAAY91O,IACtD61O,EAAU71O,KAAV,GAAoB81O,EAAY91O,IAAQ61O,EAAU71O,KAAOf,EAAMe,KAC/D0D,KAAK6yO,kBne6xlETptP,IAAK,aACLC,MAAO,Sme1xlEA4X,GAIP0C,KAAK+yO,oBACL/yO,KAAKwlD,UAAUwtL,WAAW11O,Mne6xlE1B7X,IAAK,sBACLC,MAAO,Wme3xlEW,UAClB,IAAKsa,KAAKw+C,YAAV,CAGA,GAAIx/C,GAASgB,KAAKw+C,YAAYx/C,MAC1BA,KACAA,EAAOq5E,GAAG3xF,IAAamF,aAAcmU,KAAKgxO,YAC1ChyO,EAAOq5E,GAAG3xF,IAAaoF,UAAWkU,KAAKixO,SACvCjyO,EAAOq5E,GAAG3xF,IAAaqF,WAAYiU,KAAKkxO,UACxClyO,EAAOq5E,GAAG3xF,IAAasF,oBAAqBgU,KAAKmxO,iBACjDnyO,EAAOq5E,GAAG3xF,IAAauF,kBAAmB+T,KAAKoxO,eAC/CpyO,EAAOq5E,GAAG3xF,IAAawF,gBAAiB8T,KAAKqxO,cAC7CryO,EAAOq5E,GAAG3xF,IAAayF,cAAe6T,KAAKsxO,YAC3CtyO,EAAOq5E,GAAG3xF,IAAa4F,oBAAqB0T,KAAKuxO,kBACjDvyO,EAAOq5E,GAAG3xF,IAAa2F,oBAAqB2T,KAAKwxO,kBACjDxyO,EAAOq5E,GAAG3xF,IAAa0F,mBAAoB4T,KAAKyxO,iBAChDzyO,EAAOq5E,GAAG3xF,IAAakG,WAAYoT,KAAK0xO,WAE5C1xO,KAAK0yO,mBAAqB,WACjB,EAAKl0L,cAGVx/C,EAAS,EAAKw/C,YAAYx/C,UAEtBA,EAAOu5E,IAAI7xF,IAAamF,aAAc,EAAKmlP,YAC3ChyO,EAAOu5E,IAAI7xF,IAAaoF,UAAW,EAAKmlP,SACxCjyO,EAAOu5E,IAAI7xF,IAAaqF,WAAY,EAAKmlP,UACzClyO,EAAOu5E,IAAI7xF,IAAasF,oBAAqB,EAAKmlP,iBAClDnyO,EAAOu5E,IAAI7xF,IAAauF,kBAAmB,EAAKmlP,eAChDpyO,EAAOu5E,IAAI7xF,IAAawF,gBAAiB,EAAKmlP,cAC9CryO,EAAOu5E,IAAI7xF,IAAayF,cAAe,EAAKmlP,YAC5CtyO,EAAOu5E,IAAI7xF,IAAa4F,oBAAqB,EAAKilP,kBAClDvyO,EAAOu5E,IAAI7xF,IAAa2F,oBAAqB,EAAKmlP,kBAClDxyO,EAAOu5E,IAAI7xF,IAAa0F,mBAAoB,EAAKqlP,iBACjDzyO,EAAOu5E,IAAI7xF,IAAakG,WAAY,EAAK8kP,gBnekylEjDjsP,IAAK,yBACLC,MAAO,Wme7xlEHsa,KAAK0yO,qBACL1yO,KAAK0yO,qBACL1yO,KAAK0yO,mBAAqB,SnekylE9BjtP,IAAK,qBACLC,MAAO,WAkFH,QAASutP,GAAmBC,EAAIC,EAAKC,GACjC,MAAOhzO,GAAK1N,MAAMsN,KAAMrN,WAlF5B,GAAIyN,GAAOqvC,EAAgC4jM,mBAAmBx+I,KAAK,QAASy+I,GmehylE3DC,EAAUC,EAAa36L,GneiylEpC,GAAIt9C,GAAOk4O,EAAmB5tO,EAAU6tO,EAAuB/oM,EAAQyB,EAAU0xE,EAAUoB,EAAW3sE,EAAS0G,EAAS/1C,EAAOywO,EAAYl/O,EAAS+7C,EAAa69L,EAAiBhwH,EAAUu1H,CAE5L,OAAOP,oBAAmBQ,KAAK,SAAkB7sM,GAC7C,OACI,OAAQA,EAASxsB,KAAOwsB,EAASnlC,MAC7B,IAAK,GAOD,Mme5ylElBtG,GAAQ+8K,YAAqBi7D,GneuylEXE,EmehylEpBzzO,KAAKwlD,UAAU3lD,MALfgG,E,EAAAA,S,IACAomC,KAAYtB,E,EAAJruC,GAAkB8vC,E,EAAN9nD,KACVw5H,E,EAAV9+G,OAAU8+G,SACDoB,E,EAAT3jH,MAAS2jH,UACT3sE,E,EAAAA,QAEJ1sC,EAASkqC,YAAwBpF,IACjC9kC,EAASosC,enekylEejL,EAASnlC,KAAO,EmejylElBgE,EAAS2tC,YAAyBj4C,GneoylEpC,KAAK,GAiBD,GmerzlElB09C,E,OACNpzC,EAASu3C,eACTv3C,EAASk3C,eneuylEe75C,EmetylEkC+1C,M,IAAlDhN,KneuylEgB0nM,WAAaA,K,EmevylErBl/O,E,EAAAA,QAAmB+7C,E,EAAV8B,SACrBuG,IACArI,EAAYpD,UAAYyL,GAGxBrI,GAAe+B,GAAY/B,EAAYl0C,KAAOi2C,EAAQj2C,IACtDuJ,EAASo3C,YAAczM,KAGvBstE,QAAY01H,E,Cne0ylEYxsM,EAASnlC,KAAO,EAChB,OAKJ,Kme/ylEdwsO,EAAkBruO,KAAKquO,iB,CnegzlELrnM,EAASnlC,KAAO,EAChB,OAIJ,MADAmlC,GAASnlC,KAAO,GmelzlE1BwsO,EAAgBrjD,eneqzlEV,KAAK,ImelzlEzBnlL,EAASsqC,aACL7zC,GAAIquC,EACJrmD,KAAM8nD,EACN33C,UACA+7C,cACAE,SAAQA,KAGR2tE,EAAWm1H,EACC,MAAZn1H,IACIP,EACAO,KACqB,UAAda,IACPb,OAGFu1H,EAA0B,MAAZv1H,EAChBu1H,GAEA/tO,EAASu4G,YAA4BC,IAEzCx4G,EAASw1C,YAAYu4L,EAAcA,KAAKr4O,GAAO2jH,UAAWb,IAAa9iH,GneuzlEnD,KAAK,IACL,IAAK,MACD,MAAOyrC,GAAS8sM,SAG7BR,EAAStzO,QAOhB,OAAOizO,QAGXxtP,IAAK,YACLC,MAAO,Wme5ylEFsa,KAAKw+C,aAGVx+C,KAAKw+C,YAAYtC,UnegzlEjBz2D,IAAK,aACLC,MAAO,Wme7ylEFsa,KAAKw+C,aAGVx+C,KAAKw+C,YAAYoyF,WneizlEjBnrJ,IAAK,aACLC,MAAO,Wme9ylEFsa,KAAKw+C,aAAgBx+C,KAAKw+C,YAAYi0F,MAG3CzyI,KAAKw+C,YAAYi0F,UnekzlEjBhtJ,IAAK,eACLC,MAAO,Wme/ylEFsa,KAAKw+C,aAAgBx+C,KAAKw+C,YAAYk0F,QAG3C1yI,KAAKw+C,YAAYk0F,YnemzlEjBjtJ,IAAK,aACLC,MAAO,SmejzlEA4W,EAAI+hH,GAA0B,GAAhBxlE,GAAgB,uDAAJ,EAC5Bv8C,IAGL0D,KAAKizO,oBAAqB32O,MAAM+hH,EAAUxlE,MneszlE1CpzD,IAAK,kBACLC,MAAO,SmepzlEK8W,EAAS6hH,GAA0B,GAAhBxlE,GAAgB,uDAAJ,EACtCr8C,IAGLwD,KAAKizO,oBAAqBz2O,WAAW6hH,EAAUxlE,MneyzlE/CpzD,IAAK,2BACLC,MAAO,SmevzlEcytD,GAAyB,GAAhB0F,GAAgB,uDAAJ,EACrC1F,IAGLnzC,KAAKizO,oBAAqB9/L,kBAAsB0F,Mne00lEhDpzD,IAAK,kBACLC,MAAO,Sme3zlEK4W,GAAoB,GAAhBu8C,GAAgB,uDAAJ,EAC5B74C,MAAK+zO,WAAWz3O,SAAeu8C,Mneg0lE/BpzD,IAAK,4BACLC,MAAO,Sme9zlEe4uD,GAAqC,WAA7B0E,EAA6B,uDAApB,GAAIH,EAAgB,uDAAJ,MAClC74C,KAAKwlD,UAAU3lD,MAA5BgG,UACCizC,aAAkBt8C,QAAS83C,EAAQ0E,YACvCxmB,KAAK,SAAA+f,GACGA,GAGLj6B,EAAKy7N,WAAWxhM,EAAQj2C,IAAGA,EAAOu8C,Qnes0lE1CpzD,IAAK,0BACLC,MAAO,Smen0lEa4uD,EAAQ+H,EAAO23L,GACnCh0O,KAAKi0O,0BAA0B3/L,EAAQ0/L,Mnes0lEvCvuP,IAAK,mBACLC,MAAO,Smep0lEMwuP,GACRl0O,KAAKw+C,aAAgBx+C,KAAKw+C,YAAY0xF,aAG3ClwI,KAAKw+C,YAAY0xF,YAAYgkG,Mneu0lE7BzuP,IAAK,mBACLC,MAAO,Wmep0lEP,MAAKsa,MAAKw+C,aAAgBx+C,KAAKw+C,YAAY0xF,YAGpClwI,KAAKw+C,YAAY0xF,eAAiB,EAF9B,Knei1lEXzqJ,IAAK,kBACLC,MAAO,Wmet0lEFsa,KAAKw+C,aAAgBx+C,KAAKw+C,YAAYsyF,mBAG3C9wI,KAAKw+C,YAAYsyF,uBne00lEjBrrJ,IAAK,iBACLC,MAAO,Wmev0lEFsa,KAAKw+C,aAAgBx+C,KAAKw+C,YAAYuyF,gBAG3C/wI,KAAKw+C,YAAYuyF,oBnew1lEjBtrJ,IAAK,eACLC,MAAO,Wme10lEI,MACmBsa,KAAKwlD,UAAU3lD,MAArC8qD,wBADG,MAEX,OAAIpgB,aAAQogB,GACD,MAGPruD,GAAIquD,EAAaF,aACjBnmE,KAAMqmE,EAAarmE,KACnBkmH,WAAY7/C,EAAa9V,MAAMklB,IAAIh8D,KACnC49G,SAAUhxD,EAAa92C,OAAO62F,KAAK3sG,Sneg1lEvCtY,IAAK,sBACLC,MAAO,Wme70lEuC,GAA9Bma,GAA8B,uDAAtBG,KAAKwlD,UAAU3lD,MAAO,EAEhBA,EAAtB8qD,wBAFsC,MAG9C,OAAIpgB,aAAQogB,GACD,MAGPwpL,oBAAqBxpL,EAAaF,aAClCnmD,YAAaqmD,EAAarmE,KAC1B8vP,oBAAqBzpL,EAAa9V,MAAMklB,IAAIh8D,KAC5Cs2O,gBAAiB1pL,EAAa92C,OAAO62F,KAAK3sG,KAC1CzZ,KAAMqmE,EAAaF,iBneq1lEvBhlE,IAAK,0BACLC,MAAO,Wmel1lEe,MACoBsa,KAAKwlD,UAAU3lD,MAAjDy0O,EADc,EACdA,WADc,IACF3pL,wBADE,MAEtB,OAAmB,sBAAf2pL,GAEIhwP,KAAM,UACNZ,KAAM,SAKVY,KAAMqmE,EAAarmE,KACnBZ,KAAqB,kBAAf4wP,EAAiC,MAAQ,Sne01lEnD7uP,IAAK,gBACLC,MAAO,Wmet1lEHsa,KAAK2wO,cAAgB3wO,KAAK2wO,eAAiBjvP,OAC3Cse,KAAK6xO,SAAStE,EAAyBxtL,OAAOw0L,gBAAkBx2O,KAAMrc,OAAO4Z,SAASyC,OAEtFiC,KAAKwlD,UAAUqoL,mBnek2lEnBpoP,IAAK,aACLC,MAAO,Wmex1lEPsa,KAAK6xO,SAAStE,EAAyBxtL,OAAOy0L,Yne41lE9C/uP,IAAK,UACLC,MAAO,Wmez1lEPsa,KAAK6xO,SAAStE,EAAyBxtL,OAAO00L,Sne61lE9ChvP,IAAK,WACLC,MAAO,Wme11lEPsa,KAAK6xO,SAAStE,EAAyBxtL,OAAO20L,Une81lE9CjvP,IAAK,kBACLC,MAAO,Sme51lEKw2B,EAAG+8B,GACfj5C,KAAK6xO,SAAStE,EAAyBxtL,OAAO40L,eAAgB17L,Mne+1lE9DxzD,IAAK,gBACLC,MAAO,Sme71lEGw2B,EAAG+8B,GACbj5C,KAAK6xO,SAAStE,EAAyBxtL,OAAO60L,aAAc37L,Mneg2lE5DxzD,IAAK,eACLC,MAAO,Sme91lEEw2B,EAAG+8B,GACZj5C,KAAK6xO,SAAStE,EAAyBxtL,OAAO80L,WAAY57L,Mnei2lE1DxzD,IAAK,aACLC,MAAO,Sme/1lEAw2B,EAAG+8B,GACVj5C,KAAK6xO,SAAStE,EAAyBxtL,OAAO+0L,SAAU77L,Mnek2lExDxzD,IAAK,mBACLC,MAAO,Smeh2lEMw2B,EAAGywK,GAAW,MAGI3sL,KAAKwlD,UAAU3lD,MAAtCguD,wBAHmB,QAITvxD,KAAOqwL,EAAUrwL,IAGnC0D,KAAK6xO,SAAStE,EAAyBxtL,OAAO8/D,eAAgB8sE,Mneq2lE9DlnM,IAAK,mBACLC,MAAO,Smen2lEMw2B,GAA4B,oEAAvBywK,qBAAuB,MACzC3sL,MAAK6xO,SAAStE,EAAyBxtL,OAAOg1L,eAAgBpoD,Mne02lE9DlnM,IAAK,kBACLC,MAAO,Wmev2lEPsa,KAAK6xO,SAAStE,EAAyBxtL,OAAOi1L,kBne22lE9CvvP,IAAK,WACLC,MAAO,Smez2lEFw2B,EAAG+8B,GACRj5C,KAAK6xO,SAAStE,EAAyBxtL,OAAOk1L,MAAOh8L,Mne42lErDxzD,IAAK,iBACLC,MAAO,WA+KH,QAASqrP,GAAemE,GACpB,MAAOC,GAAMziP,MAAMsN,KAAMrN,WA/K7B,GAAIwiP,GAAQ1lM,EAAgC4jM,mBAAmBx+I,KAAK,QAASugJ,Gme32lEhElqN,Gne42lET,GAEI4b,GAAMC,EAAOrjD,EAAM2xP,EAAK/nM,EAAQt6B,EAAQmE,EAAkBm+N,EAAaC,EAAc58L,EAASnuB,EAAQgrN,EAAS3oO,EAAMosC,EAASthB,EAAK89M,EAAmB5vO,EAAU6vO,EAAuBn8O,EAAcwb,EAFrM4gO,EAAS31O,IAIb,OAAOqzO,oBAAmBQ,KAAK,SAAmB+B,GAC9C,OACI,OAAQA,EAAUp7N,KAAOo7N,EAAU/zO,MAC/B,IAAK,GACD,Gme/2lEE,gBAAfqpB,GAAM4b,K,Cneg3lEW8uM,EAAU/zO,KAAO,CACjB,OAGJ,MAAO+zO,GAAUC,OAAO,SAE5B,KAAK,Gmel3lErB/uM,QACJ,KACIA,EAAO3iC,KAAKoT,MAAM2T,EAAM4b,MAC1B,MAAO5hD,GACL4hD,Kney3lEoB,GAFAC,Emep3lEgCD,EAAhDpjD,E,EAAAA,KAAM2xP,E,EAAAA,IAAK/nM,E,EAAAA,OAAQt6B,E,EAAAA,OAAQmE,E,EAAAA,iBAE9BzzB,E,Cneq3lEuBkyP,EAAU/zO,KAAO,CACjB,OAGJ,MAAO+zO,GAAUC,OAAO,SAE5B,KAAK,GAGD,GAFAP,Emex3lEW5xP,EAAKga,MAAM,K,SAAvCi7C,E,KAASnuB,E,KAAQgrN,E,KAER,cAAZ78L,E,Cney3lEwBi9L,EAAU/zO,KAAO,EACjB,OAGJ,MAAO+zO,GAAUC,OAAO,SAE5B,KAAK,IACD,Gme53lET,mBAAXrrN,E,Cne63lEwBorN,EAAU/zO,KAAO,EACjB,Ome73lEpB7B,KAAKw1O,KACC3oO,EAAO7Y,MAAM+c,QAAQ+1B,EAAKmS,SAAWnS,EAAKmS,SAAWnS,EAAKmS,SAC1DA,EAAUj5C,KAAKw1O,GAAL,MAAAx1O,KAAA,EAAiB6M,KACyB,IAAtD0gO,EAAyBuI,OAAOp6O,QAAQ85O,KACpCv8L,GAAmC,kBAAjBA,GAAQzmB,KAC1BymB,EAAQzmB,KAAK,SAAA9sC,GACT,EAAKmsP,SAASnuP,EAAMgC,EAAO2vP,KAG/Br1O,KAAK6xO,SAASnuP,EAAMu1D,EAASo8L,Kneq4lErBO,EAAU/zO,KAAO,EACjB,MAEJ,KAAK,IACD,Gmep4lET,oBAAX2oB,GACA9mC,IAASqyP,IAA6BC,a,Cneo4lEdJ,EAAU/zO,KAAO,EACjB,Omen4lElB81B,EAAMj2C,OAAO21B,aAAaC,QAAQy+N,IAA6BE,qBACjEt+M,IAAQo+M,IAA6BG,sBAYrCl2O,KAAKm2O,oBney4lEWP,EAAU/zO,KAAO,EACjB,MAEJ,KAAK,IACD,Gme14lET,oBAAX2oB,GACA9mC,IAASqyP,IAA6BK,a,Cne04lEdR,EAAU/zO,KAAO,EACjB,Omez4lExB7B,KAAKwlD,UAAU6wL,gBAGC,IAAZrjO,GACAhT,KAAKwlD,UAAU8wL,qBne84lECV,EAAU/zO,KAAO,EACjB,MAEJ,KAAK,IACD,Gme/4lET,oBAAX2oB,GACA9mC,IAASqyP,IAA6BQ,oBAC3B,YAAXjpM,E,Cne84lEwBsoM,EAAU/zO,KAAO,EACjB,Omez4lExB,Gne44lEoB4zO,Emeh5lEmCz1O,KAAKwlD,UAAU3lD,MAA9DgG,E,EAAAA,S,IAAUtM,wB,EAAe2qG,EAAaz7G,K,EAE9CuX,KAAKw2O,eAEDr/N,GAAoBnX,KAAKm2O,gBACzB,IAEIz0P,OAAO21B,aAAayzD,QAAQ,mBAAoB3zD,GAG5Cz1B,OAAO+0P,oBAAsB/0P,OAAO+0P,mBAAmBC,eACvDh1P,OAAO+0P,mBAAmBC,cAAcC,aACpCr6O,GAAI,kBACJs6O,UAAW,UACX5jO,QAAS,mBAAoBmE,IAC9B5d,IAAiB2qG,EAAax7G,QAAU,oCAAsC,6BAEvF,MAAOxD,GACLC,EAAQC,MAAMF,Gnew5lEF,MADA0wP,GAAU/zO,KAAO,Gmej5lEPgE,EAASimO,cneo5lEvB,KAAK,Imep5lEf/2N,E,OAEF/U,KAAK2wO,cAAgB3wO,KAAK2wO,eAAiBjvP,QAG3Cse,KAAK6xO,SAAStE,EAAyBxtL,OAAO82L,wBAC1C94O,KAAMrc,OAAO4Z,SAASyC,KACtB6V,SAAU5T,KAAKuyO,sBACf39B,qBAAsB50M,KAAK82O,4BAInC92O,KAAKwlD,UAAU6wL,eAEXthO,GACA/U,KAAKwlD,UAAUuxL,gBAGf/2O,KAAKm2O,iBAELn2O,KAAKgoF,QAAOA,EAAMhoF,KAAKm2O,gBney5lEX,KAAK,IACL,IAAK,MACD,MAAOP,GAAU9B,SAG9BsB,EAAUp1O,QAOjB,OAAO+wO,QAGXtrP,IAAK,SACLC,MAAO,Wmep6lEwC,GAA5CsxP,GAA4C,wDAAxB3J,EAAwB,wDAI3C7nI,EAAK,IAC2C,IAAhD9jH,OAAO4Z,SAASwC,OAAOpC,QAAQ,cAC/B8pG,IAAiD,IAAzC9jH,OAAO4Z,SAASwC,OAAOpC,QAAQ,KAAc,IAAM,KAA3D,YAA0E6R,mBAAmBhqB,SAASmtP,WAEtGsG,IAAoE,IAAtDt1P,OAAO4Z,SAASwC,OAAOpC,QAAQrU,IAAMqJ,cACnD80G,OAAUn+G,IAAMqJ,WAAhB,SAEA28O,IAA6E,IAA3D3rP,OAAO4Z,SAASwC,OAAOpC,QAAQrU,IAAMsJ,mBACvD60G,OAAUn+G,IAAMsJ,gBAAhB,QAEJ,IAAMsmP,GAAYA,GAAGv1P,OAAO4Z,SAASyC,KAAOynG,CAC5C9jH,QAAO4Z,SAASyC,KAAOk5O,Kne06lEvBxxP,IAAK,WACLC,MAAO,Smex6lEFhC,EAAMu1D,EAASo8L,GACpB,GAAKr1O,KAAK2wO,cAAgB3wO,KAAK2wO,eAAiBjvP,OAAhD,CAGA,GAAMwpC,IACFxnC,OACA2xP,MACAp8L,UAEJ,KACIj5C,KAAK2wO,aAAagG,YACXrmP,aAAWkgP,EADlB,IAC4BxwO,KAAK8wO,WAAa3sO,KAAKC,UAAU8mB,GACzDlrB,KAAK6wO,cAEX,MAAO3rP,GACLC,EAAQC,MAAMF,Qney6lElBO,IAAK,oBACLC,MAAO,Wmep6lEP,MADAhE,QAAOsiF,iBAAiB,UAAWhkE,KAAK+wO,gBACjC,WACHrvP,OAAO6qK,oBAAoB,UAAWvsJ,KAAK+wO,oBne06lE/CtrP,IAAK,UACLC,MAAO,Wmet6lEHsa,KAAK2xO,cACL3xO,KAAK2xO,kBne26lETlsP,IAAK,kBACLb,IAAK,Wmex1mEa,GACOsyP,GAA2Bl3O,KAAKwlD,UAAjD6oL,gBACJrvO,QACJ,IAAIk4O,EAAwB,CAExB,GAAM7I,GAAkB6I,EAAuBxxO,oBAC3C2oO,KAEArvO,EAASqvO,EAAgB3oO,sBAAwB2oO,GAGzD,MAAOrvO,Mne41mEPvZ,IAAK,cACLb,IAAK,Wmez1mEL,GAAIuyP,SAKJ,OAJIn3O,MAAKquO,kBACL8I,EAAuBn3O,KAAKquO,gBAAgB7vL,aACxCx+C,KAAKquO,gBAAgB7vL,YAAYouI,UAAUnuI,IAAmByyF,WAAWC,aAE1EgmG,Mne61mEJ5J,Kmeh8lEL6J,GACF3C,KAAM,YACNC,MAAO,aACP2C,KAAM,aACNC,OAAQ,eACRC,iBAAkB,mBAClBC,iBAAkB,mBAClBC,iBAAkB,kBAClBC,gBAAiB,iBACjBC,aAAc,aACdC,mBAAoB,kBACpBC,mBAAoB,kBACpBC,6BAA8B,2BAC9BC,wBAAyB,4BACzBC,4BAA6B,0BAC7BzD,eAAgB,gBAChB0D,kBAAmB,kBACnBC,YAAa,aACbC,cAAe,eACfC,sBAAuB,sBACvBC,gBAAiB,2BAGft4L,GACF+xL,aAAc,cACd5/F,MAAO,QACPogG,kBAAmB,mBACnBE,gBAAiB,iBACjBC,sBAAuB,sBACvBoE,uBAAwB,2BACxBtC,eAAgB,gBAChBC,QAAS,UACTC,KAAM,OACNC,MAAO,QACPC,eAAgB,eAChBC,aAAc,aACdC,WAAY,YACZC,SAAU,UACVj1H,eAAgB,gBAChBk1H,eAAgB,gBAChBC,cAAe,eACfC,MAAO,QAGX1H,GAAyBj9O,QAvpBT,YAwpBhBi9O,EAAyBiD,OAASA,EAElCruP,OAAO6I,KAAKosP,GAAKr3M,QAAQ,SAAAt6C,GACrB8nP,EAAyB9nP,GAAU6K,aAAWkgP,EAA9C,IAAwD4G,EAAI3xP,KAGhE8nP,EAAyBxtL,UACzB59D,OAAO6I,KAAK+0D,GAAQhgB,QAAQ,SAAAt6C,GACxB8nP,EAAyBxtL,OAAOt6D,GAAU6K,aAAWkgP,EAArD,IAA+DzwL,EAAOt6D,KAG1E8nP,EAAyBuI,QACrBsB,EAAII,iBACJJ,EAAIe,cACJf,EAAIgB,sBACJhB,EAAIiB,iBAGO9K,Qne+7lEc/rP,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAgBrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,Goe7onEje,QAASm5O,GAAYxxM,GACjB,GAAKplD,OAAO62P,OAAZ,CAGA,GAAM16O,GAAYnc,OAAO4Z,SAAS2B,SAA5B,KAAyCvb,OAAO4Z,SAASgC,IAC/D5b,QAAO62P,OAAO5B,YAAYxyO,KAAKC,UAAU0iC,GAAOjpC,IAG7C,QAAS26O,KAAoD,GAArCj9O,GAAqC,0DAAzBusD,EAAyB,aAAZ2wL,EAAY,aACxDn8O,EAAgBf,EAAhBe,GAAI62C,EAAY53C,EAAZ43C,OACZ,OAAK2U,IAAgB2wL,EAWd3wL,EATCxrD,GAAM62C,EACN,UAAiBzxD,OAAO4Z,SAASgC,KAAjC,gBAAqD3E,YAAY4C,GAKrE,UAAiB7Z,OAAO4Z,SAASgC,KAAjC,SAA8C3E,YAAY4C,GpewmnEnCta,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOywP,IAC9E,IAAIvxL,GAAsCvjE,EAAoB,GAE1D0/H,GAD8C1/H,EAAoB4D,EAAE2/D,GACxBvjE,EAAoB,IAChE2/H,EAA6C3/H,EAAoB,IACjE4/H,EAAqD5/H,EAAoB4D,EAAE+7H,GAC3E83H,EAAyCz3P,EAAoB,IAC7D03P,EAAiD13P,EAAoB4D,EAAE6zP,GACvEE,EAA+D33P,EAAoB,IACnFi+O,EAAuCj+O,EAAoB,GAC3D43P,EAAwD53P,EAAoB,IACjGqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Moe/mnEnhBmyL,EAAb,6KAEQr0P,OAAOsiF,iBAAiB,UAAWhkE,KAAK+wO,eAExC,KACIrvP,OAAO21B,aAAayzD,QAChBirK,EAA6BE,oBAC7BF,EAA6BG,qBAEnC,MAAOhxP,GACLC,EAAQC,MAAMF,GAGlBozP,GACI50P,KAAMqyP,EAA6BC,cAbvB,OAuBRh2O,KAAKH,MAPLgG,EAhBQ,EAgBRA,SAhBQ,IAgBEvK,SAAYC,MAC1B03C,EAjBY,EAiBZA,QACA32C,EAlBY,EAkBZA,GACA0b,EAnBY,EAmBZA,KACSk7B,EApBG,EAoBZC,QACa2lM,EArBD,EAqBZhxL,YACA2wL,EAtBY,EAsBZA,WAGEtlM,EAAUD,GAAgBD,EAC1B6U,EAAc0wL,GAAiBl8O,KAAI62C,WAAW2lM,EAAkBL,GAChE12D,EAAgBl8K,EAAS0hD,YAAoB3hE,IAAkB0C,OAErEy5L,GAAc7yH,aACb18B,KAAK,iBAAMuvJ,GAAczxH,iBACzB99B,KAAK,SAACzd,GACH,MAAKA,GAGEgtK,EAAc73H,wBAFVhnE,IAAQC,cAItBqvC,KAAK,YAA2B,GAAlBumN,GAAkB,EAAxB/gO,IAEL,KAAK+gO,EACD,MAAOh3D,GAAc1wH,gBACjBH,GAAIl5C,GAKZ,IAAI+gO,IAAgB/gO,EAChB,MAAO+pK,GAAc3zH,iBAChB57B,KAAK,WACF9wC,OAAO4Z,SAASyC,KAAOrc,OAAO4Z,SAASyC,MAKnD,IAAI+pD,IAAgB2wL,EAEhB,MADA/2P,QAAO4Z,SAASyC,KAAO+pD,EAChB,IAIX,IAAI3wC,SACJ,KACIA,EAAmBz1B,OAAO21B,aAAaC,QAAQ,oBACjD,MAAOpyB,GACLC,EAAQC,MAAMF,GAUlB,MAPAozP,IACI50P,KAAMqyP,EAA6BQ,mBACnCp/N,mBACAm2B,OAAQ,YAGZ5rD,OAAOszF,QACA,UA3EnB,oCA+EmB9pD,GACX,GAA0B,gBAAfA,GAAM4b,KAAjB,CAIA,GAAIA,SACJ,KACIA,EAAO3iC,KAAKoT,MAAM2T,EAAM4b,MAC1B,MAAO5hD,GACL4hD,KATc,MAYOA,EAAjBpjD,EAZU,EAYVA,KAAMsvB,EAZI,EAYJA,MACVtvB,KAASqyP,EAA6BiD,sBACtCV,GACI50P,KAAMqyP,EAA6BK,aACnCpjO,WAEJtxB,OAAOszF,aAjGnB,8BAsGQ,MAAO,GACF,KADL,OAGc1wF,KAAM,SAAUiuD,QAAS,4BAzG/C,GAAkD8R,gBAqHlD0xL,GAA6BE,oBAAsB,YACnDF,EAA6BG,oBAAsB,UACnDH,EAA6BC,aAAe,mCAC5CD,EAA6BQ,mBAAqB,2CAClDR,EAA6BK,aAAe,mCAC5CL,EAA6BiD,oBAAsB,yCAEpCxqJ,kBAAUunJ,KpeuqnEIv0P,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,Yqez0nEO,SAASg4P,GAAiBh5O,GAAuB,GAAhBi5O,GAAgB,0DAC9CC,IAKN,OAJAD,GAAUn5M,QAAQ,SAAA+oI,GACdqwE,EAAaj3P,KAAK4mL,EAAS7oK,MAGxB,iBAAMm5O,GAAqBD,IAG/B,QAASC,MAAwC,2DACvCpnO,IAAI,SAACzG,GAAD,MAAiBA,OAVtC,Orem2nEM,SAAUlqB,EAAQiE,EAAqBrE,GAE7C,Ysen2nEe,SAASo4P,GAAkBzhO,EAAU2kE,EAAepyB,GAC/D,MAAwB,KAApBvyC,EAAS51B,SAAuD,IAAtC41B,EAASlc,QAAQzU,IAAUqH,QAAqD,IAArCspB,EAASlc,QAAQzU,IAAUsH,QAEnD,IAAtCqpB,EAASlc,QAAQzU,IAAUqH,QACzBiuF,GACmC,IAArC3kE,EAASlc,QAAQzU,IAAUsH,QACzB47D,GCDF,QAASmvL,GAAiBr5O,GACrC,MAAOs5O,aAAat5O,EAAO8hF,IAAsB,WAAkD,GAAjDy3J,GAAiD,wDAA7BvtM,SAAYwtM,EAAiB,aAE3Fx/O,EAYAw/O,EAZAx/O,WACAsiF,EAWAk9J,EAXAl9J,cACAhrB,EAUAkoL,EAVAloL,UACAn4D,EASAqgP,EATArgP,IACA+wD,EAQAsvL,EARAtvL,OACAle,EAOAwtM,EAPAxtM,KACAr0B,EAMA6hO,EANA7hO,SACAjC,EAKA8jO,EALA9jO,cACA+pE,EAIA+5J,EAJA/5J,cACAlxB,EAGAirL,EAHAjrL,qBACAye,EAEAwsK,EAFAxsK,cACAC,EACAusK,EADAvsK,iBAIJ,MAAIwsK,GAAsBF,EAAgBvtM,KAAK3nD,OAAS2nD,EAAK3nD,QAMrDitE,IACC+kC,YAAe1+E,KAAcA,EAAS51B,SACvCiqD,EAAK3nD,MACL+0P,EAAkBzhO,EAAU2kE,EAAepyB,MACzClwD,IAAgB0b,IAAkB+pE,KAAmBn1C,YAAQikB,KAC9DviB,EAAK+L,mBACZ,CACE,GAAMpkC,GAAW2oE,GAAiBpyB,KAClC2d,cAAY1uE,MAAK6yC,OAAMr4B,WAAUgE,WAAU42C,uBAAsBye,gBAAeC,oBAAmBjzE,eACnGy/O,Qveg0nEZ,GAAIxxK,GAAWjnF,EAAoB,IAG/Bm/H,EAAqBn/H,EAAoB,IAGzCq1G,EAAiBr1G,EAAoB,IAGrC8T,EAAQ9T,EAAoB,GAgB5BspD,EAAUtpD,EAAoB,IAG9Bs4P,EAAet4P,EAAoB,Iuep4nEvC,MAMA,IAAIy4P,Ove46nEE,SAAUr4P,EAAQiE,EAAqBrE,GAE7C,Ywep7nEe,SAASs4P,GAAat5O,EAAOiqM,EAAQplC,GAIhD,QAAS4/D,KACL,GAAM96N,GAAYsgM,EAAOtnM,IACrBgH,KAAcy+J,IACdvD,EAASuD,EAAcz+J,EAAW/D,GAClCwiK,EAAez+J,GARmC,GAClDhH,GAAuB3C,EAAvB2C,SAAUiD,EAAa5F,EAAb4F,SACdwiK,SAUE98J,EAActL,EAAMiC,UAAUwiO,EAEpC,OADAA,KACOn5N,EAdX,Oxe28nEM,SAAUlqB,EAAQiE,EAAqBrE,GAE7C,Yyet8nEO,SAAS04P,KACS,MACoBp2P,aADpB,IACT08D,IADS,sBACDU,GADC,EACDA,SAChBp9D,UAAS08D,KAAKU,UAAeA,EAAU5zC,QAAQ6sO,EAAkB,IAAjE,IAAwEA,EAIzE,QAASC,KACS,MACoBt2P,aADpB,IACT08D,IADS,sBACDU,GADC,EACDA,SAChBp9D,UAAS08D,KAAKU,UAAYA,EAAU5zC,QAAQ6sO,EAAkB,IAC9DE,IAYD,QAASA,MAEP,QAAS,cAAc/5M,QAAQ,SAACm8C,GAC7B34F,SAAS08D,KAAKssG,oBAAoBrwE,EAAW69J,KAjCzD,eAAMA,GAAgC,SAAuC7uN,GACzEA,EAAMmvD,kBACNnvD,EAAMkvD,kBAGGw/J,EAAmB,iBzeggoE1B,SAAUv4P,EAAQiE,EAAqBrE,GAE7C,YA+qBA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAhrBje,GAAIyL,GAAQ3pB,EAAoB,GAC5BmpG,EAA6BnpG,EAAoB4D,EAAE+lB,GAGnDa,EAAKxqB,EAAoB,GAGzBm2O,EAAWn2O,EAAoB,I0ejhoE7Bkb,GAEF,gBAAiB,YAEjB,gBAAiB,6LAEjB,kBAAmB,yDACnB,wBAAyB,uKAEzB,sBAAuB,gDACvB,4BAA6B,iIAE7B,sBAAuB,8BACvB,4BAA6B,yFAC7B,wBAAyB,qBACzB,8BAA+B,wDAC/B,oBAAqB,qBACrB,8BAA+B,uCAC/B,kCAAmC,6BACnC,sBAAuB,uBACvB,4BAA6B,uBAC7B,uBAAwB,wBACxB,6BAA8B,wBAC9B,sBAAuB,+BACvB,4BAA6B,4LAE7B,4BAA6B,UAE7B,kBAAmB,WACnB,gBAAiB,WACjB,iCAAkC,OAClC,oBAAqB,WACrB,qCAAsC,WACtC,kBAAmB,SACnB,mCAAoC,SACpC,qBAAsB,aACtB,uBAAwB,eACxB,sBAAuB,cACvB,sBAAuB,MACvB,wBAAyB,QACzB,4BAA6B,cAC7B,6BAA8B,eAC9B,6BAA8B,eAC9B,oBAAqB,sBACrB,yBAA0B,qIAE1B,8BAA+B,WAC/B,kCAAmC,WACnC,qCAAsC,cACtC,iCAAkC,sEAClC,iCAAkC,sCAClC,qCAAsC,WAEtC,kCAAmC,UACnC,mCAAoC,WACpC,gCAAiC,QACjC,gCAAiC,QACjC,8BAA+B,MAC/B,+BAAgC,OAChC,+BAAgC,OAChC,iCAAkC,SAClC,oCAAqC,YACrC,kCAAmC,UACnC,mCAAoC,WACpC,mCAAoC,WAEpC,4BAA6B,MAC7B,4BAA6B,MAC7B,4BAA6B,MAC7B,4BAA6B,MAC7B,4BAA6B,MAC7B,4BAA6B,MAC7B,4BAA6B,MAE7B,+BAAgC,SAChC,gCAAiC,UACjC,kCAAmC,YACnC,iCAAkC,WAClC,+BAAgC,SAChC,iCAAkC,WAClC,+BAAgC,SAEhC,qBAAsB,oCACtB,yBAA0B,6BAE1B,8BAA+B,iHAC/B,kCAAmC,sJACnC,iCAAkC,2FAClC,qBAAsB,4BACtB,qBAAsB,mBAEtB,4BAA6B,uBAC7B,wBAAyB,kBACzB,2BAA4B,uBAC5B,8BAA+B,8FAC/B,qCAAsC,qBACtC,8BAA+B,oBAC/B,4BAA6B,OAC7B,4BAA6B,oCAC7B,6BAA8B,WAC9B,uBAAwB,eAExB,kBAAmB,0DACnB,gBAAiB,WAEjB,iBAAkB,iDAClB,mBAAoB,+EACpB,oBAAqB,kBACrB,2BAA4B,oBAC5B,mCAAoC,kBACpC,qCAAsC,oBACtC,gCAAiC,cACjC,0BAA2B,QAC3B,iBAAkB,SAClB,oBAAqB,6BACrB,4BAA6B,kBAC7B,oBAAqB,WACrB,yBAA0B,iBAC1B,kBAAmB,SACnB,gBAAiB,OACjB,wBAAyB,gBACzB,yBAA0B,iBAC1B,gBAAiB,WACjB,uBAAwB,cACxB,mBAAoB,WACpB,qBAAsB,aACtB,wBAAyB,gBACzB,sBAAuB,aACvB,gBAAiB,OACjB,oBAAqB,WACrB,gBAAiB,gBACjB,oBAAqB,uCACrB,0BAA2B,iCAC3B,uBAAwB,oCACxB,0BAA2B,6BAE3B,KAAQ,OACR,SAAY,WAEZ,+BAAgC,8DAEhC,2BAA4B,0NAC5B,2CAA4C,WAC5C,yCAA0C,iBAC1C,gDAAiD,kDACjD,8CAA+C,sGAC/C,2CAA4C,4IAC5C,qCAAsC,oCACtC,iCAAkC,gIAClC,qCAAsC,8EACtC,sCAAuC,uBACvC,gCAAiC,kEAEjC,4BAA6B,kDAGlBA,IC/IFA,EAAWha,OAAO6I,KAAKgvP,GAAM/uP,OAAO,SAACC,EAAKoR,GAMnD,MALApR,GAAIoR,IACAA,KACAuuC,YAAavuC,EACb2yB,eAAgB+qN,EAAK19O,IAElBpR,O3e+opEPiO,EAAclY,EAAoB,GAGlCojF,EAASpjF,EAAoB,KAC7Bg5P,EAA8Bh5P,EAAoB4D,EAAEw/E,GAYpDjjE,GATYngB,EAAoB,KAIxBA,EAAoB,KAKjBkB,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,KAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,K4e1qpEhiBygB,KAAO60D,aAAa,MAChBtM,QAAS,SAACh0D,GAAD,MAAwB,KAAXA,EAAkBA,EAAlB,OAAiCA,IAGpD,IAAMshL,GAAb,SAAA13P,GACI,WAAYqd,GAAO,yEACTA,IAGAsuG,EAAwB,OAAftuG,EAAM3D,KAAgB,QAAU2D,EAAM3D,IAJtC,OAKfmoE,KAAO8pC,OAAOA,GALC,EADvB,WAAA3rH,GAAA,6CAUQ,OACI2Z,SAASA,KACFA,OAZnB,8BAkBQ,MACI,mBAAC,IAAD,KAAkB6D,KAAKH,OAAOsuG,OAAQnuG,KAAKH,MAAM3D,YAnB7D,GAA2CwE,YA4B3Cw5O,GAAsBl2O,cAClB7H,SAAUmoD,YAAUv/D,QAGxBm1P,EAAsBn5O,mBAClB5E,SAAUmoD,YAAUv/D,OAAO8b,WAG/B,IAAMoH,GAAkB,SAACxD,GACrB,GAAMynC,GAAOjwC,YAAawI,EAC1B,aACOynC,GACHzmD,IAAKymD,EAAKhwC,OAIHsyF,iBAAQvmF,GAAiBiyO,I5eqspElC,SAAU74P,EAAQD,EAASH,GAEjCA,EAAoB,KACpBI,EAAOD,QAAUH,EAAoB,MAK/B,SAAUI,EAAQD,I6ehwpEvB,SAAU6S,GACT,YA2BA,SAAS4/O,GAAKsG,EAASC,EAASl5O,EAAMm5O,GAEpC,GAAIC,GAAiBF,GAAWA,EAAQh4P,oBAAqBm4P,GAAYH,EAAUG,EAC/ErlN,EAAY/yC,OAAOid,OAAOk7O,EAAel4P,WACzC0d,EAAU,GAAIoiB,GAAQm4N,MAM1B,OAFAnlN,GAAUs/E,QAAUgmI,EAAiBL,EAASj5O,EAAMpB,GAE7Co1B,EAcT,QAASjW,GAASjF,EAAIx0B,EAAK+kB,GACzB,IACE,OAAS7mB,KAAM,SAAU6mB,IAAKyP,EAAGx4B,KAAKgE,EAAK+kB,IAC3C,MAAOrlB,GACP,OAASxB,KAAM,QAAS6mB,IAAKrlB,IAiBjC,QAASq1P,MACT,QAASE,MACT,QAASC,MA4BT,QAASC,GAAsBv4P,IAC5B,OAAQ,QAAS,UAAU29C,QAAQ,SAASnU,GAC3CxpC,EAAUwpC,GAAU,SAASrhB,GAC3B,MAAOvK,MAAKw0G,QAAQ5oF,EAAQrhB,MAoClC,QAASqwO,GAAc1lN,GACrB,QAAS5Z,GAAOsQ,EAAQrhB,EAAKpnB,EAASE,GACpC,GAAIw3P,GAAS57N,EAASiW,EAAUtJ,GAASsJ,EAAW3qB,EACpD,IAAoB,UAAhBswO,EAAOn3P,KAEJ,CACL,GAAI+mB,GAASowO,EAAOtwO,IAChB7kB,EAAQ+kB,EAAO/kB,KACnB,OAAIA,IACiB,gBAAVA,IACPqhB,EAAOvlB,KAAKkE,EAAO,WACdxC,QAAQC,QAAQuC,EAAMo1P,SAAStoN,KAAK,SAAS9sC,GAClD41B,EAAO,OAAQ51B,EAAOvC,EAASE,IAC9B,SAAS6B,GACVo2B,EAAO,QAASp2B,EAAK/B,EAASE,KAI3BH,QAAQC,QAAQuC,GAAO8sC,KAAK,SAASuoN,GAgB1CtwO,EAAO/kB,MAAQq1P,EACf53P,EAAQsnB,IACPpnB,GAhCHA,EAAOw3P,EAAOtwO,KAsClB,QAAS6pE,GAAQxoD,EAAQrhB,GACvB,QAASywO,KACP,MAAO,IAAI93P,SAAQ,SAASC,EAASE,GACnCi4B,EAAOsQ,EAAQrhB,EAAKpnB,EAASE,KAIjC,MAAO43P,GAaLA,EAAkBA,EAAgBzoN,KAChCwoN,EAGAA,GACEA,IA3BR,GAAIC,EAgCJj7O,MAAKw0G,QAAUpgC,EAwBjB,QAASomK,GAAiBL,EAASj5O,EAAMpB,GACvC,GAAI2E,GAAQy2O,CAEZ,OAAO,UAAgBtvN,EAAQrhB,GAC7B,GAAI9F,IAAU02O,EACZ,KAAM,IAAIn4P,OAAM,+BAGlB,IAAIyhB,IAAU22O,EAAmB,CAC/B,GAAe,UAAXxvN,EACF,KAAMrhB,EAKR,OAAO8wO,KAMT,IAHAv7O,EAAQ8rB,OAASA,EACjB9rB,EAAQyK,IAAMA,IAED,CACX,GAAI+wO,GAAWx7O,EAAQw7O,QACvB,IAAIA,EAAU,CACZ,GAAIC,GAAiBC,EAAoBF,EAAUx7O,EACnD,IAAIy7O,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,QACzC,OAAOF,IAIX,GAAuB,SAAnBz7O,EAAQ8rB,OAGV9rB,EAAQ47O,KAAO57O,EAAQ67O,MAAQ77O,EAAQyK,QAElC,IAAuB,UAAnBzK,EAAQ8rB,OAAoB,CACrC,GAAInnB,IAAUy2O,EAEZ,KADAz2O,GAAQ22O,EACFt7O,EAAQyK,GAGhBzK,GAAQ87O,kBAAkB97O,EAAQyK,SAEN,WAAnBzK,EAAQ8rB,QACjB9rB,EAAQ+1O,OAAO,SAAU/1O,EAAQyK,IAGnC9F,GAAQ02O,CAER,IAAIN,GAAS57N,EAASk7N,EAASj5O,EAAMpB,EACrC,IAAoB,WAAhB+6O,EAAOn3P,KAAmB,CAO5B,GAJA+gB,EAAQ3E,EAAQg1B,KACZsmN,EACAS,EAEAhB,EAAOtwO,MAAQkxO,EACjB,QAGF,QACE/1P,MAAOm1P,EAAOtwO,IACduqB,KAAMh1B,EAAQg1B,MAGS,UAAhB+lN,EAAOn3P,OAChB+gB,EAAQ22O,EAGRt7O,EAAQ8rB,OAAS,QACjB9rB,EAAQyK,IAAMswO,EAAOtwO,OAU7B,QAASixO,GAAoBF,EAAUx7O,GACrC,GAAI8rB,GAAS0vN,EAAS30M,SAAS7mC,EAAQ8rB,OACvC,IAAIA,IAAWjN,EAAW,CAKxB,GAFA7e,EAAQw7O,SAAW,KAEI,UAAnBx7O,EAAQ8rB,OAAoB,CAC9B,GAAI0vN,EAAS30M,SAAS8tE,SAGpB30G,EAAQ8rB,OAAS,SACjB9rB,EAAQyK,IAAMoU,EACd68N,EAAoBF,EAAUx7O,GAEP,UAAnBA,EAAQ8rB,QAGV,MAAO6vN,EAIX37O,GAAQ8rB,OAAS,QACjB9rB,EAAQyK,IAAM,GAAI2T,WAChB,kDAGJ,MAAOu9N,GAGT,GAAIZ,GAAS57N,EAAS2M,EAAQ0vN,EAAS30M,SAAU7mC,EAAQyK,IAEzD,IAAoB,UAAhBswO,EAAOn3P,KAIT,MAHAoc,GAAQ8rB,OAAS,QACjB9rB,EAAQyK,IAAMswO,EAAOtwO,IACrBzK,EAAQw7O,SAAW,KACZG,CAGT,IAAIhpP,GAAOooP,EAAOtwO,GAElB,OAAM9X,GAOFA,EAAKqiC,MAGPh1B,EAAQw7O,EAASQ,YAAcrpP,EAAK/M,MAGpCoa,EAAQ+B,KAAOy5O,EAASS,QAQD,WAAnBj8O,EAAQ8rB,SACV9rB,EAAQ8rB,OAAS,OACjB9rB,EAAQyK,IAAMoU,GAUlB7e,EAAQw7O,SAAW,KACZG,GANEhpP,GA3BPqN,EAAQ8rB,OAAS,QACjB9rB,EAAQyK,IAAM,GAAI2T,WAAU,oCAC5Bpe,EAAQw7O,SAAW,KACZG,GAoDX,QAASO,GAAaC,GACpB,GAAIp8L,IAAUq8L,OAAQD,EAAK,GAEvB,KAAKA,KACPp8L,EAAMs8L,SAAWF,EAAK,IAGpB,IAAKA,KACPp8L,EAAMu8L,WAAaH,EAAK,GACxBp8L,EAAMw8L,SAAWJ,EAAK,IAGxBj8O,KAAKs8O,WAAWp6P,KAAK29D,GAGvB,QAAS08L,GAAc18L,GACrB,GAAIg7L,GAASh7L,EAAM28L,cACnB3B,GAAOn3P,KAAO,eACPm3P,GAAOtwO,IACds1C,EAAM28L,WAAa3B,EAGrB,QAAS34N,GAAQm4N,GAIfr6O,KAAKs8O,aAAgBJ,OAAQ,SAC7B7B,EAAYt6M,QAAQi8M,EAAch8O,MAClCA,KAAKm1E,OAAMA,GA8Bb,QAAS3hE,GAAOipO,GACd,GAAIA,EAAU,CACZ,GAAIC,GAAiBD,EAASE,EAC9B,IAAID,EACF,MAAOA,GAAel7P,KAAKi7P,EAG7B,IAA6B,kBAAlBA,GAAS56O,KAClB,MAAO46O,EAGT,KAAKlzH,MAAMkzH,EAASz6P,QAAS,CAC3B,GAAIV,IAAK,EAAGugB,EAAO,QAASA,KAC1B,OAASvgB,EAAIm7P,EAASz6P,QACpB,GAAI+kB,EAAOvlB,KAAKi7P,EAAUn7P,GAGxB,MAFAugB,GAAKnc,MAAQ+2P,EAASn7P,GACtBugB,EAAKizB,QACEjzB,CAOX,OAHAA,GAAKnc,MAAQi5B,EACb9c,EAAKizB,QAEEjzB,EAGT,OAAOA,GAAKA,KAAOA,GAKvB,OAASA,KAAMw5O,GAIjB,QAASA,KACP,OAAS31P,MAAOi5B,EAAWmW,MAAKA,GA7flC,GAEInW,GAFAi+N,EAAKz6P,OAAOC,UACZ2kB,EAAS61O,EAAGv6P,eAEZw6P,EAA4B,kBAAX/yM,QAAwBA,UACzC6yM,EAAiBE,EAAQl2M,UAAY,aACrCm2M,EAAsBD,EAAQnoI,eAAiB,kBAC/CqoI,EAAoBF,EAAQ7qJ,aAAe,gBAE3CgrJ,EAA6B,gBAAX37P,GAClB47P,EAAUhpP,EAAOo/O,kBACrB,IAAI4J,EAQF,YAPID,IAGF37P,EAAOD,QAAU67P,GASrBA,GAAUhpP,EAAOo/O,mBAAqB2J,EAAW37P,EAAOD,WAcxD67P,EAAQpJ,KAAOA,CAoBf,IAAIqH,GAAyB,iBACzBW,EAAyB,iBACzBV,EAAoB,YACpBC,EAAoB,YAIpBK,KAYAyB,IACJA,GAAkBP,GAAkB,WAClC,MAAO38O,MAGT,IAAIm9O,GAAWh7P,OAAOuuC,eAClB0sN,EAA0BD,GAAYA,EAASA,EAAS3pO,OACxD4pO,IACAA,IAA4BR,GAC5B71O,EAAOvlB,KAAK47P,EAAyBT,KAGvCO,EAAoBE,EAGtB,IAAIC,GAAK3C,EAA2Bt4P,UAClCm4P,EAAUn4P,UAAYD,OAAOid,OAAO89O,EACtCzC,GAAkBr4P,UAAYi7P,EAAGh+O,YAAcq7O,EAC/CA,EAA2Br7O,YAAco7O,EACzCC,EAA2BqC,GACzBtC,EAAkBn2O,YAAc,oBAYlC24O,EAAQK,oBAAsB,SAASC,GACrC,GAAIC,GAAyB,kBAAXD,IAAyBA,EAAOl+O,WAClD,SAAOm+O,IACHA,IAAS/C,GAG2B,uBAAnC+C,EAAKl5O,aAAek5O,EAAKl5P,QAIhC24P,EAAQpoJ,KAAO,SAAS0oJ,GAUtB,MATIp7P,QAAO4hE,eACT5hE,OAAO4hE,eAAew5L,EAAQ7C,IAE9B6C,EAAOj+O,UAAYo7O,EACbqC,IAAqBQ,KACzBA,EAAOR,GAAqB,sBAGhCQ,EAAOn7P,UAAYD,OAAOid,OAAOi+O,GAC1BE,GAOTN,EAAQQ,MAAQ,SAASlzO,GACvB,OAASuwO,QAASvwO,IA8EpBowO,EAAsBC,EAAcx4P,WACpCw4P,EAAcx4P,UAAU06P,GAAuB,WAC7C,MAAO98O,OAETi9O,EAAQrC,cAAgBA,EAKxBqC,EAAQr5P,MAAQ,SAASu2P,EAASC,EAASl5O,EAAMm5O,GAC/C,GAAIqD,GAAO,GAAI9C,GACb/G,EAAKsG,EAASC,EAASl5O,EAAMm5O,GAG/B,OAAO4C,GAAQK,oBAAoBlD,GAC/BsD,EACAA,EAAK77O,OAAO2wB,KAAK,SAAS/nB,GACxB,MAAOA,GAAOqqB,KAAOrqB,EAAO/kB,MAAQg4P,EAAK77O,UAsKjD84O,EAAsB0C,GAEtBA,EAAGN,GAAqB,YAOxBM,EAAGV,GAAkB,WACnB,MAAO38O,OAGTq9O,EAAGp/N,SAAW,WACZ,MAAO,sBAkCTg/N,EAAQjyP,KAAO,SAASjG,GACtB,GAAIiG,KACJ,KAAK,GAAIvF,KAAOV,GACdiG,EAAK9I,KAAKuD,EAMZ,OAJAuF,GAAKsyE,UAIE,QAASz7D,KACd,KAAO7W,EAAKhJ,QAAQ,CAClB,GAAIyD,GAAMuF,EAAK2nB,KACf,IAAIltB,IAAOV,GAGT,MAFA8c,GAAKnc,MAAQD,EACboc,EAAKizB,QACEjzB,EAQX,MADAA,GAAKizB,QACEjzB,IAsCXo7O,EAAQzpO,OAASA,EAMjB0O,EAAQ9/B,WACNid,YAAa6iB,EAEbizD,MAAO,SAASwoK,GAcd,GAbA39O,KAAKwa,KAAO,EACZxa,KAAK6B,KAAO,EAGZ7B,KAAK07O,KAAO17O,KAAK27O,MAAQh9N,EACzB3e,KAAK80B,QACL90B,KAAKs7O,SAAW,KAEhBt7O,KAAK4rB,OAAS,OACd5rB,KAAKuK,IAAMoU,EAEX3e,KAAKs8O,WAAWv8M,QAAQw8M,IAEnBoB,EACH,IAAK,GAAIr5P,KAAQ0b,MAEQ,MAAnB1b,EAAK8iC,OAAO,IACZrgB,EAAOvlB,KAAKwe,KAAM1b,KACjBilI,OAAOjlI,EAAKuP,MAAM,MACrBmM,KAAK1b,GAAQq6B,IAMrBm1N,KAAM,WACJ9zO,KAAK80B,OAEL,IAAI8oN,GAAY59O,KAAKs8O,WAAW,GAC5BuB,EAAaD,EAAUpB,UAC3B,IAAwB,UAApBqB,EAAWn6P,KACb,KAAMm6P,GAAWtzO,GAGnB,OAAOvK,MAAK89O,MAGdlC,kBAAmB,SAASjsI,GAM1B,QAAShqE,GAAOo4M,EAAK5vN,GAYnB,MAXA0sN,GAAOn3P,KAAO,QACdm3P,EAAOtwO,IAAMolG,EACb7vG,EAAQ+B,KAAOk8O,EAEX5vN,IAGFruB,EAAQ8rB,OAAS,OACjB9rB,EAAQyK,IAAMoU,KAGNwP,EAjBZ,GAAInuB,KAAK80B,KACP,KAAM66E,EAmBR,KAAK,GAhBD7vG,GAAUE,KAgBL1e,EAAI0e,KAAKs8O,WAAWt6P,OAAS,EAAGV,GAAK,IAAKA,EAAG,CACpD,GAAIu+D,GAAQ7/C,KAAKs8O,WAAWh7P,GACxBu5P,EAASh7L,EAAM28L,UAEnB,IAAqB,SAAjB38L,EAAMq8L,OAIR,MAAOv2M,GAAO,MAGhB,IAAIka,EAAMq8L,QAAUl8O,KAAKwa,KAAM,CAC7B,GAAIwjO,GAAWj3O,EAAOvlB,KAAKq+D,EAAO,YAC9Bo+L,EAAal3O,EAAOvlB,KAAKq+D,EAAO,aAEpC,IAAIm+L,GAAYC,EAAY,CAC1B,GAAIj+O,KAAKwa,KAAOqlC,EAAMs8L,SACpB,MAAOx2M,GAAOka,EAAMs8L,UAASA,EACxB,IAAIn8O,KAAKwa,KAAOqlC,EAAMu8L,WAC3B,MAAOz2M,GAAOka,EAAMu8L,gBAGjB,IAAI4B,GACT,GAAIh+O,KAAKwa,KAAOqlC,EAAMs8L,SACpB,MAAOx2M,GAAOka,EAAMs8L,UAASA,OAG1B,KAAI8B,EAMT,KAAM,IAAIj7P,OAAM,yCALhB,IAAIgd,KAAKwa,KAAOqlC,EAAMu8L,WACpB,MAAOz2M,GAAOka,EAAMu8L,gBAU9BvG,OAAQ,SAASnyP,EAAM6mB,GACrB,IAAK,GAAIjpB,GAAI0e,KAAKs8O,WAAWt6P,OAAS,EAAGV,GAAK,IAAKA,EAAG,CACpD,GAAIu+D,GAAQ7/C,KAAKs8O,WAAWh7P,EAC5B,IAAIu+D,EAAMq8L,QAAUl8O,KAAKwa,MACrBzT,EAAOvlB,KAAKq+D,EAAO,eACnB7/C,KAAKwa,KAAOqlC,EAAMu8L,WAAY,CAChC,GAAI8B,GAAer+L,CACnB,QAIAq+L,IACU,UAATx6P,GACS,aAATA,IACDw6P,EAAahC,QAAU3xO,GACvBA,GAAO2zO,EAAa9B,aAGtB8B,EAAe,KAGjB,IAAIrD,GAASqD,EAAeA,EAAa1B,aAIzC,OAHA3B,GAAOn3P,KAAOA,EACdm3P,EAAOtwO,IAAMA,EAET2zO,GACFl+O,KAAK4rB,OAAS,OACd5rB,KAAK6B,KAAOq8O,EAAa9B,WAClBX,GAGFz7O,KAAKw/C,SAASq7L,IAGvBr7L,SAAU,SAASq7L,EAAQwB,GACzB,GAAoB,UAAhBxB,EAAOn3P,KACT,KAAMm3P,GAAOtwO,GAcf,OAXoB,UAAhBswO,EAAOn3P,MACS,aAAhBm3P,EAAOn3P,KACTsc,KAAK6B,KAAOg5O,EAAOtwO,IACM,WAAhBswO,EAAOn3P,MAChBsc,KAAK89O,KAAO99O,KAAKuK,IAAMswO,EAAOtwO,IAC9BvK,KAAK4rB,OAAS,SACd5rB,KAAK6B,KAAO,OACa,WAAhBg5O,EAAOn3P,MAAqB24P,IACrCr8O,KAAK6B,KAAOw6O,GAGPZ,GAGT0C,OAAQ,SAAS/B,GACf,IAAK,GAAI96P,GAAI0e,KAAKs8O,WAAWt6P,OAAS,EAAGV,GAAK,IAAKA,EAAG,CACpD,GAAIu+D,GAAQ7/C,KAAKs8O,WAAWh7P,EAC5B,IAAIu+D,EAAMu8L,aAAeA,EAGvB,MAFAp8O,MAAKw/C,SAASK,EAAM28L,WAAY38L,EAAMw8L,UACtCE,EAAc18L,GACP47L,IAKb,MAAS,SAASS,GAChB,IAAK,GAAI56P,GAAI0e,KAAKs8O,WAAWt6P,OAAS,EAAGV,GAAK,IAAKA,EAAG,CACpD,GAAIu+D,GAAQ7/C,KAAKs8O,WAAWh7P,EAC5B,IAAIu+D,EAAMq8L,SAAWA,EAAQ,CAC3B,GAAIrB,GAASh7L,EAAM28L,UACnB,IAAoB,UAAhB3B,EAAOn3P,KAAkB,CAC3B,GAAI06P,GAASvD,EAAOtwO,GACpBgyO,GAAc18L,GAEhB,MAAOu+L,IAMX,KAAM,IAAIp7P,OAAM,0BAGlBq7P,cAAe,SAAS5B,EAAUX,EAAYC,GAa5C,MAZA/7O,MAAKs7O,UACH30M,SAAUnzB,EAAOipO,GACjBX,WAAYA,EACZC,QAASA,GAGS,SAAhB/7O,KAAK4rB,SAGP5rB,KAAKuK,IAAMoU,GAGN88N,KAOX,WAAc,MAAOz7O,UAAa0pC,SAAS,mB7e+wpEvC,SAAUroD,EAAQiE,EAAqBrE,GAE7C,YA4DA,SAASsE,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,E8evgrE3M,QAAS2iH,KAAoC,GAAzBz+E,GAAyB,uDAAnBw6E,GAAaz7G,KAG7B61P,EAAap6I,GAAaz7G,IAChC,OAAO0iH,IAA0BzhF,GAAKrsB,SAAW8tG,GAA0BmzI,GAAYjhP,QAGpF,QAASkhP,GAAS70N,GACrB,MAAM,GAAIy+E,EAAWz+E,GAAO80N,GAAa5hM,GAGtC,QAAS6hM,GAAa/0N,GACzB,MAAM,GAAIy+E,EAAWz+E,GAAO80N,GAAaE,OAYtC,QAASC,GAAaC,EAASl1N,GAClC,GAAMkqB,GAAS6qM,EAAa/0N,GAAtB,IAA8Bm1N,GAAeC,GAAUH,aAAvD,IAAuEC,CAC7E,OAAOvoK,IACFzxF,IAAIgvD,GACJ9iB,IAAI,SAAU,oBACd0B,KAAK,qBAAEytB,OACP8Q,MAAM,SAAA7rE,GAAA,MAAOA,KAcf,QAAS65P,GAAT,GAA+E,GAAnD/mO,GAAmD,EAAnDA,KAAMstF,EAA6C,EAA7CA,WAA6C,IAAjCjoG,mBAAiC,EAAvB3b,OAAO4Z,SAASyC,KAAO,CAClF,OAAUV,KAAoC,IAA1BA,EAAQ3B,QAAQ,KAAc,IAAM,KAAxD,QAAmEsc,EAAnE,oCAA2GstF,EAA3G,oBAGG,QAAS05I,GAAT,GAA2D,QAAjC3hP,mBAAiC,EAAvB3b,OAAO4Z,SAASyC,KAAO,CAC9D,OAAUV,KAAoC,IAA1BA,EAAQ3B,QAAQ,KAAc,IAAM,KAAxD,aAGG,QAASujP,GAAT,GAAwG,GAA3EL,GAA2E,EAA3EA,QAAS5mO,EAAkE,EAAlEA,KAAMstF,EAA4D,EAA5DA,WAA4D,IAAhDjoG,mBAAgD,EAAtC3b,OAAO4Z,SAASyC,KAAsB,EAAhBxE,EAAgB,EAAhBA,aACrFuuD,EAAci3L,GAAmB/mO,OAAMstF,aAAYjoG,YACnDmoG,EAAKA,YAAYo5I,EAAjB,wBAAgD5mO,EAAhD,iBAAqE6mO,GAArE,uCAAwHtxO,mBAAmBu6C,EAGjJ,OAFYlU,GAAG2qM,EAAShlP,GAAgBulP,GAAUxuL,aAA5C,IAA4Dk1C,EClFvD,QAAS05I,KAAyC,GAAhBnuB,GAAgB,4DACeA,EAApEouB,qBADqD,SACepuB,EAApDt6M,KADqC,sBAC5BigC,GAD4B,EAC5BA,KAAoB0oM,EADQ,EACtBC,YACvC,IAAIF,EAAUn9P,OAAQ,CAClB,GAAMs9P,GAAuBH,EAAUtpO,OAAO,SAAAovN,GAAA,MACzB,YAAbA,EAAI73N,MAAqC,aAAf63N,EAAI33L,QAAwC,aAAf23L,EAAI33L,QAEnE,IAAIoJ,GAAQ0oM,GAAeE,EAAqBt9P,OAC5C,OACI00D,OACA0oM,cACAG,oBAAmBA,GAI/B,OAASA,oBAAmBA,G/egvrEhC,QAAS9vM,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,Wgf3vrElb,QAAS4vM,GAAeC,GAC3B,GAAM7rM,GAAS6rM,EAAT,UACN,OAAOppK,MAAQmgG,KAAK5iI,GACf8vD,IAAIl8F,MACJgrB,KAAK,SAAAs1F,GACF,GAAI43H,SACJ,IAAmB,MAAf53H,EAAIx6E,OAAgB,CAAC,GACLloD,GAAyB0iI,EAAjC7nE,KAAQ76D,MADI,EACqB0iI,EAAjBuqD,mBADJ,MASN,QAAVjtL,GAA0C,OAAxBitL,EAAQ,qBAAwBA,EAAQ,aAC1DqtE,EAAcrtE,EAAQ,YAG9B,MAAOqtE,KACR3uL,MAAM,SAAC7rE,MAMX,QAASy6P,GAAcF,EAAgB/oM,EAAM0oM,GAChD,GAAMxrM,GAAS6rM,EAAT,UAAiC/oM,CACvC,OAAO2/B,cAAQziC,GACV9iB,IAAI,gBADF,UAC6BsuN,GAC/BtuN,IAAI,SAAU,oBACd4yE,IAAIl8F,MACJgrB,KAAK,SAAAs1F,GACF,GAAIA,GAAsB,MAAfA,EAAIx6E,OAAgB,CAAC,GAAD,GACgCw6E,EAAnD7nE,IADmB,2BACZnZ,IADY,2BACL2wB,OADK,sBACKmoL,GADL,EACKA,KAChC,IAAIA,EACA,OACIA,QACAC,WAAUA,GAItB,OAASA,WAAUA,KACpB9uL,MAAM,SAAC7rE,GACN,OAAS26P,WAAUA,Khfk0rE/B,QAASC,GAA0B9lO,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIs4G,IAAiBtgG,EAAE,SAAUxnB,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAOm2E,IAAiBtgG,EAAExnB,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAjJ/B,GAAQuC,GAAuJ,MAAOkqD,GAAK,Wifx0rEhd,QAASmwM,GAAyBC,EAASC,EAAgBC,EAAcC,GAC5E,OACIz8P,KAAM08P,GACNJ,UACAC,iBACAC,eACAC,aAID,QAASE,GAAyBjtP,EAASktP,GAC9C,OACI58P,KAAMi3L,GACNvnL,UACAktP,cAID,QAASC,GAAyBntP,EAASktP,GAC9C,OACI58P,KAAM88P,GACNptP,UACAktP,cAKD,QAASG,GAAcrzO,GAC1B,OACI1pB,KAAMg9P,GACNtzO,QAID,QAASuzO,KACZ,OACIj9P,KAAMk9P,IAIP,QAASC,KACZ,OACIn9P,KAAMo9P,IAIP,QAASC,GAAiC9nM,GAC7C,OACIv1D,KAAMs9P,GACN/nM,WAcD,QAASgoM,GAAkBrC,EAASl1N,GAAK,UAC5C,sBAAAnR,GAAA,0BAAO,WAAO1S,GAAP,MAAA8E,EAAA,mGACkDg0O,EAAaC,EAASl1N,EADxE,oBAAA/e,EAAA,EACKlY,KADLkY,MAAA,KAAAA,OACa26F,EADb36F,EACa26F,aAAmBlyG,EADhC,EACgCA,SADhC,qBAGO,IAAIpQ,OAAMoQ,EAHjB,QAKHyS,EAAS3jB,iBACLqa,SAAU,YACVhB,OACI+pG,aACAs5I,UACAsC,gBAAeA,KAVpB,2CAAP,0BAAA3oO,GAAA,0BAgBG,QAAS4oO,GAA4B1B,EAAgB/oM,EAAM0oM,GAAa,UAC3E,mDAAO,WAAOv5O,GAAP,GAAA8E,GAAA,gHAG2B60O,EAAeC,EAH1C,aAGOC,EAHP,yCAMwCC,EAAcF,EAAgB/oM,EAAM0oM,EAN5E,oBAMaS,EANb,EAMaA,UAAWD,EANxB,EAMwBA,OACfC,EAPT,kCAQ2BuB,GAA2B3B,EAAgBC,EAAaE,EARnF,SAQe93H,EARf,OASSjiH,EAASk7O,GACLlB,UAAW/3H,EAAI+3H,UACf36P,IAAK4iI,EAAI5iI,MAXtB,2DAgBC2gB,EAASk7O,GACL77P,SACA26P,WAAUA,IAlBf,qDAAP,uDAwBG,QAASwB,GAAkB/7I,EAAYg8I,EAAaC,EAAoB/7I,GAAI,UAC/E,mDAAO,WAAO3/F,EAAUjD,GAAjB,2IAIKA,IAJL,IAGKxJ,IAAOswB,eAHZ,EAGkB,GAHlB,EAKSxtB,EAAwBqlP,EAAxBrlP,KAAMrC,EAAkB0nP,EAAlB1nP,QAAS2nP,EAASD,EAATC,KALxB,SAMwBxuL,MAA+BsuL,eANvD,iEAMOG,GANP,KAQKC,EAMAD,EANAC,gBACAC,EAKAF,EALAE,cACA7xL,EAIA2xL,EAJA3xL,SACA3hB,EAGAszM,EAHAtzM,aACYyzM,EAEZH,EAFAn8I,WACAu8I,EACAJ,EADAI,aAEEC,EAAaF,GAAiBt8I,EAfrC,UAiBOtyC,MACF8uL,aACAC,mBAAoBL,EACpBC,gBACAL,eArBL,SAyBOU,EAAet4N,IAAQ3jC,KAAQwD,KAAO04P,GAAiCC,GACzEC,EAAcN,EACTG,EADS,IACOH,EADP,eAEZ,KAGDM,IACKC,EAAetyL,GAAY3hB,EAC3Bk0M,EAAsBC,aACxBd,EACAY,EACAN,EACA5lP,EACArC,IAGE0oP,EAAkBC,GAA6Bd,KAIN,KAAxBW,IACnBF,EAAcE,IAMlBF,GACAzgQ,QACAA,OAAO4Z,UACP5Z,OAAO4Z,SAASyC,KAEhBrc,OAAO4Z,SAASyC,KAAOokP,EAEvBt8O,EACI3jB,iBACIqa,SAAU,YACVhB,MAAMA,MACCiqG,GACHgxI,aAAYA,EACZlxI,WAAYw8I,OAjE7B,iHAAP,yDA4EG,QAASW,GAAT,GAOJ,GANC7D,GAMD,EANCA,QACA5mO,EAKD,EALCA,KACAstF,EAID,EAJCA,WACA1xF,EAGD,EAHCA,SAGD,IAFCvW,QAASqlP,WAEV,EAFwBhhQ,OAAO4Z,SAASyC,KAExC,EADCxE,EACD,EADCA,YAEA,OAAO,UAACsM,GACJ,GAAMxI,GAAUw4M,aAAmB6sC,EAAa,qCAC1C1C,EAAUf,GAAqBL,UAAS5mO,OAAMstF,aAAYjoG,UAAS9D,iBACnE0mP,EAAiBlB,GAAoB/mO,OAAMstF,aAAYjoG,YACvD6iP,EAAelB,GAAkB3hP,YACjC8iP,EAAYvsO,EAAS+uO,gBAAkB/uO,EAAS+uO,eAAej9P,OAAShE,OAAOkhQ,WAAa,GAElG/8O,GAASk6O,EAAyBC,EAASC,EAAgBC,EAAcC,GAEzE,KACQA,EAEAt6O,EAASk1C,aAAoBn0D,KAAUsG,aACnCnJ,IAAKi8P,EACLh3K,MAAQp1D,EAASivO,aAAejvO,EAASivO,YAAYn9P,OAAU,IAC/DujF,OAASr1D,EAASkvO,cAAgBlvO,EAASkvO,aAAap9P,OAAU,OAGtEhE,OAAO4Z,SAASyC,KAAOiiP,EAE7B,MAAO96P,GACL,MAAOhC,MAAQG,OAAO6B,GAG1B,MAAOhC,MAAQC,QAAQ68P,IC3OhB,QAAS+C,KAAgD,GAA9Bt+O,GAA8B,uDAAtBixM,GAAcl2F,EAAQ,YACpE,QAAQA,EAAO97H,MACX,IAAKs/P,IACD,MAAO,OACAv+O,GACH1L,QACIif,KAAMwnG,EAAOxnG,KACb5kB,QAASosH,EAAOpsH,UAG5B,KAAKgtP,IACD,MAAO,OACA37O,GACH6rD,cACI0vL,QAASxgI,EAAOwgI,QAChBC,eAAgBzgI,EAAOygI,eACvBC,aAAc1gI,EAAO0gI,aACrBC,UAAW3gI,EAAO2gI,YAG9B,KAAKxlE,IACD,MAAO,OACAl2K,GACHw+O,aAAczjI,EAAOpsH,SAE7B,KAAKotP,IACD,MAAO,OACA/7O,GACHy+O,aAAc1jI,EAAOpsH,SAE7B,KAAKstP,IACD,MAAO,OACAj8O,GACHy+O,aAAc,KACdD,aAAc,KACdrE,QAAQA,MACDn6O,EAAMm6O,SACTxxO,KAAMoyG,EAAOpyG,QAGzB,KAAKwzO,IACD,MAAO,OACAn8O,GACH0+O,YAAWA,GAEnB,KAAKrC,IACD,MAAO,OACAr8O,GACH0+O,YAAWA,GAEnB,KAAKnC,IACD,MAAO,OACAv8O,GACH2+O,aACIvD,UAAWrgI,EAAOvmE,QAAQ4mM,UAC1B36P,IAAKs6H,EAAOvmE,QAAQ/zD,MAGhC,SACI,MAAOuf,IC3EJ,QAAS4+O,KAAsE,GAA3D5+O,GAA2D,wDAAjD6+O,YAAWA,EAAQn0L,aAAYA,GAAUqwD,EAAQ,YAC1F,QAAQA,EAAO97H,MACX,IAAKyoH,MACD,MAAO,OAAK1nG,GAAOnI,GAAIkjH,EAAOljH,GAAIvD,OAAQymH,EAAOzmH,OAAQuqP,YAAWA,EAAOn0L,aAAYA,GAE3F,KAAKi+C,MACD,MAAO,OAAK3oG,GAAOnI,GAAI,KAAMgnP,YAAWA,EAAQn0L,aAAYA,GAEhE,KAAK89C,MACD,MAAO,OAAKxoG,GAAO0qD,aAAYA,GAEnC,KAAKnf,MACD,MAAO,OAAKvrC,GAAOnI,GAAI,KAAMgnP,YAAWA,EAAQn0L,aAAYA,GAEhE,KAAKve,MACD,MAAO,OAAKnsC,GAAOnI,GAAIkjH,EAAOljH,IAElC,KAAKogH,MACD,MAAO,OACAj4G,GACH1L,OAAOA,MAAM0L,EAAM1L,QAAQm9F,KAAMA,MAAKzxF,EAAM1L,OAAOm9F,MAAMt5C,GAAI4iE,EAAO1sH,MAAMujB,kBAC1EulI,SAAQA,GAGhB,KAAKzuC,MACD,MAAO,OAAK1oG,GAAOm3I,SAAQA,GAE/B,SACI,MAAOn3I,Infs2sEnB,QAASqM,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,Goft3sE1L,QAAS2vP,GAAQ9+O,EAAjB,GAA+D,QAArC6rC,mBAAqC,OAAvBE,EAAuB,EAAvBA,YAAaG,EAAU,EAAVA,MAGjD,IAAIlsC,EAAM4nC,MAAQ5nC,EAAM4nC,KAAKiJ,YAAc9E,IAAgBA,EAAY8E,UACnE,MAAO7wC,GAAM4nC,IAIjB,IAAImE,EACA,MAAOA,EAIX,IAAuB,IAAnBF,EAAQtuD,SAAgB2uD,EAA5B,CAKA,GAAM6yM,GAAkBlzM,EACfz6B,OAAO,SAACu8B,GACL,GAAM0vE,GAAiB1vE,EAAOE,QAC9B,OACIwvE,GAAe9/H,OAAS,IACvB8/H,EAAe,GAAGp+H,OAASmD,KAAYwG,SAAWy0H,EAAe,GAAGp+H,OAASmD,KAAYyG,OAGpGm2P,EAAiBD,EAAgBxxO,IAAI,SAACogC,EAAQ1gC,GAAT,OAAsBuoD,MAAO7nB,EAAOE,SAAS,GAAG2nB,OAAS,EAAGvoD,WAC9Fq4C,KAAK,SAAC25L,EAAOC,GAAR,MAAkBA,GAAM1pL,MAAQypL,EAAMzpL,QAC3CjoD,IAAI,SAACjtB,GAAD,MAAYA,GAAO2sB,QACvBpvB,OAGT,aAAImhQ,GAAiCD,EAAgBC,GAKrD,MAAOD,GAAgBC,GAAgBnxM,SAAS,IAGpD,QAASsxM,GAAgBn/O,EAAO6rC,GAC5B,MAAOA,GAAQrlD,OAAO,SAACuvB,EAAM43B,GACzB,GAAM1gC,GAAQjN,EAAM6rC,QAAQt+B,IAAI,SAAC6xO,GAAD,MAAUA,GAAKvnP,KAAIZ,QAAQ02C,EAAO91C,GAClE,mBACOke,EAAK3mB,MAAM,EAAG6d,KACjB0gC,GAFJ,EAGO53B,EAAK3mB,MAAM6d,EAAQ,MAE3BjN,EAAM6rC,SAGb,QAASwzM,GAAer/O,EAAOs/O,GAE3B,MAAIt/O,GAAM6rC,SAAW7rC,EAAM6rC,QAAQtuD,OACxByiB,EAAM6rC,QAAQt+B,IAAI,SAACogC,GACtB,GAAI6C,GAAY7C,CAUhB,OATA2xM,GAAmBhkN,QAAQ,SAACikN,GACpB5xM,EAAO91C,KAAO0nP,EAAkB1nP,KAChC24C,EAAY+uM,WAMb/uM,GAAUG,WACVH,IAGRxwC,EAAM6rC,QAGjB,QAAS2zM,GAAgBx/O,EAAO+6G,GAC5B,GAAMlvE,GAAUkvE,EAAOlvE,WACvB,IAAuB,IAAnBA,EAAQtuD,OACR,MAAO,OAAKyiB,GAAO+2D,QAAOA,GAG9B,IAAM0oL,GAAgBN,EAAgBn/O,EAAO6rC,GACvCjE,EAAOk3M,EAAQ9+O,GAAS6rC,QAAS4zM,EAAe1zM,YAAagvE,EAAOhvE,YAAaG,OAAQlsC,EAAMksC,QACrG,cAAYlsC,GAAOy/O,gBAAe73M,OAAMmvB,QAAOA,IAGpC,QAASvvB,KAAyB,GAApBxnC,GAAoB,0DAAR+6G,EAAQ,YAC7C,QAAQA,EAAO97H,MACX,IAAKosD,MACD,QAEJ,KAAKqJ,MACD,MAAO,OAAK10C,GAAO0/O,eAAcA,GAErC,KAAKnyM,MACD,MAAO,OACAvtC,GACH6rC,QAASwzM,EAAer/O,EAAO+6G,EAAOlvE,UAG9C,KAAKyB,MACD,MAAO,OACAttC,GACH6rC,QAASkvE,EAAOlvE,SAGxB,KAAKN,MACD,MAAO,OACAvrC,GACHnI,GAAIkjH,EAAOljH,GACX8nP,YAAWA,EACXD,eAAcA,EACdl0M,cAAeuvE,EAAOvvE,cACtBurB,QAAOA,EACP9qB,SAAQA,GAGhB,KAAKE,MAED,MAAInsC,GAAMnI,KAAOkjH,EAAOljH,GACbmI,EAEX,MACOA,GACHnI,GAAIkjH,EAAOljH,GACXhY,KAAMk7H,EAAOl7H,KACbwvB,MAAO0rG,EAAO1rG,MACdu8B,KAAMmvE,EAAOnvE,KACbxF,YAAa20E,EAAO30E,YACpBuF,OAAQovE,EAAOpvE,OACf37C,QAAS+qH,EAAO/qH,QAChByH,KAAMsjH,EAAOtjH,KACbkoP,YAAWA,EACXD,eAAcA,EACd7zM,QAASkvE,EAAOlvE,QAChBO,aAAc2uE,EAAO3uE,aACrBN,SAAUivE,EAAOjvE,SACjBlE,KAAMk3M,EAAQ9+O,EAAO+6G,GACrB/uE,eAAgB+uE,EAAO/uE,eACvBrrD,MAAOo6H,EAAOp6H,MACdsrD,QAAS8uE,EAAO9uE,QAChBC,OAAQ6uE,EAAO7uE,QAGvB,KAAKwH,MACD,MAAO,OACA1zC,GACH4nC,KAAMmzE,EAAOjtE,SAAW9tC,EAAM4nC,MAGtC,KAAK6F,MACD,MAAO+xM,GAAgBx/O,EAAO+6G,EAElC,KAAKzuE,MACD,MAAO,OAAKtsC,GAAO4/O,SAAQA,GAE/B,KAAKnzM,MACD,MAAO,OAAKzsC,GAAOupC,YAAawxE,EAAOxxE,YAAaq2M,SAAQA,GAEhE,KAAKpsM,MACD,MAAO,OACAxzC,GACHngB,KAAMk7H,EAAOl7H,KACbgY,GAAIkjH,EAAOljH,GACXo0C,QAAS8uE,EAAO9uE,QAChBsH,kBAAmBwnE,EAAOxnE,mBAGlC,KAAKK,MACD,MAAO,OACA5zC,GACHisC,QAAS8uE,EAAO9uE,SAGxB,SACI,MAAOjsC,Ipfk4sEnB,QAAS6/O,GAAyB9+P,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,Eqf/itErM,QAASymD,KAOb,GAPkBxnC,GAOlB,wDANP8/O,wBAAuBA,EACvB5mI,WAAUA,EACVG,UAASA,EACTltC,OAAMA,EACNxrF,OAAMA,EACNwiK,UACDpoC,EAAQ,YACP,QAAQA,EAAO97H,MACX,IAAKi8H,MACD,MAAO,OAAKl7G,GAAOrf,OAAMA,EAAOgO,QAASosH,EAAOpsH,SACpD,KAAK+qH,MACD,MAAO,OAAK15G,GAAO8/O,wBAAuBA,GAC9C,KAAKjmI,MACD,MAAO,OAAK75G,GAAO46G,UAAWG,EAAOnB,UACzC,KAAKG,MACD,MAAO,OAAK/5G,GAAOrf,MAAOo6H,EAAOp6H,OACrC,KAAKq6H,MACD,MAAO,OAAKh7G,GAAO46G,UAAWG,EAAOH,UAAWzuC,MAAO4uC,EAAO5uC,OAClE,KAAKgtC,MACD,MAAO,OAAKn5G,GAAOk5G,UAAW6B,EAAO7B,WACzC,KAAKI,MACD,MAAO,OAAKt5G,GAAOq5G,SAAU0B,EAAO1B,UACxC,KAAKuC,MACD,MAAO,OAAK57G,GAAOmsE,MAAO4uC,EAAO5uC,OACrC,KAAKqtC,MACD,MAAO,OACAx5G,GACH8/O,wBAAuBA,EACvB5mI,WAAUA,EACVG,UAASA,EACTltC,OAAMA,EACNxrF,OAAMA,GAEd,KAAKy5H,MACD,MAAKW,GAAOjtE,SAAYitE,EAAOjtE,QAAQj2C,GAGvC,MACOmI,GACHmjJ,MAAMA,MACCnjJ,EAAMmjJ,MADb,KAEKpoC,EAAOjtE,QAAQj2C,GAAKkjH,EAAOZ,aANzBn6G,CASf,KAAKs6G,MACD,MAAO,OAAKt6G,GAAOmjJ,UACvB,SACI,MAAOnjJ,ICvDZ,QAAS+/O,KACZ,OACI9gQ,KAAM+gQ,GACNzzM,UAAWd,KAAKl9C,OAIjB,QAAS0xP,GAAoB/4L,GAChC,OACIjoE,KAAMihQ,GACN9vO,aAAcq7B,KAAKl9C,MACnB24D,YAID,QAASi5L,KACZ,MAAO,UAAC/+O,EAAUjD,GACd,GAAM6B,GAAQ7B,IACRnJ,EAASD,aAAeiL,GACxBuO,EAASwpG,aAAyB/3G,EAExC,OADAoB,GAAS2+O,KACF/9J,KAAQmhB,YAAYnuG,EAAQuZ,GAAQwf,KAAK,SAACm5B,GAE7C,MADA9lD,GAAS6+O,EAAoB/4L,QACtBA,KCjBJ,QAASk5L,KAOb,GAP6BpgP,GAO7B,wDANPqgP,kBAAmBrqI,KAAaC,QAAQ1sH,KACxC+2P,mBAAoB9gB,GACpB+gB,qBAAsB/gB,GACtBghB,kBAAmB,GACnBC,iBAAkB,WAClBC,cAAe,IAChB3lI,EAAQ,YACP,QAAQA,EAAO97H,MAEX,IAAKihQ,IACD,MAAO,OAAKlgP,GAAO0nD,SAAUqzD,EAAO7zD,UAExC,KAAK2wD,MACD,MAAO,OAAK73G,GAAOyhG,WAAYsZ,EAAOtZ,YAE1C,KAAKiU,MACD,MAAO,OAAK11G,GAAO4/O,SAAQA,GAE/B,KAAKhqI,MACD,MAAO,OAAK51G,GAAOoiG,SAAU2Y,EAAO3Y,SAAUw9I,SAAQA,GAE1D,KAAK9pI,MACD,MAAO,OAAK91G,GAAOqgP,kBAAmBtlI,EAAOlyE,QAEjD,KAAKqvE,MACD,MAAO,OAAKl4G,GAAO0gP,cAAe3lI,EAAO95H,MAAO0/P,mBAAoB5lI,EAAO1sH,OAE/E,KAAK4pH,MACD,MAAO,OACAj4G,GACHwgP,kBAAmBzlI,EAAO95H,MAC1Bw/P,iBAAkB1lI,EAAO6lI,WACzBC,kBAAmB9lI,EAAO1sH,OAGlC,KAAK8pH,MACD,MAAO,OAAKn4G,GAAOugP,qBAAsBxlI,EAAOvkD,KAAM8pL,mBAAoBvlI,EAAOvkD,MAErF,KAAK4hD,MACD,MAAO,OAAKp4G,GAAOugP,qBAAsBxlI,EAAO5E,UAAWmqI,mBAAoBvlI,EAAO3E,SAE1F,SACI,MAAOp2G,IClDnB,QAASw/O,GAAgBx/O,EAAO+6G,GAC5B,GAAMlvE,GAAUkvE,EAAOlvE,WACvB,OAAuB,KAAnBA,EAAQtuD,OACR,MAAYyiB,GAAO+2D,QAAOA,IAE9B,MAAY/2D,GAAO6rC,UAASkrB,QAAOA,IAGxB,QAAS+pL,KAA0C,GAApB9gP,GAAoB,0DAAR+6G,EAAQ,YAC9D,QAAQA,EAAO97H,MACX,IAAKumG,MACD,MAAOg6J,GAAgBx/O,EAAO+6G,EAClC,KAAK91B,MACD,MAAO,OACAjlF,GACHngB,KAAMk7H,EAAOl7H,KACbgsD,QAASkvE,EAAOlvE,QAChBO,aAAc2uE,EAAO3uE,cAE7B,KAAKi5C,MACD,MAAO,OACArlF,GACHvI,KAAMsjH,EAAOtjH,KACbX,MAAOikH,EAAOjkH,MACd00C,cAAeuvE,EAAOvvE,cACtBurB,QAAOA,GAEf,SACI,MAAO/2D,ICLJ,QAAS+gP,KASb,GATwB/gP,GASxB,wDARP3I,UAASA,EACT+6E,mBACAl7B,kBACAkS,iBACAD,mBACA/P,aACA4nM,qBAAiBA,GACjBxkM,kBACDu+D,EAAQ,YACP,QAAQA,EAAO97H,MACX,IAAK65D,MACD,MAAO,OAAK94C,GAAO2pC,UAASA,GAChC,KAAKqP,MACD,MAAO,OAAKh5C,GAAO8sD,UAAWiuD,EAAOhiE,UACzC,KAAKkhE,MACD,MAAO,OAAKj6G,GAAOopD,kBACvB,KAAKzS,MACD,MAAO,OACA32C,GACHysJ,kBAAiBA,EACjBl2G,YAAa,GACbC,gBAAYA,GACZyqM,gBAAiBjhP,EAAMu2C,YACvB2qM,gBAAiBlhP,EAAMw2C,aAE/B,KAAKkC,MACD,MAAO,OAAK14C,GAAOmpD,gBAAiBnpD,EAAMoyE,gBAAiBA,gBAAiB2oC,EAAOjtE,SACvF,KAAK8K,MACD,MAAO,OAAK54C,GAAOoyE,oBACvB,KAAK56B,MACD,MAAO,OAAKx3C,GAAO+2C,gBAAiBgkE,EAAOjkE,QAC/C,KAAKkB,MACD,MAAO,OAAKh4C,GAAO+2C,oBAAgBA,GAAYG,eAAgB6jE,EAAOjkE,OAAQjhD,aAAcklH,EAAOllH,cACvG,KAAK0iD,MACD,MAAO,OAAKv4C,GAAO+2C,oBAAgBA,GAAYG,kBAAoBrhD,iBAAaA,IACpF,KAAKkkH,MACD,MAAO,OAAK/5G,GAAOopD,cAAe2xD,EAAOjkE,QAC7C,KAAKL,MACD,MAAO,OAAKz2C,GAAOysJ,kBAAiBA,EAAOl2G,YAAawkE,EAAOxkE,YAAaC,YAAaukE,EAAOvkE,aACpG,KAAK2C,MACD,MAAO,OAAKn5C,GAAOo5C,UAAW2hE,EAAO3hE,WACzC,KAAKkE,MACD,MAAO,OAAKt9C,GAAO1I,QAASyjH,EAAOzjH,SACvC,KAAK+lD,MACD,MAAO,OACAr9C,GACH9J,QAAS6kH,EAAO7kH,QAChBpB,aAAcimH,EAAOjmH,aACrBE,OAAQ+lH,EAAO/lH,OACfE,UAAW6lH,EAAO7lH,UAClBE,QAAS2lH,EAAO3lH,QAChB6zE,OAAQ8xC,EAAO9xC,OACfhkD,IAAK81F,EAAO91F,IACZ5tB,SAAU0jH,EAAO1jH,SACjBI,KAAMsjH,EAAOtjH,KACburG,WAAY+X,EAAO/X,WACnBnsG,SAAUkkH,EAAOlkH,SACjBa,SAAUqjH,EAAOrjH,SACjBhB,aAAcqkH,EAAOrkH,aACrB4yC,UAAWyxE,EAAOzxE,UAClBoQ,KAAMqhE,EAAOrhE,KACb1pD,QAAS+qH,EAAO/qH,QAChBsG,QAASykH,EAAOzkH,QAChBE,mBAAoBukH,EAAOvkH,mBAC3BozL,kBAAmB7uE,EAAO6uE,kBAC1BC,kBAAmB9uE,EAAO8uE,mBAElC,KAAKtwI,MACD,MAAO,OAAKv5C,GAAOs5C,GAAIyhE,EAAOzhE,IAClC,KAAK/0D,MACD,MAAO,OAAKyb,GAAOspC,UAAWyxE,EAAOzxE,WACzC,KAAK9kD,MACD,MAAO,OAAKwb,GAAO05C,KAAMqhE,EAAOrhE,MACpC,KAAKgD,MACD,MAAO,OAAK18C,GAAOw8C,cAAeu+D,EAAOv+D,cAAeC,qBAAsBs+D,EAAOt+D,sBACzF,KAAKG,MACD,MAAO,OAAK58C,GAAOw8C,iBAAmBC,yBAAqBA,IAC/D,KAAKK,MACD,MAAO,OAAK98C,GAAOmhP,mBAAoBpmI,EAAOp6H,OAClD,KAAKq8D,MACD,MAAO,OACAh9C,GACHojL,YACIg4D,WAAUA,EACVvjP,GAAIkjH,EAAOvmE,QAAQ38C,GACnB0rL,UAAWxoE,EAAOvmE,QAAQ+uI,YAGtC,KAAKrmI,MACD,MAAO,OAAKl9C,GAAOojL,YAAcg4D,WAAUA,EAAQz6P,MAAOo6H,EAAOp6H,QACrE,KAAK48D,MACD,MAAO,OAAKv9C,GAAOohP,uBAAwBrmI,EAAOjkE,QACtD,KAAKsG,MACD,MAAO,OAAKp9C,GAAOojL,cAAgBg+D,2BAEvC,SACI,MAAOphP,Izf8vtEnB,QAASqhP,GAAsCtgQ,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,EAEjO,QAASugQ,GAAyCnyP,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,G0f71tEzM,QAASoyP,GAAY3xO,EAAWs0C,GAEnC,OAAqC,IAAjCt0C,EAAU3Y,QAAQitD,MAClB,SAAWt0C,OAGf,SAAWA,IAAWs0C,IAGnB,QAASs9L,GAAe5xO,EAAWs0C,GACtC,GAAMj3C,GAAQ2C,EAAU3Y,QAAQitD,EAChC,QAAe,IAAXj3C,KACA,SAAW2C,OAEf,SACOA,EAAUxgB,MAAM,EAAG6d,IAD1B,EAEO2C,EAAUxgB,MAAM6d,EAAQ,KAI5B,QAASw0O,KAAqC,GAApBzhP,GAAoB,0DAAR+6G,EAAQ,aAC7CnrG,EAAY5P,CAChB,IAAI+6G,EAAO72D,WAAa1hE,KAAUuH,IAAK,CAKnC,GAJArM,OAAO6I,KAAK7D,MAAc44C,QAAQ,SAAAomN,GAC9B9xO,EAAY4xO,EAAe5xO,EAAf,WAAqC8xO,KAG5B,QAArB3mI,EAAO92D,UAAqB,CAAC,GAAD,GACqB82D,EAAzCrxE,wBADoB,OACDiJ,EAAsBooE,EAAtBpoE,iBACvBjJ,GAAansD,QACbmsD,EAAapO,QAAQ,SAAAomN,GACjB9xO,EAAY2xO,EAAY3xO,EAAW8xO,KAGvC/uM,IACA/iC,EAAY2xO,EAAY3xO,EAAWltB,KAAa6H,eAGpD7M,QAAO6I,KAAK7D,MAAc44C,QAAQ,SAAAomN,GAC9B9xO,EAAY4xO,EAAe5xO,EAAW8xO,IAI9C,OAAO9xO,GAWX,MARAA,GAAY4xO,EAAe5xO,EAAf,WAAqCmrG,EAAO72D,UAGpDt0C,EADqB,QAArBmrG,EAAO92D,UACKs9L,EAAY3xO,EAAWmrG,EAAO72D,UAE9Bs9L,EAAe5xO,EAAWmrG,EAAO72D,UAM9C,QAASy9L,KAA+B,GAApB3hP,GAAoB,0DAAR+6G,EAAQ,YAC3C,QAAQA,EAAO97H,MACX,IAAK0kE,MACD,MAAO,OAAkB3jD,GACrBmQ,gBACImzD,cAAaA,EACb/2B,UAAWwuE,EAAOxuE,YAG9B,KAAKqX,MACD,MAAO,OAAkB5jD,GACrBmQ,gBACImzD,cAAaA,EACblzD,aAAc2qG,EAAO3qG,eAGjC,KAAKmzC,MACD,MAAO,OAAkBvjD,GACrBkR,cAAe6pG,EAAO7pG,eAE9B,KAAKuyC,MACD,MAAO,OAAkBzjD,GACrB+R,QAASgpG,EAAOhpG,SAExB,KAAKyxC,MAID,OAHKrjE,aAAIipB,OAAqB2xG,EAAO3oG,KACjCia,aAAIjjB,KAAkB2xG,EAAO3oG,IAAK,OAE/B,MAAkBpS,GACrBoS,IAAK2oG,EAAO3oG,KAEpB,KAAKsxC,MACD,MAAO,OACA1jD,GACHsS,aAAcyoG,EAAOzoG,cAE7B,SACI,MAAOtS,IAIZ,QAAS4hP,KAA8B,GAApB5hP,GAAoB,0DAAR+6G,EAAQ,YAC1C,QAAQA,EAAO97H,MACX,IAAK6kE,MACD,MAAO,OAAkB9jD,GACrBmQ,gBACImzD,cAAaA,EACb/2B,UAAWwuE,EAAOxuE,YAG9B,KAAKyX,MACD,MAAO,OAAkBhkD,GACrBmQ,gBACImzD,cAAaA,EACblzD,aAAc2qG,EAAO3qG,eAGjC,KAAKg0C,MACD,MAAO,OAAkBpkD,GACrBhS,KAAM+sH,EAAO/sH,MAErB,KAAKs2D,MACD,MAAO,OAAkBtkD,GACrBnJ,SAAUkkH,EAAOlkH,UAEzB,SACI,MAAOmJ,IAIZ,QAAS6hP,KAAqC,GAApB7hP,GAAoB,0DAAR+6G,EAAQ,YACjD,QAAQA,EAAO97H,MACX,IAAKmnE,MACD,MAAO,OAAkBpmD,GACrBmQ,gBACImzD,cAAaA,EACb/2B,UAAWwuE,EAAOxuE,YAG9B,KAAK+Z,MACD,MAAO,OAAkBtmD,GACrBmQ,gBACImzD,cAAaA,EACblzD,aAAc2qG,EAAO3qG,eAGjC,KAAKo2C,MACD,MAAO,OAAkBxmD,GACrB0Q,qBACIoxO,wBAAuBA,EACvBv1M,UAAWwuE,EAAOxuE,YAG9B,KAAK0b,MACD,MAAO,OAAkBjoD,GACrB0Q,qBACIoxO,wBAAuBA,EACvBvuO,KAAMwnG,EAAOxnG,KACbnD,aAAc2qG,EAAO3qG,cAEzBE,gBAAiByqG,EAAOzqG,iBAEhC,KAAK63C,MACD,MAAO,OAAkBnoD,GACrByP,eAAgB,MAAkBzP,EAAMyP,gBACpCsyO,gBAAeA,EACfx1M,UAAWwuE,EAAOxuE,aAG9B,KAAK8b,MACD,MAAO,OAAkBroD,GACrByP,eAAgB,MAAkBzP,EAAMyP,gBACpCsyO,gBAAeA,EACfxuO,KAAMwnG,EAAOxnG,KACbnD,aAAc2qG,EAAO3qG,eAEzBE,gBAAiByqG,EAAOzqG,iBAEhC,KAAKk4C,MACD,MAAO,OAAkBxoD,GACrBq7K,eACI2mE,aAAYA,EACZz5L,WAAYwyD,EAAOxyD,WACnBhc,UAAWwuE,EAAOxuE,YAG9B,KAAKmc,MACD,MAAO,OAAkB1oD,GACrBq7K,eACI2mE,aAAYA,EACZz5L,WAAYwyD,EAAOxyD,WACnBv2C,MAAO+oG,EAAO/oG,MACd5B,aAAc2qG,EAAO3qG,cAEzBI,aAAgBuqG,EAAO/oG,OAAU+oG,EAAO/oG,MAAMz0B,OAAS,GACtDw9H,EAAOxyD,YAAcwyD,EAAOxyD,WAAWhrE,OAAS,OAEzD,KAAKisE,MACD,MAAO,OAAkBxpD,GACrBhS,QACAsiB,iBAAgBA,GAExB,KAAK45C,MAID,MAHI6wD,GAAO/sH,MAAQ+sH,EAAO/sH,KAAKg4D,cAC3B35B,aAAIljB,KAAmB4xG,EAAO/sH,KAAKg4D,cAEhC,MAAkBhmD,GACrBhS,KAAM+sH,EAAO/sH,MAErB,KAAKo8D,MACD,GAAM63L,KAIN,OAH0B,gBAAflnI,GAAO/5H,MACdihQ,EAAYlnI,EAAO/5H,KAAO+5H,EAAO95H,OAE9B,MAAkB+e,GACrBiQ,SAAU,MAAkBjQ,EAAMiQ,SAAxB,KACL8qG,EAAO/5H,IAAM+5H,EAAO95H,SAIjC,KAAKylE,MACD,MAAO,OACA1mD,GACHwS,uBAAwBuoG,EAAO94E,WAGvC,KAAK0mB,MACD,MAAO,OACA3oD,GACHrf,MAAOo6H,EAAOp6H,OAGtB,SACI,MAAOqf,IAIJ,QAASkiP,KAAwE,GAAlDliP,GAAkD,wDAAxC4P,UAAW5F,MAAqB+wG,EAAQ,YAC5F,QAAQA,EAAO97H,MACX,IAAK0kE,MACL,IAAKC,MACL,IAAKH,MACL,IAAKD,MACL,IAAKE,MACL,IAAKH,MACD,MAAO,OAAkBvjD,GACrBgR,IAAK2wO,EAAW3hP,EAAMgR,IAAK+pG,IAEnC,KAAKj3D,MACL,IAAKQ,MACL,IAAKF,MACD,MAAO,OAAkBpkD,GACrB4Q,GAAIgxO,EAAU5hP,EAAM4Q,GAAImqG,IAEhC,KAAK/2D,MACD,MAAO,OAAkBhkD,GACrB4Q,GAAIgxO,EAAU5hP,EAAM4Q,GAAImqG,GACxBnrG,UAAW6xO,EAAiBzhP,EAAM4P,UAAWmrG,IAErD,KAAK30D,MACL,IAAKE,MACL,IAAKE,MACL,IAAK2B,MACL,IAAKK,MACL,IAAKE,MACL,IAAKwB,MACL,IAAKE,MACL,IAAK1D,MACL,IAAKiC,MACD,MAAO,OAAkB3oD,GACrB8P,UAAW+xO,EAAiB7hP,EAAM8P,UAAWirG,IAErD,KAAK9yD,MACL,IAAKI,MACL,IAAKmB,MACD,MAAO,OAAkBxpD,GACrB8P,UAAW+xO,EAAiB7hP,EAAM8P,UAAWirG,GAC7CnrG,UAAW6xO,EAAiBzhP,EAAM4P,UAAWmrG,IAErD,KAAKnwC,MACL,IAAKY,MACD,MAAO,OACAxrE,GACHkS,YAAa6oG,EAAO7oG,YACpBwgC,eAAgBqoE,EAAOroE,eACvB9iC,UAAW6xO,EAAiBzhP,EAAM4P,UAAWmrG,IAErD,SACI,MAAO/6G,IC5TJ,QAASmiP,KAA+B,GAApBniP,GAAoB,0DAAR+6G,EAAQ,YACnD,QAAQA,EAAO97H,MACX,IAAK64L,MACD,MAAO,OAAkB93K,EAAO+6G,EAAOpnD,IAC3C,SACI,MAAO3zD,ICLJ,QAASoiP,MAAoC,GAApBpiP,GAAoB,0DAAR+6G,EAAQ,YACxD,QAAQA,EAAO97H,MACX,IAAKihQ,MACD,MAAO,OACAlgP,GACHqiC,KAAM04E,EAAO7zD,SACb92C,aAAc2qG,EAAO3qG,cAE7B,SACI,MAAOpQ,ICXJ,QAASqiP,MACpB,MADqD,sECS1C,QAASC,MAAiC,GAApBtiP,GAAoB,0DAAR+6G,EAAQ,YACrD,QAAQA,EAAO97H,MACX,IAAKorF,MACD,MAAO,OACArqE,GACHiyC,KAAM8oE,EAAO9oE,KACbxI,WAAYsxE,EAAOzqG,iBAE3B,KAAKq6D,MACD,MAAO,OACA3qE,GACHqiC,KAAM04E,EAAO14E,KACbjyB,aAAc2qG,EAAO3qG,cAE7B,KAAKo7D,MACD,MAAO,OACAxrE,GACHqiC,QACAjyB,iBAAaA,IAErB,KAAKq6D,MACD,MAAO,OACAzqE,GACHuiP,YAAaxnI,EAAOxsG,QAE5B,KAAK+9D,MACL,IAAK1B,MACD,MAAO,OACA5qE,GACHuiP,gBAAYA,IAEpB,SACI,MAAOviP,IC7BJ,QAASwiP,MAAoD,GAA9BxiP,GAA8B,uDAAtByiP,GAAc1nI,EAAQ,YACxE,QAAQA,EAAO97H,MACX,IAAK8lE,MACD,MAAO,OAAK/kD,GAAO0iP,aAAc3nI,EAAOxuE,WAC5C,KAAKsY,MACD,MAAO,OACA7kD,GACH4kD,UAAWm2D,EAAOn2D,UAClB+9L,gBAAiB5nI,EAAO3qG,cAEhC,KAAK04C,MACD,MAAO,OAAK9oD,GAAOi4E,SAAQA,GAC/B,KAAK/uB,MACD,MAAO,OAAKlpD,GAAOi4E,SAAQA,GAC/B,SACI,MAAOj4E,ICzBJ,QAAS4iP,MAAqC,GAApB5iP,GAAoB,0DAAR+6G,EAAQ,YACzD,QAAQA,EAAO97H,MACX,IAAK4jQ,IACD,MAAO,OACA7iP,GACHw0C,QAASumE,EAAOvmE,SAExB,SACI,MAAO,OAAKx0C,IhgBw5uExB,QAAS8iP,IAAyB3zP,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GigB55uEhM,QAAS4zP,MAA2E,GAA5D9xC,GAA4D,wDAA3Ct8M,QAAWw2F,EAAgC,aAAvB63J,EAAuB,0DAC1E98E,GAAc+8E,KAAiBj3J,4BAAiBb,IAAU/8E,OAAO40O,EAwBvE,OAjBcl9E,cAAYo9E,GAAajyC,EAAcxrC,aACjDG,KAAeA,gBAAIM,IAEG,YAAlB,mBAAOjpL,QAAP,eAAOA,mBACAA,OAAOkmQ,mBACdlyC,EAAat8M,IAAIswB,MAAQ3jC,KAAQ0C,KACjC/G,OAAOkmQ,oBAAsB,SAAA58O,GAAA,MAAQA,MjgB2kvEjD,QAAS04C,IAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,IAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,IAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA4Ije,QAAS0oP,IAA6BlkM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAE7H,QAAS4pO,IAAwC5mP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAE/O,QAASumQ,IAAuB7oP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA+L9e,QAAS6oP,IAAiCrkM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEjI,QAAS+pO,IAA4C/mP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAEnP,QAAS0mQ,IAA2BhpP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA0iBlf,QAASgpP,IAA6BnuO,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WAEpc,QAASw4M,IAA2BzkM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAE3H,QAASmqO,IAAsCnnP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAE7O,QAAS8mQ,IAAqBppP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA4T5e,QAASopP,IAAyB5kM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEzH,QAASsqO,IAAoCtnP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAE3O,QAASinQ,IAAmBvpP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA2U1e,QAASupP,IAAyBljQ,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,EAEpN,QAASmjQ,IAAyBhlM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEzH,QAAS0qO,IAAoC1nP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAE3O,QAASqnQ,IAAmB3pP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GkgBvnyE3d,QAAS2pP,MACpBpnQ,OAAO6rG,KAAK,uDAAwD,WAAY,iDlgB0hzEpF,QAASw7J,IAA0BvjQ,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOrD,OAAOsC,eAAee,EAAKC,GAAOC,MAAOA,EAAOf,YAAWA,EAAOD,cAAaA,EAAOiB,UAASA,IAAmBH,EAAIC,GAAOC,EAAgBF,EAErN,QAASwjQ,IAA4BhvO,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIzP,SAAQ,SAAUC,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO5xC,SAAQC,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAAtI/B,GAAQuC,GAA4I,MAAOkqD,GAAK,WAEnc,QAASq5M,IAA0BtlM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAE1H,QAASgrO,IAAqChoP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAE5O,QAAS2nQ,IAAoBjqP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAgb3e,QAASiqP,IAAgCzlM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhI,QAASmrO,IAA2CnoP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElP,QAAS8nQ,IAA0BpqP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA4Jjf,QAASoqP,IAAyB5lM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEzH,QAASsrO,IAAoCtoP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAE3O,QAASioQ,IAAmBvqP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAsJ1e,QAASuqP,IAA0B/lM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAE1H,QAASyrO,IAAqCzoP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAE5O,QAASooQ,IAAoB1qP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA2K3e,QAAS2lF,IAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GA6GnN,QAASuoP,IAAqClmM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAErI,QAAS4rO,IAAgD5oP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAEvP,QAASuoQ,IAA+B7qP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAuVtf,QAAS6qP,IAA2BrmM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAE3H,QAAS+rO,IAAsC/oP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAE7O,QAAS0oQ,IAAqBhrP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GmgB131E7d,QAASgrP,MAAgC,GAAdpuP,GAAc,4DACtBA,EAAtBqwC,oBAD4C,EACjC,OADiC,EAG9Cg+M,EAAc,SAAC,GAA2C,GAAzC5vP,GAAyC,EAAzCA,OAAQ6vP,EAAiC,EAAjCA,eAAgBn8M,EAAiB,EAAjBA,WACrC65C,GAAa75C,GAAcm8M,EAE3BC,EAAW9vP,GAAU,GAACy7F,GAAA,KAAa,eAAmB,GAAC,MAAc,cAC3E,WACKnO,GAAA,GADL,UAC6B,aAD7B,IAC+CwiK,EAD/C,UACoEviK,UADpE,GAESs+D,GAAA,MAFT,oBAGuB,yCAHvB,wBAI+B,gBAJ/B,GAKiB/kC,GAAA,GALjB,SAK+C96H,KAAS6E,UAO5D++P,GAAYG,aACR,SAACv3O,EAAQzX,EAAOW,GAAhB,MAAyB23C,cAAsBzH,EAAUp5B,EAAQzX,EAAOW,IACxE,SAAC8W,EAAQzX,EAAOW,GAAhB,MAAyB27C,cAAoB37C,KAGjDkuP,EAAYI,gBAAkB,GAE9BJ,EAAYK,UAAY,YAA+D,GAA5D5kP,GAA4D,EAA5DA,SAAUu4I,EAAkD,EAAlDA,YAAaliJ,EAAqC,EAArCA,KAAqC,IAA/BZ,SAAYC,iBAAmB,MACnFsK,GAASguC,aAAsBzH,EAAUgyG,EAAa7iJ,EAAOW,IACxDs2B,KAAK,WACF3sB,EAAS6kP,0BAEjB7kP,EAASgyC,aAAoB37C,IACxBs2B,KAAK,WACF3sB,EAASqkF,kBAUrB,IAAMjiF,GAAkB,SAACxD,GAAD,OACpBjK,OAAQR,aAAeyK,GACvB4lP,eAAgB3rP,aAAuB+F,GACvCypC,WAAYD,aAAsBxpC,IAGtC,OAAO+pF,cAAQvmF,GAAiBmiP,GCtCpC,QAASxhK,MACL,OAAS,GACJ,GAAAmV,OADG,KACQ,IADR,UACuB4sJ,WADvB,GAEC,GAAA5sJ,OAFD,UAEkB6sJ,IAAgB,UAFlC,GAGK,GAAA7sJ,OAHL,KAGgB,WAHhB,UAGsC8sJ,KAHtC,GAIK,GAAA9sJ,OAJL,KAIgB,YAJhB,UAIuC8sJ,KAJvC,GAKK,GAAA9sJ,OALL,KAKgB,WALhB,UAKsC+sJ,KALtC,GAMK,GAAA/sJ,OANL,KAMgB,YANhB,UAMuCgtJ,KANvC,GAOK,GAAAhtJ,OAPL,KAOgB,cAPhB,UAOyCitJ,KAPzC,GAQK,GAAAjtJ,OARL,KAQgB,oBARhB,UAQ+CktJ,OAR/C,GASK,GAAAltJ,OATL,KASgB,4BAThB,UASuDmtJ,OATvD,GAUK,GAAAntJ,OAVL,KAUgB,oBAVhB,UAU+CotJ,KAV/C,GAWK,GAAAptJ,OAXL,KAWgB,aAXhB,UAWwCqtJ,OAXxC,GAYK,GAAArtJ,OAZL,KAYgB,mBAZhB,UAY8CstJ,QAZ9C,GAcC,GAAAttJ,OAdD,UAckButJ,MAAe,UAdjC,GAeK,GAAArtJ,YAfL,UAe2BksJ,IAAoB/9M,SAAU,WAfzD,GAgBK,GAAA2xD,OAhBL,KAgBgB,MAhBhB,UAgBiCosJ,IAAoB/9M,SAAU,WAhB/D,GAiBK,GAAA2xD,OAjBL,KAiBgB,uCAjBhB,UAiBkEwtJ,iBAjBlE,GAkBK,GAAAxtJ,OAlBL,KAkBgB,YAlBhB,UAkBuCytJ,KAlBvC,GAmBK,GAAAztJ,OAnBL,KAmBgB,WAnBhB,UAmBsCosJ,IAAoB/9M,SAAU,eAnBpE,GAoBK,GAAA2xD,OApBL,KAoBgB,mCApBhB,UAoB8DwtJ,cAAmBn/M,SAAU,cApB3F,GAqBK,GAAA2xD,OArBL,KAqBgB,mCArBhB,UAqB8DwtJ,cAAmBn/M,SAAU,cArB3F,GAsBK,GAAA2xD,OAtBL,KAsBgB,WAtBhB,UAsBsC0tJ,KAtBtC,GAuBK,GAAA1tJ,OAvBL,KAuBgB,SAvBhB,UAuBoC2tJ,KAvBpC,GAwBK,GAAA3tJ,OAxBL,KAwBgB,gBAxBhB,UAwB2C4tJ,KAxB3C,GAyBK,GAAA5tJ,OAzBL,KAyBgB,uBAzBhB,UAyBkD6tJ,KAzBlD,GA0BK,GAAA7tJ,OA1BL,KA0BgB,cA1BhB,UA0ByC8tJ,KA1BzC,GA2BK,GAAA9tJ,OA3BL,KA2BgB,wBA3BhB,UA2BmD+tJ,KA3BnD,GA4BK,GAAA/tJ,OA5BL,KA4BgB,YA5BhB,UA4BuCguJ,QpgB8q2EnD,QAASC,IAAuCroM,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEvI,QAAS+tO,IAAkD/qP,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAEzP,QAAS0qQ,IAAiChtP,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GqgB5r2Exf,QAASgtP,MAAwC,GAAZtsP,GAAY,yDAC7C,QACIusP,oBAAqB,SAAC7sO,EAAO8sO,GAAR,MACjB,oBAAC,GAAD,IAAwBA,YAAaA,GAAiBxsP,GAAS0f,KAK3E,QAAS+sO,MACL,GAAMC,GAAuBnvJ,iCACzBovJ,OACAL,IACItmP,eAGF8iF,EAASC,KACT6jK,EAAelpQ,SAASg9D,eAAexnD,KAAO6gH,KAC9Cn1G,EAAQxE,GAAM2C,WACL1G,EAAWuI,EAAlBrL,IAAO8C,KACTwwP,EAAMlxP,aAAYiJ,GAClBkoP,EAAqB/qK,aAA2Bn9E,EAElDypG,KAAcA,GAAWhyG,IACzB+xG,aAAcC,GAAWhyG,IAG7B8c,aAAK2zO,GAEDF,GACApsP,kBAAOA,GACF,MADL,MACqBJ,WADrB,GAESk3G,GAAA,YAFT,GAGa,GAAA9Y,QAHb,QAIyBzO,GAJzBvvF,OAKwBksP,EALxB,KAMsBrwP,EANtB,IAOqBwwP,UAEH/jK,KAId8jK,EACA,WACI5mP,GAASy3C,kBrgB+4qEzBn7D,OAAOsC,eAAea,EAAqB,cAAgBI,OAAMA,GAGjE,IAAI+3B,IAAWx8B,EAAoB,IAC/BgqH,GAAgChqH,EAAoB4D,EAAE44B,GsgBz+qE1Dv6B,MAAQ6V,QACJqtB,UAASA,IAGR1kC,OAAOwB,UACRxB,OAAOwB,QAAUA,KtgBi/qErB,IAwCI0pQ,IAxCAhiP,GAAQ3pB,EAAoB,GAC5BmpG,GAA6BnpG,EAAoB4D,EAAE+lB,IAGnDiiP,GAAY5rQ,EAAoB,IAIhCwqB,GAAKxqB,EAAoB,GAGzB6T,GAAM7T,EAAoB,IAI1B6rQ,GAA0B7rQ,EAAoB,KAC9C8rQ,GAA+C9rQ,EAAoB4D,EAAEioQ,IAGrE5kL,GAAWjnF,EAAoB,IAG/B4X,GAAkB5X,EAAoB,IAGtC+rQ,GAAyB/rQ,EAAoB,IAI7CgsQ,GAA8BhsQ,EAAoB,KAClDisQ,GAAmDjsQ,EAAoB4D,EAAEooQ,IugBphrE9D52K,MAAf,EvgB2hrEIthF,GAAQ9T,EAAoB,G8e3hrEnBijH,GAAiBr+G,KAAtB2C,IAEKq2P,GAAe,OAEtB1zI,eACDjH,GAAax7G,SACV2U,QAAS,uCAFX,KAID6mG,GAAaz7G,MACV4U,QAAS,+BALX,IASOmhP,IACTE,OAAQ,aACR9hM,GAAI,WAGKkiM,IACT/lP,OAAQ,UACR4lP,aAAc,WACdwO,WAAY,cACZ78L,aAAc,iB9eqnrEdulJ,GAAqB50N,EAAoB,KAGzCspG,GAAatpG,EAAoB,IAGjC+xE,GAAQ/xE,EAAoB,IwgBnprE1B6gQ,IACFsL,UAAW,aACXC,QAAS,WACTC,KAAM,WACNC,OAAQ,UACRC,KAAM,OACNC,IAAK,MACLC,IAAK,MACLC,KAAM,OACNC,QAAS,YAQA3L,GAAiC,uDACjCC,GAAmC,oDAEjCJ,MClBA,YAAC+L,EAAYvoJ,GACxB,GAAM53B,GAASo0K,GAAWx8I,IAAe,QACzC,OAAmB,cAAfuoJ,EACA,QAAengL,EAAf,gBAEJ,QAAeA,EAAf,4CCHW,iBAACtgE,GAAD,uDAAQ,EAAR,OAAe,WAAWwY,KAAKxY,IAAyB,IAAhBA,EAAKprB,QCA7C,iBAACorB,GAAD,uDAAQ,EAAR,OAAe,eAAewY,KAAKxY,IAAyB,IAAhBA,EAAKprB,Q3gBssrE5DsgQ,GAA0BrhQ,EAAoB,K4gBnsrEnC,iBAACwa,GAAD,uDAAQ,EAAR,OAAgC,gBAATA,IAAmD,cAA9BA,EAAK8nF,OAAOltE,e5gBivrEnE8yF,GAAeloH,EAAoB,IAGnCmoH,GAAenoH,EAAoB,IgfxsrEhC,cAAP,GAAAuB,GAAA,0BAAO,WAA0Ci9P,EAAgBC,EAAaE,GAAvE,6FACGhsM,GAAS6rM,EADZ,qBAEGxmM,GACF,MAAS2mM,EACT,OAAU,wBACV,SACI,WAAU,GAEd,YACI,UAAW,KAThB,kBAYIvpK,KAAQmgG,KAAK5iI,GACf0gE,KAAKr7D,GACLnoB,IAAI,gBAFF,UAE6B4uN,GAC/B5uN,IAAI,eAAgB,oBACpBA,IAAI,SAAU,oBACd4yE,IAAIl8F,MACJgrB,KAAK,SAAAs1F,GAAO,MAC8BA,MAD9B,IACD7nE,IADC,sBACM76D,GADN,EACMA,KACf,OAAe,OAFN,EACmBkoD,QAGV,OAAVloD,GACQy6P,WAAUA,EAAO36P,IAAK,OAIlC26P,WAAUA,EACV36P,IAAIA,gBAAiB4iI,EAAIx6E,OAAzB,YAA2CloD,KAGlD2rE,MAAM,SAAC7rE,GACJ,OACI,aACAA,IAAK,gDAlCd,8CAAP,8BAAA1C,GAAA,0Bhf4zrEI4e,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,Iifv1rE1O0hP,GAAa,aACbtC,GAAkB,kBAClBN,GAAe,eACfzlE,GAAgB,gBAChB6lE,GAAgB,gBAChBI,GAAe,eACfE,GAAkB,kBAClBE,GAAiC,iC4BvB/B,YAAC/gP,GAAD,MAAW,UAAC4B,GAAD,MAAU,UAAC29G,GACjC,GAAM/6G,GAAQxE,EAAM2C,WADwB,EAEQ6B,EAA5CkrD,cAFoC,2BAElBtG,qBAFkB,SAOxCxwD,aAAgB4L,GAPwB,IAIxCpI,0BACId,MAASmyE,EAL2B,EAK3BA,OAAQ43B,EALmB,EAKnBA,WAIjB5hH,EAAqB87H,EAArB97H,KAAM48P,EAAe9gI,EAAf8gI,WACRwN,EAAiBpgL,GAAU43B,EAC3ByoJ,EAAmB1kM,EAAUxzC,OAAO,SAAAjC,GAAA,MAAYA,GAAS62C,eAAiB61L,IAAYh+P,OAM5F,OAJIoB,KAASi3L,IAAiBj3L,IAAS88P,IACnC5yK,aAAyBkgL,EAAgBC,GAGtClsP,EAAK29G,M7gBmusEZ43G,GAAWn2O,EAAoB,IAG/B8X,GAAS9X,EAAoB,IAC7B+X,GAA8B/X,EAAoB4D,EAAEkU,IAGpDi1P,GAAW/sQ,EAAoB,KAG/BgtQ,GAAWhtQ,EAAoB,KAG/BitQ,GAAkBjtQ,EAAoB,KACtCktQ,GAAuCltQ,EAAoB4D,EAAEqpQ,IAG7DE,GAAmBjsQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IkflwsElPo0M,IACT38M,UACA6lP,WACAtuL,gBACA2yL,aAAc,GACdC,aAAc,GACdE,gBlfk0sEAiL,GAAeptQ,EAAoB,IAGnCqtQ,GAAmBrtQ,EAAoB,IAGvCstQ,GAActtQ,EAAoB,IAGlCutQ,GAAoBrsQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAwC5PmtP,GAAyBtsQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAoLjQotP,GAAiBztQ,EAAoB,IAGrC0tQ,GAA2BxsQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAwDnQ6jF,GAAMlkG,EAAoB,IAG1BkY,GAAclY,EAAoB,GAGlC2tJ,GAAoB3tJ,EAAoB,KsfrntE/BwjQ,GAAqB,qBACrBE,GAAwB,wBtf0ptEjClqI,GAAex5H,EAAoB,IAGnC2tQ,GAA6BzsQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IufvptEnQ2iO,GAAQ,GAAI/zL,MvfgttEd2+M,GAAyB5tQ,EAAoB,IAG7C6tQ,GAAmC3sQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAqC3QytP,GAAsB5sQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IA2G9P0tP,GAAgB/tQ,EAAoB,GAGpCo2B,GAAep2B,EAAoB,IAGnCglK,GAAwBhlK,EAAoB,IAG5CguQ,GAAehuQ,EAAoB,IAGnCiuQ,GAAiC/sQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAwTzQ6tP,GAAaluQ,EAAoB,KAGjCmuQ,GAAsBjtQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAgB9P+tP,GAAiBpuQ,EAAoB,KAGrCquQ,GAA2BntQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IA0BnQiuP,GAAwBptQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAsChQkuP,GAAiCrtQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,I+fjwuEhQ4lP,IACT79L,aACAqzB,SAAQA,G/f6xuERiY,GAAW1zG,EAAoB,IAC/B+nH,GAAgC/nH,EAAoB4D,EAAE8vG,I8gBryuE7C2yJ,I9gBwyuEUrmQ,EAAoB,KAGvBA,EAAoB,I+gBtyuE5B0zG,KAASP,UAAU,oBAIG5mF,iBDTK,2B9gBs2uEnCiiP,GAAgCttQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IghBt1uEtQqmP,GAAcv+E,cAChBua,MACAvqL,MACA8a,iBACAkkD,MACA0uL,cACA9zL,SACA/mB,OACAjtC,SACA2wD,kBACA+G,yBACA58C,WACA8vE,iBACAj+B,YACA+jM,aACArI,sBAGWM,MhhB43uEXpxL,GAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,QAAUtkD,IAAQskD,OAAO1nD,UAAY,eAAkBoD,IigB93uEvPgiQ,MjgBq6uEXvxJ,GAAWh1G,EAAoB,IAG/BqgI,GAAsBrgI,EAAoB,IAG1C6mG,GAAgB7mG,EAAoB,IAGpColK,GAAqBplK,EAAoB,KAGzCqmG,GAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UihB18uEn4BkkK,GAAW,WACb,GAAMzB,IAAY,GAACr0J,GAAA,KAAa,aAChC,WACKnO,GAAA,GADL,UAC6B,aAD7B,IAC+CwiK,UAD/C,GAESjkG,GAAA,MAFT,oBAGuB,yCAHvB,wBAI+B,gBAJ/B,GAKiB/kC,GAAA,GALjB,SAK+C96H,KAAS8E,UAAc,4BAO1EygQ,IAASxB,aACL,SAACv3O,EAAQzX,EAAOW,GAAhB,MAAyB23C,cAAsB7gC,EAAOo5B,SAAUp5B,EAAQzX,EAAOW,IAC/E,SAAC8W,EAAQzX,EAAOW,GAAhB,MAAyB27C,cAAoB37C,IAGlC6vP,WjhBw9uEX3rI,GAAqBn/H,EAAoB,IAGzC0+O,GAAyB1+O,EAAoB,KAG7C2kK,GAAkB3kK,EAAoB,KAGtC0uQ,GAAc,WAAc,GAAIpoK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UkhBl/uE14ByiK,IAAY,GAACr0J,GAAA,KAAa,cAE1B21J,GAAS,SAAC,GAAD,QAAG54O,OAAUq4D,sBAAb,EAA0B,GAA1B,EAAgC7c,EAAhC,EAAgCA,oBAAhC,WACVs5B,GAAA,GADU,IACSwiK,WADT,wBAEY,sBAFZ,GAGF1kG,GAAA,GAHE,qBAGoCp3F,EAHpC,SAGoEhoE,KAAS+E,OAH7E,sCAKY,qCALZ,GAMFo0O,GAAA,GANE,WAMiCt0J,MAKhDugL,IAAOrB,aACH,SAACv3O,EAAQzX,GAAT,MAAmBo6C,cAAc,SAAU,QAAUp6C,IACrD,iBAAMw8C,cAAY,SAAU,cAQhC,IAAM9vC,IAAkB,SAACxD,GAAD,OACpB+pD,qBAAsBC,aAA6BhqD,KAGxC+pF,gBAAQvmF,IAAiB2jP,IlhBugvEpCgE,GAAW,WAAc,GAAIroK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UmhBpivEv4BgkK,GAAM,SAAC,GAAD,QAAG74O,OAAU6yF,gBAAb,EAAoB,GAApB,EAA0BpsG,EAA1B,EAA0BA,MAA1B,WACPquF,GAAA,YADO,wBAEe,sBAFf,GAGC89D,GAAA,GAHD,OAGyBnsJ,EAHzB,SAG2CjT,KAASiF,IAHpD,oDAKe,qCALf,GAMCk0O,GAAA,GAND,WAMoC95H,EANpC,SAMoDr/G,KAASiF,QAKzEogQ,IAAItB,aACA,iBAAMp5M,iBACN,iBAAM4G,cAAY,MAAO,WAQ7B,IAAM9vC,IAAkB,SAACxD,GAAD,OACpBhL,OAAQD,aAAeiL,KAGZ+pF,gBAAQvmF,IAAiB4jP,InhBujvEpCgE,GAA0B5uQ,EAAoB,KAC9C6uQ,GAA+C7uQ,EAAoB4D,EAAEgrQ,IAGrEhrM,GAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MAiF5hB5X,GAAe/qD,EAAoB,IAGnCypG,GAA0BzpG,EAAoB,IAG9C+4O,GAAO/4O,EAAoB,KAG3BujK,GAAcvjK,EAAoB,KAGlC8uQ,GAAe,WAAc,GAAIxoK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UohBprvE34BmoK,GAAU,SAAC,GAA4D,GAA1DtzB,GAA0D,EAA1DA,OAAQ9pL,EAAkD,EAAlDA,SAAUN,EAAwC,EAAxCA,SAAUhuD,EAA8B,EAA9BA,KAAM2rQ,EAAwB,EAAxBA,QAAS7nB,EAAe,EAAfA,SACpD7yO,EAAK06P,EAAUA,GAChBzrG,GAAA,GADM,SACmC,KADnC,uBACU,gBACjB,KACE0rG,EAAQ59M,EAAStgC,IAAI,SAACugC,GAAD,UACtBynL,GAAA,GADsB,QAEVznL,EAFU,SAGTK,EAHS,UANP,6BAWoBtuD,EALb,WAMPA,GANO,UAIJ8jP,EAJI,IAIQ71L,EAAQj2C,GAJhB,IAIsBi2C,EAAQjuD,OAQzD,OAHIiR,IACA26P,EAAM7tP,OAAO,EAAG,EAAG9M,GAEvB,iCACgCmnO,EAAS,SAAW,YADpD,oBAEuB,uCAFvB,oBAG2B,yBACVwzB,KAgBrBF,IAAQvoK,cACJi1I,QAAOA,EACPpqL,YACAhuD,KAAM,UACN2rQ,SAAQA,EAGGD,WphB0rvEXG,GAAoB,WAAc,GAAI5oK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEl5BuoK,GAA4B,WAAc,QAAStrM,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MqhBtuvEviBysM,G,YACF,WAAYxwP,GAAO,2EACTA,GADS,OAEf,GAAK4E,OAAU6rP,UAAW,GAC1B,EAAKC,YAAc,EAAKA,YAAYzrP,KAAjB,GACnB,EAAK0rP,oBAAsB,EAAKA,oBAAoB1rP,KAAzB,GAJZ,ErhBo1vEnB,MA/FAijP,IAAuBsI,EAAczwP,GAarCwwP,GAA0BC,IACtB5qQ,IAAK,qBACLC,MAAO,WqhB5vvEPsa,KAAKwwP,oBAAoBxwP,KAAKH,MAAMywC,YrhBgwvEpC7qD,IAAK,4BACLC,MAAO,SqhB9vvEeid,GAClB3C,KAAKH,MAAMywC,UAAY3tC,EAAU2tC,SACjCtwC,KAAKwwP,oBAAoB7tP,EAAU2tC,YrhBkwvEvC7qD,IAAK,cACLC,MAAO,SqhB/vvEC0iP,GACRpoO,KAAKmG,UAAWmqP,UAAWloB,OrhBkwvE3B3iP,IAAK,sBACLC,MAAO,WqhBhwvEuB,GAAd4qD,GAAc,0DACxB5+B,EAAQ4+B,EAAQt+B,IAAI,SAACogC,GAAD,MAAYA,GAAOgD,aAAY15C,SAAQA,EAC7DgW,GAAQ,GACR1R,KAAKmG,UAAWmqP,UAAW5+O,OrhBwwvE/BjsB,IAAK,qBACLC,MAAO,WqhBrwvEU,GACT2uB,GAAcrU,KAAKH,MAAnBwU,SACR,OAAQrgB,OAAM+c,QAAQsD,KAA6C,IAA/BA,EAAU3Y,QAAQ,WrhBywvEtDjW,IAAK,SACLC,MAAO,WqhBvwvEF,WACC+qQ,KACAC,KACAT,EAAWjwP,KAAKH,MAAMrF,QAAUwF,KAAK2wP,oBA8B3C,OA5BA3wP,MAAKH,MAAMywC,QAAQz6B,OAAO,SAACu8B,GAAD,MAA4B,SAAhBA,EAAO1uD,OAAiBq8C,QAAQ,SAACqS,EAAQg2L,GAC3E,GAAM1L,GAAU,EAAKj4N,MAAM6rP,YAAcloB,EACnCwoB,EAAaA,SAAb,QAGW,iBAAM,GAAKL,YAAYnoB,IAHlC,UAIa1L,EAAS,SAAW,IAJjC,cAEqBtqL,EAAO91C,GAF5B,oBAMS81C,EAAO9tD,MAItBmsQ,GAAYvuQ,KAAK0uQ,GACbl0B,GACAg0B,EAASxuQ,KAAT,GACK,IADL,OAEgBw6O,EAFhB,KAGctqL,EAAO9tD,KAHrB,SAIkB8tD,EAAO91C,GAJzB,SAKkB81C,EAAOE,SALzB,SAOkB81L,EAPlB,QAQiB6nB,GARjB,WAMwB79M,EAAO91C,OAQvC,oBACmB,4BADnB,oBAEuB,mBAFvB,mBAG0B,WAH1B,gBAGmD,yBAClCm0P,IAJjB,oBAOuB,sBACVC,QrhB0wvEVL,GqhBr1vEgB3vP,aAwF3B2vP,IAAa5oK,cACTn3C,WACAj8B,aAGJ,IAAMpM,IAAkB,SAACxD,GACrB,GAAMwnC,GAAOD,aAAavnC,OADK,EAEJwP,aAAuBxP,GAFnB,IAEvB4P,qBAFuB,MAG/B,QACIi8B,QAASrE,EAAKqE,QACd91C,OAAQR,aAAeyK,GACvB4P,cAIOm6E,gBAAQvmF,IAAiBooP,IrhBswvEpCQ,GAAc,WAAc,GAAItpK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UshBj3vE14BipK,GAAS,sCACI,sCADJ,wBAEY,8BAFZ,iBAGS,WAHT,GAGuB,mBAHvB,KAG+C,WAH/C,oBAIY,mBAJZ,UAIyC,qDAJzC,GAKF,UAKEA,MthBg4vEXjmK,IAHY5pG,EAAoB,IAGdA,EAAoB,MAGtCspD,GAAUtpD,EAAoB,IAG9B8jK,GAAe9jK,EAAoB,IAGnC26D,GAAyB36D,EAAoB,IAG7CwpG,GAAwBxpG,EAAoB,KAG5CqhP,GAAoBrhP,EAAoB,KAGxCikK,GAAuBjkK,EAAoB,KAG3CgkK,GAAgBhkK,EAAoB,KAGpCyzO,GAAgBzzO,EAAoB,KAGpCoS,GAAOpS,EAAoB,KAG3B+iE,GAAa/iE,EAAoB,IAGjC8vQ,GAAwB,WAAc,GAAIxpK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEt5BmpK,GAAgC,WAAc,QAASlsM,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MuhBn6vE3iBqtM,G,YACF,WAAYpxP,GAAO,2EACTA,GADS,OAEf,GAAK4E,OACDqwN,cAAaA,GAEjB,EAAK4C,QAAU,EAAKA,QAAQ5yN,KAAb,GACf,EAAK4wN,WAAa,EAAKA,WAAW5wN,KAAhB,GANH,EvhBogwEnB,MA1EAojP,IAA2B+I,EAAkBrxP,GAe7CoxP,GAA8BC,IAC1BxrQ,IAAK,qBACLC,MAAO,WuhBj8vEHsa,KAAKkxP,oBACLlxP,KAAKmG,UAAW2uN,cAAaA,OvhBs8vEjCrvO,IAAK,UACLC,MAAO,WuhBl8vEPsa,KAAKmG,UAAW2uN,cAAaA,OvhBs8vE7BrvO,IAAK,aACLC,MAAO,WuhBp8vEE,MACkFsa,KAAKH,MAAxF6tF,EADC,EACDA,aAAc/xC,EADb,EACaA,eAAgBkS,EAD7B,EAC6BA,cAAe1xD,EAD5C,EAC4CA,SAAkBsuC,EAD9D,EACsDyB,KAAQzB,cACjE8Q,EAASsS,GAAiBlS,CAChC,IAAI37C,KAAKyE,MAAMqwN,aAAc,CACzB,GAAM+C,GAAYttL,aAAQgR,GAC6D,GAAnF9Q,EAActuC,EAAS,mCAAqC7X,KAAMi3D,EAAOj3D,MAC7E,WACKowO,GAAA,GADL,QAEgB,OAFhB,QAGiBhnI,EAHjB,SAIkBmqI,EAJlB,OAMiB91E,SAAU,WAAYmM,IAAK,MAAOyvC,OAAQ,SAN3D,QAOiB39L,KAAK03N,UAI1B,MAAO,SvhBy8vEPjyO,IAAK,mBACLC,MAAO,WuhBv8vEQ,GACPgoG,GAAiB1tF,KAAKH,MAAtB6tF,YACR,QAAKnjD,aAAQmjD,MvhB88vEbjoG,IAAK,SACLC,MAAO,WuhBx8vEP,MAAO,IAAP,iBAEkB,uDAFlB,MAGe64L,aAAyBv+K,KAAKH,MAAMg3E,yBAE1C72E,KAAK01N,aALd,mBAOY,0BAAK9vN,IAAI,kBAAkBtJ,GAAG,8BAA9B,WvhB68vET20P,GuhBrgwEoBvwP,cAwEhBukJ,gBAAcgsG,IvhBm8vEzB39P,GAASrS,EAAoB,KAG7BkwQ,GAAiC,WAAc,GAAI5pK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UwhBtgwE75BupK,GAAmB,SAACC,EAAgBrjE,GACtC,GAAI1mK,GAAQ+pO,EAAe/sQ,IAiB3B,OAfI+sQ,IAAkBrjE,GACdqjE,EAAe78M,UAGPltB,EAFJ+pO,EAAez8M,SAAWy8M,EAAez8M,QAAQ5yD,OAAS,EACtDgsM,EAAc35K,YAA4D,IAA/C25K,EAAc35K,UAAU3Y,QAAQ,UACnD21P,EAAe/sQ,KAEf0pM,EAAc1pM,OAAS+sQ,EAAe/sQ,KAAO0pM,EAAc1pM,KAAO+sQ,EAAe/sQ,KAIrF+sQ,EAAe/sQ,MAK5BgjC,GAGLgqO,GAA4B,SAAC,GAe7B,GAdF5jK,GAcE,EAdFA,aACAn7C,EAaE,EAbFA,QACAgJ,EAYE,EAZFA,OACAjgD,EAWE,EAXFA,SACAuiF,EAUE,EAVFA,UACAjrC,EASE,EATFA,SACAixC,EAQE,EARFA,WACAl5C,EAOE,EAPFA,OACAyB,EAME,EANFA,SACAwhD,EAKE,EALFA,cACAK,EAIE,EAJFA,SACAnC,EAGE,EAHFA,aACAtxF,EAEE,EAFFA,OACAw7N,EACE,EADFA,eAEQnrL,EAAgB0H,EAAhB1H,YACFvjB,EAAQ8pO,GAAiB7+M,EAASgJ,GAClCu6J,EAAiBv6J,GAAUA,EAAOhJ,SAAWgJ,EAAOhJ,QAAQyoB,SAE5DwvF,EAAoBsrD,GAAkBrwD,aAAgBlzG,GACxDyoB,EAAWwvF,CACXA,IAAqB3/G,IACrBmwB,EAAcwvF,EAAd,MAAqC3/G,EAEzC,IAAMy/M,GAAW9vP,EAASA,GAACy7F,GAAA,GAAV,SAA6B,IAAK,QAAY,IAE/D,4BACmB,4BADnB,uBAE0B,0BAF1B,GAGaqsI,GAAA,GAHb,SAGyChnO,EAHzC,OAG2DigD,IAH3D,GAIa,IAJb,aAK8BmyC,EAL9B,+CAO2C,EAP3C,SAQ0BpyF,EAR1B,gBASiChU,KAAgBqK,OATjD,UAU2BksF,EAV3B,SAW0BjrC,EAX1B,WAY4BixC,EAZ5B,OAawBl5C,EAbxB,SAc0ByB,EAd1B,cAe+BwhD,EAf/B,aAgB8B9B,EAhB9B,WAiB4BkqI,IAjB5B,GAmBa9wE,GAAA,GAnBb,SAoB0Bj3D,EApB1B,MAqBuB3mE,EArBvB,SAsB0B0zC,EAtB1B,QAuByBzoB,KAGhB+3M,GAsBbgH,IAA0B7pK,cACtBlzE,aACAg+B,WAGJ,IAAMtqC,IAAkB,SAACxD,GACrB,GAAMmT,GAAWzD,aAAiB1P,GAC5BwS,EAAyBD,aAA+BvS,GACxDk3C,EAAiBC,aAAuBn3C,GACxCopD,EAAgB48B,aAAsBhmF,GACtC82C,EAAUhR,aAAQsjB,GAAiClS,EAAhBkS,EAGnCtb,EAAyCwyG,aAAatgJ,EAC5D,QACI8tC,UACAgJ,SACA/gD,OAAQR,aAAeyK,GACvBuxN,eAAgBz7N,aAAmBkK,GACnCmT,WACAk0E,aAAcv2E,aAAqB9Q,GACnCwpF,SAAUpD,aAAgBt4C,EAAS36B,EAAUX,KAItCu3E,gBAAQvmF,IAAiBqpP,IxhB2gwEpCC,GAAc,WAAc,GAAIhqK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UyhBlpwE14B6jK,GAAS,SAAC,GAAgC,QAA9BpwP,oBAA8B,OAAfQ,EAAe,EAAfA,SAAe,EAE+CR,EAASmJ,UAA5FipF,EAFoC,EAEpCA,aAAc7P,EAFsB,EAEtBA,UAAWjrC,EAFW,EAEXA,SAAUixC,EAFC,EAEDA,WAAYl5C,EAFX,EAEWA,OAAQyB,EAFnB,EAEmBA,SAAUwhD,EAF7B,EAE6BA,aAIzE,yBACgB,WADhB,eADqB9xF,EAAqB,WAAa,WACvD,GAES,IAFT,aAG0B4xF,EAH1B,SAIsBpyF,EAJtB,UAKuBuiF,EALvB,SAMsBjrC,EANtB,WAOwBixC,EAPxB,OAQoBl5C,EARpB,SASsByB,EATtB,cAU2BwhD,IAV3B,GAYS,QAUb89J,IAAOnB,aACH,SAAC54M,EAAYp2C,EAAOW,GAApB,MAA6B23C,cAAsB,SAAUlC,EAAYp2C,EAAOW,KAGpFwvP,GAAOlB,gBAAkB,IACzBkB,GAAOjB,UAAY,eAAkB,EAAf5kP,UACTyrC,aAAe,WAG5B,IAAMrpC,IAAkB,SAACxD,GAAD,OACpB3I,SAAU2I,EAAMrL,IAAI0C,eAGT0yF,gBAAQvmF,ICtCR,SAAChE,GAAqB,GAC3ButP,GAD2B,YAE7B,WAAY3xP,GAAO,2EACTA,GADS,OAEf,GAAK4xP,UAAY,KAEjB,EAAKC,SAAWztP,EAAiBumP,gBACjC,EAAKC,UAAYxmP,EAAiBwmP,UALnB,EAFU,+DAUT,aAIZzqP,KAAKH,MAJO,IAEZ6xP,oBAFY,EAED1xP,KAAK0xP,SAFJ,MAGZjH,qBAHY,EAGAzqP,KAAKyqP,UAHL,CAMZiH,KACA1xP,KAAKyxP,UAAYjqE,YAAY,WACrBijE,GACAA,EAAU,EAAK5qP,QAET,IAAX6xP,OArBkB,4CA0BrB1xP,KAAKyxP,WACLhqE,cAAcznL,KAAKyxP,cA3BE,8BAgCzB,MACI,oBAACxtP,EAAqBjE,KAAKH,WAjCN,GACPa,cA0CpBuH,EAAkB,SAAC,GAAD,OACpB/L,KADoB,EAAG9C,IAAO8C,MAIlC,OAAOsyF,cAAQvmF,GAAiBs8C,KAAaitM,EAAavtP,KDTVynP,KzhBuqwEhD7mG,GAAa5jK,EAAoB,IACjC6jK,GAAkC7jK,EAAoB4D,EAAEggK,IAGxD8sG,GAAqB,WAAc,GAAIpqK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U2hBxtwEj5B+pK,GAAgB,SAAC,GAA4B,GAA1BtqO,GAA0B,EAA1BA,MAAOy2B,EAAmB,EAAnBA,GAAIjiD,EAAe,EAAfA,SAC1B+1P,EAA4B,WAAP9zM,GAAoBjiD,EAAkC,KAAvD,GAAkC8pJ,GAAA,KAC5D,+BACsB,yBADtB,mBAEsB,+BAAwBt+H,GACrCuqO,IAWED,M3hB4twEXntB,GAAuBxjP,EAAoB,KAG3CwlP,GAA4BxlP,EAAoB,KAGhDgY,GAAWhY,EAAoB,KAC/BiY,GAAgCjY,EAAoB4D,EAAEoU,IAGtD4uO,GAAoB5mP,EAAoB,KAGxC6wQ,GAAgB,WAAc,GAAIvqK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U4hBzuwE54B4jK,GAAW,SAAC5rP,GAAU,GAEpBlF,GAaAkF,EAbAlF,QACAurG,EAYArmG,EAZAqmG,WACA/5C,EAWAtsD,EAXAssD,SACArwD,EAUA+D,EAVA/D,SACAR,EASAuE,EATAvE,SACAurG,EAQAhnG,EARAgnG,SACAw9I,EAOAxkP,EAPAwkP,QACAtmM,EAMAl+C,EANAk+C,GACAsoL,EAKAxmO,EALAwmO,YACAzuN,EAIA/X,EAJA+X,SACAzb,EAGA0D,EAHA1D,SACQsuC,EAER5qC,EAFAqsC,KAAQzB,cACRm8L,EACA/mO,EADA+mO,UAEE0jB,GAAY,GAACr0J,GAAA,KAAa,cAC1B87J,EAAe1jN,KAAW,aAAeg2M,YAG3C2N,KACAC,EAAqBxnN,EAActuC,EAAS,mBAC5CxB,KAAY1B,KAAS2B,UACrBo3P,GAAchpL,MAAO,QACrBipL,EAAqB,GAGzB,IAAMC,GAAatrB,EAAY,OAAS,OAExC,WACK9+I,GAAA,GADL,IACwBwiK,UADxB,gCAEkC4H,EAFlC,UAEwD,qCAFxD,wBAG+B,QAH/B,MAG8CF,UAH9C,wBAImC,yBAJnC,GAKqB,IALrB,MAO+BC,EAP/B,GAQ4Bl0M,EAR5B,SASkCjiD,GAHN,kBAN5B,GAWqB2oO,GAAA,GAXrB,SAYkCt4K,EAZlC,WAaoC+5C,EAbpC,SAckC5qG,IAdlC,oBAgBmC,kBAhBnC,aAiBgC,UAjBhC,UAiBqDy2P,EAjBrD,OAiB4Er1K,QAAS,iBAjBrF,GAkB6B+pJ,GAAA,GAlB7B,SAmB0C5/H,EAnB1C,SAoB0CjvF,EApB1C,YAqB6CyuN,EArB7C,SAsB0CvqO,EAtB1C,eAuBgDR,EAASC,MAAMq/G,UAvB/D,WAwB4Ct/G,EAASC,MAAM7X,MAAQ,OAxBnE,YAyB6C4X,EAASC,MAAMgoO,iBAzB5D,GA8BiB/+E,GAAA,GA9BjB,SA8BuC,KA9BvC,YA8ByD,qBA9BzD,iDAgC+B,gBAhC/B,GAiCiBA,GAAA,GAjCjB,SAiCuC,IAAK,UA2BhDinG,IAAShkK,cACL4+I,YAAa5rH,KAAaC,QAAQ1sH,KAClC8N,UAASA,GAGb2vP,GAASlB,aACL,iBAAMhuI,iBACNqoI,EACA,SAAC5xO,EAAD,WAAWtvB,gBAAX,EAAkB+2H,KAAaC,QAAQ1sH,KAAvC,QAAkDssH,cAAgB52H,IAClE,SAACsvB,EAAD,WAAWtvB,gBAAX,EAAkB+2H,KAAaC,QAAQ1sH,KAAvC,EAA6C2sH,EAA7C,EAA6CA,WAAY1nE,EAAzD,EAAyDA,QAAS2nE,EAAlE,EAAkEA,UAAWC,EAA7E,EAA6EA,OAA7E,OACIK,eAAgBx3H,OAAMi3H,aAAY1nE,UAAS2nE,YAAWC,aAC1D,SAAC7nG,EAAQzX,GAAT,MAAmBo6C,cAAc,WAAY,QAAUp6C,IACvD,iBAAMw8C,cAAY,WAAY,gBAIlC,IAAM9vC,IAAkB,SAACxD,GAAU,GACvBrL,GAAkBqL,EAAlBrL,IAAK0gB,EAAarV,EAAbqV,QACb,QACInf,QAASvB,EAAIuB,QACburG,WAAYpsF,EAASosF,eACrB/5C,SAAUryC,EAASqyC,aACnB06C,SAAU/sF,EAAS+sF,aACnBjvF,SAAUzD,aAAiB1P,GAC3B4/O,QAASvqO,EAASuqO,QAClBtmM,GAAI3kD,EAAI2kD,GACRsoL,YAAavsN,EAASgrO,kBACtBhpP,SAAU1C,EAAI0C,SACd8qO,UAAWiB,aAAkBpjO,KAItB+pF,gBAAQvmF,IAAiB+7C,aAAWynM,K5hByvwE/C0G,GAAqB,WAAc,GAAI5qK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U6hB73wEj5B8jK,GAAgB,qBACjB7jK,GAAA,GADiB,UACO,qBADP,GAEbu+D,GAAA,MAFa,oBAGC,yCAHD,wBAIS,gBAJT,GAKL/kC,GAAA,GALK,SAKyB96H,KAAS6E,UAMxDsgQ,IAAcpB,aACV,SAACv3O,EAAQzX,EAAOW,GAAhB,MAAyB23C,cAAsB,gBAAiB7gC,EAAQzX,EAAOW,IAC/E,SAAC8W,EAAQzX,EAAOW,GAAhB,MAAyB27C,cAAoB37C,IAGlCyvP,W7hB24wEXhyB,GAAS14O,EAAoB,IAC7B24O,GAA8B34O,EAAoB4D,EAAE80O,IAGpDy4B,GAAe,WAAc,GAAI7qK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U8hBp6wE34BwqK,GAAU,SAAC,GAAD,GAAGxE,GAAH,EAAGA,WAAYvoJ,EAAf,EAAeA,UAAf,kDAEU,mBAFV,GAEgC,qBAFhC,mBAGU,kCAHV,qCAKW,+CALX,GAK6D,qBAL7D,oBAMW,gBANX,MAMiC,6BANjC,QAMsE,oBANtE,uBAOkB,wBAPlB,GAO6C,KAP7C,GAOqD,KAPrD,EAO4D,KAP5D,KAOsE,SAPtE,qBAQgB,uBARhB,KAQ4C,OAR5C,EAQqD,kCARrD,iBAUAgtJ,GAAezE,EAAYvoJ,OAU5B+sJ,M9hBm7wEXE,GAAa,WAAc,GAAIhrK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U+hBx8wEz4B7kG,GAAQ,4DAEY,gBAFZ,GAE+B,qBAF/B,+DAMa,gBANb,GAMgC,qBANhC,8QAcCA,M/hB08wEXwvQ,GAAsBrwQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAE9PmxP,GAAkB,WAAc,GAAIlrK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEh5B6qK,GAA0B,WAAc,QAAS5tM,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MgiB98wE9hB+uM,GAAb,SAAAnwQ,GACI,WAAYqd,GAAO,2EACTA,GADS,OAEf,GAAK4E,OACDmuP,gBAAeA,EACfhU,QAAS,EAAK/+O,MAAM++O,QAAQlqM,cAC5Bm+M,cAAaA,GAEjB,EAAKC,aAAe,EAAKA,aAAahuP,KAAlB,GACpB,EAAKiuP,YAAc,EAAKA,YAAYjuP,KAAjB,GACnB,EAAKkuP,SAAW,EAAKA,SAASluP,KAAd,GAChB,EAAKmuP,cAAgB,EAAKA,cAAcnuP,KAAnB,GAVN,EADvB,YAAAtiB,GAAA,gDAe4Bwd,KAAKyE,MAAjBm6O,SAGJ5+O,KAAKgzP,cAlBjB,kCAsBiB9nO,GACT,GAAM0zN,GAAU1zN,EAAM5pB,OAAO5b,MAAMgvD,aACnC10C,MAAKH,MAAMgG,SAAS46O,EAAc7B,IAClC5+O,KAAKmG,UACDy4O,UACAiU,cAAaA,OA3BzB,iCA+BgB3nO,GACY,KAAhBA,EAAMgoO,OACNlzP,KAAKgzP,cAjCjB,wCAAAxwQ,KAAA,wEAAAA,KAAA,8DAAAA,GAAA,cAAAA,EAAA,KAAAA,EAAA,gBAsCgBo8P,EAAY5+O,KAAKyE,MAAjBm6O,QAtChB,EA8CY5+O,KAAKH,MANLtG,EAxCZ,EAwCYA,aACA+rG,EAzCZ,EAyCYA,WACAz/F,EA1CZ,EA0CYA,SACAs9O,EA3CZ,EA2CYA,WACA5B,EA5CZ,EA4CYA,mBACAhmP,EA7CZ,EA6CYA,OAEA4nP,EA/CZ,CAAA3gQ,EAAA,mBAAAA,GAAA,6BAkDcqwQ,GAAgBjU,GAlD9B,CAAAp8P,EAAA,mBAoDYwd,MAAKmG,UAAW0sP,iBApD5BrwQ,EAAA,2BAwDQqjB,EAAS86O,KAxDjBn+P,EAAA,QA0DgBowQ,GAAehU,GA1D/B,CAAAp8P,EAAA,oBAAAA,GAAA,QA2DsBqjB,EAASo7O,EAAkBrC,EAASrlP,GA3D1D,SAAA/W,EAAA,0BA4DuB2wQ,GAAevU,GA5DtC,CAAAp8P,EAAA,oBAAAA,GAAA,QA6DsBqjB,EAASw7O,EACX/7I,EACAs5I,EACA2C,EACAhmP,GAjEpB,SAAA/Y,EAAA,sBAoEgBqjB,EAAS06O,ExBxEM,0BwBI/B,SAAA/9P,EAAA,sBAAAA,EAAA,QAAAA,EAAA,GAAAA,EAAA,SAuEgBwwE,KAAYmpB,iBAAZ,MAEIt2E,EADAmtD,KAAYspB,gBAAZ,KACS+jK,EAAyBA,EAADA,IAExBE,EAAyB/9P,EAAA,GAAI4Q,SxB/E3B,0BwBI/B,SA+EQyS,EAASg7O,IA/EjB,yBAAAr+P,GAAA,SAAAA,EAAA,wBAAAA,QAAA,qCAkFoB,GACJ4wQ,GAAqBpzP,KAAKH,MAA1BuzP,gBAGR,2BAAqB,kCAFc,cAArBA,EACV,6BAA+B,sBArF3C,wCAyFuBC,GACf,IAAKA,EACD,MAAO,KAFc,OAOrBrzP,KAAKH,MAFLojP,EALqB,EAKrBA,aACAC,EANqB,EAMrBA,aAEI2P,EAAiB7yP,KAAKyE,MAAtBouP,YAER,OAAI5P,GACA,aACY,gBADZ,UACsC,0BADtC,iEAKQA,GAAgBC,EACxB,aACY,0BADZ,UACgD,0BADhD,+CAKQD,GAAgB4P,EACxB,aACY,qBADZ,UAC2C,0BAD3C,sDAMG,QAtHf,8BAyHa,aAKD7yP,KAAKH,MAHLojP,EAFC,EAEDA,aACAC,EAHC,EAGDA,aACAkQ,EAJC,EAIDA,iBAJC,EASDpzP,KAAKyE,MAFLm6O,EAPC,EAODA,QACAiU,EARC,EAQDA,aAGAS,EAAiB,GAEfC,EAAc3U,EAAW,GAAK,oBAC9B4U,EAA8C,cAArBJ,EACzBC,EAAWpQ,GAAgBC,GAAgB2P,CAC7CQ,KACAC,EAAiB,2BAGrB,IAAMG,GAAgB5uG,MAClB,WAAY2uG,EACZ,qBAAsB5U,EACtB,kBAAmB4U,GAGvB,kDAE0B,mBAF1B,GAEgD,qBACnCxzP,KAAKizP,iBAHlB,wBAK2B,oBAL3B,GAKkD,qBALlD,mBAM0B,mCAN1B,+CAOY,4BACItyM,UAAA,qBAAgC2yM,EAChC1tP,IAAK,SAAA8hC,GAAW,EAAKgsN,WAAahsN,GAClCprC,GAAG,aACHhY,KAAK,aACLZ,KAAK,OACLiwQ,UAAU,IACVxqB,YAAa,wBACbzjP,MAAOsa,KAAKyE,MAAMm6O,QAClB95E,SAAU9kK,KAAK8yP,aACfc,QAAS5zP,KAAK+yP,cAEjB/yP,KAAK6zP,mBAAmBR,IAnBrC,wBAqB2B,UArB3B,GAqBwC,uBArBxC,gBAuBmB,WAvBnB,KAwBqB,SAxBrB,KAyBqB,SAzBrB,UA0B2BI,EA1B3B,QA2ByBzzP,KAAKgzP,SA3B9B,SA4B0BO,UA5B1B,kBAnJR,GAAyC7yP,aAoMzCiyP,IAAoBlrK,cAChBp+B,aACAu1L,QAAS,GAGb,IAAM32O,IAAkB,SAACxD,GAAU,MAK3BA,EAHAkrD,cAF2B,2BAETtG,qBAFS,SAK3B5kD,EAFAirP,WAH2B,IAGbzM,wBAHa,OAGMC,EAHN,EAGMA,aAAcC,EAHpB,EAGoBA,WAHpB,EAK3B1+O,EADArL,eAJ2B,OAO3BS,EAIAT,EAJAS,QACAqC,EAGA9C,EAHA8C,KAR2B,EAW3B9C,EAFAkC,QAT2B,2BASfC,iBATe,SAW3BnC,EADAykD,SAV2B,2BAUdpoC,GAVc,sBAUPq+O,GAVO,EAUPA,YAGxB,QACI7Q,eACAC,eACA75L,YACA85L,aACA5nP,QACAgmP,mBAAmBA,IAAQC,KAAMsS,IAAqB53P,OAAMrC,cAIrD20F,gBAAQvmF,IAAiB0qP,IhiBqixEpCphG,GAAqBtwK,EAAoB,KAGzCspP,GAAiBtpP,EAAoB,KAGrCw1D,GAAgBx1D,EAAoB,IAGpC8yQ,GAAgB,WAAc,GAAIxsK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAE94BmsK,GAAwB,WAAc,QAASlvM,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MiiB1wxEjiBqwM,GAAgC74P,KAAhC64P,aAAczmP,GAAkBpS,KAAlBoS,cACdmuE,GAAY3oB,KAOPkhM,GAAb,SAAA1xQ,GACI,WAAYqd,GAAO,2EACTA,GADS,OAEf,GAAK4E,OACD0vP,eAAcA,EACdC,gBAAeA,GAEnB,EAAKC,mBAAqB,EAAKA,mBAAmBvvP,KAAxB,GAC1B,EAAKsnC,SAAW,EAAKkoN,cAPN,EADvB,YAAA9xQ,GAAA,gDAWwB,MAMZwd,KAAKH,MANO,IAEZzG,IAAO8C,gBAFK,EAEE,GAFF,MAGZZ,SAAYC,MAASi7O,EAHT,EAGSA,YAAa9oK,EAHtB,EAGsBA,OAAQ43B,EAH9B,EAG8BA,WAAYttF,EAH1C,EAG0CA,KACtDqxC,EAJY,EAIZA,UACAxjD,EALY,EAKZA,SAGEioP,EAAiBpgL,GAAU43B,CACjC,IAAIkxI,EAAa,CACb,GAAMuX,GAAmB1kM,EAAUxzC,OAAO,SAAAjC,GAAA,MAAYA,GAAS62C,eAAiBzyC,IAAM,EACtFi2D,cAAqB6/K,EAAgBC,OAErCtgL,cAAkBvxE,EAAM4xP,EAG5B96L,MAAS,QAASntD,EAASiqE,iBAC3B9c,KAAS,SAAUntD,EAASmqE,iBAC5BnqE,EAASkyC,aAAY/3C,KAAKosC,SAAU,4BA7B5C,+CAsC8BzpC,GAAW,MAS7BA,EAPArH,SACIC,KAHyB,sBAIrBi7O,GAJqB,EAIrBA,YACA+d,EALqB,EAKrBA,SAGCztN,EACTnkC,EADAqwD,MAASlsB,KAGLjhC,EAAa7F,KAAKH,MAAlBgG,QAER,KAAK0kC,aAAQzD,KAAU9mC,KAAKyE,MAAM2vP,eAAgB,CAC9C,GAAMI,GAActV,EAAyBp4M,GACrCy4M,EAA0CiV,EAA1CjV,mBAAoB7oM,EAAsB89M,EAAtB99M,KAAM0oM,EAAgBoV,EAAhBpV,WAC9BG,IAGA15O,EAASs7O,EAF4B,YAAboT,EzBtEC,yEACD,oEyBuE6B79M,EAAM0oM,IAE/Dp/O,KAAKmG,UAAWiuP,gBAAeA,IAG/B5d,IAAgBx2O,KAAKyE,MAAM0vP,gBAC3Bn0P,KAAKmG,UAAWguP,eAAcA,IAE9BtuP,EAASiqE,oBAjErB,4CAqE2B,GACXjqE,GAAa7F,KAAKH,MAAlBgG,QACRmtD,MAAU,QAASntD,EAASiqE,iBAC5B9c,KAAU,SAAUntD,EAASmqE,oBAxErC,mCA2EkB,MACsChwE,KAAKH,MAA7CvE,SAAYiB,oBADV,EACqB,WADrB,CAEV,OAAOA,GAAS2rB,OAAO3rB,EAAS8mN,YAAY,KAAO,MA7E3D,sCAiFkC,GAAfj3K,GAAe,uDAAJ,GAChBqoN,IACAn4P,GAAI,YAAao4P,IAAK,aAAc32P,KAASyP,GAAT,2CACpCknP,IAAK,aAAc32P,KAASyP,GAAT,aAAmCymP,GAAnC,kCACnBS,IAAK,aAAc32P,KAASyP,GAAT,aAAmCymP,GAAnC,+BACnBS,IAAK,aAAc32P,KAASyP,GAAT,aAAmCymP,GAAnC,0BACnBS,IAAK,aAAc32P,KAASyP,GAAT,aAAmCymP,GAAnC,kCAUzB,OANiB,cAAb7nN,GACAqoN,EAAUvyQ,MACNwyQ,IAAK,aAAc32P,KAAM,uEAI1B02P,KAjGf,0CAoGsC,GAAfroN,GAAe,uDAAJ,EAI1B,sBAH0B,cAAbA,EACT,2FACA,+DACJ,IAA0B,GAA1B,UAAuC,sBAxG/C,qCA0GoB,MAgBRpsC,KAAKH,MAdLgG,EAFQ,EAERA,SAFQ,IAGRvK,QAHQ,2BAIJC,KAJI,sBAKAo5P,GALA,EAKAA,eACAne,EANA,EAMAA,YACAqX,EAPA,EAOAA,WACA3M,EARA,EAQAA,eACQ0T,EATR,EASAlnL,OACA43B,EAVA,EAUAA,WACAlgH,EAXA,EAWAA,MACAw5P,EAZA,EAYAA,QAGRrlP,EAfQ,EAeRA,aAEEm0E,EAASknL,GAAetvJ,EACxBuvJ,EAAsBjW,GAAW+V,CAuCvC,OApCc,SAAVvvQ,EACAmtD,GAAW,OACY,SAAhBikM,EACPjkM,GACK,IADL,WAEoBs7M,EAFpB,WAGoBngL,IAGbwzK,EACP3uM,cAAA,UACuB,uBADvB,OACuDuiN,UAAW,iBADlE,GAESvqB,GAAA,GAFT,eAG4B,SAAC32N,GACb/N,EAAS48O,GACL7D,UACA5mO,KAAMpE,EAAS62C,aACf66C,aACA1xF,WACAvW,QAAS3b,OAAO4Z,SAASyC,KACzBxE,sBAOpBg5C,GACKwiN,IADL,aAEsBx7P,EAFtB,iBAG0ByG,KAAKosC,SAH/B,WAIoBshC,EAJpB,QAKiBmnL,OA/J7B,8BAqKa,MAKD70P,KAAKH,MALJ,IAEDvE,QAFC,2BAEWC,KAFX,sBAEoB2lP,GAFpB,EAEoBA,eAAgB2M,EAFpC,EAEoCA,WACrC/6L,EAHC,EAGDA,SACAkiM,EAJC,EAIDA,eAEE5jG,EAAiB8vF,EAAiB,sCAAwC,kCAC1E3uM,EAAUvyC,KAAKi1P,gBAOfC,EAAmBF,IAAmB9T,GAAiC,cAAf2M,CAE9D,8BAGS,MAHT,SAKgB9pQ,IAAK43F,GAAQ7oB,KAL7B,KAOkB9yD,KAAKm1P,eAAen1P,KAAKosC,UAP3C,QASgByzB,QAAQA,6jBATxB,GAuBS0xF,GAAA,MAvBT,aAwBgB,sBAxBhB,iCAwBwEH,UAC3DpxJ,KAAKq0P,mBAAmBr0P,KAAKosC,UAzB1C,aA0BoB,oBA1BpB,UA0BkD,4BACjCmG,EACA2iN,GAAoBA,UAApB,UACkB,wBADlB,oBAEsB,iCAFtB,oBAG0B,gCAH1B,IAG8D,QAH9D,IAG0E,6FAH1E,kBAIwB,mCAJxB,gDAtNP,wBAsNO,OArNA,iBAqNA,6EAQwB,4CARxB,uCApNY,wBAoNZ,OArNA,iBAqNA,gBA5BjB,aA0CwB,SA1CxB,UA0C2C,2BA1C3C,kBA2CiC,yBA3CjC,KA2C+D,+BA3C/D,8BA4CiC,yBA5CjC,KAvLmB,+BAuLnB,OAzLiB,iBAyLjB,yBArLR,GAAuCx0P,aAuPvCwzP,IAAkBzsK,cACdp+B,cAGJ6qM,GAAkB3J,aACd7sM,KACA,SAACxhC,EAAG3gB,GAAJ,MAAckuD,eAAe5vD,QAAS,KAAM4tD,SAAUlsD,EAAMmyE,UAGhE,IAAMzlE,IAAkB,SAACxD,GAAU,MAG3BA,EADAkrD,cAF2B,2BAETtG,SAGtB,QACIA,mBAN2B,OAO3BjwD,IAAKD,aAAYsL,GACjBquD,SAAUz3D,aAAiBoJ,GAC3BuwP,eAAgBp2P,aAAuB6F,GACvClL,aAAcF,aAAqBoL,GACnCuuD,MAAOvc,aAAchyC,KAId+pF,gBAAQvmF,IAAiBisP,IjiBwzxEpCz+P,GAAaxU,EAAoB,IAGjCm2B,GAAYn2B,EAAoB,IAGhCm0Q,GAAoBjzQ,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAE5P+zP,GAAgB,WAAc,GAAI9tK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAE94BytK,GAAwB,WAAc,QAASxwM,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MkiBlmyEniB+3G,IACF96G,WACIytG,QAAS,GACT3gI,MAAO,OACPwyK,WAAY,QACZD,SAAU,IAEd54K,OACIo1D,QAAS,QACTkkJ,aAAc,GACdxjC,WAAY,QAEhBm4D,SACI74K,QAAS,QACTkkJ,aAAc,IAElB40B,YACIxrG,UAAW,SAEfyrG,eACIlnG,WAAY,UACZvlF,MAAO,IACPC,OAAQ,GACRikF,OAAQ,EACRoB,QAAS,EACTqwC,OAAQ,SAIVmsD,G,YACF,WAAYjrP,GAAO,2EACTA,GADS,OAEf,GAAK4E,OACDixP,YAAa,GACb9V,MAAO,GACP+V,YAAa,GACbluM,SAAU,GACVmuM,WAAUA,GAEd,EAAKC,aAAe,EAAKA,aAAa/wP,KAAlB,GACpB,EAAKkuP,SAAW,EAAKA,SAASluP,KAAd,GAVD,EliBg6yEnB,MAtSA+jP,IAAmBiC,EAAUvkG,GAmB7B+uG,GAAsBxK,IAClBrlQ,IAAK,oBACLC,MAAO,WkiBloyES,GACRmgB,GAAa7F,KAAKH,MAAlBgG,QACRA,GAAS2wC,gBACT3wC,EAASmjD,mBliBsoyETvjE,IAAK,eACLC,MAAO,SkiBpoyEEwlC,GACT,GAAMzmB,GAAQymB,EAAM5pB,OAAO8jD,aAAa,aACxCplD,MAAKmG,SAAL,MACK1B,EAAQymB,EAAM5pB,OAAO5b,WliBsoyE1BD,IAAK,WACLC,MAAO,SkiBnoyEFwlC,GAAO,MACkClrB,KAAKH,MAA3C1D,EADI,EACJA,SAAkBsuC,EADd,EACMyB,KAAQzB,cACpBqrN,EAAkB91P,KAAK81P,eAC7B,IAAIA,EAAiB,CACjB5qO,EAAMkvD,gBACN,IAAMhnF,GAAUq3C,EAActuC,EAASA,kBAAkB25P,GACzDzlC,OAAMj9N,OliB0oyEV3N,IAAK,SACLC,MAAO,WkiB1nyEF,aAC4Dsa,KAAKyE,MAA9DixP,EADH,EACGA,YAAa9V,EADhB,EACgBA,MAAO+V,EADvB,EACuBA,YAAaluM,EADpC,EACoCA,SAAUmuM,EAD9C,EAC8CA,UAD9C,EAgBD51P,KAAKH,MAhBJ,IAGDk2P,gBACIl4P,EAJH,EAIGA,OACAtB,EALH,EAKGA,SACAuB,EANH,EAMGA,OACAN,EAPH,EAOGA,KACAjC,EARH,EAQGA,MARH,IAUDm7C,gBAVC,EAUM,KAVN,MAWDo1C,wBAXC,OAYDziC,EAZC,EAYDA,UACApvD,EAbC,EAaDA,WACAkC,EAdC,EAcDA,SACQsuC,EAfP,EAeDyB,KAAQzB,cAfP,EAsBDqhD,EAHAjyF,mBAnBC,EAmBS,GAnBT,IAsBDiyF,EAFAkqK,gBApBC,EAoBM,GApBN,IAsBDlqK,EADAz2E,cArBC,EAqBI,GArBJ,EAuBDw4F,IACJ,IAAIz2F,KAAW,CACX,GAAM6jD,GAAOxlE,KAAWgyE,kBAAkB,GAAIv3B,MAAQ,YAAa,oBAG7Ds8B,EAAYxpC,UAAUwpC,UACtBypL,EAAUA,iBAAiBP,EAA3B,wBACG9V,EADH,uBAEE3kL,EAFF,+FAKK13E,SAAS80E,OAAOr2E,OAAS,EAAI,KAAO,OALzC,yBAMImiF,OAAO6E,MANX,IAMoB7E,OAAO8E,OAN3B,qBAOA5zD,EAPA,2FAUKxb,EAVL,uBAWEm8P,EAXF,6BAYQxpL,EAZR,2BAaM/kB,EAbN,uBAcE/Q,EAdF,4BAgBKi/M,CAEX9nJ,IAAU,YAAD,KACO,SADP,KACqB,QADrB,MACmC,oBADnC,iBAGI,SAHJ,KAII,SAJJ,SAKShwG,EAAStB,EAAWuB,GAASA,EAAS,IAAM,KALrD,iBAKyEN,IALzE,eAOK,kBAPL,KAO4B,kBAP5B,KAOmD,SAPnD,MArBK,UAqBL,UAOoF,QAPpF,eAQK,kBARL,KAQ4B,kBAR5B,KAQmD,SARnD,MApBO,MAoBP,UAQsF,OARtF,eASK,kBATL,KAS4B,kBAT5B,KASmD,SATnD,MASmEgvE,EATnE,UASwF,QATxF,eAUK,kBAVL,KAU4B,kBAV5B,KAUmD,SAVnD,MAUkE,sBAVlE,eAWK,kBAXL,KAW4B,kBAX5B,KAWmD,SAXnD,MAWmEypL,IAXnE,eAYK,kBAZL,KAY4B,kBAZ5B,KAYmD,SAZnD,MAYmEv/M,IAZnE,eAaK,OAbL,KAaiB,OAbjB,KAa6B,SAb7B,MAa4C,sBAb5C,eAcK,UAdL,KAcoB,UAdpB,KAcmC,SAdnC,MAckD,gCAI/D,GAAMw/M,GAAkB7sM,EAAUr3C,IAAI,eAAG1tB,GAAH,EAAGA,KAAMmmE,EAAT,EAASA,YAAT,2BACnBA,UAAenmE,IAOlC,OALA4xQ,GAAgBxrM,QAAhB,mBACkB,kBADlB,SAEkBjgB,EAActuC,EAAS,8BAFzC,WAKA,gBACgBw/J,GAAO96G,kBADvB,GAES,MAFT,OAIkBv8D,KAAM,SAAUiuD,QAAS,sBAJ3C,QAOgBstB,QAAQA,8OAPxB,OAeoB5lE,IACF+3D,UAAWA,stDAkCnB4jM,GAAar6P,EAAMq6P,UAApB,oCAEoBj6F,GAAO45F,gBAAU9qN,EAActuC,EAAS,wBAF5D,oCAMoBw/J,GAAOr0I,cAAQmjB,EAActuC,EAAS,oBAN1D,iBAOoBw/J,GAAO45F,gBAAU9qN,EAActuC,EAAS,sBAP5D,gBASgB,eAThB,OAUkB,sEAVlB,OAWkB,OAXlB,SAYqB6D,KAAKgzP,iBAEdnlJ,EAdZ,wBAe8B,IAf9B,YAe8C,YAf9C,sDAkBkC8tD,GAAO65F,mBACb/qN,EAActuC,EAAS,sBAnBnD,uBAsB2B,6BACIyJ,IAAK,SAAAskM,GAAY,EAAKisD,eAAiBjsD,GACvC5tM,GAAG,kBACHhY,KAAK,kBACLw7C,KAAK,IACLu7B,MAAOsgG,GAAO85F,cACdjtN,aAAa,GACb4tN,aAAW,cACXtxF,SAAU9kK,KAAK61P,cARnB,mBAUkB,WACTprN,EAActuC,EAAS,8BAXhC,mBAakB,eACTsuC,EAActuC,EAAS,sCAdhC,mBAgBkB,eACTsuC,EAActuC,EAAS,wCAjBhC,mBAmBkB,eACTsuC,EAActuC,EAAS,mCApBhC,mBAsBkB,eACTsuC,EAActuC,EAAS,gCA7C3D,iCAmDkCw/J,GAAO65F,mBACb/qN,EAActuC,EAAS,mBApDnD,uBAuD2B,4BACIyJ,IAAK,SAAA8hC,GAAW,EAAK2uN,WAAa3uN,GAClChkD,KAAK,OACL23E,MAAOsgG,GAAO85F,cACdn5P,GAAG,QACHhY,KAAK,QACLw7C,KAAK,KACL6zN,UAAU,KACVjuQ,MAAOk6P,EACPwW,aAAW,QACXtxF,SAAU9kK,KAAK61P,iBAjE9C,iCAsEkCl6F,GAAO65F,mBACb/qN,EAActuC,EAAS,sBAvEnD,uCA2EkC,kBA3ElC,KA4EoC,kBA5EpC,KA6EoC,IA7EpC,aA8E4C,kBAEZ+5P,KAhFhC,iCAqFkCv6F,GAAO65F,mBACb/qN,EAActuC,EAAS,sBAtFnD,yCA0FoC,IA1FpC,aA2F4C,iBA3F5C,aA4F0C,WA5F1C,SA6FyC6D,KAAK61P,qBA7F9C,mBA+F6C,yBACTprN,EAActuC,EAAS,4BAhG3D,mBAkG6C,iBACTsuC,EAActuC,EAAS,qBAnG3D,mBAqG6C,eACTsuC,EAActuC,EAAS,mBAtG3D,mBAwG6C,wBACTsuC,EAActuC,EAAS,2BAzG3D,mBA2G6C,yBACTsuC,EAActuC,EAAS,4BA5G3D,mBA8G6C,mBACTsuC,EAActuC,EAAS,mBA/G3D,mBAiH6C,sBACTsuC,EAActuC,EAAS,0BAlH3D,mBAoH6C,mBACTsuC,EAActuC,EAAS,sBArH3D,mBAuH6C,qBACTsuC,EAActuC,EAAS,wBAxH3D,mBA0H6C,wBACTsuC,EAActuC,EAAS,2BA3H3D,mBA6H6C,qBACTsuC,EAActuC,EAAS,yBA9H3D,mBAgI6C,eACTsuC,EAActuC,EAAS,sBAjI3D,uCAuIuCw/J,GAAO65F,YAAYpzB,cAAe,gBAC7C33L,EAActuC,EAAS,sBAxInD,uBA2I2B,+BACIyJ,IAAK,SAAA8hC,GAAW,EAAK4uN,YAAc5uN,GACnCprC,GAAG,cACHhY,KAAK,cACL+2E,MAAA,MAAYsgG,GAAO85F,eAAexsL,OAAQ,KAC1CstL,KAAK,KACLzxJ,KAAK,IACL+uI,KAAK,UACLnuP,MAAOiwQ,EACPS,aAAW,cACXtxF,SAAU9kK,KAAK61P,iBArJ9C,iEA4JuC,SA5JvC,MA4JuDprN,EAActuC,EAAS,8BliBykyEvF1W,IAAK,kBACLb,IAAK,WkiB72yEL,MAAKob,MAAKm2P,eAAezwQ,MAGpB,cAAckgC,KAAK5lB,KAAKq2P,WAAW3wQ,QAGnCsa,KAAKs2P,YAAY5wQ,OACX,WAHA,QAHA,eliB03yERolQ,GkiBj6yEYzmM,iBAiWvBymM,IAASP,aACL,iBAAM9gM,iBACN,iBAAM1R,cAAY,WAAY,aAGlC,IAAM9vC,IAAkB,SAACxD,GAAU,MACEA,EAAzBuuD,KADuB,sBACdtc,GADc,EACdA,KACXo1C,EAAev2E,aAAqB9Q,GAFX,EAGqBA,EAA5CkrD,cAHuB,2BAGLtG,qBAHK,MAM/B,QACI0sM,gBAHoB34P,aAAiBqH,GAIrCiyC,OACAo1C,eACAziC,YACApvD,WANeF,aAAmB0K,KAU3B+pF,gBAAQvmF,IAAiB+7C,aAAW8mM,KliB6kyE/Cj/L,GAAO5qE,EAAoB,IAC3Bu1Q,GAA4Bv1Q,EAAoB4D,EAAEgnE,IAGlD45F,GAAkBxkK,EAAoB,KAOtC0+L,GAAsB1+L,EAAoB,KAG1CwwO,GAAkBxwO,EAAoB,KAGtCq1G,GAAiBr1G,EAAoB,IAGrC6xJ,GAAgB7xJ,EAAoB,KAGpCkyE,GAAoBlyE,EAAoB,IAGxCixE,GAAsBjxE,EAAoB,KAG1CsxE,GAAetxE,EAAoB,IAGnC0X,GAAc1X,EAAoB,IAGlC81N,GAAiC91N,EAAoB,KAGrDw1Q,GAAUx1Q,EAAoB,KAG9By1Q,GAAiB,WAAc,GAAInvK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAE/4B8uK,GAAqBx0Q,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAE7Ps1P,GAAyB,WAAc,QAAS9xM,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MmiB5/yEliB+3B,GAAY3oB,KAGhBihM,GAGA74P,KAHA64P,aACAzmP,GAEApS,KAFAoS,cACAqpP,GACAz7P,KADAy7P,UAGAC,GAAgBtpP,GAAhB,aAA0CymP,GAA1C,MACA4C,MACAC,GAAa,mCAGjB,IAAMC,KACFC,KACI90L,KAAM,2EACN9G,SAAa5tD,GAAb,oDAEJypP,SACI/0L,KAAM,4EACN9G,SAAa5tD,GAAb,6DAIF8gC,IACFuS,UAAW,mBACX6pD,KAAM,wBACNwsJ,UAAW,8BACXC,cAAe,wBACfC,YAAa,gCACb5oN,MAAO,yBACP0tC,UAAW,8BACXm7K,WAAY,+BACZC,UAAW,8BACXC,KAAM,wBACNC,SAAU,6BACVnqG,OAAQ,0BACRoqG,QAAS,4BACTC,aAAc,8BACdC,aAAc,iCAGZ5M,G,YACF,WAAYlrP,GAAO,2EACTA,GADS,OAEf,GAAK4E,OACDmzP,cAAaA,GAEjB,EAAKC,kBAAoB,EAAKA,kBAAkB/yP,KAAvB,GALV,EniB62zEnB,MAvUAqkP,IAAoB4B,EAAWnrP,GAc/Bg3P,GAAuB7L,IACnBtlQ,IAAK,qBACLC,MAAO,WmiB7izEPsa,KAAKmG,UACDm/F,WAAYq6E,eACZ+xC,SAAUD,oBniBkjzEdhsO,IAAK,oBACLC,MAAO,WAmBH,QAASyf,KACL,MAAO/E,GAAK1N,MAAMsN,KAAMrN,WAnB5B,GAAIyN,GAAO4oP,GAA0C3V,mBAAmBx+I,KAAK,QAASy+I,KAClF,GAAIztO,EACJ,OAAOwtO,oBAAmBQ,KAAK,SAAkB7sM,GAC7C,OACI,OAAQA,EAASxsB,KAAOwsB,EAASnlC,MAC7B,IAAK,GAGD,MmiBvjzEhBgE,GAAa7F,KAAKH,MAAlBgG,SniBsjzEgBmhC,EAASnlC,KAAO,EmiBrjzElCgE,EAASkwC,eniBwjzEK,KAAK,GACL,IAAK,MACD,MAAO/O,GAAS8sM,SAG7BR,EAAStzO,QAOhB,OAAOmF,QAGX1f,IAAK,4BACLC,MAAO,SmiBrkzEeid,GACG3C,KAAKyE,MAAtBmzP,cAEoB53P,KAAKsxD,uBAAuB3uD,IAEhD3C,KAAKmG,UAAWyxP,cAAaA,OniB2kzErCnyQ,IAAK,yBACLC,MAAO,WmiBvkzEgC,GAApBma,GAAoB,uDAAZG,KAAKH,MACxBgG,EAA+ChG,EAA/CgG,SAAUwmC,EAAqCxsC,EAArCwsC,KAAMyrN,EAA+Bj4P,EAA/Bi4P,iBAAkBlgP,EAAa/X,EAAb+X,SADH,EAEdy0B,EAAjBuI,mBAF+B,MAGvC,IAAIkjN,IAAqBxhK,aAAe1+E,KAAcA,EAAS51B,SACrC6pE,KAAKjX,EAAQ3pD,OAAO,SAACC,EAAD,MAAQmpB,GAAR,EAAQA,SAAR,OAAyBnpB,GAAI2nB,OAAOwB,SAC5D5C,MAAM,SAAAk3C,GAAA,MAAYA,KAAa1hE,KAAUuH,MAAM,CAC7D,GAAM+sD,GAAS3G,EAAQ,EACvB,KAAKk+F,aAAcv3F,EAAQ3jC,MAMvB,MALA/R,GAASyrD,cACL9Q,YAAanxC,KACbkjC,QAASlG,EACTkP,eAMhB,OAAM,KniBslzEN91D,IAAK,oBACLC,MAAO,WmiBllzEP,IADwBsa,KAAKsxD,yBAC7B,CAFgB,MAMyCtxD,KAAKH,MAAtDwsC,EANQ,EAMRA,KAAiBhwC,EANT,EAMFq6D,QAAWr6D,0BANT,EAOOA,MAPP,IAORd,iBAPQ,OAQR6xC,EAA0Cf,EAA1Ce,UAAW9oD,EAA+B+nD,EAA/B/nD,KARH,EAQkC+nD,EAAzBuI,mBART,OAQuBtH,EAAWjB,EAAXiB,OACjCiH,EAAYge,aAAalmB,GATf,EAU8DuI,EAAQ,OAVtE,IAURrzC,MAVQ,sBAUM8/K,GAVN,EAUE/kL,GAAoB8kL,EAVtB,EAUgB19L,KAAwBq0Q,EAVxC,EAUkCzzQ,KAC1CotO,EAAa1xN,KAAKyE,MAAlBitN,SACJsmC,KACAC,KACE3yJ,EAAetlG,KAAKyE,MAApB6gG,WACFtyF,GACAo6B,YACA9oD,OACA6uD,QAAS4kN,EAETx8P,GAAM+pG,aACNA,EAAa/pG,EAAM+pG,YAGnB/pG,EAAM28P,kBAA+C,KAA3B38P,EAAM28P,mBAChCF,MAGe,YAAf1yJ,GAA4B/pG,EAAM,iBAA6C,oBAA1BA,EAAM,kBAC3D08P,MAMAjlP,EAFAquK,GAAY/zI,IAAWvmD,KAAcmH,QAAUkzL,IAAep6L,KAAWoH,OAEzE4kB,MACOA,GACHmlP,YAAa92E,EAAShrK,gBAEnBk+B,EAAU/3C,QACjBwW,MACOA,GACHolP,WAAY7jN,EAAU/3C,UAI1BwW,MACOA,GACHqlP,OAAQ9jN,EAAUj4C,IAI1B,IAAMg8P,GAAqC,gBAAfhzJ,IAA0C,QAAfA,EACjDizJ,EAAyBD,GAAe5mC,GAAYsmC,EACtDpkN,EAAM65I,aAAW,kBAAmBz6K,EAAQulP,EAC5CN,KACArkN,yCAA6CA,GAGjDlyD,OAAO4Z,SAAWs4C,MniBwmzElBnuD,IAAK,uBACLC,MAAO,WmiBtmzEY,GACb4/G,GAAetlG,KAAKyE,MAApB6gG,WACajpG,EAAgC2D,KAAKH,MAAhD62D,QAAWr6D,0BAFA,EAGIA,MAHJ,IAGXd,iBAHW,MASnB,IAJIA,EAAM+pG,aACNA,EAAa/pG,EAAM+pG,aAGlBA,EACD,MAAO,KAGX,IAAMkzJ,GAAazB,GAASzxJ,EAC5B,OAAOkzJ,GAAaA,8BAAb,oBAE4BlqN,GAAQ6oN,sBAFpC,8DAIkC,iBAAf7xJ,EAAgCh3D,GAAQqpN,aAAe,WAJ1E,kBAKsB,YALtB,KAKwCa,EAAWt2L,aALnD,gBAMwB,MANxB,IAMmCs2L,EAAWp9L,SAN9C,IAM4D,uBAN5D,qBAUkB9sB,GAAQ6oN,sBAV1B,yEAY2B7oN,GAAQopN,aAZnC,QAY4D13P,KAAK63P,0BAZjE,qCAecvpN,GAAQ6oN,sBAftB,oDniB+nzEP1xQ,IAAK,SACLC,MAAO,WmiB9mzEF,MAMDsa,KAAKH,MAJLwsC,EAFC,EAEDA,KAFC,IAGD/xC,YAHC,sBAGei2C,GAHf,EAGeA,SACLl0C,EAJV,EAIDq6D,QAAWr6D,0BACDo8P,EALT,EAKD3lM,SALC,EAOkBz2D,MAPlB,IAOGd,iBAPH,OAQG6xC,EAAkCf,EAAlCe,UAAW9oD,EAAuB+nD,EAAvB/nD,KARd,EAQqC+nD,EAAjBuI,mBARpB,OASC2G,EAAS3G,EAAQ,OACjB41G,EAAoB/E,aAAgBp5G,GACpCm5D,EAAK7sG,aAAYA,MAChB4C,EADI,MAENlU,KAAMqI,qBAELgpQ,EAAeA,SAASlzJ,EACxBmzJ,EAAoB5hD,aAA+B1qK,EAAMkE,GAC3DuiB,EAAW2lM,CACiB,SAA5Bl9P,EAAMlU,KAAMwJ,cACZiiE,EAAWvsE,KAASmC,QAGxB,IAAIgiH,GAAOA,UAAP,IAAgB,OAAhB,MAA6B,MAA7B,IAA2Cl9F,GAA3C,2CA8BJ,OA7BI2lD,cAAkB5X,EAAQt0D,KAAUuH,OAEhCk8G,EADAx4C,aAAoB3W,EAAQp0D,KAAayH,eACzC87G,UAAA,IAEY,SAFZ,MAGc,MAHd,OAIe,KAJf,IAKgBl9F,GALhB,2CAQO0kD,aAAoB3W,EAAQp0D,KAAa0H,eAChD67G,UAAA,IAEY,SAFZ,MAGc,MAHd,IAIgBl9F,GAJhB,2CAQAk9F,UAAA,IAEY,QAFZ,MAGc,MAHd,IAIgBl9F,GAJhB,kDAUR,oBACoB8gC,GAAQuS,kBAD5B,GAES,MAFT,OAIgBv8D,KAAM,WACNiuD,QAAS,+EALzB,OAQkBmiN,IAAK,aAAc32P,KAAS+4P,GAAT,oBACnBpC,IAAK,aAAc32P,KAAS+4P,GAAT,wBATrC,QAYgBj3L,QAAQA,mWAODxwD,KAPP,sNAYOi/B,GAAQ4tC,UAZf,uHAeO5tC,GAAQo8D,KAff,wHAkBOp8D,GAAQo8D,KAlBf,6DAmBOp8D,GAAQ4oN,UAnBf,yHAsBO5oN,GAAQ6oN,cAtBf,kOA2BO7oN,GAAQuS,UA3Bf,omBAsCOvS,GAAQopN,aAtCf,okCA4DOppN,GAAQopN,aA5Df,mPAiEOppN,GAAQopN,aAjEf,8EAmEOppN,GAAQipN,KAnEf,uHAsEOjpN,GAAQipN,KAtEf,0EAwEOjpN,GAAQipN,KAxEf,kLA4EOjpN,GAAQipN,KA5Ef,KA4EwBjpN,GAAQkpN,SA5EhC,sTAkFOlpN,GAAQ++G,OAlFf,sLAuFO/+G,GAAQ++G,OAvFf,mOA6FO/+G,GAAQ++G,OA7Ff,qIAiGO/+G,GAAQ++G,OAjGf,2IAqGO/+G,GAAQ8oN,YArGf,4TA6GO9oN,GAAQ8oN,YA7Gf,sIAiHO9oN,GAAQ8oN,YAjHf,0WAyHO9oN,GAAQ8oN,YAzHf,ibAmIO9oN,GAAQ+oN,WAnIf,uKAuIO/oN,GAAQgpN,UAvIf,iSA6IOhpN,GAAQgpN,UA7If,iIAgJOhpN,GAAQgpN,UAhJf,6OAuJOhpN,GAAQE,MAvJf,mVA8JOF,GAAQE,MA9Jf,ibAuKOF,GAAQqpN,aAvKf,k8BAZhB,SA0MgB5zQ,IAAK43F,GAAQ7oB,OA1M7B,oBA6MwBxkB,GAAQo8D,aACnBA,GA9Mb,iCAiNqCp8D,GAAQ6oN,cAjN7C,IAiN8D7oN,GAAQ4oN,kBAjNtE,oGAqN4B5oN,GAAQ8oN,oBArNpC,oCAuN0BhqN,EAvN1B,IAuN0C9oD,IAvN1C,8CAyNoCgqD,GAAQ+oN,mBAAa/yQ,GAzNzD,oBA0NoCgqD,GAAQgpN,kBA1N5C,oBA2N+B9sG,OA3N/B,mCAiOuCl8G,GAAQipN,aAClCv3P,KAAK44P,uBACLD,EAAoBA,yBAApB,UAEqBrqN,GAAQkpN,SAF7B,KAE6CmB,UAF7C,yBAMG,KAzOhB,eA0OwBj8K,QAAS,gBA1OjC,kBA2O8BpuC,GAAQkpN,SA3OtC,KA2OsDkB,UA3OtD,wCAiPwBpqN,GAAQ++G,eAjPhC,aAkPoB,8BAlPpB,8BAmP0B/+G,GAAQmpN,QAnPlC,KAmPgD,0BAnPhD,8BAqP2BnpN,GAAQmpN,QArPnC,KAsPqB,wEAtPrB,IAsPiG,mBAtPjG,0BAwP0BnpN,GAAQmpN,QAxPlC,QAwPoD3O,WAxPpD,qBA2PSv3F,GAAA,WniB86yENw5F,GmiB92zEarqP,aA+cxBqqP,IAAUR,aACN7sM,KACA,SAAC/L,EAAYp2C,GAAb,MAAuB,UAACsK,GAKpB,MAFAA,GAAS2iD,kBACT3iD,EAAS4mD,kBACF5mD,EAAS4yC,aAJL,YACE,YAG6Bl9C,MAIlD,IAAM0M,IAAkB,SAACxD,GAAD,OACpB4nC,KAAM04G,aAAatgJ,GACnBnK,aAAcD,aAAqBoK,GACnCiyD,QAAS79D,aAAgB4L,GACzBmT,SAAUzD,aAAiB1P,GAC3BquD,SAAUz3D,aAAiBoJ,GAC3BqzP,iBAAkBzgM,aAAyB5yD,KAGhC+pF,gBAAQvmF,IAAiB8iP,IniBq6yEpC8N,GAAuB,WAAc,GAAItxK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr5BixK,GAA+B,WAAc,QAASh0M,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MoiBz8zE5iBqwM,GAGA74P,KAHA64P,aACAzmP,GAEApS,KAFAoS,cACAqpP,GACAz7P,KADAy7P,UAGAC,GAAgBtpP,GAAhB,aAA0CymP,GAA1C,MACA4C,MACAC,GAAa,mCAGjB,IAAMxoN,KACFuS,UAAW,mBACX6pD,KAAM,wBACNwsJ,UAAW,8BACXC,cAAe,wBACfI,KAAM,wBACNC,SAAU,6BACVnqG,OAAQ,0BACRoqG,QAAS,6BAGPzM,G,YACF,WAAYnrP,GAAO,2EACTA,GADS,OAEf,GAAK4E,SAFU,EpiBkh0EnB,MA1DA6kP,IAA0B0B,EAAiBzkG,GAW3CuyG,GAA6B9N,IACzBvlQ,IAAK,SACLC,MAAO,WoiBh+zEF,MAIDsa,KAAKH,MAFL1D,EAFC,EAEDA,SACQsuC,EAHP,EAGDyB,KAAQzB,cAGNigE,EAAOA,UAAP,IAAgB,OAAhB,MAA6B,MAA7B,IAA2Cl9F,GAA3C,2CAEN,4BACoB8gC,GAAQuS,kBAD5B,GAES,MAFT,OAIgBv8D,KAAM,WACNiuD,QAAS,+EALzB,OAQkBmiN,IAAK,aAAc32P,KAAS+4P,GAAT,oBACnBpC,IAAK,aAAc32P,KAAS+4P,GAAT,wBATrC,QAYgBj3L,QAAQA,mWAODvxB,GAAQo8D,KAPf,wHAUOp8D,GAAQo8D,KAVf,6DAWOp8D,GAAQ4oN,UAXf,yHAcO5oN,GAAQ6oN,cAdf,kOAmBO7oN,GAAQuS,UAnBf,omBA8BOvS,GAAQipN,KA9Bf,uHAiCOjpN,GAAQipN,KAjCf,0EAmCOjpN,GAAQipN,KAnCf,kLAuCOjpN,GAAQipN,KAvCf,KAuCwBjpN,GAAQkpN,SAvChC,sTA6COlpN,GAAQ++G,OA7Cf,oLAiDO/+G,GAAQ++G,OAjDf,iOAsDO/+G,GAAQ++G,OAtDf,mIAyDO/+G,GAAQ++G,OAzDf,gQAZhB,oBA8EwB/+G,GAAQo8D,aACnBA,GA/Eb,iCAkFqCp8D,GAAQ6oN,cAlF7C,IAkF8D7oN,GAAQ4oN,kBACzDzsN,EAActuC,EAAS,+BAnFpC,oBAsFwBmyC,GAAQ++G,eAtFhC,aAuFoB,8BAvFpB,8BAwF0B/+G,GAAQmpN,QAxFlC,KAwFgD,0BAxFhD,8BAyF0BnpN,GAAQmpN,QAzFlC,KAyFgD,qCAzFhD,IAyFyF,mBAzFzF,0BA0F0BnpN,GAAQmpN,QA1FlC,QA0FoD3O,WA1FpD,uBpiBqg0EGkC,GoiBnh0EmB3mM,iBAoH9B2mM,IAAgBT,aACZ,iBAAMxyM,cAAY,cAAe,gBAGtBiM,qBAAWgnM,IpiBo6zEtB+N,GAAe93Q,EAAoB,GqiBtj0ExBqY,6BAAe0yC,KAAc,oBAAGyE,cAAH,0BriBmk0ExC+5C,GAAgBvpG,EAAoB,IAGpC+3Q,GAAkB/3Q,EAAoB,KACtCg4Q,GAAuCh4Q,EAAoB4D,EAAEm0Q,IAG7DE,GAAqB,WAAc,GAAI3xK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UsiB3k0Ej5BsxK,GAAgB,SAAC,GAAD,GAAG1zQ,GAAH,EAAGA,IAAK41E,EAAR,EAAQA,MAAOiiD,EAAf,EAAeA,OAAf,0BAGJ,yEAHI,MAIPjiD,EAJO,QAKLiiD,GAHJ73H,IAaE0zQ,MtiB6k0EXC,GAAqB,WAAc,GAAI7xK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UuiB5l0Ej5BwxK,GAAgB,SAAC,GAAD,GAAG5zQ,GAAH,EAAGA,IAAK41E,EAAR,EAAQA,MAAOiiD,EAAf,EAAeA,OAAf,0BAGJ,wEAHI,MAIPjiD,EAJO,QAKLiiD,GAHJ73H,IAaE4zQ,MviB8l0EXC,GAAgB,WAAc,GAAI/xK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAE94B0xK,GAAwB,WAAc,QAASz0M,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MwiB3m0EniBj5D,G,YACF,WAAYkV,GAAO,2EACTA,GADS,OAEf,GAAK4E,OACD0qD,aAAYA,GAEhB,EAAKmuD,QAAU,EAAKA,QAAQx4G,KAAb,GALA,ExiBov0EnB,MA3HA2kP,IAAmB9+P,EAAU47J,GAc7BgzG,GAAsB5uQ,IAClBlF,IAAK,oBACLC,MAAO,WwiBjo0EPsa,KAAKw5P,oBxiBqo0EL/zQ,IAAK,qBACLC,MAAO,WwiBno0EPsa,KAAKw5P,oBxiBuo0EL/zQ,IAAK,UACLC,MAAO,SwiBto0EHwlC,GACAA,GACAA,EAAMkvD,gBAFC,OAImBp6E,KAAKH,MAA3ByyC,EAJG,EAIHA,SAAUgrE,EAJP,EAIOA,QACZ/oE,EAAYrpB,EAAM6uD,cAAc30B,aAAa,WAC7C7S,EAAUD,EAASz8B,OAAO,qBAAGvZ,KAAgBi4C,IAAW,EAC1D+oE,IACAA,EAAQ/qE,MxiBgp0EZ9sD,IAAK,iBACLC,MAAO,WwiB7o0EFsa,KAAKy5P,kBAGVz5P,KAAKy5P,gBAAgBl2N,UAAU+T,OAAO,oBAGjCt3C,KAAKyE,MAAM0qD,aACZnvD,KAAKmG,UACDgpD,aAAYA,QxiBmp0EpB1pE,IAAK,SACLC,MAAO,WwiBhp0EF,WACG4sD,EAAatyC,KAAKH,MAAlByyC,QACR,KAAKA,EAAStwD,OACV,MAAO,KAEX,IAAM03Q,GAAmC,IAApBpnN,EAAStwD,OACxB86F,GACFuhC,UAASA,EACTs7I,cAAe,IACfC,cAAaA,EACbC,cAAaA,EACbx/F,MAAO,IACPhD,OAAMA,EACNyiG,kBAAiBA,EACjBC,QAASL,EACTM,MAAON,EACP/4M,UAAWkkG,KAAW,uBAAyB,8BAA+B60G,IAC9EO,UAAW,qBACXC,UAAUA,GAAE,OACZC,UAAUA,GAAE,OACZC,aAEQthG,WAAY,IACZh8E,UACIi9K,QAAOA,MAMjB7J,EAAQ59M,EAAStgC,IAAI,eAAG1V,GAAH,EAAGA,GAAIhY,EAAP,EAAOA,KAAM8oD,EAAb,EAAaA,SAAb,4BACQ,6BAArBA,EADa,kBAEP9wC,EAFO,QAEM,EAAKghH,gBAFX,cAGLlwE,EAHK,IAGW9oD,OAKtC,OACI,2BACIshB,IAAK,SAAAy0P,GAAS,EAAKZ,gBAAkBY,GACrC15M,UAAU,mDAEV,mBAAC,KAAWm8B,EACPozK,QxiBmq0EVvlQ,GwiBrv0EY05D,iBA8FvB15D,IAAS88F,cACLn1C,YAGW3nD,WxiB4p0EX6mG,GAA6BvwG,EAAoB,KAGjDq5Q,GAAiB,WAAc,GAAI/yK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAE/4B0yK,GAAqBp4Q,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAE7Pk5P,GAAyB,WAAc,QAAS11M,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MyiB9v0EpiB4nM,G,YACF,WAAY3rP,GAAO,2EACTA,GADS,OAEf,GAAKy9G,QAAU,EAAKA,QAAQx4G,KAAb,GAFA,EziBo10EnB,MAjEA8kP,IAAoB4B,EAAWjlG,GAW/Bi0G,GAAuBhP,IACnB/lQ,IAAK,UACLC,MAAO,WyiB5x0EW,GAAd6sD,GAAc,4DACmBA,EAA7BsC,KADU,2BACDklB,eADC,EACK,GADL,EAEZtvD,EAAS,wCAAwC8oF,KAAKx5B,EAC5D,IAAKtvD,GAAWA,EAAO,GAAvB,CAGA,GAAMlO,GAAWkO,EAAO,GACpB+6F,EAAK/6F,EAAO,EACZ+6F,KACAA,EAAKhU,aAA2BgU,EAAGt9E,OAAO,IAT5B,OAWQloB,KAAKH,MAAvBskB,EAXU,EAWVA,MAAOgoE,EAXG,EAWHA,OAET5wF,EAAQA,MACPiqG,EACArhF,EAGPgoE,GAAOjqG,MACHqa,WACAhB,cziBqy0EJ9V,IAAK,SACLC,MAAO,WyiBny0EF,MACmCsa,KAAKH,MAArC46P,QADH,sBACenoN,GADf,EACeA,SACdg4M,GAAY,GAACr0J,GAAA,KAAa,aAChC,WACKnO,GAAA,GADL,UAC6B,aAD7B,IAC+CwiK,UAD/C,oBAEuB,yCAFvB,wBAG+B,gBAH/B,GAIiB,IAJjB,SAIoCh4M,EAJpC,QAIuDtyC,KAAKs9G,UAJ5D,GAKiBgE,GAAA,GALjB,SAK+C96H,KAASgF,WAAe,gCziBiz0EpEggQ,GyiBr10EannM,iBAkDxBmnM,IAAUjB,aACN,SAACv3O,EAAQzX,EAAOW,GAAhB,MAAyB23C,cAAsB,YAAa7gC,EAAQzX,EAAOW,IAG/E,IAAM+L,IAAkB,SAACxD,GAAD,OACpBg2P,SAAUC,GAAiBj2P,GAC3B0f,MAAOm3B,aAAwB72C,KAGpB8pF,yBAAWC,aAAQvmF,IAAiBujP,KziB0y0E/CmP,GAAiB,WAAc,GAAIpzK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U0iB520E74B+yK,GAAY,SAAC,GAAwG,GAAtGt2Q,GAAsG,EAAtGA,KAAMumD,EAAgG,EAAhGA,YAAagwN,EAAmF,EAAnFA,SAAU/mP,EAAyE,EAAzEA,MAAOgnP,EAAkE,EAAlEA,UAAW9/L,EAAuD,EAAvDA,SAAUzoB,EAA6C,EAA7CA,QAAuBwoN,EAAsB,EAApCzvK,aAE7E0vK,EAAahgM,EAAYA,EAASjuD,QAAQ,WAAY,KAAO,GAC7Du+E,GAAgB/gD,aAAQgI,IAAYwoN,EACpCr1G,EAAoBr3G,KAAW,cAAe,sBAChD,qBAAuB9D,aAAQgI,IAAYA,EAAQjF,SAAWvmD,KAAciH,MAEhF,gCACuB,gCADvB,uBAE0B,uBACbs9F,EAAeA,QAAf,UACgB,QADhB,QACiCA,UADjC,2CAG0B,WAH1B,IAG0Cx3E,EAH1C,IAGsDxvB,KAHtD,oBAKuBohK,KALvB,qBAQmB,gBARnB,2CAU0B,WAV1B,IAU0C5xI,EAV1C,IAUsDxvB,OAbnE,2BAkB8B,2BACjBw2Q,GAAaA,UAAb,UACkB,yBADlB,oBAEsB,sBAFtB,IAEiDA,EAFjD,IAEiEx2Q,KArB9E,oBAwB2B,yBAxB3B,oBAyB+B,6BAzB/B,qBA0BoC,0BAAmB02Q,KA1BvD,oBA6B2B,0BAAmB12Q,GA7B9C,oBA8B2B,gCACVumD,GA/BjB,oBAiC2B,2BACVgwN,MAkBND,M1iBs30EX90G,GAAW7kK,EAAoB,IAG/Bg6Q,GAAe,WAAc,GAAI1zK,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U2iB960E34BqzK,GAAoBp1G,aAAS80G,IAEtBO,GAAU,SAAC,GAAmB,GAAjBlvN,GAAiB,EAAjBA,KAAMI,EAAW,EAAXA,KAAW,EAYnCJ,EAVAmE,MAFmC,2BAG/B9rD,gBAH+B,EAGxB,GAHwB,MAI/BumD,uBAJ+B,EAIjB,GAJiB,MAK/BmwB,oBAL+B,EAKpB,GALoB,MAM/BogM,uBAN+B,EAMjB,GANiB,MAO/B1rG,2BAP+B,WAQ/B57I,iBAR+B,WAS/BgnP,qBAT+B,SAYnC7uN,EADAqE,mBAXmC,OAcjC8B,EAAS9B,EAAQ,OACjBsC,EAAYR,EAAO19B,UAAY09B,EAAO19B,SAASk+B,UAAaR,EAAO91C,GACnEunF,EAAazxC,EAAO9tD,KACpB+2Q,GAAc9wN,aAAQ8B,IAAUA,EAAKuI,SAAWvI,EAAKuI,QAAQ5yD,OAAjD,GACbk5Q,IADa,KAEJ52Q,EAFI,YAGGumD,EAHH,SAIAmwB,EAJA,SAKAogM,EALA,MAMH1rG,EAAgB3xJ,KANb,QAODsuC,EAPC,SAQAuG,EARA,WASEixC,IATF,GAYb,IAZa,KAaJv/F,EAbI,YAcGumD,EAdH,SAeAmwB,EAfA,SAgBAogM,EAhBA,MAiBH1rG,EAAgB3xJ,KAjBb,KAkBJ+V,EAAM/V,KAlBF,UAmBC+8P,EAAU/8P,MAG7B,WACK+pF,GAAA,GADL,UAC6B,aAD7B,IA1BiB,aA0BjB,oBAEuB,yCAFvB,wBAG+B,gBACduzK,EAJjB,GAKiB/5I,GAAA,GALjB,iDAS8B96H,KAASkF,SAHf,6BAgBtBuc,GAAkB,SAACxD,GAAD,OACpBwnC,KAAMD,aAAavnC,GACnB4nC,KAAM04G,aAAatgJ,IAGvB02P,IAAQ5Q,aACJ,SAACv3O,EAAQzX,EAAOW,GAAS,GACbkwC,GAA8Bp5B,EAA9Bo5B,SAAakvN,EADA,GACiBtoP,GADjB,YAErB,OAAO6gC,cAAsBzH,EAAUkvN,EAAc//P,EAAOW,IAIrDsyF,qBAAQvmF,IAAiBkzP,I3iBg80EpClQ,GAAuBhqQ,EAAoB,KAG3CiqQ,GAA0BjqQ,EAAoB,KAG9CwvE,GAAmBxvE,EAAoB,IAGvC2iK,GAAgB3iK,EAAoB,KAGpCs6Q,GAA4B,WAAc,GAAIh0K,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAE15B9xB,GAAiB,WAAc,QAASC,GAAcpiE,EAAKtS,GAAK,GAAI20E,MAAeC,KAAeC,KAAgBC,QAAgB,KAAM,IAAK,GAAiCC,GAA7BC,EAAK1iE,EAAIk2C,OAAOnD,cAAmBuvB,GAAMG,EAAKC,EAAGz0D,QAAQizB,QAAoBmhC,EAAK/zE,KAAKm0E,EAAG3wE,QAAYpE,GAAK20E,EAAKj0E,SAAWV,GAA3D40E,OAAyE,MAAOhxE,GAAOixE,KAAWC,EAAKlxE,EAAO,QAAU,KAAWgxE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUriE,EAAKtS,GAAK,GAAI0S,MAAM+c,QAAQnd,GAAQ,MAAOA,EAAY,IAAIk2C,OAAOnD,WAAYxkD,QAAOyR,GAAQ,MAAOoiE,GAAcpiE,EAAKtS,EAAa,MAAM,IAAI48B,WAAU,4DAEllBs9O,GAAoC,WAAc,QAAS12M,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M4iB5h1EjjBqwM,GAGA74P,KAHA64P,aACAxmP,GAEArS,KAFAqS,QACAopP,GACAz7P,KADAy7P,UAGE4E,GAAehuP,GAAf,aAAmCwmP,GACrC6C,GAAgB2E,GAAhB,MACA5E,MACAC,GAAa,mCAGjB,IAAM4E,KACFptG,QAAS,IAGPqtG,GAAqB,UAErBxQ,G,YACF,WAAYtrP,GAAO,2EACTA,GADS,OAEf,GAAK4E,OACDuT,KAAM2jP,GACNxoN,QAAS,IAEb,EAAKyoN,iBAAmB,EAAKA,iBAAiB92P,KAAtB,GACxB,EAAK+2P,gBAAkB,EAAKA,gBAAgB/2P,KAArB,GACvB,EAAKg3P,YAAc,EAAKA,YAAYh3P,KAAjB,GACnB,EAAKi3P,gBAAkB,EAAKA,gBAAgBj3P,KAArB,GATR,E5iBgr1EnB,MAlIAilP,IAA+BoB,EAAsB5kG,GAkBrDi1G,GAAkCrQ,IAC9B1lQ,IAAK,mBACLC,MAAO,S4iBtj1EMwlC,GACblrB,KAAKmG,UACD6R,KAAMkT,EAAM5pB,OAAO5b,W5iB0j1EvBD,IAAK,kBACLC,MAAO,S4iBvj1EKwlC,GACZlrB,KAAKmG,UACDgtC,QAASjoB,EAAM5pB,OAAO5b,W5iB2j1E1BD,IAAK,cACLC,MAAO,S4iBxj1ECwlC,GACJlrB,KAAKyE,MAAMuT,OAAS2jP,KACpBzwO,EAAMkvD,iBACNp6E,KAAKpN,W5iB4j1ETnN,IAAK,OACLC,MAAO,W4iBxj1EP2qO,MAAM,wB5iB6j1EN5qO,IAAK,kBACLC,MAAO,W4iB3j1EO,MACYsa,KAAKyE,MAAvBuT,EADM,EACNA,KAAMm7B,EADA,EACAA,OACd,IAAIn7B,IAAS2jP,GAET,WADA37P,MAAKpN,MAITlR,QAAO6rG,KAAP,0BAAsCv1E,EAAtC,YAAsDm7B,M5iBik1EtD1tD,IAAK,SACLC,MAAO,W4iB/j1EF,aACqBsa,KAAKyE,MAAvBuT,EADH,EACGA,KAAMm7B,EADT,EACSA,QADT,EAEmDnzC,KAAKH,MAFxD,OAEGosC,KAAQqE,QAFX,UAEqB8B,WAFrB,OAEqCiX,EAFrC,EAEqCA,UAFrC,EAGqBjX,EAAlBE,oBAHH,OAMC4jN,EAAkB7sM,EAAUr3C,IAAI,eAAG1tB,GAAH,EAAGA,KAAMmmE,EAAT,EAASA,YAAT,2BACnBA,UAAenmE,IAQlC,OANA4xQ,GAAgBxrM,QAAhB,mBACmBixM,WACV,gCAIT,gBACgBD,WADhB,GAES,MAFT,OAIkBp3Q,KAAM,SAAUiuD,QAAS,sBAJ3C,OAOkBmiN,IAAK,aAAc32P,KAAS+4P,GAAT,cAPrC,QAUgBj3L,QAAQA,6TAVxB,0DAqBsBouF,UAAW,YArBjC,gBAuBmB,eAvBnB,aAwB8Bj2I,EAxB9B,OAyByBgxD,MAAO,KAzBhC,SA0B0BhpE,KAAK47P,yBAEd1F,IA5BjB,iBA+BsBjoG,UAAW,YA/BjC,qBAgC6BjuJ,KAAK+7P,wBAhClC,4BAiCwB,OAjCxB,MAiCsC5oN,EAjCtC,SAiCyDnzC,KAAK67P,mBAjC9D,gBAmCoBH,WAnCpB,kBAqCiBppN,EAAStgC,IAAI,eAAG1V,GAAH,EAAGA,GAAIhY,EAAP,EAAOA,IAAP,2BACYgY,EADZ,OACyB0/P,cAAe,WAAzC1/P,EADC,GAELsnJ,GAAA,GAFK,IAGIrnJ,SAAU,cAAehB,OAASe,KAAI0b,SAH1C,OAIK,SAJL,QAKO,EAAK8jP,oBAEbx3Q,a5iBwk1E1B6mQ,G4iBjr1EwB9mM,iBAoHnC8mM,IAAqB1jK,cACjBp+B,cAQJ8hM,GAAqBZ,aACjB,SAACv3O,EAAQzX,EAAOW,GAAhB,MAAyB23C,cAAsB,OAAQ7gC,EAAQzX,EAAOW,IACtE,SAACggB,EAAG3gB,GAAJ,MAAckuD,eAAehC,SAAUlsD,EAAMmyE,UAGjD,IAAMzlE,IAAkB,SAACxD,GAAD,OACpBwnC,KAAMD,aAAavnC,GACnB4kD,UAAWO,aAAkBnlD,KAGlB+pF,gBAAQvmF,IAAiBkjP,I5iBgk1EpCC,GAAsBnqQ,EAAoB,KAG1CoqQ,GAAkBpqQ,EAAoB,KAGtCg7Q,GAA4B,WAAc,GAAI10K,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,U6iBju1E15Br6E,GAEApS,KAFAoS,cACAC,GACArS,KADAqS,QAGSyuP,GAAuB,SAAC,GAG/B,GAFFz7P,GAEE,EAFFA,SAEE,IADF+pC,IACE,sBADMljB,GACN,EADMA,MAAOujB,EACb,EADaA,YAAaC,EAC1B,EAD0BA,SAAU0B,EACpC,EADoCA,aAAcI,EAClD,EADkDA,kBAAmBC,EACrE,EADqEA,YAAaF,EAClF,EADkFA,UAAWG,EAC7F,EAD6FA,eAAgBC,EAC7G,EAD6GA,QAEzGovN,IACA,aAAc,eAAgB5pN,QAAS,6BACvC,aAAc,kBAAmBA,QAAS,qBAC1CjuD,KAAM,WAAYiuD,QAAS,+EAC3BjuD,KAAM,QAASiuD,QAASjrB,IACxBhjC,KAAM,cAAeiuD,QAAS1H,IAC9BvmD,KAAM,gBAAiBiuD,QAASzH,IAChCxmD,KAAM,WAAYiuD,QAASzH,IAC3BxmD,KAAM,SAAUiuD,QAAS,UACzBvtD,SAAU,YAAautD,QAAS,oBAChCvtD,SAAU,eAAgButD,QAAS,aACnCvtD,SAAU,SAAUutD,QAAS5F,IAC7B3nD,SAAU,WAAYutD,QAAS1F,IAC/B7nD,SAAU,iBAAkButD,QAAS3F,IACrC5nD,SAAU,WAAYutD,QAASzF,IAC/B9nD,SAAU,UAAWutD,QAAS,YAC9BjuD,KAAM,eAAgBiuD,QAAS,SAC/BjuD,KAAM,cAAeiuD,QAAS5F,IAC9BroD,KAAM,gBAAiBiuD,QAAS1F,IAChCvoD,KAAM,sBAAuBiuD,QAAS3F,IACtCtoD,KAAM,gBAAiBiuD,QAASzF,IAChCxoD,KAAM,eAAgBiuD,QAAS,YAC/BjuD,KAAM,0BAA2BiuD,QAAS,SAC1CjuD,KAAM,wBAAyBiuD,QAAS,cACxCjuD,KAAM,8BAA+BiuD,QAAS,SAC9CjuD,KAAM,4BAA6BiuD,QAAS,yBASlD,OANIxF,IACAovN,EAAQzxM,SACFpmE,KAAM,SAAUiuD,QAAS,sBAInC,oBACmB,qBADnB,GAES,MAFT,MAGmBjrB,EAHnB,OAKkBotO,IAAK,YAAa32P,KAAMyuC,IACxBkoN,IAAK,YAAa32P,KAASyP,GAAT,2BAAkDmgB,MAAO,UAAWq7J,MAAO,QAC7F0rE,IAAK,gBAAiB32P,KAASyP,GAAT,iBACtBknP,IAAK,eAAgB32P,KAAM0P,KAC3BinP,IAAK,eAAgB32P,KAAMyP,KAC3BknP,IAAK,aAAc32P,KAAM0P,GAAS2uP,YAAa,KAC/C1H,IAAK,aAAc32P,KAAMyP,GAAe4uP,YAAa,KAEnD1H,IAAK,mBACL32P,KAASyP,GAAT,mEAGAknP,IAAK,+BACL32P,KAASyP,GAAT,mEAGAknP,IAAK,+BACL1rE,MAAO,QACPjrL,KAASyP,GAAT,mEAGAknP,IAAK,+BACL1rE,MAAO,UACPjrL,KAASyP,GAAT,qEAGAknP,IAAK,+BACL1rE,MAAO,UACPjrL,KAASyP,GAAT,qEAjCpB,KAoCkB2uP,EApClB,SAsCgBz4Q,KAAM,sBACNsuE,UAAUA,kPAQjBvxD,IAUPwH,GAAkB,SAACxD,EAAO5E,GAAR,OACpB2qC,KAAMO,aAAatmC,EAAO5E,KAGfmkD,gBAAWwqC,aAAQvmF,IAAiBi0P,K7iBks1E/Cz4N,GAAUxiD,EAAoB,KAG9Bq4P,GAAmBr4P,EAAoB,KAGvC61N,GAAiB71N,EAAoB,K8iBrz1E1B,IACXinF,UACIm0L,cAAe,QACfC,MAAO,cACPtsP,QAAS,QACTo8B,SAAU,cACVsoK,SAAU,cACVl/M,KAAM,OACNi0E,QAAS,aACT8yL,WAAY,QACZC,QAAS,2BACTtgQ,KAAM,QACNwuC,YAAa,QACb2R,MAAO,QACPktB,QAAS,YACTkzL,SAAU,OACVC,OAAQ,gBAEZh8E,WACIi8E,WAAUA,EACVlhQ,KAAM,eACNqwI,KAAM,wBACNthH,OAAQ,eACRoyO,WAAUA,EACVt1O,MAAO,yDACPotL,SAAU,QACVmoD,QAAS,SAEb50L,QAAS34D,KACTwtP,QACIC,cAAaA,EACbl1M,YAAa,OACbm1M,QAAS,8DACTC,WAAY,EACZC,QAAS,4CACTC,aAEQC,OAAQ,MACR5nQ,KAAM,aACN6nQ,MAAKA,IAGLD,OAAQ,QACR5nQ,KAAM,eACN6nQ,MAAKA,IAGb7yO,OAAQ,eACRltB,KAAM,WACNggQ,IAAK,2sBACLC,YAAWA,EACXj8P,QAAOA,EACPk8P,iBAEQJ,OAAQ,MACR5nQ,KAAM,aACN6nQ,MAAKA,IAGLD,OAAQ,QACR5nQ,KAAM,eACN6nQ,MAAKA,IAGLD,OAAQ,QACR5nQ,KAAM,iBACN6nQ,MAAKA,KAIjBI,gBAAeA,EACf/vL,OAAQ,UACRgwL,KAAIA,G9iBsz1EJC,GAAkB,WAAc,GAAIp2K,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEh5B+1K,GAA0B,WAAc,QAAS94M,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M+iBv31EniBqwM,GAAgC74P,KAAhC64P,aAAczmP,GAAkBpS,KAAlBoS,cAChBiuP,GAAejuP,GAAf,aAAyCymP,GAEzCrJ,G,Y/iBg51EF,QAASA,KAGL,MAFAZ,IAA2BhqP,KAAM4qP,GAE1BX,GAAsCjqP,MAAO4qP,EAAWtrP,WAAand,OAAOuuC,eAAek6N,IAAal4P,MAAMsN,KAAMrN,YAwC/H,MA7CAu3P,IAAqBU,EAAYrkG,GAQjCq3G,GAAwBhT,IACpBnlQ,IAAK,oBACLC,MAAO,W+iBv51ES,GACRua,GAAUD,KAAKF,QAAfG,KACRD,MAAKo5O,qBAAuBH,aAAiBh5O,GACzCq5O,U/iB051EJ7zP,IAAK,uBACLC,MAAO,W+iBt51EHsa,KAAKo5O,sBACLp5O,KAAKo5O,0B/iB251ET3zP,IAAK,SACLC,MAAO,W+iBx51EF,MACiCsa,KAAKH,MAAnCzG,IAAOs0E,EADV,EACUA,OAAQ5xE,EADlB,EACkBA,QACvB,8BAES,MAFT,SAIgB/X,IAAQ03Q,GAAR,qBAEAzpM,UAAUA,mGAEUiiM,GAFpB,2HAI4BvmL,EAJ5B,iGAMoB5xE,EANpB,+IASwBqI,KAAKC,UAAUy5P,IATvC,gCAYA95Q,IAAK+yN,mBAGZ3/G,KAAM52F,SAASC,KAAKR,KAAKH,MAAMY,UArBxC,iBAsBwBg7P,GAtBxB,0CAuBwBA,GAvBxB,+B/iB261EG7Q,G+iB371EcvmM,iBAkDzBumM,IAAW5mP,cACP/D,MAAOqkD,aAAUv/D,QAGrB6lQ,GAAWkT,eAAiBn2Q,KAAoBuK,KAEhD,IAAM+V,IAAkB,SAACxD,GAAD,OACpBrL,IAAKD,aAAYsL,KAGN+pF,gBAAQvmF,IAAiB2iP,I/iBg51EpCU,GAAYrqQ,EAAoB,KAGhCsiM,GAActiM,EAAoB,KAGlC88Q,GAAqB57Q,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IgjB791E3P08P,GAAY,SAACn+P,GAAD,MACd,oBAAC0jL,GAAA,EAAD,IACI5iI,UAAU,aACVu1C,MAAQC,IAAK,aACbC,SAAS,YACT6tF,gBACIpkL,IAIZm+P,IAAUv2K,cACN4O,eAAcA,EAOH2nK,WhjB+91EXC,GAAyB,WAAc,GAAI12K,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UA6Ev5B0jK,GAAmBtqQ,EAAoB,KAGvCi9Q,GAAc,WAAc,GAAI32K,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UogBxg2Ej4Be,M6C5CA,YAAC/iF,GAA8F,GAApF8pF,GAAoF,0DAAnEh+C,EAAmE,0DAAlDp2C,EAAkD,aAA3CW,EAA2C,aAArC07C,EAAqC,0DAAvBumN,EAAuB,0DACtG5T,EAAc56J,EAAW1kG,OAAO,SAACuvB,EAAM5Y,GAAP,MAChC4Y,GAAK3H,OAAQjR,GAAWA,EAAQ2oP,kBAClC3yM,GACEwmN,EAAazuK,EAAW1kG,OAAO,SAACuvB,EAAM5Y,GAAP,MAC/B4Y,GAAK3H,OAAQjR,GAAWA,EAAQw8P,iBAClCD,EAEFC,GAAazmM,KAAMymM,GACnB7T,EAAc5yL,KAAM4yL,EACpB,IAAM8T,GAAcD,EAAWpsP,IAAI,SAACssP,GAAD,MAAez4P,GAASy4P,MAC3D,OAAOp7Q,MAAQyrC,IAAI0vO,GAAa3xE,QAAQ,WACpC,GAAM/zK,GAAW4xO,EAAYv4O,IAAI,SAAAwtG,GAAA,MAAU35G,GAAS25G,EAAO7tE,EAAYp2C,EAAOW,KAC9E,OAAOhZ,MAAQyrC,IAAIhW,MjjBks2EvB2/J,GAAuBr3L,EAAoB,KAG3Cs9Q,GAAsC,WAAc,QAASz5M,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MkjB7t2EjjB46M,G,YljB6u2EF,QAASA,KAGL,MAFAxS,IAAuChsP,KAAMw+P,GAEtCvS,GAAkDjsP,MAAOw+P,EAAuBl/P,WAAand,OAAOuuC,eAAe8tO,IAAyB9rQ,MAAMsN,KAAMrN,YAyEnK,MA9EAu5P,IAAiCsS,EAAwB5+P,GAQzD2+P,GAAoCC,IAChC/4Q,IAAK,oBACLC,MAAO,WkjBpv2ES,GACR2mQ,GAAgBrsP,KAAKH,MAArBwsP,WACRrsP,MAAKy+P,SAASpS,MljBwv2Ed5mQ,IAAK,qBACLC,MAAO,SkjBtv2EQyqO,GAAW,GAClBk8B,GAAgBrsP,KAAKH,MAArBwsP,YACFqS,EAAkBvuC,EAAUk8B,WAClCrsP,MAAKy+P,SAASpS,EAAaqS,MljB0v2E3Bj5Q,IAAK,WACLC,MAAO,SkjBxv2EF2mQ,GAAmC,GAAtBqS,GAAsB,yDACxC,IAAiC,OAA7Bh9Q,OAAOi9Q,mBAA8BtS,EAAYK,IAEjD,YADAhrQ,OAAOi9Q,kBAAoB,KAK/B,KAAID,EAAgBpjQ,UAAYojQ,EAAgBpjQ,SAASiB,WAAa8vP,EAAY/wP,SAASiB,SAA3F,CAPwC,MAYqCyD,KAAKH,MAA1EgG,EAZgC,EAYhCA,SAAuB+4P,EAZS,EAYtBC,YAAyCC,EAZnB,EAYOC,WAZP,EAasC1S,EAAtE18J,sBAbgC,SAasC08J,EAArDr5O,kBAbe,SAasCq5O,EAAxC/wP,QAbE,2BAaUC,iBAbV,OAa6BW,EAASmwP,EAATnwP,KAb7B,EAeJyzF,EAAW1kG,OAAO,SAACC,EAAK0W,GAOxD,MANIA,GAAQi9P,cACR3zQ,EAAI2zQ,YAAcj9P,EAAQi9P,aAE1Bj9P,EAAQm9P,aACR7zQ,EAAI6zQ,WAAan9P,EAAQm9P,YAEtB7zQ,IACN2zQ,YAAaD,EAAgBG,WAAYD,IARtCD,EAfgC,EAehCA,YAAaE,EAfmB,EAenBA,UAUrBF,GAAYh5P,GACZm5P,GAAmBn5P,EAAU8pF,EAAY38E,EAAQslK,aAAqB/8K,GAAQW,GAAMs2B,KAAK,iBAAMusO,GAAWl5P,SljB6w2E1GpgB,IAAK,SACLC,MAAO,WkjB1w2EP,MAAOsa,MAAKH,MAAMY,aljB+w2Ef+9P,GkjBzz2E0B99P,aAsDrC89P,IAAuB/2K,cACnBo3K,YAAa,aACbE,WAAY,aAGDP,WljBww2EXrnJ,GAAel2H,EAAoB,KAGnCg+Q,GAAc,WAAc,GAAI13K,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAE54Bq3K,GAAkB/8Q,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,GqgBhz2E1P5f,QAAOy9Q,eACPC,KAA0D,WAA7B19Q,OAAO4Z,SAAS2B,SAAwBvb,OAAOy9Q,aAAaE,cAAgB39Q,OAAOy9Q,aAAaG,SAA7H,IAIJ,IAAM5pD,IAAeh0N,QAAUA,OAAOi9Q,kBAChCzwJ,GAAaxsH,QAAUA,OAAO69Q,oBAC9BC,GAAyBliK,4BAAiB,iBAAMH,sBAClD5wD,SAAU,WAGRtsC,GAAQunP,GAAe9xC,GAAc8pD,IAAyBC,KAC9D7vK,GAAUkB,gCAAqB0uK,GAAwBv/P,IACrD4F,GAAa5F,GAAb4F,QAoDRnkB,QAAOg+Q,eAEHh+Q,OAAO8c,UAAYzF,KAAO4mQ,QAC1Bj+Q,OAAO8c,SAASohQ,gBAAgB,sBAGpC5R,aAAS,WACAtsQ,OAAO01H,KAQRk1I,KAPA,8BACK95N,KAAK85N,IACLv7L,MAAM,WAEHu7L,SAOhB5qQ,OAAOq6B,MAAQr6B,OAAOq6B,UACtBr6B,OAAOq6B,MAAM43E,SAAW,crgBq12ElB,SAAUtyG,EAAQD,GmjBv82ExBC,EAAOD,QAAU,SAAkBmpB,GACjC,MAAOA,IAAsB,gBAARA,IACI,kBAAbA,GAAI62I,MACS,kBAAb72I,GAAIy3M,MACc,kBAAlBz3M,GAAIq9M,YnjB882EZ,SAAUvmO,EAAQD,GojBl92EK,kBAAlBe,QAAOid,OAEhB/d,EAAOD,QAAU,SAAkBo8P,EAAMqiB,GACvCriB,EAAKsiB,OAASD,EACdriB,EAAKp7P,UAAYD,OAAOid,OAAOygQ,EAAUz9Q,WACvCid,aACE3Z,MAAO83P,EACP74P,YAAWA,EACXgB,UAASA,EACTjB,cAAaA,MAMnBrD,EAAOD,QAAU,SAAkBo8P,EAAMqiB,GACvCriB,EAAKsiB,OAASD,CACd,IAAIE,GAAW,YACfA,GAAS39Q,UAAYy9Q,EAAUz9Q,UAC/Bo7P,EAAKp7P,UAAY,GAAI29Q,GACrBviB,EAAKp7P,UAAUid,YAAcm+O,IpjB292E3B,SAAUn8P,EAAQD,GqjB7+2ExB,QAAS4R,KACL,OAAM,GAAKk9C,OAAOijE,UAHtB9xH,EAAOD,QAAU4R,GrjB0/2EX,SAAU3R,EAAQD,EAASH,asjB1/2EjC,GAoBA,QAAS++Q,GAAQ1jQ,EAAI2jQ,GACnBjgQ,KAAKkgQ,IAAM5jQ,EACX0D,KAAKmgQ,SAAWF,EAtBlB,GAAI,OAAJ,WAC6B,mBAAT/+P,OAAwBA,MAChCxf,OACRgR,EAAQg3C,SAAStnD,UAAUsQ,KAI/BtR,GAAQ6C,WAAa,WACnB,MAAO,IAAI+7Q,GAAQttQ,EAAMlR,KAAKyC,WAAYyxF,EAAO/iF,WAAY9P,eAE/DzB,EAAQomM,YAAc,WACpB,MAAO,IAAIw4E,GAAQttQ,EAAMlR,KAAKgmM,YAAa9xG,EAAO/iF,WAAY80L,gBAEhErmM,EAAQyB,aACRzB,EAAQqmM,cAAgB,SAAS3kM,GAC3BA,GACFA,EAAQkyF,SAQZgrL,EAAQ59Q,UAAUg+Q,MAAQJ,EAAQ59Q,UAAUwjB,IAAM,aAClDo6P,EAAQ59Q,UAAU4yF,MAAQ,WACxBh1E,KAAKmgQ,SAAS3+Q,KAAKk0F,EAAO11E,KAAKkgQ,MAIjC9+Q,EAAQi/Q,OAAS,SAASjqP,EAAMkqP,GAC9Bz9Q,aAAauzB,EAAKmqP,gBAClBnqP,EAAKoqP,aAAeF,GAGtBl/Q,EAAQq/Q,SAAW,SAASrqP,GAC1BvzB,aAAauzB,EAAKmqP,gBAClBnqP,EAAKoqP,cAAgB,GAGvBp/Q,EAAQs/Q,aAAet/Q,EAAQs7O,OAAS,SAAStmN,GAC/CvzB,aAAauzB,EAAKmqP,eAElB,IAAID,GAAQlqP,EAAKoqP,YACbF,IAAS,IACXlqP,EAAKmqP,eAAiBt8Q,WAAW,WAC3BmyB,EAAKuqP,YACPvqP,EAAKuqP,cACNL,KAKP,EAAQ,KAIRl/Q,EAAQuhD,aAAgC,mBAATzhC,OAAwBA,KAAKyhC,uBAC7B1uC,GAA0BA,EAAO0uC,cACxC3iC,MAAQA,KAAK2iC,aACrCvhD,EAAQw/Q,eAAkC,mBAAT1/P,OAAwBA,KAAK0/P,yBAC7B3sQ,GAA0BA,EAAO2sQ,gBACxC5gQ,MAAQA,KAAK4gQ,iBtjB8/2EVp/Q,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,aujBhk3EjC,oBACI,YAYA,SAAS0hD,GAAalM,GAEI,kBAAbA,KACTA,EAAW,GAAIiT,UAAS,GAAKjT,GAI/B,KAAK,GADD5pB,GAAO,GAAI7Y,OAAMrB,UAAU3Q,OAAS,GAC/BV,EAAI,EAAGA,EAAIurB,EAAK7qB,OAAQV,IAC7BurB,EAAKvrB,GAAKqR,UAAUrR,EAAI,EAG5B,IAAIu/Q,IAASpqO,SAAUA,EAAU5pB,KAAMA,EAGvC,OAFAi0P,GAAcC,GAAcF,EAC5BG,EAAkBD,GACXA,IAGT,QAASH,GAAej7N,SACbm7N,GAAcn7N,GAGzB,QAASjjC,GAAIm+P,GACT,GAAIpqO,GAAWoqO,EAAKpqO,SAChB5pB,EAAOg0P,EAAKh0P,IAChB,QAAQA,EAAK7qB,QACb,IAAK,GACDy0C,GACA,MACJ,KAAK,GACDA,EAAS5pB,EAAK,GACd,MACJ,KAAK,GACD4pB,EAAS5pB,EAAK,GAAIA,EAAK,GACvB,MACJ,KAAK,GACD4pB,EAAS5pB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAChC,MACJ,SACI4pB,EAAS/jC,MAAMisB,EAAW9R,IAKlC,QAASo0P,GAAat7N,GAGlB,GAAIu7N,EAGAj9Q,WAAWg9Q,EAAc,EAAGt7N,OACzB,CACH,GAAIk7N,GAAOC,EAAcn7N,EACzB,IAAIk7N,EAAM,CACNK,IACA,KACIx+P,EAAIm+P,GACN,QACED,EAAej7N,GACfu7N,QApEhB,IAAIjtQ,EAAO0uC,aAAX,CAIA,GAIIq+N,GAJAD,EAAa,EACbD,KACAI,KACA7zJ,EAAMp5G,EAAO1Q,SAoJb49Q,EAAWh/Q,OAAOuuC,gBAAkBvuC,OAAOuuC,eAAez8B,EAC9DktQ,GAAWA,GAAYA,EAASl9Q,WAAak9Q,EAAWltQ,EAGf,wBAAlCgqB,SAASz8B,KAAKyS,EAAO+mB,SArF5B,WACIgmP,EAAoB,SAASr7N,GACzB3qB,EAAQ6nB,SAAS,WAAco+N,EAAat7N,SAIpD,WAGI,GAAI1xC,EAAO0iP,cAAgB1iP,EAAOmtQ,cAAe,CAC7C,GAAIC,MACAC,EAAertQ,EAAOstQ,SAM1B,OALAttQ,GAAOstQ,UAAY,WACfF,MAEJptQ,EAAO0iP,YAAY,GAAI,KACvB1iP,EAAOstQ,UAAYD,EACZD,MAIf,WAKI,GAAIG,GAAgB,gBAAkBljP,KAAK+oC,SAAW,IAClDo6M,EAAkB,SAASv2O,GACvBA,EAAM3pB,SAAWtN,GACK,gBAAfi3B,GAAM4b,MACyB,IAAtC5b,EAAM4b,KAAKprC,QAAQ8lQ,IACnBP,GAAc/1O,EAAM4b,KAAKjzC,MAAM2tQ,EAAcx/Q,SAIjDiS,GAAO+vE,iBACP/vE,EAAO+vE,iBAAiB,UAAWy9L,MAEnCxtQ,EAAOgwE,YAAY,YAAaw9L,GAGpCT,EAAoB,SAASr7N,GACzB1xC,EAAO0iP,YAAY6qB,EAAgB77N,EAAQ,SAmDxC1xC,EAAOytQ,eA/ClB,WACI,GAAIzuN,GAAU,GAAIyuN,eAClBzuN,GAAQ0uN,MAAMJ,UAAY,SAASr2O,GAE/B+1O,EADa/1O,EAAM4b,OAIvBk6N,EAAoB,SAASr7N,GACzBsN,EAAQ2uN,MAAMjrB,YAAYhxM,OA2CvB0nE,GAAO,sBAAwBA,GAAI5pH,cAAc,UAvC5D,WACI,GAAIm4G,GAAOyR,EAAI+tF,eACf4lE,GAAoB,SAASr7N,GAGzB,GAAIjjD,GAAS2qH,EAAI5pH,cAAc,SAC/Bf,GAAO6yL,mBAAqB,WACxB0rF,EAAat7N,GACbjjD,EAAO6yL,mBAAqB,KAC5B35E,EAAK37B,YAAYv9E,GACjBA,EAAS,MAEbk5G,EAAK13G,YAAYxB,OAIzB,WACIs+Q,EAAoB,SAASr7N,GACzB1hD,WAAWg9Q,EAAc,EAAGt7N,OA8BpCw7N,EAASx+N,aAAeA,EACxBw+N,EAASP,eAAiBA,IACZ,mBAAT1/P,eAA8BjN,EAAyB+L,KAAO/L,EAASiN,QvjBok3EnD1f,KAAKJ,EAASH,EAAoB,IAAKA,EAAoB,MAIlF,SAAUI,EAAQD,EAASH,GAEjC,YwjB7u3EA,SAAS4gR,GAAsB/lK,GAC7B,OAAQ,GAAKA,GAAM/uF,QAAQ+0P,EAA4B,OAWzD,QAASC,GAAmBC,EAAiBC,GAC3CjiQ,KAAKgL,KAAOg3P,EACZhiQ,KAAKF,QAAUmiQ,EACfjiQ,KAAK2kC,MAAQ,EASf,QAASu9N,GAAmBC,EAAa5iP,EAAOj7B,GAC9C,GAAI0mB,GAAOm3P,EAAYn3P,KACnBlL,EAAUqiQ,EAAYriQ,OAE1BkL,GAAKxpB,KAAKse,EAASyf,EAAO4iP,EAAYx9N,SAexC,QAASy9N,GAAgB3hQ,EAAU4hQ,EAAaJ,GAC9C,GAAgB,MAAZxhQ,EACF,MAAOA,EAET,IAAImkM,GAAkBm9D,EAAmBjvL,UAAUuvL,EAAaJ,EAChE98D,GAAoB1kM,EAAUyhQ,EAAoBt9D,GAClDm9D,EAAmBvsL,QAAQovH,GAY7B,QAAS09D,GAAeC,EAAWC,EAAWC,EAAaC,GACzD1iQ,KAAKyK,OAAS83P,EACdviQ,KAAKwiQ,UAAYA,EACjBxiQ,KAAKgL,KAAOy3P,EACZziQ,KAAKF,QAAU4iQ,EACf1iQ,KAAK2kC,MAAQ,EAWf,QAASg+N,GAA0BR,EAAa5iP,EAAOqjP,GACrD,GAAIn4P,GAAS03P,EAAY13P,OACrB+3P,EAAYL,EAAYK,UACxBx3P,EAAOm3P,EAAYn3P,KACnBlL,EAAUqiQ,EAAYriQ,QAGtB+iQ,EAAc73P,EAAKxpB,KAAKse,EAASyf,EAAO4iP,EAAYx9N,QACpD3wC,OAAM+c,QAAQ8xP,GAChBC,EAA6BD,EAAap4P,EAAQm4P,EAAU31P,EAAcglE,qBAClD,MAAf4wL,IACLjsK,EAAazO,eAAe06K,KAC9BA,EAAcjsK,EAAamB,mBAAmB8qK,EAG9CL,IAAaK,EAAYp9Q,KAAS85B,GAASA,EAAM95B,MAAQo9Q,EAAYp9Q,IAAsD,GAA/Co8Q,EAAsBgB,EAAYp9Q,KAAO,KAAYm9Q,IAEnIn4P,EAAOvoB,KAAK2gR,IAIhB,QAASC,GAA6BriQ,EAAU0gC,EAAO6H,EAAQh+B,EAAMlL,GACnE,GAAIijQ,GAAgB,EACN,OAAV/5N,IACF+5N,EAAgBlB,EAAsB74N,GAAU,IAElD,IAAI47J,GAAkB09D,EAAexvL,UAAU3xC,EAAO4hO,EAAe/3P,EAAMlL,EAC3EqlM,GAAoB1kM,EAAUkiQ,EAA2B/9D,GACzD09D,EAAe9sL,QAAQovH,GAgBzB,QAASo+D,GAAYviQ,EAAUuK,EAAMlL,GACnC,GAAgB,MAAZW,EACF,MAAOA,EAET,IAAIgK,KAEJ,OADAq4P,GAA6BriQ,EAAUgK,EAAQ,KAAMO,EAAMlL,GACpD2K,EAGT,QAASw4P,GAAwBr+D,EAAiBrlL,EAAOj7B,GACvD,MAAO,MAYT,QAAS4+Q,GAAcziQ,EAAUX,GAC/B,MAAOqlM,GAAoB1kM,EAAUwiQ,EAAyB,MAShE,QAAS7rK,GAAQ32F,GACf,GAAIgK,KAEJ,OADAq4P,GAA6BriQ,EAAUgK,EAAQ,KAAMwC,EAAcglE,qBAC5DxnE,EAtKT,GAAIoqE,GAAc,EAAQ,KACtB+hB,EAAe,EAAQ,IAEvB3pF,EAAgB,EAAQ,IACxBk4L,EAAsB,EAAQ,KAE9Bt2G,EAAoBha,EAAYga,kBAChChU,EAAqBhG,EAAYgG,mBAEjCinL,EAA6B,MAkBjCC,GAAmB3/Q,UAAUmzF,WAAa,WACxCv1E,KAAKgL,KAAO,KACZhL,KAAKF,QAAU,KACfE,KAAK2kC,MAAQ,GAEfkwC,EAAYc,aAAaosL,EAAoBlzK,GA8C7CyzK,EAAelgR,UAAUmzF,WAAa,WACpCv1E,KAAKyK,OAAS,KACdzK,KAAKwiQ,UAAY,KACjBxiQ,KAAKgL,KAAO,KACZhL,KAAKF,QAAU,KACfE,KAAK2kC,MAAQ,GAEfkwC,EAAYc,aAAa2sL,EAAgBznL,EAoFzC,IAAI0b,IACFx2D,QAASqiO,EACTpwP,IAAKgxP,EACLF,6BAA8BA,EAC9Bn+N,MAAOu+N,EACP9rK,QAASA,EAGX/1G,GAAOD,QAAUm1G,GxjBww3EX,SAAUl1G,EAAQD,EAASH,GAEjC,YyjB173EA,IAAIylE,GAAiB,EAAQ,IAWzB+nC,GATY,EAAQ,GASA,SAAUC,GAChC,GAAIC,GAAQ3uF,IACZ,IAAI2uF,EAAMC,aAAa5sG,OAAQ,CAC7B,GAAI2hE,GAAWgrC,EAAMC,aAAaj8E,KAElC,OADAg8E,GAAMntG,KAAKmiE,EAAU+qC,GACd/qC,EAEP,MAAO,IAAIgrC,GAAMD,KAIjBG,EAAoB,SAAUC,EAAIC,GACpC,GAAIJ,GAAQ3uF,IACZ,IAAI2uF,EAAMC,aAAa5sG,OAAQ,CAC7B,GAAI2hE,GAAWgrC,EAAMC,aAAaj8E,KAElC,OADAg8E,GAAMntG,KAAKmiE,EAAUmrC,EAAIC,GAClBprC,EAEP,MAAO,IAAIgrC,GAAMG,EAAIC,IAIrBC,EAAsB,SAAUF,EAAIC,EAAIE,GAC1C,GAAIN,GAAQ3uF,IACZ,IAAI2uF,EAAMC,aAAa5sG,OAAQ,CAC7B,GAAI2hE,GAAWgrC,EAAMC,aAAaj8E,KAElC,OADAg8E,GAAMntG,KAAKmiE,EAAUmrC,EAAIC,EAAIE,GACtBtrC,EAEP,MAAO,IAAIgrC,GAAMG,EAAIC,EAAIE,IAIzBpU,EAAqB,SAAUiU,EAAIC,EAAIE,EAAIC,GAC7C,GAAIP,GAAQ3uF,IACZ,IAAI2uF,EAAMC,aAAa5sG,OAAQ,CAC7B,GAAI2hE,GAAWgrC,EAAMC,aAAaj8E,KAElC,OADAg8E,GAAMntG,KAAKmiE,EAAUmrC,EAAIC,EAAIE,EAAIC,GAC1BvrC,EAEP,MAAO,IAAIgrC,GAAMG,EAAIC,EAAIE,EAAIC,IAI7BC,EAAmB,SAAUxrC,GAC/B,GAAIgrC,GAAQ3uF,IACV2jD,aAAoBgrC,IAAsIjoC,EAAe,MAC3K/C,EAAS4xB,aACLoZ,EAAMC,aAAa5sG,OAAS2sG,EAAMS,UACpCT,EAAMC,aAAa1sG,KAAKyhE,IAKxB0rC,EAAiBZ,EAWjB9Y,EAAe,SAAU2Z,EAAiBC,GAG5C,GAAIC,GAAWF,CAOf,OANAE,GAASZ,gBACTY,EAAS1c,UAAYyc,GAAUF,EAC1BG,EAASJ,WACZI,EAASJ,SAnBW,IAqBtBI,EAASha,QAAU2Z,EACZK,GAGL3a,GACFc,aAAcA,EACd8Y,kBAAmBA,EACnBI,kBAAmBA,EACnBG,oBAAqBA,EACrBnU,mBAAoBA,EAGtBx5F,GAAOD,QAAUyzF,GzjB483EX,SAAUxzF,EAAQD,EAASH,GAEjC,Y0jB/g4EA,SAASwjN,GAAgBj/I,EAAW9zC,GAGlC,MAAI8zC,IAAkC,gBAAdA,IAA2C,MAAjBA,EAAU//D,IAEnD+gL,EAAeh5D,OAAOhoD,EAAU//D,KAGlCisB,EAAMuM,SAAS,IAWxB,QAASymL,GAAwBjkM,EAAUkkM,EAAWluK,EAAUmuK,GAC9D,GAAIlhN,SAAc+c,EAOlB,IALa,cAAT/c,GAAiC,YAATA,IAE1B+c,EAAW,MAGI,OAAbA,GAA8B,WAAT/c,GAA8B,WAATA,GAGrC,WAATA,GAAqB+c,EAASmnF,WAAaL,EAKzC,MAJA9wD,GAASmuK,EAAiBnkM,EAGZ,KAAdkkM,EAAmBE,EAAYJ,EAAgBhkM,EAAU,GAAKkkM,GACvD,CAGT,IAAIplL,GACAulL,EACAC,EAAe,EACfC,EAA+B,KAAdL,EAAmBE,EAAYF,EAAYM,CAEhE,IAAIjxM,MAAM+c,QAAQtQ,GAChB,IAAK,GAAInf,GAAI,EAAGA,EAAImf,EAASze,OAAQV,IACnCi+B,EAAQ9e,EAASnf,GACjBwjN,EAAWE,EAAiBP,EAAgBllL,EAAOj+B,GACnDyjN,GAAgBL,EAAwBnlL,EAAOulL,EAAUruK,EAAUmuK,OAEhE,CACL,GAAI9J,GAAaF,EAAcn6L,EAC/B,IAAIq6L,EAAY,CACd,GACIlrJ,GADAjJ,EAAWm0J,EAAWt5M,KAAKif,EAE/B,IAAIq6L,IAAer6L,EAAS8+B,QAE1B,IADA,GAAI+xF,GAAK,IACA1hF,EAAOjJ,EAAS9kC,QAAQizB,MAC/BvV,EAAQqwB,EAAKlqD,MACbo/M,EAAWE,EAAiBP,EAAgBllL,EAAO+xG,KACnDyzE,GAAgBL,EAAwBnlL,EAAOulL,EAAUruK,EAAUmuK,OAerE,QAASh1J,EAAOjJ,EAAS9kC,QAAQizB,MAAM,CACrC,GAAI+qB,GAAQjQ,EAAKlqD,KACbm6D,KACFtgC,EAAQsgC,EAAM,GACdilJ,EAAWE,EAAiBx+B,EAAeh5D,OAAO3tD,EAAM,IAAMolJ,EAAeR,EAAgBllL,EAAO,GACpGwlL,GAAgBL,EAAwBnlL,EAAOulL,EAAUruK,EAAUmuK,SAIpE,IAAa,WAATlhN,EAAmB,CAC5B,GAaIwhN,GAAiBz9K,OAAOhnB,EACkOimD,GAAe,KAAyB,oBAAnBw+I,EAAuC,qBAAuB/iN,OAAO6I,KAAKyV,GAAUwR,KAAK,MAAQ,IAAMizL,EAd3W,KAkBnB,MAAOH,GAmBT,QAASI,GAAoB1kM,EAAUg2B,EAAUmuK,GAC/C,MAAgB,OAAZnkM,EACK,EAGFikM,EAAwBjkM,EAAU,GAAIg2B,EAAUmuK,GA/JzD,GAAIl+I,GAAiB,EAAQ,IAGzB6gC,GADoB,EAAQ,IACP,EAAQ,MAE7BqzG,EAAgB,EAAQ,KAExBp0B,GADY,EAAQ,GACH,EAAQ,MAGzBq+B,GAFU,EAAQ,GAEN,KACZI,EAAe,GAuJnB5jN,GAAOD,QAAU+jN,G1jBik4EX,SAAU9jN,EAAQD,EAASH,GAEjC,Y2jB7t4EA,SAASusH,GAAO/nH,GACd,GACI4gL,IACF,IAAK,KACL,IAAK,KAMP,OAAO,KAJc,GAAK5gL,GAAKsnB,QALb,QAKkC,SAAUzC,GAC5D,MAAO+7J,GAAc/7J,KAYzB,QAASijG,GAAS9nH,GAChB,GAAI6gL,GAAgB,WAChBC,GACF,KAAM,IACN,KAAM,IAIR,QAAQ,IAFsB,MAAX9gL,EAAI,IAAyB,MAAXA,EAAI,GAAaA,EAAI4qG,UAAU,GAAK5qG,EAAI4qG,UAAU,KAE5DtjF,QAAQu5J,EAAe,SAAUh8J,GAC1D,MAAOi8J,GAAgBj8J,KAI3B,GAAIk8J,IACFh5D,OAAQA,EACRD,SAAUA,EAGZlsH,GAAOD,QAAUolL,G3jBsv4EX,SAAUnlL,EAAQD,EAASH,GAEjC,Y4jB3x4EA,SAASw1G,GAAmB52F,EAAOC,EAAS6+J,GAE1C3+J,KAAKH,MAAQA,EACbG,KAAKF,QAAUA,EACfE,KAAK4+J,KAAO38C,EAGZjiH,KAAK2+J,QAAUA,GAAWE,EAG5B,QAASskG,MApBT,GAAIvuL,GAAU,EAAQ,IAElB4hB,EAAiB,EAAQ,KACzBqoE,EAAuB,EAAQ,KAE/B58C,EAAc,EAAQ,IAgB1BkhJ,GAAe/gR,UAAYo0G,EAAep0G,UAC1Cq0G,EAAmBr0G,UAAY,GAAI+gR,GACnC1sK,EAAmBr0G,UAAUid,YAAco3F,EAE3C7hB,EAAQ6hB,EAAmBr0G,UAAWo0G,EAAep0G,WACrDq0G,EAAmBr0G,UAAUghR,wBAE7B/hR,EAAOD,QAAUq1G,G5jBsz4EX,SAAUp1G,EAAQD,EAASH,GAEjC,Y6jBp04EA,SAAS8sJ,GAAS/zH,GAChB,MAAOA,GA+TT,QAASqpP,GAAuBC,EAAkBh/Q,GAChD,GAAIi/Q,GAAaC,EAAoBnhR,eAAeiC,GAAQk/Q,EAAoBl/Q,GAAQ,IAGpFm/Q,GAAgBphR,eAAeiC,IAChB,kBAAfi/Q,GAA+P78M,EAAe,KAAMpiE,GAIpRg/Q,GACe,gBAAfC,GAA+C,uBAAfA,GAAyO78M,EAAe,KAAMpiE,GAQpS,QAASo/Q,GAAqB9/M,EAAa6vG,GACzC,GAAKA,EAAL,CAWkB,kBAATA,IAAyM/sG,EAAe,MAC/NkwC,EAAazO,eAAesrE,IAAwK/sG,EAAe,KAErN,IAAI11B,GAAQ4yB,EAAYxhE,UACpBuhR,EAAgB3yO,EAAM4yO,oBAKtBnwG,GAAKpxK,eAAewhR,IACtBC,EAAmBh9I,OAAOljE,EAAa6vG,EAAK3sC,OAG9C,KAAK,GAAIxiI,KAAQmvK,GACf,GAAKA,EAAKpxK,eAAeiC,IAIrBA,IAASu/Q,EAAb,CAKA,GAAI7+Q,GAAWyuK,EAAKnvK,GAChBg/Q,EAAmBtyO,EAAM3uC,eAAeiC,EAG5C,IAFA++Q,EAAuBC,EAAkBh/Q,GAErCw/Q,EAAmBzhR,eAAeiC,GACpCw/Q,EAAmBx/Q,GAAMs/D,EAAa5+D,OACjC,CAKL,GAAI++Q,GAAqBP,EAAoBnhR,eAAeiC,GACxD02F,EAAiC,kBAAbh2F,GACpBg/Q,EAAiBhpL,IAAe+oL,IAAuBT,QAAoB7vG,EAAKwwG,QAEpF,IAAID,EACFL,EAAczhR,KAAKoC,EAAMU,GACzBgsC,EAAM1sC,GAAQU,MAEd,IAAIs+Q,EAAkB,CACpB,GAAIC,GAAaC,EAAoBl/Q,KAGnCy/Q,GAAsC,uBAAfR,GAAsD,gBAAfA,IAAkM78M,EAAe,KAAM68M,EAAYj/Q,GAIhR,uBAAfi/Q,EACFvyO,EAAM1sC,GAAQ4/Q,EAA2BlzO,EAAM1sC,GAAOU,GAC9B,gBAAfu+Q,IACTvyO,EAAM1sC,GAAQ6/Q,EAAsBnzO,EAAM1sC,GAAOU,QAGnDgsC,GAAM1sC,GAAQU,KAcxB,QAASo/Q,GAA2BxgN,EAAakvJ,GAC/C,GAAKA,EAGL,IAAK,GAAIxuN,KAAQwuN,GAAS,CACxB,GAAI9tN,GAAW8tN,EAAQxuN,EACvB,IAAKwuN,EAAQzwN,eAAeiC,GAA5B,CAIA,GAAI+/Q,GAAa//Q,IAAQw/Q,EACvBO,IAAyR39M,EAAe,KAAMpiE,EAEhT,IAAIggR,GAAchgR,IAAQs/D,EACxB0gN,IAAuM59M,EAAe,KAAMpiE,GAC9Ns/D,EAAYt/D,GAAQU,IAWxB,QAASu/Q,GAA6B7zL,EAAK8zL,GACvC9zL,GAAO8zL,GAAsB,gBAAR9zL,IAAmC,gBAAR8zL,IAA4I99M,EAAe,KAE7M,KAAK,GAAIjhE,KAAO++Q,GACVA,EAAIniR,eAAeoD,cACnBirF,EAAIjrF,IAAgVihE,EAAe,KAAMjhE,GAC3WirF,EAAIjrF,GAAO++Q,EAAI/+Q,GAGnB,OAAOirF,GAWT,QAASwzL,GAA2BxzL,EAAK8zL,GACvC,MAAO,YACL,GAAI75P,GAAI+lE,EAAIh+E,MAAMsN,KAAMrN,WACpBoV,EAAIy8P,EAAI9xQ,MAAMsN,KAAMrN,UACxB,IAAS,MAALgY,EACF,MAAO5C,EACF,IAAS,MAALA,EACT,MAAO4C,EAET,IAAIvmB,KAGJ,OAFAmgR,GAA6BngR,EAAGumB,GAChC45P,EAA6BngR,EAAG2jB,GACzB3jB,GAYX,QAAS+/Q,GAAsBzzL,EAAK8zL,GAClC,MAAO,YACL9zL,EAAIh+E,MAAMsN,KAAMrN,WAChB6xQ,EAAI9xQ,MAAMsN,KAAMrN,YAWpB,QAAS8xQ,GAAmBj/M,EAAW55B,GA6BrC,MA5BkBA,GAAO9mB,KAAK0gD,GAoChC,QAASk/M,GAAoBl/M,GAE3B,IAAK,GADD6rH,GAAQ7rH,EAAUo+M,qBACbtiR,EAAI,EAAGA,EAAI+vL,EAAMrvL,OAAQV,GAAK,EAAG,CACxC,GAAIqjR,GAActzF,EAAM/vL,GACpBsqC,EAASylJ,EAAM/vL,EAAI,EACvBkkE,GAAUm/M,GAAeF,EAAmBj/M,EAAW55B,IAljB3D,GAAI86B,GAAiB,EAAQ,IACzBkuB,EAAU,EAAQ,IAElB4hB,EAAiB,EAAQ,KACzBI,EAAe,EAAQ,IAEvBioE,GAD6B,EAAQ,KACd,EAAQ,MAE/B58C,EAAc,EAAQ,KAItB4hJ,GAHY,EAAQ,GACV,EAAQ,GAEL,UAabe,KAwBApB,GAQF18I,OAAQ,cASRgsF,QAAS,cAQTnyM,UAAW,cAQXqD,aAAc,cAQdjD,kBAAmB,cAcnB8lH,gBAAiB,qBAgBjBg+I,gBAAiB,qBAMjB1kQ,gBAAiB,qBAkBjBE,OAAQ,cAWRykQ,mBAAoB,cAYpB3/P,kBAAmB,cAqBnBG,0BAA2B,cAsB3BzC,sBAAuB,cAiBvBkiQ,oBAAqB,cAcrB9+P,mBAAoB,cAapBV,qBAAsB,cActBy/P,gBAAiB,iBAaflB,GACFx/P,YAAa,SAAUs/C,EAAat/C,GAClCs/C,EAAYt/C,YAAcA,GAE5BwiH,OAAQ,SAAUljE,EAAakjE,GAC7B,GAAIA,EACF,IAAK,GAAIxlI,GAAI,EAAGA,EAAIwlI,EAAO9kI,OAAQV,IACjCoiR,EAAqB9/M,EAAakjE,EAAOxlI,KAI/Cyf,kBAAmB,SAAU6iD,EAAa7iD,GAIxC6iD,EAAY7iD,kBAAoB6zE,KAAYhxB,EAAY7iD,kBAAmBA,IAE7EiD,aAAc,SAAU4/C,EAAa5/C,GAInC4/C,EAAY5/C,aAAe4wE,KAAYhxB,EAAY5/C,aAAcA,IAMnE6iH,gBAAiB,SAAUjjE,EAAaijE,GAClCjjE,EAAYijE,gBACdjjE,EAAYijE,gBAAkBq9I,EAA2BtgN,EAAYijE,gBAAiBA,GAEtFjjE,EAAYijE,gBAAkBA,GAGlClmH,UAAW,SAAUijD,EAAajjD,GAIhCijD,EAAYjjD,UAAYi0E,KAAYhxB,EAAYjjD,UAAWA,IAE7DmyM,QAAS,SAAUlvJ,EAAakvJ,GAC9BsxD,EAA2BxgN,EAAakvJ,IAE1CmxD,SAAU,cAsPRR,GAMFlmH,aAAc,SAAUtmG,EAAUxgB,GAChCz2B,KAAK2+J,QAAQU,oBAAoBr/J,KAAMi3C,GACnCxgB,GACFz2B,KAAK2+J,QAAQM,gBAAgBj/J,KAAMy2B,EAAU,iBAUjD0oI,UAAW,WACT,MAAOn/J,MAAK2+J,QAAQQ,UAAUn/J,QAI9BilQ,EAAsB,YAC1BrwL,GAAQqwL,EAAoB7iR,UAAWo0G,EAAep0G,UAAWqhR,EAOjE,IAAI/sK,IAUFW,YAAa,SAAUo8D,GAIrB,GAAI7vG,GAAcmqF,EAAS,SAAUluI,EAAOC,EAAS6+J,GAS/C3+J,KAAK4jQ,qBAAqB5hR,QAC5B0iR,EAAoB1kQ,MAGtBA,KAAKH,MAAQA,EACbG,KAAKF,QAAUA,EACfE,KAAK4+J,KAAO38C,EACZjiH,KAAK2+J,QAAUA,GAAWE,EAE1B7+J,KAAKyE,MAAQ,IAKb,IAAIixM,GAAe11M,KAAK6kQ,gBAAkB7kQ,KAAK6kQ,kBAAoB,MASzC,gBAAjBnvD,IAA8B1hN,MAAM+c,QAAQ2kM,KAAyLhvJ,EAAe,KAAM9C,EAAYt/C,aAAe,2BAE9RtE,KAAKyE,MAAQixM,GAEf9xJ,GAAYxhE,UAAY,GAAI6iR,GAC5BrhN,EAAYxhE,UAAUid,YAAcukD,EACpCA,EAAYxhE,UAAUwhR,wBAEtBgB,EAAe7kO,QAAQ2jO,EAAqB5+P,KAAK,KAAM8+C,IAEvD8/M,EAAqB9/M,EAAa6vG,GAG9B7vG,EAAYijE,kBACdjjE,EAAY6jC,aAAe7jC,EAAYijE,mBAgBxCjjE,EAAYxhE,UAAUie,QAA+IqmD,EAAe,KAQrL,KAAK,GAAIpjD,KAAckgQ,GAChB5/M,EAAYxhE,UAAUkhB,KACzBsgD,EAAYxhE,UAAUkhB,GAAc,KAIxC,OAAOsgD,IAGTqyB,WACEivL,YAAa,SAAU3tK,GACrBqtK,EAAe1iR,KAAKq1G,KAM1Bl2G,GAAOD,QAAUs1G,G7jBq24EX,SAAUr1G,EAAQD,EAASH,GAEjC,Y8jBti6EA,IAAI21G,GAAe,EAAQ,IAOvBuuK,EAAmBvuK,EAAaI,cAYhCL,GACFhsF,EAAGw6P,EAAiB,KACpBnsI,KAAMmsI,EAAiB,QACvBC,QAASD,EAAiB,WAC1BE,KAAMF,EAAiB,QACvBG,QAASH,EAAiB,WAC1BI,MAAOJ,EAAiB,SACxB9zE,MAAO8zE,EAAiB,SACxBp9P,EAAGo9P,EAAiB,KACpB5pO,KAAM4pO,EAAiB,QACvBK,IAAKL,EAAiB,OACtBM,IAAKN,EAAiB,OACtBO,IAAKP,EAAiB,OACtBQ,WAAYR,EAAiB,cAC7BllN,KAAMklN,EAAiB,QACvBl+B,GAAIk+B,EAAiB,MACrB3wH,OAAQ2wH,EAAiB,UACzBS,OAAQT,EAAiB,UACzB5P,QAAS4P,EAAiB,WAC1BU,KAAMV,EAAiB,QACvB/3P,KAAM+3P,EAAiB,QACvB9rC,IAAK8rC,EAAiB,OACtBW,SAAUX,EAAiB,YAC3Br+N,KAAMq+N,EAAiB,QACvBY,SAAUZ,EAAiB,YAC3Br8H,GAAIq8H,EAAiB,MACrBnyF,IAAKmyF,EAAiB,OACtBa,QAASb,EAAiB,WAC1Bc,IAAKd,EAAiB,OACtBe,OAAQf,EAAiB,UACzBhiO,IAAKgiO,EAAiB,OACtBgB,GAAIhB,EAAiB,MACrBiB,GAAIjB,EAAiB,MACrBkB,GAAIlB,EAAiB,MACrB30H,MAAO20H,EAAiB,SACxBmB,SAAUnB,EAAiB,YAC3BtmC,WAAYsmC,EAAiB,cAC7BoB,OAAQpB,EAAiB,UACzB93G,OAAQ83G,EAAiB,UACzBqB,KAAMrB,EAAiB,QACvBsB,GAAItB,EAAiB,MACrBuB,GAAIvB,EAAiB,MACrBwB,GAAIxB,EAAiB,MACrByB,GAAIzB,EAAiB,MACrB0B,GAAI1B,EAAiB,MACrB2B,GAAI3B,EAAiB,MACrB7hR,KAAM6hR,EAAiB,QACvB/0N,OAAQ+0N,EAAiB,UACzB4B,OAAQ5B,EAAiB,UACzB6B,GAAI7B,EAAiB,MACrBvpK,KAAMupK,EAAiB,QACvB7jR,EAAG6jR,EAAiB,KACpBp8L,OAAQo8L,EAAiB,UACzB8B,IAAK9B,EAAiB,OACtBz9N,MAAOy9N,EAAiB,SACxB+B,IAAK/B,EAAiB,OACtBgC,IAAKhC,EAAiB,OACtBiC,OAAQjC,EAAiB,UACzBryQ,MAAOqyQ,EAAiB,SACxBkC,OAAQlC,EAAiB,UACzBmC,GAAInC,EAAiB,MACrBjjM,KAAMijM,EAAiB,QACvB5N,KAAM4N,EAAiB,QACvBnzP,IAAKmzP,EAAiB,OACtBtwK,KAAMswK,EAAiB,QACvBoC,KAAMpC,EAAiB,QACvBqC,SAAUrC,EAAiB,YAC3B36N,KAAM26N,EAAiB,QACvBsC,MAAOtC,EAAiB,SACxBuC,IAAKvC,EAAiB,OACtB/iM,SAAU+iM,EAAiB,YAC3BpgR,OAAQogR,EAAiB,UACzBwC,GAAIxC,EAAiB,MACrByC,SAAUzC,EAAiB,YAC3B5nJ,OAAQ4nJ,EAAiB,UACzB94I,OAAQ84I,EAAiB,UACzBnhR,EAAGmhR,EAAiB,KACpB52E,MAAO42E,EAAiB,SACxB0C,QAAS1C,EAAiB,WAC1Bl9K,IAAKk9K,EAAiB,OACtB2C,SAAU3C,EAAiB,YAC3B1/J,EAAG0/J,EAAiB,KACpB4C,GAAI5C,EAAiB,MACrB6C,GAAI7C,EAAiB,MACrB8C,KAAM9C,EAAiB,QACvB9/Q,EAAG8/Q,EAAiB,KACpB+C,KAAM/C,EAAiB,QACvBziR,OAAQyiR,EAAiB,UACzBn1P,QAASm1P,EAAiB,WAC1Bj7D,OAAQi7D,EAAiB,UACzBgD,MAAOhD,EAAiB,SACxB5jQ,OAAQ4jQ,EAAiB,UACzBiD,KAAMjD,EAAiB,QACvBkD,OAAQlD,EAAiB,UACzB9pM,MAAO8pM,EAAiB,SACxBrvP,IAAKqvP,EAAiB,OACtBmD,QAASnD,EAAiB,WAC1BoD,IAAKpD,EAAiB,OACtBqD,MAAOrD,EAAiB,SACxBsD,MAAOtD,EAAiB,SACxBuD,GAAIvD,EAAiB,MACrBwD,SAAUxD,EAAiB,YAC3ByD,MAAOzD,EAAiB,SACxB0D,GAAI1D,EAAiB,MACrB2D,MAAO3D,EAAiB,SACxBtyQ,KAAMsyQ,EAAiB,QACvB79O,MAAO69O,EAAiB,SACxB4D,GAAI5D,EAAiB,MACrBv9L,MAAOu9L,EAAiB,SACxB3sP,EAAG2sP,EAAiB,KACpB6D,GAAI7D,EAAiB,MACrB,IAAOA,EAAiB,OACxBnqF,MAAOmqF,EAAiB,SACxB8D,IAAK9D,EAAiB,OAGtB+D,OAAQ/D,EAAiB,UACzBgE,SAAUhE,EAAiB,YAC3BiE,KAAMjE,EAAiB,QACvBkE,QAASlE,EAAiB,WAC1BxuM,EAAGwuM,EAAiB,KACpBrxP,MAAOqxP,EAAiB,SACxBz/O,KAAMy/O,EAAiB,QACvBmE,eAAgBnE,EAAiB,kBACjCoE,KAAMpE,EAAiB,QACvB1pQ,KAAM0pQ,EAAiB,QACvB/jK,QAAS+jK,EAAiB,WAC1BqE,QAASrE,EAAiB,WAC1BsE,SAAUtE,EAAiB,YAC3BuE,eAAgBvE,EAAiB,kBACjCwE,KAAMxE,EAAiB,QACvBrxB,KAAMqxB,EAAiB,QACvB9vH,IAAK8vH,EAAiB,OACtBrpK,KAAMqpK,EAAiB,QACvByE,MAAOzE,EAAiB,SAG1B9jR,GAAOD,QAAUu1G,G9jBuj6EX,SAAUt1G,EAAQD,EAASH,GAEjC,Y+jBno6EA,SAASslB,GAAGC,EAAGC,GAEb,MAAID,KAAMC,EAGK,IAAND,GAAW,EAAIA,GAAM,EAAIC,EAGzBD,IAAMA,GAAKC,IAAMA,EAY5B,QAASojQ,GAAcz2Q,GACrB4M,KAAK5M,QAAUA,EACf4M,KAAKzM,MAAQ,GAKf,QAASu2Q,GAA2B9/C,GAIlC,QAAS+/C,GAAUlpQ,EAAYhB,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,EAAcC,GAYrF,GAXAv6K,EAAgBA,GAAiBw6K,EACjCF,EAAeA,GAAgBxwL,EAUR,MAAnB35E,EAAM25E,GAAmB,CAC3B,GAAI2wL,GAAelvE,EAA2B3/L,EAC9C,OAAIuF,GAEO,GAAIgpQ,GADW,OAApBhqQ,EAAM25E,GACiB,OAAS2wL,EAAe,KAAOH,EAAe,+BAAuCt6K,EAAgB,8BAEvG,OAASy6K,EAAe,KAAOH,EAAe,+BAAuCt6K,EAAgB,oCAEzH,KAEP,MAAOs6H,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,GAxB5D,GA4BEI,GAAmBL,EAAUjlQ,KAAK,MAAK,EAG3C,OAFAslQ,GAAiBvpQ,WAAakpQ,EAAUjlQ,KAAK,MAAK,GAE3CslQ,EAGT,QAASC,GAA2BC,GAClC,QAAStgD,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,EAAcC,GACxE,GAAIhoE,GAAYpiM,EAAM25E,EAEtB,OADe+wL,GAAYtoE,KACVqoE,EAOR,GAAIT,GAAc,WANN5uE,EAA2B3/L,GAMO,KAAO0uQ,EAAe,cAFzDQ,EAAevoE,GAE8E,kBAAoBvyG,EAAgB,gBAAyB46K,EAAe,MAEtL,KAET,MAAOR,GAA2B9/C,GAOpC,QAASygD,GAAyBC,GAChC,QAAS1gD,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,GAC1D,GAA2B,kBAAhBU,GACT,MAAO,IAAIb,GAAc,aAAeG,EAAe,mBAAqBt6K,EAAgB,kDAE9F,IAAIuyG,GAAYpiM,EAAM25E,EACtB,KAAKxlF,MAAM+c,QAAQkxL,GAGjB,MAAO,IAAI4nE,GAAc,WAFN5uE,EAA2B3/L,GAEO,KAAO0uQ,EAAe,cAD5DO,EAAYtoE,GACiF,kBAAoBvyG,EAAgB,wBAElJ,KAAK,GAAIpuG,GAAI,EAAGA,EAAI2gN,EAAUjgN,OAAQV,IAAK,CACzC,GAAI8D,GAAQslR,EAAYzoE,EAAW3gN,EAAGouG,EAAep0F,EAAU0uQ,EAAe,IAAM1oR,EAAI,IAAK4jL,EAC7F,IAAI9/K,YAAiBpC,OACnB,MAAOoC,GAGX,MAAO,MAET,MAAO0kR,GAA2B9/C,GAgBpC,QAAS2gD,GAA0BC,GACjC,QAAS5gD,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,GAC1D,KAAMnqQ,EAAM25E,YAAqBoxL,IAAgB,CAC/C,GAAIT,GAAelvE,EAA2B3/L,GAC1CuvQ,EAAoBD,EAActmR,MAAQ4lR,CAE9C,OAAO,IAAIL,GAAc,WAAaM,EAAe,KAAOH,EAAe,cADrDc,EAAajrQ,EAAM25E,IAC0E,kBAAoBkW,EAAgB,4BAAqCm7K,EAAoB,MAElN,MAAO,MAET,MAAOf,GAA2B9/C,GAGpC,QAAS+gD,GAAsBC,GAM7B,QAAShhD,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,GAE1D,IAAK,GADD/nE,GAAYpiM,EAAM25E,GACbl4F,EAAI,EAAGA,EAAI0pR,EAAehpR,OAAQV,IACzC,GAAIilB,EAAG07L,EAAW+oE,EAAe1pR,IAC/B,MAAO,KAMX,OAAO,IAAIuoR,GAAc,WAFN5uE,EAA2B3/L,GAEO,KAAO0uQ,EAAe,eAAiB/nE,EAAY,kBAA0BvyG,EAAgB,sBAD/HvrF,KAAKC,UAAU4mQ,GACuJ,KAf3L,MAAKh3Q,OAAM+c,QAAQi6P,GAiBZlB,EAA2B9/C,GAfzB/8M,EAAc8kE,gBAkBzB,QAASk5L,GAA0BP,GACjC,QAAS1gD,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,GAC1D,GAA2B,kBAAhBU,GACT,MAAO,IAAIb,GAAc,aAAeG,EAAe,mBAAqBt6K,EAAgB,mDAE9F,IAAIuyG,GAAYpiM,EAAM25E,GAClB0xL,EAAWX,EAAYtoE,EAC3B,IAAiB,WAAbipE,EAEF,MAAO,IAAIrB,GAAc,WADN5uE,EAA2B3/L,GACO,KAAO0uQ,EAAe,cAAsBkB,EAAW,kBAAoBx7K,EAAgB,yBAElJ,KAAK,GAAIjqG,KAAOw8M,GACd,GAAIA,EAAU5/M,eAAeoD,GAAM,CACjC,GAAIL,GAAQslR,EAAYzoE,EAAWx8M,EAAKiqG,EAAep0F,EAAU0uQ,EAAe,IAAMvkR,EAAKy/K,EAC3F,IAAI9/K,YAAiBpC,OACnB,MAAOoC,GAIb,MAAO,MAET,MAAO0kR,GAA2B9/C,GAGpC,QAASmhD,GAAuBC,GAM9B,QAASphD,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,GAC1D,IAAK,GAAI1oR,GAAI,EAAGA,EAAI8pR,EAAoBppR,OAAQV,IAE9C,GAA6F,SAD/E8pR,EAAoB9pR,IACtBue,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,EAAc9kG,GAClE,MAAO,KAKX,OAAO,IAAI2kG,GAAc,WADN5uE,EAA2B3/L,GACO,KAAO0uQ,EAAe,kBAA0Bt6K,EAAgB,MAdvH,MAAK17F,OAAM+c,QAAQq6P,GAgBZtB,EAA2B9/C,GAdzB/8M,EAAc8kE,gBA4BzB,QAASs5L,GAAuBC,GAC9B,QAASthD,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,GAC1D,GAAI/nE,GAAYpiM,EAAM25E,GAClB0xL,EAAWX,EAAYtoE,EAC3B,IAAiB,WAAbipE,EAEF,MAAO,IAAIrB,GAAc,WADN5uE,EAA2B3/L,GACO,KAAO0uQ,EAAe,cAAgBkB,EAAW,kBAA0Bx7K,EAAgB,wBAElJ,KAAK,GAAIjqG,KAAO6lR,GAAY,CAC1B,GAAIC,GAAUD,EAAW7lR,EACzB,IAAK8lR,EAAL,CAGA,GAAInmR,GAAQmmR,EAAQtpE,EAAWx8M,EAAKiqG,EAAep0F,EAAU0uQ,EAAe,IAAMvkR,EAAKy/K,EACvF,IAAI9/K,EACF,MAAOA,IAGX,MAAO,MAET,MAAO0kR,GAA2B9/C,GAGpC,QAASjvM,GAAOknL,GACd,aAAeA,IACb,IAAK,SACL,IAAK,SACL,IAAK,YACH,OAAM,CACR,KAAK,UACH,OAAQA,CACV,KAAK,SACH,GAAIjuM,MAAM+c,QAAQkxL,GAChB,MAAOA,GAAUxwL,MAAMsJ,EAEzB,IAAkB,OAAdknL,GAAsBrrG,EAAazO,eAAe85G,GACpD,OAAM,CAGR,IAAInH,GAAaF,EAAcqH,EAC/B,KAAInH,EAqBF,OAAM,CApBN,IACIlrJ,GADAjJ,EAAWm0J,EAAWt5M,KAAKygN,EAE/B,IAAInH,IAAemH,EAAU1iK,SAC3B,OAASqQ,EAAOjJ,EAAS9kC,QAAQizB,MAC/B,IAAK/Z,EAAO60B,EAAKlqD,OACf,OAAM,MAKV,QAASkqD,EAAOjJ,EAAS9kC,QAAQizB,MAAM,CACrC,GAAI+qB,GAAQjQ,EAAKlqD,KACjB,IAAIm6D,IACG9kC,EAAO8kC,EAAM,IAChB,OAAM,EAShB,OAAM,CACR,SACE,OAAM,GAIZ,QAASutF,GAAS89H,EAAUjpE,GAE1B,MAAiB,WAAbipE,GAK+B,WAA/BjpE,EAAU,kBAKQ,kBAAXn4J,SAAyBm4J,YAAqBn4J,QAQ3D,QAASygO,GAAYtoE,GACnB,GAAIipE,SAAkBjpE,EACtB,OAAIjuM,OAAM+c,QAAQkxL,GACT,QAELA,YAAqBrjK,QAIhB,SAELwuG,EAAS89H,EAAUjpE,GACd,SAEFipE,EAKT,QAASV,GAAevoE,GACtB,GAAIipE,GAAWX,EAAYtoE,EAC3B,IAAiB,WAAbipE,EAAuB,CACzB,GAAIjpE,YAAqB/xJ,MACvB,MAAO,MACF,IAAI+xJ,YAAqBrjK,QAC9B,MAAO,SAGX,MAAOssO,GAIT,QAASJ,GAAa7oE,GACpB,MAAKA,GAAU5iM,aAAgB4iM,EAAU5iM,YAAY/a,KAG9C29M,EAAU5iM,YAAY/a,KAFpB4lR,EA/ZX,GAAItzK,GAAe,EAAQ,IACvBqkG,EAA6B,EAAQ,KACrC/1B,EAAuB,EAAQ,KAE/Bj4J,EAAgB,EAAQ,IACxB2tL,EAAgB,EAAQ,KAkDxBsvE,GAjDU,EAAQ,GAiDN,iBAEZrzK,GACF11D,MAAOkpO,EAA2B,SAClCxxM,KAAMwxM,EAA2B,WACjCr/P,KAAMq/P,EAA2B,YACjCzxM,OAAQyxM,EAA2B,UACnCtlR,OAAQslR,EAA2B,UACnC1xM,OAAQ0xM,EAA2B,UACnCmB,OAAQnB,EAA2B,UAEnC3xP,IAiGF,WACE,MAAOoxP,GAA2B78P,EAAc2kE,YAAY,UAjG5D7Y,QAAS0xM,EACT3pQ,QAyHF,WACE,QAASkpN,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,GAC1D,GAAI/nE,GAAYpiM,EAAM25E,EACtB,OAAKod,GAAazO,eAAe85G,GAK1B,KAFE,GAAI4nE,GAAc,WAFN5uE,EAA2B3/L,GAEO,KAAO0uQ,EAAe,cAD5DO,EAAYtoE,GACiF,kBAAoBvyG,EAAgB,sCAIpJ,MAAOo6K,GAA2B9/C,MAlIlCyhD,WAAYd,EACZ19O,KAkNF,WACE,QAAS+8L,GAASnqN,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,GAC1D,MAAKjvP,GAAOlb,EAAM25E,IAIX,KAFE,GAAIqwL,GAAc,WADN5uE,EAA2B3/L,GACO,KAAO0uQ,EAAe,kBAA0Bt6K,EAAgB,4BAIzH,MAAOo6K,GAA2B9/C,MAzNlC0hD,SAAUT,EACVnyM,MAAOiyM,EACP/xM,UAAWmyM,EACXpgQ,MAAOsgQ,EAiCTxB,GAAcznR,UAAYY,MAAMZ,UAyThCf,EAAOD,QAAUy1G,G/jBsu6EX,SAAUx1G,EAAQD,EAASH,GAEjC,YgkBzo7EAI,GAAOD,QAFoB,gDhkB+p7ErB,SAAUC,EAAQD,EAASH,GAEjC,YikBlq7EAI,GAAOD,QAAU,UjkBmr7EX,SAAUC,EAAQD,EAASH,GAEjC,YkkBlq7EA,SAAS81G,GAAUt2F,GAEjB,MADCm2F,GAAazO,eAAe1nF,IAAgJimD,EAAe,OACrLjmD,EAtBT,GAAIimD,GAAiB,EAAQ,IAEzBkwC,EAAe,EAAQ,GAEX,GAAQ,GAqBxBv1G,EAAOD,QAAU21G,GlkBss7EX,SAAU11G,EAAQD,EAASH,GAEjC,YmkB9t7EA,IAAIqmE,GAAwB,EAAQ,IAChCqkN,EAAwB,EAAQ,KAChCzgE,EAAa,EAAQ,KACrBh3H,EAAkB,EAAQ,IAC1B5B,EAAe,EAAQ,IACvBwkB,EAAe,EAAQ,KAEvBw+D,EAAc,EAAQ,KACtB+4C,EAAgC,EAAQ,KACxCrB,EAA6B,EAAQ,IAC3B,GAAQ,GAEtB2+D,EAAsBC,QAEtB,IAAIC,IACFv2G,YAAaA,EACbj1J,OAAQ6qM,EAAW7qM,OACnBmtM,uBAAwBtC,EAAWsC,uBACnCvvM,QAAS64F,EAGTg1K,wBAAyBx5L,EAAaU,eACtC+4L,oCAAqC/+D,EAKO,oBAAnCg/D,iCAAmG,kBAA1CA,gCAA+BJ,QACjGI,+BAA+BJ,QAC7BpqG,eACE76G,2BAA4BW,EAAsBX,2BAClDK,oBAAqB,SAAU5C,GAK7B,MAHIA,GAAKqB,qBACPrB,EAAOiqJ,EAA8BjqJ,IAEnCA,EACKkD,EAAsBN,oBAAoB5C,GAE1C,OAIb6nN,MAAO/gE,EACPghE,WAAYh4L,IAmDhB7yF,EAAOD,QAAUyqR,GnkBiv7EX,SAAUxqR,EAAQD,EAASH,GAEjC,YokB9z7EA,SAAS2qR,KACHO,IAMJA,KAEAC,EAAetsH,aAAanF,yBAAyBD,GAKrD0xH,EAAevoJ,eAAegB,uBAAuBwnJ,GACrDD,EAAevpJ,iBAAiB6+C,oBAAoBp6G,GACpD8kN,EAAevpJ,iBAAiB++C,oBAAoB0qG,GAMpDF,EAAevoJ,eAAeiB,0BAC5BynJ,kBAAmBA,EACnBC,sBAAuBA,EACvBC,kBAAmBA,EACnBC,kBAAmBA,EACnBC,uBAAwBA,IAG1BP,EAAeQ,cAActoE,4BAA4BuoE,GAEzDT,EAAeQ,cAAcpoE,yBAAyBsoE,GAEtDV,EAAellN,YAAY0xC,wBAAwBm0K,GACnDX,EAAellN,YAAY0xC,wBAAwBo0K,GACnDZ,EAAellN,YAAY0xC,wBAAwBq0K,GAEnDb,EAAec,eAAelpE,4BAA4B,SAAUC,GAClE,MAAO,IAAIkpE,GAAuBlpE,KAGpCmoE,EAAegB,QAAQv3L,2BAA2BtD,GAClD65L,EAAegB,QAAQr3L,uBAAuBs3L,GAE9CjB,EAAe1rQ,UAAUqlK,kBAAkBunG,IAnE7C,GAAIP,GAAwB,EAAQ,KAChCJ,EAAyB,EAAQ,KACjCF,EAAoB,EAAQ,KAC5BJ,EAA0B,EAAQ,KAClCG,EAAwB,EAAQ,KAChCQ,EAAwB,EAAQ,KAChCM,EAAmC,EAAQ,KAC3CT,EAAoB,EAAQ,KAC5BvlN,EAAwB,EAAQ,IAChC6lN,EAAyB,EAAQ,KACjCb,EAAwB,EAAQ,KAChCQ,EAAwB,EAAQ,KAChCO,EAA+B,EAAQ,KACvC3yH,EAAqB,EAAQ,KAC7B0xH,EAAiB,EAAQ,KACzB75L,EAA4B,EAAQ,KACpC06L,EAAuB,EAAQ,KAC/BP,EAAoB,EAAQ,KAC5BH,EAAoB,EAAQ,KAE5BJ,IAkDJ9qR,GAAOD,SACLwqR,OAAQA,IpkBs27EJ,SAAUvqR,EAAQD,EAASH,GAEjC,YqkB/67EA,IAAI8rR,IACFh0K,YAEE,eAAgB,EAChB,eAAgB,EAChB,gBAAiB,EACjB,cAAe,EACf,eAAgB,EAChB,oBAAqB,EACrB,aAAc,EACd,uBAAwB,EAExB,oBAAqB,EACrB,eAAgB,EAChB,gBAAiB,EACjB,gBAAiB,EACjB,aAAc,EACd,aAAc,EACd,iBAAkB,EAClB,uBAAwB,EACxB,mBAAoB,EACpB,mBAAoB,EACpB,eAAgB,EAChB,gBAAiB,EACjB,gBAAiB,EACjB,gBAAiB,EACjB,YAAa,EACb,gBAAiB,EACjB,gBAAiB,EACjB,gBAAiB,EACjB,iBAAkB,EAElB,cAAe,EACf,YAAa,EACb,YAAa,EACb,gBAAiB,EAEjB,kBAAmB,EACnB,eAAgB,EAEhB,wBAAyB,EACzB,gBAAiB,EACjB,gBAAiB,EACjB,eAAgB,EAChB,gBAAiB,EACjB,mBAAoB,EACpB,oBAAqB,EACrB,cAAe,EACf,kBAAmB,EACnB,YAAa,EACb,gBAAiB,EACjB,gBAAiB,EACjB,gBAAiB,EACjB,eAAgB,EAChB,eAAgB,GAElBE,qBACAC,oBAGF73G,GAAOD,QAAU2rR,GrkBg87EX,SAAU1rR,EAAQD,EAASH,GAEjC,YskBh77EA,SAASssR,GAAkBn0L,GACzB,OAAQA,EAAY+6D,SAAW/6D,EAAYi7D,QAAUj7D,EAAYk7D,YAE/Dl7D,EAAY+6D,SAAW/6D,EAAYi7D,QASvC,QAASm5H,GAAwBhoJ,GAC/B,OAAQA,GACN,IAAK,sBACH,MAAOs6C,GAAW2tG,gBACpB,KAAK,oBACH,MAAO3tG,GAAW4tG,cACpB,KAAK,uBACH,MAAO5tG,GAAW6tG,mBAYxB,QAASC,GAA2BpoJ,EAAcpsC,GAChD,MAAwB,eAAjBosC,GAAiCpsC,EAAYszE,UAAYmhH,EAUlE,QAASC,GAAyBtoJ,EAAcpsC,GAC9C,OAAQosC,GACN,IAAK,WAEH,OAAsD,IAA/CuoJ,EAAaryQ,QAAQ09E,EAAYszE,QAC1C,KAAK,aAGH,MAAOtzE,GAAYszE,UAAYmhH,CACjC,KAAK,cACL,IAAK,eACL,IAAK,UAEH,OAAM,CACR,SACE,OAAM,GAaZ,QAASG,GAAuB50L,GAC9B,GAAI/tD,GAAS+tD,EAAY/tD,MACzB,OAAsB,gBAAXA,IAAuB,QAAUA,GACnCA,EAAOyb,KAET,KAST,QAASmnO,GAAwBzoJ,EAAcrsC,EAAYC,EAAaC,GACtE,GAAIo1G,GACAy/E,CAYJ,IAVIC,EACF1/E,EAAY++E,EAAwBhoJ,GAC1B4oJ,EAIDN,EAAyBtoJ,EAAcpsC,KAChDq1G,EAAY3uB,EAAW4tG,gBAJnBE,EAA2BpoJ,EAAcpsC,KAC3Cq1G,EAAY3uB,EAAW2tG,mBAMtBh/E,EACH,MAAO,KAGL4/E,KAGGD,GAAsB3/E,IAAc3uB,EAAW2tG,iBAEzCh/E,IAAc3uB,EAAW4tG,gBAC9BU,IACFF,EAAeE,EAAmBE,WAHpCF,EAAqBG,EAAyBz7L,UAAUuG,GAQ5D,IAAInuD,GAAQsjP,EAA0B17L,UAAU27G,EAAWt1G,EAAYC,EAAaC,EAEpF,IAAI60L,EAGFhjP,EAAM4b,KAAOonO,MACR,CACL,GAAIO,GAAaT,EAAuB50L,EACrB,QAAfq1L,IACFvjP,EAAM4b,KAAO2nO,GAKjB,MADA3qJ,GAAiBT,6BAA6Bn4F,GACvCA,EAQT,QAASwjP,GAA0BlpJ,EAAcpsC,GAC/C,OAAQosC,GACN,IAAK,oBACH,MAAOwoJ,GAAuB50L,EAChC,KAAK,cAgBH,MADYA,GAAY85K,QACVyb,EACL,MAGTC,KACOC,EAET,KAAK,eAEH,GAAIC,GAAQ11L,EAAYtyC,IAKxB,OAAIgoO,KAAUD,GAAiBD,EACtB,KAGFE,CAET,SAEE,MAAO,OAYb,QAASC,GAA4BvpJ,EAAcpsC,GAKjD,GAAIg1L,EAAoB,CACtB,GAAqB,sBAAjB5oJ,IAAyC2oJ,GAA0BL,EAAyBtoJ,EAAcpsC,GAAc,CAC1H,GAAI01L,GAAQV,EAAmBE,SAG/B,OAFAC,GAAyB/4L,QAAQ44L,GACjCA,EAAqB,KACdU,EAET,MAAO,MAGT,OAAQtpJ,GACN,IAAK,WAGH,MAAO,KACT,KAAK,cAiBH,MAAIpsC,GAAY85K,QAAUqa,EAAkBn0L,GACnC3xD,OAAOunB,aAAaoqC,EAAY85K,OAElC,IACT,KAAK,oBACH,MAAOmb,GAA6B,KAAOj1L,EAAYtyC,IACzD,SACE,MAAO,OAUb,QAASkoO,GAAwBxpJ,EAAcrsC,EAAYC,EAAaC,GACtE,GAAIy1L,EAUJ,MAPEA,EADEG,EACMP,EAA0BlpJ,EAAcpsC,GAExC21L,EAA4BvpJ,EAAcpsC,IAMlD,MAAO,KAGT,IAAIluD,GAAQgkP,EAAoBp8L,UAAUgtF,EAAWqvG,YAAah2L,EAAYC,EAAaC,EAI3F,OAFAnuD,GAAM4b,KAAOgoO,EACbhrJ,EAAiBT,6BAA6Bn4F,GACvCA,EArVT,GAAI44F,GAAmB,EAAQ,KAC3BlgD,EAAuB,EAAQ,IAC/B2qM,EAA2B,EAAQ,KACnCC,EAA4B,EAAQ,KACpCU,EAAsB,EAAQ,KAE9BnB,GAAgB,EAAG,GAAI,GAAI,IAC3BF,EAAgB,IAEhBM,EAAyBvqM,EAAqBxsD,WAAa,oBAAsB11B,QAEjFm7G,EAAe,IACfj5B,GAAqBxsD,WAAa,gBAAkB7zB,YACtDs5G,EAAet5G,SAASs5G,aAM1B,IAAIoyK,GAAuBrrM,EAAqBxsD,WAAa,aAAe11B,UAAWm7G,IAWvF,WACE,GAAIuyK,GAAQ1tR,OAAO0tR,KACnB,OAAwB,gBAAVA,IAA+C,kBAAlBA,GAAMnxQ,SAA0ByqB,SAAS0mP,EAAMnxQ,UAAW,KAAO,MAR1GowQ,EAA6BzqM,EAAqBxsD,aAAe+2P,GAA0BtxK,GAAgBA,EAAe,GAAKA,GAAgB,IAW/I8xK,EAAgB,GAChBE,EAAgBpnP,OAAOunB,aAAa2/N,GAGpC7uG,GACFqvG,aACE9sJ,yBACEgtJ,QAAS,gBACTC,SAAU,wBAEZz9P,cAAe,oBAAqB,cAAe,eAAgB,aAErE67P,gBACErrJ,yBACEgtJ,QAAS,mBACTC,SAAU,2BAEZz9P,cAAe,UAAW,oBAAqB,aAAc,cAAe,WAAY,iBAE1F47P,kBACEprJ,yBACEgtJ,QAAS,qBACTC,SAAU,6BAEZz9P,cAAe,UAAW,sBAAuB,aAAc,cAAe,WAAY,iBAE5F87P,mBACEtrJ,yBACEgtJ,QAAS,sBACTC,SAAU,8BAEZz9P,cAAe,UAAW,uBAAwB,aAAc,cAAe,WAAY,kBAK3F+8P,KAsFAR,EAAqB,KA6MrBzB,GAEF7sG,WAAYA,EAEZv6C,cAAe,SAAUC,EAAcrsC,EAAYC,EAAaC,GAC9D,OAAQ40L,EAAwBzoJ,EAAcrsC,EAAYC,EAAaC,GAAoB21L,EAAwBxpJ,EAAcrsC,EAAYC,EAAaC,KAI9Jh4F,GAAOD,QAAUurR,GtkB+g8EX,SAAUtrR,EAAQD,EAASH,GAEjC,YukBn38EA,SAASstR,GAAyB/+N,GAChCxvC,KAAKuvQ,MAAQ//N,EACbxvC,KAAKwvQ,WAAaxvQ,KAAKgoM,UACvBhoM,KAAKyvQ,cAAgB,KApBvB,GAAI76L,GAAU,EAAQ,IAElBC,EAAc,EAAQ,IAEtBqmH,EAAyB,EAAQ,IAmBrCtmH,GAAQ25L,EAAyBnsR,WAC/BmzF,WAAY,WACVv1E,KAAKuvQ,MAAQ,KACbvvQ,KAAKwvQ,WAAa,KAClBxvQ,KAAKyvQ,cAAgB,MAQvBznE,QAAS,WACP,MAAI,SAAWhoM,MAAKuvQ,MACXvvQ,KAAKuvQ,MAAM7pR,MAEbsa,KAAKuvQ,MAAMr0E,MASpBozE,QAAS,WACP,GAAItuQ,KAAKyvQ,cACP,MAAOzvQ,MAAKyvQ,aAGd,IAAI9oM,GAGAC,EAFA8oM,EAAa1vQ,KAAKwvQ,WAClBG,EAAcD,EAAW1tR,OAEzB4tR,EAAW5vQ,KAAKgoM,UAChB6nE,EAAYD,EAAS5tR,MAEzB,KAAK2kF,EAAQ,EAAGA,EAAQgpM,GAClBD,EAAW/oM,KAAWipM,EAASjpM,GADAA,KAMrC,GAAImpM,GAASH,EAAchpM,CAC3B,KAAKC,EAAM,EAAGA,GAAOkpM,GACfJ,EAAWC,EAAc/oM,KAASgpM,EAASC,EAAYjpM,GADhCA,KAM7B,GAAImpM,GAAYnpM,EAAM,EAAI,EAAIA,QAE9B,OADA5mE,MAAKyvQ,cAAgBG,EAAS/7Q,MAAM8yE,EAAOopM,GACpC/vQ,KAAKyvQ,iBAIhB56L,EAAYc,aAAa44L,GAEzBltR,EAAOD,QAAUmtR,GvkBq58EX,SAAUltR,EAAQD,EAASH,GAEjC,YwkBx98EA,SAASutR,GAA0Bt1L,EAAgBitC,EAAgB/sC,EAAaC,GAC9E,MAAOJ,GAAez3F,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GAjBhF,GAAIJ,GAAiB,EAAQ,IAMzB+2L,GACFlpO,KAAM,KAaRmyC,GAAewB,aAAa+zL,EAA2BwB,GAEvD3uR,EAAOD,QAAUotR,GxkBy/8EX,SAAUntR,EAAQD,EAASH,GAEjC,YykBhg9EA,SAASiuR,GAAoBh2L,EAAgBitC,EAAgB/sC,EAAaC,GACxE,MAAOJ,GAAez3F,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GAlBhF,GAAIJ,GAAiB,EAAQ,IAOzBg3L,GACFnpO,KAAM,KAaRmyC,GAAewB,aAAay0L,EAAqBe,GAEjD5uR,EAAOD,QAAU8tR,GzkBki9EX,SAAU7tR,EAAQD,EAASH,GAEjC,Y0kB3h9EA,SAASivR,GAAqB/7G,GAC5B,GAAI13D,GAAW03D,EAAK13D,UAAY03D,EAAK13D,SAASpmF,aAC9C,OAAoB,WAAbomF,GAAsC,UAAbA,GAAsC,SAAd03D,EAAKzwK,KAS/D,QAASysR,GAA0B/2L,GACjC,GAAIluD,GAAQ+tD,EAAenG,UAAUgtF,EAAWswG,OAAQC,EAAmBj3L,EAAagtC,EAAehtC,GACvG0qC,GAAiBT,6BAA6Bn4F,GAa9ConD,EAAaU,eAAes9L,EAAiBplP,GAG/C,QAASolP,GAAgBplP,GACvB24F,EAAe+B,cAAc16F,GAC7B24F,EAAegC,mBAAkBA,GAGnC,QAAS0qJ,GAA+BjvQ,EAAQ63E,GAC9CixH,EAAgB9oM,EAChB+uQ,EAAoBl3L,EACpBixH,EAAcnmI,YAAY,WAAYksM,GAGxC,QAASK,KACFpmE,IAGLA,EAAcl/B,YAAY,WAAYilG,GACtC/lE,EAAgB,KAChBimE,EAAoB,MAGtB,QAASI,GAA4BjrJ,EAAcrsC,GACjD,GAAqB,cAAjBqsC,EACF,MAAOrsC,GAGX,QAASu3L,GAA8BlrJ,EAAclkH,EAAQ63E,GACtC,aAAjBqsC,GAGFgrJ,IACAD,EAA+BjvQ,EAAQ63E,IACb,YAAjBqsC,GACTgrJ,IAoCJ,QAASG,GAA4BrvQ,EAAQ63E,GAC3CixH,EAAgB9oM,EAChB+uQ,EAAoBl3L,EACpBy3L,EAAqBtvQ,EAAO5b,MAC5BmrR,EAAyB1uR,OAAOouC,yBAAyBjvB,EAAOjC,YAAYjd,UAAW,SAIvFD,OAAOsC,eAAe2lN,EAAe,QAAS0mE,GAC1C1mE,EAAcnmI,YAChBmmI,EAAcnmI,YAAY,mBAAoB8sM,GAE9C3mE,EAAcpmI,iBAAiB,iBAAkB+sM,MAQrD,QAASC,KACF5mE,UAKEA,GAAc1kN,MAEjB0kN,EAAcl/B,YAChBk/B,EAAcl/B,YAAY,mBAAoB6lG,GAE9C3mE,EAAc79C,oBAAoB,iBAAkBwkH,MAGtD3mE,EAAgB,KAChBimE,EAAoB,KACpBO,EAAqB,KACrBC,EAAyB,MAO3B,QAASE,GAAqB33L,GAC5B,GAAiC,UAA7BA,EAAYx6D,aAAhB,CAGA,GAAIl5B,GAAQ0zF,EAAYw7D,WAAWlvJ,KAC/BA,KAAUkrR,IAGdA,EAAqBlrR,EAErByqR,EAA0B/2L,KAM5B,QAAS63L,GAA2BzrJ,EAAcrsC,GAChD,GAAqB,aAAjBqsC,EAGF,MAAOrsC,GAIX,QAAS+3L,GAA4B1rJ,EAAclkH,EAAQ63E,GACpC,aAAjBqsC,GAcFwrJ,IACAL,EAA4BrvQ,EAAQ63E,IACV,YAAjBqsC,GACTwrJ,IAKJ,QAASG,GAA6B3rJ,EAAcrsC,GAClD,IAAqB,uBAAjBqsC,GAA0D,aAAjBA,GAAgD,eAAjBA,IAWtE4kF,GAAiBA,EAAc1kN,QAAUkrR,EAE3C,MADAA,GAAqBxmE,EAAc1kN,MAC5B2qR,EAQb,QAASe,GAAoBj9G,GAI3B,MAAOA,GAAK13D,UAA4C,UAAhC03D,EAAK13D,SAASpmF,gBAA4C,aAAd89I,EAAKzwK,MAAqC,UAAdywK,EAAKzwK,MAGvG,QAAS2tR,GAA2B7rJ,EAAcrsC,GAChD,GAAqB,aAAjBqsC,EACF,MAAOrsC,GA3PX,GAAI0qC,GAAiB,EAAQ,KACzBC,EAAmB,EAAQ,KAC3BlgD,EAAuB,EAAQ,IAC/Btc,EAAwB,EAAQ,IAChCgrB,EAAe,EAAQ,IACvB2G,EAAiB,EAAQ,IAEzBmtC,EAAiB,EAAQ,KACzBkwB,EAAmB,EAAQ,KAC3BqlD,EAAqB,EAAQ,KAE7B77B,GACFswG,QACE/tJ,yBACEgtJ,QAAS,WACTC,SAAU,mBAEZz9P,cAAe,UAAW,YAAa,WAAY,WAAY,WAAY,aAAc,WAAY,wBAOrGu4L,EAAgB,KAChBimE,EAAoB,KACpBO,EAAqB,KACrBC,EAAyB,KAUzBS,IACA1tM,GAAqBxsD,YAEvBk6P,EAAwBh7H,EAAiB,aAAe/yJ,SAASs5G,cAAgBt5G,SAASs5G,aAAe,GA4D3G,IAAI00K,KACA3tM,GAAqBxsD,YAKvBm6P,EAAwBj7H,EAAiB,YAAc/yJ,SAASs5G,cAAgBt5G,SAASs5G,aAAe,IAO1G,IAAIi0K,IACFlsR,IAAK,WACH,MAAOisR,GAAuBjsR,IAAIpD,KAAKwe,OAEzC8wB,IAAK,SAAU6G,GAEbi5O,EAAqB,GAAKj5O,EAC1Bk5O,EAAuB//O,IAAItvC,KAAKwe,KAAM23B,KAiJtC80O,GAEF3sG,WAAYA,EAEZv6C,cAAe,SAAUC,EAAcrsC,EAAYC,EAAaC,GAC9D,GAEIm4L,GAAmBC,EAFnBC,EAAav4L,EAAa7xB,EAAsBN,oBAAoBmyB,GAAcz3F,MAoBtF,IAjBIwuR,EAAqBwB,GACnBJ,EACFE,EAAoBf,EAEpBgB,EAAkBf,EAEX/0E,EAAmB+1E,GACxBH,EACFC,EAAoBP,GAEpBO,EAAoBL,EACpBM,EAAkBP,GAEXE,EAAoBM,KAC7BF,EAAoBH,GAGlBG,EAAmB,CACrB,GAAIptN,GAAOotN,EAAkBhsJ,EAAcrsC,EAC3C,IAAI/0B,EAAM,CACR,GAAIl5B,GAAQ+tD,EAAenG,UAAUgtF,EAAWswG,OAAQhsN,EAAMg1B,EAAaC,EAG3E,OAFAnuD,GAAMxnC,KAAO,SACbogI,EAAiBT,6BAA6Bn4F,GACvCA,GAIPumP,GACFA,EAAgBjsJ,EAAcksJ,EAAYv4L,IAMhD93F,GAAOD,QAAUqrR,G1kB4k9EX,SAAUprR,EAAQD,EAASH,GAEjC,Y2kB539EA,SAAS0wR,GAAU/rQ,EAAK4/C,EAAWsyC,GACd,kBAARlyF,GACTA,EAAI4/C,EAAU6uB,qBAGdu9L,EAAWC,oBAAoBrsN,EAAW5/C,EAAKkyF,GAInD,QAASg6K,GAAUlsQ,EAAK4/C,EAAWsyC,GACd,kBAARlyF,GACTA,EAAI,MAGJgsQ,EAAWG,yBAAyBvsN,EAAW5/C,EAAKkyF,GAlBxD,GAAI85K,GAAa,EAAQ,KAErBr3K,IAoBJA,GAASD,WAAa,SAAU32C,EAAU7iD,GACxC,GAAgB,OAAZA,GAAuC,gBAAZA,GAA/B,CAGA,GAAI8E,GAAM9E,EAAQ8E,GACP,OAAPA,GACF+rQ,EAAU/rQ,EAAK+9C,EAAU7iD,EAAQ+mF,UAIrC0S,EAASgB,iBAAmB,SAAUF,EAAaD,GAajD,GAAI42K,GAAU,KACVC,EAAY,IACI,QAAhB52K,GAA+C,gBAAhBA,KACjC22K,EAAU32K,EAAYz1F,IACtBqsQ,EAAY52K,EAAYxT,OAG1B,IAAIqqL,GAAU,KACVC,EAAY,IAMhB,OALoB,QAAhB/2K,GAA+C,gBAAhBA,KACjC82K,EAAU92K,EAAYx1F,IACtBusQ,EAAY/2K,EAAYvT,QAGnBmqL,IAAYE,GAEA,gBAAZA,IAAwBC,IAAcF,GAG/C13K,EAASW,WAAa,SAAUv3C,EAAU7iD,GACxC,GAAgB,OAAZA,GAAuC,gBAAZA,GAA/B,CAGA,GAAI8E,GAAM9E,EAAQ8E,GACP,OAAPA,GACFksQ,EAAUlsQ,EAAK+9C,EAAU7iD,EAAQ+mF,UAIrCxmG,EAAOD,QAAUm5G,G3kBk59EX,SAAUl5G,EAAQD,EAASH,GAEjC,Y4kBr99EA,SAASmxR,GAAartR,GACpB,SAAUA,GAAsC,kBAArBA,GAAO4sR,WAAwD,kBAArB5sR,GAAO+sR,WAV9E,GAAIprN,GAAiB,EAAQ,GA2CzBkrN,GAzCY,EAAQ,IAmDtBC,oBAAqB,SAAUrsN,EAAW5/C,EAAKkyF,GAC5Cs6K,EAAat6K,IAAwUpxC,EAAe,OACrWoxC,EAAM65K,UAAU/rQ,EAAK4/C,IAYvBusN,yBAA0B,SAAUvsN,EAAW5/C,EAAKkyF,GACjDs6K,EAAat6K,IAA+UpxC,EAAe,MAC5W,IAAI2rN,GAAsBv6K,EAAMzjB,mBAG5Bg+L,IAAuBA,EAAoBzzG,KAAKh5J,KAAS4/C,EAAU6uB,qBACrEyjB,EAAMg6K,UAAUlsQ,KAMtBvkB,GAAOD,QAAUwwR,G5kBg/9EX,SAAUvwR,EAAQD,EAASH,GAEjC,Y6kBxj+EA,IAAIorR,IAA2B,uBAAwB,oBAAqB,iBAAkB,wBAAyB,oBAAqB,oBAAqB,yBAEjKhrR,GAAOD,QAAUirR,G7kBml+EX,SAAUhrR,EAAQD,EAASH,GAEjC,Y8kBjm+EA,IAAI6iI,GAAmB,EAAQ,KAC3Bx8D,EAAwB,EAAQ,IAChCqsF,EAAsB,EAAQ,KAE9BmsB,GACFwyG,YACElwJ,iBAAkB,eAClBvwG,cAAe,cAAe,iBAEhC0gQ,YACEnwJ,iBAAkB,eAClBvwG,cAAe,cAAe,kBAI9B26P,GAEF1sG,WAAYA,EASZv6C,cAAe,SAAUC,EAAcrsC,EAAYC,EAAaC,GAC9D,GAAqB,iBAAjBmsC,IAAoCpsC,EAAYs7D,eAAiBt7D,EAAYu7D,aAC/E,MAAO,KAET,IAAqB,gBAAjBnvB,GAAmD,iBAAjBA,EAEpC,MAAO,KAGT,IAAIgtJ,EACJ,IAAIn5L,EAAkB33F,SAAW23F,EAE/Bm5L,EAAMn5L,MACD,CAEL,GAAIg0B,GAAMh0B,EAAkBktC,aAE1BisJ,GADEnlK,EACIA,EAAImZ,aAAenZ,EAAIoZ,aAEvB/kI,OAIV,GAAIuvB,GACAk4B,CACJ,IAAqB,gBAAjBq8E,EAAgC,CAClCv0G,EAAOkoE,CACP,IAAIs5L,GAAUr5L,EAAYs7D,eAAiBt7D,EAAYy7D,SACvD1rG,GAAKspO,EAAUnrN,EAAsBX,2BAA2B8rN,GAAW,SAG3ExhQ,GAAO,KACPk4B,EAAKgwC,CAGP,IAAIloE,IAASk4B,EAEX,MAAO,KAGT,IAAIvP,GAAmB,MAAR3oB,EAAeuhQ,EAAMlrN,EAAsBN,oBAAoB/1C,GAC1EyhQ,EAAe,MAANvpO,EAAaqpO,EAAMlrN,EAAsBN,oBAAoB7d,GAEtEs6E,EAAQkwB,EAAoB7gE,UAAUgtF,EAAWyyG,WAAYthQ,EAAMmoE,EAAaC,EACpFoqC,GAAM//H,KAAO,aACb+/H,EAAMniH,OAASs4B,EACf6pF,EAAMixB,cAAgBg+H,CAEtB,IAAIhvJ,GAAQiwB,EAAoB7gE,UAAUgtF,EAAWwyG,WAAYnpO,EAAIiwC,EAAaC,EAOlF,OANAqqC,GAAMhgI,KAAO,aACbggI,EAAMpiH,OAASoxQ,EACfhvJ,EAAMgxB,cAAgB96G,EAEtBkqF,EAAiBN,+BAA+BC,EAAOC,EAAOzyG,EAAMk4B,IAE5Ds6E,EAAOC,IAKnBriI,GAAOD,QAAUorR,G9kBkn+EX,SAAUnrR,EAAQD,EAASH,GAEjC,Y+kB1s+EA,IAAIimE,GAAc,EAAQ,IAEtBqxC,EAAoBrxC,EAAY+uB,UAAUsiB,kBAC1CC,EAAoBtxC,EAAY+uB,UAAUuiB,kBAC1CC,EAAoBvxC,EAAY+uB,UAAUwiB,kBAC1CC,EAA6BxxC,EAAY+uB,UAAUyiB,2BACnDC,EAA+BzxC,EAAY+uB,UAAU0iB,6BAErDq0K,GACF5zK,kBAAmBx6D,OAAOx8C,UAAUwjC,KAAK9gB,KAAK,GAAI85B,QAAO,iBAAmBsoB,EAAYkzC,oBAAsB,QAC9GrB,YAIEu7E,OAAQ,EACRq+F,cAAe,EACfC,UAAW,EACXpzJ,OAAQ,EACRqzJ,gBAAiBr6K,EACjBs6K,kBAAmB,EACnBlqF,IAAK,EAELviD,GAAI,EACJziJ,MAAO40G,EACPu6K,aAAc,EAGdnjF,SAAUp3F,EACV4pE,QAAS5pE,EACTw6K,YAAa,EACbC,YAAa,EACbC,QAAS,EACTC,UAAW,EACXnuG,QAASzsE,EAAoBC,EAC7BqtK,KAAM,EACNuN,QAAS,EACTzyN,UAAW,EACX41M,KAAM79J,EACN26K,QAAS,EACT9gO,QAAS,EACTo2J,gBAAiB,EACjB2qE,YAAa,EACbC,SAAU/6K,EACVg7K,OAAQ,EACRC,YAAa,EACb3sO,KAAM,EACNy9B,SAAU,EACV,QAAWi0B,EACXj8D,MAAOi8D,EACPhlG,IAAK,EACLywH,SAAUzrB,EACVk7K,SAAU/6K,EACV2+D,UAAW,EACXq8G,QAAS,EACTnN,KAAM,EACNoN,WAAY,EACZC,YAAa,EACbC,WAAY,EACZC,eAAgBv7K,EAChBw7K,WAAY,EACZ9qM,YAAa,EACbmpG,QAAS,EACTppG,OAAQ,EACRi/J,OAAQ1vI,EACRy7K,KAAM,EACNl2Q,KAAM,EACNm2Q,SAAU,EACVC,QAAS,EACTC,UAAW,EACX/jO,KAAM,EACN/zC,GAAI,EACJ+3Q,UAAW,EACXC,UAAW,EACX/tQ,GAAI,EACJguQ,UAAW,EACXC,QAAS,EACTC,KAAM,EACN3hR,MAAO,EACPoJ,KAAM,EACN0jD,KAAM,EACN80N,KAAMl8K,EACNm8K,IAAK,EACLC,SAAU,EACVC,aAAc,EACdC,YAAa,EACbv2P,IAAK,EACLo1O,UAAW,EACXohB,MAAO,EACPC,WAAY,EACZppP,OAAQ,EACR07C,IAAK,EACL2tM,UAAW,EAGXjzE,SAAUzpG,EAAoBC,EAC9Bq4C,MAAOt4C,EAAoBC,EAC3Bl0G,KAAM,EACN4wR,MAAO,EACPC,WAAY38K,EACZjL,KAAMiL,EACN48K,QAAS,EACTh0K,QAAS,EACT+nI,YAAa,EACbksC,YAAa78K,EACbilF,OAAQ,EACR63F,QAAS,EACT79M,QAAS,EACT89M,WAAY,EACZnwG,SAAU5sE,EACVg9K,eAAgB,EAChB9gB,IAAK,EACL+gB,SAAUj9K,EACVk9K,SAAUl9K,EACVm9K,KAAM,EACN7wK,KAAMpM,EACNk9K,QAASn9K,EACTo9K,QAAS,EACTngM,MAAO,EACPogM,OAAQt9K,EACRi/D,UAAW,EACXs+G,SAAUv9K,EACVpK,SAAUmK,EAAoBC,EAC9BztF,MAAO,EACP+0B,KAAM44D,EACNswF,MAAO,EACPo/E,KAAM1vK,EACNs9K,WAAY,EACZjyR,IAAK,EACLkyR,OAAQ,EACRC,QAAS,EACTjtF,OAAQ,EACRtiH,MAAO8xB,EACP7oD,KAAM,EACNyrB,MAAO,EACPitM,QAAS,EACTlgC,SAAU,EACV9mO,OAAQ,EACRgmB,MAAO,EAEP5jC,KAAM,EACNyyR,OAAQ,EACRzwR,MAAO,EACPsjF,MAAO,EACPotM,MAAO,EACPviC,KAAM,EAKNwiC,MAAO,EACPC,SAAU,EACVC,OAAQ,EACRvtO,OAAQ,EAERhkD,SAAU,EACVsiD,SAAU,EACV,OAAU,EACVkvO,MAAO,EAOPC,eAAgB,EAChBC,YAAa,EAEbC,SAAU,EAEVhpP,MAAO,EAGPipP,SAAU,EACVC,UAAWr+K,EACXs+K,SAAU,EAIVC,OAAQ,EACRC,QAAS,EAGT35F,QAAS,EAGT45F,SAAU,EAEVC,aAAc,GAEhBj+K,mBACE05K,cAAe,iBACfhyN,UAAW,QACXwzN,QAAS,MACTC,UAAW,cAEbl7K,oBAGF73G,GAAOD,QAAU4rR,G/kB2t+EX,SAAU3rR,EAAQD,EAASH,GAEjC,YglBn6+EA,IAAI4iL,GAAwB,EAAQ,KAChCszG,EAAuB,EAAQ,KAO/B7J,GAEFxnG,uBAAwBqxG,EAAqBC,kCAE7CvxG,sBAAuBhC,EAAsBD,iCAI/CviL,GAAOD,QAAUksR,GhlBo7+EX,SAAUjsR,EAAQD,EAASH,GAEjC,YilBt8+EA,IAAIylE,GAAiB,EAAQ,GAEzBg2C,EAAc,EAAQ,IACtB94B,EAAuB,EAAQ,IAE/ByzM,EAAwB,EAAQ,KAChCpqQ,EAAgB,EAAQ,IAGxB02J,GAFY,EAAQ,IAYtBC,iCAAkC,SAAU0zG,EAAUz8K,GAKpD,GAJCj3B,EAAqBxsD,WAAyTsvC,EAAe,MAC7Vm0C,GAA8Hn0C,EAAe,MACtH,SAAtB4wN,EAAS76K,UAA6U/1C,EAAe,MAEjV,gBAAXm0C,GAAqB,CAC9B,GAAI08K,GAAWF,EAAsBx8K,EAAQ5tF,GAAe,EAC5DqqQ,GAASzwN,WAAWs1C,aAAao7K,EAAUD,OAE3C56K,GAAYV,qBAAqBs7K,EAAUz8K,KAMjDx5G,GAAOD,QAAUuiL,GjlBu9+EX,SAAUtiL,EAAQD,EAASH,GAEjC,YklBp++EA,SAASu2R,GAAY38K,GACnB,GAAI48K,GAAgB58K,EAAOvwF,MAAMotQ,EACjC,OAAOD,IAAiBA,EAAc,GAAGphQ,cAa3C,QAASghQ,GAAsBx8K,EAAQ88K,GACrC,GAAI1qP,GAAO2qP,CACRA,IAAsHlrQ,KACzH,IAAI+vF,GAAW+6K,EAAY38K,GAEvBg5I,EAAOp3I,GAAYo7K,EAAcp7K,EACrC,IAAIo3I,EAAM,CACR5mN,EAAK+kC,UAAY6hL,EAAK,GAAKh5I,EAASg5I,EAAK,EAGzC,KADA,GAAIikC,GAAYjkC,EAAK,GACdikC,KACL7qP,EAAOA,EAAK6uK,cAGd7uK,GAAK+kC,UAAY6oC,CAGnB,IAAIk9K,GAAU9qP,EAAKzpC,qBAAqB,SACpCu0R,GAAQ/1R,SACT21R,GAA+IjrQ,MAChJsrQ,EAAqBD,GAASh4O,QAAQ43O,GAIxC,KADA,GAAI5qP,GAAQ/4B,MAAMid,KAAKgc,EAAK6tI,YACrB7tI,EAAK6uK,WACV7uK,EAAKgzC,YAAYhzC,EAAK6uK,UAExB,OAAO/uK,GAhET,GAAI62C,GAAuB,EAAQ,IAE/Bo0M,EAAuB,EAAQ,KAC/BH,EAAgB,EAAQ,KACxBnrQ,EAAY,EAAQ,GAKpBkrQ,EAAYh0M,EAAqBxsD,UAAY7zB,SAASE,cAAc,OAAS,KAK7Ei0R,EAAkB,YAqDtBr2R,GAAOD,QAAUi2R,GllB4g/EX,SAAUh2R,EAAQD,EAASH,GAEjC,YmlBxk/EA,SAASm2G,GAAQ5xG,GACf,GAAIxD,GAASwD,EAAIxD,MAejB,KAXGgS,MAAM+c,QAAQvrB,IAAwB,gBAARA,IAAmC,kBAARA,KAAyHknB,MAEjK,gBAAX1qB,IAA6H0qB,MAEzH,IAAX1qB,GAAgBA,EAAS,IAAKwD,IAAkHknB,MAE1H,kBAAflnB,GAAIosN,QAAmMllM,MAK5MlnB,EAAInD,eACN,IACE,MAAO2R,OAAM5R,UAAUyR,MAAMrS,KAAKgE,GAClC,MAAOhD,IAQX,IAAK,GADDo2B,GAAM5kB,MAAMhS,GACPsvI,EAAK,EAAGA,EAAKtvI,EAAQsvI,IAC5B14G,EAAI04G,GAAM9rI,EAAI8rI,EAEhB,OAAO14G,GAkBT,QAASq/P,GAAezyR,GACtB,QAEIA,IAEY,gBAAPA,IAAiC,kBAAPA,KAEjC,UAAYA,MAEV,eAAiBA,KAGI,gBAAhBA,GAAI2/D,WAEXnxD,MAAM+c,QAAQvrB,IAEd,UAAYA,IAEZ,QAAUA,IAyBd,QAASwyR,GAAqBxyR,GAC5B,MAAKyyR,GAAezyR,GAETwO,MAAM+c,QAAQvrB,GAChBA,EAAIqO,QAEJujG,EAAQ5xG,IAJPA,GAxGZ,GAAIknB,GAAY,EAAQ,EAgHxBrrB,GAAOD,QAAU42R,GnlBmm/EX,SAAU32R,EAAQD,EAASH,GAEjC,YolBrp/EA,SAAS42R,GAAcp7K,GAarB,MAZGm7K,IAA+GlrQ,MAC7GwrQ,EAAW71R,eAAeo6G,KAC7BA,EAAW,KAER07K,EAAW91R,eAAeo6G,KAE3Bm7K,EAAU5lN,UADK,MAAbyqC,EACoB,WAEA,IAAMA,EAAW,MAAQA,EAAW,IAE5D07K,EAAW17K,IAAam7K,EAAUxxN,YAE7B+xN,EAAW17K,GAAYy7K,EAAWz7K,GAAY,KA5EvD,GAAI74B,GAAuB,EAAQ,IAE/Bl3D,EAAY,EAAQ,GAKpBkrQ,EAAYh0M,EAAqBxsD,UAAY7zB,SAASE,cAAc,OAAS,KAS7E00R,KAEAC,GAAc,EAAG,2BAA4B,aAC7CC,GAAa,EAAG,UAAW,YAC3BC,GAAU,EAAG,qBAAsB,yBAEnCC,GAAW,EAAG,2CAA4C,UAE1DL,GACF,KAAM,EAAG,SAAU,UAEnB,MAAS,EAAG,QAAS,UACrB,KAAQ,EAAG,mCAAoC,uBAC/C,QAAW,EAAG,aAAc,eAC5B,OAAU,EAAG,WAAY,aACzB,IAAO,EAAG,iBAAkB,oBAE5B,SAAYE,EACZ,OAAUA,EAEV,QAAWC,EACX,SAAYA,EACZ,MAASA,EACT,MAASA,EACT,MAASA,EAET,GAAMC,EACN,GAAMA,IAMW,SAAU,WAAY,OAAQ,UAAW,IAAK,QAAS,OAAQ,iBAAkB,OAAQ,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OAAQ,OAAQ,OAAQ,SACpLv4O,QAAQ,SAAU08D,GAC5By7K,EAAWz7K,GAAY87K,EACvBJ,EAAW17K,QA2Bbp7G,EAAOD,QAAUy2R,GplBqu/EX,SAAUx2R,EAAQD,EAASH,GAEjC,YqlBtz/EA,IAAI4iL,GAAwB,EAAQ,KAChCv8G,EAAwB,EAAQ,IAKhC6vN,GAQFC,kCAAmC,SAAUp0J,EAAY+gD,GACvD,GAAI92I,GAAOq6B,EAAsBN,oBAAoBg8D,EACrD6gD,GAAsBC,eAAe72I,EAAM82I,IAI/C1iL,GAAOD,QAAU+1R,GrlBu0/EX,SAAU91R,EAAQD,EAASH,GAEjC,YslBzy/EA,SAASgkL,GAA4BxqE,GACnC,GAAIA,EAAkB,CACpB,GAAI3C,GAAQ2C,EAAiB1mB,gBAAgB8T,QAAU,IACvD,IAAIiQ,EAAO,CACT,GAAIxzG,GAAOwzG,EAAM7jB,SACjB,IAAI3vF,EACF,MAAO,mCAAqCA,EAAO,MAIzD,MAAO,GA2DT,QAASk0R,GAAiBhzN,EAAW3lD,GAC9BA,IAID44Q,EAAgBjzN,EAAUkzN,QACR,MAAlB74Q,EAAMY,UAAqD,MAAjCZ,EAAMshE,0BAA2Uza,EAAe,MAAOlB,EAAUkzN,KAAMlzN,EAAUuuB,gBAAgB8T,OAAS,+BAAiCriC,EAAUuuB,gBAAgB8T,OAAO5T,UAAY,IAAM,IAEve,MAAjCp0E,EAAMshE,0BACY,MAAlBthE,EAAMY,UAAqJimD,EAAe,MACjI,gBAAlC7mD,GAAMshE,yBAAwCK,IAAQ3hE,GAAMshE,yBAA0Pza,EAAe,OAO/T,MAAf7mD,EAAMw7D,OAAwC,gBAAhBx7D,GAAMw7D,OAAqR3U,EAAe,KAAMu+G,EAA4Bz/G,KAG9W,QAASmzN,GAAmBv0N,EAAMg+D,EAAkBjgH,EAAUmxE,GAC5D,KAAIA,YAAuBslM,IAA3B,CAQA,GAAIC,GAAgBz0N,EAAK6nJ,mBACrB6sE,EAAqBD,EAAcE,OAASF,EAAcE,MAAM5zN,WAAa6zN,EAC7E3rK,EAAMyrK,EAAqBD,EAAcE,MAAQF,EAAcI,cACnEh+H,GAAS74B,EAAkB/U,GAC3B/5B,EAAYwnB,qBAAqB1mB,QAAQ2wC,GACvC3gE,KAAMA,EACNg+D,iBAAkBA,EAClBjgH,SAAUA,KAId,QAAS4iH,KACP,GAAIm0J,GAAgBl5Q,IACpB6jH,GAAekB,YAAYm0J,EAAc90N,KAAM80N,EAAc92J,iBAAkB82J,EAAc/2Q,UAG/F,QAASg3Q,KACP,GAAI/0N,GAAOpkD,IACXo5Q,GAAcC,iBAAiBj1N,GAGjC,QAASk1N,KACP,GAAIl1N,GAAOpkD,IACXu5Q,GAAiBF,iBAAiBj1N,GAGpC,QAASo1N,KACP,GAAIp1N,GAAOpkD,IACXy5Q,GAAeJ,iBAAiBj1N,GA4DlC,QAASs1N,KACP,GAAIt1N,GAAOpkD,IAGVokD,GAAKwgE,aAA2Gl+D,EAAe,KAChI,IAAIz5B,GAAO0sP,EAAQv1N,EAGnB,QAFCn3B,GAA0Hy5B,EAAe,MAElItC,EAAKs0N,MACX,IAAK,SACL,IAAK,SACHt0N,EAAKy9I,cAAc5/L,WAAaw4I,EAAyBY,iBAAiB,UAAW,OAAQpuH,GAC7F,MACF,KAAK,QACL,IAAK,QAEHm3B,EAAKy9I,cAAc5/L,YAEnB,KAAK,GAAIipB,KAAS0uP,GACZA,EAAYv3R,eAAe6oC,IAC7Bk5B,EAAKy9I,cAAc5/L,UAAU/f,KAAKu4J,EAAyBY,iBAAiBnwH,EAAO0uP,EAAY1uP,GAAQ+B,GAG3G,MACF,KAAK,SACHm3B,EAAKy9I,cAAc5/L,WAAaw4I,EAAyBY,iBAAiB,WAAY,QAASpuH,GAC/F,MACF,KAAK,MACHm3B,EAAKy9I,cAAc5/L,WAAaw4I,EAAyBY,iBAAiB,WAAY,QAASpuH,GAAOwtH,EAAyBY,iBAAiB,UAAW,OAAQpuH,GACnK,MACF,KAAK,OACHm3B,EAAKy9I,cAAc5/L,WAAaw4I,EAAyBY,iBAAiB,WAAY,QAASpuH,GAAOwtH,EAAyBY,iBAAiB,YAAa,SAAUpuH,GACvK,MACF,KAAK,QACL,IAAK,SACL,IAAK,WACHm3B,EAAKy9I,cAAc5/L,WAAaw4I,EAAyBY,iBAAiB,aAAc,UAAWpuH,KAKzG,QAAS4sP,KACPx3E,EAAeK,kBAAkB1iM,MA6CnC,QAAS85Q,GAAqBt8M,GACvBn7E,EAAeb,KAAKu4R,EAAmBv8M,KACzCw8M,EAAgBp0P,KAAK43C,IAA0F9W,EAAe,KAAM8W,GACrIu8M,EAAkBv8M,OAItB,QAASy8M,GAAkBr8M,EAAS/9D,GAClC,MAAO+9D,GAAQliE,QAAQ,MAAQ,GAAiB,MAAZmE,EAAM0G,GAmB5C,QAASsmQ,GAAkB/rQ,GACzB,GAAI08D,GAAM18D,EAAQpd,IAClBo2R,GAAqBt8M,GACrBx9D,KAAK+zE,gBAAkBjzE,EACvBd,KAAK04Q,KAAOl7M,EAAInnD,cAChBrW,KAAKk6Q,cAAgB,KACrBl6Q,KAAKkmD,kBAAoB,KACzBlmD,KAAKm6Q,eAAiB,KACtBn6Q,KAAKo6Q,mBAAqB,KAC1Bp6Q,KAAK4lD,UAAY,KACjB5lD,KAAKinD,YAAc,KACnBjnD,KAAK4kH,YAAc,EACnB5kH,KAAKwmD,OAAS,EACdxmD,KAAKisM,mBAAqB,KAC1BjsM,KAAK6hM,cAAgB,KACrB7hM,KAAKirM,iBAAmB,KACxBjrM,KAAKgmD,OAAS,EA9WhB,GAAIU,GAAiB,EAAQ,GACzBkuB,EAAU,EAAQ,IAElBylM,EAAiB,EAAQ,KACzBC,EAAwB,EAAQ,KAChC59K,EAAc,EAAQ,IACtBC,EAAgB,EAAQ,KACxBz1C,EAAc,EAAQ,IACtB65I,EAAwB,EAAQ,KAChCl9E,EAAiB,EAAQ,KACzBK,EAAsB,EAAQ,KAC9Bu2B,EAA2B,EAAQ,KACnCtzF,EAAyB,EAAQ,KACjCG,EAAwB,EAAQ,IAChC8xN,EAAgB,EAAQ,KACxBK,EAAiB,EAAQ,KACzBp3E,EAAiB,EAAQ,KACzBk3E,EAAmB,EAAQ,KAE3BgB,GADuB,EAAQ,IACb,EAAQ,MAC1B3B,EAAkC,EAAQ,KAG1C/iI,GADgB,EAAQ,IACM,EAAQ,MAOtCxuJ,GANY,EAAQ,GACD,EAAQ,KACZ,EAAQ,KACF,EAAQ,KACnB,EAAQ,GAEV8/D,GACRi+D,EAAiBvB,EAAeuB,eAChCu0J,EAAUryN,EAAsBN,oBAChCi0F,EAAWR,EAAyBQ,SACpCh2B,EAA0Bf,EAAoBe,wBAG9Cu1J,GAAkB,UAAgB,WAGlCh5M,EAAO,SACPm2B,GACFl3F,SAAU,KACV0gE,wBAAyB,KACzBs5M,+BAAgC,MAI9BzB,EAAoB,GAkKpBY,GACFnjI,SAAU,QACVK,WAAY,UACZC,kBAAmB,iBACnBkB,kBAAmB,iBACnBC,WAAY,UACZC,aAAc,YACdC,SAAU,QACVC,SAAU,QACVM,cAAe,aACfC,kBAAmB,iBACnBC,aAAc,YACdO,SAAU,QACVC,QAAS,OACTC,WAAY,UACZC,YAAa,WACbC,cAAe,aACfE,UAAW,SACXC,WAAY,UACZE,WAAY,UACZC,WAAY,UACZE,cAAe,aACfM,gBAAiB,eACjBC,WAAY,WAmDVmgI,GACF,QACA,QACA,MACA,OACA,SACA,MACA,OACA,SACA,UACA,QACA,QACA,SACA,UACA,SACA,QAGEC,GACF,WACA,OACA,aAMElC,EAAkB7jM,GACpB,aACC8lM,GAMCV,EAAkB,8BAClBD,KACA13R,KAAoBA,eAapBu4R,EAAkB,CAuCtB/N,GAAkBvoQ,YAAc,oBAEhCuoQ,EAAkBgO,OAahBrgL,eAAgB,SAAUlnB,EAAaonB,EAAYC,EAAmB76F,GACpEE,KAAK4kH,YAAcg2J,IACnB56Q,KAAKwmD,OAASm0C,EAAkBmgL,aAChC96Q,KAAKinD,YAAcyzC,EACnB16F,KAAKisM,mBAAqBtxG,CAE1B,IAAI96F,GAAQG,KAAK+zE,gBAAgBl0E,KAEjC,QAAQG,KAAK04Q,MACX,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,QACH14Q,KAAK6hM,eACH5/L,UAAW,MAEbqxE,EAAYwnB,qBAAqB1mB,QAAQslM,EAAwB15Q,KACjE,MACF,KAAK,QACHo5Q,EAAc72E,aAAaviM,KAAMH,EAAO66F,GACxC76F,EAAQu5Q,EAAc92E,aAAatiM,KAAMH,GACzCyzE,EAAYwnB,qBAAqB1mB,QAAQslM,EAAwB15Q,KACjE,MACF,KAAK,SACHy5Q,EAAel3E,aAAaviM,KAAMH,EAAO66F,GACzC76F,EAAQ45Q,EAAen3E,aAAatiM,KAAMH,EAC1C,MACF,KAAK,SACHwiM,EAAeE,aAAaviM,KAAMH,EAAO66F,GACzC76F,EAAQwiM,EAAeC,aAAatiM,KAAMH,GAC1CyzE,EAAYwnB,qBAAqB1mB,QAAQslM,EAAwB15Q,KACjE,MACF,KAAK,WACHu5Q,EAAiBh3E,aAAaviM,KAAMH,EAAO66F,GAC3C76F,EAAQ05Q,EAAiBj3E,aAAatiM,KAAMH,GAC5CyzE,EAAYwnB,qBAAqB1mB,QAAQslM,EAAwB15Q,MAIrEw4Q,EAAiBx4Q,KAAMH,EAIvB,IAAIk9F,GACAg+K,CACc,OAAdrgL,GACFqC,EAAerC,EAAWw/K,cAC1Ba,EAAYrgL,EAAWg+K,MACd/9K,EAAkB+9K,OAC3B37K,EAAepC,EAAkBu/K,cACjCa,EAAYpgL,EAAkB+9K,OAEZ,MAAhB37K,GAAwBA,IAAiBJ,EAAc04C,KAAqB,kBAAd0lI,KAChEh+K,EAAeJ,EAAcf,MAE3BmB,IAAiBJ,EAAcf,OACf,QAAd57F,KAAK04Q,KACP37K,EAAeJ,EAAc04C,IACN,SAAdr1I,KAAK04Q,OACd37K,EAAeJ,EAAcunE,SAGjClkK,KAAKk6Q,cAAgBn9K,CAGnB,IAcEi+K,EACJ,IAAI1nM,EAAYi4H,iBAAkB,CAChC,GACI9qJ,GADA8lE,EAAgB5rB,EAAkBs+K,cAEtC,IAAIl8K,IAAiBJ,EAAcf,KACjC,GAAkB,WAAd57F,KAAK04Q,KAAmB,CAG1B,GAAIv1O,GAAMojF,EAAc9iI,cAAc,OAClCC,EAAOsc,KAAK+zE,gBAAgBrwF,IAChCy/C,GAAI6uB,UAAY,IAAMtuE,EAAO,MAAQA,EAAO,IAC5C+8D,EAAKtd,EAAI88B,YAAY98B,EAAIijB,gBAEzB3F,GADS5gD,EAAM0G,GACVggH,EAAc9iI,cAAcuc,KAAK+zE,gBAAgBrwF,KAAMmc,EAAM0G,IAK7DggH,EAAc9iI,cAAcuc,KAAK+zE,gBAAgBrwF,UAGxD+8D,GAAK8lE,EAAc00J,gBAAgBl+K,EAAc/8F,KAAK+zE,gBAAgBrwF,KAExE4jE,GAAsB5B,aAAa1lD,KAAMygD,GACzCzgD,KAAKgmD,QAAU3+D,EAAM4+D,oBAChBjmD,KAAKinD,aACR85I,EAAsBI,oBAAoB1gJ,GAE5CzgD,KAAKk7Q,qBAAqB,KAAMr7Q,EAAOyzE,EACvC,IAAI6nM,GAAWz+K,EAAYj8C,EAC3BzgD,MAAKo7Q,uBAAuB9nM,EAAazzE,EAAOC,EAASq7Q,GACzDH,EAAaG,MACR,CACL,GAAIE,GAAUr7Q,KAAKs7Q,oCAAoChoM,EAAazzE,GAChE2gE,EAAaxgE,KAAKu7Q,qBAAqBjoM,EAAazzE,EAAOC,EAE7Dk7Q,IADGx6M,GAAck6M,EAAiB16Q,KAAK04Q,MAC1B2C,EAAU,KAEVA,EAAU,IAAM76M,EAAa,KAAOxgE,KAAK+zE,gBAAgBrwF,KAAO,IAIjF,OAAQsc,KAAK04Q,MACX,IAAK,QACHplM,EAAYwnB,qBAAqB1mB,QAAQ+kM,EAAgBn5Q,MACrDH,EAAM27Q,WACRloM,EAAYwnB,qBAAqB1mB,QAAQimM,EAAeoB,kBAAmBz7Q,KAE7E,MACF,KAAK,WACHszE,EAAYwnB,qBAAqB1mB,QAAQklM,EAAmBt5Q,MACxDH,EAAM27Q,WACRloM,EAAYwnB,qBAAqB1mB,QAAQimM,EAAeoB,kBAAmBz7Q,KAE7E,MACF,KAAK,SAKL,IAAK,SACCH,EAAM27Q,WACRloM,EAAYwnB,qBAAqB1mB,QAAQimM,EAAeoB,kBAAmBz7Q,KAE7E,MACF,KAAK,SACHszE,EAAYwnB,qBAAqB1mB,QAAQolM,EAAiBx5Q,MAI9D,MAAOg7Q,IAgBTM,oCAAqC,SAAUhoM,EAAazzE,GAC1D,GAAI+Y,GAAM,IAAM5Y,KAAK+zE,gBAAgBrwF,IAErC,KAAK,GAAIg4R,KAAW77Q,GAClB,GAAKA,EAAMxd,eAAeq5R,GAA1B,CAGA,GAAIz5E,GAAYpiM,EAAM67Q,EACtB,IAAiB,MAAbz5E,EAGJ,GAAIh9E,EAAwB5iI,eAAeq5R,GACrCz5E,GACF02E,EAAmB34Q,KAAM07Q,EAASz5E,EAAW3uH,OAE1C,CArhBD,UAshBAooM,IACEz5E,IAKFA,EAAYjiM,KAAKo6Q,mBAAqBxlM,KAAY/0E,EAAMw7D,QAE1D4mI,EAAYq4E,EAAsBqB,sBAAsB15E,EAAWjiM,MAErE,IAAI66F,GAAS,IACI,OAAb76F,KAAK04Q,MAAgBuB,EAAkBj6Q,KAAK04Q,KAAM74Q,GAC/C83F,EAAet1G,eAAeq5R,KACjC7gL,EAASkmG,EAAsBM,+BAA+Bq6E,EAASz5E,IAGzEpnG,EAASkmG,EAAsBK,wBAAwBs6E,EAASz5E,GAE9DpnG,IACFjiF,GAAO,IAAMiiF,IAOnB,MAAIvnB,GAAYsoM,qBACPhjQ,GAGJ5Y,KAAKinD,cACRruC,GAAO,IAAMmoL,EAAsBG,uBAErCtoL,GAAO,IAAMmoL,EAAsBC,kBAAkBhhM,KAAKwmD,UAa5D+0N,qBAAsB,SAAUjoM,EAAazzE,EAAOC,GAClD,GAAI8Y,GAAM,GAGNo5C,EAAYnyD,EAAMshE,uBACtB,IAAiB,MAAbnP,EACsB,MAApBA,EAAUoP,SACZxoD,EAAMo5C,EAAUoP,YAEb,CACL,GAAIy6M,GAAerB,QAAqB36Q,GAAMY,UAAYZ,EAAMY,SAAW,KACvEq7Q,EAAgC,MAAhBD,EAAuB,KAAOh8Q,EAAMY,QACxD,IAAoB,MAAhBo7Q,EAEFjjQ,EAAMi9H,EAA4BgmI,OAI7B,IAAqB,MAAjBC,EAAuB,CAChC,GAAIC,GAAc/7Q,KAAKg8Q,cAAcF,EAAexoM,EAAaxzE,EACjE8Y,GAAMmjQ,EAAY9pQ,KAAK,KAG3B,MAAI0oQ,GAAkB36Q,KAAK04Q,OAA2B,OAAlB9/P,EAAIwO,OAAO,GAWtC,KAAOxO,EAEPA,GAIXwiQ,uBAAwB,SAAU9nM,EAAazzE,EAAOC,EAASq7Q,GAE7D,GAAInpN,GAAYnyD,EAAMshE,uBACtB,IAAiB,MAAbnP,EACsB,MAApBA,EAAUoP,QACZs7B,EAAYH,UAAU4+K,EAAUnpN,EAAUoP,YAEvC,CACL,GAAIy6M,GAAerB,QAAqB36Q,GAAMY,UAAYZ,EAAMY,SAAW,KACvEq7Q,EAAgC,MAAhBD,EAAuB,KAAOh8Q,EAAMY,QAExD,IAAoB,MAAhBo7Q,EAKmB,KAAjBA,GAIFn/K,EAAYF,UAAU2+K,EAAUU,OAE7B,IAAqB,MAAjBC,EAET,IAAK,GADDC,GAAc/7Q,KAAKg8Q,cAAcF,EAAexoM,EAAaxzE,GACxDxe,EAAI,EAAGA,EAAIy6R,EAAY/5R,OAAQV,IACtCo7G,EAAYN,WAAW++K,EAAUY,EAAYz6R,MAcrD65G,iBAAkB,SAAUC,EAAa9nB,EAAaxzE,GACpD,GAAIu7F,GAAcr7F,KAAK+zE,eACvB/zE,MAAK+zE,gBAAkBqnB,EACvBp7F,KAAKglQ,gBAAgB1xL,EAAa+nB,EAAaD,EAAat7F,IAa9DklQ,gBAAiB,SAAU1xL,EAAa+nB,EAAaD,EAAat7F,GAChE,GAAIm8Q,GAAY5gL,EAAYx7F,MACxB8C,EAAY3C,KAAK+zE,gBAAgBl0E,KAErC,QAAQG,KAAK04Q,MACX,IAAK,QACHuD,EAAY7C,EAAc92E,aAAatiM,KAAMi8Q,GAC7Ct5Q,EAAYy2Q,EAAc92E,aAAatiM,KAAM2C,EAC7C,MACF,KAAK,SACHs5Q,EAAYxC,EAAen3E,aAAatiM,KAAMi8Q,GAC9Ct5Q,EAAY82Q,EAAen3E,aAAatiM,KAAM2C,EAC9C,MACF,KAAK,SACHs5Q,EAAY55E,EAAeC,aAAatiM,KAAMi8Q,GAC9Ct5Q,EAAY0/L,EAAeC,aAAatiM,KAAM2C,EAC9C,MACF,KAAK,WACHs5Q,EAAY1C,EAAiBj3E,aAAatiM,KAAMi8Q,GAChDt5Q,EAAY42Q,EAAiBj3E,aAAatiM,KAAM2C,GAQpD,OAJA61Q,EAAiBx4Q,KAAM2C,GACvB3C,KAAKk7Q,qBAAqBe,EAAWt5Q,EAAW2wE,GAChDtzE,KAAKk8Q,mBAAmBD,EAAWt5Q,EAAW2wE,EAAaxzE,GAEnDE,KAAK04Q,MACX,IAAK,QAIHU,EAAc+C,cAAcn8Q,KAC5B,MACF,KAAK,WACHu5Q,EAAiB4C,cAAcn8Q,KAC/B,MACF,KAAK,SAGHszE,EAAYwnB,qBAAqB1mB,QAAQylM,EAAyB75Q,QAqBxEk7Q,qBAAsB,SAAUe,EAAWt5Q,EAAW2wE,GACpD,GAAIooM,GACAU,EACAC,CACJ,KAAKX,IAAWO,GACd,IAAIt5Q,EAAUtgB,eAAeq5R,IAAaO,EAAU55R,eAAeq5R,IAAkC,MAAtBO,EAAUP,GAGzF,GAxuBM,UAwuBFA,EAAmB,CACrB,GAAIY,GAAYt8Q,KAAKo6Q,kBACrB,KAAKgC,IAAaE,GACZA,EAAUj6R,eAAe+5R,KAC3BC,EAAeA,MACfA,EAAaD,GAAa,GAG9Bp8Q,MAAKo6Q,mBAAqB,SACjBn1J,GAAwB5iI,eAAeq5R,GAC5CO,EAAUP,IAIZt2J,EAAeplH,KAAM07Q,GAEdzB,EAAkBj6Q,KAAK04Q,KAAMuD,GACjCtkL,EAAet1G,eAAeq5R,IACjC36E,EAAsBY,wBAAwBg4E,EAAQ35Q,MAAO07Q,IAEtDx0N,EAAYoyC,WAAWoiL,IAAYx0N,EAAYkyC,kBAAkBsiL,KAC1E36E,EAAsBQ,uBAAuBo4E,EAAQ35Q,MAAO07Q,EAGhE,KAAKA,IAAW/4Q,GAAW,CACzB,GAAI45Q,GAAW55Q,EAAU+4Q,GACrBc,EAlwBE,UAkwBSd,EAAoB17Q,KAAKo6Q,mBAAkC,MAAb6B,EAAoBA,EAAUP,SAC3F,IAAK/4Q,EAAUtgB,eAAeq5R,IAAYa,IAAaC,IAAwB,MAAZD,GAAgC,MAAZC,GAGvF,GAtwBM,UAswBFd,EAUF,GATIa,EAKFA,EAAWv8Q,KAAKo6Q,mBAAqBxlM,KAAY2nM,GAEjDv8Q,KAAKo6Q,mBAAqB,KAExBoC,EAAU,CAEZ,IAAKJ,IAAaI,IACZA,EAASn6R,eAAe+5R,IAAgBG,GAAaA,EAASl6R,eAAe+5R,KAC/EC,EAAeA,MACfA,EAAaD,GAAa,GAI9B,KAAKA,IAAaG,GACZA,EAASl6R,eAAe+5R,IAAcI,EAASJ,KAAeG,EAASH,KACzEC,EAAeA,MACfA,EAAaD,GAAaG,EAASH,QAKvCC,GAAeE,MAEZ,IAAIt3J,EAAwB5iI,eAAeq5R,GAC5Ca,EACF5D,EAAmB34Q,KAAM07Q,EAASa,EAAUjpM,GACnCkpM,GACTp3J,EAAeplH,KAAM07Q,OAElB,IAAIzB,EAAkBj6Q,KAAK04Q,KAAM/1Q,GACjCg1F,EAAet1G,eAAeq5R,IACjC36E,EAAsBW,qBAAqBi4E,EAAQ35Q,MAAO07Q,EAASa,OAEhE,IAAIr1N,EAAYoyC,WAAWoiL,IAAYx0N,EAAYkyC,kBAAkBsiL,GAAU,CACpF,GAAIzuP,GAAO0sP,EAAQ35Q,KAIH,OAAZu8Q,EACFx7E,EAAsBO,oBAAoBr0K,EAAMyuP,EAASa,GAEzDx7E,EAAsBQ,uBAAuBt0K,EAAMyuP,IAIrDW,GACF/B,EAAsBmC,kBAAkB9C,EAAQ35Q,MAAOq8Q,EAAcr8Q,OAazEk8Q,mBAAoB,SAAUD,EAAWt5Q,EAAW2wE,EAAaxzE,GAC/D,GAAI48Q,GAAclC,QAAqByB,GAAUx7Q,UAAYw7Q,EAAUx7Q,SAAW,KAC9E2xO,EAAcooC,QAAqB73Q,GAAUlC,UAAYkC,EAAUlC,SAAW,KAE9Ek8Q,EAAWV,EAAU96M,yBAA2B86M,EAAU96M,wBAAwBC,OAClFw7M,EAAWj6Q,EAAUw+D,yBAA2Bx+D,EAAUw+D,wBAAwBC,OAGlFy7M,EAA8B,MAAfH,EAAsB,KAAOT,EAAUx7Q,SACtDq8Q,EAA8B,MAAf1qC,EAAsB,KAAOzvO,EAAUlC,SAItDs8Q,EAAsC,MAAfL,GAAmC,MAAZC,EAC9CK,EAAsC,MAAf5qC,GAAmC,MAAZwqC,CAC9B,OAAhBC,GAAwC,MAAhBC,EAC1B98Q,KAAKi9Q,eAAe,KAAM3pM,EAAaxzE,GAC9Bi9Q,IAAyBC,GAClCh9Q,KAAKk9Q,kBAAkB,IAMN,MAAf9qC,EACEsqC,IAAgBtqC,GAClBpyO,KAAKk9Q,kBAAkB,GAAK9qC,GAKT,MAAZwqC,EACLD,IAAaC,GACf58Q,KAAKm9Q,aAAa,GAAKP,GAKA,MAAhBE,GAKT98Q,KAAKi9Q,eAAeH,EAAcxpM,EAAaxzE,IAInDi7F,YAAa,WACX,MAAO4+K,GAAQ35Q,OASjBg7F,iBAAkB,SAAUC,GAC1B,OAAQj7F,KAAK04Q,MACX,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,QACH,GAAIz2Q,GAAYjC,KAAK6hM,cAAc5/L,SACnC,IAAIA,EACF,IAAK,GAAI3gB,GAAI,EAAGA,EAAI2gB,EAAUjgB,OAAQV,IACpC2gB,EAAU3gB,GAAGg2D,QAGjB,MACF,KAAK,OACL,IAAK,OACL,IAAK,OAOgVoP,EAAe,KAAM1mD,KAAK04Q,MAIjX14Q,KAAKo9Q,gBAAgBniL,GACrB3zC,EAAsBxB,YAAY9lD,MAClC6jH,EAAeyB,mBAAmBtlH,MAClCA,KAAK4kH,YAAc,EACnB5kH,KAAKwmD,OAAS,EACdxmD,KAAK6hM,cAAgB,MAOvBxtH,kBAAmB,WACjB,MAAOslM,GAAQ35Q,QAKnB40E,EAAQi4L,EAAkBzqR,UAAWyqR,EAAkBgO,MAAON,EAAgBM,OAE9Ex5R,EAAOD,QAAUyrR,GtlB82/EX,SAAUxrR,EAAQD,EAASH,GAEjC,YulB30hFA,IAAIqmE,GAAwB,EAAQ,IAEhC00I,EAAY,EAAQ,KAEpBq+E,GACFoB,kBAAmB,WACjBz/E,EAAU10I,EAAsBN,oBAAoBhnD,QAIxD3e,GAAOD,QAAUi5R,GvlB41hFX,SAAUh5R,EAAQD,EAASH,GAEjC,YwlBx2hFA,IAAIu/M,GAAc,EAAQ,KACtB58H,EAAuB,EAAQ,IAI/By5M,GAHuB,EAAQ,IAEX,EAAQ,KACN,EAAQ,MAC9BC,EAAqB,EAAQ,KAC7BC,EAAoB,EAAQ,KAG5BC,GAFU,EAAQ,GAECD,EAAkB,SAAUnB,GACjD,MAAOkB,GAAmBlB,MAGxBqB,KACAC,EAAqB,UACzB,IAAI95M,EAAqBxsD,UAAW,CAClC,GAAIumQ,GAAYp6R,SAASE,cAAc,OAAO43E,KAC9C,KAEEsiN,EAAU59E,KAAO,GACjB,MAAOv9M,GACPi7R,SAA0B,KAGxBl6R,SAAS63M,gBAAgB//H,MAAMuiN,WACjCF,EAAqB,cAMvB,GAkFEpD,IAeFqB,sBAAuB,SAAUhgH,EAAQn2G,GACvC,GAAIq4N,GAAa,EACjB,KAAK,GAAIzB,KAAazgH,GACpB,GAAKA,EAAOt5K,eAAe+5R,GAA3B,CAGA,GAAI0B,GAAaniH,EAAOygH,EAIN,OAAd0B,IACFD,GAAcL,EAAiBpB,GAAa,IAC5CyB,GAAcR,EAAoBjB,EAAW0B,EAAYt4N,GAAa,KAG1E,MAAOq4N,IAAc,MAWvBpB,kBAAmB,SAAUxvP,EAAM0uI,EAAQn2G,GASzC,GAAI6V,GAAQpuC,EAAKouC,KACjB,KAAK,GAAI+gN,KAAazgH,GACpB,GAAKA,EAAOt5K,eAAe+5R,GAA3B,CAMA,GAAI0B,GAAaT,EAAoBjB,EAAWzgH,EAAOygH,GAAY52N,EAInE,IAHkB,UAAd42N,GAAuC,aAAdA,IAC3BA,EAAYsB,GAEVI,EACFziN,EAAM+gN,GAAa0B,MACd,CACL,GAAIC,GAAYN,GAA2Bj9E,EAAYlC,4BAA4B89E,EACnF,IAAI2B,EAGF,IAAK,GAAIC,KAAuBD,GAC9B1iN,EAAM2iN,GAAuB,OAG/B3iN,GAAM+gN,GAAa,MAQ7B/6R,GAAOD,QAAUk5R,GxlBy3hFX,SAAUj5R,EAAQD,EAASH,GAEjC,YylB1iiFA,SAASg9R,GAAkBtlN,GACzB,MAAOulN,GAASvlN,EAAO5rD,QAAQoxQ,EAAW,QAtB5C,GAAID,GAAW,EAAQ,KAEnBC,EAAY,OAuBhB98R,GAAOD,QAAU68R,GzlB+kiFX,SAAU58R,EAAQD,EAASH,GAEjC,Y0lB/liFA,SAASi9R,GAASvlN,GAChB,MAAOA,GAAO5rD,QAAQqxQ,EAAgB,SAAUliQ,EAAGmiQ,GACjD,MAAOA,GAAU3pO,gBAbrB,GAAI0pO,GAAiB,OAiBrB/8R,GAAOD,QAAU88R,G1lB0niFX,SAAU78R,EAAQD,EAASH,GAEjC,Y2lB5niFA,SAASo8R,GAAoB/4R,EAAMoB,EAAO8/D,GAYxC,MADuB,OAAT9/D,GAAkC,iBAAVA,IAAiC,KAAVA,EAEpD,GAGU6jI,MAAM7jI,IACK,IAAVA,GAAey2M,EAAiB95M,eAAeiC,IAAS63M,EAAiB73M,GACpF,GAAKoB,GAGO,gBAAVA,KAuBTA,EAAQA,EAAM69F,QAET79F,EAAQ,MA9DjB,GAAI86M,GAAc,EAAQ,KAGtBrE,GAFU,EAAQ,GAECqE,EAAYrE,iBA8DnC96M,GAAOD,QAAUi8R,G3lB6piFX,SAAUh8R,EAAQD,EAASH,GAEjC,Y4lB7siFA,SAASq8R,GAAmB3kN,GAC1B,MAAO2lN,GAAU3lN,GAAQ5rD,QAAQoxQ,EAAW,QArB9C,GAAIG,GAAY,EAAQ,KAEpBH,EAAY,MAsBhB98R,GAAOD,QAAUk8R,G5lBiviFX,SAAUj8R,EAAQD,EAASH,GAEjC,Y6lB7viFA,SAASq9R,GAAU3lN,GACjB,MAAOA,GAAO5rD,QAAQwxQ,EAAmB,OAAOloQ,cAflD,GAAIkoQ,GAAoB,UAkBxBl9R,GAAOD,QAAUk9R,G7lB2xiFX,SAAUj9R,EAAQD,EAASH,GAEjC,Y8lB1yiFA,SAASs8R,GAAkB9mP,GACzB,GAAI+9D,KACJ,OAAO,UAAU77B,GAIf,MAHK67B,GAAMnyG,eAAes2E,KACxB67B,EAAM77B,GAAUliC,EAASj1C,KAAKwe,KAAM24D,IAE/B67B,EAAM77B,IAIjBt3E,EAAOD,QAAUm8R,G9lB+ziFX,SAAUl8R,EAAQD,EAASH,GAEjC,Y+lBv0iFA,SAAS6/M,GAA8Bp7M,GACrC,MAAO,IAAMmwJ,EAA4BnwJ,GAAS,IATpD,GAAImwJ,GAA8B,EAAQ,IAY1Cx0J,GAAOD,QAAU0/M,G/lBg2iFX,SAAUz/M,EAAQD,EAASH,GAEjC,YgmB52iFA,SAASu9R,GAAqBv0M,GAC5B45C,EAAe+B,cAAc37C,GAC7B45C,EAAegC,mBAAkBA,GAJnC,GAAIhC,GAAiB,EAAQ,KAOzBuyB,GAMFyE,eAAgB,SAAUr1B,EAAcrsC,EAAYC,EAAaC,GAE/DmlM,EADa36J,EAAe0B,cAAcC,EAAcrsC,EAAYC,EAAaC,KAKrFh4F,GAAOD,QAAUg1J,GhmB+3iFX,SAAU/0J,EAAQD,EAASH,GAEjC,YimB34iFA,SAASw9R,GAAcC,EAAWxiM,GAChC,GAAImiH,KAQJ,OANAA,GAASqgF,EAAUroQ,eAAiB6lE,EAAU7lE,cAC9CgoL,EAAS,SAAWqgF,GAAa,SAAWxiM,EAC5CmiH,EAAS,MAAQqgF,GAAa,MAAQxiM,EACtCmiH,EAAS,KAAOqgF,GAAa,KAAOxiM,EACpCmiH,EAAS,IAAMqgF,GAAa,IAAMxiM,EAAU7lE,cAErCgoL,EAmDT,QAAShoD,GAA2Bn6D,GAClC,GAAIyiM,EAAmBziM,GACrB,MAAOyiM,GAAmBziM,EACrB,KAAK0iM,EAAe1iM,GACzB,MAAOA,EAGT,IAAI2iM,GAAYD,EAAe1iM,EAE/B,KAAK,GAAIwiM,KAAaG,GACpB,GAAIA,EAAUx8R,eAAeq8R,IAAcA,IAAarjN,GACtD,MAAOsjN,GAAmBziM,GAAa2iM,EAAUH,EAIrD,OAAO,GApFT,GAAI96M,GAAuB,EAAQ,IAwB/Bg7M,GACFE,aAAcL,EAAc,YAAa,gBACzCM,mBAAoBN,EAAc,YAAa,sBAC/CO,eAAgBP,EAAc,YAAa,kBAC3CQ,cAAeR,EAAc,aAAc,kBAMzCE,KAKAtjN,IAKAuI,GAAqBxsD,YACvBikD,EAAQ93E,SAASE,cAAc,OAAO43E,MAMhC,kBAAoB35E,gBACjBk9R,GAAeE,aAAarnD,gBAC5BmnD,GAAeG,mBAAmBtnD,gBAClCmnD,GAAeI,eAAevnD,WAIjC,mBAAqB/1O,eAClBk9R,GAAeK,cAAcllH,YA4BxC14K,EAAOD,QAAUi1J,GjmBq6iFX,SAAUh1J,EAAQD,EAASH,GAEjC,YkmB5+iFA,SAASi+R,KACHl/Q,KAAK4kH,aAEPw0J,EAAc+C,cAAcn8Q,MAmMhC,QAASmiM,GAAcj3K,GACrB,GAAIrrB,GAAQG,KAAK+zE,gBAAgBl0E,MAE7BqlB,EAAcogJ,EAAiBG,gBAAgB5lK,EAAOqrB,EAK1DonD,GAAamC,KAAKyqM,EAAsBl/Q,KAExC,IAAI1b,GAAOub,EAAMvb,IACjB,IAAmB,UAAfub,EAAMnc,MAA4B,MAARY,EAAc,CAI1C,IAHA,GAAI66R,GAAW73N,EAAsBN,oBAAoBhnD,MACrDo/Q,EAAYD,EAETC,EAAUv4N,YACfu4N,EAAYA,EAAUv4N,UAWxB,KAAK,GAFDw4N,GAAQD,EAAU7/M,iBAAiB,cAAgBp7D,KAAKC,UAAU,GAAK9f,GAAQ,mBAE1EhD,EAAI,EAAGA,EAAI+9R,EAAMr9R,OAAQV,IAAK,CACrC,GAAIg+R,GAAYD,EAAM/9R,EACtB,IAAIg+R,IAAcH,GAAYG,EAAU9Y,OAAS2Y,EAAS3Y,KAA1D,CAOA,GAAI+Y,GAAgBj4N,EAAsBP,oBAAoBu4N,EAC7DC,IAA4K74N,EAAe,MAI5L4rB,EAAamC,KAAKyqM,EAAsBK,KAI5C,MAAOr6P,GArQT,GAAIwhC,GAAiB,EAAQ,GACzBkuB,EAAU,EAAQ,IAElBmsH,EAAwB,EAAQ,KAChCz7B,EAAmB,EAAQ,KAC3Bh+G,EAAwB,EAAQ,IAChCgrB,EAAe,EAAQ,IAwCvB8mM,GAtCY,EAAQ,GACV,EAAQ,IAsCpB92E,aAAc,SAAUl+I,EAAMvkD,GAC5B,GAAIna,GAAQ4/K,EAAiBpzE,SAASryF,GAClCmlK,EAAUM,EAAiBE,WAAW3lK,EAqB1C,OAnBgB+0E,IAGdlxF,SAAKA,GAGLksD,SAAKA,GAGL03B,QAAIA,GACJ/oD,QAAIA,IACH1e,GACD2/Q,mBAAeA,GACfh3O,iBAAaA,GACb9iD,MAAgB,MAATA,EAAgBA,EAAQ0+D,EAAKy9I,cAAcvgK,aAClD0jI,QAAoB,MAAXA,EAAkBA,EAAU5gH,EAAKy9I,cAAc49E,eACxD36G,SAAU1gH,EAAKy9I,cAAc/8B,YAMjCy9B,aAAc,SAAUn+I,EAAMvkD,GAI1B,GAoBE2oC,GAAe3oC,EAAM2oC,YACzB4b,GAAKy9I,eACH49E,eAAiC,MAAjB5/Q,EAAMmlK,QAAkBnlK,EAAMmlK,QAAUnlK,EAAM2/Q,eAC9Dl+O,aAA6B,MAAfzhC,EAAMna,MAAgBma,EAAMna,MAAQ8iD,EAClDvmC,UAAW,KACX6iK,SAAUq9B,EAAcr9L,KAAKs/C,KAQjC+3N,cAAe,SAAU/3N,GACvB,GAAIvkD,GAAQukD,EAAK2vB,gBAAgBl0E,MAiB7BmlK,EAAUnlK,EAAMmlK,OACL,OAAXA,GACF+7B,EAAsBO,oBAAoBh6I,EAAsBN,oBAAoB5C,GAAO,UAAW4gH,MAGxG,IAAI/3I,GAAOq6B,EAAsBN,oBAAoB5C,GACjD1+D,EAAQ4/K,EAAiBpzE,SAASryF,EACtC,IAAa,MAATna,EAAe,CAIjB,GAAImoO,GAAW,GAAKnoO,CAGhBmoO,KAAa5gM,EAAKvnC,QACpBunC,EAAKvnC,MAAQmoO,OAGI,OAAfhuN,EAAMna,OAAuC,MAAtBma,EAAM2oC,cAS3Bvb,EAAKub,eAAiB,GAAK3oC,EAAM2oC,eACnCvb,EAAKub,aAAe,GAAK3oC,EAAM2oC,cAGd,MAAjB3oC,EAAMmlK,SAA2C,MAAxBnlK,EAAM2/Q,iBACjCvyP,EAAKuyP,iBAAmB3/Q,EAAM2/Q,iBAKpCnG,iBAAkB,SAAUj1N,GAC1B,GAAIvkD,GAAQukD,EAAK2vB,gBAAgBl0E,MAI7BotB,EAAOq6B,EAAsBN,oBAAoB5C,EAQrD,QAAQvkD,EAAMnc,MACZ,IAAK,SACL,IAAK,QACH,KACF,KAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,iBACL,IAAK,QACL,IAAK,OACL,IAAK,OAGHupC,EAAKvnC,MAAQ,GACbunC,EAAKvnC,MAAQunC,EAAKub,YAClB,MACF,SACEvb,EAAKvnC,MAAQunC,EAAKvnC,MAStB,GAAIpB,GAAO2oC,EAAK3oC,IACH,MAATA,IACF2oC,EAAK3oC,KAAO,IAEd2oC,EAAKuyP,gBAAkBvyP,EAAKuyP,eAC5BvyP,EAAKuyP,gBAAkBvyP,EAAKuyP,eACf,KAATl7R,IACF2oC,EAAK3oC,KAAOA,KAqDlBjD,GAAOD,QAAUg4R,GlmB+gjFX,SAAU/3R,EAAQD,EAASH,GAEjC,YmmBtxjFAI,GAAOD,QAFoB,gDnmB4yjFrB,SAAUC,EAAQD,EAASH,GAEjC,YomBtyjFA,SAASy+R,GAAgBj/Q,GACvB,GAAI8xC,GAAU,EAgBd,OAZA4kD,GAAM52F,SAASw/B,QAAQt/B,EAAU,SAAU8e,GAC5B,MAATA,IAGiB,gBAAVA,IAAuC,gBAAVA,GACtCgzB,GAAWhzB,EACDogQ,IACVA,SAKGptO,EA1BT,GAAIqiC,GAAU,EAAQ,IAElBuiB,EAAQ,EAAQ,IAChB7vC,EAAwB,EAAQ,IAChC+6I,EAAiB,EAAQ,KAGzBs9E,GADU,EAAQ,OA0BlBlG,GACFl3E,aAAc,SAAUn+I,EAAMvkD,EAAO66F,GAOnC,GAAIklL,GAAc,IAClB,IAAkB,MAAdllL,EAAoB,CACtB,GAAImlL,GAAenlL,CAEO,cAAtBmlL,EAAanH,OACfmH,EAAeA,EAAa54N,aAGV,MAAhB44N,GAA8C,WAAtBA,EAAanH,OACvCkH,EAAcv9E,EAAeI,sBAAsBo9E,IAMvD,GAAIzxL,GAAW,IACf,IAAmB,MAAfwxL,EAAqB,CACvB,GAAIl6R,EAOJ,IALEA,EADiB,MAAfma,EAAMna,MACAma,EAAMna,MAAQ,GAEdg6R,EAAgB7/Q,EAAMY,UAEhC2tF,KACIp6F,MAAM+c,QAAQ6uQ,IAEhB,IAAK,GAAIt+R,GAAI,EAAGA,EAAIs+R,EAAY59R,OAAQV,IACtC,GAAI,GAAKs+R,EAAYt+R,KAAOoE,EAAO,CACjC0oG,IACA,YAIJA,GAAW,GAAKwxL,IAAgBl6R,EAIpC0+D,EAAKy9I,eAAkBzzG,SAAUA,IAGnCirL,iBAAkB,SAAUj1N,GAE1B,GAAIvkD,GAAQukD,EAAK2vB,gBAAgBl0E,KACd,OAAfA,EAAMna,OACG4hE,EAAsBN,oBAAoB5C,GAChDtgE,aAAa,QAAS+b,EAAMna,QAIrC48M,aAAc,SAAUl+I,EAAMvkD,GAC5B,GAAIigR,GAAYlrM,GAAUwZ,aAASA,GAAY3tF,aAASA,IAAcZ,EAInC,OAA/BukD,EAAKy9I,cAAczzG,WACrB0xL,EAAU1xL,SAAWhqC,EAAKy9I,cAAczzG,SAG1C,IAAI77C,GAAUmtO,EAAgB7/Q,EAAMY,SAMpC,OAJI8xC,KACFutO,EAAUr/Q,SAAW8xC,GAGhButO,GAKXz+R,GAAOD,QAAUq4R,GpmBg0jFX,SAAUp4R,EAAQD,EAASH,GAEjC,YqmBl6jFA,SAASi+R,KACHl/Q,KAAK4kH,aAEP20J,EAAiB4C,cAAcn8Q,MA2HnC,QAASmiM,GAAcj3K,GACrB,GAAIrrB,GAAQG,KAAK+zE,gBAAgBl0E,MAC7BqlB,EAAcogJ,EAAiBG,gBAAgB5lK,EAAOqrB,EAE1D,OADAonD,GAAamC,KAAKyqM,EAAsBl/Q,MACjCklB,EA/IT,GAAIwhC,GAAiB,EAAQ,GACzBkuB,EAAU,EAAQ,IAElB0wF,EAAmB,EAAQ,KAC3Bh+G,EAAwB,EAAQ,IAChCgrB,EAAe,EAAQ,IA8BvBinM,GA5BY,EAAQ,GACV,EAAQ,IA4BpBj3E,aAAc,SAAUl+I,EAAMvkD,GAe5B,MAdmC,OAAjCA,EAAMshE,yBAA8Jza,EAAe,MAOrKkuB,KAAY/0E,GAC1Bna,UAAMA,GACN8iD,iBAAaA,GACb/nC,SAAU,GAAK2jD,EAAKy9I,cAAcvgK,aAClCwjI,SAAU1gH,EAAKy9I,cAAc/8B,YAMjCy9B,aAAc,SAAUn+I,EAAMvkD,GAa5B,GAAIna,GAAQ4/K,EAAiBpzE,SAASryF,GAClCyhC,EAAe57C,CAGnB,IAAa,MAATA,EAAe,CACjB,GAAI8iD,GAAe3oC,EAAM2oC,aAErB/nC,EAAWZ,EAAMY,QACL,OAAZA,IAIgB,MAAhB+nC,GAA0Jke,EAAe,MACvK1yD,MAAM+c,QAAQtQ,KACdA,EAASze,QAAU,GAA+G0kE,EAAe,MACnJjmD,EAAWA,EAAS,IAGtB+nC,EAAe,GAAK/nC,GAEF,MAAhB+nC,IACFA,EAAe,IAEjBlH,EAAekH,EAGjB4b,EAAKy9I,eACHvgK,aAAc,GAAKA,EACnBr/B,UAAW,KACX6iK,SAAUq9B,EAAcr9L,KAAKs/C,KAIjC+3N,cAAe,SAAU/3N,GACvB,GAAIvkD,GAAQukD,EAAK2vB,gBAAgBl0E,MAE7BotB,EAAOq6B,EAAsBN,oBAAoB5C,GACjD1+D,EAAQ4/K,EAAiBpzE,SAASryF,EACtC,IAAa,MAATna,EAAe,CAGjB,GAAImoO,GAAW,GAAKnoO,CAGhBmoO,KAAa5gM,EAAKvnC,QACpBunC,EAAKvnC,MAAQmoO,GAEW,MAAtBhuN,EAAM2oC,eACRvb,EAAKub,aAAeqlL,GAGE,MAAtBhuN,EAAM2oC,eACRvb,EAAKub,aAAe3oC,EAAM2oC,eAI9B6wO,iBAAkB,SAAUj1N,GAG1B,GAAIn3B,GAAOq6B,EAAsBN,oBAAoB5C,GACjD23I,EAAc9uK,EAAK8uK,WAMnBA,KAAgB33I,EAAKy9I,cAAcvgK,eACrCrU,EAAKvnC,MAAQq2M,KAYnB16M,GAAOD,QAAUm4R,GrmBg8jFX,SAAUl4R,EAAQD,EAASH,GAEjC,YsmB/jkFA,SAAS8+R,GAAiBllL,EAAQopE,EAAW+7G,GAE3C,OACEt8R,KAAM,gBACN6uD,QAASsoD,EACTogF,UAAW,KACXrhJ,SAAU,KACVomP,QAASA,EACT/7G,UAAWA,GAWf,QAASg8G,GAAS1gQ,EAAO0kJ,EAAW+7G,GAElC,OACEt8R,KAAM,gBACN6uD,QAAS,KACT0oI,UAAW17J,EAAM6jL,YACjBxpK,SAAUs6C,EAAgB6mB,YAAYx7E,GACtCygQ,QAASA,EACT/7G,UAAWA,GAUf,QAASi8G,GAAW3gQ,EAAO0N,GAEzB,OACEvpC,KAAM,cACN6uD,QAAS,KACT0oI,UAAW17J,EAAM6jL,YACjBxpK,SAAU3M,EACV+yP,QAAS,KACT/7G,UAAW,MAUf,QAASk8G,GAActlL,GAErB,OACEn3G,KAAM,aACN6uD,QAASsoD,EACTogF,UAAW,KACXrhJ,SAAU,KACVomP,QAAS,KACT/7G,UAAW,MAUf,QAASm8G,GAAgBrkF,GAEvB,OACEr4M,KAAM,eACN6uD,QAASwpJ,EACT9gB,UAAW,KACXrhJ,SAAU,KACVomP,QAAS,KACT/7G,UAAW,MAQf,QAAS7vF,GAAQ14D,EAAOsoJ,GAKtB,MAJIA,KACFtoJ,EAAQA,MACRA,EAAMx5B,KAAK8hL,IAENtoJ,EAQT,QAAS2kQ,GAAaj8N,EAAMk8N,GAC1B16G,EAA0BE,uBAAuB1hH,EAAMk8N,GA5HzD,GAAI55N,GAAiB,EAAQ,GAEzBk/G,EAA4B,EAAQ,KAKpC1xF,GAJmB,EAAQ,KACJ,EAAQ,IAEX,EAAQ,IACV,EAAQ,KAC1BqsM,EAAuB,EAAQ,KAG/Bb,GADgB,EAAQ,IACN,EAAQ,MAkJ1BnF,GAjJY,EAAQ,IA0JtBM,OAEE2F,+BAAgC,SAAUC,EAAgBntM,EAAaxzE,GAYrE,MAAOygR,GAAqBG,oBAAoBD,EAAgBntM,EAAaxzE,IAG/E6gR,0BAA2B,SAAUC,EAAcC,EAA4B9E,EAAa+E,EAAcxtM,EAAaxzE,GACrH,GAAIg9Q,EAiBJ,OAFAA,GAAe4C,EAAgBmB,EAdb,GAelBN,EAAqBtD,eAAe2D,EAAc9D,EAAcf,EAAa+E,EAAcxtM,EAAatzE,KAAMA,KAAKisM,mBAAoBnsM,EAfrH,GAgBXg9Q,GAWTd,cAAe,SAAUyE,EAAgBntM,EAAaxzE,GACpD,GAAIW,GAAWT,KAAKwgR,+BAA+BC,EAAgBntM,EAAaxzE,EAChFE,MAAKkmD,kBAAoBzlD,CAEzB,IAAIs7Q,MACArqQ,EAAQ,CACZ,KAAK,GAAIptB,KAAQmc,GACf,GAAIA,EAASpe,eAAeiC,GAAO,CACjC,GAAIi7B,GAAQ9e,EAASnc,GAKjB02R,EAAa9mM,EAAgBsmB,eAAej7E,EAAO+zD,EAAatzE,KAAMA,KAAKisM,mBAAoBnsM,EAJjF,EAKlByf,GAAM6jL,YAAc1xL,IACpBqqQ,EAAY75R,KAAK84R,GAQrB,MAAOe,IASTmB,kBAAmB,SAAU9qC,GAC3B,GAAIwuC,GAAe5gR,KAAKkmD,iBAExBq6N,GAAqBnD,gBAAgBwD,KACrC,KAAK,GAAIt8R,KAAQs8R,GACXA,EAAav+R,eAAeiC,IAC0FoiE,EAAe,MAK3I25N,GAAargR,MADEogR,EAAgBhuC,MAUjC+qC,aAAc,SAAU4D,GACtB,GAAIH,GAAe5gR,KAAKkmD,iBAExBq6N,GAAqBnD,gBAAgBwD,KACrC,KAAK,GAAIt8R,KAAQs8R,GACXA,EAAav+R,eAAeiC,IAC0FoiE,EAAe,MAI3I25N,GAAargR,MADEmgR,EAAcY,MAW/B9D,eAAgB,SAAU4D,EAA4BvtM,EAAaxzE,GAEjEE,KAAKghR,gBAAgBH,EAA4BvtM,EAAaxzE,IAShEkhR,gBAAiB,SAAUH,EAA4BvtM,EAAaxzE,GAClE,GAAI8gR,GAAe5gR,KAAKkmD,kBACpB46N,KACA/E,KACAe,EAAe98Q,KAAK2gR,0BAA0BC,EAAcC,EAA4B9E,EAAa+E,EAAcxtM,EAAaxzE,EACpI,IAAKg9Q,GAAiB8D,EAAtB,CAGA,GACIt8R,GADAy/K,EAAU,KAIVktC,EAAY,EACZzuL,EAAY,EAEZy+P,EAAiB,EACjBC,EAAiB,IACrB,KAAK58R,IAAQw4R,GACX,GAAKA,EAAaz6R,eAAeiC,GAAjC,CAGA,GAAI68R,GAAYP,GAAgBA,EAAat8R,GACzCwiN,EAAYg2E,EAAax4R,EACzB68R,KAAcr6E,GAChB/iC,EAAU3vF,EAAQ2vF,EAAS/jK,KAAKgjK,UAAUm+G,EAAWD,EAAgBjwE,EAAWzuL,IAChFA,EAAYlE,KAAKC,IAAI4iQ,EAAU/9E,YAAa5gL,GAC5C2+P,EAAU/9E,YAAc6N,IAEpBkwE,IAEF3+P,EAAYlE,KAAKC,IAAI4iQ,EAAU/9E,YAAa5gL,IAI9CuhJ,EAAU3vF,EAAQ2vF,EAAS/jK,KAAKohR,mBAAmBt6E,EAAWi1E,EAAYkF,GAAiBC,EAAgBjwE,EAAW39H,EAAaxzE,IACnImhR,KAEFhwE,IACAiwE,EAAiBhtM,EAAgB6mB,YAAY+rG,GAG/C,IAAKxiN,IAAQw8R,GACPA,EAAaz+R,eAAeiC,KAC9By/K,EAAU3vF,EAAQ2vF,EAAS/jK,KAAKqhR,cAAcT,EAAat8R,GAAOw8R,EAAax8R,KAG/Ey/K,IACFs8G,EAAargR,KAAM+jK,GAErB/jK,KAAKkmD,kBAAoB42N,IAc3BM,gBAAiB,SAAUniL,GACzB,GAAIqmL,GAAmBthR,KAAKkmD,iBAC5Bq6N,GAAqBnD,gBAAgBkE,EAAkBrmL,GACvDj7F,KAAKkmD,kBAAoB,MAW3B88G,UAAW,SAAUzjJ,EAAO0kJ,EAAW+7G,EAASx9P,GAI9C,GAAIjD,EAAM6jL,YAAc5gL,EACtB,MAAOy9P,GAAS1gQ,EAAO0kJ,EAAW+7G,IAWtCuB,YAAa,SAAUhiQ,EAAO0kJ,EAAW+2G,GACvC,MAAO+E,GAAiB/E,EAAY/2G,EAAW1kJ,EAAM6jL,cASvDnjI,YAAa,SAAU1gD,EAAO0N,GAC5B,MAAOizP,GAAW3gQ,EAAO0N,IAc3Bm0P,mBAAoB,SAAU7hQ,EAAOy7P,EAAY/2G,EAAWvyJ,EAAO4hE,EAAaxzE,GAE9E,MADAyf,GAAM6jL,YAAc1xL,EACb1R,KAAKuhR,YAAYhiQ,EAAO0kJ,EAAW+2G,IAW5CqG,cAAe,SAAU9hQ,EAAO0N,GAC9B,GAAI+2I,GAAShkK,KAAKigE,YAAY1gD,EAAO0N,EAErC,OADA1N,GAAM6jL,YAAc,KACbp/B,KAOb3iL,GAAOD,QAAUm5R,GtmBqmkFX,SAAUl5R,EAAQD,EAASH,GAEjC,cAAa,SumBvilFb,GA+BA,QAASugS,GAAiBC,EAAgBliQ,EAAOj7B,EAAMo9R,GAErD,GAAIC,YAAYF,EAAen9R,EASlB,OAATi7B,GAAiBoiQ,IACnBF,EAAen9R,GAAQs+M,EAA0BrjL,OA/BrD,GAAI20D,GAAkB,EAAQ,IAE1B0uH,EAA4B,EAAQ,KAEpC58B,GADiB,EAAQ,KACI,EAAQ,MACrCm/B,EAAsB,EAAQ,IACpB,GAAQ,YAIXnqL,GAA2B,+BA8BtC,IAAIulQ,IASFG,oBAAqB,SAAUkB,EAAkBtuM,EAAaxzE,EAAS4hR,GAErE,GAAwB,MAApBE,EACF,MAAO,KAET,IAAIH,KASJ,OAFEt8E,GAAoBy8E,EAAkBJ,EAAkBC,GAEnDA,GAaTxE,eAAgB,SAAU2D,EAAc9D,EAAcf,EAAa+E,EAAcxtM,EAAaonB,EAAYC,EAAmB76F,EAAS4hR,GAOpI,GAAK5E,GAAiB8D,EAAtB,CAGA,GAAIt8R,GACA68R,CACJ,KAAK78R,IAAQw4R,GACX,GAAKA,EAAaz6R,eAAeiC,GAAjC,CAGA68R,EAAYP,GAAgBA,EAAat8R,EACzC,IAAI+2G,GAAc8lL,GAAaA,EAAUptM,gBACrCqnB,EAAc0hL,EAAax4R,EAC/B,IAAiB,MAAb68R,GAAqBn7G,EAA2B3qE,EAAaD,GAC/DlnB,EAAgBinB,iBAAiBgmL,EAAW/lL,EAAa9nB,EAAaxzE,GACtEg9Q,EAAax4R,GAAQ68R,MAChB,CACDA,IACFL,EAAax8R,GAAQ4vF,EAAgB6mB,YAAYomL,GACjDjtM,EAAgB8mB,iBAAiBmmL,MAGnC,IAAIU,GAAoBj/E,EAA0BxnG,KAClD0hL,GAAax4R,GAAQu9R,CAGrB,IAAIC,GAAsB5tM,EAAgBsmB,eAAeqnL,EAAmBvuM,EAAaonB,EAAYC,EAAmB76F,EAAS4hR,EACjI3F,GAAY75R,KAAK4/R,IAIrB,IAAKx9R,IAAQs8R,IACPA,EAAav+R,eAAeiC,IAAWw4R,GAAgBA,EAAaz6R,eAAeiC,KACrF68R,EAAYP,EAAat8R,GACzBw8R,EAAax8R,GAAQ4vF,EAAgB6mB,YAAYomL,GACjDjtM,EAAgB8mB,iBAAiBmmL,SAYvC/D,gBAAiB,SAAUkE,EAAkBrmL,GAC3C,IAAK,GAAI32G,KAAQg9R,GACf,GAAIA,EAAiBj/R,eAAeiC,GAAO,CACzC,GAAIy9R,GAAgBT,EAAiBh9R,EACrC4vF,GAAgB8mB,iBAAiB+mL,EAAe9mL,KAOxD55G,GAAOD,QAAUm/R,IvmByilFY/+R,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,GAEjC,YwmB/plFA,SAAS+gS,GAAmBthR,IAe5B,QAASuhR,GAAgBvhR,GACvB,SAAUA,EAAUte,YAAase,EAAUte,UAAU08K,kBAGvD,QAASojH,GAAgBxhR,GACvB,SAAUA,EAAUte,YAAase,EAAUte,UAAUghR,sBAhDvD,GAAI18M,GAAiB,EAAQ,GACzBkuB,EAAU,EAAQ,IAElBuiB,EAAQ,EAAQ,IAChByuE,EAA4B,EAAQ,KACpC5sF,EAAoB,EAAQ,IAC5BmrC,EAAkB,EAAQ,KAC1BuC,EAAmB,EAAQ,KAE3B+8E,GADuB,EAAQ,IACd,EAAQ,MACzBvvH,EAAkB,EAAQ,IAM1B+tC,EAAc,EAAQ,KAEtBv7G,GADY,EAAQ,GACL,EAAQ,MACvBs/J,EAA6B,EAAQ,KAGrCm8G,GAFU,EAAQ,IAGpBC,YAAa,EACbC,UAAW,EACXC,oBAAqB,GAIvBN,GAAmB5/R,UAAUie,OAAS,WAIpC,OAFcK,EADEgmH,EAAiB9hI,IAAIob,MAAM+zE,gBAAgBrwF,MACnCsc,KAAKH,MAAOG,KAAKF,QAASE,KAAK2+J,SAsEzD,IAAI4jH,GAAc,EAKdj/E,GASFC,UAAW,SAAUziM,GACnBd,KAAK+zE,gBAAkBjzE,EACvBd,KAAK4kH,YAAc,EACnB5kH,KAAKwiR,eAAiB,KACtBxiR,KAAK+sM,UAAY,KACjB/sM,KAAKinD,YAAc,KACnBjnD,KAAKisM,mBAAqB,KAG1BjsM,KAAKw0E,mBAAqB,KAC1Bx0E,KAAKmnK,gBAAkB,KACvBnnK,KAAKgnK,mBAAqB,KAC1BhnK,KAAKinK,wBACLjnK,KAAK+mK,uBAEL/mK,KAAKsuM,kBAAoB,KACzBtuM,KAAKylD,mBAAqB,KAC1BzlD,KAAKgnC,SAAW,KAChBhnC,KAAKozE,YAAc,EACnBpzE,KAAKirM,iBAAmB,KAGxBjrM,KAAK0zE,kBAAoB,KAGzB1zE,KAAKyiR,gCAkBPjoL,eAAgB,SAAUlnB,EAAaonB,EAAYC,EAAmB76F,GAGpEE,KAAKgnC,SAAWlnC,EAChBE,KAAKozE,YAAcmvM,IACnBviR,KAAKinD,YAAcyzC,EACnB16F,KAAKisM,mBAAqBtxG,CAE1B,IAUI+nL,GAVAC,EAAc3iR,KAAK+zE,gBAAgBl0E,MACnC+iR,EAAgB5iR,KAAK6iR,gBAAgB/iR,GAErCY,EAAYV,KAAK+zE,gBAAgBrwF,KAEjC48R,EAAchtM,EAAYwvM,iBAG1BC,EAAcd,EAAgBvhR,GAC9B0jD,EAAOpkD,KAAKgjR,oBAAoBD,EAAaJ,EAAaC,EAAetC,EAIxEyC,IAAwB,MAAR3+N,GAA+B,MAAfA,EAAK/jD,OAOpC6hR,EAAgBxhR,GAClBV,KAAKwiR,eAAiBL,EAAeE,UAErCriR,KAAKwiR,eAAiBL,EAAeC,aATvCM,EAAkBt+N,EAEP,OAATA,QAAiBA,GAAkB+yC,EAAMhP,eAAe/jC,IAAkQsC,EAAe,MAAOhmD,EAAU4D,aAAe5D,EAAUpc,MAAQ,aAC7X8/D,EAAO,GAAI49N,GAAmBthR,GAC9BV,KAAKwiR,eAAiBL,EAAeG,qBAwBvCl+N,EAAKvkD,MAAQ8iR,EACbv+N,EAAKtkD,QAAU8iR,EACfx+N,EAAKw6G,KAAO38C,EACZ79D,EAAKu6G,QAAU2hH,EAEftgR,KAAK+sM,UAAY3oJ,EAGjBsiE,EAAiB51F,IAAIszB,EAAMpkD,KAe3B,IAAI01M,GAAetxJ,EAAK3/C,UAAMA,KAC1BixM,IACFtxJ,EAAK3/C,MAAQixM,EAAe,OAEJ,gBAAjBA,IAA8B1hN,MAAM+c,QAAQ2kM,KAAuKhvJ,EAAe,MAAO1mD,KAAKi0E,WAAa,2BAEpQj0E,KAAKgnK,mBAAqB,KAC1BhnK,KAAKinK,wBACLjnK,KAAK+mK,sBAEL,IAAIlsE,EAmBJ,OAjBEA,GADEz2C,EAAK6+N,qBACEjjR,KAAKkjR,qCAAqCR,EAAiBhoL,EAAYC,EAAmBrnB,EAAaxzE,GAEvGE,KAAKmjR,oBAAoBT,EAAiBhoL,EAAYC,EAAmBrnB,EAAaxzE,GAG7FskD,EAAKj/C,mBAQLmuE,EAAYwnB,qBAAqB1mB,QAAQhwB,EAAKj/C,kBAAmBi/C,GAI9Dy2C,GAGTmoL,oBAAqB,SAAUD,EAAaJ,EAAaC,EAAetC,GASpE,MAAOtgR,MAAKojR,gCAAgCL,EAAaJ,EAAaC,EAAetC,IAIzF8C,gCAAiC,SAAUL,EAAaJ,EAAaC,EAAetC,GAClF,GAAI5/Q,GAAYV,KAAK+zE,gBAAgBrwF,IAErC,OAAIq/R,GAMO,GAAIriR,GAAUiiR,EAAaC,EAAetC,GAW5C5/Q,EAAUiiR,EAAaC,EAAetC,IAIjD4C,qCAAsC,SAAUR,EAAiBhoL,EAAYC,EAAmBrnB,EAAaxzE,GAC3G,GAAI+6F,GACA4gG,EAAanoH,EAAYmoH,YAC7B,KACE5gG,EAAS76F,KAAKmjR,oBAAoBT,EAAiBhoL,EAAYC,EAAmBrnB,EAAaxzE,GAC/F,MAAOtd,GAEP8wF,EAAYooH,SAASD,GACrBz7L,KAAK+sM,UAAUk2E,qBAAqBzgS,GAChCwd,KAAKgnK,qBACPhnK,KAAK+sM,UAAUtoM,MAAQzE,KAAKqjR,qBAAqBrjR,KAAK+sM,UAAUltM,MAAOG,KAAK+sM,UAAUjtM,UAExF27L,EAAanoH,EAAYmoH,aAEzBz7L,KAAKylD,mBAAmBu1C,kBAAiBA,GACzC1nB,EAAYooH,SAASD,GAIrB5gG,EAAS76F,KAAKmjR,oBAAoBT,EAAiBhoL,EAAYC,EAAmBrnB,EAAaxzE,GAEjG,MAAO+6F,IAGTsoL,oBAAqB,SAAUT,EAAiBhoL,EAAYC,EAAmBrnB,EAAaxzE,GAC1F,GAAIskD,GAAOpkD,KAAK+sM,SAOZ3oJ,GAAK0gN,qBAML1gN,EAAK0gN,qBAIH9kQ,KAAKgnK,qBACP5iH,EAAK3/C,MAAQzE,KAAKqjR,qBAAqBj/N,EAAKvkD,MAAOukD,EAAKtkD,oBAKxD4iR,IACFA,EAAkB1iR,KAAKsjR,4BAGzB,IAAIn+N,GAAWs+I,EAAeI,QAAQ6+E,EACtC1iR,MAAKsuM,kBAAoBnpJ,CACzB,IAAI5lC,GAAQvf,KAAKwjM,2BAA2Bk/E,EAAiBv9N,IAAas+I,EAAeG,MAazF,OAXA5jM,MAAKylD,mBAAqBlmC,EAEb20D,EAAgBsmB,eAAej7E,EAAO+zD,EAAaonB,EAAYC,EAAmB36F,KAAKotM,qBAAqBttM,GA/B3G,IA2ChBi7F,YAAa,WACX,MAAO7mB,GAAgB6mB,YAAY/6F,KAAKylD,qBAS1Cu1C,iBAAkB,SAAUC,GAC1B,GAAKj7F,KAAKylD,mBAAV,CAIA,GAAIrB,GAAOpkD,KAAK+sM,SAEhB,IAAI3oJ,EAAK7+C,uBAAyB6+C,EAAKq+N,4BAGrC,GAFAr+N,EAAKq+N,+BAEDxnL,EAAQ,CACV,GAAI32G,GAAO0b,KAAKi0E,UAAY,yBAC5BkwC,GAAgB48C,sBAAsBz8K,EAAM8/D,EAAK7+C,qBAAqBT,KAAKs/C,QAOzEA,GAAK7+C,sBAKPvF,MAAKylD,qBACPyuB,EAAgB8mB,iBAAiBh7F,KAAKylD,mBAAoBw1C,GAC1Dj7F,KAAKsuM,kBAAoB,KACzBtuM,KAAKylD,mBAAqB,KAC1BzlD,KAAK+sM,UAAY,MAMnB/sM,KAAKgnK,mBAAqB,KAC1BhnK,KAAKinK,wBACLjnK,KAAK+mK,uBACL/mK,KAAK0zE,kBAAoB,KACzB1zE,KAAKmnK,gBAAkB,KAIvBnnK,KAAKgnC,SAAW,KAChBhnC,KAAK4kH,YAAc,EACnB5kH,KAAKirM,iBAAmB,KAKxBvkF,EAAiBpvE,OAAO8M,KAiB1Bm/N,aAAc,SAAUzjR,GACtB,GAAIY,GAAYV,KAAK+zE,gBAAgBrwF,KACjCsgB,EAAetD,EAAUsD,YAC7B,KAAKA,EACH,MAAOi+G,EAET,IAAIuhK,KACJ,KAAK,GAAIC,KAAez/Q,GACtBw/Q,EAAcC,GAAe3jR,EAAQ2jR,EAEvC,OAAOD,IAWTX,gBAAiB,SAAU/iR,GAQzB,MAPoBE,MAAKujR,aAAazjR,IAexCstM,qBAAsB,SAAUs2E,GAC9B,GAEIC,GAFAjjR,EAAYV,KAAK+zE,gBAAgBrwF,KACjC0gE,EAAOpkD,KAAK+sM,SAgBhB,IAbI3oJ,EAAKjkD,kBASLwjR,EAAev/N,EAAKjkD,mBAIpBwjR,EAAc,CACyB,gBAAhCjjR,GAAUK,mBAAwO2lD,EAAe,MAAO1mD,KAAKi0E,WAAa,0BAInS,KAAK,GAAI3vF,KAAQq/R,GACbr/R,IAAQoc,GAAUK,mBAA0M2lD,EAAe,MAAO1mD,KAAKi0E,WAAa,0BAA2B3vF,EAEnS,OAAOswF,MAAY8uM,EAAgBC,GAErC,MAAOD,IAWTE,mBAAoB,SAAUC,EAAWrwQ,EAAQlY,KAMjD6/F,iBAAkB,SAAUC,EAAa9nB,EAAa+7B,GACpD,GAAIhU,GAAcr7F,KAAK+zE,gBACnB+vM,EAAc9jR,KAAKgnC,QAEvBhnC,MAAKmnK,gBAAkB,KAEvBnnK,KAAKglQ,gBAAgB1xL,EAAa+nB,EAAaD,EAAa0oL,EAAaz0K,IAU3El7B,yBAA0B,SAAUb,GACN,MAAxBtzE,KAAKmnK,gBACPjzF,EAAgBinB,iBAAiBn7F,KAAMA,KAAKmnK,gBAAiB7zF,EAAatzE,KAAKgnC,UAC1C,OAA5BhnC,KAAKgnK,oBAA+BhnK,KAAK+mK,oBAClD/mK,KAAKglQ,gBAAgB1xL,EAAatzE,KAAK+zE,gBAAiB/zE,KAAK+zE,gBAAiB/zE,KAAKgnC,SAAUhnC,KAAKgnC,UAElGhnC,KAAKw0E,mBAAqB,MAmB9BwwL,gBAAiB,SAAU1xL,EAAaywM,EAAmBC,EAAmBC,EAAqBC,GACjG,GAAI9/N,GAAOpkD,KAAK+sM,SACN,OAAR3oJ,GAAoNsC,EAAe,MAAO1mD,KAAKi0E,WAAa,0BAE9P,IACIo7B,GADA80K,IAIAnkR,MAAKgnC,WAAak9O,EACpB70K,EAAcjrD,EAAKtkD,SAEnBuvG,EAAcrvG,KAAK6iR,gBAAgBqB,GACnCC,KAGF,IAAIh0D,GAAY4zD,EAAkBlkR,MAC9B8C,EAAYqhR,EAAkBnkR,KAG9BkkR,KAAsBC,IACxBG,MAMEA,GAAe//N,EAAK9+C,2BAMpB8+C,EAAK9+C,0BAA0B3C,EAAW0sG,EAI9C,IAAIzlG,GAAY5J,KAAKqjR,qBAAqB1gR,EAAW0sG,GACjD+0K,IAECpkR,MAAK+mK,sBACJ3iH,EAAKvhD,sBAMLuhR,EAAehgO,EAAKvhD,sBAAsBF,EAAWiH,EAAWylG,GAG9DrvG,KAAKwiR,iBAAmBL,EAAeE,YACzC+B,GAAgB19Q,EAAaypN,EAAWxtN,KAAe+D,EAAa09C,EAAK3/C,MAAOmF,KAStF5J,KAAKw0E,mBAAqB,KACtB4vM,GACFpkR,KAAK+mK,uBAEL/mK,KAAKqkR,wBAAwBL,EAAmBrhR,EAAWiH,EAAWylG,EAAa/7B,EAAa4wM,KAIhGlkR,KAAK+zE,gBAAkBiwM,EACvBhkR,KAAKgnC,SAAWk9O,EAChB9/N,EAAKvkD,MAAQ8C,EACbyhD,EAAK3/C,MAAQmF,EACbw6C,EAAKtkD,QAAUuvG,IAInBg0K,qBAAsB,SAAUxjR,EAAOC,GACrC,GAAIskD,GAAOpkD,KAAK+sM,UACZrxL,EAAQ1b,KAAKgnK,mBACbj6J,EAAU/M,KAAKinK,oBAInB,IAHAjnK,KAAKinK,wBACLjnK,KAAKgnK,mBAAqB,MAErBtrJ,EACH,MAAO0oC,GAAK3/C,KAGd,IAAIsI,GAA4B,IAAjB2O,EAAM15B,OACnB,MAAO05B,GAAM,EAIf,KAAK,GADD9R,GAAYgrE,KAAY7nE,EAAU2O,EAAM,GAAK0oC,EAAK3/C,OAC7CnjB,EAAIyrB,EAAU,EAAI,EAAGzrB,EAAIo6B,EAAM15B,OAAQV,IAAK,CACnD,GAAIgjS,GAAU5oQ,EAAMp6B,EACpBszF,GAAQhrE,EAA8B,kBAAZ06Q,GAAyBA,EAAQ9iS,KAAK4iE,EAAMx6C,EAAW/J,EAAOC,GAAWwkR,GAGrG,MAAO16Q,IAeTy6Q,wBAAyB,SAAUjpL,EAAaz4F,EAAWiH,EAAWylG,EAAa/7B,EAAaixM,GAC9F,GAKIp0D,GACAq0D,EACAV,EALA1/N,EAAOpkD,KAAK+sM,UAEZ03E,EAAwB7/Q,QAAQw/C,EAAKn+C,mBAIrCw+Q,KACFt0D,EAAY/rK,EAAKvkD,MACjB2kR,EAAYpgO,EAAK3/C,MACjBq/Q,EAAc1/N,EAAKtkD,SAGjBskD,EAAK2gN,qBAML3gN,EAAK2gN,oBAAoBpiQ,EAAWiH,EAAWylG,GAInDrvG,KAAK+zE,gBAAkBqnB,EACvBp7F,KAAKgnC,SAAWu9O,EAChBngO,EAAKvkD,MAAQ8C,EACbyhD,EAAK3/C,MAAQmF,EACbw6C,EAAKtkD,QAAUuvG,EAEfrvG,KAAK0kR,yBAAyBpxM,EAAaixM,GAEvCE,GAMAnxM,EAAYwnB,qBAAqB1mB,QAAQhwB,EAAKn+C,mBAAmBnB,KAAKs/C,EAAM+rK,EAAWq0D,EAAWV,GAAc1/N,IAWtHsgO,yBAA0B,SAAUpxM,EAAaxzE,GAC/C,GAAI6kR,GAAwB3kR,KAAKylD,mBAC7Bm/N,EAAsBD,EAAsB5wM,gBAC5C8wM,EAAsB7kR,KAAKsjR,2BAO/B,IAAIt9G,EAA2B4+G,EAAqBC,GAClD3wM,EAAgBinB,iBAAiBwpL,EAAuBE,EAAqBvxM,EAAatzE,KAAKotM,qBAAqBttM,QAC/G,CACL,GAAIglR,GAAc5wM,EAAgB6mB,YAAY4pL,EAC9CzwM,GAAgB8mB,iBAAiB2pL,KAEjC,IAAIx/N,GAAWs+I,EAAeI,QAAQghF,EACtC7kR,MAAKsuM,kBAAoBnpJ,CACzB,IAAI5lC,GAAQvf,KAAKwjM,2BAA2BqhF,EAAqB1/N,IAAas+I,EAAeG,MAE7F5jM,MAAKylD,mBAAqBlmC,CAE1B,IAAIwhQ,GAAa7sM,EAAgBsmB,eAAej7E,EAAO+zD,EAAatzE,KAAKinD,YAAajnD,KAAKisM,mBAAoBjsM,KAAKotM,qBAAqBttM,GAjB7H,EA0BZE,MAAK+kR,uBAAuBD,EAAa/D,EAAY4D,KASzDI,uBAAwB,SAAUD,EAAa/D,EAAYiE,GACzDp/G,EAA0BC,sBAAsBi/G,EAAa/D,EAAYiE,IAM3EC,+CAAgD,WAqB9C,MApBWjlR,MAAK+sM,UAQS1sM,UAkB3BijR,0BAA2B,WACzB,GAAIZ,EACJ,IAA6C1iR,KAAKwiR,iBAAmBL,EAAeG,oBAAqB,CACvGtpM,EAAkBp3E,QAAU5B,IAC5B,KACE0iR,EAAkB1iR,KAAKilR,iDACvB,QACAjsM,EAAkBp3E,QAAU,UAG9B8gR,GAAkB1iR,KAAKilR,gDAMzB,OAFoB,QAApBvC,QAA4BA,GAA6BvrL,EAAMhP,eAAeu6L,IAAsQh8N,EAAe,MAAO1mD,KAAKi0E,WAAa,2BAErXyuM,GAWT/Q,UAAW,SAAU/rQ,EAAK4/C,GACxB,GAAIpB,GAAOpkD,KAAKq0E,mBACN,OAARjwB,GAA8HsC,EAAe,MAC/I,IAAIw+N,GAA0B1/N,EAAU6uB,qBAK7BjwB,EAAKw6G,OAAS38C,EAAc79D,EAAKw6G,QAAYx6G,EAAKw6G,MACxDh5J,GAAOs/Q,GAUdpT,UAAW,SAAUlsQ,SACR5F,MAAKq0E,oBAAoBuqF,KACxBh5J,IASdquE,QAAS,WACP,GAAIvwF,GAAOsc,KAAK+zE,gBAAgBrwF,KAC5B2b,EAAcW,KAAK+sM,WAAa/sM,KAAK+sM,UAAU1tM,WACnD,OAAO3b,GAAK4gB,aAAejF,GAAeA,EAAYiF,aAAe5gB,EAAKY,MAAQ+a,GAAeA,EAAY/a,MAAQ,MAWvH+vF,kBAAmB,WACjB,GAAIjwB,GAAOpkD,KAAK+sM,SAChB,OAAI/sM,MAAKwiR,iBAAmBL,EAAeG,oBAClC,KAEFl+N,GAITo/I,2BAA4B,KAI9BniN,GAAOD,QAAUkiN,GxmB4slFX,SAAUjiN,EAAQD,EAASH,GAEjC,YymBnknFA,SAASkkS,KACP,MAAOC,KAHT,GAAIA,GAAc,CAMlB/jS,GAAOD,QAAU+jS,GzmBulnFX,SAAU9jS,EAAQD,EAASH,GAEjC,Y0mB5lnFA,IAAIsmG,GAAuC,kBAAXz9C,SAAyBA,OAAY,KAAKA,OAAY,IAAE,kBAAoB,KAE5GzoD,GAAOD,QAAUmmG,G1mBinnFX,SAAUlmG,EAAQD,EAASH,GAEjC,Y2mBrmnFA,SAAS25M,GAAcC,GACrB,GAAIC,GAAaD,IAAkBE,GAAmBF,EAAcE,IAAoBF,EAAcG,GACtG,IAA0B,kBAAfF,GACT,MAAOA,GApBX,GAAIC,GAAoC,kBAAXjxJ,SAAyBA,OAAOnD,SACzDq0J,EAAuB,YAuB3B35M,GAAOD,QAAUw5M,G3mB0onFX,SAAUv5M,EAAQD,EAASH,GAEjC,cAAa,S4mBnrnFb,GAkCA,QAASokS,GAA8BzgF,EAAiBrlL,EAAOj7B,EAAMo9R,GAEnE,GAAI98E,GAA8C,gBAApBA,GAA8B,CAC1D,GAAIn6L,GAASm6L,MACT+8E,KAAYl3Q,EAAOnmB,IASG,MAATi7B,IACf9U,EAAOnmB,GAAQi7B,IAUrB,QAASmgQ,GAAgBj/Q,EAAUihR,GACjC,GAAgB,MAAZjhR,EACF,MAAOA,EAET,IAAIgK,KASJ,OAFE06L,GAAoB1kM,EAAU4kR,EAA+B56Q,GAExDA,EA1DT,GACI06L,IADiB,EAAQ,KACH,EAAQ,KACpB,GAAQ,YAIXnqL,GAA2B,gCAuDtC35B,EAAOD,QAAUs+R,I5mBqrnFYl+R,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,GAEjC,Y6mB5tnFA,SAAS23R,GAAgCgD,GACvC57Q,KAAK0yE,0BACL1yE,KAAK47Q,qBAAuBA,EAC5B57Q,KAAKurM,oBACLvrM,KAAKsgR,YAAc,GAAIgF,GAAuBtlR,MAjChD,GAAI40E,GAAU,EAAQ,IAElBC,EAAc,EAAQ,IACtBC,EAAc,EAAQ,KAEtBwwM,GADuB,EAAQ,IACN,EAAQ,MAOjCjwM,KASAkwM,GACFnxM,QAAS,cAcPymM,GAOFvlM,uBAAwB,WACtB,MAAOD,IAMTylB,mBAAoB,WAClB,MAAOyqL,IAMTzC,eAAgB,WACd,MAAO9iR,MAAKsgR,aAOd/qM,WAAY,aAEZkmH,WAAY,aAEZC,SAAU,aAGZ9mH,GAAQgkM,EAAgCx2R,UAAW0yF,EAAa+lM,GAEhEhmM,EAAYc,aAAaijM,GAEzBv3R,EAAOD,QAAUw3R,G7mB0wnFX,SAAUv3R,EAAQD,EAASH,GAEjC,Y8mBv1nFA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,GAAI0oJ,GAAmB,EAAQ,KAmB3B0+G,GAjBU,EAAQ,GAiBO,WAC3B,QAASA,GAAuBhyM,GAC9B5vB,EAAgB1jD,KAAMslR,GAEtBtlR,KAAKszE,YAAcA,EAgGrB,MApFAgyM,GAAuBljS,UAAU+8K,UAAY,SAAmBC,GAC9D,OAAM,GAaRkmH,EAAuBljS,UAAU68K,gBAAkB,SAAyBG,EAAgB3oI,EAAUkwI,GAChG3mK,KAAKszE,YAAY+/D,mBACnBuzB,EAAiB3H,gBAAgBG,EAAgB3oI,EAAUkwI,IAmB/D2+G,EAAuBljS,UAAU88K,mBAAqB,SAA4BE,GAC5Ep/J,KAAKszE,YAAY+/D,mBACnBuzB,EAAiB1H,mBAAmBE,IAmBxCkmH,EAAuBljS,UAAUi9K,oBAAsB,SAA6BD,EAAgBE,GAC9Ft/J,KAAKszE,YAAY+/D,mBACnBuzB,EAAiBvH,oBAAoBD,EAAgBE,IAkBzDgmH,EAAuBljS,UAAU48K,gBAAkB,SAAyBI,EAAgBL,GACtF/+J,KAAKszE,YAAY+/D,mBACnBuzB,EAAiB5H,gBAAgBI,EAAgBL,IAM9CumH,KAGTjkS,GAAOD,QAAUkkS,G9mBy2nFX,SAAUjkS,EAAQD,EAASH,GAEjC,Y+mBx+nFA,IAAI2zF,GAAU,EAAQ,IAElB8nB,EAAc,EAAQ,IACtBp1C,EAAwB,EAAQ,IAEhC6lN,EAAyB,SAAUlpE,GAErCjkM,KAAK+zE,gBAAkB,KAEvB/zE,KAAK4lD,UAAY,KACjB5lD,KAAKinD,YAAc,KACnBjnD,KAAKisM,mBAAqB,KAC1BjsM,KAAKwmD,OAAS,EAEhBouB,GAAQu4L,EAAuB/qR,WAC7Bo4G,eAAgB,SAAUlnB,EAAaonB,EAAYC,EAAmB76F,GACpE,GAAI0lR,GAAQ7qL,EAAkBmgL,YAC9B96Q,MAAKwmD,OAASg/N,EACdxlR,KAAKinD,YAAcyzC,EACnB16F,KAAKisM,mBAAqBtxG,CAE1B,IAAIr1C,GAAY,iBAAmBtlD,KAAKwmD,OAAS,GACjD,IAAI8sB,EAAYi4H,iBAAkB,CAChC,GAAIhlF,GAAgB5rB,EAAkBs+K,eAClChsP,EAAOs5F,EAAck/J,cAAcngO,EAEvC,OADAgC,GAAsB5B,aAAa1lD,KAAMitB,GAClCyvE,EAAYzvE,GAEnB,MAAIqmD,GAAYsoM,qBAIP,GAEF,UAASt2N,EAAY,UAGhC61C,iBAAkB,aAClBJ,YAAa,WACX,MAAOzzC,GAAsBN,oBAAoBhnD,OAEnDg7F,iBAAkB,WAChB1zC,EAAsBxB,YAAY9lD,SAItC3e,EAAOD,QAAU+rR,G/mBy/nFX,SAAU9rR,EAAQD,EAASH,GAEjC,YgnBjioFA,SAAS6gL,GAAwB4jH,EAAOC,GACpC,aAAeD,IAA8Gh/N,EAAe,MAC5I,aAAei/N,IAA8Gj/N,EAAe,KAG9I,KAAK,GADDk/N,GAAS,EACJC,EAAQH,EAAOG,EAAOA,EAAQA,EAAM5+N,YAC3C2+N,GAGF,KAAK,GADDE,GAAS,EACJC,EAAQJ,EAAOI,EAAOA,EAAQA,EAAM9+N,YAC3C6+N,GAIF,MAAOF,EAASE,EAAS,GACvBJ,EAAQA,EAAMz+N,YACd2+N,GAIF,MAAOE,EAASF,EAAS,GACvBD,EAAQA,EAAM1+N,YACd6+N,GAKF,KADA,GAAI5qH,GAAQ0qH,EACL1qH,KAAS,CACd,GAAIwqH,IAAUC,EACZ,MAAOD,EAETA,GAAQA,EAAMz+N,YACd0+N,EAAQA,EAAM1+N,YAEhB,MAAO,MAMT,QAAS46G,GAAW6jH,EAAOC,GACvB,aAAeD,IAAqGh/N,EAAe,MACnI,aAAei/N,IAAqGj/N,EAAe,KAErI,MAAOi/N,GAAO,CACZ,GAAIA,IAAUD,EACZ,OAAM,CAERC,GAAQA,EAAM1+N,YAEhB,OAAM,EAMR,QAASg8D,GAAkB7+D,GAGzB,MAFE,aAAeA,IAA2GsC,EAAe,MAEpItC,EAAK6C,YAMd,QAAS67D,GAAiB1+D,EAAMpqC,EAAIzP,GAElC,IADA,GAAI9O,MACG2oD,GACL3oD,EAAKvZ,KAAKkiE,GACVA,EAAOA,EAAK6C,WAEd,IAAI3lE,EACJ,KAAKA,EAAIma,EAAKzZ,OAAQV,KAAM,GAC1B04B,EAAGve,EAAKna,GAAI,WAAYipB,EAE1B,KAAKjpB,EAAI,EAAGA,EAAIma,EAAKzZ,OAAQV,IAC3B04B,EAAGve,EAAKna,GAAI,UAAWipB,GAW3B,QAASo5G,GAAmB1yG,EAAMk4B,EAAInvB,EAAI+nJ,EAASC,GAGjD,IAFA,GAAIgkH,GAAS/0Q,GAAQk4B,EAAK24H,EAAwB7wJ,EAAMk4B,GAAM,KAC1D88O,KACGh1Q,GAAQA,IAAS+0Q,GACtBC,EAAS/jS,KAAK+uB,GACdA,EAAOA,EAAKg2C,WAGd,KADA,GAAIi/N,MACG/8O,GAAMA,IAAO68O,GAClBE,EAAOhkS,KAAKinD,GACZA,EAAKA,EAAG8d,WAEV,IAAI3lE,EACJ,KAAKA,EAAI,EAAGA,EAAI2kS,EAASjkS,OAAQV,IAC/B04B,EAAGisQ,EAAS3kS,GAAI,UAAWygL,EAE7B,KAAKzgL,EAAI4kS,EAAOlkS,OAAQV,KAAM,GAC5B04B,EAAGksQ,EAAO5kS,GAAI,WAAY0gL,GAhH9B,GAAIt7G,GAAiB,EAAQ,EAEb,GAAQ,GAkHxBrlE,EAAOD,SACLygL,WAAYA,EACZC,wBAAyBA,EACzB7+C,kBAAmBA,EACnBH,iBAAkBA,EAClBa,mBAAoBA,IhnB2joFhB,SAAUtiI,EAAQD,EAASH,GAEjC,YinBtroFA,IAAIylE,GAAiB,EAAQ,GACzBkuB,EAAU,EAAQ,IAElBivF,EAAwB,EAAQ,KAChCnnE,EAAc,EAAQ,IACtBp1C,EAAwB,EAAQ,IAEhCuuF,EAA8B,EAAQ,KAmBtCi3H,GAlBY,EAAQ,GACC,EAAQ,KAiBL,SAAUhxK,GAEpC97F,KAAK+zE,gBAAkB+nB,EACvB97F,KAAKmmR,YAAc,GAAKrqL,EAExB97F,KAAK4lD,UAAY,KACjB5lD,KAAKinD,YAAc,KAGnBjnD,KAAKwmD,OAAS,EACdxmD,KAAKojM,YAAc,EACnBpjM,KAAKomR,gBAAkB,KACvBpmR,KAAKqmR,cAAgB,MAGvBzxM,GAAQk4L,EAAsB1qR,WAU5Bo4G,eAAgB,SAAUlnB,EAAaonB,EAAYC,EAAmB76F,GAElE,GAaE0lR,GAAQ7qL,EAAkBmgL,aAC1BwL,EAAe,gBAAkBd,EAAQ,GAI7C,IAFAxlR,KAAKwmD,OAASg/N,EACdxlR,KAAKinD,YAAcyzC,EACfpnB,EAAYi4H,iBAAkB,CAChC,GAAIhlF,GAAgB5rB,EAAkBs+K,eAClC51G,EAAiB98C,EAAck/J,cAAca,GAC7CnjH,EAAiB58C,EAAck/J,cANlB,iBAObtK,EAAWz+K,EAAY6pB,EAAcggK,yBAQzC,OAPA7pL,GAAYN,WAAW++K,EAAUz+K,EAAY2mE,IACzCrjK,KAAKmmR,aACPzpL,EAAYN,WAAW++K,EAAUz+K,EAAY6pB,EAAczmD,eAAe9/D,KAAKmmR,eAEjFzpL,EAAYN,WAAW++K,EAAUz+K,EAAYymE,IAC7C77G,EAAsB5B,aAAa1lD,KAAMqjK,GACzCrjK,KAAKomR,gBAAkBjjH,EAChBg4G,EAEP,GAAIqL,GAAc3wI,EAA4B71I,KAAKmmR,YAEnD,OAAI7yM,GAAYsoM,qBAIP4K,EAGF,UAASF,EAAe,SAAQE,EAAc,8BAWzDrrL,iBAAkB,SAAUsrL,EAAUnzM,GACpC,GAAImzM,IAAazmR,KAAK+zE,gBAAiB,CACrC/zE,KAAK+zE,gBAAkB0yM,CACvB,IAAIC,GAAiB,GAAKD,CAC1B,IAAIC,IAAmB1mR,KAAKmmR,YAAa,CAIvCnmR,KAAKmmR,YAAcO,CACnB,IAAIC,GAAe3mR,KAAK+6F,aACxB8oE,GAAsBL,qBAAqBmjH,EAAa,GAAIA,EAAa,GAAID,MAKnF3rL,YAAa,WACX,GAAI6rL,GAAW5mR,KAAKqmR,aACpB,IAAIO,EACF,MAAOA,EAET,KAAK5mR,KAAKomR,gBAGR,IAFA,GAAI/iH,GAAiB/7G,EAAsBN,oBAAoBhnD,MAC3DitB,EAAOo2I,EAAe58G,cACb,CAEX,GADU,MAARx5B,GAAyIy5B,EAAe,KAAM1mD,KAAKwmD,QAC/I,IAAlBv5B,EAAKk4B,UAAqC,kBAAnBl4B,EAAKq4B,UAA+B,CAC7DtlD,KAAKomR,gBAAkBn5P,CACvB,OAEFA,EAAOA,EAAKw5B,YAKhB,MAFAmgO,IAAY5mR,KAAK4lD,UAAW5lD,KAAKomR,iBACjCpmR,KAAKqmR,cAAgBO,EACdA,GAGT5rL,iBAAkB,WAChBh7F,KAAKomR,gBAAkB,KACvBpmR,KAAKqmR,cAAgB,KACrB/+N,EAAsBxB,YAAY9lD,SAKtC3e,EAAOD,QAAU0rR,GjnBusoFX,SAAUzrR,EAAQD,EAASH,GAEjC,YknB10oFA,SAAS4lS,KACP7mR,KAAK0yE,0BAtBP,GAAIkC,GAAU,EAAQ,IAElBtC,EAAe,EAAQ,IACvBwC,EAAc,EAAQ,KAEtB7nE,EAAgB,EAAQ,IAExB65Q,GACF53N,WAAYjiD,EACZ+nE,MAAO,WACLq4L,EAA6B94L,uBAI7BwyM,GACF73N,WAAYjiD,EACZ+nE,MAAO1C,EAAa2C,oBAAoBnwE,KAAKwtE,IAG3C+C,GAAwB0xM,EAAuBD,EAMnDlyM,GAAQiyM,EAAwCzkS,UAAW0yF,GACzDQ,uBAAwB,WACtB,MAAOD,KAIX,IAAI/B,GAAc,GAAIuzM,GAElBxZ,GACF94L,mBAAkBA,EAMlBvB,eAAgB,SAAUv8C,EAAU9rB,EAAG5C,EAAG3jB,EAAGC,EAAG7B,GAC9C,GAAIwkS,GAAyB3Z,EAA6B94L,iBAK1D,OAHA84L,GAA6B94L,qBAGzByyM,EACKvwP,EAAS9rB,EAAG5C,EAAG3jB,EAAGC,EAAG7B,GAErB8wF,EAAYmC,QAAQh/C,EAAU,KAAM9rB,EAAG5C,EAAG3jB,EAAGC,EAAG7B,IAK7DnB,GAAOD,QAAUisR,GlnBg3oFX,SAAUhsR,EAAQD,EAASH,GAEjC,YmnBx5oFA,SAASgmS,GAAW7iO,GAIlB,KAAOA,EAAK6C,aACV7C,EAAOA,EAAK6C,WAEd,IAAIk4N,GAAW73N,EAAsBN,oBAAoB5C,GACrDvD,EAAYs+N,EAASt4N,UACzB,OAAOS,GAAsBX,2BAA2B9F,GAI1D,QAASqmO,GAA4B1hK,EAAcpsC,GACjDp5E,KAAKwlH,aAAeA,EACpBxlH,KAAKo5E,YAAcA,EACnBp5E,KAAKmnR,aAWP,QAASC,GAAmBjlB,GAC1B,GAAI9oL,GAAoB+sC,EAAe+7I,EAAY/oL,aAC/CD,EAAa7xB,EAAsBX,2BAA2B0yB,GAM9DguM,EAAWluM,CACf,IACEgpL,EAAYglB,UAAUjlS,KAAKmlS,GAC3BA,EAAWA,GAAYJ,EAAWI,SAC3BA,EAET,KAAK,GAAI/lS,GAAI,EAAGA,EAAI6gR,EAAYglB,UAAUnlS,OAAQV,IAChD63F,EAAagpL,EAAYglB,UAAU7lS,GACnCo5J,EAAmB4sI,gBAAgBnlB,EAAY38I,aAAcrsC,EAAYgpL,EAAY/oL,YAAagtC,EAAe+7I,EAAY/oL,cAIjI,QAASmuM,GAAmB7lQ,GAE1BA,EADqB8lQ,EAA2B9lS,SAhElD,GAAIkzF,GAAU,EAAQ,IAElBuzH,EAAgB,EAAQ,KACxBvkI,EAAuB,EAAQ,IAC/BiR,EAAc,EAAQ,IACtBvtB,EAAwB,EAAQ,IAChCgrB,EAAe,EAAQ,IAEvB8zC,EAAiB,EAAQ,KACzBohK,EAA6B,EAAQ,IAyBzC5yM,GAAQsyM,EAA4B9kS,WAClCmzF,WAAY,WACVv1E,KAAKwlH,aAAe,KACpBxlH,KAAKo5E,YAAc,KACnBp5E,KAAKmnR,UAAUnlS,OAAS,KAG5B6yF,EAAYc,aAAauxM,EAA6BryM,EAAYga,kBA2BlE,IAAI6rD,IACF+sI,UAASA,EACTH,gBAAiB,KAEjB/rI,cAAe33E,EAAqBxsD,UAAY11B,OAAS,KAEzDk5J,kBAAmB,SAAUC,GAC3BH,EAAmB4sI,gBAAkBzsI,GAGvCC,WAAY,SAAUC,GACpBL,EAAmB+sI,WAAa1sI,GAGlCC,UAAW,WACT,MAAON,GAAmB+sI,UAa5BpsI,iBAAkB,SAAU71B,EAAcg2B,EAAiB16I,GACzD,MAAKA,GAGEqnM,EAAct4G,OAAO/uF,EAAS06I,EAAiBd,EAAmBvvH,cAAcrmB,KAAK,KAAM0gH,IAFzF,MAeX81B,kBAAmB,SAAU91B,EAAcg2B,EAAiB16I,GAC1D,MAAKA,GAGEqnM,EAAc/lC,QAAQthK,EAAS06I,EAAiBd,EAAmBvvH,cAAcrmB,KAAK,KAAM0gH,IAF1F,MAKXs2B,mBAAoB,SAAUF,GAC5B,GAAInlH,GAAW8wP,EAAmBziR,KAAK,KAAM82I,EAC7CusD,GAAct4G,OAAOnuG,OAAQ,SAAU+0C,IAGzCtL,cAAe,SAAUq6F,EAAcpsC,GACrC,GAAKshE,EAAmB+sI,SAAxB,CAIA,GAAItlB,GAAc+kB,EAA4Bp0M,UAAU0yC,EAAcpsC,EACtE,KAGE9G,EAAaU,eAAeo0M,EAAoBjlB,GAChD,QACA+kB,EAA4B1xM,QAAQ2sL,MAK1C9gR,GAAOD,QAAUs5J,GnnBy7oFX,SAAUr5J,EAAQD,EAASH,GAEjC,YonB9jpFA,SAASumS,GAA2BE,GAClC,MAAIA,GAAWC,QAAUD,YAAsBA,GAAWC,QAEtDnhR,EAAGkhR,EAAWE,aAAeF,EAAWnkS,SAAS63M,gBAAgBysF,WACjEphR,EAAGihR,EAAWI,aAAeJ,EAAWnkS,SAAS63M,gBAAgBpwG,YAInExkF,EAAGkhR,EAAWG,WACdphR,EAAGihR,EAAW18L,WAIlB3pG,EAAOD,QAAUomS,GpnBylpFX,SAAUnmS,EAAQD,EAASH,GAEjC,YqnBlnpFA,IAAIimE,GAAc,EAAQ,IACtB28D,EAAiB,EAAQ,KACzBhB,EAAmB,EAAQ,KAC3B+iD,EAA4B,EAAQ,KACpCk9B,EAAsB,EAAQ,KAC9BroD,EAA2B,EAAQ,KACnCsoD,EAAqB,EAAQ,KAC7BzwH,EAAe,EAAQ,IAEvB85L,GACF1rQ,UAAWklK,EAA0B3vF,UACrC/uB,YAAaA,EAAY+uB,UACzBi3L,eAAgBpqE,EAAoB7sH,UACpC4tC,eAAgBA,EAAe5tC,UAC/B4sC,iBAAkBA,EAAiB5sC,UACnC6pE,aAAcrF,EAAyBxkE,UACvC22L,cAAe7pE,EAAmB9sH,UAClCm3L,QAAS96L,EAAa2D,UAGxB50F,GAAOD,QAAUgrR,GrnBmopFX,SAAU/qR,EAAQD,EAASH,GAEjC,YsnBtjpFA,SAASsxF,GAA0Bg5H,GACjCvrM,KAAK0yE,0BAML1yE,KAAK47Q,wBACL57Q,KAAK+nR,gBAAkBl1M,EAAcC,UAAU,MAC/C9yE,KAAKurM,iBAAmBA,EA5G1B,GAAI32H,GAAU,EAAQ,IAElB/B,EAAgB,EAAQ,KACxBgC,EAAc,EAAQ,IACtB4lE,EAA2B,EAAQ,KACnCguD,EAAsB,EAAQ,KAE9B3zH,GADuB,EAAQ,IACjB,EAAQ,MACtB8xF,EAAmB,EAAQ,KAM3BohH,GAIF94N,WAAYu5I,EAAoBG,wBAIhC5zH,MAAOyzH,EAAoBO,kBAQzBi/E,GAKF/4N,WAAY,WACV,GAAIg5N,GAAmBztI,EAAyBO,WAEhD,OADAP,GAAyBK,YAAWA,GAC7BotI,GAQTlzM,MAAO,SAAUmzM,GACf1tI,EAAyBK,WAAWqtI,KAQpCC,GAIFl5N,WAAY,WACVlvD,KAAK+nR,gBAAgB5yM,SAMvBH,MAAO,WACLh1E,KAAK+nR,gBAAgB3yM,cASrBC,GAAwB2yM,EAAuBC,EAAmBG,GAmClEvN,GAQFvlM,uBAAwB,WACtB,MAAOD,IAMTylB,mBAAoB,WAClB,MAAO96F,MAAK+nR,iBAMdjF,eAAgB,WACd,MAAOl8G,IAOT60B,WAAY,WAEV,MAAOz7L,MAAK+nR,gBAAgBtsF,cAG9BC,SAAU,SAAUD,GAClBz7L,KAAK+nR,gBAAgBrsF,SAASD,IAOhClmH,WAAY,WACV1C,EAAc2C,QAAQx1E,KAAK+nR,iBAC3B/nR,KAAK+nR,gBAAkB,MAI3BnzM,GAAQrC,EAA0BnwF,UAAW0yF,EAAa+lM,GAE1DhmM,EAAYc,aAAapD,GAEzBlxF,EAAOD,QAAUmxF,GtnB0qpFX,SAAUlxF,EAAQD,EAASH,GAEjC,YunBt0pFA,SAASonS,GAAYC,EAAYC,EAAcvsF,EAAWwsF,GACxD,MAAOF,KAAetsF,GAAausF,IAAiBC,EAiBtD,QAASC,GAAax7P,GACpB,GAAIq8K,GAAY/lN,SAAS+lN,UACrBo/E,EAAgBp/E,EAAUI,cAC1Bi/E,EAAiBD,EAAc5sL,KAAK95G,OAGpC4mS,EAAYF,EAAcG,WAC9BD,GAAUE,kBAAkB77P,GAC5B27P,EAAUG,YAAY,aAAcL,EAEpC,IAAIM,GAAcJ,EAAU9sL,KAAK95G,MAGjC,QACE2kF,MAAOqiN,EACPpiN,IAJcoiN,EAAcL,GAYhC,QAASM,GAAiBh8P,GACxB,GAAIq8K,GAAY5nN,OAAOqnN,cAAgBrnN,OAAOqnN,cAE9C,KAAKO,GAAsC,IAAzBA,EAAU4/E,WAC1B,MAAO,KAGT,IAAIZ,GAAah/E,EAAUg/E,WACvBC,EAAej/E,EAAUi/E,aACzBvsF,EAAYsN,EAAUtN,UACtBwsF,EAAcl/E,EAAUk/E,YAExBW,EAAe7/E,EAAU8/E,WAAW,EASxC,KAEED,EAAaE,eAAelkO,SAC5BgkO,EAAaG,aAAankO,SAE1B,MAAO3iE,GACP,MAAO,MAMT,GAAI+mS,GAAuBlB,EAAY/+E,EAAUg/E,WAAYh/E,EAAUi/E,aAAcj/E,EAAUtN,UAAWsN,EAAUk/E,aAEhHgB,EAAcD,EAAuB,EAAIJ,EAAalrQ,WAAWj8B,OAEjEynS,EAAYN,EAAaO,YAC7BD,GAAUE,mBAAmB18P,GAC7Bw8P,EAAUG,OAAOT,EAAaE,eAAgBF,EAAaH,YAE3D,IAAIa,GAAuBxB,EAAYoB,EAAUJ,eAAgBI,EAAUT,YAAaS,EAAUH,aAAcG,EAAUK,WAEtHnjN,EAAQkjN,EAAuB,EAAIJ,EAAUxrQ,WAAWj8B,OACxD4kF,EAAMD,EAAQ6iN,EAGdO,EAAiBxmS,SAASmmN,aAC9BqgF,GAAeC,SAAS1B,EAAYC,GACpCwB,EAAeH,OAAO5tF,EAAWwsF,EACjC,IAAIyB,GAAaF,EAAeG,SAEhC,QACEvjN,MAAOsjN,EAAarjN,EAAMD,EAC1BC,IAAKqjN,EAAatjN,EAAQC,GAQ9B,QAASujN,GAAal9P,EAAM88K,GAC1B,GACIpjI,GAAOC,EADP6iI,EAAQlmN,SAAS+lN,UAAUI,cAAcm/E,gBAAYA,KAGrD9+E,EAAQnjI,KACVD,EAAQojI,EAAQpjI,MAChBC,EAAMD,GACGojI,EAAQpjI,MAAQojI,EAAQnjI,KACjCD,EAAQojI,EAAQnjI,IAChBA,EAAMmjI,EAAQpjI,QAEdA,EAAQojI,EAAQpjI,MAChBC,EAAMmjI,EAAQnjI,KAGhB6iI,EAAMq/E,kBAAkB77P,GACxBw8K,EAAMG,UAAU,YAAajjI,GAC7B8iI,EAAMs/E,YAAY,aAAct/E,GAChCA,EAAMI,QAAQ,YAAajjI,EAAMD,GACjC8iI,EAAMS,SAeR,QAASkgF,GAAiBn9P,EAAM88K,GAC9B,GAAKroN,OAAOqnN,aAAZ,CAIA,GAAIO,GAAY5nN,OAAOqnN,eACnB/mN,EAASirC,EAAKiuK,KAA0Bl5M,OACxC2kF,EAAQroD,KAAKgpD,IAAIyiI,EAAQpjI,MAAO3kF,GAChC4kF,WAAMmjI,EAAQnjI,IAAoBD,EAAQroD,KAAKgpD,IAAIyiI,EAAQnjI,IAAK5kF,EAIpE,KAAKsnN,EAAUthF,QAAUrhD,EAAQC,EAAK,CACpC,GAAI+0D,GAAO/0D,CACXA,GAAMD,EACNA,EAAQg1D,EAGV,GAAI0uJ,GAAcC,EAA0Br9P,EAAM05C,GAC9C4jN,EAAYD,EAA0Br9P,EAAM25C,EAEhD,IAAIyjN,GAAeE,EAAW,CAC5B,GAAI9gF,GAAQlmN,SAASmmN,aACrBD,GAAMugF,SAASK,EAAYp9P,KAAMo9P,EAAY9rJ,QAC7C+qE,EAAUkhF,kBAEN7jN,EAAQC,GACV0iI,EAAUmhF,SAAShhF,GACnBH,EAAUthF,OAAOuiK,EAAUt9P,KAAMs9P,EAAUhsJ,UAE3CkrE,EAAMmgF,OAAOW,EAAUt9P,KAAMs9P,EAAUhsJ,QACvC+qE,EAAUmhF,SAAShhF,MAlLzB,GAAI7lI,GAAuB,EAAQ,IAE/B0mN,EAA4B,EAAQ,KACpCpvF,EAAyB,EAAQ,KAoLjCwvF,EAAe9mN,EAAqBxsD,WAAa,aAAe7zB,aAAc,gBAAkB7B,SAEhG6mN,GAIFuB,WAAY4gF,EAAejC,EAAeQ,EAM1C9+E,WAAYugF,EAAeP,EAAeC,EAG5C/oS,GAAOD,QAAUmnN,GvnBi2pFX,SAAUlnN,EAAQD,EAASH,GAEjC,YwnBliqFA,SAAS0pS,GAAY19P,GACnB,KAAOA,GAAQA,EAAKm5B,YAClBn5B,EAAOA,EAAKm5B,UAEd,OAAOn5B,GAUT,QAAS29P,GAAe39P,GACtB,KAAOA,GAAM,CACX,GAAIA,EAAKw5B,YACP,MAAOx5B,GAAKw5B,WAEdx5B,GAAOA,EAAK45B,YAWhB,QAASyjO,GAA0B96O,EAAM+uF,GAKvC,IAJA,GAAItxG,GAAO09P,EAAYn7O,GACnBq7O,EAAY,EACZC,EAAU,EAEP79P,GAAM,CACX,GAAsB,IAAlBA,EAAKk4B,SAAgB,CAGvB,GAFA2lO,EAAUD,EAAY59P,EAAK8uK,YAAY/5M,OAEnC6oS,GAAatsJ,GAAUusJ,GAAWvsJ,EACpC,OACEtxG,KAAMA,EACNsxG,OAAQA,EAASssJ,EAIrBA,GAAYC,EAGd79P,EAAO09P,EAAYC,EAAe39P,KAItC5rC,EAAOD,QAAUkpS,GxnB0jqFX,SAAUjpS,EAAQD,EAASH,GAEjC,YynBlnqFA,SAASqnN,GAAayiF,EAAWC,GAC/B,SAAKD,IAAcC,KAERD,IAAcC,IAEdC,EAAWF,KAEXE,EAAWD,GACb1iF,EAAayiF,EAAWC,EAAUnkO,YAChC,YAAckkO,GAChBA,EAAUrtG,SAASstG,KACjBD,EAAUG,4BACsC,GAA/CH,EAAUG,wBAAwBF,MAnBhD,GAAIC,GAAa,EAAQ,IAyBzB5pS,GAAOD,QAAUknN,GznByoqFX,SAAUjnN,EAAQD,EAASH,GAEjC,Y0nB9pqFA,SAASgqS,GAAWlmS,GAClB,MAAOg2B,GAAOh2B,IAA8B,GAAnBA,EAAOogE,SAPlC,GAAIpqC,GAAS,EAAQ,IAUrB15B,GAAOD,QAAU6pS,G1nBorqFX,SAAU5pS,EAAQD,EAASH,GAEjC,Y2nB5rqFA,SAAS85B,GAAOh2B,GACd,GAAIsoH,GAAMtoH,EAASA,EAAOwhI,eAAiBxhI,EAASxB,SAChDijI,EAAcnZ,EAAImZ,aAAe9kI,MACrC,UAAUqD,KAAuC,kBAArByhI,GAAY2kK,KAAsBpmS,YAAkByhI,GAAY2kK,KAAyB,gBAAXpmS,IAAkD,gBAApBA,GAAOogE,UAAoD,gBAApBpgE,GAAO03G,WAGxLp7G,EAAOD,QAAU25B,G3nBgtqFX,SAAU15B,EAAQD,EAASH,GAEjC,Y4nB3tqFA,IAAImqS,IACFC,MAAO,+BACP93G,IAAK,wCAoBH+3G,GACFC,aAAc,gBACdC,WAAY,EACZC,SAAU,EACVC,kBAAmB,qBACnBC,aAAc,eACdC,WAAY,EACZC,UAAW,EACXC,WAAY,cACZC,OAAQ,EACRryL,cAAe,gBACfsyL,cAAe,gBACfC,YAAa,cACbC,QAAS,EACTC,cAAe,gBACfC,YAAa,cACbC,cAAe,iBACfC,KAAM,EACNC,MAAO,EACPC,KAAM,EACNC,GAAI,EACJC,SAAU,WACVC,UAAW,aACXC,KAAM,EACNzjB,SAAU,YACV0jB,SAAU,YACVC,cAAe,gBACfC,mBAAoB,sBACpBC,0BAA2B,8BAC3BC,aAAc,gBACdC,eAAgB,kBAChBC,kBAAmB,oBACnBC,iBAAkB,mBAClB5jD,OAAQ,EACR6jD,GAAI,EACJC,GAAI,EACJjpS,EAAG,EACHkpS,WAAY,EACZC,QAAS,EACTC,gBAAiB,kBACjBxsJ,UAAW,EACXvkD,QAAS,EACTk/H,QAAS,EACT8xE,iBAAkB,oBAClBvsJ,IAAK,EACLwsJ,GAAI,EACJC,GAAI,EACJC,SAAU,WACVC,UAAW,EACXC,iBAAkB,oBAClBnnN,IAAK,EACLonN,SAAU,EACVC,0BAA2B,4BAC3BjsE,KAAM,EACNnkB,YAAa,eACbqwF,SAAU,YACVr4Q,OAAQ,EACRs4Q,UAAW,YACXC,YAAa,cACbC,WAAY,cACZvwF,aAAc,gBACdiqC,UAAW,EACX5nC,WAAY,cACZD,SAAU,YACVouF,eAAgB,mBAChBC,YAAa,eACbvuF,UAAW,aACXC,YAAa,eACb7C,WAAY,cACZ9pM,OAAQ,EACR2d,KAAM,EACNu9Q,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,UAAW,aACXC,2BAA4B,+BAC5BC,yBAA0B,6BAC1BC,SAAU,WACVC,kBAAmB,oBACnBC,cAAe,gBACfC,QAAS,EACTC,UAAW,cACXC,aAAc,iBACdC,YAAa,EACbC,eAAgB,kBAChB,GAAM,EACNC,IAAK,EACLC,UAAW,EACXzhL,EAAG,EACH0hL,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,aAAc,eACdC,iBAAkB,mBAClBC,QAAS,EACTC,UAAW,YACXC,WAAY,aACZC,SAAU,WACVC,aAAc,eACdC,cAAe,iBACfC,cAAe,iBACfC,kBAAmB,oBACnBtxJ,MAAO,EACPuxJ,UAAW,aACXC,UAAW,aACXC,YAAa,eACbC,aAAc,eACdC,YAAa,cACbC,YAAa,cACbrnB,KAAM,EACNsnB,iBAAkB,mBAClBC,UAAW,YACXC,aAAc,EACd1hE,KAAM,EACN2hE,WAAY,aACZzyJ,OAAQ,EACRu7B,QAAS,EACTq+B,SAAU,EACVoF,MAAO,EACP0zF,OAAQ,EACRC,YAAa,EACbrzR,OAAQ,EACR2qH,SAAU,EACV2oK,iBAAkB,oBAClBC,kBAAmB,qBACnBC,WAAY,cACZC,QAAS,WACTC,WAAY,aACZC,oBAAqB,sBACrBC,iBAAkB,mBAClBC,aAAc,eACdC,cAAe,iBACfC,OAAQ,EACRC,UAAW,YACXC,UAAW,YACXC,UAAW,YACXC,cAAe,gBACfC,oBAAqB,sBACrBC,eAAgB,iBAChB35Q,EAAG,EACH45Q,OAAQ,EACRC,KAAM,OACNC,KAAM,OACNC,gBAAiB,mBACjBC,YAAa,cACbC,UAAW,YACXC,mBAAoB,qBACpBC,iBAAkB,mBAClBC,QAAS,EACTloR,OAAQ,EACRmoR,OAAQ,EACRC,GAAI,EACJC,GAAI,EACJC,MAAO,EACPC,KAAM,EACNC,eAAgB,kBAChBC,MAAO,EACPC,QAAS,EACTC,iBAAkB,mBAClBC,iBAAkB,mBAClBh5H,MAAO,EACPi5H,aAAc,eACdtK,YAAa,cACbuK,aAAc,eACdC,MAAO,EACPC,MAAO,EACPC,YAAa,cACbC,UAAW,aACX51F,YAAa,eACb61F,sBAAuB,yBACvBC,uBAAwB,0BACxBl7N,OAAQ,EACRm7N,OAAQ,EACR91F,gBAAiB,mBACjBC,iBAAkB,oBAClB81F,cAAe,iBACfC,eAAgB,kBAChB91F,iBAAkB,oBAClBC,cAAe,iBACfC,YAAa,eACb61F,aAAc,eACdC,eAAgB,iBAChBC,YAAa,cACbC,QAAS,UACTC,QAAS,UACTC,WAAY,cACZC,eAAgB,kBAChBC,cAAe,iBACfC,WAAY,aACZtrP,GAAI,EACJgxH,UAAW,EACXu6H,GAAI,EACJC,GAAI,EACJC,kBAAmB,qBACnBC,mBAAoB,sBACpB9iF,QAAS,EACT+iF,YAAa,eACbC,aAAc,gBACdC,WAAY,eACZC,YAAa,eACbC,SAAU,YACVC,aAAc,gBACdC,cAAe,iBACf5hR,OAAQ,EACR6hR,aAAc,gBACdp3R,QAAS,EACTq3R,SAAU,aACVC,YAAa,gBACbC,YAAa,gBACbC,QAAS,UACTC,WAAY,aACZC,WAAY,EACZC,OAAQ,EACRC,YAAa,eACbC,YAAa,eACbtvR,EAAG,EACHuvR,QAAS,WACTC,GAAI,EACJC,GAAI,EACJC,iBAAkB,mBAClBC,aAAc,gBACdC,aAAc,gBACdC,UAAW,aACXC,UAAW,aACXC,UAAW,aACXC,WAAY,cACZC,UAAW,aACXC,QAAS,WACTC,MAAO,EACPC,WAAY,cACZC,QAAS,WACTC,SAAU,YACVrwR,EAAG,EACHswR,GAAI,EACJC,GAAI,EACJC,iBAAkB,mBAClBC,EAAG,EACHC,WAAY,cAGVlqB,GACFl0K,cACAC,wBACEm9L,aAAc/K,EAAGC,MACjB+K,aAAchL,EAAGC,MACjBgL,UAAWjL,EAAGC,MACdiL,UAAWlL,EAAGC,MACdkL,UAAWnL,EAAGC,MACdmL,WAAYpL,EAAGC,MACfoL,UAAWrL,EAAGC,MACdqL,QAAStL,EAAG73G,IACZsjH,QAASzL,EAAG73G,IACZujH,SAAU1L,EAAG73G,KAEft6E,qBAGF92G,QAAO6I,KAAKsgS,GAAOvrP,QAAQ,SAAUt6C,GACnCwnR,EAAqBl0K,WAAWtzG,GAAO,EACnC6lS,EAAM7lS,KACRwnR,EAAqBh0K,kBAAkBxzG,GAAO6lS,EAAM7lS,MAIxDpE,EAAOD,QAAU6rR,G5nB4uqFX,SAAU5rR,EAAQD,EAASH,GAEjC,Y6nBt+qFA,SAAS8nN,GAAa97K,GACpB,GAAI,kBAAoBA,IAAQw7K,EAAoBC,yBAAyBz7K,GAC3E,OACE05C,MAAO15C,EAAKs8K,eACZ3iI,IAAK35C,EAAKu8K,aAEP,IAAI9nN,OAAOqnN,aAAc,CAC9B,GAAIO,GAAY5nN,OAAOqnN,cACvB,QACEu/E,WAAYh/E,EAAUg/E,WACtBC,aAAcj/E,EAAUi/E,aACxBvsF,UAAWsN,EAAUtN,UACrBwsF,YAAal/E,EAAUk/E,aAEpB,GAAIjlS,SAAS+lN,UAAW,CAC7B,GAAIG,GAAQlmN,SAAS+lN,UAAUI,aAC/B,QACEC,cAAeF,EAAME,gBACrB7tG,KAAM2tG,EAAM3tG,KACZoyD,IAAKu7C,EAAM2tF,YACXhpI,KAAMq7C,EAAM4tF,eAWlB,QAASC,GAAqBl+M,EAAaC,GAKzC,GAAIk+M,GAA8B,MAAjBntF,GAAyBA,IAAkB5B,IAC1D,MAAO,KAIT,IAAIgvF,GAAmBzuF,EAAaqB,EACpC,KAAKqtF,IAAkB/wR,EAAa+wR,EAAeD,GAAmB,CACpEC,EAAgBD,CAEhB,IAAI70H,GAAiB1pF,EAAenG,UAAUgtF,EAAWoqC,OAAQmmE,EAAmBj3L,EAAaC,EAOjG,OALAspF,GAAej/K,KAAO,SACtBi/K,EAAerhK,OAAS8oM,EAExBtmF,EAAiBT,6BAA6Bs/C,GAEvCA,EAGT,MAAO,MA/FT,GAAI7+C,GAAmB,EAAQ,KAC3BlgD,EAAuB,EAAQ,IAC/Btc,EAAwB,EAAQ,IAChCmhJ,EAAsB,EAAQ,KAC9BxvH,EAAiB,EAAQ,IAEzBuvH,EAAmB,EAAQ,KAC3B7M,EAAqB,EAAQ,KAC7Bj1L,EAAe,EAAQ,KAEvBgxR,EAA2B9zN,EAAqBxsD,WAAa,gBAAkB7zB,WAAYA,SAASs5G,cAAgB,GAEpHijE,GACFoqC,QACE7nF,yBACEgtJ,QAAS,WACTC,SAAU,mBAEZz9P,cAAe,UAAW,iBAAkB,WAAY,aAAc,WAAY,eAAgB,aAAc,wBAIhHu4L,EAAgB,KAChBimE,EAAoB,KACpBonB,EAAgB,KAChBF,KAIAI,KAmFAjrB,GAEF5sG,WAAYA,EAEZv6C,cAAe,SAAUC,EAAcrsC,EAAYC,EAAaC,GAC9D,IAAKs+M,EACH,MAAO,KAGT,IAAIjmB,GAAav4L,EAAa7xB,EAAsBN,oBAAoBmyB,GAAcz3F,MAEtF,QAAQ8jI,GAEN,IAAK,YACCm2E,EAAmB+1E,IAA8C,SAA/BA,EAAW/oE,mBAC/CyB,EAAgBsnE,EAChBrB,EAAoBl3L,EACpBs+M,EAAgB,KAElB,MACF,KAAK,UACHrtF,EAAgB,KAChBimE,EAAoB,KACpBonB,EAAgB,IAChB,MAIF,KAAK,eACHF,IACA,MACF,KAAK,iBACL,IAAK,aAEH,MADAA,MACOD,EAAqBl+M,EAAaC,EAW3C,KAAK,qBACH,GAAIq+M,EACF,KAGJ,KAAK,aACL,IAAK,WACH,MAAOJ,GAAqBl+M,EAAaC,GAG7C,MAAO,OAGT6rC,eAAgB,SAAU9gE,EAAMg+D,EAAkBjgH,GACvB,aAArBigH,IACFu1K,OAKNt2S,GAAOD,QAAUsrR,G7nB+hrFX,SAAUrrR,EAAQD,EAASH,GAEjC,Y8nBtprFA,SAAS0jI,GAAiBvgE,GAGxB,MAAO,IAAMA,EAAKwgE,YAGpB,QAASb,GAAcvmD,GACrB,MAAe,WAARA,GAA4B,UAARA,GAA2B,WAARA,GAA4B,aAARA,EAlEpE,GAAI9W,GAAiB,EAAQ,GAEzByhJ,EAAgB,EAAQ,KACxBrkF,EAAmB,EAAQ,KAC3Bx8D,EAAwB,EAAQ,IAChCswO,EAA0B,EAAQ,KAClCC,EAA0B,EAAQ,KAClC5+M,EAAiB,EAAQ,IACzB6+M,EAAsB,EAAQ,KAC9BC,EAAyB,EAAQ,KACjCpkJ,EAAsB,EAAQ,KAC9BqkJ,EAAqB,EAAQ,KAC7BC,EAAsB,EAAQ,KAC9BC,EAA2B,EAAQ,KACnChyK,EAAmB,EAAQ,KAC3BiyK,EAAsB,EAAQ,KAE9BlrR,EAAgB,EAAQ,IACxBo6J,EAAmB,EAAQ,KAqB3BvH,GApBY,EAAQ,OAqBpBs4H,MACH,QAAS,eAAgB,qBAAsB,iBAAkB,OAAQ,UAAW,iBAAkB,QAAS,cAAe,OAAQ,MAAO,cAAe,OAAQ,UAAW,YAAa,WAAY,YAAa,WAAY,YAAa,OAAQ,iBAAkB,UAAW,YAAa,QAAS,QAAS,QAAS,QAAS,UAAW,UAAW,WAAY,QAAS,OAAQ,aAAc,iBAAkB,YAAa,YAAa,YAAa,WAAY,YAAa,UAAW,QAAS,QAAS,OAAQ,UAAW,WAAY,aAAc,QAAS,SAAU,SAAU,UAAW,UAAW,SAAU,UAAW,aAAc,cAAe,WAAY,YAAa,aAAc,gBAAiB,eAAgB,UAAW,SAASr4P,QAAQ,SAAU7U,GACnvB,GAAImtQ,GAAmBntQ,EAAM,GAAGwpB,cAAgBxpB,EAAMr3B,MAAM,GACxDykS,EAAU,KAAOD,EACjBE,EAAW,MAAQF,EAEnB30S,GACF2+H,yBACEgtJ,QAASipB,EACThpB,SAAUgpB,EAAU,WAEtBzmR,cAAe0mR,GAEjBz4H,GAAW50I,GAASxnC,EACpB00S,EAA+BG,GAAY70S,GAG7C,IAAI80S,MAYAjsB,GAEFzsG,WAAYA,EAEZv6C,cAAe,SAAUC,EAAcrsC,EAAYC,EAAaC,GAC9D,GAAIH,GAAiBk/M,EAA+B5yK,EACpD,KAAKtsC,EACH,MAAO,KAET,IAAIu/M,EACJ,QAAQjzK,GACN,IAAK,WACL,IAAK,aACL,IAAK,oBACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,WACL,IAAK,WACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,gBACL,IAAK,oBACL,IAAK,eACL,IAAK,WACL,IAAK,UACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,WACL,IAAK,YACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,aACL,IAAK,gBACL,IAAK,kBACL,IAAK,aAGHizK,EAAmBx/M,CACnB,MACF,KAAK,cAIH,GAAsC,IAAlCouF,EAAiBjuF,GACnB,MAAO,KAGX,KAAK,aACL,IAAK,WACHq/M,EAAmBV,CACnB,MACF,KAAK,UACL,IAAK,WACHU,EAAmBX,CACnB,MACF,KAAK,WAGH,GAA2B,IAAvB1+M,EAAYo7D,OACd,MAAO,KAGX,KAAK,iBACL,IAAK,eACL,IAAK,eACL,IAAK,aAGL,IAAK,cACL,IAAK,eACL,IAAK,iBACHikJ,EAAmB9kJ,CACnB,MACF,KAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,cACL,IAAK,eACL,IAAK,cACL,IAAK,eACL,IAAK,UACH8kJ,EAAmBT,CACnB,MACF,KAAK,iBACL,IAAK,cACL,IAAK,eACL,IAAK,gBACHS,EAAmBR,CACnB,MACF,KAAK,kBACL,IAAK,wBACL,IAAK,oBACHQ,EAAmBb,CACnB,MACF,KAAK,mBACHa,EAAmBP,CACnB,MACF,KAAK,YACHO,EAAmBvyK,CACnB,MACF,KAAK,WACHuyK,EAAmBN,CACnB,MACF,KAAK,UACL,IAAK,SACL,IAAK,WACHM,EAAmBZ,EAGtBY,GAA8I/xO,EAAe,KAAM8+D,EACpK,IAAIt6F,GAAQutQ,EAAiB3lN,UAAUoG,EAAgBC,EAAYC,EAAaC,EAEhF,OADAyqC,GAAiBT,6BAA6Bn4F,GACvCA,GAGTg6F,eAAgB,SAAU9gE,EAAMg+D,EAAkBjgH,GAMhD,GAAyB,YAArBigH,IAAmC2B,EAAc3/D,EAAKs0N,MAAO,CAC/D,GAAIjzR,GAAMk/H,EAAiBvgE,GACvBn3B,EAAOq6B,EAAsBN,oBAAoB5C,EAChDo0O,GAAiB/yS,KACpB+yS,EAAiB/yS,GAAO0iN,EAAct4G,OAAO5iE,EAAM,QAAShgB,MAKlEo4G,mBAAoB,SAAUjhE,EAAMg+D,GAClC,GAAyB,YAArBA,IAAmC2B,EAAc3/D,EAAKs0N,MAAO,CAC/D,GAAIjzR,GAAMk/H,EAAiBvgE,EAC3Bo0O,GAAiB/yS,GAAK6xD,eACfkhP,GAAiB/yS,KAM9BpE,GAAOD,QAAUmrR,G9nBmurFX,SAAUlrR,EAAQD,EAASH,GAEjC,Y+nBx6rFA,SAAS22S,GAAwB1+M,EAAgBitC,EAAgB/sC,EAAaC,GAC5E,MAAOJ,GAAez3F,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GApBhF,GAAIJ,GAAiB,EAAQ,IAOzBy/M,GACFC,cAAe,KACfC,YAAa,KACbC,cAAe,KAajB5/M,GAAewB,aAAam9M,EAAyBc,GAErDr3S,EAAOD,QAAUw2S,G/nB48rFX,SAAUv2S,EAAQD,EAASH,GAEjC,YgoBr9rFA,SAAS42S,GAAwB3+M,EAAgBitC,EAAgB/sC,EAAaC,GAC5E,MAAOJ,GAAez3F,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GAnBhF,GAAIJ,GAAiB,EAAQ,IAMzB6/M,GACFC,cAAe,SAAU7tQ,GACvB,MAAO,iBAAmBA,GAAQA,EAAM6tQ,cAAgBr3S,OAAOq3S,eAcnE9/M,GAAewB,aAAao9M,EAAyBiB,GAErDz3S,EAAOD,QAAUy2S,GhoBw/rFX,SAAUx2S,EAAQD,EAASH,GAEjC,YioBlgsFA,SAAS62S,GAAoB5+M,EAAgBitC,EAAgB/sC,EAAaC,GACxE,MAAO6sC,GAAiB1kI,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GAjBlF,GAAI6sC,GAAmB,EAAQ,KAM3B8yK,GACFtkJ,cAAe,KAajBxuB,GAAiBzrC,aAAaq9M,EAAqBkB,GAEnD33S,EAAOD,QAAU02S,GjoBmisFX,SAAUz2S,EAAQD,EAASH,GAEjC,YkoB3/rFA,SAAS82S,GAAuB7+M,EAAgBitC,EAAgB/sC,EAAaC,GAC3E,MAAO6sC,GAAiB1kI,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GAjElF,GAAI6sC,GAAmB,EAAQ,KAE3BmhD,EAAmB,EAAQ,KAC3B4xH,EAAc,EAAQ,KACtBplJ,EAAwB,EAAQ,KAMhCqlJ,GACFzzS,IAAKwzS,EACL39R,SAAU,KACV64I,QAAS,KACTC,SAAU,KACVC,OAAQ,KACRC,QAAS,KACT6kJ,OAAQ,KACRhrL,OAAQ,KACRomC,iBAAkBV,EAElByzB,SAAU,SAAUp8I,GAMlB,MAAmB,aAAfA,EAAMxnC,KACD2jL,EAAiBn8I,GAEnB,GAETwhI,QAAS,SAAUxhI,GAQjB,MAAmB,YAAfA,EAAMxnC,MAAqC,UAAfwnC,EAAMxnC,KAC7BwnC,EAAMwhI,QAER,GAETwmG,MAAO,SAAUhoO,GAGf,MAAmB,aAAfA,EAAMxnC,KACD2jL,EAAiBn8I,GAEP,YAAfA,EAAMxnC,MAAqC,UAAfwnC,EAAMxnC,KAC7BwnC,EAAMwhI,QAER,GAcXxmC,GAAiBzrC,aAAas9M,EAAwBmB,GAEtD73S,EAAOD,QAAU22S,GloB4ksFX,SAAU12S,EAAQD,EAASH,GAEjC,YmoBzlsFA,SAASg4S,GAAY7/M,GACnB,GAAIA,EAAY3zF,IAAK,CAMnB,GAAIA,GAAM2zS,EAAahgN,EAAY3zF,MAAQ2zF,EAAY3zF,GACvD,IAAY,iBAARA,EACF,MAAOA,GAKX,GAAyB,aAArB2zF,EAAY11F,KAAqB,CACnC,GAAI4jL,GAAWD,EAAiBjuF,EAIhC,OAAoB,MAAbkuF,EAAkB,QAAU7/I,OAAOunB,aAAas4H,GAEzD,MAAyB,YAArBluF,EAAY11F,MAA2C,UAArB01F,EAAY11F,KAGzC21S,EAAejgN,EAAYszE,UAAY,eAEzC,GArFT,GAAI2a,GAAmB,EAAQ,KAM3B+xH,GACF,IAAO,SACP,SAAY,IACZ,KAAQ,YACR,GAAM,UACN,MAAS,aACT,KAAQ,YACR,IAAO,SACP,IAAO,KACP,KAAQ,cACR,KAAQ,cACR,OAAU,aACV,gBAAmB,gBAQjBC,GACFp3Q,EAAG,YACHqB,EAAG,MACHwL,GAAI,QACJsB,GAAI,QACJ2C,GAAI,QACJsC,GAAI,UACJG,GAAI,MACJqB,GAAI,QACJG,GAAI,WACJgK,GAAI,SACJiE,GAAI,IACJE,GAAI,SACJM,GAAI,WACJU,GAAI,MACJ8B,GAAI,OACJqxP,GAAI,YACJC,GAAI,UACJC,GAAI,aACJC,GAAI,YACJC,GAAI,SACJC,GAAI,SACJC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAC5DC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,MAAOC,IAAK,MAAOC,IAAK,MAC9DC,IAAK,UACLC,IAAK,aACLC,IAAK,OAoCPr5S,GAAOD,QAAU63S,GnoBqqsFX,SAAU53S,EAAQD,EAASH,GAEjC,YooB/usFA,SAAS+2S,GAAmB9+M,EAAgBitC,EAAgB/sC,EAAaC,GACvE,MAAOs6D,GAAoBnyJ,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GAjBrF,GAAIs6D,GAAsB,EAAQ,KAM9BgnJ,GACFC,aAAc,KAahBjnJ,GAAoBl5D,aAAau9M,EAAoB2C,GAErDt5S,EAAOD,QAAU42S,GpoBgxsFX,SAAU32S,EAAQD,EAASH,GAEjC,YqoB/wsFA,SAASg3S,GAAoB/+M,EAAgBitC,EAAgB/sC,EAAaC,GACxE,MAAO6sC,GAAiB1kI,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GA1BlF,GAAI6sC,GAAmB,EAAQ,KAE3B2tB,EAAwB,EAAQ,KAMhCgnJ,GACFrjI,QAAS,KACTsjI,cAAe,KACfC,eAAgB,KAChB1mJ,OAAQ,KACRC,QAAS,KACTH,QAAS,KACTC,SAAU,KACVG,iBAAkBV,EAapB3tB,GAAiBzrC,aAAaw9M,EAAqB4C,GAEnDx5S,EAAOD,QAAU62S,GroByzsFX,SAAU52S,EAAQD,EAASH,GAEjC,YsoBv0sFA,SAASi3S,GAAyBh/M,EAAgBitC,EAAgB/sC,EAAaC,GAC7E,MAAOJ,GAAez3F,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GApBhF,GAAIJ,GAAiB,EAAQ,IAOzB+hN,GACFp8Q,aAAc,KACdg6Q,YAAa,KACbC,cAAe,KAajB5/M,GAAewB,aAAay9M,EAA0B8C,GAEtD35S,EAAOD,QAAU82S,GtoB22sFX,SAAU72S,EAAQD,EAASH,GAEjC,YuoBp2sFA,SAASk3S,GAAoBj/M,EAAgBitC,EAAgB/sC,EAAaC,GACxE,MAAOs6D,GAAoBnyJ,KAAKwe,KAAMk5E,EAAgBitC,EAAgB/sC,EAAaC,GAnCrF,GAAIs6D,GAAsB,EAAQ,KAM9BsnJ,GACFC,OAAQ,SAAUhwQ,GAChB,MAAO,UAAYA,GAAQA,EAAMgwQ,OAEjC,eAAiBhwQ,IAASA,EAAMiwQ,YAAc,GAEhDC,OAAQ,SAAUlwQ,GAChB,MAAO,UAAYA,GAAQA,EAAMkwQ,OAEjC,eAAiBlwQ,IAASA,EAAMmwQ,YAEhC,cAAgBnwQ,IAASA,EAAMowQ,WAAa,GAE9CC,OAAQ,KAMRC,UAAW,KAab7nJ,GAAoBl5D,aAAa09M,EAAqB8C,GAEtD55S,EAAOD,QAAU+2S,GvoBu5sFX,SAAU92S,EAAQD,EAASH,GAEjC,YwoB77sFA,SAAS+pN,GAAsBywF,EAAiBxuQ,GAY9C,OAVEg+K,iBAAkBwwF,EAClB3gB,WAAY,EACZ7B,eAAgBhsP,EAAOA,EAAKk4B,WAAaulJ,EAAgBz9K,EAAOA,EAAKs5F,cAAgB,KACrFwyJ,MAAO9rP,EACPyrP,KAAMzrP,EAAOA,EAAKwvE,SAASpmF,cAAgB,KAC3C6jQ,cAAejtP,EAAOA,EAAK8vE,aAAe,MAX9C,GAEI2tG,IAFqB,EAAQ,KAEb,EAiBpBrpN,GAAOD,QAAU4pN,GxoBk9sFX,SAAU3pN,EAAQD,EAASH,GAEjC,YyoBv+sFA,IAAIqqN,IACFC,kBAAiBA,EACjBmwF,UAASA,EAGXr6S,GAAOD,QAAUkqN,GzoBw/sFX,SAAUjqN,EAAQD,EAASH,GAEjC,Y0oB//sFA,IAAI06S,GAAU,EAAQ,KAElBC,EAAU,OACVC,EAAgB,WAEhB3vF,GACF8B,mBAAoB,sBAMpB8tF,oBAAqB,SAAUjhM,GAC7B,GAAIkzG,GAAW4tF,EAAQ9gM,EAGvB,OAAIghM,GAAcj2Q,KAAKi1E,GACdA,EAEAA,EAAO9tF,QAAQ6uR,EAAS,IAAM1vF,EAAoB8B,mBAAqB,KAAOD,EAAW,QASpGD,eAAgB,SAAUjzG,EAAQ/5F,GAChC,GAAIi7R,GAAmBj7R,EAAQskD,aAAa8mJ,EAAoB8B,mBAGhE,OAFA+tF,GAAmBA,GAAoBrzQ,SAASqzQ,EAAkB,IAC7CJ,EAAQ9gM,KACHkhM,GAI9B16S,GAAOD,QAAU8qN,G1oBghtFX,SAAU7qN,EAAQD,EAASH,GAEjC,Y2oB9itFA,SAAS06S,GAAQ70P,GAMf,IALA,GAAIn8B,GAAI,EACJ5C,EAAI,EACJzmB,EAAI,EACJC,EAAIulD,EAAK9kD,OACTmC,GAAQ,EAAJ5C,EACDD,EAAI6C,GAAG,CAEZ,IADA,GAAIU,GAAIy5B,KAAKgpD,IAAIhmF,EAAI,KAAM6C,GACpB7C,EAAIuD,EAAGvD,GAAK,EACjBymB,IAAM4C,GAAKm8B,EAAK8uG,WAAWt0J,KAAOqpB,GAAKm8B,EAAK8uG,WAAWt0J,EAAI,KAAOqpB,GAAKm8B,EAAK8uG,WAAWt0J,EAAI,KAAOqpB,GAAKm8B,EAAK8uG,WAAWt0J,EAAI,GAE7HqpB,IAAKqxR,EACLj0R,GAAKi0R,EAEP,KAAO16S,EAAIC,EAAGD,IACZymB,GAAK4C,GAAKm8B,EAAK8uG,WAAWt0J,EAI5B,OAFAqpB,IAAKqxR,EACLj0R,GAAKi0R,EACErxR,EAAI5C,GAAK,GA1BlB,GAAIi0R,GAAM,KA6BV36S,GAAOD,QAAUu6S,G3oBuktFX,SAAUt6S,EAAQD,EAASH,GAEjC,Y4oBvmtFAI,GAAOD,QAAU,U5oBwntFX,SAAUC,EAAQD,EAASH,GAEjC,Y6oBxmtFA,SAASq0K,GAAY2mI,GAQnB,GAA0B,MAAtBA,EACF,MAAO,KAET,IAAoC,IAAhCA,EAAmB92O,SACrB,MAAO82O,EAGT,IAAI73O,GAAOsiE,EAAiB9hI,IAAIq3S,EAChC,IAAI73O,EAEF,MADAA,GAAOiqJ,EAA8BjqJ,GAC9BA,EAAOkD,EAAsBN,oBAAoB5C,GAAQ,IAGzB,mBAA9B63O,GAAmB57R,OAC6FqmD,EAAe,MAEoCA,EAAe,KAAMvkE,OAAO6I,KAAKixS,IA1CjN,GAAIv1O,GAAiB,EAAQ,GAGzBY,GADoB,EAAQ,IACJ,EAAQ,KAChCo/D,EAAmB,EAAQ,KAE3B2nF,EAAgC,EAAQ,IAC5B,GAAQ,GACV,EAAQ,GAsCtBhtN,EAAOD,QAAUk0K,G7oB2otFX,SAAUj0K,EAAQD,EAASH,GAEjC,Y8oB3rtFA,IAAIiqN,GAAa,EAAQ,IAEzB7pN,GAAOD,QAAU8pN,EAAW8B,4B9oB4stFtB,SAAU3rN,EAAQD,EAASH,GAEjC,Y+oBjttFA,SAASgsB,MACT,QAASivR,MAHT,GAAIh3H,GAAuB,EAAQ,IAInCg3H,GAAuBC,kBAAoBlvR,EAE3C5rB,EAAOD,QAAU,WACf,QAASuwN,GAAK9xM,EAAO25E,EAAUkW,EAAep0F,EAAU0uQ,EAAcC,GACpE,GAAIA,IAAW/kG,EAAf,CAIA,GAAIhgL,GAAM,GAAIlC,OACZ,kLAKF,MADAkC,GAAIZ,KAAO,sBACLY,GAGR,QAASk3S,KACP,MAAOzqF,GAFTA,EAAK9wM,WAAa8wM,CAMlB,IAAI96G,IACF11D,MAAOwwK,EACP94I,KAAM84I,EACN3mM,KAAM2mM,EACN/4I,OAAQ+4I,EACR5sN,OAAQ4sN,EACRh5I,OAAQg5I,EACR65D,OAAQ75D,EAERj5L,IAAKi5L,EACL54I,QAASqjO,EACTt7R,QAAS6wM,EACT0qF,YAAa1qF,EACb85D,WAAY2wB,EACZnvQ,KAAM0kL,EACN+5D,SAAU0wB,EACVtjO,MAAOsjO,EACPpjO,UAAWojO,EACXrxR,MAAOqxR,EACPE,MAAOF,EAEP72H,eAAgB22H,EAChBC,kBAAmBlvR,EAKrB,OAFA4pF,GAAevyC,UAAYuyC,EAEpBA,I/oBmutFH,SAAUx1G,EAAQD,EAASH,GAEjC,YgpBxxtFAI,GAAOD,QAFoB,gDhpB2ytFrB,SAAUC,EAAQD,EAASH,GAEjC,YipBnwtFA,SAASs7S,GAAW/2O,GAChB,MAAIg3O,GAAQC,OAAOj3O,GACRk3O,EAEJC,EAAan3O,EAAoB,WAAMohE,EAUlD,QAASg2K,GAAqB11K,EAAiBC,EAAiB01K,GAC5D,GAA+B,gBAApB11K,GAA8B,CAGrC,GAAI21K,EAAiB,CACjB,GAAIC,GAAqBrsQ,EAAey2F,EACpC41K,IAAsBA,IAAuBD,GAC7CF,EAAqB11K,EAAiB61K,EAAoBF,GAIlE,GAAI7xS,GAAOylC,EAAoB02F,EAE3Bx4E,KACA3jD,EAAOA,EAAK6nB,OAAO87B,EAAsBw4E,IAM7C,KAAK,GAHD61K,GAAgBT,EAAWr1K,GAC3B+1K,EAAgBV,EAAWp1K,GAEtB7lI,EAAI,EAAGA,EAAI0J,EAAKhJ,SAAUV,EAAG,CAClC,GAAImE,GAAMuF,EAAK1J,EACf,MAAKylI,EAActhI,IAAUo3S,GAAaA,EAAUp3S,IAAWw3S,GAAiBA,EAAcx3S,IAAWu3S,GAAiBA,EAAcv3S,IAAO,CAC3I,GAAIorC,GAAaN,EAAyB42F,EAAiB1hI,EAC3D,KAEIhB,EAAeyiI,EAAiBzhI,EAAKorC,GACvC,MAAOruC,MAIjB,MAAO0kI,GAGX,MAAOA,GA7FX,GAAIs1K,GAAU,EAAQ,KAClB51K,GACA7lH,mBAAkBA,EAClBm8R,aAAYA,EACZl5R,cAAaA,EACbyjF,cAAaA,EACbnjF,aAAYA,EACZuiH,iBAAgBA,EAChBs2K,0BAAyBA,EACzBC,0BAAyBA,EACzBt2K,QAAOA,EACPnmH,WAAUA,EACVjd,MAAKA,GAGLqjI,GACAziI,MAAKA,EACLtC,QAAOA,EACPI,WAAUA,EACV+7B,QAAOA,EACPyzL,QAAOA,EACPj/M,WAAUA,EACVq0H,OAAMA,GAGNq2K,GACA,YACAh9R,QAAOA,EACPonF,cAAaA,EACbnjF,aAAYA,EACZ3D,WAAUA,GAGV+7R,GACA,YACAllG,SAAQA,EACR/vG,cAAaA,EACbnjF,aAAYA,EACZ3D,WAAUA,EACVjd,MAAKA,GAGLi5S,IACJA,GAAaH,EAAQc,YAAcD,CASnC,IAAI54S,GAAiBtC,OAAOsC,eACxBgsC,EAAsBtuC,OAAOsuC,oBAC7Bke,EAAwBxsD,OAAOwsD,sBAC/Bpe,EAA2BpuC,OAAOouC,yBAClCG,EAAiBvuC,OAAOuuC,eACxBosQ,EAAkB36S,OAAOC,SAuC7Bf,GAAOD,QAAUw7S,GjpB4ztFX,SAAUv7S,EAAQD,EAASH,GAEjC,YkpBz5tF8J,SAASulB,GAAEmE,GAAG,GAAG,gBAAkBA,IAAG,OAAOA,EAAE,CAAC,GAAI6N,GAAE7N,EAAEi9E,QAAS,QAAOpvE,GAAG,IAAKp0B,GAAE,OAAOumB,EAAEA,EAAEjnB,MAAQ,IAAKnC,GAAE,IAAK4C,GAAE,IAAK3B,GAAE,IAAKm0E,GAAE,IAAKviE,GAAE,IAAKpQ,GAAE,MAAO2mB,EAAE,SAAQ,OAAOA,EAAEA,GAAGA,EAAEi9E,UAAY,IAAKmmB,GAAE,IAAKlpH,GAAE,IAAKyuI,GAAE,MAAO3oH,EAAE,SAAQ,MAAO6N,IAAG,IAAKF,GAAE,IAAKC,GAAE,IAAKl0B,GAAE,MAAOm0B,KAAI,QAAS/R,GAAEkE,GAAG,MAAOnE,GAAEmE,KAAKxmB;;;;;;;;AAFvbhC,OAAOsC,eAAerD,EAAQ,cAAcsE,OAAMA,GAC/D,IAAIqiB,GAAE,kBAAoB+hC,SAAQA,OAAO09C,IAAIpjG,EAAE2jB,EAAE+hC,OAAO09C,IAAI,iBAAiB,MAAMnjG,EAAE0jB,EAAE+hC,OAAO09C,IAAI,gBAAgB,MAAMhlG,EAAEulB,EAAE+hC,OAAO09C,IAAI,kBAAkB,MAAMpzF,EAAE2T,EAAE+hC,OAAO09C,IAAI,qBAAqB,MAAM7wB,EAAE5uD,EAAE+hC,OAAO09C,IAAI,kBAAkB,MAAM8rC,EAAEvrH,EAAE+hC,OAAO09C,IAAI,kBAAkB,MAAMumB,EAAEhmG,EAAE+hC,OAAO09C,IAAI,iBAAiB,MAAMjmG,EAAEwmB,EAAE+hC,OAAO09C,IAAI,oBAAoB,MAAMrjG,EAAE4jB,EAAE+hC,OAAO09C,IAAI,yBAAyB,MAAM3iG,EAAEkjB,EAAE+hC,OAAO09C,IAAI,qBAAqB,MAAMxjG,EAAE+jB,EAAE+hC,OAAO09C,IAAI,kBAAkB,MAAMie,EAAE19F,EAAE+hC,OAAO09C,IAAI,uBACpf,MAAMjvE,EAAExQ,EAAE+hC,OAAO09C,IAAI,cAAc,MAAMlvE,EAAEvQ,EAAE+hC,OAAO09C,IAAI,cAAc,MAAM7uD,EAAE5wB,EAAE+hC,OAAO09C,IAAI,qBAAqB,MAAMi0C,EAAE1zH,EAAE+hC,OAAO09C,IAAI,mBAAmB,KAA8SpmG,GAAQm8S,OAAO/2R,EAAEplB,EAAQo8S,UAAUj8S,EACzeH,EAAQq8S,eAAet5S,EAAE/C,EAAQs8S,gBAAgB3vL,EAAE3sH,EAAQu8S,gBAAgBrqK,EAAElyI,EAAQw8S,QAAQx5S,EAAEhD,EAAQk8S,WAAWz4S,EAAEzD,EAAQy8S,SAASr7S,EAAEpB,EAAQ08S,KAAKxlR,EAAEl3B,EAAQ28S,KAAKxlR,EAAEn3B,EAAQ48S,OAAO35S,EAAEjD,EAAQ68S,SAAStnO,EAAEv1E,EAAQ88S,WAAW9pS,EAAEhT,EAAQ+8S,SAASn6S,EAC/O5C,EAAQ8iB,mBAAmB,SAASyG,GAAG,MAAM,gBAAkBA,IAAG,kBAAoBA,IAAGA,IAAInoB,GAAGmoB,IAAIxmB,GAAGwmB,IAAIgsD,GAAGhsD,IAAIvW,GAAGuW,IAAI3mB,GAAG2mB,IAAI86F,GAAG,gBAAkB96F,IAAG,OAAOA,IAAIA,EAAEi9E,WAAWtvE,GAAG3N,EAAEi9E,WAAWrvE,GAAG5N,EAAEi9E,WAAW0rC,GAAG3oH,EAAEi9E,WAAWmmB,GAAGpjG,EAAEi9E,WAAW/iG,GAAG8lB,EAAEi9E,WAAWjvD,GAAGhuB,EAAEi9E,WAAW6zC,IAAIr6I,EAAQg9S,YAAY,SAASzzR,GAAG,MAAOlE,GAAEkE,IAAInE,EAAEmE,KAAKppB,GAAGH,EAAQi9S,iBAAiB53R,EAAErlB,EAAQk9S,kBAAkB,SAAS3zR,GAAG,MAAOnE,GAAEmE,KAAKojG,GAAG3sH,EAAQm9S,kBAAkB,SAAS5zR,GAAG,MAAOnE,GAAEmE,KAAK2oH,GACjdlyI,EAAQo9S,UAAU,SAAS7zR,GAAG,MAAM,gBAAkBA,IAAG,OAAOA,GAAGA,EAAEi9E,WAAWxjG,GAAGhD,EAAQq9S,aAAa,SAAS9zR,GAAG,MAAOnE,GAAEmE,KAAK9lB,GAAGzD,EAAQs9S,WAAW,SAAS/zR,GAAG,MAAOnE,GAAEmE,KAAKnoB,GAAGpB,EAAQu9S,OAAO,SAASh0R,GAAG,MAAOnE,GAAEmE,KAAK2N,GAAGl3B,EAAQq7S,OAAO,SAAS9xR,GAAG,MAAOnE,GAAEmE,KAAK4N,GAAGn3B,EAAQw9S,SAAS,SAASj0R,GAAG,MAAOnE,GAAEmE,KAAKtmB,GAAGjD,EAAQy9S,WAAW,SAASl0R,GAAG,MAAOnE,GAAEmE,KAAKgsD,GAAGv1E,EAAQ09S,aAAa,SAASn0R,GAAG,MAAOnE,GAAEmE,KAAKvW,GAAGhT,EAAQ29S,WAAW,SAASp0R,GAAG,MAAOnE,GAAEmE,KAAK3mB,IlpB06tFpc,SAAU3C,EAAQiE,EAAqBrE,GAE7C,cAAa,SmpB17tFb,GACA,GAAIkxF,GAA8B,gBAAVl+E,IAAsBA,GAAUA,EAAO9R,SAAWA,QAAU8R,CAErE,SnpB67tFczS,KAAK8D,EAAqBrE,EAAoB,MAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,cAAa,SopBt8tFb,QAGIuuD,GAHJ,QAMEA,GADkB,mBAATtuC,MACFA,KACoB,mBAAXxf,QACTA,gBACSuS,EACTA,EAEA5S,CAKT,IAAIopB,GAAS,YAAS+kC,EACP,SppB08tFchuD,KAAK8D,EAAqBrE,EAAoB,IAAKA,EAAoB,KAAKI,KAInG,SAAUA,EAAQD,GqpBh+tFxBC,EAAOD,QAAU,SAAS49S,GACzB,IAAIA,EAAe/xJ,gBAAiB,CACnC,GAAI5rJ,GAASc,OAAOid,OAAO4/R,EAEvB39S,GAAOof,WAAUpf,EAAOof,aAC5Bte,OAAOsC,eAAepD,EAAQ,UAC7BsD,YAAWA,EACXC,IAAK,WACJ,MAAOvD,GAAOE,KAGhBY,OAAOsC,eAAepD,EAAQ,MAC7BsD,YAAWA,EACXC,IAAK,WACJ,MAAOvD,GAAOC,KAGhBa,OAAOsC,eAAepD,EAAQ,WAC7BsD,YAAWA,IAEZtD,EAAO4rJ,gBAAkB,EAE1B,MAAO5rJ,KrpBw+tFF,SAAUA,EAAQiE,EAAqBrE,GAE7C,YspBhguFe,SAASg+S,GAAyBzvP,GAChD,GAAI/kC,GACAq/B,EAAS0F,EAAK1F,MAalB,OAXsB,kBAAXA,GACNA,EAAO8+H,WACVn+J,EAASq/B,EAAO8+H,YAEhBn+J,EAASq/B,EAAO,cAChBA,EAAO8+H,WAAan+J,GAGrBA,EAAS,eAGHA,EAfR,OtpBuhuFM,SAAUppB,EAAQD,EAASH,GAEjC,YupBvguFA,IAAIisB,GAAU,YAyCd7rB,GAAOD,QAAU8rB,GvpB+huFX,SAAU7rB,EAAQD,EAASH,GAEjC,YwpBpjuFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASs/F,GAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GAEnN,QAAS49R,GAAoBtvM,GAC3B,OAAQA,IAAYA,EAAQ0jH,kBAI9B,QAAS6rF,GAAqBvvM,GAE5B,MAAOA,IAAWA,EAAQk/G,mBAjD5B1tN,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnP89R,EAAqB,EAAQ,KAE7BC,EAAsBxjO,EAAuBujO,GAE7C7rF,EAAc,EAAQ,KAEtBH,EAAev3I,EAAuB03I,GAEtC5wG,EAAa,EAAQ,IAErBF,EAAc5mC,EAAuB8mC,GAErC7mC,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCwjO,EAA2B,EAAQ,KAEnCC,EAA4B1jO,EAAuByjO,GAEnDv0H,EAAqB,EAAQ,IAE7By0H,EAAiB,EAAQ,KAEzBv/L,EAAkBpkC,EAAuB2jO,GAEzClhM,EAAc,EAAQ,IAEtBmhM,EAAe,EAAQ,KAEvBzjJ,EAAiB,EAAQ,IAkBzB+B,GAhBkBliF,EAAuBmgF,GAgBtBjgF,EAAQttB,QAAQ6V,WACnCt5C,EAAO+yI,EAAiB/yI,KACxBjmB,EAASg5J,EAAiBh5J,OAQ1Bs5G,EAAStiC,EAAQttB,QAAQ4oD,aAC3B/yF,YAAa,SAGb3D,WACEivF,QAAS7qG,EACT0b,SAAUsqK,EAAmBpiF,OAC7BA,OAAQoiF,EAAmBpiF,OAC3BtoF,OAAQ2K,EACRvnB,cAAeunB,EACfomG,QAASpmG,EACTyzP,SAAUzzP,EAGVuxI,iBAAkBvxI,EAClB6xI,eAAgB7xI,EAGhB00R,aAAc36S,GAGhB8hI,gBAAiB,WACf,OACExmH,OAAQ,SAAgBR,GACtB,MAAOk8D,GAAQttB,QAAQhrD,cAAcw8G,EAAgBxxD,QAAS5uC,MAIpEglQ,gBAAiB,WACf,OACEvpQ,SAAU,KACVqtF,OAAQ,KACR31E,OAAQ,KACR28E,WAAY,OAGhBgwM,YAAa,SAAqBv6S,GAChC,IAAI4a,KAAKH,MAAMuxG,QAIb,KAAMhsH,EAHN4a,MAAKH,MAAMuxG,QAAQ5vH,KAAKwe,KAAM5a,IAMlC0/Q,mBAAoB,WAClB,GAAI/kQ,GAAQC,KAERk4G,EAASl4G,KAAKH,MAMd+/R,GALmB1nL,EAAOqkC,iBACTrkC,EAAO2kC,eAID78I,KAAK6/R,uBAE5BjwM,EAAUgwM,EAAqBhwM,QAC/BwiH,EAAoBwtF,EAAqBxtF,kBACzCjmH,EAASyzM,EAAqBzzM,MAGlCnsF,MAAK8/R,UAAY1tF,EAAkBviH,OAAO,SAAUzqG,EAAOqf,GACrDrf,EACF2a,EAAM4/R,YAAYv6S,GAElB2a,EAAMoG,SAAS1B,EAAO1E,EAAMF,MAAM4+P,YAItCz+P,KAAK4vF,QAAUA,EACf5vF,KAAKmsF,OAASA,GAEhB0zM,oBAAqB,WACnB,GAAIH,GAAe1/R,KAAKH,MAAM6/R,YAE9B,IAAIA,EACF,MAAOA,EAGT,IAAI9vM,GAAU5vF,KAAKH,MAAM+vF,QACrBsuD,EAAUl+I,KAAKH,MACf8oF,EAASu1D,EAAQv1D,OACjBloF,EAAWy9I,EAAQz9I,QAGrB0+R,GAAqBvvM,OAA6Q6S,EAAYh0D,UAASA,GAErTywP,EAAoBtvM,KACtBA,EAAU5vF,KAAK+/R,sBAAsBnwM,GAGvC,IAAIwiH,MAAwBmtF,EAA0B9wP,SAASmhD,KAAa0O,EAAY1V,cAAcD,GAAUloF,IAC5G0rF,KAAaszM,EAAattF,oBAAoBviH,EAASwiH,EAG3D,QAASxiH,SAAQA,EAFQ6vM,EAAaptF,sBAAsBziH,EAASwiH,GAEnCA,kBAAmBA,EAAmBjmH,OAAQA,IAElF4zM,sBAAuB,SAA+BnwM,GACpD,GAAIowM,GAAUhgS,KAAKH,MACf08I,EAAmByjJ,EAAQzjJ,iBAC3BM,EAAiBmjJ,EAAQnjJ,eAGzBR,QAWJ,OAREA,GAFEzsD,EAEc,WACd,MAAOA,IAIOyvM,EAAoB5wP,WAG3B2kK,EAAa3kK,SAAS4tG,IAAiBE,iBAAkBA,EAAkBM,eAAgBA,KAKxGv3I,0BAA2B,SAAmC3C,KAK9D4C,qBAAsB,WAChBvF,KAAK8/R,WAAW9/R,KAAK8/R,aAE3Bz/R,OAAQ,WACN,GAAI03G,GAAS/3G,KAAKyE,MACdnJ,EAAWy8G,EAAOz8G,SAClBqtF,EAASovB,EAAOpvB,OAChB31E,EAAS+kG,EAAO/kG,OAChB28E,EAAaooB,EAAOpoB,WACpBswM,EAAUjgS,KAAKH,MACfpc,EAAgBw8S,EAAQx8S,cACxB4c,EAAS4/R,EAAQ5/R,OAEjBR,EAAQilF,EAAyBm7M,GAAU,gBAAiB,UAEhE,OAAgB,OAAZ3kS,EAAyB,MAI7BnZ,OAAO6I,KAAKqzG,EAAO19F,WAAWo/B,QAAQ,SAAUmrO,GAC9C,aAAcrrQ,GAAMqrQ,KAGf7qQ,EAAOe,KAAavB,GACzB+vF,QAAS5vF,KAAK4vF,QACdzD,OAAQnsF,KAAKmsF,OACb7wF,SAAUA,EACVqtF,OAAQA,EACR31E,OAAQA,EACR28E,WAAYA,EACZlsG,cAAeA,QAKrBrC,GAAQqtD,QAAU4vD,EAClBh9G,EAAOD,QAAUA,EAAiB,SxpBimuF5B,SAAUC,EAAQD,EAASH,GypBvzuFjC,QAASm5M,GAAUtuH,EAAQC,EAAUhwE,GACnC,GAAIwwB,GAAOxwB,KAGX,SAAIwwB,EAAK27F,QAAS3hH,EAAGulE,EAAQC,GAAYD,IAAWC,MAK/CD,IAAWC,GAA+B,gBAAXD,IAA2C,gBAAbC,GACzDx/C,EAAK27F,OAAS3hH,EAAGulE,EAAQC,GAAYD,GAAUC,EAYjD8sH,EAAS/sH,EAAQC,EAAUx/C,IAGpC,QAAS2zQ,GAAkBx6S,GACzB,MAAiB,QAAVA,YAAkBA,EAG3B,QAASi9J,GAASn8I,GAChB,SAAKA,GAAkB,gBAANA,IAAsC,gBAAbA,GAAExkB,QAGtB,kBAAXwkB,GAAE46I,MAA0C,kBAAZ56I,GAAE3S,OAGzC2S,EAAExkB,OAAS,GAAqB,gBAATwkB,GAAE,IAM/B,QAASqyL,GAASluL,EAAG5C,EAAGwkB,GAEtB,GAAIjrC,GAAGmE,CACP,UAAWklB,UAAa5C,GAAK,OAAM,CACnC,IAAIm4R,EAAkBv1R,IAAMu1R,EAAkBn4R,GAAM,OAAM,CAG1D,IAAI4C,EAAEvoB,YAAc2lB,EAAE3lB,UAAa,OAAM,CAEzC,IAAIorJ,EAAY7iI,KAAO6iI,EAAYzlI,GAAM,OAAM,CAE/C,IAAIo4R,GAAWC,EAAQz1R,GACnB01R,EAAWD,EAAQr4R,EACvB,IAAIo4R,IAAaE,EAAY,OAAM,CACnC,IAAIF,GAAYE,EACd,MAAO11R,GAAEpJ,SAAWwG,EAAExG,QAAU4iB,EAAMxZ,KAAOwZ,EAAMpc,EAGrD,IAAI8/G,EAAOl9G,IAAMk9G,EAAO9/G,GACtB,MAAOorG,GAAQ3xH,KAAKmpB,KAAOwoG,EAAQ3xH,KAAKumB,EAG1C,IAAIu4R,GAAY39I,EAASh4I,GACrB41R,EAAY59I,EAAS56I,EACzB,IAAIu4R,IAAcC,EAAa,OAAM,CACrC,IAAID,GAAaC,EAAW,CAC1B,GAAI51R,EAAE3oB,SAAW+lB,EAAE/lB,OAAU,OAAM,CACnC,KAAKV,EAAI,EAAGA,EAAIqpB,EAAE3oB,OAAQV,IACxB,GAAIqpB,EAAErpB,KAAOymB,EAAEzmB,GAAM,OAAM,CAE7B,UAGF,SAAWqpB,UAAa5C,GAAK,OAAM,CAEnC,KACE,GAAImxL,GAAK5lL,EAAW3I,GAChBwuL,EAAK7lL,EAAWvL,GACpB,MAAOvlB,GACP,OAAM,EAGR,GAAI02M,EAAGl3M,SAAWm3M,EAAGn3M,OAAU,OAAM,CAMrC,KAHAk3M,EAAGnvI,OACHovI,EAAGpvI,OAEEzoE,EAAI43M,EAAGl3M,OAAS,EAAGV,GAAK,EAAGA,IAC9B,GAAI43M,EAAG53M,IAAM63M,EAAG73M,GAAM,OAAM,CAG9B,KAAKA,EAAI43M,EAAGl3M,OAAS,EAAGV,GAAK,EAAGA,IAE9B,GADAmE,EAAMyzM,EAAG53M,IACJ84M,EAAUzvL,EAAEllB,GAAMsiB,EAAEtiB,GAAM8mC,GAAS,OAAM,CAGhD,UA5GF,GAAIjZ,GAAa,EAAQ,KACrBk6H,EAAc,EAAQ,KACtBjnI,EAAK,EAAQ,KACb65R,EAAU,EAAQ,KAClBj8Q,EAAQ,EAAQ,KAChB0jG,EAAS,EAAQ,KAEjB1U,EAAUjjE,KAAK9tD,UAAU+wH,OAwG7B9xH,GAAOD,QAAUg5M,GzpBu0uFX,SAAU/4M,EAAQD,EAASH,GAEjC,Y0pBt7uFA,IAAIwwN,EACJ,KAAKtvN,OAAO6I,KAAM,CAEjB,GAAI+lC,GAAM5uC,OAAOC,UAAUC,eACvB8pL,EAAQhqL,OAAOC,UAAU67B,SACzBszL,EAAS,EAAQ,KACjBivF,EAAer+S,OAAOC,UAAUysD,qBAChC4xP,GAAkBD,EAAah/S,MAAOy8B,SAAU,MAAQ,YACxDyiR,EAAkBF,EAAah/S,KAAK,aAAgB,aACpDm/S,GACH,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAEGC,EAA6B,SAAUp8S,GAC1C,GAAIg5P,GAAOh5P,EAAE6a,WACb,OAAOm+O,IAAQA,EAAKp7P,YAAcoC,GAE/Bq8S,GACHC,mBAAkBA,EAClBC,UAASA,EACTC,WAAUA,EACVC,QAAOA,EACPC,eAAcA,EACdC,SAAQA,EACRC,cAAaA,EACbC,aAAYA,EACZC,wBAAuBA,EACvBC,uBAAsBA,EACtBC,cAAaA,EACbC,aAAYA,EACZC,cAAaA,EACbC,cAAaA,EACbC,SAAQA,EACRC,aAAYA,EACZC,YAAWA,EACXC,UAASA,EACTC,UAASA,EACTC,OAAMA,EACNC,kBAAiBA,EACjBC,oBAAmBA,EACnBC,SAAQA,GAELC,EAA4B,WAE/B,GAAsB,mBAAX3gT,QAA0B,OAAM,CAC3C,KAAK,GAAIqsH,KAAKrsH,QACb,IACC,IAAKm/S,EAAa,IAAM9yL,IAAMh9E,EAAIvvC,KAAKE,OAAQqsH,IAAoB,OAAdrsH,OAAOqsH,IAAoC,gBAAdrsH,QAAOqsH,GACxF,IACC6yL,EAA2Bl/S,OAAOqsH,IACjC,MAAOvrH,GACR,OAAM,GAGP,MAAOA,GACR,OAAM,EAGR,OAAM,KAEH8/S,EAAuC,SAAU99S,GAEpD,GAAsB,mBAAX9C,UAA2B2gT,EACrC,MAAOzB,GAA2Bp8S,EAEnC,KACC,MAAOo8S,GAA2Bp8S,GACjC,MAAOhC,GACR,OAAM,GAIRivN,GAAW,SAAc1sN,GACxB,GAAI+8B,GAAsB,OAAX/8B,GAAqC,gBAAXA,GACrCi2F,EAAoC,sBAAvBmxF,EAAM3qL,KAAKuD,GACxByoJ,EAAc+jE,EAAOxsN,GACrB+2K,EAAWh6I,GAAmC,oBAAvBqqJ,EAAM3qL,KAAKuD,GAClCw9S,IAEJ,KAAKzgR,IAAak5D,IAAewyD,EAChC,KAAM,IAAItvH,WAAU,qCAGrB,IAAIskR,GAAY9B,GAAmB1lN,CACnC,IAAI8gF,GAAY/2K,EAAO/C,OAAS,IAAM+uC,EAAIvvC,KAAKuD,EAAQ,GACtD,IAAK,GAAIzD,GAAI,EAAGA,EAAIyD,EAAO/C,SAAUV,EACpCihT,EAAQrgT,KAAKulC,OAAOnmC,GAItB,IAAIksJ,GAAezoJ,EAAO/C,OAAS,EAClC,IAAK,GAAIggC,GAAI,EAAGA,EAAIj9B,EAAO/C,SAAUggC,EACpCugR,EAAQrgT,KAAKulC,OAAOzF,QAGrB,KAAK,GAAI19B,KAAQS,GACVy9S,GAAsB,cAATl+S,IAAyBysC,EAAIvvC,KAAKuD,EAAQT,IAC5Di+S,EAAQrgT,KAAKulC,OAAOnjC,GAKvB,IAAIm8S,EAGH,IAAK,GAFDgC,GAAkBH,EAAqCv9S,GAElDgpH,EAAI,EAAGA,EAAI4yL,EAAU3+S,SAAU+rH,EACjC00L,GAAoC,gBAAjB9B,EAAU5yL,KAAyBh9E,EAAIvvC,KAAKuD,EAAQ47S,EAAU5yL,KACtFw0L,EAAQrgT,KAAKy+S,EAAU5yL,GAI1B,OAAOw0L,IAGTlhT,EAAOD,QAAUqwN,G1pB87uFX,SAAUpwN,EAAQD,EAASH,GAEjC,Y2pBvjvFA,IAAIyhT,GAAmC,kBAAX54P,SAAuD,gBAAvBA,QAAOkoD,YAC/Dm6E,EAAQhqL,OAAOC,UAAU67B,SAEzB0kR,EAAsB,SAAqBj9S,GAC9C,QAAIg9S,GAAkBh9S,GAA0B,gBAAVA,IAAsBokD,OAAOkoD,cAAetsG,KAGrD,uBAAtBymL,EAAM3qL,KAAKkE,IAGfk9S,EAAoB,SAAqBl9S,GAC5C,QAAIi9S,EAAoBj9S,IAGP,OAAVA,GACW,gBAAVA,IACiB,gBAAjBA,GAAM1D,QACb0D,EAAM1D,QAAU,GACM,mBAAtBmqL,EAAM3qL,KAAKkE,IACkB,sBAA7BymL,EAAM3qL,KAAKkE,EAAMksN,SAGfixF,EAA6B,WAChC,MAAOF,GAAoBhwS,aAG5BgwS,GAAoBC,kBAAoBA,EAExCvhT,EAAOD,QAAUyhT,EAA4BF,EAAsBC,G3pB+jvF7D,SAAUvhT,EAAQD,EAASH,GAEjC,Y4pB3lvFA,IAAIygK,GAAc,SAAUh8J,GAC3B,MAAOA,KAAUA,EAGlBrE,GAAOD,QAAU,SAAYupB,EAAG5C,GAC/B,MAAU,KAAN4C,GAAiB,IAAN5C,EACP,EAAI4C,GAAM,EAAI5C,EACX4C,IAAM5C,MAEN25I,EAAY/2I,KAAM+2I,EAAY35I,M5pB0mvFpC,SAAU1mB,EAAQD,EAASH,GAEjC,Y6pBvnvFA,IAAI8vC,GAAM,EAAQ,KACd+xQ,EAAYlkQ,OAAOx8C,UAAUmxG,KAC7B0+G,EAAO9vN,OAAOouC,yBAEdwyQ,EAAmB,SAAsBr9S,GAC5C,IACC,GAAI88B,GAAY98B,EAAM88B,SAItB,OAHA98B,GAAM88B,UAAY,EAElBsgR,EAAUthT,KAAKkE,MAEd,MAAOlD,GACR,OAAM,EACL,QACDkD,EAAM88B,UAAYA,IAGhB2pJ,EAAQhqL,OAAOC,UAAU67B,SAEzBykR,EAAmC,kBAAX54P,SAAuD,gBAAvBA,QAAOkoD,WAEnE3wG,GAAOD,QAAU,SAAiBsE,GACjC,IAAKA,GAA0B,gBAAVA,GACpB,OAAM,CAEP,KAAKg9S,EACJ,MARe,oBAQRv2H,EAAM3qL,KAAKkE,EAGnB,IAAImrC,GAAaohL,EAAKvsN,EAAO,YAE7B,UAD+BmrC,IAAcE,EAAIF,EAAY,WAKtDkyQ,EAAiBr9S,K7pBgovFnB,SAAUrE,EAAQD,EAASH,GAEjC,Y8pBrqvFA,IAAI6jB,GAAO,EAAQ,IAEnBzjB,GAAOD,QAAU0jB,EAAKtjB,KAAKkoD,SAASloD,KAAMW,OAAOC,UAAUC,iB9pB6qvFrD,SAAUhB,EAAQD,EAASH,GAEjC,Y+pBjrvFA,IAAIshL,GAAiB,EAAQ,IAE7BlhL,GAAOD,QAAUsoD,SAAStnD,UAAU0iB,MAAQy9J,G/pByrvFtC,SAAUlhL,EAAQD,EAASH,GAEjC,YgqB3rvFA,IACI4S,GAAQG,MAAM5R,UAAUyR,MACxBs4K,EAAQhqL,OAAOC,UAAU67B,QAG7B58B,GAAOD,QAAU,SAAcghJ,GAC3B,GAAI9gI,GAAStB,IACb,IAAsB,kBAAXsB,IAJA,sBAIyB6qK,EAAM3qL,KAAK8f,GAC3C,KAAM,IAAI4c,WARE,kDAQwB5c,EAyBxC,KAAK,GArBD0hS,GAFAn2R,EAAOhZ,EAAMrS,KAAKmR,UAAW,GAG7BswS,EAAS,WACT,GAAIjjS,eAAgBgjS,GAAO,CACvB,GAAIv4R,GAASnJ,EAAO5O,MAChBsN,KACA6M,EAAKgG,OAAOhf,EAAMrS,KAAKmR,YAE3B,OAAIxQ,QAAOsoB,KAAYA,EACZA,EAEJzK,KAEP,MAAOsB,GAAO5O,MACV0vI,EACAv1H,EAAKgG,OAAOhf,EAAMrS,KAAKmR,cAK/BuwS,EAAc5kR,KAAKC,IAAI,EAAGjd,EAAOtf,OAAS6qB,EAAK7qB,QAC/CmhT,KACK7hT,EAAI,EAAGA,EAAI4hT,EAAa5hT,IAC7B6hT,EAAUjhT,KAAK,IAAMZ,EAKzB,IAFA0hT,EAAQt5P,SAAS,SAAU,oBAAsBy5P,EAAUlxR,KAAK,KAAO,6CAA6CgxR,GAEhH3hS,EAAOlf,UAAW,CAClB,GAAIghT,GAAQ,YACZA,GAAMhhT,UAAYkf,EAAOlf,UACzB4gT,EAAM5gT,UAAY,GAAIghT,GACtBA,EAAMhhT,UAAY,KAGtB,MAAO4gT,KhqBssvFL,SAAU3hT,EAAQD,EAASH,GAEjC,YiqBxvvFA,IAAIoiT,GAAS,EAAQ,KAEjB9gI,EAAiB,EAAQ,KACzB+gI,EAAc,EAAQ,KACtB3xF,EAAO,EAAQ,KAEf4xF,EAAa75P,SAASloD,KAAKsjB,KAAKy9J,EAEpC8gI,GAAOE,GACND,YAAaA,EACb/gI,eAAgBA,EAChBovC,KAAMA,IAGPtwN,EAAOD,QAAUmiT,GjqBgwvFX,SAAUliT,EAAQD,EAASH,GAEjC,YkqBhxvFA,IAAIorL,GAAsB,EAAQ,KAAqBA,oBACnDi3H,EAAc,EAAQ,KACtBrxF,EAAO9vN,OAAOouC,yBACd9rC,EAAiBtC,OAAOsC,eACxBotN,EAAU3zL,UACVi/N,EAAWh7P,OAAOuuC,eAClBisB,EAAQ,GAEZt7D,GAAOD,QAAU,WAChB,IAAKirL,IAAwB8wE,EAC5B,KAAM,IAAItrC,GAAQ,4FAEnB,IAAI2xF,GAAWF,IACXtyQ,EAAQmsN,EAASxgM,GACjB9rB,EAAaohL,EAAKjhL,EAAO,QAQ7B,OAPKH,IAAcA,EAAWjsC,MAAQ4+S,GACrC/+S,EAAeusC,EAAO,SACrBtsC,cAAaA,EACbC,YAAWA,EACXC,IAAK4+S,IAGAA,IlqByxvFF,SAAUniT,EAAQD,EAASH,GAEjC,YmqBjzvFA,IAAIu1I,GAAStmF,KAAK9tD,UAAUo0I,OACxBitK,EAAgB,SAAuB/9S,GAC1C,IAEC,MADA8wI,GAAOh1I,KAAKkE,MAEX,MAAOlD,GACR,OAAM,IAIJ2pL,EAAQhqL,OAAOC,UAAU67B,SAEzBykR,EAAmC,kBAAX54P,SAAuD,gBAAvBA,QAAOkoD,WAEnE3wG,GAAOD,QAAU,SAAsBsE,GACtC,MAAqB,gBAAVA,IAAgC,OAAVA,IAC1Bg9S,EAAiBe,EAAc/9S,GALvB,kBAKgCymL,EAAM3qL,KAAKkE,MnqB0zvFrD,SAAUrE,EAAQD,EAASH,GAEjC,YoqBx0vFA,SAASkuL,GAAUC,EAAOC,EAAM54I,GAO9B,QAAS3B,KAEP,GADAw6I,KACIC,EAGF,YADAC,KAAc38J,OAAO6wR,EAAOliT,KAAKmR,YAInC8jC,GAAS/jC,MAAMsN,KAAMrN,WAGvB,QAASkP,KACP,IAAIytK,IAIJG,MACIF,GAAJ,CAOA,IAFAA,MAEQD,GAAUI,EAAcN,GAASK,GACvCA,KACAJ,EAAK7tL,KAAKwe,KAAM0vK,IAAe7tK,EAAMizB,EAKvC,IAFAy6I,KAEID,EAGF,WADA74I,GAAS/jC,MAAMsN,KAAMwvK,EAInBE,IAAeN,GAASK,IAC1BH,KACA74I,MA7CJ,GAAIi5I,GAAc,EACdJ,KACAC,KACAE,KACAD,QA6CJ3tK,KAtDFzgB,EAAQ0D,aACR,IAAI4+S,GAAS1vS,MAAM5R,UAAUyR,KAC7BzS,GAAQ+tL,UAAYA,GpqBw4vFd,SAAU9tL,EAAQD,EAASH,GAEjC,YqqB93vFA,SAASm8J,KACP,GAAI9hJ,GAAW3I,UAAU3Q,QAAU,YAAK2Q,UAAU,GAAmB,IAAMA,UAAU,GACjF6sH,EAAS7sH,UAAU3Q,QAAU,YAAK2Q,UAAU,GAAmBy8M,EAASj/G,IAAMx9F,UAAU,GACxFlN,EAAMkN,UAAU3Q,QAAU,YAAK2Q,UAAU,GAAmB,KAAOA,UAAU,GAE7EgxS,EAAahxS,UAAU3Q,QAAU,YAAK2Q,UAAU,GAAmB,KAAOA,UAAU,EAkBxF,OAhBwB,gBAAb2I,KAAuBA,EAAWwhJ,EAAWxsD,UAAUh1F,IAE5C,gBAAXkkH,KAGTlkH,EAAW8F,KAAa9F,GAAYmJ,MAAO+6G,IAE3CA,EAAS/5H,GAAO2pN,EAASj/G,IACzB1qG,EAAMk+S,IASNpnS,SANajB,EAASiB,UAAY,IAOlCuB,OANWxC,EAASwC,QAAU,GAO9BN,KANSlC,EAASkC,MAAQ,GAO1BiH,MANUnJ,EAASmJ,OAAS,KAO5B+6G,OAAQA,EACR/5H,IAAKA,GA3CTrE,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAInP41D,EAAW,EAAQ,IAInBk4I,GANJ,SAAgC5pN,GAAcA,GAAOA,EAAIV,YAIlBoyE,GAExB,EAAQ,KAEnB4lF,EAAa,EAAQ,GAmCzB17J,GAAiB,QAAIg8J,EACrB/7J,EAAOD,QAAUA,EAAiB,SrqBm5vF5B,SAAUC,EAAQD,EAASH,GAEjC,YsqBt8vFA,IAAI2iT,GAAkB,EAAQ,IAE9BxiT,GAAQyiT,QAAU,SAAU77Q,GAC3B,MAAOA,GAAItqB,MAAM,KAAK,IAAM,IAG7Btc,EAAQm2B,MAAQ,SAAUyQ,GACzB,MAAmB,gBAARA,OAIXA,EAAMA,EAAIu7D,OAAOx2E,QAAQ,YAAa,IAEjCib,EAIEA,EAAItqB,MAAM,KAAKzS,OAAO,SAAU2tB,EAAK21K,GAC3C,GAAI5vD,GAAQ4vD,EAAMxhL,QAAQ,MAAO,KAAKrP,MAAM,KAGxCjY,EAAMk5I,EAAMr8I,QACZq1C,EAAMgnG,EAAM38I,OAAS,EAAI28I,EAAM1sH,KAAK,WAgBxC,OAdAxsB,GAAMu8G,mBAAmBv8G,GAIzBkyC,WAAMA,EAAoB,KAAOqqE,mBAAmBrqE,GAE/C/e,EAAIv2B,eAAeoD,GAEbuO,MAAM+c,QAAQ6H,EAAInzB,IAC5BmzB,EAAInzB,GAAKvD,KAAKy1C,GAEd/e,EAAInzB,IAAQmzB,EAAInzB,GAAMkyC,GAJtB/e,EAAInzB,GAAOkyC,EAOL/e,YAITx3B,EAAQgjB,UAAY,SAAU5e,GAC7B,MAAOA,GAAMrD,OAAO6I,KAAKxF,GAAKukE,OAAO/3C,IAAI,SAAUvsB,GAClD,GAAIkyC,GAAMnyC,EAAIC,EAEd,iBAAIkyC,EACI,GAGI,OAARA,EACIlyC,EAGJuO,MAAM+c,QAAQ4mB,GACVA,EAAI9jC,QAAQk2D,OAAO/3C,IAAI,SAAU8xR,GACvC,MAAOF,GAAgBn+S,GAAO,IAAMm+S,EAAgBE,KAClD7xR,KAAK,KAGF2xR,EAAgBn+S,GAAO,IAAMm+S,EAAgBjsQ,KAClD9hB,OAAO,SAAUrP,GACnB,MAAOA,GAAExkB,OAAS,IAChBiwB,KAAK,KAAO,KtqB88vFV,SAAU5wB,EAAQD,EAASH,GAEjC,YuqB/gwFAI,GAAOD,QAAU,SAAU4mC,GAC1B,MAAOza,oBAAmBya,GAAKjb,QAAQ,WAAY,SAAU3oB,GAC5D,MAAO,IAAMA,EAAEwxJ,WAAW,GAAG33H,SAAS,IAAIy2B,kBvqBwhwFtC,SAAUrzD,EAAQD,EAASH,GAEjC,YwqBvhwFA,SAAS8iT,GAAmBx7M,EAAOi8L,EAAW56Q,GAC5C,QAAK2+E,EAAM9sF,SAEU+iG,EAAcyD,eAAe1Z,EAAM9sF,MAEtCua,KAAK,SAAUmsF,GAC/B,MAAOqiL,GAAUxxQ,OAAOmvF,KAAev4F,EAAUoJ,OAAOmvF,KAiB5D,QAAS6hM,GAAqBxf,EAAW56Q,GACvC,GAAIq6R,GAAazf,GAAaA,EAAU77L,OACpCu7M,EAAat6R,EAAU++E,OAEvB6kF,SACAC,SACAC,QAiCJ,OAhCIu2H,GACF,WACE,GAAIE,KACJ32H,GAAcy2H,EAAWpuR,OAAO,SAAU0yE,GACxC,GAAI47M,EACF,OAAM,CAEN,IAAIC,IAA2C,IAA/BF,EAAWxoS,QAAQ6sF,IAAiBw7M,EAAmBx7M,EAAOi8L,EAAW56Q,EAEzF,OADIw6R,KAAWD,MACRC,IAKX52H,EAAYlwG,UAEZowG,KACAD,KAEAy2H,EAAWnkQ,QAAQ,SAAUwoD,GAC3B,GAAIq1I,IAAuC,IAA/BqmE,EAAWvoS,QAAQ6sF,GAC3B87M,GAAgD,IAAhC72H,EAAY9xK,QAAQ6sF,EAEpCq1I,IAASymE,EAAe32H,EAAYxrL,KAAKqmG,GAAYklF,EAAavrL,KAAKqmG,SAI/EilF,KACAC,KACAC,EAAcw2H,IAId12H,YAAaA,EACbC,aAAcA,EACdC,YAAaA,GArEjBtsL,EAAQ0D,aAER,IAAI05G,GAAgB,EAAQ,GAuE5Bp9G,GAAQqtD,QAAUu1P,EAClB3iT,EAAOD,QAAUA,EAAiB,SxqBkiwF5B,SAAUC,EAAQD,EAASH,GAEjC,YyqBjmwFA,SAASqjT,GAAqBtnJ,EAAMz0D,EAAOg8M,GACzC,MAAO,YACL,IAAK,GAAIhzR,GAAO5e,UAAU3Q,OAAQ6qB,EAAO7Y,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3E,EAAK2E,GAAQ7e,UAAU6e,EAGzBwrI,GAAKtqJ,MAAM61F,EAAO17E,GAEdmwI,EAAKh7J,OAASuiT,IAAa,EACd13R,EAAKA,EAAK7qB,OAAS,OAQxC,QAASwiT,GAAc77M,GACrB,MAAOA,GAAO19F,OAAO,SAAUmjL,EAAO7lF,GAGpC,MAFIA,GAAMwqH,SAAS3kC,EAAMlsL,KAAKoiT,EAAqB/7M,EAAMwqH,QAASxqH,EAAO,IAElE6lF,OAIX,QAASq2H,GAAe97M,GACtB,MAAOA,GAAO19F,OAAO,SAAUmjL,EAAO7lF,GAEpC,MADIA,GAAMu8E,UAAUsJ,EAAMlsL,KAAKoiT,EAAqB/7M,EAAMu8E,SAAUv8E,EAAO,IACpE6lF,OAIX,QAASs2H,GAAmB1iT,EAAQ07P,EAAMjnN,GAOxC,QAAS1pB,GAAQzR,EAAUqpS,EAAoBC,GAC7C,GAAID,EAQF,YANAx3H,GACE5wK,SAAUooS,EACVppS,MAAOqpS,EACPngS,MAAOnJ,GAMX6xK,GAAe7xK,EAlBjB,IAAKtZ,EAEH,WADAy0C,IAIF,IAAI02I,WAAe,EAgBfyjC,EAAYzhC,WAAWntL,EAAQ,SAAU0vB,EAAO7P,EAAMizB,GACxD4oN,EAAKhsO,EAAO3E,EAAS,SAAU3nB,GACzBA,GAAS+nL,EACXr4I,EAAK1vC,EAAO+nL,GAEZtrK,OAGH40B,GAaL,QAASs3I,GAAcplF,EAAQ/+E,EAAW6sB,GACxC,GAAI23I,GAAQo2H,EAAc77M,EAC1B,OAAO+7M,GAAmBt2H,EAAMpsL,OAAQ,SAAU0vB,EAAO3E,EAASlL,GAChEusK,EAAM18J,GAAO9H,EAAWmD,EAASlL,IAChC40B,GAaL,QAASq3I,GAAenlF,EAAQlkF,EAAOmF,EAAW6sB,GAChD,GAAI23I,GAAQq2H,EAAe97M,EAC3B,OAAO+7M,GAAmBt2H,EAAMpsL,OAAQ,SAAU0vB,EAAO3E,EAASlL,GAChEusK,EAAM18J,GAAOjN,EAAOmF,EAAWmD,EAASlL,IACvC40B,GAML,QAASm3I,GAAcjlF,EAAQ67L,GAC7B,IAAK,GAAIljS,GAAI,EAAGuxC,EAAM81D,EAAO3mG,OAAQV,EAAIuxC,IAAOvxC,EAC1CqnG,EAAOrnG,GAAGujT,SAASl8M,EAAOrnG,GAAGujT,QAAQrjT,KAAKmnG,EAAOrnG,GAAIkjS,GArH7DpjS,EAAQ0D,cACR1D,EAAQ2sL,cAAgBA,EACxB3sL,EAAQ0sL,eAAiBA,EACzB1sL,EAAQwsL,cAAgBA,CAExB,IAAIgjC,GAAc,EAAQ,KAEtB50D,EAAiB,EAAQ,KAI7B,SAAgCx2J,GAAcA,GAAOA,EAAIV,YAFZk3J,IzqBmuwFvC,SAAU36J,EAAQD,EAASH,GAEjC,Y0qBtuwFA,SAASm5M,GAAUzvL,EAAG5C,GACpB,GAAI4C,GAAK5C,EAAG,OAAM,CAElB,IAAS,MAAL4C,GAAkB,MAAL5C,EAAW,OAAM,CAElC,IAAI/T,MAAM+c,QAAQpG,GAChB,MAAO3W,OAAM+c,QAAQhJ,IAAM4C,EAAE3oB,SAAW+lB,EAAE/lB,QAAU2oB,EAAE8G,MAAM,SAAU2E,EAAM1E,GAC1E,MAAO0oL,GAAUhkL,EAAMrO,EAAE2J,KAI7B,IAA8D,qBAAlD/G,EAAoB,YAAc4rD,EAAQ5rD,IAAkB,CACtE,IAAK,GAAI3mB,KAAK2mB,GACZ,GAAKxoB,OAAOC,UAAUC,eAAeb,KAAKmpB,EAAG3mB,GAI7C,YAAI2mB,EAAE3mB,IACJ,YAAI+jB,EAAE/jB,GACJ,OAAM,MAEH,KAAK7B,OAAOC,UAAUC,eAAeb,KAAKumB,EAAG/jB,GAClD,OAAM,CACD,KAAKo2M,EAAUzvL,EAAE3mB,GAAI+jB,EAAE/jB,IAC5B,OAAM,EAIV,OAAM,EAGR,MAAOyjC,QAAO9c,KAAO8c,OAAO1f,GAQ9B,QAAS+8R,GAAavoS,EAAUwoS,GAiB9B,MAdkC,MAA9BA,EAAgB39Q,OAAO,KACzB29Q,EAAkB,IAAMA,GAMmB,MAAzCxoS,EAAS6qB,OAAO7qB,EAASva,OAAS,KACpCua,GAAY,KAE6C,MAAvDwoS,EAAgB39Q,OAAO29Q,EAAgB/iT,OAAS,KAClD+iT,GAAmB,KAGdA,IAAoBxoS,EAM7B,QAASyoS,GAAczoS,EAAUosF,EAAQ31E,GAMvC,IAAK,GALD8uF,GAAoBvlG,EACpB+kG,KACAS,KAGKzgH,EAAI,EAAGuxC,EAAM81D,EAAO3mG,OAAQV,EAAIuxC,IAAOvxC,EAAG,CACjD,GAAIinG,GAAQI,EAAOrnG,GACf8/G,EAAU7Y,EAAM9sF,MAAQ,EAQ5B,IAN0B,MAAtB2lG,EAAQh6E,OAAO,KACjB06E,EAAoBvlG,EACpB+kG,KACAS,MAGwB,OAAtBD,GAA8BV,EAAS,CACzC,GAAI8uB,MAAc1xB,EAAcmD,cAAcP,EAASU,EASvD,IARIouB,GACFpuB,EAAoBouB,EAAQpuB,kBAC5BR,KAAgBzuF,OAAOyuF,EAAY4uB,EAAQ5uB,YAC3CS,KAAiBlvF,OAAOkvF,EAAamuB,EAAQnuB,cAE7CD,EAAoB,KAGI,KAAtBA,EAIF,MAAOR,GAAW7vF,MAAM,SAAU0wF,EAAWzwF,GAC3C,MAAO+V,QAAOs6E,EAAYrwF,MAAY+V,OAAOzU,EAAOmvF,OAM5D,OAAM,EAOR,QAAS8iM,GAAc1pS,EAAO2pS,GAC5B,MAAmB,OAAfA,EAAqC,MAAT3pS,EAEnB,MAATA,GAEG6+L,EAAU7+L,EAAO2pS,GAO1B,QAASnvR,GAAS3V,EAAMysK,EAAWkpF,EAAiBptK,EAAQ31E,GAC1D,GAAIzW,GAAW6D,EAAK7D,SAChBhB,EAAQ6E,EAAK7E,KAEjB,OAAuB,OAAnBw6P,IAKuB,MAAvBx5P,EAAS6qB,OAAO,KAClB7qB,EAAW,IAAMA,MAGduoS,EAAavoS,EAAUw5P,EAAgBx5P,YAGtCswK,GAAcm4H,EAAczoS,EAAUosF,EAAQ31E,KAK7CiyR,EAAc1pS,EAAOw6P,EAAgBx6P,QAnJ9Cna,EAAQ0D,aAER,IAAIyxE,GAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,OAAS,eAAkBtkD,GAE1OpE,GAAQqtD,QAAU14B,CAElB,IAAIyoF,GAAgB,EAAQ,GA+I5Bn9G,GAAOD,QAAUA,EAAiB,S1qBqvwF5B,SAAUC,EAAQD,EAASH,GAEjC,Y2qBl4wFA,SAASkkT,GAAsBv7R,EAAW2+E,EAAO9xD,GAC/C,GAAI8xD,EAAM/iC,WAAa+iC,EAAMoH,WAE3B,WADAl5D,GAAS,KAAM8xD,EAAM/iC,WAAa+iC,EAAMoH,WAI1C,IAAIy1M,GAAe78M,EAAM68M,cAAgB78M,EAAM88M,aAC/C,KAAKD,EAEH,WADA3uQ,IAIF,IAAIn7B,GAAWsO,EAAUtO,SAErBgqS,KAA4BC,EAAwB92P,SAAS7kC,EAAWtO,EAE5E8pS,GAAa5jT,KAAK+mG,EAAO+8M,EAAuB7uQ,GAUlD,QAAS4uQ,GAAcz7R,EAAW6sB,MAC5Bm6K,EAAYjhC,UAAU/lK,EAAU++E,OAAQ,SAAUJ,EAAO72E,EAAO+kB,GAClE0uQ,EAAsBv7R,EAAW2+E,EAAO9xD,IACvCA,GAvCLr1C,EAAQ0D,aAER,IAAI8rN,GAAc,EAAQ,KAEtB40F,EAAyB,EAAQ,KAEjCD,EAEJ,SAAgC//S,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,IAFlCggT,EAoCrDpkT,GAAQqtD,QAAU42P,EAClBhkT,EAAOD,QAAUA,EAAiB,S3qBm5wF5B,SAAUC,EAAQD,EAASH,GAEjC,Y4qB16wFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASigT,GAAel9M,EAAOjtF,EAAUgmG,EAAYS,EAAatrE,GAChE,GAAI8xD,EAAMC,YACR,OAAQ,KAAMD,EAAMC,YAEtB,KAAKD,EAAMk9M,eACT,QAGF,IAAIl2H,MACA9kK,SAEAsiK,GACFzxK,SAAUA,EACV0X,OAAQ0yR,EAAapkM,EAAYS,IAG/B4jM,KAAmCJ,EAAwB92P,SAASs+H,EAAkBzxK,EAa1F,OAXAitF,GAAMk9M,eAAeE,EAA8B,SAAUvgT,EAAOojG,GAElE,GADAA,GAAepjG,MAAak5G,EAAY1V,cAAcJ,GAClD+mF,EAEF,YADA9kK,GAAUrlB,EAAOojG,GAInB/xD,GAASrxC,EAAOojG,KAGlB+mF,KACO9kK,EAGT,QAASm7R,GAAcr9M,EAAOjtF,EAAUgmG,EAAYS,EAAatrE,GAC/D,GAAI8xD,EAAMs9M,WACRpvQ,EAAS,KAAM8xD,EAAMs9M,gBAChB,IAAIt9M,EAAMq9M,cAAe,CAC9B,GAAI74H,IACFzxK,SAAUA,EACV0X,OAAQ0yR,EAAapkM,EAAYS,IAG/B4jM,KAAmCJ,EAAwB92P,SAASs+H,EAAkBzxK,EAE1FitF,GAAMq9M,cAAcD,EAA8B,SAAUvgT,EAAOygT,GACjEpvQ,EAASrxC,GAAQA,MAAak5G,EAAY1V,cAAci9M,GAAY,UAE7Dt9M,GAAMC,YACf,WACE,GAAIs9M,GAAWv9M,EAAMC,YAAY3yE,OAAO,SAAUkwR,GAChD,OAAQA,EAAWtqS,UAGjBm1M,EAAYzhC,WAAW22H,EAAS9jT,OAAQ,SAAU0vB,EAAO7P,EAAMizB,GACjE8wQ,EAAcE,EAASp0R,GAAQpW,EAAUgmG,EAAYS,EAAa,SAAU38G,EAAOygT,GACjF,GAAIzgT,GAASygT,EAAY,CACvB,GAAIl9M,IAAUm9M,EAASp0R,IAAQmB,OAAO7e,MAAM+c,QAAQ80R,GAAcA,GAAcA,GAChF/wQ,GAAK1vC,EAAOujG,OAEZ9mF,QAGH,SAAU3c,EAAKyjG,GAChBlyD,EAAS,KAAMkyD,QAInBlyD,IAIJ,QAASuvQ,GAAahzR,EAAQsuF,EAAYS,GACxC,MAAOT,GAAWr2G,OAAO,SAAU+nB,EAAQmvF,EAAWzwF,GACpD,GAAI6wF,GAAaR,GAAeA,EAAYrwF,EAU5C,OARI1d,OAAM+c,QAAQiC,EAAOmvF,IACvBnvF,EAAOmvF,GAAWjgH,KAAKqgH,GAEvBvvF,EAAOmvF,GADEA,IAAanvF,IACDA,EAAOmvF,GAAYI,GAEpBA,EAGfvvF,GACNA,GAGL,QAAS0yR,GAAapkM,EAAYS,GAChC,MAAOikM,MAAiB1kM,EAAYS,GAGtC,QAASkkM,GAAe19M,EAAOjtF,EAAUwmG,EAAmBR,EAAYS,EAAatrE,GACnF,GAAI2qE,GAAU7Y,EAAM9sF,MAAQ,EAU5B,IAR0B,MAAtB2lG,EAAQh6E,OAAO,KACjB06E,EAAoBxmG,EAASiB,SAC7B+kG,KACAS,MAKwB,OAAtBD,GAA8BV,EAAS,CACzC,IACE,GAAI8uB,MAAc1xB,EAAcmD,cAAcP,EAASU,EACnDouB,IACFpuB,EAAoBouB,EAAQpuB,kBAC5BR,KAAgBzuF,OAAOyuF,EAAY4uB,EAAQ5uB,YAC3CS,KAAiBlvF,OAAOkvF,EAAamuB,EAAQnuB,cAE7CD,EAAoB,KAEtB,MAAO18G,GACPqxC,EAASrxC,GAKX,GAA0B,KAAtB08G,EAA0B,CAC5B,GAAIokM,GAAQ,WACV,GAAI57R,IACFq+E,QAASJ,GACTv1E,OAAQ0yR,EAAapkM,EAAYS,GAuBnC,OApBA6jM,GAAcr9M,EAAOjtF,EAAUgmG,EAAYS,EAAa,SAAU38G,EAAOygT,GACvE,GAAIzgT,EACFqxC,EAASrxC,OACJ,CACL,GAAI4O,MAAM+c,QAAQ80R,GAAa,CAC7B,GAAIM,IAKHA,EAAgB77R,EAAMq+E,QAAQzmG,KAAKwQ,MAAMyzS,EAAeN,OAChDA,IAETv7R,EAAMq+E,OAAOzmG,KAAK2jT,EAGpBpvQ,GAAS,KAAMnsB,OAKjBquB,MAAEA,MAIN,IAAsE,qBAA1DutQ,EAAwB,YAAc3vO,EAAQ2vO,IAAsB,MAAOA,GAAMvtQ,GAIjG,GAAyB,MAArBmpE,GAA6BvZ,EAAMC,YAAa,CAIlD,GAAI49M,GAAgB,SAAuBhhT,EAAOojG,GAC5CpjG,EACFqxC,EAASrxC,GACAojG,EAET69M,EAAY79M,EAAaltF,EAAU,SAAUlW,EAAOklB,GAC9CllB,EACFqxC,EAASrxC,GACAklB,GAETA,EAAMq+E,OAAOj+B,QAAQ69B,GACrB9xD,EAAS,KAAMnsB,IAEfmsB,KAEDqrE,EAAmBR,EAAYS,GAElCtrE,KAIAhsB,EAASg7R,EAAel9M,EAAOjtF,EAAUgmG,EAAYS,EAAaqkM,EAClE37R,IACF27R,EAAc1zS,UAAMA,GAAW+X,OAGjCgsB,KAeJ,QAAS4vQ,GAAY19M,EAAQrtF,EAAUm7B,EAAUqrE,GAC/C,GAAIR,GAAa3uG,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,GAClFovG,EAAcpvG,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,OAAG,KAEtFmvG,IAIkC,MAAhCxmG,EAASiB,SAAS6qB,OAAO,KAC3B9rB,EAAW8F,KAAa9F,GACtBiB,SAAU,IAAMjB,EAASiB,YAG7BulG,EAAoBxmG,EAASiB,aAG3Bq0M,EAAYzhC,WAAWxmF,EAAO3mG,OAAQ,SAAU0vB,EAAO7P,EAAMizB,GAC/DmxQ,EAAet9M,EAAOj3E,GAAQpW,EAAUwmG,EAAmBR,EAAYS,EAAa,SAAU38G,EAAOklB,GAC/FllB,GAASklB,EACXwqB,EAAK1vC,EAAOklB,GAEZzI,OAGH40B,GAtPLr1C,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPi1D,EAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,OAAS,eAAkBtkD,GAE1OpE,GAAQqtD,QAAU43P,CAElB,IAAIz1F,GAAc,EAAQ,KAEtB40F,EAAyB,EAAQ,KAEjCD,EAA0B1pO,EAAuB2pO,GAEjDhnM,EAAgB,EAAQ,IAExBw9C,EAAiB,EAAQ,IAIzB19C,GAFkBziC,EAAuBmgF,GAE3B,EAAQ,IAoO1B36J,GAAOD,QAAUA,EAAiB,S5qBu8wF5B,SAAUC,EAAQD,EAASH,GAEjC,Y6qBzrxFA,SAASqlT,GAAe/9M,EAAOv1E,GAC7B,GAAIorI,KAEJ,OAAK71D,GAAM9sF,SAEP+iG,EAAcyD,eAAe1Z,EAAM9sF,MAAMskC,QAAQ,SAAU/7C,GACzD7B,OAAOC,UAAUC,eAAeb,KAAKwxB,EAAQhvB,KAC/Co6J,EAAYp6J,GAAKgvB,EAAOhvB,MAIrBo6J,GARiBA,EAX1Bh9J,EAAQ0D,aAER,IAAI05G,GAAgB,EAAQ,GAoB5Bp9G,GAAQqtD,QAAU63P,EAClBjlT,EAAOD,QAAUA,EAAiB,S7qBwsxF5B,SAAUC,EAAQD,EAASH,GAEjC,Y8qBrtxFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAZvFpE,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCyqO,EAAQ,EAAQ,KAEhB5nM,EAAS9iC,EAAuB0qO,GAOhCpoM,EAAYpiC,EAAQttB,QAAQ4oD,aAC9B/yF,YAAa,YACbjE,OAAQ,WACN,MAAO07D,GAAQttB,QAAQhrD,cAAck7G,EAAOlwD,QAASrtC,KAAapB,KAAKH,OAASgzM,mBAAkBA,OAItGzxN,GAAQqtD,QAAU0vD,EAClB98G,EAAOD,QAAUA,EAAiB,S9qBwuxF5B,SAAUC,EAAQD,EAASH,GAEjC,Y+qB/uxFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAAS4d,GAAea,GACtB,MAAOA,GAAiBK,aAAeL,EAAiB3f,MAAQ,YAGlE,QAASiqG,GAAWtqF,EAAkBlI,GACpC,GAAI8H,GAAU9H,GAAWA,EAAQ8H,QAE7B2iS,EAAazqO,EAAQttB,QAAQ4oD,aAC/B/yF,YAAa,aAEbN,cAAgBmoF,OAAQumH,EAAWn1G,aACnC58F,WAAawrF,OAAQumH,EAAWn1G,aAEhC73F,mBAAoB,WAGlB,MAFC7B,OAAyN4+F,EAAYh0D,UAASA,GAExOzuC,KAAK2F,iBAEdtF,OAAQ,WACN,GAAIN,GAAQC,KAERmsF,EAASnsF,KAAKH,MAAMssF,QAAUnsF,KAAKF,QAAQqsF,OAC3CtsF,EAAQuB,KAAapB,KAAKH,OAASssF,OAAQA,GAQ/C,OANItoF,KACFhE,EAAM+F,IAAM,SAAUxhB,GACpB2b,EAAM4F,gBAAkBvhB,IAIrB23E,EAAQttB,QAAQhrD,cAAcwgB,EAAkBpE,KAO3D,OAHA2mS,GAAWliS,YAAc,cAAgBlB,EAAea,GAAoB,IAC5EuiS,EAAWviS,iBAAmBA,KAEnBwiS,EAAuBh4P,SAAS+3P,EAAYviS,GA3DzD7iB,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,GAEvPlgB,GAAQqtD,QAAU8/C,CAElB,IAAIoU,GAAa,EAAQ,IAErBF,EAAc5mC,EAAuB8mC,GAErC7mC,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjC4qO,EAAwB,EAAQ,KAEhCD,EAAyB5qO,EAAuB6qO,GAEhDh0F,EAAa,EAAQ,IA2CzBrxN,GAAOD,QAAUA,EAAiB,S/qB0wxF5B,SAAUC,EAAQD,EAASH,GAEjC,YgrBrzxFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GApBvFpE,EAAQ0D,aAER,IAAIg3E,GAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCkgF,EAAiB,EAAQ,IAIzBr5C,GAFkB9mC,EAAuBmgF,GAE5B,EAAQ,KAErBv5C,EAAc5mC,EAAuB8mC,GAErCgkM,EAAY,EAAQ,KAEpBtnM,EAAaxjC,EAAuB8qO,GAEpC57H,EAAqB,EAAQ,IAI7BhtB,EAAmBhiF,EAAQttB,QAAQ6V,UACnCqU,EAASolF,EAAiBplF,OAC1B5zE,EAASg5J,EAAiBh5J,OAM1Bm5G,EAAgBniC,EAAQttB,QAAQ4oD,aAClC/yF,YAAa,gBAGbwuM,SACExqH,4BAA6B,SAAqCxnF,EAAS4nF,GAErEA,IACFA,EAAYm9M,WAAaxmM,EAAW5wD,QAAQ65C,4BAA4BxnF,MAO9EH,WACEwoC,GAAIwvB,EAAO93D,WACXtF,MAAOxW,EACP0f,MAAO1f,EACPguN,QAAShoC,EAAmBt7E,MAC5BhvF,SAAUsqK,EAAmBt7E,OAI/BpvF,OAAQ,cAC0KoiG,EAAYh0D,UAASA,KAIzMrtD,GAAQqtD,QAAUyvD,EAClB78G,EAAOD,QAAUA,EAAiB,ShrBg1xF5B,SAAUC,EAAQD,EAASH,GAEjC,YirB53xFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAlBvFpE,EAAQ0D,aAER,IAAIg3E,GAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCkgF,EAAiB,EAAQ,IAIzBr5C,GAFkB9mC,EAAuBmgF,GAE5B,EAAQ,KAErBv5C,EAAc5mC,EAAuB8mC,GAErCrE,EAAc,EAAQ,IAEtBysE,EAAqB,EAAQ,IAI7B//J,EAAO+wD,EAAQttB,QAAQ6V,UAAUt5C,KAOjCizF,EAAaliC,EAAQttB,QAAQ4oD,aAC/B/yF,YAAa,aAGbwuM,SACExqH,4BAA6B,SAAqCxnF,EAAS4nF,GAErEA,IACFA,EAAYm9M,cAAiBvnM,EAAYhW,6BAA6BxnF,MAO5EH,WACElF,KAAMsvK,EAAmBt7E,MACzBjqC,UAAWulH,EAAmBvlH,UAC9BmqC,WAAYo7E,EAAmBp7E,WAC/By1M,aAAcp6R,EACdq6R,cAAer6R,GAIjB3K,OAAQ,cACuKoiG,EAAYh0D,UAASA,KAItMrtD,GAAQqtD,QAAUwvD,EAClB58G,EAAOD,QAAUA,EAAiB,SjrBq5xF5B,SAAUC,EAAQD,EAASH,GAEjC,YkrBl8xFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAdvFpE,EAAQ0D,aAER,IAAIg3E,GAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjC6mC,EAAa,EAAQ,IAErBF,EAAc5mC,EAAuB8mC,GAErCrE,EAAc,EAAQ,IAEtBysE,EAAqB,EAAQ,IAI7BhtB,EAAmBhiF,EAAQttB,QAAQ6V,UACnCqU,EAASolF,EAAiBplF,OAC1B3tD,EAAO+yI,EAAiB/yI,KAaxB+yF,EAAQhiC,EAAQttB,QAAQ4oD,aAC1B/yF,YAAa,QAGbwuM,SACExqH,4BAA6BgW,EAAYhW,6BAG3C3nF,WACElF,KAAMk9D,EACNnT,UAAWulH,EAAmBvlH,UAC9BmqC,WAAYo7E,EAAmBp7E,WAC/By1M,aAAcp6R,EACdq6R,cAAer6R,GAIjB3K,OAAQ,cACkKoiG,EAAYh0D,UAASA,KAIjMrtD,GAAQqtD,QAAUsvD,EAClB18G,EAAOD,QAAUA,EAAiB,SlrBu9xF5B,SAAUC,EAAQD,EAASH,GAEjC,YmrB/gyFAG,GAAQ0D,aAER,IAAIk3J,GAAiB,EAAQ,IAIzB+uB,GAEJ,SAAgCvlL,GAAcA,GAAOA,EAAIV,YAJZk3J,GAEpB,EAAQ,KAO7Bl+C,GAEF95F,cACE4rF,QAASm7E,EAAmBn7E,SAG9Bk1K,mBAAoB,WAElB9kQ,KAAK4vF,QAAU5vF,KAAKF,QAAQ8vF,SAIhCxuG,GAAQqtD,QAAUqvD,EAClBz8G,EAAOD,QAAUA,EAAiB,SnrBshyF5B,SAAUC,EAAQD,EAASH,GAEjC,YorBpiyFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAdvFpE,EAAQ0D,aAER,IAAIk3J,GAAiB,EAAQ,IAIzBlgF,GAFkBD,EAAuBmgF,GAEhC,EAAQ,IAEjBjgF,EAAUF,EAAuBC,GAEjC6mC,EAAa,EAAQ,IAErBF,EAAc5mC,EAAuB8mC,GAIrC59G,EAASg3E,EAAQttB,QAAQ6V,UAAUv/D,OAkBnC84G,GAEF75F,cACE4rF,QAAS7qG,EAAO8b,WAIhB0nF,MAAOxjG,GAGT4b,WAEE4nF,MAAOxjG,GAGTogB,kBAAmB,WAEhBnF,KAAK4mS,oBAAuKnkM,EAAYh0D,UAASA,EAElM,IAAI85C,GAAQvoF,KAAKH,MAAM0oF,OAASvoF,KAAKF,QAAQyoF,KAE5CA,OAA2Oka,EAAYh0D,UAASA,GAEjQzuC,KAAK6mS,4BAA8B7mS,KAAKF,QAAQ8vF,QAAQquD,yBAAyB11D,EAAOvoF,KAAK4mS,kBAE/FrhS,qBAAsB,WAChBvF,KAAK6mS,6BAA6B7mS,KAAK6mS,+BAI/CzlT,GAAQqtD,QAAUovD,EAClBx8G,EAAOD,QAAUA,EAAiB,SprByjyF5B,SAAUC,EAAQD,EAASH,GAEjC,YqrBlnyFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAVvFpE,EAAQ0D,aAER,IAAIk3J,GAAiB,EAAQ,IAIzBlgF,GAFkBD,EAAuBmgF,GAEhC,EAAQ,IAEjBjgF,EAAUF,EAAuBC,GAIjC/2E,EAASg3E,EAAQttB,QAAQ6V,UAAUv/D,OASnC64G,GAEFj9F,WACE4nF,MAAOxjG,EAAO8b,YAGhBE,mBACEwnF,MAAOxjG,EAAO8b,YAGhBV,gBAAiB,WACf,OACEooF,MAAOvoF,KAAKH,MAAM0oF,QAGtBu8K,mBAAoB,aAKtB1jR,GAAQqtD,QAAUmvD,EAClBv8G,EAAOD,QAAUA,EAAiB,SrrBmoyF5B,SAAUC,EAAQD,EAASH,GAEjC,YsrB/pyFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASs/F,GAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GAanN,QAASq8F,GAAU0+C,GAGjB,MAAO,YACL,GAAIj8I,GAAOzN,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,GAE5Eg2F,EAASvoF,EAAKuoF,OAEd5sF,EAAU+oF,EAAyB1kF,GAAO,WAE1CwvF,KAAcwjH,EAAa3kK,SAAS4tG,GAAetgJ,GACnDq2M,KAAwBmtF,EAA0B9wP,SAASmhD,EAASjH,EACxE,OAAOvnF,MAAawuF,EAASwiH,IA3CjChxN,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPiyM,EAAc,EAAQ,KAEtBH,EAAev3I,EAAuB03I,GAEtC+rF,EAA2B,EAAQ,KAEnCC,EAA4B1jO,EAAuByjO,EAIjCzjO,GAFD,EAAQ,KAmC7Bz6E,EAAQqtD,QAAUkvD,EAClBt8G,EAAOD,QAAUA,EAAiB,StrBsryF5B,SAAUC,EAAQD,EAASH,GAEjC,YurB1tyFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAdvFpE,EAAQ0D,aAER,IAAIg3E,GAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjC0jO,EAAiB,EAAQ,KAEzBv/L,EAAkBpkC,EAAuB2jO,GAEzCxjJ,EAAiB,EAAQ,IAMzBv+C,GAJkB5hC,EAAuBmgF,GAIxBjgF,EAAQttB,QAAQ4oD,aACnC/yF,YAAa,iBACbwgQ,mBAAoB,aAGpBzkQ,OAAQ,WACN,MAAO07D,GAAQttB,QAAQhrD,cAAcw8G,EAAgBxxD,QAASzuC,KAAKH,UAIvEze,GAAQqtD,QAAUgvD,EAClBp8G,EAAOD,QAAUA,EAAiB,SvrB+uyF5B,SAAUC,EAAQD,EAASH,GAEjC,YwrBtvyFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASs/F,GAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GAWnN,QAASgJ,GAAMlK,EAAMq2B,GACnB,GAAIm5D,GAAUxvF,EAAKwvF,QACfjH,EAASvoF,EAAKuoF,OACdrtF,EAAW8E,EAAK9E,SAEhBS,EAAU+oF,EAAyB1kF,GAAO,UAAW,SAAU,YAEjEwvF,IAAWt0F,MAAiImnG,EAAYh0D,UAASA,GAEnKmhD,EAAUA,MAAwBoR,EAAsBvyD,SAAS1yC,EACjE,IAAIq2M,MAAwBmtF,EAA0B9wP,SAASmhD,KAAa0O,EAAY1V,cAAcD,IAElG4mH,QAEAj0M,GAEFA,EAAWs0F,EAAQwtD,eAAe9hJ,GAIlCi0M,EAAW3/G,EAAQC,OAAO,SAAUi3M,GAClCxrS,EAAWwrS,GAIf,IAAI36M,MAAaszM,EAAattF,oBAAoBviH,EAASwiH,EAC3DxiH,MAAc6vM,EAAaptF,sBAAsBziH,EAASwiH,GAE1DA,EAAkB9nM,MAAMhP,EAAU,SAAUlW,EAAO0pL,EAAkBllK,GACnE6sB,EAASrxC,EAAO0pL,GAAoB3iF,EAAOixD,eAAe0xB,EAAkBsgC,EAASl/G,SAAUtmF,GAAaxI,KAAawI,GACvHgmF,QAASA,EACTzD,OAAQA,EACRuzM,cAAgB9vM,QAASA,EAASwiH,kBAAmBA,EAAmBjmH,OAAQA,MAM9EojH,GACFA,MA1ENnuN,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnP8tM,EAAW,EAAQ,IAEnBzsG,EAAa,EAAQ,IAErBF,EAAc5mC,EAAuB8mC,GAErC8wG,EAAuB,EAAQ,KAE/BzyG,EAAwBnlC,EAAuB43I,GAE/C6rF,EAA2B,EAAQ,KAEnCC,EAA4B1jO,EAAuByjO,GAEnDhhM,EAAc,EAAQ,IAEtBmhM,EAAe,EAAQ,IA2D3Br+S,GAAQqtD,QAAUnkC,EAClBjpB,EAAOD,QAAUA,EAAiB,SxrBmxyF5B,SAAUC,EAAQD,EAASH,GAEjC,YyrBj2yFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQ,QAAWA,GAkBzF,QAASuhT,GAAmBxnQ,GAC1B,MAAOA,GAAQ1pB,OAAO,SAAUgqC,GAC9B,MAAOA,GAAMp7C,QACZxZ,OAAO,SAAU+7S,EAAMnnP,GAExB,MADAmnP,GAAKnnP,EAAMp6D,KAAOo6D,EAAMp7C,MACjBuiS,OAIX,QAAS/pM,KA4CP,QAAS4uE,GAAUpmL,EAAKgf,GACtBwiS,EAAQxhT,GAAOgf,EAGjB,QAASunK,GAAUvmL,GACjB,MAAOwhT,GAAQxhT,GAGjB,QAASqpN,KACP,GAAIjvJ,GAAQtgB,EAAQ39B,GAChB2qC,EAAWsT,EAAMtT,SACjBhwC,EAAWsjD,EAAMtjD,SACjBuB,EAAS+hD,EAAM/hD,OAEfrC,GAAQ8wC,GAAY,IAAMhwC,GAAYuB,GAAU,IAEhDrY,SACAgf,QACAo7C,GAAMp6D,KACRA,EAAMo6D,EAAMp6D,IACZgf,EAAQunK,EAAUvmL,KAElBA,EAAMmqG,EAAQ+7E,YACdlnK,EAAQ,KACRo7C,EAAMp6D,IAAMA,EAGd,IAAI6V,GAAWwhJ,EAAWxsD,UAAU70F,EAEpC,OAAOm0F,GAAQwtD,eAAeh8I,KAAa9F,GAAYmJ,MAAOA,WAAqBhf,GAGrF,QAASwvK,GAAMpwK,GACb,GAAI6sB,GAAQ9P,EAAU/c,CACtB,OAAO6sB,IAAS,GAAKA,EAAQ6tB,EAAQv9C,OAGvC,QAAS8tG,GAAGjrG,GACV,GAAIA,EAAG,CACL,IAAKowK,EAAMpwK,GAET,MAGF+c,IAAW/c,CAEX,IAAIkxQ,GAAkBjnD,GAGtBl/G,GAAQs/G,aAAa9tM,KAAa20P,GAAmBv2I,OAAQ4vF,EAASj/G,QAI1E,QAASg/G,GAAiB7zM,GACxB,OAAQA,EAASkkH,QACf,IAAK4vF,GAASn/G,KACZruF,GAAW,EAIPA,EAAU29B,EAAQv9C,QAAQu9C,EAAQl9B,OAAOT,GAE7C29B,EAAQr9C,KAAKoZ,GACbuwK,EAAUvwK,EAAS7V,IAAK6V,EAASmJ,MACjC,MACF,KAAK2qM,GAASl/G,QACZ3wD,EAAQ39B,GAAWtG,EACnBuwK,EAAUvwK,EAAS7V,IAAK6V,EAASmJ,QA9GvC,GAAI1I,GAAUpJ,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,EAE/EqB,OAAM+c,QAAQhV,GAChBA,GAAYwjC,QAASxjC,GACO,gBAAZA,KAChBA,GAAYwjC,SAAUxjC,IAGxB,IAAI6zF,GAAUmgH,EAAyB,QAAE3uM,KAAarF,GACpD+yM,mBAAoBA,EACpBK,iBAAkBA,EAClBtjC,UAAWA,EACX/7E,GAAIA,KAGFigD,EAAWh0I,EACXwjC,EAAUwwG,EAASxwG,QACnB39B,EAAUmuI,EAASnuI,OAEA,iBAAZ29B,GACTA,GAAWA,GACDvrC,MAAM+c,QAAQwuB,KACxBA,GAAW,MAGbA,EAAUA,EAAQvtB,IAAI,SAAU6tC,GAC9B,GAAIp6D,GAAMmqG,EAAQ+7E,WAElB,OAAqB,gBAAV9rH,IAA6BtjD,SAAUsjD,EAAOp6D,IAAKA,GAEzC,gBAAVo6D,IAAsBA,EAAcz+C,KAAay+C,GAASp6D,IAAKA,QAEwDg9G,GAAqB,cAG1I,MAAX7gG,EACFA,EAAU29B,EAAQv9C,OAAS,EAEzB4f,GAAW,GAAKA,EAAU29B,EAAQv9C,QAA0JygH,EAAqB,WAGrN,IAAIwkM,GAAUF,EAAmBxnQ,EA0EjC,OAAOqwD,GAnJTxuG,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAInP41D,EAAW,EAAQ,IAInByrC,GAFY9mC,EAAuB3E,GAEtB,EAAQ,KAErBurC,EAAc5mC,EAAuB8mC,GAErCm6C,EAAa,EAAQ,IAErBsyD,EAAW,EAAQ,IAEnBY,EAAiB,EAAQ,KAEzBD,EAAkBl0I,EAAuBm0I,EAkI7C5uN,GAAiB,QAAI67G,EACrB57G,EAAOD,QAAUA,EAAiB,SzrB42yF5B,SAAUC,EAAQD,EAASH,GAEjC,Y0rBr/yFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAhBvFpE,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjC0jO,EAAiB,EAAQ,KAEzBv/L,EAAkBpkC,EAAuB2jO,EAIvB3jO,GAFD,EAAQ,KAM7Bz6E,EAAQqtD,QAAU,WAChB,IAAK,GAAIl9B,GAAO5e,UAAU3Q,OAAQsoL,EAAct2K,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClF84J,EAAY94J,GAAQ7e,UAAU6e,EAShC,IAAI01R,GAAc58H,EAAYt4J,IAAI,SAAU24J,GAC1C,MAAOA,GAAWyhF,sBACjBv2O,OAAOjR,SACNuiS,EAAgB78H,EAAYt4J,IAAI,SAAU24J,GAC5C,MAAOA,GAAWy8H,uBACjBvxR,OAAOjR,SAENyiS,EAAoB,WACtB,GAAIC,GAAoB30S,UAAU3Q,QAAU,YAAK2Q,UAAU,GAAmBmpE,EAAOr4E,cAAgBkP,UAAU,EAC/G,OAAO,UAAU+N,EAAWb,GAC1B,MAAOsnS,GAAchpJ,YAAY,SAAUopJ,EAAUH,GACnD,MAAOA,GAAqBG,EAAU1nS,IACrCynS,EAAkB5mS,EAAWb,KAIpC,OAAO,UAAU2nS,GACf,MAAON,GAAY/oJ,YAAY,SAAUopJ,EAAUn7C,GACjD,MAAOA,GAAoBm7C,EAAUC,IACpCzrO,EAAQttB,QAAQhrD,cAAcw8G,EAAgBxxD,QAASrtC,KAAaomS,GACrE/jT,cAAe4jT,EAAkBG,EAAY/jT,qBAKnDpC,EAAOD,QAAUA,EAAiB,S1rB4gzF5B,SAAUC,EAAQD,EAASH,GAEjC,Y2rB1jzFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAVvFpE,EAAQ0D,aAER,IAAI2iT,GAAwB,EAAQ,KAEhCC,EAAyB7rO,EAAuB4rO,GAEhDE,EAAuB,EAAQ,KAE/BC,EAAwB/rO,EAAuB8rO,EAInDvmT,GAAQqtD,WAAcm5P,EAAsBn5P,SAASi5P,EAAuBj5P,SAC5EptD,EAAOD,QAAUA,EAAiB,S3rB2kzF5B,SAAUC,EAAQD,EAASH,GAEjC,Y4rBtlzFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQ,QAAWA,GA6BzF,QAASqiT,KAUP,QAAS/4F,GAAmBg5F,GAC1B,IACEA,EAAeA,GAAgBpmT,OAAOkuG,QAAQnrF,UAC9C,MAAOjiB,GACPslT,KAGF,GAAIrsS,GAAOgzM,EAAUpjC,gBACjB08H,EAAgBD,EAChBriT,EAAMsiT,EAActiT,IAEpBgf,QACAhf,GACFgf,EAAQsqM,EAAiB/iC,UAAUvmL,IAEnCgf,EAAQ,KACRhf,EAAMmqG,EAAQ+7E,YAEVtJ,GAAa3gL,OAAOkuG,QAAQ2tD,aAAan8I,KAAa0mS,GAAgBriT,IAAKA,IAAQ,MAGzF,IAAI6V,GAAWwhJ,EAAWxsD,UAAU70F,EAEpC,OAAOm0F,GAAQwtD,eAAeh8I,KAAa9F,GAAYmJ,MAAOA,WAAqBhf,GAGrF,QAASuiT,GAAsB5nS,GAG7B,QAAS6nS,GAAiB/8Q,YACpBA,EAAMzmB,OAEVyqM,EAAaJ,EAAmB5jL,EAAMzmB,QALxC,GAAIyqM,GAAe9uM,EAAK8uM,YAUxB,OAFAT,GAAUzqI,iBAAiBtiF,OAAQ,WAAYumT,GAExC,WACLx5F,EAAUliD,oBAAoB7qK,OAAQ,WAAYumT,IAItD,QAAS94F,GAAiB7zM,GACxB,GAAIixC,GAAWjxC,EAASixC,SACpBhwC,EAAWjB,EAASiB,SACpBuB,EAASxC,EAASwC,OAClBN,EAAOlC,EAASkC,KAChBiH,EAAQnJ,EAASmJ,MACjB+6G,EAASlkH,EAASkkH,OAClB/5H,EAAM6V,EAAS7V,GAEnB,IAAI+5H,IAAW4vF,EAASj/G,IAAxB,CAEA4+G,EAAiBljC,UAAUpmL,EAAKgf,EAEhC,IAAIhJ,IAAQ8wC,GAAY,IAAMhwC,EAAWuB,EAASN,EAC9CsqS,GACFriT,IAAKA,EAGP,IAAI+5H,IAAW4vF,EAASn/G,KAAM,CAC5B,GAAIi4M,EAEF,MADAxmT,QAAO4Z,SAASyC,KAAOtC,IAGrB/Z,QAAOkuG,QAAQ0tD,UAAUwqJ,EAAc,KAAMrsS,OAE5C,CAEL,GAAIysS,EAEF,MADAxmT,QAAO4Z,SAASyR,QAAQtR,KAGtB/Z,QAAOkuG,QAAQ2tD,aAAauqJ,EAAc,KAAMrsS,KAcxD,QAASshJ,GAAa56I,GACI,KAAlBg/I,IAAqBgnJ,EAAuBH,EAAsBp4M,GAExE,IAAI2/G,GAAW3/G,EAAQmtD,aAAa56I,EAEpC,OAAO,YACLotM,IAEwB,KAAlBpuD,GAAqBgnJ,KAI/B,QAASt4M,GAAO1tF,GACU,KAAlBg/I,IAAqBgnJ,EAAuBH,EAAsBp4M,GAExE,IAAI2/G,GAAW3/G,EAAQC,OAAO1tF,EAE9B,OAAO,YACLotM,IAEwB,KAAlBpuD,GAAqBgnJ,KAK/B,QAAS34F,GAAuBxyD,GACN,KAAlBmE,IAAqBgnJ,EAAuBH,EAAsBp4M,IAExEA,EAAQ4/G,uBAAuBxyD,GAIjC,QAASyyD,GAAyBzyD,GAChCptD,EAAQ6/G,yBAAyBzyD,GAET,KAAlBmE,GAAqBgnJ,IAnI7B,GAAIpsS,GAAUpJ,UAAU3Q,QAAU,YAAK2Q,UAAU,MAAwBA,UAAU,EAElF+8M,GAAsBt4L,WAAmHqrF,EAAqB,WAE/J,IAAIlxD,GAAex1C,EAAQw1C,aAEvB8wH,EAAcosC,EAAUjjC,kBACxB08H,GAAc7lI,GAAe9wH,EAgF7Bq+C,EAAUggH,EAA4B,QAAExuM,KAAarF,GACvD+yM,mBAAoBA,EACpBK,iBAAkBA,EAClBtjC,UAAWkjC,EAAiBljC,aAG1B1qB,EAAgB,EAChBgnJ,QAwCJ,OAAO/mS,MAAawuF,GAClBmtD,aAAcA,EACdltD,OAAQA,EACR2/G,uBAAwBA,EACxBC,yBAA0BA,IA5K9BruN,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAInPqhG,EAAa,EAAQ,IAErBF,EAAc5mC,EAAuB8mC,GAErCysG,EAAW,EAAQ,IAEnBtyD,EAAa,EAAQ,IAErB4yD,EAAwB,EAAQ,KAEhCjB,EAAY,EAAQ,KAEpBM,EAAmB,EAAQ,KAE3Bc,EAAoB,EAAQ,KAE5BD,EAAqB/zI,EAAuBg0I,EA0JhDzuN,GAAiB,QAAIymT,EACrBxmT,EAAOD,QAAUA,EAAiB,S5rBimzF5B,SAAUC,EAAQD,EAASH,GAEjC,Y6rB1wzFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAVvFpE,EAAQ0D,aAER,IAAIs6S,GAAqB,EAAQ,KAE7BC,EAAsBxjO,EAAuBujO,GAE7CuI,EAAuB,EAAQ,KAE/BC,EAAwB/rO,EAAuB8rO,EAInDvmT,GAAQqtD,WAAcm5P,EAAsBn5P,SAAS4wP,EAAoB5wP,SACzEptD,EAAOD,QAAUA,EAAiB,S7rB2xzF5B,SAAUC,EAAQD,EAASH,GAEjC,Y8rB/xzFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASgnQ,GAAU47C,GACjB,OACEh8C,oBAAqB,SAA6B7sO,EAAO1f,GACvD,MAAOk8D,GAAQttB,QAAQhrD,cACrB4kT,EAA0B55P,SAExB25P,mBAAoBA,EACpB/7C,YAAaxsP,GAEf0f,KAtBRn+B,EAAQ0D,cACR1D,EAAQqtD,QAAU+9M,CAElB,IAAI1wL,GAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCwsO,EAA2B,EAAQ,KAEnCD,EAA4BxsO,EAAuBysO,EAkBvDjnT,GAAOD,QAAUA,EAAiB,S9rBizzF5B,SAAUC,EAAQD,EAASH,GAEjC,Y+rBp0zFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASk+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAhBje/d,EAAQ0D,aAER,IAAIg3E,GAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCysO,EAAkB,EAAQ,KAE1BC,EAAmB3sO,EAAuB0sO,GAU1CE,EAA0B,SAAUplO,GAGtC,QAASolO,KAGP,MAFA/kP,GAAgB1jD,KAAMyoS,GAEf5kP,EAA2B7jD,KAAMqjE,EAAiB3wE,MAAMsN,KAAMrN,YAkDvE,MAvDAmxD,GAAU2kP,EAAyBplO,GAQnColO,EAAwBrmT,UAAU+iB,kBAAoB,WACpD,GAAIirG,GAASpwG,KAETqsP,EAAcrsP,KAAKH,MAAMwsP,WAG7BrsP,MAAK0oS,eAAiB,GAAIF,GAAiB/5P,QAAQ49M,EAAYlgK,OAAQ,WACrE,MAAOikB,GAAOvwG,MAAMwsP,YAAY/wP,WAGlC0E,KAAKy+P,SAAS,KAAMpS,IAGtBo8C,EAAwBrmT,UAAU6jB,mBAAqB,SAA4BkqN,GACjF,GAAIk8B,GAAcrsP,KAAKH,MAAMwsP,YAEzBqS,EAAkBvuC,EAAUk8B,WAE5BA,GAAY/wP,WAAaojQ,EAAgBpjQ,UAI7C0E,KAAKy+P,SAASC,EAAiBrS,IAGjCo8C,EAAwBrmT,UAAUmjB,qBAAuB,WACvDvF,KAAK0oS,eAAe50D,QAGtB20D,EAAwBrmT,UAAUq8Q,SAAW,SAAkBC,EAAiBrS,GAC9E,GAAI+7C,GAAqBpoS,KAAKH,MAAMuoS,mBAGhCvsG,QAIFA,IAHGusG,GAGcA,EAAmB5mT,KAAKwe,KAAK0oS,eAAgBhqC,EAAiBrS,GAGjFrsP,KAAK0oS,eAAeC,aAAa9sG,IAGnC4sG,EAAwBrmT,UAAUie,OAAS,WACzC,MAAOL,MAAKH,MAAMY,UAGbgoS,GACP1sO,EAAQttB,QAAQ/tC,UAElB+nS,GAAwB9nS,WACtBynS,mBAAoBrsO,EAAQttB,QAAQ6V,UAAUt5C,KAC9CqhP,YAAatwL,EAAQttB,QAAQ6V,UAAUv/D,OAAO8b,WAC9CJ,SAAUs7D,EAAQttB,QAAQ6V,UAAUr3B,KAAKpsB,YAE3Czf,EAAQqtD,QAAUg6P,EAClBpnT,EAAOD,QAAUA,EAAiB,S/rBq1zF5B,SAAUC,EAAQD,EAASH,GAEjC,YgsBh5zFA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASk+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCA5BhH98B,EAAQ0D,aAER,IAAI8jT,GAAO,EAAQ,KAEfC,EAAQhtO,EAAuB+sO,GAE/BE,EAAM,EAAQ,KAEdC,EAAOltO,EAAuBitO,GAE9BE,EAAc,EAAQ,KAEtBC,EAAeptO,EAAuBmtO,GAEtCE,EAAa,EAAQ,KAErBC,EAActtO,EAAuBqtO,GAErCE,EAAyB,EAAQ,KAEjCC,EAA0BxtO,EAAuButO,GAEjDh6F,EAAW,EAAQ,IAEnBL,EAAmB,EAAQ,KAW3Bu6F,EAAsB,EAEtBC,EAAiB,WACnB,QAASA,GAAe35M,EAASk/G,GAC/B,GAAI/uM,GAAQC,IAEZ0jD,GAAgB1jD,KAAMupS,GAEtBvpS,KAAKwpS,UAAY,WASf,GAJkC,OAA9BzpS,EAAM0pS,sBACR1pS,EAAM0pS,uBAA0BJ,EAAwB56P,SAAS1uC,EAAM2pS,gBAGrE3pS,EAAM4pS,cAAe,CACvB,GAAIA,GAAgB5pS,EAAM4pS,cACtBC,EAAUD,EAAc,GACxBE,EAAUF,EAAc,GAExBnjS,KAAQyiS,EAAax6P,SAAS/sD,QAC9B+kB,KAAQ0iS,EAAY16P,SAAS/sD,OAE7B8kB,KAAMojS,GAAWnjS,IAAMojS,IACzB9pS,EAAM4pS,cAAgB,KACtB5pS,EAAM+pS,wBAKZ9pS,KAAK0pS,cAAgB,WACnB3pS,EAAM0pS,oBAAsB,QAKxB16F,EAAiBljC,WAAW9rK,EAAMgqS,QAAQhqS,EAAMiqS,2BAA6Bf,EAAax6P,SAAS/sD,SAAQA,EAAKynT,EAAY16P,SAAS/sD,WAG3Ise,KAAKiqS,qBAAuB,WAO1B,GANAlqS,EAAMmqS,mBAAqB,KAMtBnqS,EAAM4pS,cAAX,CAIA,GAAIQ,GAAiBpqS,EAAM4pS,cACvBnjS,EAAI2jS,EAAe,GACnB1jS,EAAI0jS,EAAe,EAOvB,IALAzoT,OAAOopG,SAAStkF,EAAGC,KAEjB1G,EAAMqqS,oBAGwBd,EAE9B,YADAvpS,EAAM4pS,cAAgB,KAIxB5pS,GAAMmqS,sBAAyBb,EAAwB56P,SAAS1uC,EAAMkqS,wBAGxEjqS,KAAKqqS,SAAWz6M,EAChB5vF,KAAKgqS,oBAAsBl7F,EAKvB,qBAAuBptN,QAAOkuG,SAChC5vF,KAAKsqS,sBAAwB5oT,OAAOkuG,QAAQ26M,kBAC5C7oT,OAAOkuG,QAAQ26M,kBAAoB,UAEnCvqS,KAAKsqS,sBAAwB,KAG/BtqS,KAAKypS,oBAAsB,KAC3BzpS,KAAKkqS,mBAAqB,KAC1BlqS,KAAK2pS,cAAgB,KACrB3pS,KAAKoqS,mBAAqB,KAKtBrB,EAAKt6P,SAAS/sD,OAAQ,SAAUse,KAAKwpS,WAEzCxpS,KAAKwqS,gBAAkB56M,EAAQmtD,aAAa,WACR,OAA9Bh9I,EAAM0pS,sBACRJ,EAAwB56P,QAAQrvB,OAAOrf,EAAM0pS,qBAC7C1pS,EAAM0pS,oBAAsB,QAiElC,MA5DAF,GAAennT,UAAU0xP,KAAO,WAE1B9zO,KAAKsqS,wBACP5oT,OAAOkuG,QAAQ26M,kBAAoBvqS,KAAKsqS,0BAGtCzB,EAAMp6P,SAAS/sD,OAAQ,SAAUse,KAAKwpS,WAC1CxpS,KAAK8pS,qBAEL9pS,KAAKwqS,mBAGPjB,EAAennT,UAAUumT,aAAe,SAAsB9sG,GAE5D77L,KAAK8pS,qBAEDjuG,IAAmB7nM,MAAM+c,QAAQ8qL,GACnC77L,KAAK2pS,cAAgB3pS,KAAKyqS,0BAE1BzqS,KAAK2pS,cAAgB9tG,EAIvB77L,KAAKwpS,YAEAxpS,KAAK2pS,gBAIV3pS,KAAKoqS,mBAAqB,EAC1BpqS,KAAKiqS,yBAGPV,EAAennT,UAAUsoT,aAAe,SAAsBpvS,GAC5D,OAAM,EAAKyzM,EAAiB/iC,WAAWhsK,KAAK+pS,QAAQzuS,KAGtDiuS,EAAennT,UAAU2nT,QAAU,SAAiBzuS,GAIlD,MAhJa,MA8IHA,EAAS7V,KAAOua,KAAKqqS,SAASntJ,WAAW5hJ,KAKrDiuS,EAAennT,UAAU0nT,mBAAqB,WACZ,OAA5B9pS,KAAKkqS,qBACPb,EAAwB56P,QAAQrvB,OAAOpf,KAAKkqS,oBAC5ClqS,KAAKkqS,mBAAqB,OAI9BX,EAAennT,UAAUqoT,wBAA0B,WACjD,GAAInvS,GAAW0E,KAAKgqS,qBACpB,OAAI1uS,GAASkkH,SAAW4vF,EAASn/G,MACvB,EAAG,GAGNjwF,KAAK0qS,aAAapvS,KAAc,EAAG,IAGrCiuS,IAGTnoT,GAAQqtD,QAAU86P,EAClBloT,EAAOD,QAAUA,EAAiB,ShsBi7zF5B,SAAUC,EAAQD,EAASH,GAEjC,YisB3n0FA,IAAIm2B,GAAY,EAAQ,KACpBmhE,EAAM,YAENnhE,KAEFmhE,EAAM,WAEJ,MAAIh1F,UAASygF,iBAAyB,SAAU/2C,EAAMivD,EAAWrvD,EAASu1I,GACxE,MAAOn1I,GAAKs/H,oBAAoBrwE,EAAWrvD,EAASu1I,QAC3C7+K,SAAS0gF,YAAoB,SAAUh3C,EAAMivD,EAAWrvD,GACjE,MAAOI,GAAKi+I,YAAY,KAAOhvF,EAAWrvD,eAKhDxrC,EAAOD,QAAUm3F,GjsBio0FX,SAAUl3F,EAAQD,EAASH,GAEjC,YksBlp0FA,IAAIm2B,GAAY,EAAQ,KACpBihE,EAAK,YAELjhE,KACFihE,EAAK,WAEH,MAAI90F,UAASygF,iBAAyB,SAAU/2C,EAAMivD,EAAWrvD,EAASu1I,GACxE,MAAOn1I,GAAK+2C,iBAAiBkY,EAAWrvD,EAASu1I,QACxC7+K,SAAS0gF,YAAoB,SAAUh3C,EAAMivD,EAAWrvD,GACjE,MAAOI,GAAKg3C,YAAY,KAAOiY,EAAWrvD,eAKhDxrC,EAAOD,QAAUi3F,GlsBwp0FX,SAAUh3F,EAAQD,EAASH,GAEjC,YmsBxq0FA,IAAI0pT,GAAY,EAAQ,IAExBtpT,GAAOD,QAAU,SAAmB6rC,EAAM0K,GACxC,GAAI66O,GAAMm4B,EAAU19Q,EAEpB,aAAI0K,EAAmB,MAAO66O,GAAM,eAAiBA,GAAMA,EAAIoV,YAAcpV,EAAIjvR,SAAS63M,gBAAgBysF,WAAa56P,EAAK46P,UAExHrV,GAAKA,EAAI1nL,SAASnzD,EAAK,eAAiB66O,GAAMA,EAAIsV,YAActV,EAAIjvR,SAAS63M,gBAAgBpwG,WAAgB/9D,EAAK46P,WAAalwP,InsB+q0F/H,SAAUt2C,EAAQD,EAASH,GAEjC,YosBxr0FA,IAAI0pT,GAAY,EAAQ,IAExBtpT,GAAOD,QAAU,SAAmB6rC,EAAM0K,GACxC,GAAI66O,GAAMm4B,EAAU19Q,EAEpB,aAAI0K,EAAmB,MAAO66O,GAAM,eAAiBA,GAAMA,EAAIsV,YAActV,EAAIjvR,SAAS63M,gBAAgBpwG,UAAY/9D,EAAK+9D,SAEvHwnL,GAAKA,EAAI1nL,SAAS,eAAiB0nL,GAAMA,EAAIoV,YAAcpV,EAAIjvR,SAAS63M,gBAAgBysF,WAAYlwP,GAAU1K,EAAK+9D,UAAYrzD,IpsB+r0F/H,SAAUt2C,EAAQD,EAASH,GAEjC,YqsB5q0FA,SAAS2iH,GAAS5pF,GAChB,GAAI4wR,OAAW16P,OAAOijE,UAClBntE,EAAK1nB,KAAKC,IAAI,EAAG,IAAMqsR,EAAOpwR,IAC9Bu3J,EAAM9tL,WAAW+1B,EAAIgsB,EAGzB,OADAxrB,GAAOowR,EACA74H,EAjCT,GAKI84H,GALAzzR,EAAY,EAAQ,KAEpB0zR,GAAW,GAAI,SAAU,MAAO,IAAK,MACrC1rR,EAAS,eACT2rR,EAAMnnM,EAGNonM,EAAS,SAAgBr5E,EAAQ5jH,GACnC,MAAO4jH,IAAWA,EAAa5jH,EAAE,GAAGr5D,cAAgBq5D,EAAE7lF,OAAO,GAAlC6lF,GAAwC,iBAGjE32F,IACF0zR,EAAQ90R,KAAK,SAAU27M,GACrB,GAAIs5E,GAASD,EAAOr5E,EAAQ,UAE5B,IAAIs5E,IAAUvpT,QAEZ,MADA09B,GAAS4rR,EAAOr5E,EAAQ,UACjBo5E,EAAM,SAAUrpR,GACrB,MAAOhgC,QAAOupT,GAAQvpR,KAO9B,IAAIlH,OAAW01B,OAAOijE,SAWtB03L,GAAY,SAAUnpR,GACpB,MAAOqpR,GAAIrpR,IAEbmpR,EAAUzrR,OAAS,SAAU9iB,GAC3B,MAAO5a,QAAO09B,GAAQ9iB,IAGxBjb,EAAOD,QAAUypT,GrsB8s0FX,SAAUxpT,EAAQD,EAASH,GssB3v0FjC,GAAM8E,IACFwD,KAAM,OACNC,GAAI,KACJC,IAAK,MAGTpI,GAAOD,QAAW,WACd,GAAMsoC,GAAM1O,gCACNkwR,EAAUxhR,EAAIwhR,SAAWnlT,EAAQ0D,IACjC0hT,EAAMzhR,EAAIyhR,IACVC,EAAO1hR,EAAI0hR,KACX1nG,EAAOh6K,EAAIg6K,KACX2nG,GAAqB3hR,EAAI2hR,mBAAqB,mBAAmB3tS,MAAM,KACvE4tS,EAAqB5hR,EAAI4hR,mBACzBC,EAAoB7hR,EAAI6hR,kBACxBC,EAAoB9hR,EAAI8hR,kBACxBC,EAAqB/hR,EAAI+hR,mBACzBC,EAAsBhiR,EAAIgiR,oBAG1BC,GAFgBjiR,EAAIkiR,cAEFliR,EAAIiiR,iBAAmB,yBACzCE,EAAWniR,EAAImiR,SACfC,EAAWpiR,EAAIoiR,SACfC,EAAariR,EAAIqiR,WACjBC,EAA4BtiR,EAAIsiR,0BAChCC,EAA2BviR,EAAIuiR,yBAE/BC,EAAaxiR,EAAIwiR,WAInBC,EAAkBziR,EAAIyiR,eACrBA,KACGjB,IAAYnlT,EAAQwD,KACpB4iT,EAAkBL,EAAS/+R,QAAQ,oBAAqB,8BACjDm+R,IAAYnlT,EAAQyD,KAC3B2iT,EAAkBL,EAAS/+R,QAAQ,oBAAqB,6BAIhE,IAAIq/R,GAAa1iR,EAAI0iR,UACjBA,KAAeA,EAAWC,WAAW,aACrCD,YAAuBA,EAG3B,IAAME,GAAW5iR,EAAI4iR,SAEfC,GAAgB,iCAAkC,sBACpDj2N,EAAU,IASd,OARIg2N,KACAh2N,EAAUg2N,EACVh2N,EAAUA,EAAQvpE,QAAQ,QAAS,KAAKA,QAAQ,MAAO,OACvDupE,EAAUi2N,EAAathT,OAAO,SAACC,EAAKoS,GAAN,MAAkBpS,GAAlB,IAAyBoS,GAAQg5E,GAC/DA,4BAAoCA,EAApC,MAKAsjC,IAAKuxL,GAAO,MACZvtS,KAAMwtS,IAASW,EAAa,GAAK,MACjCzuS,KAAMomM,GAAQ,UACd8oG,UAAWN,GAAc,SACzB9oM,OAAQ8nM,EACRuB,SACIC,cAAeV,GAA6B,oBAC5CW,cAAeV,GAA4B,4CAE/Cp1C,UAAWk1C,MACXa,iBAAkB,gCAClBp4M,OACIq4M,QAAUxB,EACVj8M,SAAW1mE,SAAS4iR,EAAoB,KAAO,IAC/CxoT,QAAU4lC,SAAS6iR,EAAmB,KAAO,IAC7CuB,QAAUpkR,SAAS8iR,EAAmB,KAAO,EAC7CuB,SAAWrkR,SAAS+iR,EAAoB,KAAO,EAC/CjqG,UAAYkqG,GAAuB,kBAEvCz3C,aAAc,UACdzmP,cAAem+R,EACfl+R,QAASo+R,GAAY,uBACrBvsC,QAASwsC,EAAcA,EAAd,aAA0C,QACnDzsC,cAAe8sC,EAAqBA,EAArB,aAAwD,QACvE51N,UAAW61N,GAAc,KACzB91N,QAASA,EACTqpL,QAAOA,EACPqtC,kBAAiBA,EACjB7xS,cAAaA,EACbkzL,kBAAmB,mCACnBC,kBAAmB,ctsBqw0FrB,SAAUjtM,EAAQD,EAASH,GAEjC,YusBn00FA,SAAS6vG,GAAqBlB,EAAS3vF,GACrC,GAAIG,GAAOzN,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACtEs6S,EAAwB7sS,EAAK8sS,oBAC7BA,WAAsBD,EAAsCE,EAA6BF,EACzFG,EAAwBhtS,EAAKitS,kBAC7BA,WAAoBD,GAA6CA,CAGrE,aAAWF,EAAoBjtS,EAAM2C,YACnC,KAAM,IAAI5f,OAAM,mUAGlB,IAAIsqT,UACAC,SACAn0D,SACAo0D,SACAz3C,SAGA03C,EAAqB,SAA4BC,GAEnD,MADoBR,GAAoBjtS,EAAM2C,YACzBvG,4BAA8BqxS,EAAoBJ,UAOzE,IAHAA,EAAkBG,IAGdJ,EAAmB,CACrB,GAAIM,GAAoB,WACtB,GAAIC,GAAkBH,KAClB13C,KAAoB63C,GAAmBN,IAAoBM,IAK/DL,KACAx3C,EAAkB63C,EAClBh+M,EAAQs/G,aAAa9tM,KAAawsS,GAChCpuL,OAAQ,UAEV+tL,MAGFn0D,GAAuBn5O,EAAMiC,UAAUyrS,GACvCA,IAIF,GAAIE,GAAuB,SAA8BvyS,GAEnDiyS,IAKJx3C,EAAkBz6P,GAGbgyS,IAEHA,EAAkBhyS,EAGdmyS,MAMNxtS,EAAM4F,UACJniB,KAAMqtG,EAASF,gBACf53C,QAAS39C,KAWb,OARAkyS,GAAyB59M,EAAQC,OAAOg+M,GAGpCj+M,EAAQk/G,oBACV++F,EAAqBj+M,EAAQk/G,sBAIxB1tM,KAAawuF,GAElBC,OAAQ,SAAgB1tF,GAEtB,GAAI2rS,GAAwBL,MAIxBM,KACA30D,EAAuBn5O,EAAMiC,UAAU,WACzC,GAAI6zP,GAAkB03C,KAClB13C,KAAoB+3C,IAGxBA,EAAwB/3C,EACnBg4C,GACH5rS,EAAS2rS,KAUb,OAHA3rS,GAAS2rS,GAGF,WACLC,KACA30D,MAMJ7tO,YAAa,WACP8hS,GACFj0D,IAEFo0D,OAnJNrrT,OAAOsC,eAAerD,EAAS,cAC7BsE,OAAMA,GAGR,IAAI0b,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,GAEvPlgB,GAAiB,QAAI0vG,CAErB,IAAIC,GAAW,EAAQ,KAEnBo8M,EAA6B,SAAoC1oS,GACnE,MAAOA,GAAMiyD,UvsB++0FT,SAAUr1E,EAAQD,EAASH,GAEjC,YwsBr/0FA,SAAS6vB,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GAO1L,QAAS68F,GAAiBb,GACxB,MAAO,YACL,MAAO,UAAU/tF,GACf,MAAO,UAAU29G,GACf,GAAIA,EAAO97H,OAASstG,EAASL,oBAC3B,MAAO9uF,GAAK29G,EAGd,IAAIwuL,GAAkBxuL,EAAOvmE,QACzBrtB,EAASoiR,EAAgBpiR,OACzB/e,EAAOmhS,EAAgBnhS,IAE3B+iF,GAAQhkE,GAAQl5B,MAAMk9F,EAAS9+E,EAAmBjE,OA1B1D1qB,OAAOsC,eAAerD,EAAS,cAC7BsE,OAAMA,IAERtE,EAAiB,QAAIqvG,CAErB,IAAIO,GAAW,EAAQ,MxsB4h1FjB,SAAU3vG,EAAQD,EAASH,GysBph1FjC,QAASgyL,GAAQztL,GACf,GAAIA,EAAK,MAAO+xG,GAAM/xG,GAWxB,QAAS+xG,GAAM/xG,GACb,IAAK,GAAIC,KAAOwtL,GAAQ7wL,UACtBoD,EAAIC,GAAOwtL,EAAQ7wL,UAAUqD,EAE/B,OAAOD,GAzBPnE,EAAOD,QAAU6xL,EAqCnBA,EAAQ7wL,UAAUi2F,GAClB46F,EAAQ7wL,UAAU4hF,iBAAmB,SAAS94C,EAAOlR,GAInD,MAHAha,MAAKq7L,WAAar7L,KAAKq7L,gBACtBr7L,KAAKq7L,WAAW,IAAMnwK,GAASlrB,KAAKq7L,WAAW,IAAMnwK,QACnDhpC,KAAK83B,GACDha,MAaTizK,EAAQ7wL,UAAU09D,KAAO,SAAS50B,EAAOlR,GACvC,QAASq+D,KACPr4E,KAAKu4E,IAAIrtD,EAAOmtD,GAChBr+D,EAAGtnB,MAAMsN,KAAMrN,WAKjB,MAFA0lF,GAAGr+D,GAAKA,EACRha,KAAKq4E,GAAGntD,EAAOmtD,GACRr4E,MAaTizK,EAAQ7wL,UAAUm2F,IAClB06F,EAAQ7wL,UAAUo2F,eAClBy6F,EAAQ7wL,UAAUq2F,mBAClBw6F,EAAQ7wL,UAAUmqK,oBAAsB,SAASrhI,EAAOlR,GAItD,GAHAha,KAAKq7L,WAAar7L,KAAKq7L,eAGnB,GAAK1oM,UAAU3Q,OAEjB,MADAge,MAAKq7L,cACEr7L,IAIT,IAAIyzE,GAAYzzE,KAAKq7L,WAAW,IAAMnwK,EACtC,KAAKuoD,EAAW,MAAOzzE,KAGvB,IAAI,GAAKrN,UAAU3Q,OAEjB,aADOge,MAAKq7L,WAAW,IAAMnwK,GACtBlrB,IAKT,KAAK,GADD0hB,GACKpgC,EAAI,EAAGA,EAAImyF,EAAUzxF,OAAQV,IAEpC,IADAogC,EAAK+xD,EAAUnyF,MACJ04B,GAAM0H,EAAG1H,KAAOA,EAAI,CAC7By5D,EAAUpxE,OAAO/gB,EAAG,EACpB,OAUJ,MAJyB,KAArBmyF,EAAUzxF,cACLge,MAAKq7L,WAAW,IAAMnwK,GAGxBlrB,MAWTizK,EAAQ7wL,UAAUupC,KAAO,SAAST,GAChClrB,KAAKq7L,WAAar7L,KAAKq7L,cAKvB,KAAK,GAHDxuL,GAAO,GAAI7Y,OAAMrB,UAAU3Q,OAAS,GACpCyxF,EAAYzzE,KAAKq7L,WAAW,IAAMnwK,GAE7B5pC,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IACpCurB,EAAKvrB,EAAI,GAAKqR,UAAUrR,EAG1B,IAAImyF,EAAW,CACbA,EAAYA,EAAU5/E,MAAM,EAC5B,KAAK,GAAIvS,GAAI,EAAGuxC,EAAM4gD,EAAUzxF,OAAQV,EAAIuxC,IAAOvxC,EACjDmyF,EAAUnyF,GAAGoR,MAAMsN,KAAM6M,GAI7B,MAAO7M,OAWTizK,EAAQ7wL,UAAU6f,UAAY,SAASipB,GAErC,MADAlrB,MAAKq7L,WAAar7L,KAAKq7L,eAChBr7L,KAAKq7L,WAAW,IAAMnwK,QAW/B+nJ,EAAQ7wL,UAAU0zL,aAAe,SAAS5qJ,GACxC,QAAUlrB,KAAKiC,UAAUipB,GAAOlpC,SzsB2i1F5B,SAAUX,EAAQD,EAASH,G0sBrt1FjC,GAAI6gC,GAAW,EAAQ,IASvB1gC,GAAQyB,aAAe,WAGrB,MAFAmd,MAAKq1K,SAAW,EAChBxyL,aAAamd,KAAKu4G,QACXv4G,MAYT5e,EAAQm2B,MAAQ,SAAeyC,GAE7B,MADAha,MAAKiuS,QAAUj0R,EACRha,MAYT5e,EAAQgwL,UAAY,SAAmBp3J,GAErC,MADAha,MAAKq2K,YAAcr8J,EACZha,MAWT5e,EAAQ0B,QAAU,SAAiBkjD,GAEjC,MADAhmC,MAAKq1K,SAAWrvI,EACThmC,MAWT5e,EAAQoxC,KAAO,SAAcrvC,EAASE,GACpC,IAAK2c,KAAKkuS,mBAAoB,CAC5B,GAAIhtS,GAAOlB,IACXA,MAAKkuS,mBAAqB,GAAIhrT,SAAQ,SAASirT,EAAcC,GAC3DltS,EAAK0lE,IAAI,SAAS1hF,EAAK4iI,GACjB5iI,EAAKkpT,EAAYlpT,GAAWipT,EAAarmL,OAInD,MAAO9nH,MAAKkuS,mBAAmB17Q,KAAKrvC,EAASE,IAO/CjC,EAAQsiH,IAAM,SAAa1pF,GAEzB,MADAA,GAAGha,MACIA,MAaT5e,EAAQwD,IAAM,SAASogJ,GACrB,MAAOhlI,MAAK4yK,QAAQ5tC,EAAM3uH,gBAe5Bj1B,EAAQitT,UAAYjtT,EAAQwD,IAuB5BxD,EAAQ0vC,IAAM,SAASk0G,EAAOrtG,GAC5B,GAAI7V,EAASkjH,GAAQ,CACnB,IAAK,GAAIv/I,KAAOu/I,GACdhlI,KAAK8wB,IAAIrrC,EAAKu/I,EAAMv/I,GAEtB,OAAOua,MAIT,MAFAA,MAAK4yK,QAAQ5tC,EAAM3uH,eAAiBshB,EACpC33B,KAAKowC,OAAO40F,GAASrtG,EACd33B,MAeT5e,EAAQktT,MAAQ,SAAStpK,GAGvB,aAFOhlI,MAAK4yK,QAAQ5tC,EAAM3uH,qBACnBrW,MAAKowC,OAAO40F,GACZhlI,MAkBT5e,EAAQ4jJ,MAAQ,SAAS1gJ,EAAMqzC,GAE7B,MADA33B,MAAK+0K,eAAen6H,OAAOt2D,EAAMqzC,GAC1B33B,MAST5e,EAAQ60L,MAAQ,WACd,MAAIj2K,MAAK01K,SACA11K,MAETA,KAAK01K,YACL11K,KAAKgyK,KAAOhyK,KAAKgyK,IAAIiE,QACrBj2K,KAAK+xK,KAAO/xK,KAAK+xK,IAAIkE,QACrBj2K,KAAKnd,eACLmd,KAAK2rB,KAAK,SACH3rB,OAcT5e,EAAQ+0L,gBAAkB,WAGxB,MADAn2K,MAAKk2K,oBACEl2K,MAWT5e,EAAQmtT,UAAY,SAAS1pT,GAE3B,MADAmb,MAAKwuS,cAAgB3pT,EACdmb,MAYT5e,EAAQm4C,OAAS,WACf,OACE3N,OAAQ5rB,KAAK4rB,OACbgoB,IAAK5zC,KAAK4zC,IACV9M,KAAM9mC,KAAK+mC,MACXsrI,QAASryK,KAAK4yK,UAelBxxL,EAAQg1L,QAAU,SAAiB5wL,GAGjC,UAFay4B,SAASz8B,KAAKgE,IAGzB,IAAK,gBACL,IAAK,gBACL,IAAK,oBACH,OAAM,CACR,SACE,OAAM,IA4CZpE,EAAQkzH,KAAO,SAASxtE,GACtB,GAAIthD,GAAMs8B,EAASglB,GACfpjD,EAAOsc,KAAK4yK,QAAQ,eAGxB,IAAIptL,GAAOs8B,EAAS9hB,KAAK+mC,OACvB,IAAK,GAAIthD,KAAOqhD,GACd9mC,KAAK+mC,MAAMthD,GAAOqhD,EAAKrhD,OAEhB,gBAAmBqhD,IAEvBpjD,GAAMsc,KAAKtc,KAAK,QACrBA,EAAOsc,KAAK4yK,QAAQ,gBAElB5yK,KAAK+mC,MADH,qCAAuCrjD,EAC5Bsc,KAAK+mC,MACd/mC,KAAK+mC,MAAQ,IAAMD,EACnBA,GAEU9mC,KAAK+mC,OAAS,IAAMD,GAGpC9mC,KAAK+mC,MAAQD,CAGf,QAAKthD,GAAOwa,KAAKo2K,QAAQtvI,GAAc9mC,MAGlCtc,GAAMsc,KAAKtc,KAAK,QACdsc,Q1sBgu1FH,SAAU3e,EAAQD,G2sBxi2FxB,QAASi1F,GAAQo4N,EAAoB7iR,EAAQgoB,GAE3C,MAAI,kBAAqBA,GAChB,GAAI66P,GAAmB,MAAO7iR,GAAQg7C,IAAIhzB,GAI/C,GAAKjhD,UAAU3Q,OACV,GAAIysT,GAAmB,MAAO7iR,GAGhC,GAAI6iR,GAAmB7iR,EAAQgoB,GAGxCvyD,EAAOD,QAAUi1F,G3sBgk2FX,SAAUh1F,EAAQD,G4sB/l2FxB,QAASstT,GAAoB38H,GAC5B,KAAM,IAAI/uL,OAAM,uBAAyB+uL,EAAM,MAEhD28H,EAAoB1jT,KAAO,WAAa,UACxC0jT,EAAoBvrT,QAAUurT,EAC9BrtT,EAAOD,QAAUstT,EACjBA,EAAoBpyS,GAAK,K5sBqm2FnB,SAAUjb,EAAQD,EAASH,G6sB3m2FjC,GAAI0tT,GAAW,EAAQ,KACnBC,EAAW,EAAQ,KAmBnBC,EAAOD,EAAS,SAAS7pT,EAAQ8kG,GACnC,MAAiB,OAAV9kG,KAAsB4pT,EAAS5pT,EAAQ8kG,IAGhDxoG,GAAOD,QAAUytT,G7sBkn2FX,SAAUxtT,EAAQD,EAASH,G8sB9n2FjC,QAAS0tT,GAAS5pT,EAAQ8kG,GACxB,MAAOilN,GAAW/pT,EAAQ8kG,EAAO,SAASnkG,EAAO+V,GAC/C,MAAOg8M,GAAM1yN,EAAQ0W,KAdzB,GAAIqzS,GAAa,EAAQ,KACrBr3F,EAAQ,EAAQ,IAiBpBp2N,GAAOD,QAAUutT,G9sBip2FX,SAAUttT,EAAQD,EAASH,G+sBtp2FjC,QAAS6tT,GAAW/pT,EAAQ8kG,EAAOyiF,GAKjC,IAJA,GAAI56J,IAAS,EACT1vB,EAAS6nG,EAAM7nG,OACfyoB,OAEKiH,EAAQ1vB,GAAQ,CACvB,GAAIyZ,GAAOouF,EAAMn4E,GACbhsB,EAAQgxL,EAAQ3xL,EAAQ0W,EAExB6wK,GAAU5mL,EAAO+V,IACnBszS,EAAQtkS,EAAQ4zI,EAAS5iJ,EAAM1W,GAASW,GAG5C,MAAO+kB,GA1BT,GAAIisK,GAAU,EAAQ,KAClBq4H,EAAU,EAAQ,KAClB1wJ,EAAW,EAAQ,IA2BvBh9J,GAAOD,QAAU0tT,G/sB0q2FX,SAAUztT,EAAQD,EAASH,GgtB9q2FjC,QAAS6wG,GAAUpsG,GACjB,GAAI6hL,GAAQllL,EAAeb,KAAKkE,EAAOmsG,GACnCr0B,EAAM93E,EAAMmsG,EAEhB,KACEnsG,EAAMmsG,SACN,IAAI21E,MACJ,MAAOhlL,IAET,GAAIioB,GAASg9J,EAAqBjmL,KAAKkE,EAQvC,OAPI8hL,KACED,EACF7hL,EAAMmsG,GAAkBr0B,QAEjB93E,GAAMmsG,IAGVpnF,EA1CT,GAAIq/B,GAAS,EAAQ,KAGjByjG,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,eAO7BolL,EAAuBl6B,EAAYtvH,SAGnC4zE,EAAiB/nD,EAASA,EAAOkoD,kBA6BrC3wG,GAAOD,QAAU0wG,GhtB8s2FX,SAAUzwG,EAAQD,GitB1u2FxB,QAAS2wG,GAAersG,GACtB,MAAO+hL,GAAqBjmL,KAAKkE,GAjBnC,GAAI6nJ,GAAcprJ,OAAOC,UAOrBqlL,EAAuBl6B,EAAYtvH,QAavC58B,GAAOD,QAAU2wG,GjtBkw2FX,SAAU1wG,EAAQD,EAASH,GktBvx2FjC,GAAI+tT,GAAgB,EAAQ,KAGxBC,EAAa,mGAGbC,EAAe,WASf3wJ,EAAeywJ,EAAc,SAASr2O,GACxC,GAAIluD,KAOJ,OAN6B,MAAzBkuD,EAAOi9E,WAAW,IACpBnrI,EAAOvoB,KAAK,IAEdy2E,EAAO5rD,QAAQkiS,EAAY,SAAS3kS,EAAOsuD,EAAQu2O,EAAOC,GACxD3kS,EAAOvoB,KAAKitT,EAAQC,EAAUriS,QAAQmiS,EAAc,MAASt2O,GAAUtuD,KAElEG,GAGTppB,GAAOD,QAAUm9J,GltB8x2FX,SAAUl9J,EAAQD,EAASH,GmtB3y2FjC,QAAS+tT,GAAchkS,GACrB,GAAIP,GAAS0H,EAAQnH,EAAM,SAASvlB,GAIlC,MAHI+uG,GAAM10D,OAASuvQ,GACjB76M,EAAM1yF,QAEDrc,IAGL+uG,EAAQ/pF,EAAO+pF,KACnB,OAAO/pF,GAtBT,GAAI0H,GAAU,EAAQ,KAGlBk9R,EAAmB,GAsBvBhuT,GAAOD,QAAU4tT,GntB+z2FX,SAAU3tT,EAAQD,EAASH,GotBvy2FjC,QAASkxB,GAAQnH,EAAMskS,GACrB,GAAmB,kBAARtkS,IAAmC,MAAZskS,GAAuC,kBAAZA,GAC3D,KAAM,IAAIpxR,WAAU2xN,EAEtB,IAAI0/D,GAAW,WACb,GAAI1iS,GAAOla,UACPlN,EAAM6pT,EAAWA,EAAS58S,MAAMsN,KAAM6M,GAAQA,EAAK,GACnD2nF,EAAQ+6M,EAAS/6M,KAErB,IAAIA,EAAMzjE,IAAItrC,GACZ,MAAO+uG,GAAM5vG,IAAIa,EAEnB,IAAIglB,GAASO,EAAKtY,MAAMsN,KAAM6M,EAE9B,OADA0iS,GAAS/6M,MAAQA,EAAM1jE,IAAIrrC,EAAKglB,IAAW+pF,EACpC/pF,EAGT,OADA8kS,GAAS/6M,MAAQ,IAAKriF,EAAQq9R,OAAS34H,GAChC04H,EAlET,GAAI14H,GAAW,EAAQ,KAGnBg5D,EAAkB,qBAmEtB19N,GAAQq9R,MAAQ34H,EAEhBx1L,EAAOD,QAAU+wB,GptB+12FX,SAAU9wB,EAAQD,EAASH,GqtB552FjC,QAAS61L,KACP92K,KAAK8/B,KAAO,EACZ9/B,KAAKk/I,UACH,KAAQ,GAAIuwJ,GACZ,IAAO,IAAK7yQ,GAAO8hH,GACnB,OAAU,GAAI+wJ,IAhBlB,GAAIA,GAAO,EAAQ,KACf/wJ,EAAY,EAAQ,KACpB9hH,EAAM,EAAQ,IAkBlBv7C,GAAOD,QAAU01L,GrtB862FX,SAAUz1L,EAAQD,EAASH,GstBr72FjC,QAASwuT,GAAKlwQ,GACZ,GAAI7tB,IAAS,EACT1vB,EAAoB,MAAXu9C,EAAkB,EAAIA,EAAQv9C,MAG3C,KADAge,KAAK8B,UACI4P,EAAQ1vB,GAAQ,CACvB,GAAI69D,GAAQtgB,EAAQ7tB,EACpB1R,MAAK8wB,IAAI+uB,EAAM,GAAIA,EAAM,KApB7B,GAAI6vP,GAAY,EAAQ,KACpBC,EAAa,EAAQ,KACrBC,EAAU,EAAQ,KAClBC,EAAU,EAAQ,KAClBC,EAAU,EAAQ,IAqBtBL,GAAKrtT,UAAU0f,MAAQ4tS,EACvBD,EAAKrtT,UAAkB,OAAIutT,EAC3BF,EAAKrtT,UAAUwC,IAAMgrT,EACrBH,EAAKrtT,UAAU2uC,IAAM8+Q,EACrBJ,EAAKrtT,UAAU0uC,IAAMg/Q,EAErBzuT,EAAOD,QAAUquT,GttBy82FX,SAAUpuT,EAAQD,EAASH,GutB/92FjC,QAASyuT,KACP1vS,KAAKk/I,SAAWT,EAAeA,EAAa,SAC5Cz+I,KAAK8/B,KAAO,EAXd,GAAI2+G,GAAe,EAAQ,IAc3Bp9J,GAAOD,QAAUsuT,GvtB++2FX,SAAUruT,EAAQD,EAASH,GwtBv92FjC,QAASkxG,GAAazsG,GACpB,SAAKo8B,EAASp8B,IAAUqqT,EAASrqT,MAGnBs1F,EAAWt1F,GAAS2/M,EAAa2qG,GAChCpqR,KAAK+xJ,EAASjyL,IA3C/B,GAAIs1F,GAAa,EAAQ,KACrB+0N,EAAW,EAAQ,KACnBjuR,EAAW,EAAQ,IACnB61J,EAAW,EAAQ,KAMnBs4H,EAAe,sBAGfD,EAAe,8BAGfllI,EAAYphI,SAAStnD,UACrBmrJ,EAAcprJ,OAAOC,UAGrBylL,EAAeiD,EAAU7sJ,SAGzB57B,EAAiBkrJ,EAAYlrJ,eAG7BgjN,EAAazmK,OAAO,IACtBipI,EAAarmL,KAAKa,GAAgB0qB,QAAQkjS,EAAc,QACvDljS,QAAQ,yDAA0D,SAAW,IAmBhF1rB,GAAOD,QAAU+wG,GxtBog3FX,SAAU9wG,EAAQD,EAASH,GytBni3FjC,QAAS8uT,GAAS/kS,GAChB,QAASklS,GAAeA,IAAcllS,GAhBxC,GAAImlS,GAAa,EAAQ,KAGrBD,EAAc,WAChB,GAAIt2L,GAAM,SAASrmB,KAAK48M,GAAcA,EAAWnlT,MAAQmlT,EAAWnlT,KAAKolT,UAAY,GACrF,OAAOx2L,GAAO,iBAAmBA,EAAO,KAc1Cv4H,GAAOD,QAAU2uT,GztByj3FX,SAAU1uT,EAAQD,EAASH,G0tB5k3FjC,GAAIuuD,GAAO,EAAQ,IAGf2gQ,EAAa3gQ,EAAK,qBAEtBnuD,GAAOD,QAAU+uT,G1tBml3FX,SAAU9uT,EAAQD,G2tBhl3FxB,QAAS8wG,GAASntG,EAAQU,GACxB,MAAiB,OAAVV,SAA6BA,EAAOU,GAG7CpE,EAAOD,QAAU8wG,G3tB+l3FX,SAAU7wG,EAAQD,G4tBjm3FxB,QAASuuT,GAAWlqT,GAClB,GAAIglB,GAASzK,KAAK+wB,IAAItrC,UAAeua,MAAKk/I,SAASz5J,EAEnD,OADAua,MAAK8/B,MAAQr1B,EAAS,EAAI,EACnBA,EAGTppB,EAAOD,QAAUuuT,G5tBkn3FX,SAAUtuT,EAAQD,EAASH,G6tB9m3FjC,QAAS2uT,GAAQnqT,GACf,GAAIqhD,GAAO9mC,KAAKk/I,QAChB,IAAIT,EAAc,CAChB,GAAIh0I,GAASq8B,EAAKrhD,EAClB,OAAOglB,KAAW4lS,SAA6B5lS,EAEjD,MAAOpoB,GAAeb,KAAKslD,EAAMrhD,GAAOqhD,EAAKrhD,UA1B/C,GAAIg5J,GAAe,EAAQ,KAGvB4xJ,EAAiB,4BAGjB9iK,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,cAoBjChB,GAAOD,QAAUwuT,G7tByo3FX,SAAUvuT,EAAQD,EAASH,G8tBrp3FjC,QAAS4uT,GAAQpqT,GACf,GAAIqhD,GAAO9mC,KAAKk/I,QAChB,OAAOT,YAAgB33G,EAAKrhD,GAAsBpD,EAAeb,KAAKslD,EAAMrhD,GAnB9E,GAAIg5J,GAAe,EAAQ,KAGvBlR,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,cAgBjChB,GAAOD,QAAUyuT,G9tB6q3FX,SAAUxuT,EAAQD,EAASH,G+tBpr3FjC,QAAS6uT,GAAQrqT,EAAKC,GACpB,GAAIohD,GAAO9mC,KAAKk/I,QAGhB,OAFAl/I,MAAK8/B,MAAQ9/B,KAAK+wB,IAAItrC,GAAO,EAAI,EACjCqhD,EAAKrhD,GAAQg5J,YAAgB/4J,EAAuB2qT,EAAiB3qT,EAC9Dsa,KAnBT,GAAIy+I,GAAe,EAAQ,KAGvB4xJ,EAAiB,2BAmBrBhvT,GAAOD,QAAU0uT,G/tB0s3FX,SAAUzuT,EAAQD,GguBzt3FxB,QAASu9J,KACP3+I,KAAKk/I,YACLl/I,KAAK8/B,KAAO,EAGdz+C,EAAOD,QAAUu9J,GhuBuu3FX,SAAUt9J,EAAQD,EAASH,GiuBlu3FjC,QAAS29J,GAAgBn5J,GACvB,GAAIqhD,GAAO9mC,KAAKk/I,SACZxtI,EAAQstI,EAAal4G,EAAMrhD,EAE/B,SAAIisB,EAAQ,IAIRA,GADYo1B,EAAK9kD,OAAS,EAE5B8kD,EAAKn0B,MAELtQ,EAAO7gB,KAAKslD,EAAMp1B,EAAO,KAEzB1R,KAAK8/B,SA9BT,GAAIk/G,GAAe,EAAQ,KAGvBsxJ,EAAat8S,MAAM5R,UAGnBigB,EAASiuS,EAAWjuS,MA4BxBhhB,GAAOD,QAAUw9J,GjuB0v3FX,SAAUv9J,EAAQD,EAASH,GkuBjx3FjC,QAAS49J,GAAap5J,GACpB,GAAIqhD,GAAO9mC,KAAKk/I,SACZxtI,EAAQstI,EAAal4G,EAAMrhD,EAE/B,OAAOisB,GAAQ,SAAgBo1B,EAAKp1B,GAAO,GAf7C,GAAIstI,GAAe,EAAQ,IAkB3B39J,GAAOD,QAAUy9J,GluBmy3FX,SAAUx9J,EAAQD,EAASH,GmuB1y3FjC,QAAS69J,GAAar5J,GACpB,MAAOu5J,GAAah/I,KAAKk/I,SAAUz5J,IAAQ,EAZ7C,GAAIu5J,GAAe,EAAQ,IAe3B39J,GAAOD,QAAU09J,GnuB4z3FX,SAAUz9J,EAAQD,EAASH,GouB/z3FjC,QAAS89J,GAAat5J,EAAKC,GACzB,GAAIohD,GAAO9mC,KAAKk/I,SACZxtI,EAAQstI,EAAal4G,EAAMrhD,EAQ/B,OANIisB,GAAQ,KACR1R,KAAK8/B,KACPgH,EAAK5kD,MAAMuD,EAAKC,KAEhBohD,EAAKp1B,GAAO,GAAKhsB,EAEZsa,KAtBT,GAAIg/I,GAAe,EAAQ,IAyB3B39J,GAAOD,QAAU29J,GpuBk13FX,SAAU19J,EAAQD,EAASH,GquBh23FjC,QAAS81L,GAAetxL,GACtB,GAAIglB,GAASw0I,EAAWj/I,KAAMva,GAAa,OAAEA,EAE7C,OADAua,MAAK8/B,MAAQr1B,EAAS,EAAI,EACnBA,EAdT,GAAIw0I,GAAa,EAAQ,IAiBzB59J,GAAOD,QAAU21L,GruBk33FX,SAAU11L,EAAQD,GsuB533FxB,QAAS+9J,GAAUz5J,GACjB,GAAIhC,SAAcgC,EAClB,OAAgB,UAARhC,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVgC,EACU,OAAVA,EAGPrE,EAAOD,QAAU+9J,GtuB043FX,SAAU99J,EAAQD,EAASH,GuuB743FjC,QAAS+1L,GAAYvxL,GACnB,MAAOw5J,GAAWj/I,KAAMva,GAAKb,IAAIa,GAZnC,GAAIw5J,GAAa,EAAQ,IAezB59J,GAAOD,QAAU41L,GvuB+53FX,SAAU31L,EAAQD,EAASH,GwuBn63FjC,QAASg2L,GAAYxxL,GACnB,MAAOw5J,GAAWj/I,KAAMva,GAAKsrC,IAAItrC,GAZnC,GAAIw5J,GAAa,EAAQ,IAezB59J,GAAOD,QAAU61L,GxuBq73FX,SAAU51L,EAAQD,EAASH,GyuBx73FjC,QAASi2L,GAAYzxL,EAAKC,GACxB,GAAIohD,GAAOm4G,EAAWj/I,KAAMva,GACxBq6C,EAAOgH,EAAKhH,IAIhB,OAFAgH,GAAKhW,IAAIrrC,EAAKC,GACdsa,KAAK8/B,MAAQgH,EAAKhH,MAAQA,EAAO,EAAI,EAC9B9/B,KAlBT,GAAIi/I,GAAa,EAAQ,IAqBzB59J,GAAOD,QAAU81L,GzuB283FX,SAAU71L,EAAQD,EAASH,G0uBz83FjC,QAASg9B,GAASv4B,GAChB,MAAgB,OAATA,EAAgB,GAAK6qT,EAAa7qT,GAxB3C,GAAI6qT,GAAe,EAAQ,IA2B3BlvT,GAAOD,QAAU68B,G1uBu+3FX,SAAU58B,EAAQD,EAASH,G2uB9+3FjC,QAASsvT,GAAa7qT,GAEpB,GAAoB,gBAATA,GACT,MAAOA,EAET,IAAIqrB,EAAQrrB,GAEV,MAAOk9G,GAASl9G,EAAO6qT,GAAgB,EAEzC,IAAInjK,EAAS1nJ,GACX,MAAO8qT,GAAiBA,EAAehvT,KAAKkE,GAAS,EAEvD,IAAI+kB,GAAU/kB,EAAQ,EACtB,OAAkB,KAAV+kB,GAAkB,EAAI/kB,IAAW2nJ,EAAY,KAAO5iI,EAjC9D,GAAIq/B,GAAS,EAAQ,KACjB84D,EAAW,EAAQ,KACnB7xF,EAAU,EAAQ,IAClBq8H,EAAW,EAAQ,KAGnBC,EAAW,IAGXojK,EAAc3mQ,EAASA,EAAO1nD,iBAC9BouT,EAAiBC,EAAcA,EAAYxyR,eA0B/C58B,GAAOD,QAAUmvT,G3uByg4FX,SAAUlvT,EAAQD,EAASH,G4uB7h4FjC,QAAS8tT,GAAQhqT,EAAQ0W,EAAM/V,EAAO6lO,GACpC,IAAKzpM,EAAS/8B,GACZ,MAAOA,EAET0W,GAAO4iJ,EAAS5iJ,EAAM1W,EAOtB,KALA,GAAI2sB,IAAS,EACT1vB,EAASyZ,EAAKzZ,OACdwgC,EAAYxgC,EAAS,EACrB0uT,EAAS3rT,EAEI,MAAV2rT,KAAoBh/R,EAAQ1vB,GAAQ,CACzC,GAAIyD,GAAM0nJ,EAAM1xI,EAAKiW,IACjBm8M,EAAWnoO,CAEf,IAAIgsB,GAAS8Q,EAAW,CACtB,GAAIg1L,GAAWk5F,EAAOjrT,OACsCk5B,MAA5DkvM,EAAWtC,EAAaA,EAAW/T,EAAU/xN,EAAKirT,aAEhD7iF,EAAW/rM,EAAS01L,GAChBA,EACCl4D,EAAQ7jJ,EAAKiW,EAAQ,WAG9B6lM,EAAYm5F,EAAQjrT,EAAKooO,GACzB6iF,EAASA,EAAOjrT,GAElB,MAAOV,GA3CT,GAAIwyN,GAAc,EAAQ,KACtBl5D,EAAW,EAAQ,KACnBiB,EAAU,EAAQ,KAClBx9H,EAAW,EAAQ,IACnBqrH,EAAQ,EAAQ,IA0CpB9rJ,GAAOD,QAAU2tT,G5uBoj4FX,SAAU1tT,EAAQD,G6uB1l4FxB,QAASu2N,GAAU5yN,EAAQU,GACzB,MAAiB,OAAVV,GAAkBU,IAAOtD,QAAO4C,GAGzC1D,EAAOD,QAAUu2N,G7uBym4FX,SAAUt2N,EAAQD,EAASH,G8uBrm4FjC,QAASy2N,GAAQ3yN,EAAQ0W,EAAMk1S,GAC7Bl1S,EAAO4iJ,EAAS5iJ,EAAM1W,EAMtB,KAJA,GAAI2sB,IAAS,EACT1vB,EAASyZ,EAAKzZ,OACdyoB,OAEKiH,EAAQ1vB,GAAQ,CACvB,GAAIyD,GAAM0nJ,EAAM1xI,EAAKiW,GACrB,MAAMjH,EAAmB,MAAV1lB,GAAkB4rT,EAAQ5rT,EAAQU,IAC/C,KAEFV,GAASA,EAAOU,GAElB,MAAIglB,MAAYiH,GAAS1vB,EAChByoB,KAETzoB,EAAmB,MAAV+C,EAAiB,EAAIA,EAAO/C,SAClB+4F,EAAS/4F,IAAWs9J,EAAQ75J,EAAKzD,KACjD+uB,EAAQhsB,IAAWyoJ,EAAYzoJ,IAnCpC,GAAIs5J,GAAW,EAAQ,KACnB7Q,EAAc,EAAQ,KACtBz8H,EAAU,EAAQ,IAClBuuI,EAAU,EAAQ,KAClBvkE,EAAW,EAAQ,KACnBoyD,EAAQ,EAAQ,IAiCpB9rJ,GAAOD,QAAUs2N,G9uB4n4FX,SAAUr2N,EAAQD,EAASH,G+uBrp4FjC,QAASqsJ,GAAgB5nJ,GACvB,MAAOmjG,GAAanjG,IAAUgsG,EAAWhsG,IAAUqoO,EAdrD,GAAIr8H,GAAa,EAAQ,IACrB7I,EAAe,EAAQ,IAGvBklI,EAAU,oBAad1sO,GAAOD,QAAUksJ,G/uByq4FX,SAAUjsJ,EAAQD,EAASH,GgvB/q4FjC,QAAS2tT,GAAS5jS,GAChB,MAAOmtM,GAAYJ,EAAS/sM,SAAiB4lS,GAAU5lS,EAAO,IAZhE,GAAI4lS,GAAU,EAAQ,KAClB74F,EAAW,EAAQ,KACnBI,EAAc,EAAQ,IAa1B92N,GAAOD,QAAUwtT,GhvBis4FX,SAAUvtT,EAAQD,EAASH,GivBhs4FjC,QAAS2vT,GAAQzvQ,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAMn/C,QACvB41N,EAAYz2K,EAAO,MAlBrC,GAAIy2K,GAAc,EAAQ,IAqB1Bv2N,GAAOD,QAAUwvT,GjvBut4FX,SAAUvvT,EAAQD,EAASH,GkvB9t4FjC,QAAS42N,GAAcnyN,GACrB,MAAOqrB,GAAQrrB,IAAU8nJ,EAAY9nJ,OAChCmrT,GAAoBnrT,GAASA,EAAMmrT,IAhB1C,GAAI/mQ,GAAS,EAAQ,KACjB0jG,EAAc,EAAQ,KACtBz8H,EAAU,EAAQ,IAGlB8/R,EAAmB/mQ,EAASA,EAAOgnQ,yBAcvCzvT,GAAOD,QAAUy2N,GlvBmv4FX,SAAUx2N,EAAQD,GmvB5v4FxB,QAASsR,GAAMsY,EAAMyR,EAAS5P,GAC5B,OAAQA,EAAK7qB,QACX,IAAK,GAAG,MAAOgpB,GAAKxpB,KAAKi7B,EACzB,KAAK,GAAG,MAAOzR,GAAKxpB,KAAKi7B,EAAS5P,EAAK,GACvC,KAAK,GAAG,MAAO7B,GAAKxpB,KAAKi7B,EAAS5P,EAAK,GAAIA,EAAK,GAChD,KAAK,GAAG,MAAO7B,GAAKxpB,KAAKi7B,EAAS5P,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,MAAO7B,GAAKtY,MAAM+pB,EAAS5P,GAG7BxrB,EAAOD,QAAUsR,GnvB6w4FX,SAAUrR,EAAQD,EAASH,GovBjy4FjC,GAAIkmB,GAAW,EAAQ,KACnB1iB,EAAiB,EAAQ,KACzBspJ,EAAW,EAAQ,KAUnBkqE,EAAmBxzN,EAA4B,SAASumB,EAAM2tD,GAChE,MAAOl0E,GAAeumB,EAAM,YAC1B,gBACA,cACA,MAAS7D,EAASwxD,GAClB,eALoCo1E,CASxC1sJ,GAAOD,QAAU62N,GpvBwy4FX,SAAU52N,EAAQD,GqvB1y4FxB,QAAS+lB,GAASzhB,GAChB,MAAO,YACL,MAAOA,IAIXrE,EAAOD,QAAU+lB,GrvBo04FX,SAAU9lB,EAAQD,GsvB704FxB,QAAS82N,GAASltM,GAChB,GAAI25B,GAAQ,EACRosQ,EAAa,CAEjB,OAAO,YACL,GAAIC,GAAQC,IACRntF,EAAYotF,GAAYF,EAAQD,EAGpC,IADAA,EAAaC,EACTltF,EAAY,GACd,KAAMn/K,GAASwsQ,EACb,MAAOx+S,WAAU,OAGnBgyC,GAAQ,CAEV,OAAO35B,GAAKtY,UAAMA,GAAWC,YA/BjC,GAAIw+S,GAAY,IACZD,EAAW,GAGXD,EAAY/gQ,KAAKl9C,GA+BrB3R,GAAOD,QAAU82N,GtvBo24FX,SAAU72N,EAAQD,EAASH,GuvBz24FjC,QAAS6+C,GAAKgrL,GACZ,GAAkB,MAAdA,EACF,MAAO,EAET,IAAIhwI,EAAYgwI,GACd,MAAOhvD,GAASgvD,GAAcsmF,EAAWtmF,GAAcA,EAAW9oO,MAEpE,IAAIw7E,GAAMy6G,EAAO6yC,EACjB,OAAIttJ,IAAO+6J,GAAU/6J,GAAOg7J,EACnB1N,EAAWhrL,KAEbsiH,EAAS0oE,GAAY9oO,OA1C9B,GAAIogK,GAAW,EAAQ,KACnB61B,EAAS,EAAQ,KACjBn9F,EAAc,EAAQ,IACtBghF,EAAW,EAAQ,KACnBs1I,EAAa,EAAQ,KAGrB74E,EAAS,eACTC,EAAS,cAqCbn3O,GAAOD,QAAU0+C,GvvB+44FX,SAAUz+C,EAAQD,EAASH,GwvB574FjC,GAAIymL,GAAU,EAAQ,KAGlB6P,EAAa7P,EAAQvlL,OAAO6I,KAAM7I,OAEtCd,GAAOD,QAAUm2L,GxvBm84FX,SAAUl2L,EAAQD,EAASH,GyvBx84FjC,GAAIgxG,GAAY,EAAQ,IACpBziD,EAAO,EAAQ,IAGfgoI,EAAWvlF,EAAUziD,EAAM,WAE/BnuD,GAAOD,QAAUo2L,GzvB+84FX,SAAUn2L,EAAQD,EAASH,G0vBr94FjC,GAAIgxG,GAAY,EAAQ,IACpBziD,EAAO,EAAQ,IAGftsD,EAAU+uG,EAAUziD,EAAM,UAE9BnuD,GAAOD,QAAU8B,G1vB494FX,SAAU7B,EAAQD,EAASH,G2vBl+4FjC,GAAIgxG,GAAY,EAAQ,IACpBziD,EAAO,EAAQ,IAGfkoI,EAAUzlF,EAAUziD,EAAM,UAE9BnuD,GAAOD,QAAUs2L,G3vBy+4FX,SAAUr2L,EAAQD,EAASH,G4vBv94FjC,QAAS66K,GAASp2K,GAChB,MAAuB,gBAATA,KACVqrB,EAAQrrB,IAAUmjG,EAAanjG,IAAUgsG,EAAWhsG,IAAU2rT,EA1BpE,GAAI3/M,GAAa,EAAQ,IACrB3gF,EAAU,EAAQ,IAClB83E,EAAe,EAAQ,IAGvBwoN,EAAY,iBAwBhBhwT,GAAOD,QAAU06K,G5vBs/4FX,SAAUz6K,EAAQD,EAASH,G6vBxg5FjC,QAASmwT,GAAWz4O,GAClB,MAAO24O,GAAW34O,GACd44O,EAAY54O,GACZ64O,EAAU74O,GAdhB,GAAI64O,GAAY,EAAQ,KACpBF,EAAa,EAAQ,KACrBC,EAAc,EAAQ,IAe1BlwT,GAAOD,QAAUgwT,G7vB0h5FX,SAAU/vT,EAAQD,EAASH,G8vB3i5FjC,GAAIm3N,GAAe,EAAQ,KASvBo5F,EAAYp5F,EAAa,SAE7B/2N,GAAOD,QAAUowT,G9vBkj5FX,SAAUnwT,EAAQD,G+vBxi5FxB,QAASkwT,GAAW34O,GAClB,MAAO84O,GAAa7rR,KAAK+yC,GArB3B,GAWI84O,GAAe7yQ,OAAO,sFAa1Bv9C,GAAOD,QAAUkwT,G/vBok5FX,SAAUjwT,EAAQD,GgwB1j5FxB,QAASmwT,GAAY54O,GAEnB,IADA,GAAIluD,GAASinS,EAAUlvR,UAAY,EAC5BkvR,EAAU9rR,KAAK+yC,MAClBluD,CAEJ,OAAOA,GAvCT,GASIknS,GAAU,kDACVC,EAAS,2BAGTC,EAAa,kCACbC,EAAa,qCAIbC,EAAWC,gFAEXC,EAAY,iBARE,qBAQoCJ,EAAYC,GAAY7/R,KAAK,KAAO,qBAAiB8/R,EAAW,KAClHG,EAFW,oBAEQH,EAAWE,EAC9BE,EAAW,OAVG,qBAUoBR,EAAU,IAAKA,EAASE,EAAYC,EAd3D,qBAciF7/R,KAAK,KAAO,IAGxGy/R,EAAY9yQ,OAAOgzQ,EAAS,MAAQA,EAAS,KAAOO,EAAWD,EAAO,IAiB1E7wT,GAAOD,QAAUmwT,GhwBom5FX,SAAUlwT,EAAQD,EAASH,IiwB/o5FpBI,EAAOD,QAAU,EAAQ,MAC/BojF,GAAGi0J,KAAK,EAAQ,OjwBsp5FjB,SAAUp3O,EAAQD,EAASH,akwBvp5FjC;;;;;CAMC,SAAUuuD,EAAMwjD,GAChB,YAGsB,iBAAX3xG,IAAuBA,EAAOD,QACxCC,EAAOD,QAAU4xG,EAAQ,EAAQ,OAEjC,GAAQ,QAAW,EAAF,YAAS,wDAI1BhzF,EAAM,SAAUqkE,GACjB,YAgCA,SAAS+tO,GAAc9qI,GACtB,MAAIA,GAAW,GACPA,EAAW,GACRA,EAAW,GACdA,EAAW,GAEZA,EAAW,GAGnB,QAAS+qI,GAAa15O,GACrB,GAKC25O,GALGhxT,EAAI,EACPq9I,EAAQhmE,EAAOj7D,MAAM,KACrB60S,EAAQ5zK,EAAM,GACd6zK,EAAa7zK,EAAM,IAAM,GACzB8zK,EAAa,EAEbttK,EAAM,EACN1G,EAAO,CASR,KAN6B,KAAzB9lE,EAAOi9E,WAAW,KACrBt0J,EAAI,EACJm9I,GAAQ,GAIJn9I,EAAGA,EAAIixT,EAAMvwT,OAAQV,IACzBgxT,EAAMF,EAAcG,EAAM38J,WAAWt0J,IACrC6jJ,EAAM,GAAKA,EAAMmtK,CAIlB,KAAKhxT,EAAI,EAAGA,EAAIkxT,EAAWxwT,OAAQV,IAClCmxT,GAA0B,GAC1BH,EAAMF,EAAcI,EAAW58J,WAAWt0J,IAC1C6jJ,GAAOmtK,EAAMG,CAGd,OAAOttK,GAAM1G,EAGd,QAASi0K,GAAYvxQ,GACpB,IAAK,GAAI7/C,GAAI,EAAGA,EAAI6/C,EAAMn/C,OAAQV,IACjC6/C,EAAM7/C,GAAK+wT,EAAalxQ,EAAM7/C,IAIhC,QAASqxT,GAAYxxQ,EAAOn/C,GAC3B,IAAK,GAAIV,GAAI,EAAGA,EAAIU,EAAQV,IAC3B6/C,EAAM7/C,GAAKg9B,KAAKggH,OAAOn9F,EAAM7/C,EAAI,IAAM,GAAiB,IAAX6/C,EAAM7/C,GAGpD6/C,GAAMn/C,EAAS,GAAKmkO,IAGrB,QAASysF,GAAYrxS,EAAQsxS,GAC5B,GAAcvxT,GAAV6jJ,IAEJ,KAAK7jJ,EAAI,EAAGA,EAAIuxT,EAAQ7wT,OAAQV,IAC/B6jJ,EAAI7jJ,GAAKigB,EAAOsxS,EAAQvxT,GAGzB,OAAO6jJ,GAGR,QAAS2tK,GAAQn6O,GAChB,GAAI7xB,GAAO6xB,EAAOj7D,MAAM,KACvBqsM,EAAUjjK,EAAK,GAAGppC,MAAM,KACxBm1S,EAAU/rQ,EAAK,GAAGppC,MAAM,IACxBq1S,EAAUjsQ,EAAK,GAAGppC,MAAM,IAQzB,OANAg1S,GAAW3oG,GACX2oG,EAAWG,GACXH,EAAWK,GAEXJ,EAAWI,EAAQF,EAAQ7wT,SAG1BsC,KAAawiD,EAAK,GAClBksQ,MAAaJ,EAAW9rQ,EAAK,GAAGppC,MAAM,KAAMm1S,GAC5C9oG,QAAa6oG,EAAW7oG,EAAS8oG,GACjCE,OAAaA,EACbE,WAAuB,EAAVnsQ,EAAK,IAQpB,QAASosQ,GAAMC,GACVA,GACHnzS,KAAKozS,KAAKN,EAAOK,IAqEnB,QAASE,GAASC,GACjB,GAAIC,GAAaD,EAAGE,eAChBx6K,EAAOu6K,EAAWjpS,MAAM,eACxB0uH,IAAQA,EAAK,IAGhBA,EAAOA,EAAK,GAAG1uH,MAAM,UACrB0uH,EAAOA,EAAOA,EAAK/mH,KAAK,aAIxB+mH,EAAOu6K,EAAWjpS,MAAM,eACxB0uH,EAAOA,EAAOA,EAAK,WAGP,QAATA,IACHA,UAGDh5H,KAAKszS,IAAMA,EACXtzS,KAAKg5H,KAAOA,EACZh5H,KAAKu+H,OAAS+0K,EAAGp0K,oBAGlB,QAASu0K,GAAU3nK,GAClB9rI,KAAK8rI,KAAOA,EACZ9rI,KAAK0zS,YAAc,EACnB1zS,KAAK2zS,UAAY,EAUlB,QAASC,GAAWj/B,EAAKV,GAGxB,IAFA,GAAI4/B,GAAK1mL,EAEDA,EAAyC,MAAhC8mJ,EAAKq/B,GAAK3+B,EAAI2+B,IAAM,KAAO,IAC3CO,EAAM,GAAIR,GAAS,GAAInjQ,MAAKykO,EAAI2+B,GAAKnmL,IACjC0mL,EAAIt1K,SAAWo2I,EAAIp2I,OACtBo2I,EAAMk/B,EAEN5/B,EAAO4/B,CAIT,OAAOl/B,GAGR,QAASm/B,KACR,GAGC1jC,GAAQvuQ,EAAMvgB,EAHXyyT,MAAgB7jQ,OAAOsjF,cAAgB,EAC1Cl+F,EAAO,GAAI+9Q,GAAS,GAAInjQ,MAAK6jQ,EAAW,EAAG,IAC3ChqG,GAAWz0K,EAGZ,KAAKh0C,EAAI,EAAGA,EAAI,GAAIA,IACnBugB,EAAO,GAAIwxS,GAAS,GAAInjQ,MAAK6jQ,EAAWzyT,EAAG,IACvCugB,EAAK08H,SAAWjpG,EAAKipG,SACxB6xI,EAASwjC,EAAWt+Q,EAAMzzB,GAC1BkoM,EAAQ7nN,KAAKkuR,GACbrmE,EAAQ7nN,KAAK,GAAImxT,GAAS,GAAInjQ,MAAKkgO,EAAOkjC,GAAK,QAEhDh+Q,EAAOzzB,CAGR,KAAKvgB,EAAI,EAAGA,EAAI,EAAGA,IAClByoN,EAAQ7nN,KAAK,GAAImxT,GAAS,GAAInjQ,MAAK6jQ,EAAYzyT,EAAG,EAAG,KACrDyoN,EAAQ7nN,KAAK,GAAImxT,GAAS,GAAInjQ,MAAK6jQ,EAAYzyT,EAAG,EAAG,IAGtD,OAAOyoN,GAGR,QAASiqG,GAAgBrpS,EAAG5C,GAC3B,MAAI4C,GAAE+oS,cAAgB3rS,EAAE2rS,YAChB/oS,EAAE+oS,YAAc3rS,EAAE2rS,YAEtB/oS,EAAEgpS,YAAc5rS,EAAE4rS,UACdhpS,EAAEgpS,UAAY5rS,EAAE4rS,UAEpBhpS,EAAEmhI,KAAKmnK,aAAelrS,EAAE+jI,KAAKmnK,WACzBlrS,EAAE+jI,KAAKmnK,WAAatoS,EAAEmhI,KAAKmnK,WAE5BlrS,EAAE+jI,KAAKxnJ,KAAK2vT,cAActpS,EAAEmhI,KAAKxnJ,MAGzC,QAAS4vT,GAAc5vT,EAAMylN,GAC5B,GAAIzoN,GAAGi9I,CAEP,KADAm0K,EAAW3oG,GACNzoN,EAAI,EAAGA,EAAIyoN,EAAQ/nN,OAAQV,IAC/Bi9I,EAASwrE,EAAQzoN,GACjB6yT,EAAQ51K,GAAU41K,EAAQ51K,OAC1B41K,EAAQ51K,GAAQj6I,MAIlB,QAAS8vT,GAAuBrqG,GAC/B,GAGCzoN,GAAG0gC,EAAGqyR,EAHHC,EAAgBvqG,EAAQ/nN,OAC3BuyT,KACApvK,IAGD,KAAK7jJ,EAAI,EAAGA,EAAIgzT,EAAehzT,IAAK,CACnC+yT,EAAgBF,EAAQpqG,EAAQzoN,GAAGi9I,WACnC,KAAKv8G,IAAKqyR,GACLA,EAAchyT,eAAe2/B,KAChCuyR,EAAgBvyR,OAKnB,IAAK1gC,IAAKizT,GACLA,EAAgBlyT,eAAef,IAClC6jJ,EAAIjjJ,KAAKsuC,EAAMlvC,GAIjB,OAAO6jJ,GAGR,QAASqvK,KAGR,IACC,GAAIC,GAAWr9L,KAAKI,iBAAiBk9L,kBAAkBxrP,QACvD,IAAIurP,GAAYA,EAASzyT,OAAS,EAAG,CACpC,GAAIsC,GAAOksC,EAAMmkR,EAAcF,GAC/B,IAAInwT,EACH,MAAOA,EAERswT,GAAS,yBAA2BH,EAAW,2DAE/C,MAAOjyT,IAIT,GAICqyT,GAAWvzT,EAAG0gC,EAJX+nL,EAAU+pG,IACbQ,EAAgBvqG,EAAQ/nN,OACxBmyT,EAAUC,EAAsBrqG,GAChC+qG,IAGD,KAAKxzT,EAAI,EAAGA,EAAI6yT,EAAQnyT,OAAQV,IAAK,CAEpC,IADAuzT,EAAY,GAAIpB,GAAUsB,EAAQZ,EAAQ7yT,IAAKgzT,GAC1CtyR,EAAI,EAAGA,EAAIsyR,EAAetyR,IAC9B6yR,EAAUG,cAAcjrG,EAAQ/nL,GAEjC8yR,GAAW5yT,KAAK2yT,GAKjB,MAFAC,GAAW/qP,KAAKiqP,GAETc,EAAW9yT,OAAS,EAAI8yT,EAAW,GAAGhpK,KAAKxnJ,YAGnD,QAASmgF,GAAOwwO,GAIf,MAHKC,KAAeD,IACnBC,EAAcV,KAERU,EAOR,QAASP,GAAerwT,GACvB,OAAQA,GAAQ,IAAI+xB,cAActJ,QAAQ,MAAO,KAGlD,QAASooS,GAASC,GACjB,GAAI9zT,GAAGgD,EAAMoZ,EAAO23S,CAMpB,KAJsB,gBAAXD,KACVA,GAAUA,IAGN9zT,EAAI,EAAGA,EAAI8zT,EAAOpzT,OAAQV,IAC9Boc,EAAQ03S,EAAO9zT,GAAGoc,MAAM,KACxBpZ,EAAOoZ,EAAM,GACb23S,EAAaV,EAAcrwT,GAC3BgxT,EAAMD,GAAcD,EAAO9zT,GAC3BkvC,EAAM6kR,GAAc/wT,EACpB4vT,EAAamB,EAAY33S,EAAM,GAAGA,MAAM,MAI1C,QAASq3S,GAASzwT,EAAM65B,GAEvB75B,EAAOqwT,EAAcrwT,EAErB,IACI49E,GADA4pE,EAAOwpK,EAAMhxT,EAGjB,OAAIwnJ,aAAgBonK,GACZpnK,EAGY,gBAATA,IACVA,EAAO,GAAIonK,GAAKpnK,GAChBwpK,EAAMhxT,GAAQwnJ,EACPA,GAIJj3F,EAAMvwD,IAAS65B,IAAW42R,IAAY7yO,EAAO6yO,EAAQlgQ,EAAMvwD,GAAOywT,KACrEjpK,EAAOwpK,EAAMhxT,GAAQ,GAAI4uT,GACzBpnK,EAAKsnK,KAAKlxO,GACV4pE,EAAKxnJ,KAAOksC,EAAMlsC,GACXwnJ,GAGD,KAGR,QAASypK,KACR,GAAIj0T,GAAG6jJ,IAEP,KAAK7jJ,IAAKkvC,GACLA,EAAMnuC,eAAef,KAAOg0T,EAAMh0T,IAAMg0T,EAAMzgQ,EAAMvzD,MAAQkvC,EAAMlvC,IACrE6jJ,EAAIjjJ,KAAKsuC,EAAMlvC,GAIjB,OAAO6jJ,GAAIp7E,OAGZ,QAASyrP,GAAShoL,GACjB,GAAIlsI,GAAGklJ,EAAOivK,EAASC,CAMvB,KAJuB,gBAAZloL,KACVA,GAAWA,IAGPlsI,EAAI,EAAGA,EAAIksI,EAAQxrI,OAAQV,IAC/BklJ,EAAQhZ,EAAQlsI,GAAGoc,MAAM,KAEzB+3S,EAAUd,EAAcnuK,EAAM,IAC9BkvK,EAAUf,EAAcnuK,EAAM,IAE9B3xF,EAAM4gQ,GAAWC,EACjBllR,EAAMilR,GAAWjvK,EAAM,GAEvB3xF,EAAM6gQ,GAAWD,EACjBjlR,EAAMklR,GAAWlvK,EAAM,GAIzB,QAASmvK,GAAU7uQ,GAClBquQ,EAAQruQ,EAAKwuQ,OACbE,EAAQ1uQ,EAAK+N,OACb2vB,EAAGoxO,YAAc9uQ,EAAK7oC,QAGvB,QAAS43S,GAAYvxT,GAKpB,MAJKuxT,GAAWC,eACfD,EAAWC,gBACVlB,EAAS,yBAA2BtwT,EAAO,uDAAyDA,EAAO,SAEpGywT,EAAQzwT,GAGlB,QAASyxT,GAAa5xT,GACrB,GAAI6xT,GAA4B,MAAT7xT,EAAE6lI,IAAuB,MAAT7lI,EAAE6lI,EACzC,UAAU7lI,EAAE6pH,aAAO7pH,EAAE+lI,MAAwB8rL,GAG9C,QAASpB,GAAUxhT,YACPjO,GAAoD,kBAAlBA,GAAQC,OACpDD,EAAQC,MAAMgO,GAQhB,QAASoxE,GAAI98B,GACZ,GAAI76B,GAAO7Y,MAAM5R,UAAUyR,MAAMrS,KAAKmR,UAAW,GAAI,GACpDrO,EAAOqO,UAAUA,UAAU3Q,OAAS,GACpC8pJ,EAAOipK,EAAQzwT,GACf6gJ,EAAO9gE,EAAOlJ,IAAIzoE,MAAM,KAAMma,EAQ/B,OANIi/H,KAASznE,EAAOqmD,SAAShjF,IAAUquQ,EAAY5wK,IAClDA,EAAIn/D,IAAI8lE,EAAKv0H,MAAM4tH,GAAM,WAG1BA,EAAI3gE,GAAGlgF,GAEA6gJ,EA0ER,QAAS8wK,GAAUv4R,GAClB,MAAO,YACN,MAAI1d,MAAKk2S,GAAal2S,KAAKk2S,GAAGl9K,KAAKh5H,MAC5B0d,EAAIl8B,KAAKwe,OAIlB,QAASm2S,GAAez4R,GACvB,MAAO,YAEN,MADA1d,MAAKk2S,GAAK,KACHx4R,EAAIhrB,MAAMsN,KAAMrN,YAjjBzB,GAKCuiT,GAJAI,KACAzgQ,KACArkB,KACA2jR,IAGI9vO,IAAoC,gBAAnBA,GAAOpmE,SAC5B22S,EAAS,+FAGV,IAAIwB,GAAgB/xO,EAAOpmE,QAAQP,MAAM,KACxC24S,GAASD,EAAc,GACvBE,GAASF,EAAc,IAGpBC,EAAQ,GAAgB,IAAVA,GAAeC,EAAQ,IACxC1B,EAAS,wEAA0EvwO,EAAOpmE,QAAU,sBAuGrGi1S,EAAK9wT,WACJgxT,KAAO,SAAUmD,GAChBv2S,KAAK1b,KAAaiyT,EAASjyT,KAC3B0b,KAAKgzS,MAAauD,EAASvD,MAC3BhzS,KAAK+yS,OAAawD,EAASxD,OAC3B/yS,KAAK+pM,QAAawsG,EAASxsG,QAC3B/pM,KAAKizS,WAAasD,EAAStD,YAG5BuD,OAAS,SAAUv5I,GAClB,GAEC37K,GAFGggB,GAAU27J,EACb81I,EAAS/yS,KAAK+yS,MAGf,KAAKzxT,EAAI,EAAGA,EAAIyxT,EAAO/wT,OAAQV,IAC9B,GAAIggB,EAASyxS,EAAOzxT,GACnB,MAAOA,IAKVi2B,MAAQ,SAAU0lJ,GACjB,GAIC1+B,GAAQk4K,EAAYC,EAAYp1T,EAJ7BggB,GAAW27J,EACd8sC,EAAU/pM,KAAK+pM,QACfgpG,EAAU/yS,KAAK+yS,OACfx0R,EAAUw0R,EAAO/wT,OAAS,CAG3B,KAAKV,EAAI,EAAGA,EAAIi9B,EAAKj9B,IAWpB,GAVAi9I,EAAawrE,EAAQzoN,GACrBm1T,EAAa1sG,EAAQzoN,EAAI,GACzBo1T,EAAa3sG,EAAQzoN,EAAIA,EAAI,EAAIA,GAE7Bi9I,EAASk4K,GAAcjyO,EAAGmyO,qBAC7Bp4K,EAASk4K,EACCl4K,EAASm4K,GAAclyO,EAAGoyO,qBACpCr4K,EAASm4K,GAGNp1S,EAASyxS,EAAOzxT,GAAe,IAATi9I,EACzB,MAAOwrE,GAAQzoN,EAIjB,OAAOyoN,GAAQxrL,IAGhBy6G,KAAO,SAAU5M,GAChB,MAAOpsH,MAAKgzS,MAAMhzS,KAAKw2S,OAAOpqL,KAG/BmS,OAAS,SAAUnS,GAElB,MADAwoL,GAAS,8DACF50S,KAAK+pM,QAAQ/pM,KAAKw2S,OAAOpqL,KAGjCllD,UAAY,SAAUklD,GACrB,MAAOpsH,MAAK+pM,QAAQ/pM,KAAKw2S,OAAOpqL,MAsClCqnL,EAAUrxT,UAAU4yT,cAAgB,SAAU6B,GAC7C72S,KAAK0zS,aAAep1R,KAAK8oD,IAAIpnE,KAAK8rI,KAAK5kE,UAAU2vO,EAASvD,IAAMuD,EAASt4K,QACrEv+H,KAAK8rI,KAAK9S,KAAK69K,EAASvD,IAAIvmS,QAAQ,UAAW,MAAQ8pS,EAAS79K,MACnEh5H,KAAK2zS,aAsQPnvO,EAAGvmE,QAheW,SAiedumE,EAAGoxO,YAAe,GAClBpxO,EAAGsyO,OAAexB,EAClB9wO,EAAGuyO,OAAeliQ,EAClB2vB,EAAGwyO,OAAexmR,EAClBg0C,EAAGwB,IAAemvO,EAClB3wO,EAAGtC,KAAeszO,EAClBhxO,EAAGi0J,KAAek9E,EAClBnxO,EAAGsnE,KAAeipK,EAClBvwO,EAAGqxO,WAAeA,EAClBrxO,EAAGC,MAAeA,EAClBD,EAAGh0C,MAAe+kR,EAClB/wO,EAAG0uO,KAAeA,EAClB1uO,EAAGsuO,OAAeA,EAClBtuO,EAAG6tO,aAAeA,EAClB7tO,EAAGuxO,YAAeA,EAClBvxO,EAAGoyO,sBACHpyO,EAAGmyO,uBAMH,IAAI38R,GAAKqqD,EAAOrqD,EAEhBqqD,GAAOG,GAAKA,EAEZH,EAAO4yO,YAAc,KAErB5yO,EAAOomD,aAAe,SAAU2B,EAAKgC,GACpC,GACCmQ,GADGuN,EAAOznE,EAAO4yO,WAUlB,aAPI7qL,EAAI8pL,KACHpqK,GAAQiqK,EAAY3pL,KAASA,EAAIjC,SACpCiC,EAAIj2D,GAAKkO,EAAOlJ,IAAIixD,EAAIpe,IAAI73C,GAC5Bi2D,EAAIjxD,MAAM6K,IAAI8lE,EAAKv0H,MAAM60G,GAAM,YAEhCA,EAAI8pL,GAAKpqK,GAEN1f,EAAI8pL,GAKP,GAJA33K,EAASnS,EAAI8pL,GAAGhvO,UAAUklD,GACtB9tG,KAAK8oD,IAAIm3D,GAAU,KACtBA,GAAkB,aAEfnS,EAAIllD,UAAyB,CAChC,GAAIgwN,GAAI9qK,EAAI8pL,EACZ9pL,GAAIllD,WAAWq3D,EAAQnQ,GACvBhC,EAAI8pL,GAAKhf,MAET9qK,GAAI0f,KAAKvN,EAAQnQ,IAKpBp0G,EAAGwqD,GAAK,SAAUlgF,EAAM8pI,GACvB,GAAI9pI,EAAM,CACT,GAAoB,gBAATA,GACV,KAAM,IAAItB,OAAM,wCAA0CsB,EAAO,WAAcA,GAAO,IAQvF,OANA0b,MAAKk2S,GAAKnB,EAAQzwT,GACd0b,KAAKk2S,GACR7xO,EAAOomD,aAAazqH,KAAMouH,GAE1BwmL,EAAS,mCAAqCtwT,EAAO,4DAE/C0b,KAER,GAAIA,KAAKk2S,GAAM,MAAOl2S,MAAKk2S,GAAG5xT,MAwB/B01B,EAAG6xH,SAAYoqK,EAASj8R,EAAG6xH,UAC3B7xH,EAAG4xH,SAAYqqK,EAASj8R,EAAG4xH,UAC3B5xH,EAAGmhD,IAAYg7O,EAAcn8R,EAAGmhD,KAChCnhD,EAAGglH,MAAYm3K,EAAcn8R,EAAGglH,OAChChlH,EAAGktD,UAXH,SAAyBxpD,GACxB,MAAO,YAEN,MADI/qB,WAAU3Q,OAAS,IAAGge,KAAKk2S,GAAK,MAC7Bx4R,EAAIhrB,MAAMsN,KAAMrN,aAQKqnB,EAAGktD,WAEjC7C,EAAOG,GAAG0yO,WAAa,SAAS5yT,GAK/B,OAJI+xT,EAAQ,GAAgB,IAAVA,GAAeC,EAAQ,IACxC1B,EAAS,qFAAuFvwO,EAAOpmE,QAAU,KAElHomE,EAAO4yO,YAAc3yT,EAAOywT,EAAQzwT,GAAQ,KACrC+/E,EAIR,IAAIimD,GAAmBjmD,EAAOimD,gBAY9B,OAXyD,mBAArDnoI,OAAOC,UAAU67B,SAASz8B,KAAK8oI,IAElCA,EAAiBpoI,KAAK,MACtBooI,EAAiBpoI,KAAK,OACZooI,IAEVA,EAAiB4rL,GAAK,MAKhB7xO,MlwB+p5FqB7iF,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,GmwBpx6FxB,QAASstT,GAAoB38H,GAC5B,KAAM,IAAI/uL,OAAM,uBAAyB+uL,EAAM,MAEhD28H,EAAoB1jT,KAAO,WAAa,UACxC0jT,EAAoBvrT,QAAUurT,EAC9BrtT,EAAOD,QAAUstT,EACjBA,EAAoBpyS,GAAK,KnwB0x6FnB,SAAUjb,EAAQD,GowBhy6FxBC,EAAOD,SAAW,QAAU,QAAQ,OAAS,gDAAgD,qTAAqT,4FAA4F,sQAAsQ,iDAAiD,4DAA4D,mDAAmD,8wBAA8wB,sjBAAsjB,kxBAAkxB,8fAA8f,yFAAyF,sQAAsQ,qRAAqR,kEAAkE,4EAA4E,+DAA+D,4PAA4P,uPAAuP,8XAA8X,u4BAAu4B,g5BAAg5B,yDAAyD,mVAAmV,0YAA0Y,uYAAuY,qYAAqY,wXAAwX,2YAA2Y,qYAAqY,0YAA0Y,wXAAwX,2YAA2Y,2YAA2Y,gZAAgZ,qYAAqY,qEAAqE,6yBAA6yB,kGAAkG,0nBAA0nB,sYAAsY,4HAA4H,sNAAsN,8WAA8W,yFAAyF,gPAAgP,wEAAwE,q6BAAq6B,gyBAAgyB,kjBAAkjB,wTAAwT,kFAAkF,mEAAmE,kDAAkD,u5CAAu5C,8lBAA8lB,8GAA8G,qDAAqD,iiBAAiiB,0QAA0Q,qZAAqZ,gyBAAgyB,g8BAAg8B,i2BAAi2B,+7BAA+7B,gPAAgP,uFAAuF,u6BAAu6B,04BAA04B,6mBAA6mB,2QAA2Q,82BAA82B,quBAAquB,0vCAA0vC,utBAAutB,6GAA6G,oEAAoE,iFAAiF,s2CAAs2C,+6BAA+6B,8JAA8J,i7BAAi7B,2oBAA2oB,2tBAA2tB,ioBAAioB,ugBAAugB,ioBAAioB,oqBAAoqB,6uBAA6uB,ywBAAywB,oLAAoL,q4BAAq4B,4kCAA4kC,45BAA45B,iEAAiE,0IAA0I,6mCAA6mC,yRAAyR,qJAAqJ,kOAAkO,6EAA6E,giBAAgiB,+mBAA+mB,k3BAAk3B,kkBAAkkB,2gBAA2gB,6oBAA6oB,gpBAAgpB,uuCAAuuC,8jBAA8jB,mlBAAmlB,63CAA63C,q5BAAq5B,m5CAAm5C,4zBAA4zB,y4BAAy4B,+QAA+Q,w6BAAw6B,w6BAAw6B,26BAA26B,gkBAAgkB,iyBAAiyB,0GAA0G,2GAA2G,giBAAgiB,uOAAuO,4NAA4N,qEAAqE,4tBAA4tB,+zBAA+zB,6uBAA6uB,8QAA8Q,oYAAoY,wuBAAwuB,+NAA+N,g+BAAg+B,kKAAkK,+iBAA+iB,+uBAA+uB,63BAA63B,67CAA67C,yNAAyN,kGAAkG,+kBAA+kB,+1BAA+1B,qoCAAqoC,oyBAAoyB,2mCAA2mC,u3BAAu3B,qwBAAqwB,wFAAwF,wFAAwF,kEAAkE,qkBAAqkB,6DAA6D,48BAA48B,2gBAA2gB,8CAA8C,6CAA6C,ibAAib,8CAA8C,61BAA61B,gDAAgD,sWAAsW,yuBAAyuB,4aAA4a,mVAAmV,0VAA0V,+MAA+M,iVAAiV,qXAAqX,iEAAiE,qbAAqb,kDAAkD,sbAAsb,81BAA81B,wWAAwW,mEAAmE,sFAAsF,2bAA2b,sXAAsX,gMAAgM,8GAA8G,4GAA4G,o7BAAo7B,6EAA6E,gDAAgD,0MAA0M,iyBAAiyB,o5BAAo5B,g6BAAg6B,sIAAsI,qdAAqd,wWAAwW,ubAAub,yzBAAyzB,wHAAwH,mFAAmF,s5BAAs5B,8CAA8C,6aAA6a,uJAAuJ,iDAAiD,yEAAyE,0cAA0c,2bAA2b,6HAA6H,8KAA8K,keAAke,6bAA6b,kGAAkG,6FAA6F,iyBAAiyB,gbAAgb,qcAAqc,obAAob,qVAAqV,6IAA6I,0FAA0F,iVAAiV,mVAAmV,0EAA0E,icAAic,qMAAqM,sMAAsM,6bAA6b,2RAA2R,0MAA0M,2VAA2V,yqBAAyqB,oEAAoE,kFAAkF,gcAAgc,+WAA+W,8cAA8c,2bAA2b,ubAAub,+cAA+c,2ZAA2Z,g0CAAg0C,+xBAA+xB,mvBAAmvB,gFAAgF,wtBAAwtB,20CAA20C,scAAsc,sCAAsC,4bAA4b,k2BAAk2B,k2BAAk2B,4IAA4I,s2BAAs2B,02BAA02B,6FAA6F,sJAAsJ,u5BAAu5B,4tBAA4tB,gKAAgK,q2BAAq2B,qJAAqJ,2zBAA2zB,41BAA41B,s4BAAs4B,quBAAquB,62CAA62C,gBAAgB,s4BAAs4B,qBAAqB,uBAAuB,uCAAuC,wBAAwB,iCAAiC,wBAAwB,wBAAwB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,mCAAmC,uBAAuB,gCAAgC,sBAAsB,uBAAuB,uBAAuB,uBAAuB,sBAAsB,sBAAsB,sBAAsB,sBAAsB,sBAAsB,sBAAsB,sBAAsB,mBAAmB,wmCAAwmC,mqBAAmqB,ibAAib,02BAA02B,o6CAAo6C,+tBAA+tB,g3BAAg3B,i3BAAi3B,8mCAA8mC,o1BAAo1B,25BAA25B,+tBAA+tB,u5BAAu5B,izBAAizB,usCAAusC,yuBAAyuB,ojBAAojB,qxBAAqxB,maAAma,k1CAAk1C,4oCAA4oC,q/BAAq/B,6/BAA6/B,qeAAqe,yoCAAyoC,2jBAA2jB,+nCAA+nC,+zBAA+zB,s/BAAs/B,8ZAA8Z,saAAsa,ihBAAihB,kxBAAkxB,iuBAAiuB,iyBAAiyB,m0BAAm0B,+bAA+b,uwBAAuwB,q1BAAq1B,4xBAA4xB,ibAAib,ogCAAogC,8xBAA8xB,gBAAgB,oEAAoE,gCAAgC,8CAA8C,iDAAiD,gDAAgD,oFAAoF,oDAAoD,mGAAmG,2zBAA2zB,gBAAgB,s4BAAs4B,yyBAAyyB,waAAwa,2EAA2E,iEAAiE,oLAAoL,0DAA0D,8CAA8C,kZAAkZ,gFAAgF,kDAAkD,yDAAyD,oKAAoK,iGAAiG,gEAAgE,qGAAqG,+FAA+F,mDAAmD,qDAAqD,0FAA0F,6DAA6D,wFAAwF,gGAAgG,+CAA+C,iFAAiF,mMAAmM,kDAAkD,2GAA2G,s4BAAs4B,ouBAAouB,OAAS,+BAA+B,+BAA+B,gCAAgC,8BAA8B,iCAAiC,6BAA6B,mCAAmC,oCAAoC,iCAAiC,oCAAoC,qBAAqB,oCAAoC,qCAAqC,6BAA6B,kCAAkC,6BAA6B,+BAA+B,iCAAiC,6BAA6B,6BAA6B,6BAA6B,iCAAiC,gCAAgC,iCAAiC,gCAAgC,8BAA8B,8BAA8B,kCAAkC,8BAA8B,oCAAoC,+BAA+B,+BAA+B,sCAAsC,iCAAiC,gCAAgC,kCAAkC,qCAAqC,+BAA+B,gCAAgC,uBAAuB,4BAA4B,2BAA2B,8BAA8B,sDAAsD,+DAA+D,gDAAgD,4CAA4C,4CAA4C,wCAAwC,4CAA4C,yCAAyC,6BAA6B,gCAAgC,qCAAqC,wCAAwC,kCAAkC,wBAAwB,6BAA6B,8BAA8B,mCAAmC,kDAAkD,0CAA0C,qCAAqC,kCAAkC,sBAAsB,uCAAuC,yCAAyC,0BAA0B,iDAAiD,iCAAiC,qCAAqC,6BAA6B,kCAAkC,qCAAqC,8BAA8B,mCAAmC,gCAAgC,6BAA6B,yCAAyC,wCAAwC,yCAAyC,wCAAwC,2CAA2C,wCAAwC,2CAA2C,8CAA8C,yCAAyC,yCAAyC,0CAA0C,2CAA2C,wCAAwC,uCAAuC,qCAAqC,wCAAwC,iCAAiC,qCAAqC,gCAAgC,uCAAuC,mCAAmC,uCAAuC,mCAAmC,mCAAmC,iCAAiC,mCAAmC,kCAAkC,kCAAkC,+BAA+B,+BAA+B,8BAA8B,wBAAwB,yBAAyB,+BAA+B,0BAA0B,+BAA+B,wBAAwB,+BAA+B,6BAA6B,mCAAmC,8BAA8B,wBAAwB,mCAAmC,8BAA8B,0BAA0B,2BAA2B,wBAAwB,0BAA0B,iBAAiB,+BAA+B,+BAA+B,4BAA4B,oBAAoB,kBAAkB,mBAAmB,2BAA2B,mBAAmB,mCAAmC,2BAA2B,iCAAiC,6BAA6B,mCAAmC,qCAAqC,0CAA0C,6CAA6C,mCAAmC,sCAAsC,oCAAoC,yCAAyC,iCAAiC,iCAAiC,sCAAsC,iCAAiC,oBAAoB,sBAAsB,qBAAqB,0BAA0B,gBAAgB,kBAAkB,kBAAkB,iBAAiB,sBAAsB,kBAAkB,wBAAwB,mBAAmB,cAAc,cAAc,oBAAoB,eAAe,mCAAmC,mCAAmC,kCAAkC,gCAAgC,gCAAgC,kCAAkC,qBAAqB,mCAAmC,gCAAgC,yBAAyB,yBAAyB,+BAA+B,gCAAgC,mCAAmC,8BAA8B,mBAAmB,wBAAwB,qBAAqB,kCAAkC,iCAAiC,kCAAkC,gCAAgC,6BAA6B,uBAAuB,gCAAgC,6BAA6B,6BAA6B,sCAAsC,yCAAyC,sBAAsB,0BAA0B,6BAA6B,4BAA4B,oCAAoC,8BAA8B,oCAAoC,6BAA6B,8BAA8B,mCAAmC,kCAAkC,6BAA6B,0BAA0B,iCAAiC,kCAAkC,4BAA4B,kCAAkC,8BAA8B,mCpwBsy6Fxh9K,SAAUC,EAAQD,EAASH,GAEjC,YqwB7w6FA,SAAS4sJ,GAAQ7zH,EAAI9Y,GACnB,GAAIikI,GAAM,WACR,MAAyB,KAArBxyI,UAAU3Q,OAAqBmjJ,EAE5BxyI,UAAU3Q,OAAS,EACtBg4B,EAAGtnB,MAAMwO,EAAMvO,WACfmS,EAAKtjB,KAAKw4B,EAAI9Y,EAAMvO,UAAU,IAOpC,OAJAwyI,GAAIgyK,QAAU,WACZ,MAAOn9R,IAGFmrH;;;AAlCT,GAAIrgI,GAAO4kC,SAAStnD,UAAU0iB,MAAQ,EAAQ;;;AAM9CzjB,EAAOD,QAAUysJ,GrwB206FX,SAAUxsJ,EAAQD,EAASH,GAEjC,YswBx16FAI,GAAOD,QAAU,SAASg2T,GACxB,GACIx+R,GADAxkB,EAAI4L,IAGR,IAAIrN,UAAU3Q,OAAS,EACrB42B,EAAM,WACJ,GAAI5Y,eAAgB4Y,GAAK,CACvB,GAAIy+R,GAAOjjT,EAAE1B,MAAMsN,KAAMrN,UACzB,OAAOxQ,QAAOk1T,KAAUA,EACpBA,EACAr3S,KAGJ,MAAO5L,GAAE1B,MAAM0kT,EAAWzkT,gBAE3B,CAEH,IAAK,GADDwwS,GAAY,GAAInvS,OAAMrB,UAAU3Q,OAAS,GACpCV,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IACpC6hT,EAAU7hT,EAAI,GAAKqR,UAAUrR,EAE/Bs3B,GAAM,WACJ,GAEIt3B,GAFAg2T,EAAWnU,EAAUnhT,OACrB6qB,EAAO,GAAI7Y,OAAMsjT,EAAW3kT,UAAU3Q,OAE1C,KAAKV,EAAI,EAAGA,EAAIg2T,EAAUh2T,IACxBurB,EAAKvrB,GAAK6hT,EAAU7hT,EACtB,KAAKA,EAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAChCurB,EAAKyqS,EAAWh2T,GAAKqR,UAAUrR,EAEjC,IAAI0e,eAAgB4Y,GAAK,CACvB,GAAIy+R,GAAOjjT,EAAE1B,MAAMsN,KAAM6M,EACzB,OAAO1qB,QAAOk1T,KAAUA,EACpBA,EACAr3S,KAGJ,MAAO5L,GAAE1B,MAAM0kT,EAAWvqS,IAKhC,MADA+L,GAAIx2B,UAAYgS,EAAEhS,UACXw2B,ItwBg26FH,SAAUv3B,EAAQD,EAASH,auwB146FjC,KAsCA,QAASs2T,KAIP,QAAsB,mBAAX71T,UAA0BA,OAAOs5B,SAAmC,aAAxBt5B,OAAOs5B,QAAQt3B,OAM1C,mBAAbH,WAA4BA,SAAS63M,iBAAmB73M,SAAS63M,gBAAgB//H,OAAS93E,SAAS63M,gBAAgB//H,MAAMm8O,kBAEnH,mBAAX91T,SAA0BA,OAAOyD,UAAYzD,OAAOyD,QAAQsyT,SAAY/1T,OAAOyD,QAAQwqH,WAAajuH,OAAOyD,QAAQqjR,QAGrG,mBAAdxlO,YAA6BA,UAAUwpC,WAAaxpC,UAAUwpC,UAAUn2D,cAAc/L,MAAM,mBAAqBoe,SAASkW,OAAO84Q,GAAI,KAAO,IAE9H,mBAAd10Q,YAA6BA,UAAUwpC,WAAaxpC,UAAUwpC,UAAUn2D,cAAc/L,MAAM,sBAsBxG,QAASqtS,GAAW9qS,GAClB,GAAI0qS,GAAYv3S,KAAKu3S,SASrB,IAPA1qS,EAAK,IAAM0qS,EAAY,KAAO,IAC1Bv3S,KAAKwhM,WACJ+1G,EAAY,MAAQ,KACrB1qS,EAAK,IACJ0qS,EAAY,MAAQ,KACrB,IAAMn2T,EAAQ4hJ,SAAShjI,KAAKmtH,MAE3BoqL,EAAL,CAEA,GAAInzT,GAAI,UAAY4b,KAAK2tB,KACzB9gB,GAAKxK,OAAO,EAAG,EAAGje,EAAG,iBAKrB,IAAIstB,GAAQ,EACRkmS,EAAQ,CACZ/qS,GAAK,GAAGE,QAAQ,cAAe,SAASzC,GAClC,OAASA,IACboH,IACI,OAASpH,IAGXstS,EAAQlmS,MAIZ7E,EAAKxK,OAAOu1S,EAAO,EAAGxzT,IAUxB,QAASoO,KAGP,MAAO,gBAAoBrN,IACtBA,EAAQqN,KACRk3C,SAAStnD,UAAUsQ,MAAMlR,KAAK2D,EAAQqN,IAAKrN,EAASwN,WAU3D,QAASklT,GAAKC,GACZ,IACM,MAAQA,EACV12T,EAAQ6lT,QAAQl9N,WAAW,SAE3B3oF,EAAQ6lT,QAAQlrR,MAAQ+7R,EAE1B,MAAMt1T,KAUV,QAASi2O,KACP,GAAIlgN,EACJ,KACEA,EAAIn3B,EAAQ6lT,QAAQlrR,MACpB,MAAMv5B,IAOR,OAJK+1B,YAAYyC,GAA2B,OAASA,KACnDzC,EAAI,gCAAY3nB,OAGX2nB,EA1JTn3B,EAAUC,EAAOD,QAAU,EAAQ,KACnCA,EAAQoR,IAAMA,EACdpR,EAAQu2T,WAAaA,EACrBv2T,EAAQy2T,KAAOA,EACfz2T,EAAQq3O,KAAOA,EACfr3O,EAAQm2T,UAAYA,EACpBn2T,EAAQ6lT,QAAU,mBAAsB/8P,kBACAA,OAAO+8P,QAC3B/8P,OAAO+8P,QAAQjoK,MAsKnC,WACE,IACE,MAAOt9I,QAAO21B,aACd,MAAO70B,QAlKXpB,EAAQ+5K,QACN,gBACA,cACA,YACA,aACA,aACA,WAmCF/5K,EAAQu0H,WAAW3zF,EAAI,SAAS2W,GAC9B,IACE,MAAOx0B,MAAKC,UAAUu0B,GACtB,MAAOzzC,GACP,MAAO,+BAAiCA,EAAIkO,UAqGhDhS,EAAQ22T,OAAOt/E,OvwB+56Fcj3O,KAAKJ,EAASH,EAAoB,GAAIA,EAAoB,MAIjF,SAAUI,EAAQD,EAASH,aAEIkE,GwwBji7FrC,QAAS6yT,GAAYx2G,GACnB,GAAclgN,GAAVkc,EAAO,CAEX,KAAKlc,IAAKkgN,GACRhkM,GAAUA,GAAQ,GAAKA,EAAQgkM,EAAU5rD,WAAWt0J,GACpDkc,GAAQ,CAGV,OAAOpc,GAAQ+5K,OAAO78I,KAAK8oD,IAAI5pE,GAAQpc,EAAQ+5K,OAAOn5K,QAWxD,QAASi2T,GAAYz2G,GAEnB,QAASzlL,KAEP,GAAKA,EAAMg/H,QAAX,CAEA,GAAI75I,GAAO6a,EAGP6uR,GAAQ,GAAI16P,MACZlK,EAAK4kQ,GAAQsN,GAAYtN,EAC7B1pS,GAAKisH,KAAOnnF,EACZ9kC,EAAKsZ,KAAO09R,EACZh3S,EAAK0pS,KAAOA,EACZsN,EAAWtN,CAIX,KAAK,GADD/9R,GAAO,GAAI7Y,OAAMrB,UAAU3Q,QACtBV,EAAI,EAAGA,EAAIurB,EAAK7qB,OAAQV,IAC/BurB,EAAKvrB,GAAKqR,UAAUrR,EAGtBurB,GAAK,GAAKzrB,EAAQ+2T,OAAOtrS,EAAK,IAE1B,gBAAoBA,GAAK,IAE3BA,EAAK69C,QAAQ,KAIf,IAAIh5C,GAAQ,CACZ7E,GAAK,GAAKA,EAAK,GAAGE,QAAQ,gBAAiB,SAASzC,EAAOhX,GAEzD,GAAc,OAAVgX,EAAgB,MAAOA,EAC3BoH,IACA,IAAI0mS,GAAYh3T,EAAQu0H,WAAWriH,EACnC,IAAI,kBAAsB8kT,GAAW,CACnC,GAAIzgR,GAAM9qB,EAAK6E,EACfpH,GAAQ8tS,EAAU52T,KAAK0f,EAAMy2B,GAG7B9qB,EAAKxK,OAAOqP,EAAO,GACnBA,IAEF,MAAOpH,KAITlpB,EAAQu2T,WAAWn2T,KAAK0f,EAAM2L,IAElBkP,EAAMvpB,KAAOpR,EAAQoR,KAAOrN,EAAQqN,IAAIsS,KAAK3f,IACnDuN,MAAMwO,EAAM2L,IAapB,MAVAkP,GAAMylL,UAAYA,EAClBzlL,EAAMg/H,QAAU35J,EAAQ25J,QAAQymD,GAChCzlL,EAAMw7R,UAAYn2T,EAAQm2T,YAC1Bx7R,EAAM4R,MAAQqqR,EAAYx2G,GAGtB,kBAAsBpgN,GAAQ43B,MAChC53B,EAAQ43B,KAAK+C,GAGRA,EAWT,QAASg8R,GAAOD,GACd12T,EAAQy2T,KAAKC,GAEb12T,EAAQovC,SACRpvC,EAAQi3T,QAKR,KAAK,GAHD36S,IAA+B,gBAAfo6S,GAA0BA,EAAa,IAAIp6S,MAAM,UACjEm1B,EAAMn1B,EAAM1b,OAEPV,EAAI,EAAGA,EAAIuxC,EAAKvxC,IAClBoc,EAAMpc,KACXw2T,EAAap6S,EAAMpc,GAAGyrB,QAAQ,MAAO,OACf,MAAlB+qS,EAAW,GACb12T,EAAQi3T,MAAMn2T,KAAK,GAAI08C,QAAO,IAAMk5Q,EAAW5vR,OAAO,GAAK,MAE3D9mC,EAAQovC,MAAMtuC,KAAK,GAAI08C,QAAO,IAAMk5Q,EAAa,OAWvD,QAASQ,KACPl3T,EAAQ22T,OAAO,IAWjB,QAASh9J,GAAQz2J,GACf,GAAIhD,GAAGuxC,CACP,KAAKvxC,EAAI,EAAGuxC,EAAMzxC,EAAQi3T,MAAMr2T,OAAQV,EAAIuxC,EAAKvxC,IAC/C,GAAIF,EAAQi3T,MAAM/2T,GAAGskC,KAAKthC,GACxB,OAAM,CAGV,KAAKhD,EAAI,EAAGuxC,EAAMzxC,EAAQovC,MAAMxuC,OAAQV,EAAIuxC,EAAKvxC,IAC/C,GAAIF,EAAQovC,MAAMlvC,GAAGskC,KAAKthC,GACxB,OAAM,CAGV,UAWF,QAAS6zT,GAAOxgR,GACd,MAAIA,aAAe30C,OAAc20C,EAAIpkC,OAASokC,EAAIvkC,QAC3CukC,EAhMTv2C,EAAUC,EAAOD,QAAU62T,EAAYl8R,MAAQk8R,EAAqB,QAAIA,EACxE72T,EAAQ+2T,OAASA,EACjB/2T,EAAQk3T,QAAUA,EAClBl3T,EAAQ22T,OAASA,EACjB32T,EAAQ25J,QAAUA,EAClB35J,EAAQ4hJ,SAAW,EAAQ,KAM3B5hJ,EAAQovC,SACRpvC,EAAQi3T,SAQRj3T,EAAQu0H,aAMR,IAAIuiM,KxwBqv7FyB12T,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,GywB7u7FxB,QAASm2B,GAAMyQ,GAEb,GADAA,EAAMP,OAAOO,KACTA,EAAIhmC,OAAS,KAAjB,CAGA,GAAIsoB,GAAQ,wHAAwHipF,KAClIvrE,EAEF,IAAK1d,EAAL,CAGA,GAAIzlB,GAAIi8I,WAAWx2H,EAAM,GAEzB,SADYA,EAAM,IAAM,MAAM+L,eAE5B,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,MAAOxxB,GAAI4hB,CACb,KAAK,OACL,IAAK,MACL,IAAK,IACH,MAAO5hB,GAAIR,CACb,KAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,MAAOQ,GAAIyuI,CACb,KAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,MAAOzuI,GAAIV,CACb,KAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,MAAOU,GAAIQ,CACb,KAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,MAAOR,EACT,SACE,UAYN,QAAS0zT,GAASvyQ,GAChB,MAAIA,IAAM3hD,EACDi6B,KAAKggH,MAAMt4F,EAAK3hD,GAAK,IAE1B2hD,GAAMstF,EACDh1G,KAAKggH,MAAMt4F,EAAKstF,GAAK,IAE1BttF,GAAM7hD,EACDm6B,KAAKggH,MAAMt4F,EAAK7hD,GAAK,IAE1B6hD,GAAM3gD,EACDi5B,KAAKggH,MAAMt4F,EAAK3gD,GAAK,IAEvB2gD,EAAK,KAWd,QAASwyQ,GAAQxyQ,GACf,MAAOyyQ,GAAOzyQ,EAAI3hD,EAAG,QACnBo0T,EAAOzyQ,EAAIstF,EAAG,SACdmlL,EAAOzyQ,EAAI7hD,EAAG,WACds0T,EAAOzyQ,EAAI3gD,EAAG,WACd2gD,EAAK,MAOT,QAASyyQ,GAAOzyQ,EAAInhD,EAAGP,GACrB,KAAI0hD,EAAKnhD,GAGT,MAAImhD,GAAS,IAAJnhD,EACAy5B,KAAK+oD,MAAMrhC,EAAKnhD,GAAK,IAAMP,EAE7Bg6B,KAAKssG,KAAK5kF,EAAKnhD,GAAK,IAAMP,EAAO,IAlJ1C,GAAIe,GAAI,IACJlB,EAAQ,GAAJkB,EACJiuI,EAAQ,GAAJnvI,EACJE,EAAQ,GAAJivI,EACJ7sH,EAAQ,OAAJpiB,CAgBRhD,GAAOD,QAAU,SAASu2C,EAAK57B,GAC7BA,EAAUA,KACV,IAAIrY,SAAci0C,EAClB,IAAa,WAATj0C,GAAqBi0C,EAAI31C,OAAS,EACpC,MAAOu1B,GAAMogB,EACR,IAAa,WAATj0C,QAAqB6lI,MAAM5xF,GACpC,MAAO57B,GAAQ28S,KAAOF,EAAQ7gR,GAAO4gR,EAAS5gR,EAEhD,MAAM,IAAI30C,OACR,wDACEmhB,KAAKC,UAAUuzB,MzwBu57Ff,SAAUt2C,EAAQD,EAASH,GAEjC,Y0wBv57FA,SAAS03T,GAAchgP,GACrB,MAAqC,sBAAzB16C,SAASz8B,KAAKm3E,GACnBA,EAAO5rD,QAAQ6rS,EAAkB,OAAO7rS,QAAQ8rS,EAAkB,IAClE;;;AAjCTx3T,EAAOD,QAAUu3T;;;AAMjB,GAAIC,GAAmB,kBACnBC,EAAmB,gB1wB497FjB,SAAUx3T,EAAQD,EAASH,GAEjC,Y2wB797FA,SAAS63T,GAAUngP,GAMjB,IALA,GAAI80E,IAAO,EACPzlH,EAAM+wR,EAAQt/N,EAAU9gB,GAAQj7D,MAAM,MACtCkpE,EAAM5+C,EAAIhmC,OACVmjJ,OAEKsI,EAAM7mE,GACbu+D,EAAIjjJ,KAAK82T,EAAOhxR,EAAIylH,IAGtB,OAAOtI,GAaT,QAAS1rD,GAAW9gB,GAClB,OAAkC,oBAA1B16C,EAASz8B,KAAKm3E,GAAgCA,EAAS,IAAI5rD,QAAQ,QAAS,KAatF,QAASgsS,GAASnlT,GAKhB,IAJA,GAAI65I,IAAO,EACP7mE,EAAMhzE,EAAI5R,OACVmjJ,OAEKsI,EAAM7mE,GACThzE,EAAI65I,IAAMtI,EAAIjjJ,KAAK0R,EAAI65I,GAG7B,OAAOtI,GAaT,QAAS6zK,GAAQrgP,GACf,MAAOA,GAAO5rD,QAAQ,UAAW,KAxEnC,GAAIkR,GAAW97B,OAAOC,UAAU67B;;;AA+EhC58B,EAAOD,QAAU03T,G3wBi/7FX,SAAUz3T,EAAQD,EAASH,G4wB9i8FjC,QAAS4hH,GAAiBI,EAAQm8C,EAAU+hE,GAS1C,IARA,GAAI7qM,GAAW6qM,EAAaD,EAAoBH,EAC5C/+N,EAASihH,EAAO,GAAGjhH,OACnB6pO,EAAY5oH,EAAOjhH,OACnBoqO,EAAWP,EACXotF,EAASjlT,MAAM63N,GACf8nC,EAAYxtC,IACZ17M,KAEG2hN,KAAY,CACjB,GAAIjrL,GAAQ8hE,EAAOmpH,EACfA,IAAYhtE,IACdj+G,EAAQyhE,EAASzhE,EAAO0hH,EAAUzD,KAEpCu0G,EAAYtkB,EAAUluM,EAAMn/C,OAAQ2xQ,GACpCslD,EAAO7sF,IAAajL,IAAe/hE,GAAap9J,GAAU,KAAOm/C,EAAMn/C,QAAU,KAC7E,GAAI02L,GAAS0zC,GAAYjrL,UAG/BA,EAAQ8hE,EAAO,EAEf,IAAIvxF,IAAS,EACTqpJ,EAAOk+I,EAAO,EAElB5yP,GACA,OAAS30C,EAAQ1vB,GAAUyoB,EAAOzoB,OAAS2xQ,GAAW,CACpD,GAAIjuQ,GAAQy7C,EAAMzvB,GACd68M,EAAWnvE,EAAWA,EAAS15J,GAASA,CAG5C,IADAA,EAASy7N,GAAwB,IAAVz7N,EAAeA,EAAQ,IACxCq1K,EACE8d,EAAS9d,EAAMwzD,GACfj4M,EAAS7L,EAAQ8jN,EAAUpN,IAC5B,CAEL,IADAiL,EAAWP,IACFO,GAAU,CACjB,GAAI53H,GAAQykN,EAAO7sF,EACnB,MAAM53H,EACEqkF,EAASrkF,EAAO+5H,GAChBj4M,EAAS2sF,EAAOmpH,GAAWmC,EAAUpN,IAE3C,QAAS96J,GAGT00G,GACFA,EAAK74K,KAAKqsO,GAEZ9jN,EAAOvoB,KAAKwD,IAGhB,MAAO+kB,GAtET,GAAIiuK,GAAW,EAAQ,KACnBqoC,EAAgB,EAAQ,KACxBG,EAAoB,EAAQ,KAC5Bt+G,EAAW,EAAQ,KACnBigD,EAAY,EAAQ,KACpBg2B,EAAW,EAAQ,KAGnBw2D,EAAY/wN,KAAKgpD,GAiErBjmF,GAAOD,QAAUyhH,G5wByk8FX,SAAUxhH,EAAQD,G6wBro8FxB,QAASu3L,GAAYjzL,GAEnB,MADAsa,MAAKk/I,SAASpuH,IAAIprC,EAAO2qT,GAClBrwS,KAdT,GAAIqwS,GAAiB,2BAiBrBhvT,GAAOD,QAAUu3L,G7wByp8FX,SAAUt3L,EAAQD,G8wBlq8FxB,QAASw3L,GAAYlzL,GACnB,MAAOsa,MAAKk/I,SAASnuH,IAAIrrC,GAG3BrE,EAAOD,QAAUw3L,G9wBkr8FX,SAAUv3L,EAAQD,EAASH,G+wBlr8FjC,QAAS+/N,GAAY7/K,EAAOz7C,EAAOu1L,GACjC,MAAOv1L,KAAUA,EACbwzT,EAAc/3Q,EAAOz7C,EAAOu1L,GAC5BG,EAAcj6I,EAAOg4Q,EAAWl+H,GAhBtC,GAAIG,GAAgB,EAAQ,KACxB+9H,EAAY,EAAQ,KACpBD,EAAgB,EAAQ,IAiB5B73T,GAAOD,QAAU4/N,G/wBss8FX,SAAU3/N,EAAQD,GgxBlt8FxB,QAAS+3T,GAAUzzT,GACjB,MAAOA,KAAUA,EAGnBrE,EAAOD,QAAU+3T,GhxBgu8FX,SAAU93T,EAAQD,GixBju8FxB,QAAS83T,GAAc/3Q,EAAOz7C,EAAOu1L,GAInC,IAHA,GAAIvpK,GAAQupK,EAAY,EACpBj5L,EAASm/C,EAAMn/C,SAEV0vB,EAAQ1vB,GACf,GAAIm/C,EAAMzvB,KAAWhsB,EACnB,MAAOgsB,EAGX,QAAQ,EAGVrwB,EAAOD,QAAU83T,GjxBkv8FX,SAAU73T,EAAQD,EAASH,GkxB/v8FjC,QAAS8hH,GAAoBr9G,GAC3B,MAAO07N,GAAkB17N,GAASA,KAVpC,GAAI07N,GAAoB,EAAQ,IAahC//N,GAAOD,QAAU2hH,GlxB+w8FX,SAAU1hH,EAAQD,EAASH,GmxB5x8FjC,GAAIm4T,GAAQ,EAAQ,IASpB/3T,GAAOD,QAAU,SAASi4T,EAAO7kN,EAAOkmC,GAEtC,GAAIi7E,GAAa,GAAkB,EAAQ,IAE3C,KAAIA,EAAW2jG,yBAAyB,CACtC3jG,EAAWnhH,MAASA,GAASA,EAAM5vG,IAAO4vG,EAAQ,IAAK,EAAQ,MAA+BA,GAC9FmhH,EAAWj7E,SAAWA,MACtBi7E,EAAW4jG,kBACX,IAAI7mI,GAAUijC,EAAWjjC,QACrB7yK,EAAQu5S,EAAMI,WAAW7jG,EAAWj7E,UACpC++K,GAAoB,MAAO,OAAQ,OAAQ,MAAO,QAAS,UAC3DC,GAAoB,MAAO,OAC/B/jG,GAAW2jG,4BAMX5mI,EAAQtwL,UAAUu3T,QAAU,SAASA,GAEnC,MADA95S,GAAM85S,QAAUA,EACT35S,MAOT0yK,EAAQtwL,UAAUw3T,YAAc,SAASA,GAEvC,MADA/5S,GAAM+5S,YAAcA,EACb55S,MAOT0yK,EAAQtwL,UAAUy3T,aAAe,SAASA,GAExC,MADAh6S,GAAMg6S,aAAeA,EACd75S,MAOT0yK,EAAQtwL,UAAU03T,MAAQ,SAASA,GAEjC,MADAj6S,GAAMi6S,MAAQA,EACP95S,MAOT0yK,EAAQtwL,UAAU23T,aAAe,SAASA,GAExC,MADAl6S,GAAMk6S,aAAeA,EACd/5S,MAOT0yK,EAAQtwL,UAAUq0F,WAAa,SAASA,GAEtC,MADA52E,GAAM42E,WAAaA,EACZz2E,MAOT0yK,EAAQtwL,UAAU43T,eAAiB,SAASA,GAE1C,MADAn6S,GAAMm6S,eAAiBA,EAChBh6S,MAOT0yK,EAAQtwL,UAAUijB,YAAc,SAASA,GAEvC,MADAxF,GAAMwF,YAAsC,iBAAhBA,IAA6BA,EAClDrF,MAST0yK,EAAQtwL,UAAU63T,sBAAwB,SAASA,GAEjD,MADAp6S,GAAMo6S,sBAA0D,iBAA1BA,IAAuCA,EACtEj6S,MAOT0yK,EAAQtwL,UAAU83T,kBAAoB,SAASA,GAE7C,MADAr6S,GAAMq6S,2BAA4BA,GAAqCA,EAChEl6S,MAQL0yK,EAAQtwL,UAAUgB,UACpBsvL,EAAQtwL,UAAUowC,KAAO,SAAS6I,EAASh4C,GACzC,MAAO2c,MAAK4mE,IAAI,SAAU1hF,EAAKyrE,EAAUlrE,GACvCP,EAAM7B,EAAO6B,GAAOm2C,EAAQs1B,EAAUlrE,OAQ5CitL,EAAQtwL,UAAU+3T,QAAUznI,EAAQtwL,UAAUwkF,IAK9C8rG,EAAQtwL,UAAUg4T,KAAO,SAAS14R,GAChC7hB,EAAQu5S,EAAMI,WAAW7jG,EAAWj7E,UACpC16H,KAAKm6S,QAAQz4R,IAOfgxJ,EAAQtwL,UAAUwkF,IAAM,SAASllD,GAC/B,GAAI24R,GAAWx6S,CAIf,IAHAA,EAAQu5S,EAAMI,WAAW7jG,EAAWj7E,UACpC16H,KAAKs6S,gBAAkBt6S,KAAKs6S,oBAC5Bt6S,KAAKs6S,gBAAkBt6S,KAAKs6S,gBAAgBznS,OAAO7S,KAAKu6S,gBACpDd,EAAiB/9S,QAAQsE,KAAK4rB,OAAO8oB,eAAe,CACtD,GAAI30C,GAAQC,KACRva,EAAM2zT,EAAMhyC,OAAOzxD,EAAY31M,KAAMq6S,IACrCX,EAAiBh+S,QAAQsE,KAAK4rB,OAAO8oB,eACvCihK,EAAWnhH,MAAM5vG,IAAIa,EAAK,SAAUP,EAAKyrE,GACvC,GAAIzrE,IAAOyrE,GAAa0pP,EAASh1S,YAG7B,CACF,IAAGg1S,EAASV,QA0CV,MAAOP,GAAMoB,iBAAiB94R,EAAI,KAAM,KAAMj8B,EAzC9C,IAAG40T,EAASJ,sBAAsB,CAChC,GAAItkG,EAAW4jG,gBAAgB9zT,GAG7B,MAAOkwN,GAAW4jG,gBAAgB9zT,GAAKvD,KAAKw/B,EAF5Ci0L,GAAW4jG,gBAAgB9zT,MAK/Bsa,EAAMq6S,KAAK,SAAUl1T,EAAKyrE,GACxB,GAAGzrE,EAED,MADAk0T,GAAMqB,sBAAsBJ,EAAU1kG,EAAYlwN,EAAKP,EAAKyrE,GACrDyoP,EAAMoB,iBAAiB94R,EAAIx8B,EAAKyrE,EAAUlrE,EAE9C,KAAIP,GAAOyrE,EAAS,CAWvB,GAVAA,EAAS49O,UAAYxuS,EAAMu6S,gBAEzB3pP,EADC0pP,EAASP,MACCO,EAASP,MAAMnpP,GAEpB0pP,EAASN,aACJppP,EAAS0pP,EAASN,eAAiB,KAGnCX,EAAMsB,YAAY/pP,GAE3ByoP,EAAM7uQ,QAAQomB,KAAa0pP,EAASL,eAYtC,aADOrkG,GAAW4jG,gBAAgB9zT,GAC3B2zT,EAAMoB,iBAAiB94R,EAAIx8B,EAAKyrE,EAAUlrE,EAXjD,IAAIm2J,GAAUy+J,EAASH,mBAAqB,IACvB,kBAAXt+J,KACRA,EAAUw9J,EAAMuB,6BAA6BhlG,EAAY0kG,IAE3D1kG,EAAWnhH,MAAM1jE,IAAIrrC,EAAKkrE,EAAU0pP,EAAS5jO,WAAYmlE,EAAS,WAEhE,MADAw9J,GAAMqB,sBAAsBJ,EAAU1kG,EAAYlwN,EAAKP,EAAKyrE,GACrDyoP,EAAMoB,iBAAiB94R,EAAIx8B,EAAKyrE,EAAUlrE,YAlC3D2zT,GAAMoB,iBAAiB94R,EAAIx8B,EAAKyrE,EAAUlrE,KAmD9Cua,KAAKo6S,KAAK,SAAUl1T,EAAKyrE,GACvB,GAAGzrE,EACD,MAAOk0T,GAAMoB,iBAAiB94R,EAAIx8B,EAAKyrE,EAAUlrE,EAEnD,KAAIP,GAAOyrE,EAAS,CAClB,GAAIiqP,GAASn1T,EAAIsnB,QAAQ,aAAehN,EAAM6rB,OAAS,IAAK,kBACxDivR,EAAUp1T,EAAIsnB,QAAQ,aAAehN,EAAM6rB,OAAS,IAAK,kBAC7D+pL,GAAWnhH,MAAMw+E,KAAK4nI,EAAQC,GAAU,WACtCzB,EAAMoB,iBAAiB94R,EAAIx8B,EAAKyrE,EAAUlrE,YAOlDua,MAAKo6S,KAAK,SAAUl1T,EAAKyrE,GACvB,MAAOyoP,GAAMoB,iBAAiB94R,EAAIx8B,EAAKyrE,aAM/C,IAAI0oP,EACF,MAAO1jG,KnxBsy8FL,SAAUt0N,EAAQD,GoxB5g9FxBC,EAAOD,SAOLgmR,OAAQ,SAASiyC,EAAOtnI,EAAK+oI,GAC3B,GAAIC,GAAc,KACdC,EAAe,KACfhoS,EAAShT,KAAKi7S,eAAelpI,GAC7Bh2K,EAAUiE,KAAKk7S,iBAAiBnpI,EAKpC,QAJG+oI,EAAOlB,aAAekB,EAAOjB,gBAC9BkB,EAAeD,EAAkB,YAAI96S,KAAKm7S,SAASn7S,KAAKo7S,YAAYpoS,GAAS8nS,EAAOlB,aAAe5mS,EACnGgoS,EAAgBF,EAAmB,aAAI96S,KAAKm7S,SAASn7S,KAAKo7S,YAAYr/S,GAAU++S,EAAOjB,cAAaA,GAAS99S,GAExGoI,KAAKC,WACVi3S,UAAWhC,EAAM7kN,MAAM6mN,UACvBzvR,OAAQmmJ,EAAInmJ,OACZ0vR,IAAKvpI,EAAIn+H,IACT5gC,OAAQ+nS,GAAe/nS,GAAU,KACjCjX,QAASi/S,GAAgBj/S,GAAW,QAQxCk/S,eAAgB,SAASlpI,GACvB,MAAGA,IAAOA,EAAIvsE,KAAOxlG,KAAKuqC,QAAQwnI,EAAIvsE,IAC7BusE,EAAIvsE,GAELusE,GAAOA,EAAIwpI,MACVv7S,KAAKw7S,WAAWzpI,EAAIwpI,OAErBxpI,GAAOA,EAAIA,IACV/xK,KAAKy7S,YAAY1pI,EAAIA,IAAIt2K,MAE1Bs2K,GAAOA,EAAIY,OACV3yK,KAAKy7S,YAAY1pI,EAAIY,OAAO1gK,KAAK,MAEnC,MAOTipS,iBAAkB,SAASnpI,GAEzB,MAAGA,IAAOA,EAAIa,QACL5yK,KAAKm7S,SAASppI,EAAIa,SAAU,aAAc,eAE3Cb,GAAOA,EAAIA,KAAOA,EAAIA,IAAI2pI,SACzB17S,KAAKm7S,SAASppI,EAAIA,IAAI2pI,UAAW,aAAc,eAEhD3pI,GAAOA,EAAI3hI,OACVpwC,KAAKm7S,SAASppI,EAAI3hI,QAAS,aAAc,eAE3C,MAOTorQ,WAAY,SAAS5nT,GACnB,GAAGA,GAAOA,EAAI5R,OAAO,CAEnB,IAAI,GADAwD,MACIlE,EAAI,EAAGA,EAAIsS,EAAI5R,OAAQV,IAG7B,IAAI,GAFA0mC,GAAMp0B,EAAItS,GACVq6T,EAAU3zR,EAAItqB,MAAM,KAChBskB,EAAI,EAAGA,EAAI25R,EAAQ35T,OAAQggC,IAAI,CACrC,GAAI45R,GAAWD,EAAQ35R,GAAGtkB,MAAM,IAChClY,GAAIo2T,EAAS,IAAMA,EAAS,GAGhC,MAAOp2T,GAET,MAAO,OAOTi2T,YAAa,SAASzzR,GACpB,GAAGA,EAAI,CACL,GAAIxiC,OACAwiC,EAAItsB,QAAQ,OAEdssB,EADWA,EAAItqB,MAAM,KACV,GAGb,KAAI,GADAi+S,GAAU3zR,EAAItqB,MAAM,KAChBpc,EAAI,EAAGA,EAAIq6T,EAAQ35T,OAAQV,IAAI,CACrC,GAAIs6T,GAAWD,EAAQr6T,GAAGoc,MAAM,IAChClY,GAAIo2T,EAAS,IAAMA,EAAS,GAE9B,MAAOp2T,GAET,MAAO,OAST21T,SAAU,SAAS31T,EAAKqa,EAAOg8S,GAC7B,IAAI,GAAIv6T,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAI,CACnC,GAAIsvC,GAAO/wB,EAAMve,EACdu6T,UACMr2T,GAAIorC,EAAKva,qBAEX7wB,GAAIorC,GAEb,MAAOprC,IAOTk1T,YAAa,SAASniS,GACpB,GAAIujS,KAOJ,OANAA,GAAY77P,KAAO1nC,EAAE0nC,KACrB67P,EAAYhgN,KAAOvjF,EAAEujF,KACrBggN,EAAYzpI,QAAU95J,EAAE85J,QACxBypI,EAAYhpI,WAAav6J,EAAEu6J,WAC3BgpI,EAAYxuQ,OAAS/0B,EAAE+0B,OACvBwuQ,EAAY/nT,GAAKwkB,EAAExkB,GACZ+nT,GAOTvxQ,QAAS,SAAS5S,GAChB,OAAM,IAAEA,GAAyB,OAARA,GAA+B,gBAAPA,IAA8C,GAA3Bx1C,OAAO6I,KAAK2sC,GAAK31C,QAOvFo5T,YAAa,SAAS51T,GACpB,GAAIylL,KACJ,KAAI,GAAI9qG,KAAQ36E,GACVA,EAAInD,eAAe89E,KACrB8qG,EAAO9qG,GAAQ36E,EAAI26E,GAGvB,OAAO8qG,IAGTwvI,sBAAuB,SAASJ,EAAU1kG,EAAYlwN,EAAKP,EAAKyrE,GAC9D,GAAG0pP,EAASJ,sBAAsB,CAChC,GAAGtkG,EAAW4jG,gBAAgB9zT,MAAUua,KAAKuqC,QAAQomB,IAAa0pP,EAASL,gBAAgB,CACzF,GAAI94S,GAAOlB,IACW21M,GAAW4jG,gBAAgB9zT,GACjCs6C,QAAQ,SAAUre,GAChCxgB,EAAKs5S,iBAAiB94R,EAAIx8B,EAAKyrE,EAAUlrE,WAGtCkwN,GAAW4jG,gBAAgB9zT,KAQtC+zT,WAAY,SAASn1T,GACnB,OACEs1T,QAA+B,iBAAdt1T,GAAEs1T,SAAyBt1T,EAAEs1T,QAC9CK,eAA6C,iBAArB31T,GAAE21T,gBAAgC31T,EAAE21T,eAC5DF,MAAOz1T,EAAEy1T,MACTF,YAAav1T,EAAEu1T,YACfC,aAAcx1T,EAAEw1T,aAChBE,aAAc11T,EAAE01T,aAChBtjO,WAAYpyF,EAAEoyF,WACdpxE,YAAahhB,EAAEghB,YACf40S,sBAAuB51T,EAAE41T,sBACzBC,kBAAmB71T,EAAE61T,oBASzBS,6BAA8B,SAAStB,EAAOgB,GAC5C,MAAO,UAAS50T,EAAKi8B,GACnBj8B,EAAM0e,KAAKoT,MAAM9xB,EACjB,IAAImmC,GAASnmC,EAAImmC,OAAOvV,cACpBggE,EAAUgjO,EAAMztR,GAAQnmC,EAAI61T,KAC7B3B,QAAQU,EAASV,SACjBC,YAAYS,EAAST,aACrBC,aAAaQ,EAASR,cACtBC,MAAMO,EAASP,OACfC,aAAaM,EAASN,cACtBtjO,WAAW4jO,EAAS5jO,YACpBujO,eAAeK,EAASL,eACxBv0T,GAAIutB,QACLqjE,EAAQ96E,MAAM9V,EAAIutB,QAEjBvtB,EAAIsW,SACLs6E,EAAQvlD,IAAIrrC,EAAIsW,SAElBs6E,EAAQzP,IAAIllD,KAWhB84R,iBAAkB,SAAS94R,EAAIx8B,EAAKyrE,EAAUlrE,GAC5C,GAAiB,IAAdi8B,EAAG1/B,OACJ0/B,EAAGivC,OAEA,MAAGjvC,EAAG1/B,OAAS,GAIlB,KAAM,IAAIgB,OAAM,sFAHhB0+B,GAAGx8B,EAAKyrE,EAAUlrE,OpxByh9FlB,SAAUpE,EAAQD,EAASH,GqxBtu9FjC,QAASqhB,MAaT,QAASy5S,GAAOv2T,GAGd,UAFay4B,SAASz8B,KAAKgE,IAGzB,IAAK,gBACL,IAAK,gBACL,IAAK,oBACH,OAAM,CACR,SACE,OAAM,GA0CZ,QAASs8B,GAASt8B,GAChB,MAAOA,KAAQrD,OAAOqD,GAWxB,QAAS4rL,GAAU5rL,GACjB,IAAKs8B,EAASt8B,GAAM,MAAOA,EAC3B,IAAI6rL,KACJ,KAAK,GAAI5rL,KAAOD,GACV,MAAQA,EAAIC,IACd6rL,EAAwBD,EAAO5rL,EAAKD,EAAIC,GAG5C,OAAO4rL,GAAMp/J,KAAK,KAYpB,QAASq/J,GAAwBD,EAAO5rL,EAAKkyC,GAC3C,GAAI3jC,MAAM+c,QAAQ4mB,GAChB,MAAOA,GAAIoI,QAAQ,SAASpH,GAC1B24I,EAAwBD,EAAO5rL,EAAKkzC,IAGxC04I,GAAMnvL,KAAKqrB,mBAAmB9nB,GAC1B,IAAM8nB,mBAAmBoqB,IAiB/B,QAAS65I,GAAYxpJ,GAMnB,IAAK,GAHD22G,GACA8yC,EAHAjsL,KACA6rL,EAAQrpJ,EAAItqB,MAAM,KAIbpc,EAAI,EAAGuxC,EAAMw+I,EAAMrvL,OAAQV,EAAIuxC,IAAOvxC,EAC7CmwL,EAAOJ,EAAM/vL,GACbq9I,EAAQ8yC,EAAK/zK,MAAM,KACnBlY,EAAIw8G,mBAAmB28B,EAAM,KAAO38B,mBAAmB28B,EAAM,GAG/D,OAAOn5I,GA8DT,QAASksL,GAAY1pJ,GACnB,GAEItW,GACAgU,EACAs/G,EACArtG,EALA1H,EAAQjI,EAAItqB,MAAM,SAClBi0K,IAMJ1hJ,GAAMtd,KAEN,KAAK,GAAIrxB,GAAI,EAAGuxC,EAAM5C,EAAMjuC,OAAQV,EAAIuxC,IAAOvxC,EAC7CokC,EAAOuK,EAAM3uC,GACbowB,EAAQgU,EAAKhqB,QAAQ,KACrBspI,EAAQt/G,EAAK7xB,MAAM,EAAG6d,GAAO2E,cAC7BshB,EAAM4rD,EAAK79D,EAAK7xB,MAAM6d,EAAQ,IAC9BigK,EAAO3sC,GAASrtG,CAGlB,OAAOg6I,GAWT,QAASC,GAAOC,GACd,MAAO,cAAcjsJ,KAAKisJ,GAW5B,QAASnuL,GAAKskC,GACZ,MAAOA,GAAItqB,MAAM,SAASpb,QAW5B,QAAS0wB,GAAOgV,GACd,MAAO/8B,GAAO+8B,EAAItqB,MAAM,SAAU,SAASlY,EAAKwiC,GAC9C,GAAI22G,GAAQ32G,EAAItqB,MAAM,SAClBjY,EAAMk5I,EAAMr8I,QACZq1C,EAAMgnG,EAAMr8I,OAGhB,OADImD,IAAOkyC,IAAKnyC,EAAIC,GAAOkyC,GACpBnyC,OAkDX,QAASssL,GAASC,EAAKh2K,GACrBA,EAAUA,MACViE,KAAK+xK,IAAMA,EACX/xK,KAAKgyK,IAAMhyK,KAAK+xK,IAAIC,IAEpBhyK,KAAK87F,KAA2B,QAAlB97F,KAAK+xK,IAAInmJ,SAA8C,KAA1B5rB,KAAKgyK,IAAIC,cAAiD,SAA1BjyK,KAAKgyK,IAAIC,wBAAoCjyK,KAAKgyK,IAAIC,aAC5HjyK,KAAKgyK,IAAIE,aACT,KACLlyK,KAAKmyK,WAAanyK,KAAK+xK,IAAIC,IAAIG,WAC/BnyK,KAAKg8S,oBAAoBh8S,KAAKgyK,IAAI1kI,QAClCttC,KAAKowC,OAASpwC,KAAKqyK,QAAUX,EAAY1xK,KAAKgyK,IAAIM,yBAIlDtyK,KAAKowC,OAAO,gBAAkBpwC,KAAKgyK,IAAIO,kBAAkB,gBACzDvyK,KAAKi8S,oBAAoBj8S,KAAKowC,QAC9BpwC,KAAKigD,KAA0B,QAAnBjgD,KAAK+xK,IAAInmJ,OACjB5rB,KAAKk8S,UAAUl8S,KAAK87F,KAAO97F,KAAK87F,KAAO97F,KAAKgyK,IAAIrhH,UAChD,KA8IN,QAAS+hH,GAAQ9mJ,EAAQgoB,GACvB,GAAI1yC,GAAOlB,IACXizK,GAAQzxL,KAAKwe,MACbA,KAAK2yK,OAAS3yK,KAAK2yK,WACnB3yK,KAAK4rB,OAASA,EACd5rB,KAAK4zC,IAAMA,EACX5zC,KAAKowC,UACLpwC,KAAK4yK,WACL5yK,KAAKq4E,GAAG,MAAO,WACb,GAAInzF,GAAM,KACN4iI,EAAM,IAEV,KACEA,EAAM,GAAIgqD,GAAS5wK,GACnB,MAAM1e,GAMN,MALA0C,GAAM,GAAIlC,OAAM,0CAChBkC,EAAIqyB,SACJryB,EAAIq4K,SAAW/6K,EAEf0C,EAAI2tL,YAAc3xK,EAAK8wK,KAAO9wK,EAAK8wK,IAAIE,aAAehxK,EAAK8wK,IAAIE,aAAe,KACvEhxK,EAAKu1B,SAASvxC,GAKvB,GAFAgc,EAAKyqB,KAAK,WAAYm8F,GAElB5iI,EACF,MAAOgc,GAAKu1B,SAASvxC,EAAK4iI,EAG5B,IAAIA,EAAIx6E,QAAU,KAAOw6E,EAAIx6E,OAAS,IACpC,MAAOpsC,GAAKu1B,SAASvxC,EAAK4iI,EAG5B,IAAIirD,GAAU,GAAI/vL,OAAM8kI,EAAIqqD,YAAc,6BAC1CY,GAAQxV,SAAWr4K,EACnB6tL,EAAQpiH,SAAWm3D,EACnBirD,EAAQzlI,OAASw6E,EAAIx6E,OAErBpsC,EAAKu1B,SAASs8I,EAASjrD,KA0hB3B,QAASzxC,GAAQzqD,EAAQgoB,GAEvB,MAAI,kBAAqBA,GAChB,GAAI8+H,GAAQ,MAAO9mJ,GAAQg7C,IAAIhzB,GAIpC,GAAKjhD,UAAU3Q,OACV,GAAI0wL,GAAQ,MAAO9mJ,GAGrB,GAAI8mJ,GAAQ9mJ,EAAQgoB,GAgD7B,QAASo/H,GAAIp/H,EAAK55B,GAChB,GAAI+3J,GAAM17F,EAAQ,SAAUziC,EAE5B,OADI55B,IAAI+3J,EAAInrG,IAAI5sD,GACT+3J,EAlmCT,GAOIviI,GAPAyjI,EAAU,EAAQ,KAClBhoL,EAAS,EAAQ,IAQnBukD,GADoB,mBAAX9tD,QACFA,OACkB,mBAATwf,MACTA,KAEAlB,KAqCTq2E,EAAQ88F,OAAS,WACf,MAAI3jI,EAAK4jI,gBACA5jI,EAAKl0C,UAAY,SAAWk0C,EAAKl0C,SAAS2B,UACvCuyC,EAAK6jI,eACf,MAAO,IAAID,eAEX,KAAM,MAAO,IAAIC,eAAc,qBAAwB,MAAM7wL,IAC7D,IAAM,MAAO,IAAI6wL,eAAc,sBAAyB,MAAM7wL,IAC9D,IAAM,MAAO,IAAI6wL,eAAc,sBAAyB,MAAM7wL,IAC9D,IAAM,MAAO,IAAI6wL,eAAc,kBAAqB,MAAM7wL,IAE5D,OAAM,EAWR,IAAI+gG,GAAO,GAAGA,KACV,SAASl+F,GAAK,MAAOA,GAAEk+F,QACvB,SAASl+F,GAAK,MAAOA,GAAE0nB,QAAQ,eAAgB,IAwDlDspE,GAAQi9F,gBAAkBlC,EA6B3B/6F,EAAQm7F,YAAcA,EAStBn7F,EAAQ4vB,OACNrK,KAAM,YACNqwE,KAAM,mBACNsH,IAAK,kBACLC,WAAY,oCACZ,KAAQ,oCACR,YAAa,qCAYdn9F,EAAQ+6F,WACN,oCAAqCA,EACrC,mBAAoBjtK,KAAKC,WAY5BiyE,EAAQ9+D,OACN,oCAAqCi6J,EACrC,mBAAoBrtK,KAAKoT,OAuJ3Bu6J,EAAS1vL,UAAUwC,IAAM,SAASogJ,GAChC,MAAOhlI,MAAKowC,OAAO40F,EAAM3uH,gBAe3By7J,EAAS1vL,UAAU65T,oBAAsB,SAAS7rQ,GAEhD,GAAIqjI,GAAKzzK,KAAKowC,OAAO,iBAAmB,EACxCpwC,MAAKtc,KAAOA,EAAK+vL,EAGjB,IAAIjuL,GAAMwtB,EAAOygK,EACjB,KAAK,GAAIhuL,KAAOD,GAAKwa,KAAKva,GAAOD,EAAIC,IAcvCqsL,EAAS1vL,UAAU85T,UAAY,SAASl0R,GACtC,GAAIzQ,GAAQ8+D,EAAQ9+D,MAAMvX,KAAKtc,KAC/B,OAAO6zB,IAASyQ,IAAQA,EAAIhmC,QAAUgmC,YAAe7lC,SACjDo1B,EAAMyQ,GACN,MAwBN8pJ,EAAS1vL,UAAU45T,oBAAsB,SAAS1uQ,GAEjC,OAAXA,IACFA,EAAS,IAGX,IAAI5pD,GAAO4pD,EAAS,IAAM,CAG1BttC,MAAKstC,OAASttC,KAAK8yK,WAAaxlI,EAChCttC,KAAK0zK,WAAahwL,EAGlBsc,KAAKvN,KAAO,GAAK/O,EACjBsc,KAAKjM,GAAK,GAAKrQ,EACfsc,KAAK2zK,YAAc,GAAKjwL,EACxBsc,KAAK4zK,YAAc,GAAKlwL,EACxBsc,KAAK5a,OAAS,GAAK1B,GAAQ,GAAKA,IAC5Bsc,KAAK6zK,UAIT7zK,KAAK8zK,SAAW,KAAOxmI,EACvBttC,KAAK+zK,UAAY,KAAOzmI,EACxBttC,KAAKg0K,WAAa,KAAO1mI,EACzBttC,KAAKi0K,aAAe,KAAO3mI,EAC3BttC,KAAKk0K,cAAgB,KAAO5mI,EAC5BttC,KAAKm0K,SAAW,KAAO7mI,EACvBttC,KAAKo0K,UAAY,KAAO9mI,GAU1BwkI,EAAS1vL,UAAUyxL,QAAU,WAC3B,GAAI9B,GAAM/xK,KAAK+xK,IACXnmJ,EAASmmJ,EAAInmJ,OACbgoB,EAAMm+H,EAAIn+H,IAEV5tB,EAAM,UAAY4F,EAAS,IAAMgoB,EAAM,KAAO5zC,KAAKstC,OAAS,IAC5DpoD,EAAM,GAAIlC,OAAMgjC,EAKpB,OAJA9gC,GAAIooD,OAASttC,KAAKstC,OAClBpoD,EAAI0mC,OAASA,EACb1mC,EAAI0uD,IAAMA,EAEH1uD,GAOTmxF,EAAQy7F,SAAWA,EAwDnBmB,EAAQP,EAAQtwL,WAMhBswL,EAAQtwL,UAAUshH,IAAM,SAAS1pF,GAE/B,MADAA,GAAGha,MACIA,MAWT0yK,EAAQtwL,UAAUU,QAAU,SAASkjD,GAEnC,MADAhmC,MAAKq1K,SAAWrvI,EACThmC,MAUT0yK,EAAQtwL,UAAUS,aAAe,WAG/B,MAFAmd,MAAKq1K,SAAW,EAChBxyL,aAAamd,KAAKu4G,QACXv4G,MAUT0yK,EAAQtwL,UAAU6zL,MAAQ,WACxB,IAAIj2K,KAAKm8S,QAKT,MAJAn8S,MAAKm8S,WACLn8S,KAAKgyK,IAAIiE,QACTj2K,KAAKnd,eACLmd,KAAK2rB,KAAK,SACH3rB,MAuBT0yK,EAAQtwL,UAAU0uC,IAAM,SAASk0G,EAAOrtG,GACtC,GAAI7V,EAASkjH,GAAQ,CACnB,IAAK,GAAIv/I,KAAOu/I,GACdhlI,KAAK8wB,IAAIrrC,EAAKu/I,EAAMv/I,GAEtB,OAAOua,MAIT,MAFAA,MAAK4yK,QAAQ5tC,EAAM3uH,eAAiBshB,EACpC33B,KAAKowC,OAAO40F,GAASrtG,EACd33B,MAiBT0yK,EAAQtwL,UAAUksT,MAAQ,SAAStpK,GAGjC,aAFOhlI,MAAK4yK,QAAQ5tC,EAAM3uH,qBACnBrW,MAAKowC,OAAO40F,GACZhlI,MAWT0yK,EAAQtwL,UAAUisT,UAAY,SAASrpK,GACrC,MAAOhlI,MAAK4yK,QAAQ5tC,EAAM3uH,gBAyB5Bq8J,EAAQtwL,UAAUsB,KAAO,SAASA,GAEhC,MADAsc,MAAK8wB,IAAI,eAAgBulD,EAAQ4vB,MAAMviH,IAASA,GACzCsc,MAYT0yK,EAAQtwL,UAAUm1B,MAAQ,SAASyC,GAEjC,MADAha,MAAKiuS,QAAUj0R,EACRha,MAuBT0yK,EAAQtwL,UAAUkyL,OAAS,SAAS5wL,GAElC,MADAsc,MAAK8wB,IAAI,SAAUulD,EAAQ4vB,MAAMviH,IAASA,GACnCsc,MAYT0yK,EAAQtwL,UAAU81B,KAAO,SAASq8J,EAAMC,GACtC,GAAIxsJ,GAAMysJ,KAAKF,EAAO,IAAMC,EAE5B,OADAx0K,MAAK8wB,IAAI,gBAAiB,SAAW9I,GAC9BhoB,MAiBT0yK,EAAQtwL,UAAUmZ,MAAQ,SAASo8B,GAGjC,MAFI,gBAAmBA,KAAKA,EAAMy5I,EAAUz5I,IACxCA,GAAK33B,KAAK2yK,OAAOzwL,KAAKy1C,GACnB33B,MAmBT0yK,EAAQtwL,UAAU4iJ,MAAQ,SAAS1gJ,EAAMqzC,GAGvC,MAFK33B,MAAKg1K,YAAWh1K,KAAKg1K,UAAY,GAAIxlI,GAAKylI,UAC/Cj1K,KAAKg1K,UAAUp6H,OAAOt2D,EAAMqzC,GACrB33B,MAoBT0yK,EAAQtwL,UAAUwyL,OAAS,SAAS5vC,EAAO6vC,EAAMC,GAG/C,MAFK90K,MAAKg1K,YAAWh1K,KAAKg1K,UAAY,GAAIxlI,GAAKylI,UAC/Cj1K,KAAKg1K,UAAUp6H,OAAOoqF,EAAO6vC,EAAMC,GAAYD,EAAKvwL,MAC7C0b,MA2CT0yK,EAAQtwL,UAAUkyH,KAAO,SAASxtE,GAChC,GAAIthD,GAAMs8B,EAASglB,GACfpjD,EAAOsc,KAAKquS,UAAU,eAG1B,IAAI7oT,GAAOs8B,EAAS9hB,KAAK+mC,OACvB,IAAK,GAAIthD,KAAOqhD,GACd9mC,KAAK+mC,MAAMthD,GAAOqhD,EAAKrhD,OAEhB,gBAAmBqhD,IACvBpjD,GAAMsc,KAAKtc,KAAK,QACrBA,EAAOsc,KAAKquS,UAAU,gBAEpBruS,KAAK+mC,MADH,qCAAuCrjD,EAC5Bsc,KAAK+mC,MACd/mC,KAAK+mC,MAAQ,IAAMD,EACnBA,GAEU9mC,KAAK+mC,OAAS,IAAMD,GAGpC9mC,KAAK+mC,MAAQD,CAGf,QAAKthD,GAAOu2T,EAAOj1Q,GAAc9mC,MAC5Btc,GAAMsc,KAAKtc,KAAK,QACdsc,OAYT0yK,EAAQtwL,UAAUq0C,SAAW,SAASvxC,EAAK4iI,GACzC,GAAI9tG,GAAKha,KAAK61B,SACd71B,MAAKnd,eACLm3B,EAAG90B,EAAK4iI,IASV4qD,EAAQtwL,UAAU8yL,iBAAmB,WACnC,GAAIhwL,GAAM,GAAIlC,OAAM,+JACpBkC,GAAIiwL,eAEJjwL,EAAIooD,OAASttC,KAAKstC,OAClBpoD,EAAI0mC,OAAS5rB,KAAK4rB,OAClB1mC,EAAI0uD,IAAM5zC,KAAK4zC,IAEf5zC,KAAKy2B,SAASvxC,IAShBwtL,EAAQtwL,UAAUg6T,aAAe,WAC/B,GAAIt5T,GAAUkd,KAAKq1K,SACfnwL,EAAM,GAAIlC,OAAM,cAAgBF,EAAU,cAC9CoC,GAAIpC,QAAUA,EACdkd,KAAKy2B,SAASvxC,IAchBwtL,EAAQtwL,UAAU+zL,gBAAkB,WAElC,MADAn2K,MAAKk2K,oBACEl2K,MAYT0yK,EAAQtwL,UAAUwkF,IAAM,SAAS5sD,GAC/B,GAAI9Y,GAAOlB,KACPgyK,EAAMhyK,KAAKgyK,IAAM37F,EAAQ88F,SACzB53K,EAAQyE,KAAK2yK,OAAO1gK,KAAK,KACzBnvB,EAAUkd,KAAKq1K,SACfvuI,EAAO9mC,KAAKg1K,WAAah1K,KAAK+mC,KAGlC/mC,MAAK61B,UAAY7b,GAAM1X,EAGvB0vK,EAAIuD,mBAAqB,WACvB,GAAI,GAAKvD,EAAIwD,WAAb,CAIA,GAAIloI,EACJ,KAAMA,EAAS0kI,EAAI1kI,OAAS,MAAM9qD,GAAK8qD,EAAS,EAEhD,GAAI,GAAKA,EAAQ,CACf,GAAIpsC,EAAKu0K,SAAU,MAAOv0K,GAAKk7S,cAC/B,IAAIl7S,EAAKi7S,QAAS,MAClB,OAAOj7S,GAAKg0K,mBAEdh0K,EAAKyqB,KAAK,QAIZ,IAAIgqJ,GAAiB,SAASnzL,GACxBA,EAAEglJ,MAAQ,IACZhlJ,EAAEozL,QAAUpzL,EAAEqzL,OAASrzL,EAAEglJ,MAAQ,KAEnChlJ,EAAEy+I,UAAY,WACd//H,EAAKyqB,KAAK,WAAYnpC,GAEpBwd,MAAK81K,aAAa,cACpB9D,EAAI+D,WAAaJ,EAEnB,KACM3D,EAAIgE,QAAUh2K,KAAK81K,aAAa,cAClC9D,EAAIgE,OAAOD,WAAaJ,GAE1B,MAAMnzL,IA6BR,GAtBIM,IAAYkd,KAAKu4G,SACnBv4G,KAAKu4G,OAASt0H,WAAW,WACvBid,EAAKu0K,YACLv0K,EAAK+0K,SACJnzL,IAIDyY,IACFA,EAAQ86E,EAAQi9F,gBAAgB/3K,GAChCyE,KAAK4zC,MAAQ5zC,KAAK4zC,IAAIl4C,QAAQ,KAC1B,IAAMH,EACN,IAAMA,GAIZy2K,EAAIzkF,KAAKvtF,KAAK4rB,OAAQ5rB,KAAK4zC,KAAIA,GAG3B5zC,KAAKk2K,mBAAkBlE,EAAImE,oBAG3B,OAASn2K,KAAK4rB,QAAU,QAAU5rB,KAAK4rB,QAAU,gBAAmBkb,KAASi1Q,EAAOj1Q,GAAO,CAE7F,GAAI4D,GAAc1qC,KAAKquS,UAAU,gBAC7Bj9H,EAAYpxK,KAAKiuS,SAAW53N,EAAQ+6F,UAAU1mI,EAAcA,EAAYhtC,MAAM,KAAK,GAAK,KACvF0zK,GAAaQ,EAAOlnI,KAAc0mI,EAAY/6F,EAAQ+6F,UAAU,qBACjEA,IAAWtqI,EAAOsqI,EAAUtqI,IAIlC,IAAK,GAAIk+F,KAAShlI,MAAKowC,OACjB,MAAQpwC,KAAKowC,OAAO40F,IACxBgtC,EAAIsE,iBAAiBtxC,EAAOhlI,KAAKowC,OAAO40F,GAS1C,OALAhlI,MAAK2rB,KAAK,UAAW3rB,MAIrBgyK,EAAI19D,SAAKA,KAAOxtE,EAAuBA,EAAO,MACvC9mC,MAWT0yK,EAAQtwL,UAAUowC,KAAO,SAAU6I,EAASh4C,GAC1C,MAAO2c,MAAK4mE,IAAI,SAAS1hF,EAAK4iI,GAC5B5iI,EAAM7B,EAAO6B,GAAOm2C,EAAQysF,MAQhCzxC,EAAQq8F,QAAUA,EAyClBr8F,EAAQzxF,IAAM,SAASgvD,EAAK9M,EAAM9sB,GAChC,GAAI+3J,GAAM17F,EAAQ,MAAOziC,EAIzB,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIx2K,MAAMurC,GAChB9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAaT17F,EAAQ/yF,KAAO,SAASswD,EAAK9M,EAAM9sB,GACjC,GAAI+3J,GAAM17F,EAAQ,OAAQziC,EAI1B,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIz9D,KAAKxtE,GACf9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAkBT17F,EAAa,IAAI28F,EACjB38F,EAAgB,OAAI28F,EAYpB38F,EAAQkgG,MAAQ,SAAS3iI,EAAK9M,EAAM9sB,GAClC,GAAI+3J,GAAM17F,EAAQ,QAASziC,EAI3B,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIz9D,KAAKxtE,GACf9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAaT17F,EAAQmgG,KAAO,SAAS5iI,EAAK9M,EAAM9sB,GACjC,GAAI+3J,GAAM17F,EAAQ,OAAQziC,EAI1B,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIz9D,KAAKxtE,GACf9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAaT17F,EAAQogG,IAAM,SAAS7iI,EAAK9M,EAAM9sB,GAChC,GAAI+3J,GAAM17F,EAAQ,MAAOziC,EAIzB,OAHI,kBAAqB9M,KAAM9sB,EAAK8sB,EAAMA,EAAO,MAC7CA,GAAMirI,EAAIz9D,KAAKxtE,GACf9sB,GAAI+3J,EAAInrG,IAAI5sD,GACT+3J,GAOT1wL,EAAOD,QAAUi1F,GrxBqw9FX,SAAUh1F,EAAQD,EAASH,GsxB55/FjC,QAASgyL,GAAQztL,GACf,GAAIA,EAAK,MAAO+xG,GAAM/xG,GAWxB,QAAS+xG,GAAM/xG,GACb,IAAK,GAAIC,KAAOwtL,GAAQ7wL,UACtBoD,EAAIC,GAAOwtL,EAAQ7wL,UAAUqD,EAE/B,OAAOD,GAzBPnE,EAAOD,QAAU6xL,EAqCnBA,EAAQ7wL,UAAUi2F,GAClB46F,EAAQ7wL,UAAU4hF,iBAAmB,SAAS94C,EAAOlR,GAInD,MAHAha,MAAKq7L,WAAar7L,KAAKq7L,gBACtBr7L,KAAKq7L,WAAW,IAAMnwK,GAASlrB,KAAKq7L,WAAW,IAAMnwK,QACnDhpC,KAAK83B,GACDha,MAaTizK,EAAQ7wL,UAAU09D,KAAO,SAAS50B,EAAOlR,GACvC,QAASq+D,KACPr4E,KAAKu4E,IAAIrtD,EAAOmtD,GAChBr+D,EAAGtnB,MAAMsN,KAAMrN,WAKjB,MAFA0lF,GAAGr+D,GAAKA,EACRha,KAAKq4E,GAAGntD,EAAOmtD,GACRr4E,MAaTizK,EAAQ7wL,UAAUm2F,IAClB06F,EAAQ7wL,UAAUo2F,eAClBy6F,EAAQ7wL,UAAUq2F,mBAClBw6F,EAAQ7wL,UAAUmqK,oBAAsB,SAASrhI,EAAOlR,GAItD,GAHAha,KAAKq7L,WAAar7L,KAAKq7L,eAGnB,GAAK1oM,UAAU3Q,OAEjB,MADAge,MAAKq7L,cACEr7L,IAIT,IAAIyzE,GAAYzzE,KAAKq7L,WAAW,IAAMnwK,EACtC,KAAKuoD,EAAW,MAAOzzE,KAGvB,IAAI,GAAKrN,UAAU3Q,OAEjB,aADOge,MAAKq7L,WAAW,IAAMnwK,GACtBlrB,IAKT,KAAK,GADD0hB,GACKpgC,EAAI,EAAGA,EAAImyF,EAAUzxF,OAAQV,IAEpC,IADAogC,EAAK+xD,EAAUnyF,MACJ04B,GAAM0H,EAAG1H,KAAOA,EAAI,CAC7By5D,EAAUpxE,OAAO/gB,EAAG,EACpB,OAGJ,MAAO0e,OAWTizK,EAAQ7wL,UAAUupC,KAAO,SAAST,GAChClrB,KAAKq7L,WAAar7L,KAAKq7L,cACvB,IAAIxuL,MAAUhZ,MAAMrS,KAAKmR,UAAW,GAChC8gF,EAAYzzE,KAAKq7L,WAAW,IAAMnwK,EAEtC,IAAIuoD,EAAW,CACbA,EAAYA,EAAU5/E,MAAM,EAC5B,KAAK,GAAIvS,GAAI,EAAGuxC,EAAM4gD,EAAUzxF,OAAQV,EAAIuxC,IAAOvxC,EACjDmyF,EAAUnyF,GAAGoR,MAAMsN,KAAM6M,GAI7B,MAAO7M,OAWTizK,EAAQ7wL,UAAU6f,UAAY,SAASipB,GAErC,MADAlrB,MAAKq7L,WAAar7L,KAAKq7L,eAChBr7L,KAAKq7L,WAAW,IAAMnwK,QAW/B+nJ,EAAQ7wL,UAAU0zL,aAAe,SAAS5qJ,GACxC,QAAUlrB,KAAKiC,UAAUipB,GAAOlpC,StxBm7/F5B,SAAUX,EAAQD,GuxBzkgGxBC,EAAOD,QAAU,SAASwS,EAAKomB,EAAIqiS,GAOjC,IANA,GAAI5uK,GAAM,EACN56G,EAAMj/B,EAAI5R,OACV4oT,EAA2B,GAApBj4S,UAAU3Q,OACjBq6T,EACAzoT,EAAI65I,KAEDA,EAAM56G,GACX+3Q,EAAO5wR,EAAGx4B,KAAK,KAAMopT,EAAMh3S,EAAI65I,KAAQA,EAAK75I,EAG9C,OAAOg3S,KvxB2lgGH,SAAUvpT,EAAQD,EAASH,awxBjngGjC,GAeA,QAASq7T,GAAYvjT,GAkMnB,QAASwjT,KACP,GAAIpxS,GAAWlL,GAAUu8S,EAAY,CACnC,GAAIC,GAAKjoN,CACT,KACEioN,EAAKt4S,KAAKC,UAAUq4S,GACpB,MAAOv3T,IACT+a,EAAM6qE,QAAQsoB,EAAYqpN,IAS9B,QAASC,GAAat3T,EAAOgO,GAC3B,GAAGhO,EAAO,KAAM,IAAIpC,OAAMoQ,GAO5B,QAASupT,GAAOl3T,SACP+uG,GAAMioN,GAAGh3T,SACT+uG,GAAMooN,YAAYn3T,GACzB82T,IAMF,QAASM,KACP,IAAIC,EAAyB,CAE3B,GADAA,KACG57S,EAAK67S,gCACH77S,EAAK87S,0BAA4B97S,EAAK+7S,wBACvC,KAAM,IAAIj6T,OAAM,mHAGpBwkM,aAAY0yH,EAAmBh5S,EAAK87S,4BAYxC,QAASE,GAAuBz3T,EAAKqhD,EAAM5hD,EAAKyrE,GAC1CzrE,GACF8a,KAAK8wB,IAAIrrC,EAAKkrE,EAAW7pB,EAAKq2Q,SAAW,IAAOr2Q,EAAK80G,QAAS,cAOlE,QAASs+J,KACI/3T,OAAO6I,KAAKwpG,EAAM4oN,aACxBr9Q,QAAQ,SAASt6C,GACpB,GAAIqhD,GAAO0tD,EAAM4oN,YAAY33T,EAC1BqhD,GAAK2vC,WAAavmC,KAAKl9C,MAAQgN,KAAKi9S,yBACrCn2Q,EAAK80G,QAAQn2J,EAAKy3T,EAAsBp4S,KAAK9E,KAAMva,EAAKqhD,KAEzD5lC,GASL,QAAS1O,GAAIy2C,EAAS71C,EAAS0zC,IAC1B5lC,EAAKm8S,SAAWp0Q,KACdnC,EAAM3hD,EAAQqN,IAAI0O,EAAKxd,KAAO,KAAO0P,EAAS0zC,GAC5C3hD,EAAQqN,IAAI0O,EAAKxd,KAAO0P,IAjRjC,GAAI8N,GAAOlB,IACXjH,GAASA,MACTmI,EAAKxd,KAAOqV,EAAOrV,MAAQ,eAC3Bwd,EAAKm8S,QAAUtkT,EAAOskT,YACtBn8S,EAAKi1E,kBAAoBp9E,EAAOo9E,mBAAqB,IACrDj1E,EAAKkkK,SAAWrsK,EAAOqsK,aACvBlkK,EAAKo8S,qBAA+D,iBAAhCvkT,GAAOukT,sBAAsCvkT,EAAOukT,qBACxFp8S,EAAK67S,+BAAmF,iBAA1ChkT,GAAOgkT,gCAAgDhkT,EAAOgkT,+BAC5G77S,EAAK87S,0BAA4BjkT,EAAOikT,2BAA6B,IACrE97S,EAAK+7S,wBAA0BlkT,EAAOkkT,yBAA2B,GACjE,IASI7pN,GATAnzF,EAAQ,KACRu8S,EAAczjT,EAAOyjT,gBACrBM,KACA3xS,EAA6B,mBAAXzpB,QAClB8yG,GACFioN,MACAG,eACAQ,iBAsJF,WACE,GAAGjyS,GAAWqxS,EAAY,CACxB,GAAGA,EACDv8S,EAAQu8S,EACRppN,EAAa,gCAEX,CACF,GAAImqN,GAAkC,UAAnBxkT,EAAOkuS,SAA0C,YAAnBluS,EAAOkuS,QAAyBluS,EAAOkuS,QAAU,IAClGhnS,MAASs9S,kBAAsB52T,WAAuBjF,OAAO67T,EAAc,WAC3EnqN,EAAa,EAAgB,gBAAkBmqN,EAAc,WAAa,KAE5E,GAAGt9S,EAAM,CACP,GAAIw8S,GAAKx8S,EAAMqX,QAAQ87E,EACvB,KACEoB,EAAQrwF,KAAKoT,MAAMklS,IAAOjoN,EAC1B,MAAOtvG,SAGTsN,MAAU,2FAnKhBA,KAAW,4DAA6D9O,KAAMwd,EAAKxd,KAAMyyF,kBAAmBj1E,EAAKi1E,kBAAmBknO,QAASn8S,EAAKm8S,QAASj4I,SAAUlkK,EAAKkkK,WAO1KlkK,EAAKtc,IAAM,SAASa,EAAKi8B,GACvBg7R,EAAc/pT,UAAU3Q,OAAS,EAAI,oDACrCwQ,KAAW,iBAAkB/M,IAAKA,GAClC,KACE,GAAIuN,GAAMk9C,KAAKl9C,KACEwhG,GAAMooN,YAAYn3T,GACnBuN,EACd0uB,EAAG,KAAM8yE,EAAMioN,GAAGh3T,KAGlBk3T,EAAOl3T,GACPi8B,EAAG,KAAM,OAEX,MAAOx8B,GACPw8B,GAAIp9B,KAAM,eAAgB8O,QAASlO,GAAM,QAU7Cgc,EAAKs8S,KAAO,SAASxyT,EAAM02B,EAAIhQ,GAC7BgrS,EAAc/pT,UAAU3Q,OAAS,EAAI,qDACrCwQ,KAAW,mBAAoBxH,KAAMA,GAErC,KAAI,GADAwoB,MACIlyB,EAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAAI,CAClC,GAAImE,GAAMuF,EAAK1J,EACf4f,GAAKtc,IAAIa,EAAK,SAASP,EAAKyrE,GACV,OAAbA,IACDn9C,EAAO/tB,GAAOkrE,KAIpBjvC,EAAG,KAAMlO,EAAQ9B,IAWnBxQ,EAAK4vB,IAAM,WACT4rR,EAAc/pT,UAAU3Q,OAAS,EAAI,4DACrC,IAAIyD,GAAMkN,UAAU,GAChBjN,EAAQiN,UAAU,GAClB8jF,EAAa9jF,UAAU,IAAM,KAC7BipJ,EAA+B,GAApBjpJ,UAAU3Q,OAAe2Q,UAAU,GAAK,KACnD+uB,EAA0B,GAApB/uB,UAAU3Q,OAAe2Q,UAAU,GAAKA,UAAU,EAE5D,IADAH,KAAW,kBAAmB/M,IAAKA,EAAKC,MAAOA,KAC3Cwb,EAAKkkK,SACP,IACE3uF,EAAa,EAA6B,IAAbA,EAA+C,IAAzBv1E,EAAKi1E,iBACxD,IAAIsnO,GAAMhnO,EAAavmC,KAAKl9C,KAC5BwhG,GAAMooN,YAAYn3T,GAAOg4T,EACzBjpN,EAAMioN,GAAGh3T,GAAOC,EACbg8B,GAAIA,IACJk6H,IACDpnD,EAAM4oN,YAAY33T,IAAQgxF,WAAYgnO,EAAKN,SAAU1mO,EAAYmlE,QAASA,GAC1EihK,KAEFN,IACA,MAAOr3T,GACPsN,KAAU,mCAAqC0O,EAAKxd,MAAOY,KAAM,0BAA2B8O,QAASlO,MAW3Ggc,EAAKw8S,KAAO,SAASl4T,EAAKixF,EAAY/0D,GACpCg7R,EAAc/pT,UAAU3Q,OAAS,EAAI,6DACrCwQ,KAAW,mBAAoBs0C,KAAMthD,GACrC,KAAI,GAAIC,KAAOD,GACb,GAAGA,EAAInD,eAAeoD,GAAK,CACzB,GAAIk4T,GAAiBlnO,GAAcv1E,EAAKi1E,kBACpCzwF,EAAQF,EAAIC,EACI,iBAAVC,IAAsBA,EAAMk4T,aACpCD,EAAiBj4T,EAAM+wF,YAAcknO,EACrCj4T,EAAQA,EAAMk4T,YAEhB18S,EAAK4vB,IAAIrrC,EAAKC,EAAOi4T,GAGtBj8R,GAAIA,KAQTxgB,EAAK8xK,IAAM,SAAShoL,EAAM02B,GAGxB,GAFAg7R,EAAc/pT,UAAU3Q,OAAS,EAAI,4DACrCwQ,KAAW,kBAAmBxH,KAAMA,IACjB,gBAATA,GAAkB,CAC1B,IAAI,GAAI1J,GAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAAI,CAClC,GAAImE,GAAMuF,EAAK1J,SACRkzG,GAAMioN,GAAGh3T,SACT+uG,GAAMooN,YAAYn3T,SAClB+uG,GAAM4oN,YAAY33T,GAExBi8B,GAAIA,EAAG,KAAM12B,EAAKhJ,mBAGdwyG,GAAMioN,GAAGzxT,SACTwpG,GAAMooN,YAAY5xT,SAClBwpG,GAAM4oN,YAAYpyT,GACtB02B,GAAIA,EAAG,KAAM,EAElB66R,MAOFr7S,EAAKwuO,MAAQ,SAAShuN,GACpBlvB,KAAW,mBACXgiG,EAAMioN,MACNjoN,EAAMooN,eACNpoN,EAAM4oN,eACH17R,GAAIA,IACP66R,KAqHJl7T,EAAOD,QAAUk7T,IxxBqngGY96T,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,ayxB/5gGjC,GAeA,QAASq7T,GAAYvjT,GAmMnB,QAASwjT,KACP,GAAIpxS,GAAWlL,GAAUu8S,EAAY,CACnC,GAAIC,GAAKjoN,CACT,KACEioN,EAAKt4S,KAAKC,UAAUq4S,GACpB,MAAOv3T,IACT+a,EAAM6qE,QAAQsoB,EAAYqpN,IAS9B,QAASC,GAAat3T,EAAOgO,GAC3B,GAAGhO,EAAO,KAAM,IAAIpC,OAAMoQ,GAO5B,QAASupT,GAAOl3T,SACP+uG,GAAMioN,GAAGh3T,SACT+uG,GAAMooN,YAAYn3T,GACzB82T,IAMF,QAASM,KACP,IAAIC,EAAyB,CAE3B,GADAA,KACG57S,EAAK67S,gCACH77S,EAAK87S,0BAA4B97S,EAAK+7S,wBACvC,KAAM,IAAIj6T,OAAM,mHAGpBwkM,aAAY0yH,EAAmBh5S,EAAK87S,4BAYxC,QAASE,GAAuBz3T,EAAKqhD,EAAM5hD,EAAKyrE,GAC1CzrE,GACF8a,KAAK8wB,IAAIrrC,EAAKkrE,EAAW7pB,EAAKq2Q,SAAW,IAAOr2Q,EAAK80G,QAAS,cAOlE,QAASs+J,KACI/3T,OAAO6I,KAAKwpG,EAAM4oN,aACxBr9Q,QAAQ,SAASt6C,GACpB,GAAIqhD,GAAO0tD,EAAM4oN,YAAY33T,EAC1BqhD,GAAK2vC,WAAavmC,KAAKl9C,MAAQgN,KAAKi9S,yBACrCn2Q,EAAK80G,QAAQn2J,EAAKy3T,EAAsBp4S,KAAK9E,KAAMva,EAAKqhD,KAEzD5lC,GASL,QAAS1O,GAAIy2C,EAAS71C,EAAS0zC,IAC1B5lC,EAAKm8S,SAAWp0Q,KACdnC,EAAM3hD,EAAQqN,IAAI0O,EAAKxd,KAAO,KAAO0P,EAAS0zC,GAC5C3hD,EAAQqN,IAAI0O,EAAKxd,KAAO0P,IAlRjC,GAAI8N,GAAOlB,IACXjH,GAASA,MACTmI,EAAKxd,KAAOqV,EAAOrV,MAAQ,eAC3Bwd,EAAKm8S,QAAUtkT,EAAOskT,YACtBn8S,EAAKi1E,kBAAoBp9E,EAAOo9E,mBAAqB,IACrDj1E,EAAKkkK,SAAWrsK,EAAOqsK,aACvBlkK,EAAKo8S,qBAA+D,iBAAhCvkT,GAAOukT,sBAAsCvkT,EAAOukT,qBACxFp8S,EAAK67S,+BAAmF,iBAA1ChkT,GAAOgkT,gCAAgDhkT,EAAOgkT,+BAC5G77S,EAAK87S,0BAA4BjkT,EAAOikT,2BAA6B,IACrE97S,EAAK+7S,wBAA0BlkT,EAAOkkT,yBAA2B,GACjE,IASI7pN,GATAnzF,EAAQ,KACRu8S,EAAczjT,EAAOyjT,gBACrBM,KACA3xS,EAA6B,mBAAXzpB,QAClB8yG,GACFioN,MACAG,eACAQ,iBAsJF,WACE,GAAGjyS,GAAWqxS,EAAY,CACxB,GAAGA,EACDv8S,EAAQu8S,EACRppN,EAAa,gCAEX,CACF,GAAImqN,GAAkC,UAAnBxkT,EAAOkuS,SAA0C,YAAnBluS,EAAOkuS,QAAyBluS,EAAOkuS,QAAU,IAClGhnS,MAASs9S,kBAAsB52T,WAAuBjF,OAAO67T,EAAc,WAC3EnqN,EAAa,EAAgBlyF,EAAKxd,KAAO,IAAM65T,EAAc,WAAa,KAE5E,GAAGt9S,EAAM,CACP,GAAIw8S,GAAKx8S,EAAMqX,QAAQ87E,EACvB,KACEoB,EAAQrwF,KAAKoT,MAAMklS,IAAOjoN,EAC1B,MAAOtvG,SAGHq4T,IACN/qT,KAAU,2FApKhBA,KAAW,4DAA6D9O,KAAMwd,EAAKxd,KAAMyyF,kBAAmBj1E,EAAKi1E,kBAAmBknO,QAASn8S,EAAKm8S,QAASj4I,SAAUlkK,EAAKkkK,WAO1KlkK,EAAKtc,IAAM,SAASa,EAAKi8B,GACvBg7R,EAAc/pT,UAAU3Q,OAAS,EAAI,oDACrCwQ,KAAW,iBAAkB/M,IAAKA,GAClC,KACE,GAAIuN,GAAMk9C,KAAKl9C,KACEwhG,GAAMooN,YAAYn3T,GACnBuN,EACd0uB,EAAG,KAAM8yE,EAAMioN,GAAGh3T,KAGlBk3T,EAAOl3T,GACPi8B,EAAG,KAAM,OAEX,MAAOx8B,GACPw8B,GAAIp9B,KAAM,eAAgB8O,QAASlO,GAAM,QAU7Cgc,EAAKs8S,KAAO,SAASxyT,EAAM02B,EAAIhQ,GAC7BgrS,EAAc/pT,UAAU3Q,OAAS,EAAI,qDACrCwQ,KAAW,mBAAoBxH,KAAMA,GAErC,KAAI,GADAwoB,MACIlyB,EAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAAI,CAClC,GAAImE,GAAMuF,EAAK1J,EACf4f,GAAKtc,IAAIa,EAAK,SAASP,EAAKyrE,GACV,OAAbA,IACDn9C,EAAO/tB,GAAOkrE,KAIpBjvC,EAAG,KAAMlO,EAAQ9B,IAWnBxQ,EAAK4vB,IAAM,WACT4rR,EAAc/pT,UAAU3Q,OAAS,EAAI,4DACrC,IAAIyD,GAAMkN,UAAU,GAChBjN,EAAQiN,UAAU,GAClB8jF,EAAa9jF,UAAU,IAAM,KAC7BipJ,EAA+B,GAApBjpJ,UAAU3Q,OAAe2Q,UAAU,GAAK,KACnD+uB,EAA0B,GAApB/uB,UAAU3Q,OAAe2Q,UAAU,GAAKA,UAAU,EAE5D,IADAH,KAAW,kBAAmB/M,IAAKA,EAAKC,MAAOA,KAC3Cwb,EAAKkkK,SACP,IACE3uF,EAAa,EAA6B,IAAbA,EAA+C,IAAzBv1E,EAAKi1E,iBACxD,IAAIsnO,GAAMhnO,EAAavmC,KAAKl9C,KAC5BwhG,GAAMooN,YAAYn3T,GAAOg4T,EACzBjpN,EAAMioN,GAAGh3T,GAAOC,EACbg8B,GAAIA,IACJk6H,IACDpnD,EAAM4oN,YAAY33T,IAAQgxF,WAAYgnO,EAAKN,SAAU1mO,EAAYmlE,QAASA,GAC1EihK,KAEFN,IACA,MAAOr3T,GACPsN,KAAU,mCAAqC0O,EAAKxd,MAAOY,KAAM,0BAA2B8O,QAASlO,MAW3Ggc,EAAKw8S,KAAO,SAASl4T,EAAKixF,EAAY/0D,GACpCg7R,EAAc/pT,UAAU3Q,OAAS,EAAI,6DACrCwQ,KAAW,mBAAoBs0C,KAAMthD,GACrC,KAAI,GAAIC,KAAOD,GACb,GAAGA,EAAInD,eAAeoD,GAAK,CACzB,GAAIk4T,GAAiBlnO,GAAcv1E,EAAKi1E,kBACpCzwF,EAAQF,EAAIC,EACI,iBAAVC,IAAsBA,EAAMk4T,aACpCD,EAAiBj4T,EAAM+wF,YAAcknO,EACrCj4T,EAAQA,EAAMk4T,YAEhB18S,EAAK4vB,IAAIrrC,EAAKC,EAAOi4T,GAGtBj8R,GAAIA,KAQTxgB,EAAK8xK,IAAM,SAAShoL,EAAM02B,GAGxB,GAFAg7R,EAAc/pT,UAAU3Q,OAAS,EAAI,4DACrCwQ,KAAW,kBAAmBxH,KAAMA,IACjB,gBAATA,GAAkB,CAC1B,IAAI,GAAI1J,GAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAAI,CAClC,GAAImE,GAAMuF,EAAK1J,SACRkzG,GAAMioN,GAAGh3T,SACT+uG,GAAMooN,YAAYn3T,SAClB+uG,GAAM4oN,YAAY33T,GAExBi8B,GAAIA,EAAG,KAAM12B,EAAKhJ,mBAGdwyG,GAAMioN,GAAGzxT,SACTwpG,GAAMooN,YAAY5xT,SAClBwpG,GAAM4oN,YAAYpyT,GACtB02B,GAAIA,EAAG,KAAM,EAElB66R,MAOFr7S,EAAKwuO,MAAQ,SAAShuN,GACpBlvB,KAAW,mBACXgiG,EAAMioN,MACNjoN,EAAMooN,eACNpoN,EAAM4oN,eACH17R,GAAIA,IACP66R,KAsHJl7T,EAAOD,QAAUk7T,IzxBm6gGY96T,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,aAEIkE,G0xB7shGrC,QAAS04T,GAAsBC,GAmB3B,QAASjB,KACL,IAAKC,EAA0B,CAE3B,GADAA,KACIC,GACIC,EAA4BC,EAC5B,KAAM,IAAIj6T,OAAM,mHAIxBwkM,aAAY,WACR0yH,KACD8C,IAOX,QAAS9C,KACDmD,GAASl4T,EAAQqN,IAAI,2CAEzBrQ,OAAO6I,KAAKoyT,GAAar9Q,QAAQ,SAACt6C,GAC9B,GAAIqhD,GAAOs2Q,EAAY33T,EACnBqhD,GAAK2vC,WAAavmC,KAAKl9C,MAAQiqT,GAC/Bn2Q,EAAK80G,QAASn2J,EAAK,SAAUP,EAAKyrE,GACzBzrE,IACGm4T,GAASl4T,EAAQqN,IAAI,2CAA6C/M,QACtEqrC,EAAIrrC,EAAKkrE,EAAU7pB,EAAKq2Q,SAAUr2Q,EAAK80G,QAAS,mBAOpE,QAASh3J,GAAIa,GAA0B,GAArBgxC,GAAqB,uDAAV,YACzB,OAAOsnR,GAAUn5T,IAAIa,EAAK,SAACP,EAAK4hD,GACxBu2Q,GAASl4T,EAAQqN,IAAI,6BAA+B/M,QACpDP,GACAC,EAAQC,MAAMF,GACduxC,EAASvxC,IACD4hD,EAGRk3Q,EAAOC,WAAWn3Q,GAAOo3Q,UAASA,GAAS,SAACC,EAAW5gJ,GACnD,GAAI4gJ,EAEA,WADA1nR,GAAS0nR,EAGb,IAAIr+L,SACJ,KACIA,EAAO37G,KAAKoT,MAAMgmJ,GACpB,MAAO6gJ,GACLt+L,EAAOy9C,EAEX9mI,EAAS0nR,EAAWr+L,KAbxBrpF,EAAS,GAAIzzC,OAAM,sCAmBhC,QAAS8tC,GAAIrrC,EAAKC,GAAO,eACrBs4T,GAAOK,SAASl6S,KAAKC,UAAU1e,GAAQ,SAAC44T,EAAgBC,GACpD,GAAM9nO,GAAc,EAAU,IAAM,MAASN,EACvCylE,EAA+B,GAApB,EAAU55J,OAAe,EAAU,GAAK,KACnDy0C,GAAiC,GAApB,EAAUz0C,OAAe,EAAU,GAAK,EAAU,KAAQ,YAC7E,OAAO+7T,GAAUjtR,IAAIrrC,EAAK84T,EAAiB9nO,EAAY,SAACvxF,GAKpD,GAJIm4T,GAASl4T,EAAQqN,IAAI,6BAA+B/M,MAAK84T,kBAAiB9nO,aAAYmlE,YACtF12J,GAAKC,EAAQC,MAAMK,EAAKP,GAC5BuxC,EAASvxC,GAEL02J,IAAY12J,EAAK,CACjB,GAAMu4T,GAAoB,IAAbhnO,EAAqBvmC,KAAKl9C,KACvCoqT,GAAY33T,IAASgxF,WAAYgnO,EAAKN,SAAU1mO,EAAYmlE,QAASA,GACrEihK,SA3Ff,GAAM9jT,GAAS+kT,MACTT,EAAUtkT,EAAOskT,YACjBlnO,EAAoBp9E,EAAOo9E,mBAAqB,IAChD4mO,EAAmF,iBAA1ChkT,GAAOgkT,gCAAgDhkT,EAAOgkT,+BACvGC,EAA4BjkT,EAAOikT,2BAA6B,IAChEC,EAA0BlkT,EAAOkkT,yBAA2B,IAC5DuB,EAAkBzlT,EAAOglT,UAE3BX,KACAN,KAEEiB,EAAY,GAAIU,GAAUD,EAAgB3R,QAAS2R,EAsFzD,OApFInB,IAASl4T,EAAQqN,IAAI,gCAAkC2jF,uBAqFvDsmO,GAAIsB,EACJr6T,KAAM,YACN25T,UACAlnO,oBACAvxF,MACA44T,KAAMO,EAAUW,SAChB5tR,MACA4sR,KAAM,SAASl4T,EAAT,MAAwC,sBAG9CwtL,IAAK,SAAChoL,GAA8B,GAAxByrC,GAAwB,uDAAb,YAGnB,IAFI4mR,GAASl4T,EAAQqN,IAAI,6BAA+BxH,SAEpC,qBAATA,EAAP,cAAOA,IACP,IAAK,GAAI1J,GAAI,EAAGA,EAAI0J,EAAKhJ,OAAQV,IAAK,CAClC,GAAImE,GAAMuF,EAAK1J,EACfy8T,GAAU/qI,IAAIvtL,EAAKgxC,SACZ2mR,GAAY33T,OAGvBs4T,GAAU/qI,IAAIhoL,EAAMyrC,SACb2mR,GAAYpyT,SAIhBoyT,GAAY33T,IAEvBiqP,MAAO,WAAyB,GAAxBj5M,GAAwB,uDAAb,YACX4mR,IAASl4T,EAAQqN,IAAI,+BACzB4qT,KACAW,EAAUruE,MAAMj5M,K1xB4khGmB,GAAI8/B,GAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,QAAUtkD,IAAQskD,OAAO1nD,UAAY,eAAkBoD,IAEjTuwE,EAAiB,WAAc,QAASC,GAAcpiE,EAAKtS,GAAK,GAAI20E,MAAeC,KAAeC,KAAgBC,QAAgB,KAAM,IAAK,GAAiCC,GAA7BC,EAAK1iE,EAAIk2C,OAAOnD,cAAmBuvB,GAAMG,EAAKC,EAAGz0D,QAAQizB,QAAoBmhC,EAAK/zE,KAAKm0E,EAAG3wE,QAAYpE,GAAK20E,EAAKj0E,SAAWV,GAA3D40E,OAAyE,MAAOhxE,GAAOixE,KAAWC,EAAKlxE,EAAO,QAAU,KAAWgxE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUriE,EAAKtS,GAAK,GAAI0S,MAAM+c,QAAQnd,GAAQ,MAAOA,EAAY,IAAIk2C,OAAOnD,WAAYxkD,QAAOyR,GAAQ,MAAOoiE,GAAcpiE,EAAKtS,EAAa,MAAM,IAAI48B,WAAU,4D0xBlthGhlBugS,EAAYpvQ,EAAZ,KACA2uQ,EAAS3uQ,EAAT,IAwINhuD,GAAOD,QAAUy8T,I1xBiuhGYr8T,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,G2xB92hGjCI,EAAOD,QAAU,EAAQ,M3xBo3hGnB,SAAUC,EAAQD,EAASH,GAEjC,cAAa,S4xBt3hGb,KA8BA,QAAS09T,GAAQ9xS,EAAM9Q,GACrB,GAAI8wS,KAMJ,QAAQ1qT,OAAOC,UAAU67B,SAASz8B,KAAKqrB,IACrC,IAAK,kBAEHggS,EAAU1qT,OAAO6I,KAAK6hB,EACtB,MAEF,KAAK,iBACHggS,EAAUhgS,EAAK7qB,OAAS6qB,GAXd,kBAYV,MAEF,SACEggS,EAAQ3qT,KAAK2qB,GAfH,mBAmBd,IAAKggS,EAAQ7qT,OACX,KAAM,IAAIgB,OAAM,6CAIlB47T,GAAMj0F,MAAM3qN,KAAM2+S,EAAO5lT,QACzB6lT,EAAMj0F,MAAM3qN,KAAMjE,GAElBiE,KAAK6sS,QAAUA,CACf,IAAIgS,GAAgB7+S,KAAK6+S,eAAiB7+S,KAAK8+S,YAC/C9+S,MAAK++S,SAAW,GAAIA,GAASlyS,EAAM7M,KAAKg/S,WACtC,cAAiBH,EACjB,eAAkC,WAAlBA,EAA6B,MAAQ,OAEvD7+S,KAAKi/S,eACLj/S,KAAKk/S,UA9DP,GAAIC,GAAS,EAAQ,IAAOA,OACxBC,EAAS,EAAQ,IAAOA,OAKxBL,EAAW,EAAQ,KACnBM,EAAa,EAAQ,KACrBC,EAAU,EAAQ,KAClBV,EAAQ,EAAQ,KAChBW,EAAWF,EAAWE,SAKtB30F,EAAQg0F,EAAMh0F,KAmDlB+zF,GAAO5lT,QACHuxN,WAAY,IACZk1F,cAAe,OACfC,SAAU,QACVC,cAAe,EACfC,cAAe,EACfX,UAAW,MACXH,cAAe,SAEfzvN,SAAU,GACV09M,QAAS,EACT8S,OAAQ,EACRC,WAAY,IACZC,WAAY,IACZC,WAAUA,EAEVC,UAAW,KACXl9T,QAAS,IACTiqT,SAAU,EACVkT,gBAAiB,IACjB34H,MAAO,IACP44H,KAAM,IACN5oQ,QAAOA,EACP6oQ,YAAWA,EACX51F,gBAAeA,EACf/oB,UAAW,GACXzlL,OAAMA,GAIV,SAAWqkS,GAydT,QAASC,GAAiBC,GACxB,OAAQA,GAAmC,IAArBA,EAAUt+T,SAAiBs+T,EAAU,GAhd7DF,EAAWh+T,UAAUkd,UAAY,EAAQ,KAAUwgJ,aAAa19J,SAEhE,IAEIu8B,GAFAo/R,EAAYqC,EAAWh+T,UACvBm+T,IAKJxC,GAAUvvN,QAAU,SAAiBgyN,EAAQ/pR,GAO3C,GALI+pR,EAAOl2S,MAAM,iBACbk2S,GAAkB,UAIlBA,IAAUxgT,MAAKk/S,QAAUl/S,KAAKk/S,OAAOsB,GAAQC,OAC7C,MAAOhqR,OAAS,EAIpB,IAAI+pR,IAAUxgT,MAAKi/S,YACjB,MAAOj/S,MAAKi/S,YAAYuB,GAAQE,KAAKjqR,EAIvC,IAAIkqR,GAA6B,MAAdH,EAAO,GACpBA,EACA,kBAAkBjtN,KAAKitN,GAAQljP,UACjCygP,EAAY/9S,IAGZhM,OAAM+c,QAAQ4vS,IAAeA,EAAahuS,KAE9C,IACIiuS,GADAC,EAAM,CAOVD,GAAU,GAAItB,GAAQt/S,KAAKovF,UAC3BwxN,EAAQ9T,QAAUiR,EAAUjR,QAC5B8T,EAAQhB,OAAS7B,EAAU6B,OAC3BgB,EAAQf,WAAa9B,EAAU8B,WAC/Be,EAAQd,WAAa/B,EAAU+B,WAC/Bc,EAAQb,UAAYhC,EAAUgC,UAE9Ba,EAAQj/J,gBAAgB,GAExBi/J,EAAQ5tN,QAAQ,WACd,GAAI8tN,GAAI9sT,MAAM+c,QAAQ4vS,GAChB,GAAIxB,GACJ,GAAIC,GACN2B,EAAU/gT,KACVghT,EAAc,WACZD,EAAQzpQ,OAAOt3C,OAEjBihT,EAAc,SAASz+T,GACrBu7T,EAAUmD,gBAAgB1+T,EAAEy7B,WAAY6iS,GACxCC,EAAQzpQ,OAAOt3C,MAmCrB,OA/BA8gT,GAAEK,SAAWN,IACbC,EAAE78T,WAAW85T,EAAUj7T,SACvBg+T,EAAEM,YAAWA,GACbN,EAAEO,YAAY,QACdP,EAAE9jO,YACF8jO,EAAEQ,eAAiB,GACnBR,EAAES,eACFT,EAAEU,cAAgBhB,EAClBM,EAAEv/M,UAAY1uF,OAAO8tS,GACrBG,EAAE/C,UAAYA,EAGda,EAAMn0F,KAAKq2F,GACP9rO,MAAO,WACL+rO,EAAQzpQ,OAAOt3C,OAEjB8mC,KAAM8jL,EAAMmzF,EAAWwC,EAAS1oH,OAAQipH,GACxCtyN,QAAS,WAGPxuF,KAAK/b,WAAW+b,KAAK+9S,UAAUmC,KAAMc,GAIrChhT,KAAKq4E,GAAG,QAAS4oO,IAEnBr6O,IAAKk6O,EAAEl6O,MAIXk6O,EAAEtyN,QAAQ97F,MAAMouT,EAAGA,EAAEv/M,QACdu/M,IAGTF,EAAQvoO,GAAG,QAAS,SAAa71F,GAC3Bu7T,EAAUhiS,OAAO52B,EAAQqN,IAAI,mBAAoBhQ,KAGvDwd,KAAKi/S,YAAYuB,GAAUI,EAI3B5gT,KAAKi/S,YAAYuB,GAAQE,KAAKjqR,IAIhCsnR,EAAUlmH,OAAS,WACjB,MAAO0oH,GAAS1oH,OAAOnlM,MAAMsN,KAAMrN,YAKrCorT,EAAU0D,MAAQ,SAAwBz2T,EAAMyrC,GAC9C,GAEIo2Q,GACAvrT,EAHA0wB,KACA+rS,EAAY/9S,IA2BhB,KArBIhV,GACFA,EAAK+0C,QAAQ,SAA8Bt6C,GACzC,GAAI+6T,GAAsC,IAA7BzC,EAAUlR,QAAQ7qT,OAC3B+7T,EAAUlR,QAAQ,GAClBkR,EAAUgB,SAASn6T,IAAIa,EAEvBusB,GAAIwuS,GACNxuS,EAAIwuS,GAAQt+T,KAAKuD,GAEjBusB,EAAIwuS,IAAW/6T,KAKnBonT,EAAU1qT,OAAO6I,KAAKgnB,IAEtB66R,EAAU7sS,KAAK6sS,QAGjBvrT,EAAIurT,EAAQ7qT,OAELV,KAELm1C,EAASj1C,KAAKwe,KAAM6sS,EAAQvrT,GAAI0wB,EAAI66R,EAAQvrT,IAAKA,EAAGurT,EAAQ7qT,SAMhE+7T,EAAU3zF,QAAU,SAA0Bs3F,EAAelB,GAEzDxgT,KAAK0/S,eACL,IAAInkT,GAAQmmT,GAEZ,IAAI1hT,KAAK0/S,cAAe1/S,KAAK2/S,cAAgB3/S,KAAK2/S,aAAe,EAG7D,MAFA3/S,MAAK2hT,aAAapmT,EAAMk7B,SAAU,mBAAoB,WACtDl7B,EAAQ,KAKZ,IAAI4kT,GAAangT,KAAKmgT,YAAcngT,KAAKmgT,WAAangT,KAAK6sS,QAAQ7qT,OACjE4/T,EAAkBrmT,EAAMsmT,kBACxB9D,EAAY/9S,IAGhB,OAAIzE,GAAMyuN,WAAa40F,EAAM70F,YAAYxuN,EAAOyE,UAC5CA,MAAK0/S,iBAKJc,IAGyB,IAAxBxgT,KAAK6sS,QAAQ7qT,OACfw+T,EAASxgT,KAAK6sS,QAAQ,GAElBsT,GAAcyB,GAChBzB,EAAangT,KAAK++S,SAASr1G,YAAYnuM,EAAM9V,IAAMua,KAAKmgT,WAAa,MACrEK,EAASL,EAAW79T,SAEpBk+T,EAASxgT,KAAK++S,SAASn6T,IAAI2W,EAAM9V,OAQlC+6T,GAAWA,IAAUxgT,MAAKk/S,QAAUl/S,KAAKk/S,OAAOsB,GAAQC,OACpDllT,EAAMk7B,UAAYsnR,EAAU4D,aAAapmT,EAAMk7B,SAAS,GAAIzzC,QAAO,YAAaw9T,EAAQ,iBAAiBvuS,KAAK,QAGvHjS,KAAKwuF,QAAQgyN,EAAQ,SAAqCp7T,EAAO07T,GAQ/D,GAPI/C,EAAUhiS,OACZxgB,EAAM6uN,QAAQ1sN,MAhNJ,QAgNqBqiC,QAAQ,SAAgBra,GACrDvgC,EAAQqN,IAAIsuT,EAAEK,SAAW,OAASz7R,MAKjCo7R,EAAG,CACN,GAAIA,IACFU,cAAehB,EACfj/M,OAAQi/M,EAAO9iT,MAAM,KAAK4/D,WAExBlqE,EAAUhO,GAAS,6BAEvB,OADA24T,GAAUmD,gBAAgB9tT,EAAS0tT,GAC5BvlT,EAAMk7B,UAAYsnR,EAAU4D,aAAapmT,EAAMk7B,SAAS,GAAIzzC,OAAMoQ,IAK3E,GAAIhO,EAEF,MADA24T,GAAUmD,gBAAgB97T,EAAM64B,WAAY6iS,GACrCvlT,EAAMk7B,UAAYsnR,EAAU4D,aAAapmT,EAAMk7B,SAASrxC,EAGjE,IAAqB,SAAjB07T,EAAEtrI,WAAuB,CAC3B,GAAIpiL,GAAU,mCAAqC0tT,EAAEtrI,UAErD,OADAuoI,GAAUmD,gBAAgB9tT,EAAS0tT,GAC5BvlT,EAAMk7B,UAAYsnR,EAAU4D,aAAapmT,EAAMk7B,SAAS,GAAIzzC,OAAMoQ,IAI3EmI,EAAMorE,MAAQz2B,KAAKl9C,MACnB8tT,EAAE9jO,SAAS96F,KAAKqZ,GAChBulT,EAAE5lS,MAAM0jS,EAAMv0F,cAAc9uN,EAAM6uN,QAhPtB,gBAwPV+1F,GAAcyB,IAChBA,EAAkBF,EAAcE,GAEhCzB,EAAWpgR,QAAQ,SAAcygR,GAC3BA,IAAUzC,GAAUmB,QAAUnB,EAAUmB,OAAOsB,GAAQC,QAI3D1C,EAAUvvN,QAAQgyN,EAAQ,SAAqCp7T,EAAO07T,GAC/DA,IAAK17T,GAA0B,SAAjB07T,EAAEtrI,YACrBsrI,EAAE5lS,MAAM0mS,EAAgBx3F,QAlQhB,iBA0QhB2zF,EAAUmD,gBAAkB,SAAyB97T,EAAO07T,GACtDA,GAAKA,EAAEl6O,KAAKk6O,EAAEl6O,KAElB,IAAIs4O,GACAsB,EAASM,EAAEU,cACXzD,EAAY/9S,IAGZwgT,KAAUxgT,MAAKk/S,OACjBA,EAASl/S,KAAKk/S,OAAOsB,IAErBtB,EAASl/S,KAAKk/S,OAAOsB,GAAU,GAAIjB,IAC/BiB,OAAQA,EACRj/M,OAAQu/M,EAAEv/M,OACVy+M,UAAWhgT,KAAKggT,UAChBjT,SAAU/sS,KAAK+sS,SACfkT,gBAAiBjgT,KAAKigT,gBACtB34H,MAAOtnL,KAAKsnL,MACZhwI,OAAQt3C,KAAKs3C,OACbwqQ,gBAAiB9hT,KAAK8hT,iBAAmB,OAI7ClD,EAAMn0F,KAAKy0F,GACP6C,MAAO,SAAe/7C,GACpB+3C,EAAUpyR,KAAK,QAASq6O,IAE1Bg8C,QAAS,SAAiBh8C,GACxB+3C,EAAUpyR,KAAK,UAAWq6O,IAE5Bi8C,aAAc,SAAmBj8C,GAC/B+3C,EAAUpyR,KAAK,eAAgBq6O,IAEjCk8C,YAAa,SAAqBl8C,GAChC+3C,EAAUpyR,KAAK,YAAaq6O,IAE9B1uN,OAAQ,SAAgB0uN,GAEtB+3C,EAAUpyR,KAAK,SAAUq6O,GACzB+3C,EAAUkB,YAAYuB,GAAQ55O,MAE1B5mE,KAAK8hT,iBAAmB9hT,KAAK8hT,gBAAgB9/T,OAC/C+7T,EAAUgB,SAAS77F,KAAKs9F,EAAQxgT,KAAK8hT,gBAAgBx/T,UAErDy7T,EAAUgB,SAASznQ,OAAOkpQ,GAC1BzC,EAAUpyR,KAAK,UAAWq6O,OAMlCk5C,EAAOv9J,gBAAgB,IAIzBu9J,EAAO1sT,IAAIpN,IAIb24T,EAAUn3O,IAAM,WACd,GAAIm3O,GAAY/9S,IAEhB7d,QAAO6I,KAAKgV,KAAKi/S,aAAal/Q,QAAQ,SAAyBt6C,GAC7Ds4T,EAAUkB,YAAYx5T,GAAK08T,KAAK,MAMpC5B,EAAS6B,SAEP,UAAa,SAAkB7gN,EAAQ8gN,EAASn9T,GAC9C,OA9UW,QAiVb,WAAc,SAAmBq8G,EAAQ8gN,EAASn9T,GAChD,GAAIo9T,GAAS,GAAIt/T,OAAM,qBAGvB,OAFAs/T,GAAOC,aACPr9T,EAAIhD,KAAKogU,IApVE,QAwVb,MAAS,SAAe/gN,EAAQ8gN,EAASn9T,GAEvC,MADAA,GAAIhD,KAAK,GAAIc,OAAM,gCA3VX,SA+VV,aAAgB,SAAqBu+G,EAAQ8gN,EAASn9T,GAEpD,MADAA,GAAIhD,KAAK,GAAIc,OAAMu+G,EAAOl/F,OAAO,GAAG4P,KAAK,QA9V9B,QAkWb,aAAgB,SAAqBsvF,EAAQ8gN,EAASn9T,EAAKw2B,EAAOolS,EAAG/C,GAEnE,OADCA,GAAa/9S,KAAK+9S,WAAWmD,gBAAgB3/M,EAAOl/F,OAAO,GAAG4P,KAAK,KAAMjS,OAnW/D,QAwWb,OAAU,SAAgBuhG,EAAQ8gN,GAChC,OAzWW,QA4Wb,QAAW,SAAiB9gN,EAAQ8gN,GAChC,OA7WS,QAgXb,QAAW,SAAiB9gN,EAAQ8gN,GAClC,OAjXW,QAoXb,GAAM,SAAY9gN,EAAQ8gN,GACxB,OArXW,QAwXb,OAAU,SAAgB9gN,EAAQ8gN,GAChC,OAzXW,QA4Xb,IAAO,SAAa9gN,EAAQ8gN,EAASn9T,EAAKw2B,GAExC,MADKA,GAAM15B,QAAQ05B,EAAMx5B,KAAKy8B,IA/XtB,SAoYV,MAAS,SAAe4iF,EAAQ8gN,EAASn9T,EAAKw2B,GAC5C,GAOIje,GAPAhY,EAAM87G,EAAO,GACb87J,GAAQ97J,EAAO,GACfihN,EAAUjhN,EAAO,GACjBkhN,EAAMlhN,EAAO,GACbkgN,KAAQzhT,KAAKg9E,SAAS,IAAMh9E,KAAKg9E,SAAS,GAAGykO,OAASgB,MAc1D,QAJgB,MAAZD,IACFH,EAAU,IAGJhlD,GACN,IArZU,GAsZRglD,EAAUl+S,KAAKoT,MAAM8qS,EACrB,MACF,KAtZa,GAuZXA,GAAWA,CACX,MACF,KA1ZY,GA2ZV5kT,EAAM,GAAIglJ,GAAO4/J,EAAQrgU,QACzByb,EAAIyd,MAAMmnS,EAAS,EAAG,UACtBA,EAAU5kT,EAad,MARKgkT,IAGHA,EAAMh8T,GAAO48T,EACTI,IAAKhB,EAAMgB,IAAMA,GACrB/mS,EAAMx5B,KAAKu/T,IAJX/lS,EAAMx5B,KAAKmgU,IAtaJ,SAgbX,SAAY,SAAkB9gN,GAC5B,OAhbW,IAgbQA,EAAO,KAG5B,KAAQ,SAAcA,EAAQ8gN,EAASn9T,EAAKw2B,GAE1C,MADAA,GAAMx5B,MAAMq/G,EAAO,GAAI,QAAQ37E,KAAK27E,EAAO,KAAOA,EAAO,GAAKA,EAAO,MArb5D,SAybX,QAAW,SAAiBA,EAAQ8gN,GAClC,GAAIK,GAAgB,+BAA+BnvN,KAAKgO,EAAO,GAE/D,QA3bW,IA4bTi/M,OAAQxgT,KAAKwhT,cACbvjT,QAASykT,EAAc,GACvBrM,MAAOqM,EAAc,IAAM,EAC3BpM,MAAOoM,EAAc,IAAM,EAC3BC,OAAQD,EAAc,IAAM,KAIhC,KAAQ,SAAcnhN,EAAQ8gN,EAASn9T,EAAKw2B,GAO1C,MANAA,GAAMx5B,MACJuD,IAAK87G,EAAO,GACZx5F,GAAIw5F,EAAO,GAAGr5E,OAAO,GACrB7iC,GAAIk8G,EAAO,MAzcJ,SAgdX,OAAU,WACR,OAhdW,GAgdOvhG,KAAKuhT,YAAY,MASvChB,EAASqC,eAEP,MAAS,SAAetC,GACtB,GAAI3vP,KACJ,OAAI0vP,GAAiBC,GAAmB3vP,GAGxCA,EAAS6vP,OAASxgT,KAAKwhT,cAGvBlB,EAAUvgR,QAAQ,SAAc8iR,GAC1BA,IAASlyP,EAASkyP,EAAQ,IAAMA,EAAQ,MAGvClyP,IAIT,iBAAkB,WAChB,MAAO4vP,GAASqC,cAAcE,MAAMpwT,MAAMsN,KAAMrN,YAIlD,cAAe,SAAe2tT,GAC5B,GAAI3vP,KACJ,OAAI0vP,GAAiBC,GAAmB3vP,GAGxCA,EAAS6vP,OAASxgT,KAAKwhT,cAGvBlB,EAAUvgR,QAAQ,SAAc8iR,GAC9B,GAAIA,EAAS,CACX,GAAIE,GAAaF,EAAQ,GAAGnlT,MAAM,IAE7BizD,GAASoyP,EAAW,MAAKpyP,EAASoyP,EAAW,QAClDpyP,EAASoyP,EAAW,IAAIA,EAAW,IAAMF,EAAQ,MAI9ClyP,IAGT,cAAe,SAAe2vP,GAC5B,GAAI3vP,KACJ,OAAI0vP,GAAiBC,GAAmB3vP,GAGxCA,EAAS6vP,OAASxgT,KAAKwhT,cAGvBlB,EAAUvgR,QAAQ,SAAc8iR,GAC9B,GAAIA,GAAWA,EAAQ7gU,OAAS,EAAG,CACjC,GAAI+gU,GAAaF,EAAQ,GAAGnlT,MAAM,IAE7BizD,GAASoyP,EAAW,MAAKpyP,EAASoyP,EAAW,QAClDpyP,EAASoyP,EAAW,IAAIA,EAAW,IAAMF,EAAQ,MAI9ClyP,KAKX4vP,EAASyC,YAAc,GAAIpkR,QAAO,OAASz8C,OAAO6I,KAAKu1T,EAAS6B,SAASnwS,KAAK,KAAO,SACrFsuS,EAAS0C,iBAAmB,GAAIrkR,QAAO,OAASz8C,OAAO6I,KAAKu1T,EAAS6B,SAASnwS,KAAK,KAAO,KAW1FsuS,EAAS1oH,OAAS,SAAsBipH,EAAGoC,GAKzC,GAJApC,EAAEQ,gBAAkB4B,EA3iBN,SA+iBVpC,EAAEQ,eAAep5R,OAAO44R,EAAEQ,eAAet/T,OAAS,GAAkB,CACtE8+T,EAAEQ,eAAiB1C,EAAMv0F,cAAcy2F,EAAEQ,eAEzC,IAAI6B,GAASrC,EAAEQ,eAAe5jT,MAljBlB,OAojBRsC,MAAK+b,OACPonS,EAAOpjR,QAAQ,SAAcra,GAC3BvgC,EAAQqN,IAAIsuT,EAAEK,SAAW,OAASz7R,IAKtC,IAAI09R,GAAeD,EAAOnhU,OAAO,CACE,KAA/BmhU,EAAOC,GAAaphU,QAAcmhU,EAAO9gT,OAAO+gT,EAAa,GAEjEtC,EAAEQ,eAAiB,GACnBthT,KAAKqjT,gBAAgBvC,EAAGA,EAAES,YAAcT,EAAES,YAAY1uS,OAAOswS,MAIjEpF,EAAUuF,iBAAmB,WACvBtjT,KAAK0/S,eACL,IAAI6D,GAAS5wT,UAAU,GACnB+uB,EAAK/uB,UAAUA,UAAU3Q,OAAO,GAChC6qB,EAAO7Y,MAAM5R,UAAUyR,MAAMrS,KAAKmR,UAAW,EAAGA,UAAU3Q,OAAO,EACrE0/B,GAAGhvB,MAAM6wT,EAAQ12S,IAGvBkxS,EAAU4D,aAAe,SAASjgS,GAC7B1hB,KAAK0/S,eACL,IAAI7yS,GAAO7Y,MAAM5R,UAAUyR,MAAMrS,KAAKmR,UAAW,EACjD+uB,GAAGhvB,MAAMsN,KAAM6M,IAOpBkxS,EAAUsF,gBAAkB,SAAyBvC,GAUnD,IATA,GACIrqS,GACA+sS,EACAnB,EACA/B,EACAtjO,EALAthE,KAMAx2B,KAGE47T,EAAES,YAAYv/T,QAAUu+T,EAASyC,YAAYp9R,KAAKk7R,EAAES,YAAY,KAAK,CAsBzE,GArBA9qS,EAAQqqS,EAAES,YAAYj/T,QACtBkhU,EAAW/sS,EAAM/Y,MAAM,KAEnB,QAAQkoB,KAAK49R,EAAS,MAOlB,sEAAsE59R,KAAKk7R,EAAES,YAAY,IACzFiC,EAAS94P,QAAQ,UAInB84P,EAAS94P,QAAQ,aAMH,UAAhB84P,EAAS,KAAoD,IAAlC1C,EAAES,YAAY7lT,QAAQ,OACnD,MAAOolT,GAAES,YAAY72P,QAAQj0C,EAI/B,IAAI8pS,EAAS6B,QAAQoB,EAAS,IAU5B,OAPoB,UAAhBA,EAAS,KACXnB,EAAUzD,EAAM3zF,cAAc61F,EAAES,YAAYj/T,UAG9Cg+T,EAAYC,EAAS6B,QAAQoB,EAAS,IAAIhiU,KAAKs/T,EAAG0C,EAAUnB,GAAW5rS,EAAOvxB,EAAKw2B,EAAO1b,MAGlFsgT,EAAUh+T,SAChB,IAloBK,KAmoBH,KAEF,KAtoBI,KAuoBF06F,EAAW8jO,EAAE9jO,SAAS16F,QACtBg+T,EAAY5kS,EAGRshE,GAAYA,EAASvmD,WACvBumD,EAASymO,UAAYvzQ,KAAKl9C,MAAQgqF,EAASrW,MACzC3mE,KAAKsjT,iBACHtmO,EACA93F,EAAIlD,OAASkD,EAAMA,EAAI,GAGvBq7T,EAASqC,cAAc5lO,EAASt5F,MAC5B68T,EAASqC,cAAc5lO,EAASt5F,MAAMlC,KAAKs/T,EAAGR,EAAWp7T,IACxD8O,MAAM+c,QAAQ2K,IAAUA,EAAM15B,OAAS,EAAI05B,EAAQA,EAAM,GAC/DshE,EAASvmD,WAId/a,EAAM15B,OAASkD,EAAIlD,OAAS,CAC5B,MAEF,SACEg7F,EAAW8jO,EAAE9jO,SAAS16F,QAElB06F,GAAYA,EAASvmD,WACvBumD,EAASymO,UAAYvzQ,KAAKl9C,MAAQgqF,EAASrW,MAC3C3mE,KAAKsjT,iBAAiBtmO,EAAU93F,EAAIlD,OAAS,EAAIkD,EAAMA,EAAI,GAAIo7T,EAAU,GAAItjO,EAASvmD,WAGxFvxC,EAAIlD,OAAS,OAKjBg7F,EAAW8jO,EAAE9jO,SAAS16F,UACN06F,EAASvmD,WACvBumD,EAASymO,UAAYvzQ,KAAKl9C,MAAQgqF,EAASrW,MACzC3mE,KAAKsjT,iBAAiBtmO,EAAU,GAAIh6F,OAAM,gDAAkDyzB,EAAQ,MAAK,EAAQumE,EAASvmD,UAKhI4rR,GAAUmB,EAAWxmO,EAAWr+D,EAIP,KAArBmiS,EAAES,YAAY,IAAWT,EAAES,YAAYj/T,UAK/Ci+T,EAASmD,cAAgB,SAAuBt+T,EAAOqxC,GAKrD,MAJwB,kBAAbA,IACPsnR,EAAU4D,aAAalrR,EAASrxC,OAAO,GAO7C24T,EAAU4F,MAAQ,SAAel+T,EAAKm+T,EAAUntR,GAC9C,GAAIotR,GAAU7jT,KAAKwhM,UAAY/7M,CAC/Bua,MAAKoqN,QAAQ,WACX,OACI3kO,IAAKo+T,EACLptR,SAAUA,EACVmtR,SAAUA,EACV55F,WAAY,MAAOviM,SAAU,WAAY4iB,SAAU,WAAYX,WAC/DhmD,KAAM,QACN0mO,SAAU,QAASy5F,EAASD,GAAU3xS,KAAK,SAKnD8rS,EAAUn5T,IAAM,SAAaa,EAAKgxC,GAChC,GAAIziC,MAAM+c,QAAQtrB,GAAM,MAAOua,MAAK0+S,SAAShsT,MAAMsN,KAAMrN,UAEzD,IAAIkxT,GAAU7jT,KAAKwhM,UAAY/7M,CAC/Bua,MAAKoqN,QAAQ,SAAoB05F,GAC/B,OACIr+T,IAAKo+T,EACLptR,SAAUA,EACVuzL,WAAY,MAAOviM,SAAU,WAAYiiB,WACzChmD,KAAM,MACN0mO,QAAS,OAASy5F,MAO1B9F,EAAUgG,KAAO,SAAat+T,EAAKgxC,GACjC,GAAIotR,GAAU7jT,KAAKwhM,UAAY/7M,CAC/Bua,MAAKoqN,QAAQ,SAAoB05F,GAC/B,OACIr+T,IAAKo+T,EACLptR,SAAUA,EACVuzL,WAAY,MAAOviM,SAAU,WAAYiiB,WACzChmD,KAAM,OACN0mO,QAAS,QAAUy5F,MAM3B9F,EAAUW,SAAW,SAAkB1zT,EAAMyrC,GAW3C,QAASkP,GAAOzgD,EAAKm4L,GACfn4L,GACF+uC,EAAO/xC,KAAKgD,IAIb8O,MAAM+c,QAAQssK,GAAWA,GAAWA,IAAUt9I,QAAQ,SAAcr6C,GACnE,GAAIA,GAASq4T,EAAUv8G,UAAUx/M,OAAQ,CACvC,GAAIgiU,GAAS7hU,OAAO6I,KAAKtF,GAAO,GAC5Bu+T,IAEJA,GAASD,EAAOj3S,QAAQgxS,EAAUv8G,UAAW,KAAO97M,EAAMs+T,GAC1DpF,EAAMj0F,MAAMu5F,EAAWD,OAEvBrF,GAAMj0F,MAAMu5F,EAAWx+T,OAIpBy+T,GACH1tR,EAASxC,EAAOjyC,OAASiyC,EAAStV,EAAWulS,GA7BnD,GAGIC,GAHApG,EAAY/9S,KACZkkT,KACAjwR,IAGA8pR,GAAUv8G,UAAUx/M,SAAQgJ,EAAOA,EAAKgnB,IAAI,SAAiBvsB,GAC/D,MAAOs4T,GAAUv8G,UAAY/7M,KA2B/Bua,KAAKyhT,MAAMz2T,EAAM,SAAew1T,EAAQ/6T,EAAKisB,EAAO0yS,GAC7CD,IAAOA,EAAQC,GAEpBrG,EAAU3zF,QAAQ,SAAyB05F,GACzC,OACIrtR,SAAUkP,EACV87Q,OAAMA,EACN/9T,KAAM,MACN0mO,QAAS,OAAS3kO,EAAIwsB,KAAK,KAC3BxsB,IAAKuF,EACLg/N,WAAY,MAAOh2N,QAAS,WAAY01C,aAE3C82Q,MASPD,EAAS8D,QAAU,SAAiB3gU,EAAMsmO,EAAUvkO,EAAKC,EAAOk+T,EAAUntR,EAAUgsR,GAClF,GAGIzgU,GAHA6hU,EAAU7jT,KAAKwhM,UAAY/7M,EAC3B43Q,EAAO,EACPinD,QAAmB5+T,EAiBvB,IAdI+8J,EAAOE,SAASj9J,IAClB23Q,EA1yBc,EA2yBd33Q,EAAQA,EAAMu4B,SAAS,WACA,WAAdqmS,GACTjnD,EA5yBe,EA6yBf33Q,EAAQA,EAAMu4B,YACS,WAAdqmS,IACTjnD,EAjzBY,EAkzBZ33Q,EAAQye,KAAKC,UAAU1e,IAGzBA,EAAQk5T,EAAM5zF,YAAYtlO,IAE1B1D,EAASygK,EAAO0/D,WAAWz8N,IACdsa,KAAKy/S,SAChB,MAAOc,GAASmD,cAAc,GAAI1gU,OAAM,2CAA6Cgd,KAAKy/S,UAAWhpR,EAGvGz2B,MAAKoqN,QAAQ,SAAwB05F,GACnC,OACIr+T,IAAKo+T,EACLptR,SAAUA,EACVmtR,SAAUA,EACVl+T,MAAOA,EACP+8T,IAAKA,EACLz4F,SAAUA,EACVtmO,KAAMA,EACNm+T,mBAAkBA,EAClBz3F,SAAU1mO,EAAMmgU,EAASxmD,EAAMumD,EAAU5hU,GAAQiwB,KAAK,MAChDwwS,EAAM,IAAMA,EAAM,KAClBqB,EA50BA,WA40BoB,IA70BlB,OA80BSp+T,MAMzBq4T,EAAUjtR,IAAM85L,EAAMjsM,EAAW4hS,EAAS8D,QACtC,QAEK,MAAO58R,SACP,QAASA,SACT,WAAY4iB,SACZ,WAAYX,YAIrBq0Q,EAAUhxS,QAAU69M,EAAMjsM,EAAW4hS,EAAS8D,QAC1C,YAEK,MAAO58R,SACP,QAASA,SACT,WAAY4iB,SACZ,WAAYX,YAIrBq0Q,EAAU/3O,IAAM4kJ,EAAMjsM,EAAW4hS,EAAS8D,QACtC,QAEK,MAAO58R,SACP,QAASA,SACT,WAAY4iB,SACZ,WAAYX,YAIrBq0Q,EAAU0E,IAAM,SAAqBh9T,EAAKC,EAAO+8T,EAAKmB,EAAUntR,GAC9D8pR,EAAS8D,QAAQ7iU,KAAKwe,KAClB,QAEK,MAAOynB,SACP,QAASA,SACT,WAAY4iB,SACZ,WAAYX,WAEjBjkD,EACAC,EACAk+T,EACAntR,EACAgsR,IAIN1E,EAAUnjQ,OAAS,SAAgBn1D,EAAKC,EAAO+wC,GAC7C8pR,EAAS8D,QAAQ7iU,KAAKwe,KAClB,WAEK,MAAOynB,SACP,QAASA,SACT,WAAY4iB,SACZ,WAAYX,WAEjBjkD,EACAC,EACA,EACA+wC,IAINsnR,EAAU59J,QAAU,SAAiB16J,EAAKC,EAAO+wC,GAC/C8pR,EAAS8D,QAAQ7iU,KAAKwe,KAClB,YAEK,MAAOynB,SACP,QAASA,SACT,WAAY4iB,SACZ,WAAYX,WAEjBjkD,EACAC,EACA,EACA+wC,IAKN8pR,EAASgE,SAAW,SAAkB7gU,EAAM+B,EAAKC,EAAO+wC,GACtD,GAAIotR,GAAU7jT,KAAKwhM,UAAY/7M,CAC/Bua,MAAKoqN,QAAQ,SAA0B05F,GACrC,OACIr+T,IAAKo+T,EACLptR,SAAUA,EACV/wC,MAAOA,EACPskO,WACK,MAAOviM,SACP,QAAS4iB,SACT,WAAYX,WAEjBhmD,KAAMA,EACNm+T,mBAAkBA,EAClBz3F,SAAU1mO,EAAMmgU,EAASn+T,GAAOusB,KAAK,MAC/B6xS,EAl7BA,WAk7BoB,QAMlC/F,EAAUyG,UAAYzG,EAAU0G,KAAO75F,EAAMjsM,EAAW4hS,EAASgE,SAAU,QAC3ExG,EAAU2G,UAAY3G,EAAU4G,KAAO/5F,EAAMjsM,EAAW4hS,EAASgE,SAAU,QAG3ExG,EAAU/qI,IAAM,SAAavtL,EAAKgxC,GAChC,GAAIotR,GAAU7jT,KAAKwhM,UAAY/7M,CAC/Bua,MAAKoqN,QAAQ,SAAuB05F,GAClC,OACIr+T,IAAKo+T,EACLptR,SAAUA,EACVuzL,WACK,MAAOviM,SACP,WAAYiiB,WAEjBhmD,KAAM,SACNm+T,mBAAkBA,EAClBz3F,QAAS,UAAYy5F,GACfC,EAz8BA,WAy8BoB,QAIlC/F,EAAkB,OAAIA,EAAU/qI,IAGhCutI,EAASqE,QAAU,SAAiBlhU,EAAM+yC,GAOxC,QAASkP,GAAOzgD,EAAKm4L,GACfn4L,IACF+uC,EAASA,MACTA,EAAO/xC,KAAKgD,IAEVm4L,IAAS6mI,EAAYA,EAAUrxS,OAAOwqK,MAGnC8mI,GACH1tR,EAASxC,GAAUA,EAAOjyC,OAASiyC,EAAOthB,MAAQgM,EAAWulS,GAfnE,GAEIjwR,GACAkwR,EAHApG,EAAY/9S,KACZkkT,IAkBJlkT,MAAKyhT,OAAMA,EAAO,SAAejB,EAAQx1T,EAAM0mB,EAAO0yS,GAC/CD,IAAOA,EAAQC,GAEpBrG,EAAU3zF,QAAQ,SAAwB05F,GACxC,OACIrtR,SAAUkP,EACVjiD,KAAMA,EACN0mO,QAAS1mO,IAEZ88T,MAKPzC,EAAU9/S,QAAW2sN,EAAMjsM,EAAW4hS,EAASqE,QAAS,WACxD7G,EAAUruE,MAAQ9kB,EAAMjsM,EAAW4hS,EAASqE,QAAS,aACrD7G,EAAU+E,MAAQl4F,EAAMjsM,EAAW4hS,EAASqE,QAAS,SACrD7G,EAAUjhO,SAAW8tI,EAAMjsM,EAAW4hS,EAASqE,QAAS,kBACxD7G,EAAU8G,MAAQj6F,EAAMjsM,EAAW4hS,EAASqE,QAAS,eACrD7G,EAAU7tD,MAAQtlC,EAAMjsM,EAAW4hS,EAASqE,QAAS,eAGrD7G,EAAU+G,SAAW/G,EAAUruE,MAC/BquE,EAAUgH,cAAgBhH,EAAUjhO,SACpCihO,EAAUiH,WAAajH,EAAU8G,MACjC9G,EAAUkH,WAAalH,EAAU7tD,MAKjC6tD,EAAUmH,UAAY,SAAmB1E,EAAQ2E,EAAQvsP,EAAQniC,GAC/Dz2B,KAAKoqN,QAAQ,SAA0B05F,GACrC,OACIrtR,SAAUA,EACVmiC,OAAQA,EACRusP,OAAQA,EACRn7F,WACK,SAAU3/K,SACV,SAAUA,SACV,WAAYX,WAEjBhmD,KAAM,kBACN0mO,QAAS,mBAAqB+6F,EAAS,IAAMvsP,IAEhD4nP,KAEJ7B,GAEHt9T,EAAOD,QAAUu9T,I5xBy3hGYn9T,KAAKJ,EAASH,EAAoB,GAAIA,EAAoB,KAAKwhK,SAItF,SAAUphK,EAAQD,EAASH,GAEjC,Y6xBr+jGA,SAASmkU,GAASC,GAChB,GAAIxyR,GAAMwyR,EAAIrjU,MAEd,IAAI6wC,EAAM,EAAI,EACZ,KAAM,IAAI7vC,OAAM,iDAKlB,IAAIsiU,GAAWD,EAAI3pT,QAAQ,IAO3B,QANkB,IAAd4pT,IAAiBA,EAAWzyR,IAMxByyR,EAJcA,IAAazyR,EAC/B,EACA,EAAKyyR,EAAW,GAMtB,QAASnjG,GAAYkjG,GACnB,GAAIE,GAAOH,EAAQC,GACfC,EAAWC,EAAK,GAChBC,EAAkBD,EAAK,EAC3B,OAAuC,IAA9BD,EAAWE,GAAuB,EAAKA,EAGlD,QAASC,GAAaJ,EAAKC,EAAUE,GACnC,MAAuC,IAA9BF,EAAWE,GAAuB,EAAKA,EAGlD,QAASh/F,GAAa6+F,GACpB,GAAI5nT,GAcAnc,EAbAikU,EAAOH,EAAQC,GACfC,EAAWC,EAAK,GAChBC,EAAkBD,EAAK,GAEvB3xT,EAAM,GAAI8xT,GAAID,EAAYJ,EAAKC,EAAUE,IAEzCG,EAAU,EAGV9yR,EAAM2yR,EAAkB,EACxBF,EAAW,EACXA,CAGJ,KAAKhkU,EAAI,EAAGA,EAAIuxC,EAAKvxC,GAAK,EACxBmc,EACGmoT,EAAUP,EAAIzvK,WAAWt0J,KAAO,GAChCskU,EAAUP,EAAIzvK,WAAWt0J,EAAI,KAAO,GACpCskU,EAAUP,EAAIzvK,WAAWt0J,EAAI,KAAO,EACrCskU,EAAUP,EAAIzvK,WAAWt0J,EAAI,IAC/BsS,EAAI+xT,KAAcloT,GAAO,GAAM,IAC/B7J,EAAI+xT,KAAcloT,GAAO,EAAK,IAC9B7J,EAAI+xT,KAAmB,IAANloT,CAmBnB,OAhBwB,KAApB+nT,IACF/nT,EACGmoT,EAAUP,EAAIzvK,WAAWt0J,KAAO,EAChCskU,EAAUP,EAAIzvK,WAAWt0J,EAAI,KAAO,EACvCsS,EAAI+xT,KAAmB,IAANloT,GAGK,IAApB+nT,IACF/nT,EACGmoT,EAAUP,EAAIzvK,WAAWt0J,KAAO,GAChCskU,EAAUP,EAAIzvK,WAAWt0J,EAAI,KAAO,EACpCskU,EAAUP,EAAIzvK,WAAWt0J,EAAI,KAAO,EACvCsS,EAAI+xT,KAAcloT,GAAO,EAAK,IAC9B7J,EAAI+xT,KAAmB,IAANloT,GAGZ7J,EAGT,QAASiyT,GAAiBvT,GACxB,MAAOwT,GAAOxT,GAAO,GAAK,IACxBwT,EAAOxT,GAAO,GAAK,IACnBwT,EAAOxT,GAAO,EAAI,IAClBwT,EAAa,GAANxT,GAGX,QAASyT,GAAaC,EAAOr/O,EAAOC,GAGlC,IAAK,GAFDnpE,GACA4uH,KACK/qI,EAAIqlF,EAAOrlF,EAAIslF,EAAKtlF,GAAK,EAChCmc,GACIuoT,EAAM1kU,IAAM,GAAM,WAClB0kU,EAAM1kU,EAAI,IAAM,EAAK,QACP,IAAf0kU,EAAM1kU,EAAI,IACb+qI,EAAOnqI,KAAK2jU,EAAgBpoT,GAE9B,OAAO4uH,GAAOp6G,KAAK,IAGrB,QAASwyM,GAAeuhG,GAQtB,IAAK,GAPDvoT,GACAo1B,EAAMmzR,EAAMhkU,OACZikU,EAAapzR,EAAM,EACnB8rG,KAIKr9I,EAAI,EAAG4kU,EAAOrzR,EAAMozR,EAAY3kU,EAAI4kU,EAAM5kU,GAH9B,MAInBq9I,EAAMz8I,KAAK6jU,EACTC,EAAO1kU,EAAIA,EALM,MAKgB4kU,EAAOA,EAAQ5kU,EAL/B,OA2BrB,OAjBmB,KAAf2kU,GACFxoT,EAAMuoT,EAAMnzR,EAAM,GAClB8rG,EAAMz8I,KACJ4jU,EAAOroT,GAAO,GACdqoT,EAAQroT,GAAO,EAAK,IACpB,OAEsB,IAAfwoT,IACTxoT,GAAOuoT,EAAMnzR,EAAM,IAAM,GAAKmzR,EAAMnzR,EAAM,GAC1C8rG,EAAMz8I,KACJ4jU,EAAOroT,GAAO,IACdqoT,EAAQroT,GAAO,EAAK,IACpBqoT,EAAQroT,GAAO,EAAK,IACpB,MAIGkhI,EAAM1sH,KAAK,IApJpB7wB,EAAQ+gO,WAAaA,EACrB/gO,EAAQolO,YAAcA,EACtBplO,EAAQqjO,cAAgBA,CAOxB,KAAK,GALDqhG,MACAF,KACAF,EAA4B,mBAAf/sH,YAA6BA,WAAa3kM,MAEvDoZ,EAAO,mEACF9rB,EAAI,EAAGuxC,EAAMzlB,EAAKprB,OAAQV,EAAIuxC,IAAOvxC,EAC5CwkU,EAAOxkU,GAAK8rB,EAAK9rB,GACjBskU,EAAUx4S,EAAKwoI,WAAWt0J,IAAMA,CAKlCskU,GAAU,IAAIhwK,WAAW,IAAM,GAC/BgwK,EAAU,IAAIhwK,WAAW,IAAM,I7xBookGzB,SAAUv0J,EAAQD,G8xBvpkGxBA,EAAQkiO,KAAO,SAAUzrB,EAAQt5D,EAAQ4nL,EAAMC,EAAMC,GACnD,GAAI7jU,GAAG2B,EACHmiU,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTnlU,EAAI6kU,EAAQE,EAAS,EAAK,EAC1BhiU,EAAI8hU,GAAQ,EAAI,EAChB9gU,EAAIwyM,EAAOt5D,EAASj9I,EAOxB,KALAA,GAAK+C,EAEL7B,EAAI6C,GAAM,IAAOohU,GAAU,EAC3BphU,KAAQohU,EACRA,GAASH,EACFG,EAAQ,EAAGjkU,EAAS,IAAJA,EAAWq1M,EAAOt5D,EAASj9I,GAAIA,GAAK+C,EAAGoiU,GAAS,GAKvE,IAHAtiU,EAAI3B,GAAM,IAAOikU,GAAU,EAC3BjkU,KAAQikU,EACRA,GAASL,EACFK,EAAQ,EAAGtiU,EAAS,IAAJA,EAAW0zM,EAAOt5D,EAASj9I,GAAIA,GAAK+C,EAAGoiU,GAAS,GAEvE,GAAU,IAANjkU,EACFA,EAAI,EAAIgkU,MACH,IAAIhkU,IAAM+jU,EACf,MAAOpiU,GAAIsiF,IAAsB0/I,KAAd9gO,GAAK,EAAI,EAE5BlB,IAAQm6B,KAAKywG,IAAI,EAAGq3L,GACpB5jU,GAAQgkU,EAEV,OAAQnhU,GAAK,EAAI,GAAKlB,EAAIm6B,KAAKywG,IAAI,EAAGvsI,EAAI4jU,IAG5ChlU,EAAQ85B,MAAQ,SAAU28K,EAAQnyM,EAAO64I,EAAQ4nL,EAAMC,EAAMC,GAC3D,GAAI7jU,GAAG2B,EAAGC,EACNkiU,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBv+C,EAAe,KAATo+C,EAAc9nS,KAAKywG,IAAI,GAAI,IAAMzwG,KAAKywG,IAAI,GAAI,IAAM,EAC1DztI,EAAI6kU,EAAO,EAAKE,EAAS,EACzBhiU,EAAI8hU,EAAO,GAAK,EAChB9gU,EAAIK,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,CAmC1D,KAjCAA,EAAQ44B,KAAK8oD,IAAI1hF,GAEb6jI,MAAM7jI,IAAUA,IAAUygO,KAC5BhiO,EAAIolI,MAAM7jI,GAAS,EAAI,EACvBlD,EAAI+jU,IAEJ/jU,EAAI87B,KAAK+oD,MAAM/oD,KAAK9rB,IAAI9M,GAAS44B,KAAKooS,KAClChhU,GAAStB,EAAIk6B,KAAKywG,IAAI,GAAIvsI,IAAM,IAClCA,IACA4B,GAAK,GAGLsB,GADElD,EAAIgkU,GAAS,EACNx+C,EAAK5jR,EAEL4jR,EAAK1pP,KAAKywG,IAAI,EAAG,EAAIy3L,GAE5B9gU,EAAQtB,GAAK,IACf5B,IACA4B,GAAK,GAGH5B,EAAIgkU,GAASD,GACfpiU,EAAI,EACJ3B,EAAI+jU,GACK/jU,EAAIgkU,GAAS,GACtBriU,GAAMuB,EAAQtB,EAAK,GAAKk6B,KAAKywG,IAAI,EAAGq3L,GACpC5jU,GAAQgkU,IAERriU,EAAIuB,EAAQ44B,KAAKywG,IAAI,EAAGy3L,EAAQ,GAAKloS,KAAKywG,IAAI,EAAGq3L,GACjD5jU,EAAI,IAID4jU,GAAQ,EAAGvuH,EAAOt5D,EAASj9I,GAAS,IAAJ6C,EAAU7C,GAAK+C,EAAGF,GAAK,IAAKiiU,GAAQ,GAI3E,IAFA5jU,EAAKA,GAAK4jU,EAAQjiU,EAClBmiU,GAAQF,EACDE,EAAO,EAAGzuH,EAAOt5D,EAASj9I,GAAS,IAAJkB,EAAUlB,GAAK+C,EAAG7B,GAAK,IAAK8jU,GAAQ,GAE1EzuH,EAAOt5D,EAASj9I,EAAI+C,IAAU,IAAJgB,I9xB+pkGtB,SAAUhE,EAAQD,G+xBjvkGxB,GAAI68B,MAAcA,QAElB58B,GAAOD,QAAU4S,MAAM+c,SAAW,SAAUnd,GAC1C,MAA6B,kBAAtBqqB,EAASz8B,KAAKoS,K/xByvkGjB,SAAUvS,EAAQD,EAASH,GAEjC,cAAa,SgyB9vkGb,GAWA,QAAS0lU,GAAch8S,EAAG5C,EAAG3jB,EAAGC,GAC9B,OAASsmB,GAAK,GAAO5C,GAAK,GAAO3jB,GAAK,EAAKC,KAAO,EA6BpD,QAAS06T,GAASlS,EAASmS,EAAWjjT,GACpCA,EAAUA,MAKViE,KAAK4mT,MAAQ,eAAiB7qT,GAAUA,EAAQ,eAAiB,GACjEiE,KAAKg/S,UAAYA,GAAa,MAM9Bh/S,KAAK6mT,YAAc9qT,EAAQ,iBAAmB,KAe9CiE,KAAK8mT,SAAW/qT,EAAQ8iT,cACO,cAA1B9iT,EAAQ8iT,cAAgC,EAAI,EAC5C,YAAc9iT,IAAWA,EAAQ+qT,SAAW,EAM7C9mT,KAAK8mT,UAAY,IAAG9mT,KAAK8mT,SAAW,EAGxC,IAAI7H,GAAc1nS,EAAMs1R,EAExB7sS,MAAK+mT,QACL/mT,KAAK8/B,KAAO,EACZ9/B,KAAKgnT,OAAS/H,EAAY+H,OAC1BhnT,KAAK6sS,QAAUoS,EAAYpS,QAI3B7sS,KAAKw0F,MAAQ,GAAIyyN,IACfC,QAAS,kBAAqBnrT,GAAUA,EAAQ,kBAAoB,MAMlE,kBAAsBiE,MAAKg/S,YAC7Bh/S,KAAKxC,KAAOwC,KAAKg/S,WAInBh/S,KAAKmnT,YAgZP,QAASh8B,GAAKi8B,EAAW5G,GACvBxgT,KAAKta,MAAQ0hU,EACbpnT,KAAKwgT,OAASA,EArfhB,GAAIyG,GAAc,EAAQ,KACtB1vS,EAAQ,EAAQ,KAChB8vS,EAAS,EAAQ,GAkBrB9vS,GAAM+vS,UAAU,SAAU,SAAexgR,EAAMphD,GACxB,gBAAVA,KAAuBsO,MAAM+c,QAAQrrB,IAAU,UAAYA,GACpEohD,EAAKkgR,QAAUthU,EAAMshU,QAAU,EAE/BlgR,EAAKkgR,OAAS,IAqFlBjI,EAAS38T,UAAU+kU,UAAY,WAC7B,GAAIta,GAAU7sS,KAAK6sS,QACf3rS,EAAOlB,KACP0R,EAAQ,EACR81H,EAAQ,CAGZ,OAAKqlK,GAAQ7qT,QAGbwlJ,EAAQqlK,EAAQ5hT,OAAO,SAAgBu8I,EAAOg5K,GAC5C,MAAOh5K,GAAQg5K,EAAO+G,QACrB,GAEH1a,EAAQ9sQ,QAAQ,SAAcygR,GAC5B,GAGI/6T,GACA+gB,EAJAghT,EAAahH,EAAO+G,OAAS//K,EAC7Bw/K,EAAS9lT,EAAK8lT,OAAOxG,EAAO7nP,SAAWz3D,EAAK0lT,MAC5C5kU,EAASs8B,KAAK+oD,MAAMmgP,EAAaR,EAASna,EAAQ7qT,OAMlDglU,KAAW9lT,EAAK0lT,QAAO5kU,EAASglU,EAEpC,KAAK,GAAI1lU,GAAI,EAAGA,EAAIU,EAAQV,IAAK,CAE7BklB,EADEtF,EAAK2lT,aAAerG,EAAO5iT,OAASsD,EAAK2lT,YACvC3lT,EAAKspN,OAAOg2F,EAAOljT,KAAM,IAAKhc,GAE9B4f,EAAKspN,OAAOg2F,EAAO7nP,OAAQ,IAAKr3E,EAGtC,KAAK,GAAI0gC,GAAI,EAAGA,EAAI9gB,EAAK4lT,SAAU9kS,IACjCv8B,EAAMkhU,EAAcngT,EAAE,EAAQ,EAAJwb,GAAQxb,EAAE,EAAQ,EAAJwb,GAAQxb,EAAE,EAAQ,EAAJwb,GAAQxb,EAAM,EAAJwb,IAChE9gB,EAAK6lT,KAAKr1S,GAAS,GAAIy5Q,GAAK1lS,EAAK+6T,EAAO7nP,QACxCjnD,OAON1R,KAAK+mT,KAAO/mT,KAAK+mT,KAAKh9P,KAAK,SAAgBp/C,EAAG5C,GAC5C,MAAI4C,GAAEjlB,QAAUqiB,EAAEriB,MAAc,EACvBilB,EAAEjlB,MAAQqiB,EAAEriB,MAAc,GAE3B,IAGVsa,KAAK8/B,KAAO9/B,KAAK+mT,KAAK/kU,OACfge,MA3CqBA,MAsD9B++S,EAAS38T,UAAUwC,IAAM,SAAaa,GACpC,GAAI+uG,GAAQx0F,KAAKw0F,MAAM5vG,IAAIa,EAC3B,IAAI+uG,EAAO,MAAOA,EAElB,IAAIvnE,GAAOjtB,KAAK+mT,KAAK/mT,KAAKynT,KAAKznT,KAAK0nT,UAAUjiU,IAC9C,OAAKwnC,IAELjtB,KAAKw0F,MAAM1jE,IAAIrrC,EAAKwnC,EAAKuzR,QAClBvzR,EAAKuzR,YAHZ,IAaFzB,EAAS38T,UAAUqlU,KAAO,SAAcC,GAUtC,IATA,GAGIC,GACAntS,EACAq5R,EALAkT,EAAO/mT,KAAK+mT,KACZ9yC,EAAOj0Q,KAAK8/B,KACZ60O,EAAM,IAOG,CAGX,IAFAk/B,EAAOl/B,EAAMV,GAAS,KAEVj0Q,KAAK8/B,KAAM,MAAO,EAK9B,IAHA6nR,EAASZ,EAAKlT,GAAKnuT,MACnB80B,EAAe,IAARq5R,EAAY,EAAIkT,EAAKlT,EAAM,GAAGnuT,MAEjCgiU,GAAaC,GAAUD,EAAYltS,EAAM,MAAOq5R,EAQpD,IANI8T,EAASD,EACX/yC,EAAMk/B,EAAM,EAEZ5/B,EAAO4/B,EAAM,EAGXl/B,EAAMV,EAAM,MAAO,KAW3B8qC,EAAS38T,UAAUob,KAAO,SAAc/X,GACtC,MAAO4hU,GAAOv9F,WAAW9pN,KAAKg/S,WAAWh7I,OAAOv+K,GAAK+kO,UAUvDu0F,EAAS38T,UAAUooO,OAAS,SAAgB/kO,GAC1C,GAAI+X,GAAOwC,KAAKxC,KAAK/X,EAAK,GAI1B,OAAI,gBAAoB+X,GAAaA,EAE9BA,EAAKE,MAAM,IAAIsU,IAAI,SAAkB41S,GAC1C,MAAOA,GAAKhyK,WAAW,MAW3BmpK,EAAS38T,UAAUslU,UAAY,SAAgBjiU,GAC7C,GAAI+gB,GAAIxG,KAAKwqN,OAAO/kO,EAEpB,OAAOkhU,GAAcngT,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAoB3Cu4S,EAAS38T,UAAUqnN,MAAQ,SAAehkN,EAAKq6C,EAAM+nR,GACnD,IAAK7nT,KAAK8/B,KAAM,QAEhBA,GAAOA,GAAQ9/B,KAAK6sS,QAAQ7qT,OAC5B6lU,EAASA,YAAiCA,CAS1C,KAAK,GAJD56R,GAHA80H,EAAW/hJ,KAAKynT,KAAKznT,KAAK0nT,UAAUjiU,IACpCzD,EAASge,KAAK+mT,KAAK/kU,OACnB6qT,KAKKvrT,EAAIygK,EAAUzgK,EAAIU,EAAQV,IAUjC,GATA2rC,EAAOjtB,KAAK+mT,KAAKzlU,GAGbumU,GACIhb,EAAQnxS,QAAQuxB,EAAKuzR,SAAS3T,EAAQ3qT,KAAK+qC,EAAKuzR,QAEtD3T,EAAQ3qT,KAAK+qC,EAAKuzR,QAGhB3T,EAAQ7qT,SAAW89C,EAAM,MAAO+sQ,EAKtC,KAAKvrT,EAAI,EAAGA,EAAIygK,EAAUzgK,IAUxB,GATA2rC,EAAOjtB,KAAK+mT,KAAKzlU,GAGbumU,GACIhb,EAAQnxS,QAAQuxB,EAAKuzR,SAAS3T,EAAQ3qT,KAAK+qC,EAAKuzR,QAEtD3T,EAAQ3qT,KAAK+qC,EAAKuzR,QAGhB3T,EAAQ7qT,SAAW89C,EAAM,MAAO+sQ,EAGtC,OAAOA,IAUTkS,EAAS38T,UAAUwvS,OAAS,SAAgBib,GAC1CA,EAAU74S,MAAM+c,QAAQ87R,GAAWA,EAAU1qT,OAAO6I,KAAKgV,KAAKgnT,OAE9D,IACI/5R,GADAF,EAAQ5qC,OAAOid,OAAO,KAG1BytS,GAAQ9sQ,QAAQ,SAAiBygR,GAC/BzzR,EAAMyzR,OAGR,KAAK,GAAIl/T,GAAI,EAAGA,EAAI0e,KAAK8/B,KAAMx+C,IAC7B2rC,EAAOjtB,KAAK+mT,KAAKzlU,GAEb2rC,EAAKuzR,SAAUzzR,IACjBA,EAAME,EAAKuzR,QAAQt+T,KAAK+qC,EAAKvnC,MAIjC,OAAOqnC,IAeTgyR,EAAS38T,UAAU8gO,KAAO,SAAcjyM,EAAMk4B,GAC5C,GAAI2+Q,GAAavwS,EAAM4xB,GAAI0jQ,QAAQl6R,MAC/BzR,EAAOlB,IAyBX,OAvBAA,MAAK+mT,KAAKhnR,QAAQ,SAAiB9S,GAC7BA,EAAKuzR,SAAWvvS,IAAMgc,EAAKuzR,OAASr3Q,KAG1CnpC,KAAKw0F,MAAMz0D,QAAQ,SAAiBr6C,EAAOD,GACrCC,IAAUurB,GAAM/P,EAAKszF,MAAM1jE,IAAIrrC,EAAK0jD,IACvCnpC,MAGHA,KAAKgnT,OAAO79Q,GAAMnpC,KAAKgnT,OAAO/1S,SACvBjR,MAAKgnT,OAAO/1S,GAGnBjR,KAAK6sS,QAAU7sS,KAAK6sS,QAAQ76R,IAAI,SAAiBwuS,GAO/C,MANIA,GAAO7nP,SAAW1nD,IACpBuvS,EAAO7nP,OAASxvB,EAChBq3Q,EAAOljT,KAAOwqT,EAAWxqT,KACzBkjT,EAAO5iT,KAAOkqT,EAAWlqT,MAGpB4iT,IAGFxgT,MAWT++S,EAAS38T,UAAU4jF,IAAM,SAAa6mO,GACpC,GAAIoS,GAAc98T,OAAOid,OAAO,KAqBhC,OAlBAY,MAAK6sS,QAAQ9sQ,QAAQ,SAAiBygR,GACpCvB,EAAYuB,EAAO7nP,QAAU6nP,IAG/BjpS,EAAMs1R,GAASA,QAAQ9sQ,QAAQ,SAAiBygR,GAE1CA,EAAO7nP,SAAUsmP,KACrBA,EAAYuB,EAAO7nP,QAAU6nP,KAK/BvB,EAAc1nS,EAAM0nS,GACpBj/S,KAAKgnT,OAAS/H,EAAY+H,OAC1BhnT,KAAK6sS,QAAUoS,EAAYpS,QAG3B7sS,KAAKm1E,QACEn1E,KAAKmnT,aAUdpI,EAAS38T,UAAUk1D,OAAS,SAAgBkpQ,GAC1C,GAAIsH,GAAavwS,EAAMipS,GAAQ3T,QAAQl6R,KAWvC,cATO3S,MAAKgnT,OAAOc,EAAWnvP,QAC9B34D,KAAK6sS,QAAU7sS,KAAK6sS,QAAQ76R,IAAI,SAAawuS,GAC3C,GAAIA,EAAO7nP,SAAWmvP,EAAWnvP,OAEjC,MAAO6nP,KACN3qS,OAAOjR,SAGV5E,KAAKm1E,QACEn1E,KAAKmnT,aAUdpI,EAAS38T,UAAU2uC,IAAM,SAAayvR,GACpC,IAAK,GAAIl/T,GAAI,EAAGA,EAAI0e,KAAK+mT,KAAK/kU,OAAQV,IACpC,GAAI0e,KAAK+mT,KAAKzlU,GAAGk/T,SAAWA,EAAQ,OAAM,CAG5C,WASFzB,EAAS38T,UAAU+yF,MAAQ,WAKzB,MAJAn1E,MAAK+mT,KAAK/kU,OAAS,EACnBge,KAAK8/B,KAAO,EACZ9/B,KAAKw0F,MAAMrf,QAEJn1E,MAST++S,EAAS38T,UAAUwkF,IAAM,WAMvB,MALA5mE,MAAKm1E,QAELn1E,KAAKgnT,UACLhnT,KAAK6sS,QAAQ7qT,OAAS,EAEfge,QAoBLiR,KAAM,kBACNA,KAAM,YACNA,KAAM,eAAgBk4B,GAAI,WAC1Bl4B,KAAM,YAAak4B,GAAI,QACvBl4B,KAAM,UAAWk4B,GAAI,QACrBl4B,KAAM,kBAAmBk4B,GAAI,SAC7Bl4B,KAAM,WAAYk4B,GAAI,SACxBpJ,QAAQ,SAAmBolD,GAC3B,GAAI4iO,KAEJhJ,GAAS38T,UAAU+iG,EAAIl0E,MAAQ,WAgB7B,GAfK82S,IACH5iU,EAAQyN,OACRzN,EAAQyN,KAAK,yBAA0BuyF,EAAIl0E,KAAM,gBAG7Ck0E,EAAIh8C,GACNhkD,EAAQyN,KAAK,6BAA8BuyF,EAAIh8C,GAAI,oBAEnDhkD,EAAQyN,KAAK,2CAGfzN,EAAQyN,OACRm1T,MAGE5iO,EAAIh8C,GAAI,MAAO41Q,GAAS38T,UAAU+iG,EAAIh8C,IAAIz2C,MAAMsN,KAAMrN,cAU9DosT,EAAS9gT,QAAU,EAAQ,KAAkBA,QAO7C5c,EAAOD,QAAU29T,IhyBiwkGYv9T,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,GiyB9ylGjCI,EAAOD,QAAU,EAAQ,MjyBqzlGnB,SAAUC,EAAQD,EAASH,GAEjC,YkyBjzlGA,SAAS+mU,GAAYC,EAAOpmT,EAAKpc,EAAIC,GACjCsa,KAAKioT,OAASA,EACdjoT,KAAK6B,KAAOA,EACZ7B,KAAKva,IAAMA,EACXua,KAAKta,MAAQA,EAYjB,QAAS8pT,GAAMzzS,GACPA,IACAA,MACJiE,KAAKknT,QAAUnrT,EAAQmrT,QACvBlnT,KAAKm1E,QAbT6yO,EAAY5lU,UAAU8lU,OAAS,SAASziU,GACpCua,KAAKva,IAAMA,GAGfuiU,EAAY5lU,UAAU+lU,SAAW,SAASziU,GACtCsa,KAAKta,MAAQA,GAYjB8pT,EAAMptT,UAAU+yF,MAAQ,WACpBn1E,KAAK8/B,KAAO,EACZ9/B,KAAKw0F,SACLx0F,KAAKooT,YACLpoT,KAAK1c,aAITksT,EAAMptT,UAAUwC,IAAM,SAASa,EAAI4iU,GAC/B,GAAIC,GAAWtoT,KAAKw0F,MAAM/uG,EAM1B,IADA4iU,UAAMA,GAA2B,MAAPA,GAAcA,EACrCC,GAAYD,EAIf,MAHIroT,MAAKqoT,IAAIC,GAGNA,EAAS5iU,OAGpB8pT,EAAMptT,UAAU0uC,IAAM,SAASrrC,EAAIkyC,EAAI0wR,GACnC,GAAIv8O,GAAS9rE,KAAKw0F,MAAM/uG,EAQxB,IAHC4iU,UAAMA,GAA2B,MAAPA,GAAcA,EAGtCv8O,EACCA,EAAOpmF,MAAQiyC,EACZ0wR,GAAKroT,KAAKqoT,IAAIv8O,OAChB,CACD,GAAIw8O,EACJ,IAAGtoT,KAAK8/B,MAAQ9/B,KAAKknT,QAAQ,CACzB,GAAIqB,GAAUvoT,KAAKooT,KAAK3iU,GACxBua,MAAKwoT,OAAOxoT,KAAKooT,MAMjBE,EAAWtoT,KAAKw0F,MAAM+zN,SACfvoT,MAAKw0F,MAAM+zN,GAElBD,EAASzmT,YACTymT,EAASL,cAKTK,EAASJ,OAAOziU,GAChB6iU,EAASH,SAASxwR,GAGtB2wR,EAAWA,GAAsB,GAAIN,cAAYrpS,GAAoBl5B,EAAIkyC,GACzE33B,KAAKw0F,MAAM/uG,GAAO6iU,EAClBtoT,KAAK40K,OAAO0zI,KAIpB9Y,EAAMptT,UAAU4wL,IAAM,SAASvtL,GAC3B,GAAIkyC,GAAM33B,KAAKw0F,MAAM/uG,EACjBkyC,KAEJ33B,KAAKwoT,OAAO7wR,SACL33B,MAAKw0F,MAAM/uG,KAGtB+pT,EAAMptT,UAAUimU,IAAM,SAASC,GAE3BtoT,KAAKwoT,OAAOF,GACZtoT,KAAK40K,OAAO0zI,IAGhB9Y,EAAMptT,UAAUwyL,OAAS,SAAS9zK,GAC1BA,IAEJA,EAAQmnT,cACRnnT,EAAQe,KAAO7B,KAAK1c,KACpB0c,KAAK1c,KAAOwd,EACRA,EAAQe,KAGRf,EAAQe,KAAKomT,OAASnnT,EAFvBd,KAAKooT,KAAOtnT,EAGfd,KAAK8/B,SAGT0vQ,EAAMptT,UAAUomU,OAAS,SAAS1nT,GAC9B,GAAIA,EAAJ,CAEA,GAAImnT,GAASnnT,EAAQmnT,OACjBpmT,EAAOf,EAAQe,IAChBomT,GACCA,EAAOpmT,KAAOA,EAEd7B,KAAK1c,KAAOue,EAEbA,EACCA,EAAKomT,OAASA,EAEdjoT,KAAKooT,KAAOH,EAEhBjoT,KAAK8/B,SAGT0vQ,EAAMptT,UAAU29C,QAAU,SAAStJ,GAC/B,GAAIv1B,GAAOlB,IACX7d,QAAO6I,KAAKgV,KAAKw0F,OAAOz0D,QAAQ,SAASt6C,GACrC,GAAIkyC,GAAMz2B,EAAKszF,MAAM/uG,EACrBgxC,GAASkB,EAAIjyC,MAAMD,MAG3BpE,EAAOD,QAAQouT,GlyB6zlGT,SAAUnuT,EAAQD,EAASH,GAEjC,YmyB97lGA,SAASs2B,GAAM1K,GACb,GAAIggS,EAGFA,GADEl6S,UAAU3Q,OAAS,EACXgS,MAAM5R,UAAUyR,MAAMrS,KAAKmR,UAAW,GAAGqf,IAAI,SAAkBwuS,GACvE,MAAOp7C,GAAQo7C,KAERxsT,MAAM+c,QAAQlE,GACbA,EAAKmF,IAAI,SAAkBwuS,GACnC,MAAOp7C,GAAQo7C,KAER,gBAAoB3zS,GACnB1qB,OAAO6I,KAAK6hB,GAAMmF,IAAI,SAAkBwuS,GAChD,MAAOp7C,GAAQo7C,EAAQ3zS,EAAK2zS,MAErB3zS,GACEA,GAAMmF,IAAI,SAAkBwuS,GACrC,MAAOp7C,GAAQo7C,OAOnB,IAAI15Q,IACA+lQ,QAASA,EACT7qT,OAAQ6qT,EAAQ7qT,OAChBymU,QAAS5b,EAAQ5hT,OAAO,SAAgB+7S,EAAMwZ,GAE5C,MADAxZ,GAAKwZ,EAAO7nP,QAAU6nP,EAAO+G,OACtBvgB,OAET0hB,QAAS7b,EAAQ76R,IAAI,SAAiBwuS,GACpC,MAAOA,GAAO7nP,SAYpB,OAPAx2E,QAAO6I,KAAK29T,GAAY5oR,QAAQ,SAAoBt6C,GAClDqhD,EAAKrhD,GAAOonT,EAAQ5hT,OAAO,SAAgB+7S,EAAMwZ,GAE/C,MADAxZ,GAAKwZ,EAAO7nP,QAAU6nP,EAAO/6T,GACtBuhT,SAIJlgQ,EAwBT,QAASs+N,GAAQo7C,EAAQ96T,GACvB,GAAI,gBAAoB86T,GAMtB,MALAA,GAAO7nP,OAAS6nP,EAAOljT,KAAM,IAAKkjT,EAAO5iT,KACzC4iT,EAAO+G,QAAU/G,EAAO+G,QAA2B,gBAAV7hU,IACpCA,EAAM6hU,QAAU,EACjB,EAEG/G,CAIT,IAAIp/M,GAAUo/M,EAAO9iT,MAAM,KACvBopC,GACIxpC,KAAM8jG,EAAQ,GACdxjG,MAAOwjG,EAAQ,GACfzoC,OAAQ6nP,EACR+G,QAA0B,gBAAV7hU,IAAsBA,EAAM6hU,QAAU7hU,IAAU,EAWxE,OAPAvD,QAAO6I,KAAK29T,GAAY5oR,QAAQ,SAAct6C,GAC5C,GAAImjU,GAASD,EAAWljU,GACpBqiI,EAAM8gM,EAAO9hR,EAAMphD,EAEnBoiI,KAAKhhF,EAAOghF,KAGXhhF,EAxGT,GAAI6hR,KA8DJpxS,GAAM+vS,UAAY,SAAmBhjU,EAAMskU,GACzC,GAAItkU,IAAQqkU,GAAY,MAAOpxS,EAE/BoxS,GAAWrkU,GAAQskU,GA2CrBrxS,EAAM6tP,QAAUA,EAKhB/jR,EAAOD,QAAUm2B,GnyBs9lGX,SAAUl2B,EAAQD,GoyBhlmGxBC,EAAOD,SAAW,KAAO,WAAW,QAAU,QAAQ,OAAS,kBAAkB,YAAc,8EAA8E,KAAO,aAAa,UAAY,WAAW,YAAY,UAAU,YAAY,SAAS,YAAY,OAAO,qBAAqB,aAAa,QAAU,MAAM,KAAO,kDAAkD,SAAW,4CAA4C,YAAc,KAAO,MAAM,IAAM,gDAAgD,cAAgB,mBAAmB,QAAQ,mBAAmB,SAAS,iBAAmB,OAAS,QAAQ,UAAY,QAAQ,QAAU,QAAQ,SAAW,QAAQ,MAAQ,QAAQ,aAAa,SAAS,SAAW,OAAO,sFAAsF,KAAO,qDAAqD,MAAQ,6DAA6D,SAAW,4FAA4F,cAAc,+GpyBslmG3iC,SAAUC,EAAQD,EAASH,GAEjC,cAAa,SqyBxlmGb,GAUA,QAAS4nU,GAAMvrT,EAAMm5B,GACnB,GAAIqyR,GAA4C,IAApC9tS,EAAQysC,SAAS/rD,QAAQ,OACjC6O,EAAMu+S,EAAQ,KAAO,KACrBC,EAAO5zR,EAAM,QAAS5qB,EAAK,IAAKjN,GAEpCyrT,GAAKC,OAAO3wO,GAAG,OAAQ,SAAqBvxC,GAC1CrQ,KAAgBqQ,EAAK7oB,WAAWvgB,MAAM,MAAM,GAAGwqB,OAAO,KACtD6gS,EAAKE,SAGPF,EAAK9tS,OAAOo9D,GAAG,OAAQ,SAAqBvxC,GAC1CrQ,EAAS,GAAIzzC,OAAM8jD,EAAK7oB,WAAWvgB,MAAM,MAAM,GAAGwqB,OAAO,MAAK,GAC9D6gS,EAAKE,SAIT,QAAS1J,GAAU1yS,GACjB7M,KAAKjH,OAAS8T,EACd7M,KAAK7D,YACL6D,KAAKygT,UACLzgT,KAAKkpT,UACLlpT,KAAKmpT,0BAELnpT,KAAKopT,cAAgB,EACrBppT,KAAKsnL,MAAQ,EACbtnL,KAAKqpT,yBAA2B,EAChCrpT,KAAKspT,uBAAyB,EAE9B1K,EAAMj0F,MAAM3qN,KAAM6M,GAClBizI,EAAat+J,KAAKwe,MArCpB,GAAI8/I,GAAe,EAAQ,KAAUA,aACjC3qH,EAAQ,EAAQ,IAAiBA,MACjCypR,EAAQ,EAAQ,KAChBvrT,EAAO,EAAQ,IAEnBjS,GAAQm+T,SAAWA,EACnBn+T,EAAQmoU,UAAYV,EAkCpBx1T,EAAKy5B,SAASyyR,EAAUz/J,EACxB,IAAIo/J,GAASK,EAASn9T,SAEtB88T,GAAO1sT,IAAM,SAAcY,GACzB,GAAI2uT,GAAQ/hT,IAUZ,OARAA,MAAKygT,UACLzgT,KAAK7D,SAASja,KAAKkR,GAAW,wBAI1B4M,KAAK+sS,UAAY/sS,KAAK+sS,UAAY/sS,KAAKjH,OAAOg0S,WAChD/sS,KAAKwpT,gBAAkBvlU,WAAW89T,EAAM0H,cAAc3kT,KAAKi9S,GAAQ/hT,KAAKigT,kBAEtEjgT,KAAK+sS,WAAa/sS,KAAKkpT,QACzBlpT,KAAKkpT,UACLjlU,WAAW89T,EAAM2H,aAAa5kT,KAAKi9S,GAAQ/hT,KAAKsnL,OACzCtnL,KAAK2rB,KAAK,QAAS3rB,KAAKgmQ,WAG7BhmQ,KAAKwpT,iBAAiB3mU,aAAamd,KAAKwpT,iBAExCxpT,KAAKs3C,OAAet3C,KAAK2rB,KAAK,SAAU3rB,KAAKgmQ,cAE5ChmQ,KAAKmpT,yBACNnpT,KAAKmpT,0BACLllU,WAAW89T,EAAM4H,iBAAiB7kT,KAAKi9S,GAAQ/hT,KAAKggT,eAI1Dd,EAAOuK,cAAgB,WAErB7K,EAAMj0F,MAAM3qN,KAAMmE,KAAKoT,MAAMpT,KAAKC,UAAUpE,KAAKjH,WAGnD5W,OAAOsC,eAAey6T,EAAQ,WAC5Bt6T,IAAK,WACH,GAAIkjI,KAgBJ,OAdAA,GAAI04L,OAASxgT,KAAKwgT,OAClB14L,EAAIvmB,OAASvhG,KAAKuhG,OAClBumB,EAAI3rH,SAAW6D,KAAK7D,SAEhB6D,KAAK+sS,UACPjlL,EAAIilL,SAAW/sS,KAAK+sS,SACpBjlL,EAAIshM,cAAgBppT,KAAKopT,gBAEzBthM,EAAIuhM,yBAA2BrpT,KAAKqpT,yBACpCvhM,EAAIwhM,uBAAyBtpT,KAAKspT,uBAClCxhM,EAAI8hM,sBAAwB5pT,KAAKqpT,yBAA2BrpT,KAAKspT,uBACjExhM,EAAI+hM,cAAiB/hM,EAAI8hM,sBAAwB5pT,KAAKggT,UAAchgT,KAAKopT,cAAgBppT,KAAKsnL,OAGzFx/D,KAIXo3L,EAAOwK,aAAe,WACpB1pT,KAAKopT,gBACLppT,KAAK+sS,WACL/sS,KAAKygT,UACLzgT,KAAKkpT,WAGPhK,EAAOyK,iBAAmB,WACxB,GAAI5H,GAAQ/hT,IACZA,MAAKqpT,2BACLrpT,KAAK2rB,KAAK,eAAgB3rB,KAAKgmQ,SAG/B6iD,EAAK7oT,KAAKuhG,OAAO,GAAI,SAAmBr8G,GAEtC,GAAIA,EAEF,MADA68T,GAAM5lT,SAASja,KAAKgD,EAAIkO,SAAW,wBAC5BnP,WAAW89T,EAAM4H,iBAAiB7kT,KAAKi9S,GAAQA,EAAM/B,UAG9D+B,GAAMp2R,KAAK,cAAeo2R,EAAM/7C,SAEhC+7C,EAAMuH,yBACNvH,EAAM5lT,SAASna,OAAS,EACxB+/T,EAAMtB,UACNsB,EAAMoH,0BAGNvK,EAAMj0F,MAAMo3F,EAAO59S,KAAKoT,MAAMpT,KAAKC,UAAU29S,EAAMhpT,eryB6lmG1BvX,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,GAEjC,YsyBptmGA,SAAS8/T,GAAQrrR,EAAOo0R,EAAS/tT,GAC/BA,EAAUA,MAEN,gBAAoB+tT,KACtB/tT,EAAU+tT,EACVA,EAAU,MAGZ9pT,KAAK01B,OAASA,GAAS,GACvB11B,KAAK+pT,QACL/pT,KAAKw8B,QAAU,EACfx8B,KAAKk1B,UAAY,KACjBl1B,KAAK8sS,QAAU/wS,EAAQ+wS,SAAW,EAClC9sS,KAAK4/S,OAAS7jT,EAAQ6jT,QAAU,EAChC5/S,KAAK6/S,WAAa75Q,EAAGjqC,EAAQurE,KAAO,aACpCtnE,KAAK8/S,WAAa95Q,EAAGjqC,EAAQwiB,KAAO,cACpCve,KAAK+/S,YAAY,aAAehkT,KAC5BA,EAAQgkT,UAIZ//S,KAAKgqT,SACDC,YAAa,EACbC,SAAU,GAGVJ,GAAS9pT,KAAKgzF,QAAQ82N,GAtC5B,GAAIxiI,GAAQ,EAAQ,KAChBthJ,EAAK,EAAQ,IAwCjB+6Q,GAAQ3+T,UAAUkd,UAAY,EAAQ,KAAUwgJ,aAAa19J,UAQ7D2+T,EAAQ3+T,UAAU4wG,QAAU,SAAiB82N,GAC3C,GAAuB,kBAAZA,GACT,KAAM,IAAI9mU,OAAM,oCAIlB,OADAgd,MAAKk1B,UAAY40R,EACV9pT,MAST+gT,EAAQ3+T,UAAUytG,OAAS,SAAgBs6N,GAYzC,QAASC,GAAWllU,GAClBilU,EAAIE,cAEJnpT,EAAKo2C,OAAO6yQ,GAEZA,EAAI3xO,eAAe,UAAW4xO,GAC9BD,EAAI3xO,eAAe,QAAS4xO,GAC5BD,EAAI3xO,eAAe,MAAO4xO,GAEtBllU,GAAKgc,EAAKyqB,KAAK,QAASzmC,GApB9B,IAAKilU,EAAK,MAAOnqT,KAEjB,IAAIkB,GAAOlB,IA0BX,OAJAmqT,GAAIrqQ,KAAK,UAAWsqQ,GAChBtqQ,KAAK,QAASsqQ,GACdtqQ,KAAK,MAAOsqQ,GAETpqT,MAST+gT,EAAQ3+T,UAAUs+T,KAAO,SAAc1mS,GAiBrC,QAASswS,GAASplU,EAAK4iU,GACjBlxE,EAAUtvD,MAAMpiM,IAEpB80B,EAAG90B,EAAK4iU,GAnBV,GAAIlxE,GAAYtvD,EAAMsvD,WACdk2D,QAAS9sS,KAAK8sS,QACd8S,OAAQ5/S,KAAK4/S,OACbC,WAAY7/S,KAAK6/S,WACjBC,WAAY9/S,KAAK8/S,WACjBC,UAAW//S,KAAK+/S,YAEpB7+S,EAAOlB,IAmBX,OAJA42O,GAAU7/M,QAAQ,WAChB71B,EAAKopT,SAASA,KAGTtqT,MAUT+gT,EAAQ3+T,UAAUkoU,SAAW,SAAkBtwS,GAe7C,QAASuwS,GAAOrlU,GACd8a,KAAKw4E,eAAe,QAAS+xO,GAC7BvqT,KAAKw4E,eAAe,UAAW+xO,GAC/BvqT,KAAKw4E,eAAe,UAAW11F,GAG1BoC,GAAKgc,EAAK6oT,KAAK7nU,KAAK8d,MACzBkB,EAAKs7B,UAELxiB,EAAG90B,EAAK8a,MAQV,QAASld,KACPkd,KAAKw4E,eAAe,UAAW11F,GAC/Boe,EAAKs7B,UACLxiB,EAAG,GAAIh3B,OAAM,kDAAmDgd,MAlClE,IAAKA,KAAKk1B,UAER,MADAlb,GAAG,GAAIh3B,OAAM,8BACNgd,IAmCT,IAEW1e,GAAGkpU,EAAa1C,EAFvB2C,KACAvpT,EAAOlB,IAUX,KAPA1e,EAAY0e,KAAK+pT,KAAK/nU,OAGtBge,KAAKgqT,QAAQC,cAIN3oU,KAAK,CAKV,GAJAwmU,EAAa9nT,KAAK+pT,KAAKzoU,GAIH,OAHpBkpU,EAAcxqT,KAAK0qT,YAAY5C,IAK7B,MADA9tS,UAAc8tS,GACP9nT,IAKTyqT,GAAcvoU,MACVsoU,YAAaA,EACb1C,WAAYA,IAMlB,GAAK9nT,KAAK+pT,KAAK/nU,OAASge,KAAKw8B,QAAWx8B,KAAK01B,MAAO,CAIlD,GAA8B,IAA1B11B,KAAKk1B,UAAUlzC,OAcjB,MAAOge,MAAKk1B,UAAU,SAAkBhwC,EAAK4iU,GAC3C,MAAI5iU,GAAY80B,EAAG90B,GACd4iU,GAEL5mT,EAAKs7B,UACLt7B,EAAK2uF,OAAOi4N,GAELA,EAAWzvO,GAAG,QAASkyO,GACZlyO,GAAG,UAAWkyO,GACdlyO,GAAG,UAAWv1F,IAPRk3B,EAAG,GAAIh3B,OAAM,8CAbvC,IAFA8kU,EAAa9nT,KAAKk1B,YAUhB,MAPAl1B,MAAKw8B,UACLx8B,KAAK6vF,OAAOi4N,GAEZA,EAAWzvO,GAAG,QAASkyO,GACZlyO,GAAG,UAAWkyO,GACdlyO,GAAG,UAAWv1F,GAElBkd,KAyBb,OAJAwqT,EAAcC,EAAc1gQ,KAAK,SAAcp/C,EAAG5C,GAChD,MAAO4C,GAAE6/S,YAAcziT,EAAEyiT,cACxB73S,QAEgB63S,EAAYA,aAAe,IAC5CxwS,SAAcwwS,EAAY1C,YACnB9nT,OAITga,EAAG,GAAIh3B,OAAM,gCACNgd,OAWT+gT,EAAQ3+T,UAAUsoU,YAAc,SAAqBP,EAAKjhR,GACxD,GAAIssI,GAAa20I,EAAI30I,WACjB7vL,EAA0B,SAAf6vL,GAAwC,cAAfA,EACpCm1I,EAAeR,EAAIS,mBAAqB,EACxCC,EAAaV,EAAIW,gBACjBC,EAASF,EAAW7oU,QAAU2oU,CAIlC,OAAIhlU,IAAuB,IAAXolU,EAAqB,IAIlB,WAAfv1I,GAA2B20I,EAAIa,WACjChrT,KAAKs3C,OAAO6yQ,GACL,GAIJxkU,EAGc,YAAf6vL,EAAiC,GAGjCu1I,EAAS,IAAY,IAAMA,EAKxBzsS,KAAK+oD,MAAsB,GAAhB/oD,KAAK+oC,UAXD,GAsBxB05P,EAAQ3+T,UAAUozF,QAAU,SAAiB20O,EAAKc,GAChD,GAAIv5S,GAAQ1R,KAAK+pT,KAAKruT,QAAQyuT,EAC9B,QAAe,IAAXz4S,IAGAy4S,IACGc,EACAd,EAAI/6H,UADE+6H,EAAIE,cAIfrqT,KAAK+pT,KAAK1nT,OAAOqP,EAAO,GAGxB1R,KAAKgqT,QAAQE,iBAOjBnJ,EAAQ3+T,UAAUk1D,OAASypQ,EAAQ3+T,UAAUozF,QAS7CurO,EAAQ3+T,UAAU+/T,KAAO,SAAc+I,EAAMD,GAE3CC,GAAQA,GAAQ,CAQhB,KAAK,GAHDnB,GAAO/pT,KAAK+pT,KAAKl2T,MAAM,GACvBs3T,EAAQ,EAEH7pU,EAAI,EAAGU,EAAS+nU,EAAK/nU,OAAQV,EAAIU,EAAQV,IAAK,CACrD,GAAIwmU,GAAaiC,EAAKzoU,GAClBkpU,EAAcxqT,KAAK0qT,YAAY5C,EAG/BoD,IAAQC,EAAQD,GAAwB,MAAhBV,EAC1BW,IAIFnrT,KAAKw1E,QAAQsyO,EAAYmD,GAO3B,MAHAlB,GAAK/nU,OAAS,EAGPge,KAAK2rB,KAAK,OAAQw/R,EAAOnrT,KAAK+pT,KAAK/nU,SAU5C++T,EAAQ3+T,UAAU29C,QAAU,SAAiBtJ,EAAU32B,GAErD,MADAE,MAAK+pT,KAAKhqR,QAAQtJ,EAAU32B,GACrBE,MAST+gT,EAAQ3+T,UAAUwkF,IAAM,SAAaqkP,GAGnC,MAFAjrT,MAAKmiT,KAAK,EAAG8I,GAENjrT,KAAK2rB,KAAK,QAGnBtqC,EAAOD,QAAU2/T,GtyBwumGX,SAAU1/T,EAAQD,EAASH,GuyBhnnGjCI,EAAOD,QAAU,EAAQ,MvyBsnnGnB,SAAUC,EAAQD,EAASH,GwyBtnnGjC,GAAImqU,GAAiB,EAAQ,IAE7BhqU,GAAQw1P,UAAY,SAAS76O,GAC3B,GAAIsvT,GAAWjqU,EAAQiqU,SAAStvT,EAChC,OAAO,IAAIqvT,GAAeC,IAG5BjqU,EAAQiqU,SAAW,SAAStvT,GAC1B,GAAIA,YAAmB/H,OACrB,SAAU6e,OAAO9W,EAGnB,IAAIwwB,IACFugR,QAAS,GACT8S,OAAQ,EACRC,WAAY,IACZC,WAAY35F,IACZ45F,WAAUA,EAEZ,KAAK,GAAIt6T,KAAOsW,GACdwwB,EAAK9mC,GAAOsW,EAAQtW,EAGtB,IAAI8mC,EAAKszR,WAAatzR,EAAKuzR,WACzB,KAAM,IAAI98T,OAAM,wCAIlB,KAAK,GADDqoU,MACK/pU,EAAI,EAAGA,EAAIirC,EAAKugR,QAASxrT,IAChC+pU,EAASnpU,KAAK8d,KAAKsrT,eAAehqU,EAAGirC,GAQvC,OAJA8+R,GAASthQ,KAAK,SAASp/C,EAAE5C,GACvB,MAAO4C,GAAI5C,IAGNsjT,GAGTjqU,EAAQkqU,eAAiB,SAASv0R,EAASxK,GACzC,GAAI86B,GAAU96B,EAAc,UACvBjO,KAAK+oC,SAAW,EACjB,EAEAvkE,EAAUw7B,KAAKggH,MAAMj3E,EAAS96B,EAAKszR,WAAavhS,KAAKywG,IAAIxiG,EAAKqzR,OAAQ7oR,GAG1E,OAFAj0C,GAAUw7B,KAAKgpD,IAAIxkF,EAASypC,EAAKuzR,cxyB+nnG7B,SAAUz+T,EAAQD,EAASH,ayyB7qnGjC,iBACE+e,KAAKurT,UAAYF,EACjBrrT,KAAKwhC,IAAM,KACXxhC,KAAKwrT,WACLxrT,KAAKyrT,UAAY,EACjBzrT,KAAK0rT,kBAAoB,KACzB1rT,KAAK2rT,oBAAsB,KAC3B3rT,KAAKq1K,SAAW,KAElBh0L,EAAOD,QAAUgqU,EAEjBA,EAAehpU,UAAUklM,MAAQ,SAASpiM,GAKxC,GAJI8a,KAAKq1K,UACPxyL,aAAamd,KAAKq1K,WAGfnwL,EACH,OAAM,CAGR8a,MAAKwrT,QAAQtpU,KAAKgD,EAElB,IAAIpC,GAAUkd,KAAKurT,UAAUjpU,OAC7B,aAAIQ,EACF,OAAM,CAGRkd,MAAKyrT,WAEL,IAAIvqT,GAAOlB,IAWX,OAVA/b,YAAW,WACTid,EAAKsgC,IAAItgC,EAAKuqT,WAEVvqT,EAAKyqT,sBACPzqT,EAAKm0K,SAAWpxL,WAAW,WACzBid,EAAKyqT,oBAAoBzqT,EAAKuqT,YAC7BvqT,EAAKwqT,qBAET5oU,OAKLsoU,EAAehpU,UAAU20C,QAAU,SAAS/c,EAAI4xS,GAC9C5rT,KAAKwhC,IAAMxnB,EAEP4xS,IACEA,EAAW9oU,UACbkd,KAAK0rT,kBAAoBE,EAAW9oU,SAElC8oU,EAAWlqS,KACb1hB,KAAK2rT,oBAAsBC,EAAWlqS,KAI1C1hB,KAAKwhC,IAAIxhC,KAAKyrT,UAEd,IAAIvqT,GAAOlB,IACPA,MAAK2rT,sBACP3rT,KAAKq1K,SAAWpxL,WAAW,WACzBid,EAAKyqT,uBACJzqT,EAAKwqT,qBAIZN,EAAehpU,UAAUypU,IAAM,SAAS7xS,GACtC70B,EAAQqN,IAAI,4CACZwN,KAAK+2B,QAAQ/c,IAGfoxS,EAAehpU,UAAUukF,MAAQ,SAAS3sD,GACxC70B,EAAQqN,IAAI,8CACZwN,KAAK+2B,QAAQ/c,IAGfoxS,EAAehpU,UAAUukF,MAAQykP,EAAehpU,UAAUypU,IAE1DT,EAAehpU,UAAU6xC,OAAS,WAChC,MAAOj0B,MAAKwrT,SAGdJ,EAAehpU,UAAU0pU,SAAW,WAClC,MAAO9rT,MAAKyrT,WAGdL,EAAehpU,UAAU2pU,UAAY,WACnC,GAA4B,IAAxB/rT,KAAKwrT,QAAQxpU,OACf,MAAO,KAOT,KAAK,GAJDgqU,MACAD,EAAY,KACZE,EAAiB,EAEZ3qU,EAAI,EAAGA,EAAI0e,KAAKwrT,QAAQxpU,OAAQV,IAAK,CAC5C,GAAI8D,GAAQ4a,KAAKwrT,QAAQlqU,GACrB8R,EAAUhO,EAAMgO,QAChBuxC,GAASqnR,EAAO54T,IAAY,GAAK,CAErC44T,GAAO54T,GAAWuxC,EAEdA,GAASsnR,IACXF,EAAY3mU,EACZ6mU,EAAiBtnR,GAIrB,MAAOonR,MzyBirnGoBvqU,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,GAEjC,Y0yBxvnGA,SAASs2B,GAAMyQ,GACb,GAAI1d,GAAQ,6EAA6EipF,KAAKvrE,EAC9F,IAAK1d,EAAL,CACA,GAAIzlB,GAAIi8I,WAAWx2H,EAAM,GAEzB,SADYA,EAAM,IAAM,MAAM+L,eAE5B,IAAK,QACL,IAAK,OACL,IAAK,IACH,MAAOxxB,GAAI4hB,CACb,KAAK,OACL,IAAK,MACL,IAAK,IACH,MAAO5hB,GAAIR,CACb,KAAK,QACL,IAAK,OACL,IAAK,IACH,MAAOQ,GAAIyuI,CACb,KAAK,UACL,IAAK,SACL,IAAK,IACH,MAAOzuI,GAAIV,CACb,KAAK,UACL,IAAK,SACL,IAAK,IACH,MAAOU,GAAIQ,CACb,KAAK,KACH,MAAOR,KAYb,QAASqnU,GAAMlmR,GACb,MAAIA,IAAM3hD,EAAUi6B,KAAKggH,MAAMt4F,EAAK3hD,GAAK,IACrC2hD,GAAMstF,EAAUh1G,KAAKggH,MAAMt4F,EAAKstF,GAAK,IACrCttF,GAAM7hD,EAAUm6B,KAAKggH,MAAMt4F,EAAK7hD,GAAK,IACrC6hD,GAAM3gD,EAAUi5B,KAAKggH,MAAMt4F,EAAK3gD,GAAK,IAClC2gD,EAAK,KAWd,QAAS0yQ,GAAK1yQ,GACZ,MAAIA,IAAM3hD,EAAUi6B,KAAKggH,MAAMt4F,EAAK3hD,GAAK,OACrC2hD,EAAK3hD,EAAUi6B,KAAKggH,MAAMt4F,EAAK3hD,GAAK,QACpC2hD,GAAMstF,EAAUh1G,KAAKggH,MAAMt4F,EAAKstF,GAAK,QACrCttF,EAAKstF,EAAUh1G,KAAKggH,MAAMt4F,EAAKstF,GAAK,SACpCttF,GAAM7hD,EAAUm6B,KAAKggH,MAAMt4F,EAAK7hD,GAAK,UACrC6hD,EAAK7hD,EAAUm6B,KAAKggH,MAAMt4F,EAAK7hD,GAAK,WACpC6hD,GAAM3gD,EAAUi5B,KAAKggH,MAAMt4F,EAAK3gD,GAAK,UACrC2gD,EAAK3gD,EAAUi5B,KAAKggH,MAAMt4F,EAAK3gD,GAAK,WACjC2gD,EAAK,MApGd,GAAI3gD,GAAI,IACJlB,EAAQ,GAAJkB,EACJiuI,EAAQ,GAAJnvI,EACJE,EAAQ,GAAJivI,EACJ7sH,EAAQ,OAAJpiB,CAeRhD,GAAOD,QAAU,SAASu2C,EAAK57B,GAC7B,MAAI,gBAAoB47B,GAAYpgB,EAAMogB,GACrC57B,EAEEA,EAAQ28S,KACXA,EAAK/gR,GACLu0R,EAAMv0R,IAJYA,I1yBw3nGlB,SAAUt2C,EAAQD,EAASH,a2yBn5nGjC,GAmDA,QAASkrU,GAAgB5/R,GACvB,MAAQA,IAAiC,iBAAlBA,GAAK2xR,SAA0B3xR,GAAQ2xR,UAASA,GApDzE,GAAI,GAAU,EAAQ,KAAY,WAC9BpqT,EAAS,EAAQ,IAOrB1S,GAAQi9T,SAAW,SAAU32Q,EAAOjR,GAClC,GAAyB,gBAAZ,KAAwBgsH,EAAOE,SAASj7G,GACnD,MAAOjR,GAAS,GAAIzzC,OAAM,sCAG5B41F,GAAQylO,SAAS32Q,EAAOjR,IAG1Br1C,EAAQgrU,aAAe,SAAU1kR,GAG/B,MAFA5zC,GAA0B,gBAAZ,IAAwB2uJ,EAAOE,SAASj7G,GAAQ,sCAEvDkxC,EAAQwzO,aAAa1kR,IAM9BtmD,EAAQirU,kBAAoBzzO,EAAQyzO,kBAEpCjrU,EAAQkrU,sBAAwB1zO,EAAQ0zO,sBAMxClrU,EAAQ68T,WAAa,SAAUsO,EAAYhgS,EAAMkK,GAK/C,GAJKA,IACHA,EAAWlK,IAGRk2H,EAAOE,SAAS4pK,GACnB,MAAO91R,GAAS,GAAIzzC,OAAM,0BAG5B41F,GAAQqlO,WAAWsO,EAAYJ,EAAe5/R,GAAOkK,IAGvDr1C,EAAQorU,eAAiB,SAAUD,EAAYhgS,GAG7C,MAFAz4B,GAAO2uJ,EAAOE,SAAS4pK,GAAa,0BAE7B3zO,EAAQ4zO,eAAeD,EAAYJ,EAAe5/R,O3yB45nG9B/qC,KAAKJ,EAASH,EAAoB,KAAKwhK,SAI9D,SAAUphK,EAAQD,EAASH,a4yBh9nGjC,KAkEA,QAASwrU,GAASlgS,GAEG,gBAARA,GACTA,GAASkgS,SAAUlgS,GACTA,IACVA,MAIFpqC,OAAO6I,KAAK0vI,GAAU1oH,IAAI,SAAS1wB,GAC3BA,IAAKirC,KAAOA,EAAKjrC,GAAKo5I,EAASp5I,MAIlCirC,EAAKmgS,cACRngS,EAAKmgS,YAActrU,EAAQurU,QAAQvrU,EAAQwrU,gBAIV,SAA/BnxT,EAAKu1K,QAAQzkJ,EAAKkgS,YACpBlgS,EAAKkgS,UAAY,QAgBnB,KAZA,GAQE5nU,GACAkjB,EACA7iB,EAVE2nU,EAEE,QAGFC,KACFxrU,EAAI,EACJC,EAAIgrC,EAAKs/R,IAAI7pU,OAKRV,EAAIC,EAAGD,IAAK,CACjBuD,EAAIotB,EAAKvf,MACP,KACA65B,EAAKs/R,IAAIvqU,GAAG0wB,IAAI,SAAShuB,GACvB,MAAOuoC,GAAKvoC,IAAMA,KAGtB8oU,EAAM5qU,KAAK2C,EACX,KAKE,MAJAkjB,GAAIwkB,EAAK9wB,KAAOoxT,EAAY1pU,QAAQ0B,GAAKgoU,EAAYhoU,GAChD0nC,EAAK9wB,OACRsM,EAAEtM,KAAO5W,GAEJkjB,EACP,MAAOvlB,GACP,GAAe,qBAAXA,EAAE4qB,MACS,qCAAX5qB,EAAE4qB,OACD,YAAYwY,KAAKpjC,EAAE4Q,SACtB,KAAM5Q,IAcZ,KATA0C,GAAM,GAAIlC,OACR,+CACE8pU,EACG96S,IAAI,SAASrH,GACZ,MAAO4hB,GAAKwgS,MAAQpiT,IAErBsH,KAAK,OAEZ/sB,EAAI4nU,MAAQA,EACN5nU,EAlIR,GAAI8nU,GAAK,EAAQ,IACfvxT,EAAO,EAAQ,KACfwxT,EAAgB,EAAQ,KACxBh7S,EAAOxW,EAAKwW,KACZ4+J,EAAUp1K,EAAKo1K,QACfq8I,EACGF,EAAGG,YACF,SAAS1xT,GACP,IACEuxT,EAAGG,WAAW1xT,GACd,MAAOjZ,GACP,OAAM,EAER,OAAM,IAEVwqU,EAAGI,YACH3xT,EAAK2xT,WACP1yL,GACEqyL,MAAO,gCAAYM,qBAAuB,MAC1CC,SAAU,gCAAYC,4BAA8B,WACpD9lQ,SAAUzsC,EAAQysC,SAClB+lQ,KAAMxyS,EAAQwyS,KACdC,WACE,SACAzyS,EAAQovB,SAASppD,QACjB,IACAg6B,EAAQysC,SACR,IACAzsC,EAAQwyS,KACVvvT,QAAS+c,EAAQovB,SAASnd,KAC1Bw/R,SAAU,gBACVZ,MAEG,cAAe,QAAS,aAExB,cAAe,QAAS,QAAS,aACjC,cAAe,QAAS,UAAW,aAEnC,cAAe,MAAO,QAAS,aAC/B,cAAe,QAAS,aAExB,cAAe,MAAO,UAAW,aACjC,cAAe,UAAW,aAE1B,cAAe,QAAS,UAAW,aAEnC,cAAe,WAAY,UAAW,WAAY,OAAQ,aAE1D,cAAe,cAAe,UAAW,eAAgB,aACzD,cAAe,cAAe,QAAS,eAAgB,aACvD,cAAe,cAAe,UAAW,eAAgB,aAEzD,cAAe,MAAO,UAAW,aAAc,aAgFtDxqU,GAAOD,QAAUA,EAAUqrU,EAQ3BrrU,EAAQwrU,YAAc,SAAqBc,GACzC,GAGEjlS,GAHEklS,EAAU3qU,MAAM4qU,kBAClBC,EAAU7qU,MAAMuqC,gBAChBugS,IAkCF,OA/BA9qU,OAAMuqC,gBAAkB,GAExBvqC,MAAM4qU,kBAAoB,SAASprU,EAAGurU,GACpC,IAAK,GAAIzsU,GAAI,EAAGC,EAAIwsU,EAAG/rU,OAAQV,EAAIC,EAAGD,IAEpC,IADAmnC,EAAWslS,EAAGzsU,GAAGsrU,iBACAoB,EAAY,CAC3B,IAAIN,EAKF,MAJA,IAAIjlS,IAAailS,EACf,SAUV1qU,MAAMqlC,kBAAkBylS,GAIxB9qU,MAAM4qU,kBAAoBD,EAC1B3qU,MAAMuqC,gBAAkBsgS,EAIa,IAAjCplS,EAAS/sB,QADI,aAEf+sB,EAAWwkS,EAAcxkS,IAGpBA,GAYTrnC,EAAQurU,QAAU,SAAiB93I,GAGjC,IAFA,GACEr6J,GADEhnB,EAAMq9K,EAAQgE,KAEL,CAKX,GAJY,MAARrhL,IAEFA,EAAMwnB,EAAQ69D,OAGdq0O,EAAOj7S,EAAKze,EAAK,kBACjB05T,EAAOj7S,EAAKze,EAAK,iBAGjB,MAAOA,EAET,IAAIgnB,IAAShnB,EAEX,KAAM,IAAIxQ,OACR,2CACE6xL,EACA,yCAINr6J,GAAOhnB,EACPA,EAAMye,EAAKze,EAAK,U5yBs9nGShS,KAAKJ,EAASH,EAAoB,IAAK,cAI9D,SAAUI,EAAQD,EAASH,G6yB/poGjC,QAASgtU,GAAe3S,GACtB,GAAI,gBAAmBA,IACnBA,EAAIt5T,QAAU,GACd,WAAas5T,EAAIjrN,UAAU,EAAG,GAChC,KAAM,IAAInyE,WAAU,uDAGtB,IAAIisJ,GAAO+jJ,UAAU5S,EAAIjrN,UAAU,IAC/B89N,EAAahkJ,EAAKzuK,QAAQ,KAC1B4B,EAAO6sK,EAAK95E,UAAU,EAAG89N,GACzB1yT,EAAO0uK,EAAK95E,UAAU89N,EAAa,EAiCvC,OA3BI,aAAe7wT,IAAMA,EAAO,IAE5BA,IACFA,EAAOqzK,EAAMA,EAAMrzK,GAUrB7B,EAAOA,EAAKsR,QAAQ,UAAW,OAGpB,MAAP4jK,IACFl1K,EAAOA,EAAKsR,QAAQ,MAAO,OAGzB,QAAQ6Y,KAAKnqB,KAIfA,EAAOk1K,EAAMl1K,GAGR6B,EAAO7B,EA3DhB,GAAIk1K,GAAM,EAAQ,KAAQA,KAAO,GAMjCtvL,GAAOD,QAAU6sU,G7yBivoGX,SAAU5sU,EAAQD,G8yB5voGxBC,EAAOD,SAAW,WAAa,sBAAsB,aAAe,WAAa,8CAA8C,SAAW,mCAAmC,oGAAoG,mCAAmC,oGAAoG,mCAAmC,oGAAoG,mCAAmC,oGAAoG,4BAA4B,UAAU,+DAA+D,WAAW,+BAA+B,aAAa,gCAAgC,UAAU,iCAAiC,UAAU,iCAAiC,SAAS,oEAAoE,mBAAmB,+BAA+B,WAAW,+BAA+B,SAAS,wEAAwE,QAAQ,gCAAgC,WAAW,iCAAiC,MAAM,wEAAwE,SAAS,gCAAgC,QAAQ,gCAAgC,SAAS,gCAAgC,SAAS,iCAAiC,cAAc,gCAAgC,aAAa,wEAAwE,UAAU,W9yBkwoG/nD,SAAUC,EAAQD,G+yBlwoGxBC,EAAOD,SAAW,WAAa,sBAAsB,aAAe,WAAa,8CAA8C,SAAW,mCAAmC,oGAAoG,mCAAmC,oGAAoG,mCAAmC,oGAAoG,mCAAmC,oGAAoG,4BAA4B,UAAU,+DAA+D,WAAW,+BAA+B,aAAa,gCAAgC,UAAU,iCAAiC,UAAU,iCAAiC,SAAS,oEAAoE,mBAAmB,+BAA+B,WAAW,+BAA+B,SAAS,wEAAwE,QAAQ,gCAAgC,WAAW,iCAAiC,MAAM,wEAAwE,SAAS,gCAAgC,QAAQ,gCAAgC,SAAS,gCAAgC,SAAS,iCAAiC,cAAc,gCAAgC,aAAa,wEAAwE,UAAU,W/yBwwoG/nD,SAAUC,EAAQD,EAASH,GgzB7voGjC,QAASgtJ,GAAY1sI,GACnB,GAAI6sT,GAAYC,EAAa9sT,EAC7B,OAAwB,IAApB6sT,EAAUpsU,QAAeosU,EAAU,GAAG,GACjCvhG,EAAwBuhG,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASrpU,GACd,MAAOA,KAAWwc,GAAU+sT,EAAYvpU,EAAQwc,EAAQ6sT,IAjB5D,GAAIE,GAAc,EAAQ,KACtBD,EAAe,EAAQ,KACvBxhG,EAA0B,EAAQ,IAmBtCxrO,GAAOD,QAAU6sJ,GhzB+woGX,SAAU5sJ,EAAQD,EAASH,GizBnxoGjC,QAASqtU,GAAYvpU,EAAQwc,EAAQ6sT,EAAW7iG,GAC9C,GAAI75M,GAAQ08S,EAAUpsU,OAClBA,EAAS0vB,EACT68S,GAAgBhjG,CAEpB,IAAc,MAAVxmO,EACF,OAAQ/C,CAGV,KADA+C,EAAS5C,OAAO4C,GACT2sB,KAAS,CACd,GAAIo1B,GAAOsnR,EAAU18S,EACrB,IAAK68S,GAAgBznR,EAAK,GAClBA,EAAK,KAAO/hD,EAAO+hD,EAAK,MACtBA,EAAK,IAAM/hD,IAEnB,OAAM,EAGV,OAAS2sB,EAAQ1vB,GAAQ,CACvB8kD,EAAOsnR,EAAU18S,EACjB,IAAIjsB,GAAMqhD,EAAK,GACX0wK,EAAWzyN,EAAOU,GAClBqnO,EAAWhmL,EAAK,EAEpB,IAAIynR,GAAgBznR,EAAK,IACvB,YAAI0wK,KAA4B/xN,IAAOV,IACrC,OAAM,MAEH,CACL,GAAIwO,GAAQ,GAAI8nL,EAChB,IAAIkwC,EACF,GAAI9gN,GAAS8gN,EAAW/T,EAAUsV,EAAUrnO,EAAKV,EAAQwc,EAAQhO,EAEnE,eAAMkX,EACE6gN,EAAYwB,EAAUtV,EAAUoU,EAAuBG,EAAwBR,EAAYh4N,GAC3FkX,GAEN,OAAM,GAIZ,OAAM,EA1DR,GAAI4wK,GAAQ,EAAQ,KAChBiwC,EAAc,EAAQ,KAGtBM,EAAuB,EACvBG,EAAyB,CAwD7B1qO,GAAOD,QAAUktU,GjzB2yoGX,SAAUjtU,EAAQD,EAASH,GkzB/1oGjC,QAASq6L,KACPt7K,KAAKk/I,SAAW,GAAIR,GACpB1+I,KAAK8/B,KAAO,EAXd,GAAI4+G,GAAY,EAAQ,IAcxBr9J,GAAOD,QAAUk6L,GlzB+2oGX,SAAUj6L,EAAQD,GmzBp3oGxB,QAASm6L,GAAY91L,GACnB,GAAIqhD,GAAO9mC,KAAKk/I,SACZz0I,EAASq8B,EAAa,OAAErhD,EAG5B,OADAua,MAAK8/B,KAAOgH,EAAKhH,KACVr1B,EAGTppB,EAAOD,QAAUm6L,GnzBo4oGX,SAAUl6L,EAAQD,GozB54oGxB,QAASo6L,GAAS/1L,GAChB,MAAOua,MAAKk/I,SAASt6J,IAAIa,GAG3BpE,EAAOD,QAAUo6L,GpzB45oGX,SAAUn6L,EAAQD,GqzBh6oGxB,QAASq6L,GAASh2L,GAChB,MAAOua,MAAKk/I,SAASnuH,IAAItrC,GAG3BpE,EAAOD,QAAUq6L,GrzBg7oGX,SAAUp6L,EAAQD,EAASH,GszB56oGjC,QAASy6L,GAASj2L,EAAKC,GACrB,GAAIohD,GAAO9mC,KAAKk/I,QAChB,IAAIp4G,YAAgB43G,GAAW,CAC7B,GAAI2yB,GAAQvqI,EAAKo4G,QACjB,KAAKtiH,GAAQy0I,EAAMrvL,OAASqsO,EAAmB,EAG7C,MAFAh9C,GAAMnvL,MAAMuD,EAAKC,IACjBsa,KAAK8/B,OAASgH,EAAKhH,KACZ9/B,IAET8mC,GAAO9mC,KAAKk/I,SAAW,GAAI23B,GAASxF,GAItC,MAFAvqI,GAAKhW,IAAIrrC,EAAKC,GACdsa,KAAK8/B,KAAOgH,EAAKhH,KACV9/B,KA9BT,GAAI0+I,GAAY,EAAQ,KACpB9hH,EAAM,EAAQ,KACdi6I,EAAW,EAAQ,KAGnBw3C,EAAmB,GA4BvBhtO,GAAOD,QAAUs6L,GtzBo8oGX,SAAUr6L,EAAQD,EAASH,GuzBh8oGjC,QAASuqO,GAAgBzmO,EAAQi0H,EAAO3gB,EAASkzH,EAAYG,EAAWn4N,GACtE,GAAIi7T,GAAWz9S,EAAQhsB,GACnB0pU,EAAW19S,EAAQioG,GACnB01M,EAASF,EAAWG,EAAW12I,EAAOlzL,GACtC6pU,EAASH,EAAWE,EAAW12I,EAAOj/D,EAE1C01M,GAASA,GAAU3gG,EAAUnmD,EAAY8mJ,EACzCE,EAASA,GAAU7gG,EAAUnmD,EAAYgnJ,CAEzC,IAAIC,GAAWH,GAAU9mJ,EACrBknJ,EAAWF,GAAUhnJ,EACrBmnJ,EAAYL,GAAUE,CAE1B,IAAIG,GAAapsK,EAAS59J,GAAS,CACjC,IAAK49J,EAAS3pC,GACZ,OAAM,CAERw1M,MACAK,KAEF,GAAIE,IAAcF,EAEhB,MADAt7T,KAAUA,EAAQ,GAAI8nL,IACdmzI,GAAYxrK,EAAaj+J,GAC7B0mO,EAAY1mO,EAAQi0H,EAAO3gB,EAASkzH,EAAYG,EAAWn4N,GAC3Dy7T,EAAWjqU,EAAQi0H,EAAO01M,EAAQr2N,EAASkzH,EAAYG,EAAWn4N,EAExE,MAAM8kG,EAAUuzH,GAAuB,CACrC,GAAIqjG,GAAeJ,GAAYxsU,EAAeb,KAAKuD,EAAQ,eACvDmqU,EAAeJ,GAAYzsU,EAAeb,KAAKw3H,EAAO,cAE1D,IAAIi2M,GAAgBC,EAAc,CAChC,GAAIC,GAAeF,EAAelqU,EAAOW,QAAUX,EAC/CqqU,EAAeF,EAAel2M,EAAMtzH,QAAUszH,CAGlD,OADAzlH,KAAUA,EAAQ,GAAI8nL,IACfqwC,EAAUyjG,EAAcC,EAAc/2N,EAASkzH,EAAYh4N,IAGtE,QAAKw7T,IAGLx7T,IAAUA,EAAQ,GAAI8nL,IACfg0I,EAAatqU,EAAQi0H,EAAO3gB,EAASkzH,EAAYG,EAAWn4N,IA/ErE,GAAI8nL,GAAQ,EAAQ,KAChBowC,EAAc,EAAQ,KACtBujG,EAAa,EAAQ,KACrBK,EAAe,EAAQ,KACvBp3I,EAAS,EAAQ,KACjBlnK,EAAU,EAAQ,IAClB4xI,EAAW,EAAQ,KACnBK,EAAe,EAAQ,KAGvB4oE,EAAuB,EAGvBmC,EAAU,qBACV4gG,EAAW,iBACX/mJ,EAAY,kBAGZr6B,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,cA6DjChB,GAAOD,QAAUoqO,GvzB4+oGX,SAAUnqO,EAAQD,GwzBpjpGxB,QAAS+qO,GAAUhrL,EAAOmrI,GAIxB,IAHA,GAAI56J,IAAS,EACT1vB,EAAkB,MAATm/C,EAAgB,EAAIA,EAAMn/C,SAE9B0vB,EAAQ1vB,GACf,GAAIsqL,EAAUnrI,EAAMzvB,GAAQA,EAAOyvB,GACjC,OAAM,CAGV,UAGF9/C,EAAOD,QAAU+qO,GxzBqkpGX,SAAU9qO,EAAQD,EAASH,GyzB7ipGjC,QAAS+tU,GAAWjqU,EAAQi0H,EAAOx7C,EAAK66B,EAASkzH,EAAYG,EAAWn4N,GACtE,OAAQiqE,GACN,IAAK8xP,GACH,GAAKvqU,EAAOo9N,YAAcnpG,EAAMmpG,YAC3Bp9N,EAAOs9N,YAAcrpG,EAAMqpG,WAC9B,OAAM,CAERt9N,GAASA,EAAO8yM,OAChB7+E,EAAQA,EAAM6+E,MAEhB,KAAK03H,GACH,QAAKxqU,EAAOo9N,YAAcnpG,EAAMmpG,aAC3BuJ,EAAU,GAAI/yB,GAAW5zM,GAAS,GAAI4zM,GAAW3/E,IAKxD,KAAKw2M,GACL,IAAKC,GACL,IAAKC,GAGH,MAAOxiL,IAAInoJ,GAASi0H,EAEtB,KAAK22M,GACH,MAAO5qU,GAAOT,MAAQ00H,EAAM10H,MAAQS,EAAOqO,SAAW4lH,EAAM5lH,OAE9D,KAAKw8T,GACL,IAAKve,GAIH,MAAOtsT,IAAWi0H,EAAQ,EAE5B,KAAKu/G,GACH,GAAIs3F,GAAUC,CAEhB,KAAKt3F,GACH,GAAI7M,GAAYtzH,EAAUuzH,CAG1B,IAFAikG,IAAYA,EAAUl0I,GAElB52L,EAAO+6C,MAAQk5E,EAAMl5E,OAAS6rL,EAChC,OAAM,CAGR,IAAIG,GAAUv4N,EAAM3O,IAAIG,EACxB,IAAI+mO,EACF,MAAOA,IAAW9yG,CAEpB3gB,IAAW0zH,EAGXx4N,EAAMu9B,IAAI/rC,EAAQi0H,EAClB,IAAIvuG,GAASghN,EAAYokG,EAAQ9qU,GAAS8qU,EAAQ72M,GAAQ3gB,EAASkzH,EAAYG,EAAWn4N,EAE1F,OADAA,GAAc,OAAExO,GACT0lB,CAET,KAAK+zI,GACH,GAAIuxK,EACF,MAAOA,GAAcvuU,KAAKuD,IAAWgrU,EAAcvuU,KAAKw3H,GAG9D,OAAM,EA5GR,GAAIlvE,GAAS,EAAQ,KACjB6uJ,EAAa,EAAQ,KACrBzrD,EAAK,EAAQ,KACbu+E,EAAc,EAAQ,KACtBqkG,EAAa,EAAQ,KACrBn0I,EAAa,EAAQ,KAGrBiwC,EAAuB,EACvBG,EAAyB,EAGzByjG,EAAU,mBACVC,EAAU,gBACVE,EAAW,iBACXp3F,EAAS,eACTm3F,EAAY,kBACZE,EAAY,kBACZp3F,EAAS,eACT64E,EAAY,kBACZ7yJ,EAAY,kBAEZ+wK,EAAiB,uBACjBD,EAAc,oBAGd7e,EAAc3mQ,EAASA,EAAO1nD,iBAC9B2tU,EAAgBtf,EAAcA,EAAYjqO,cAoF9CnlF,GAAOD,QAAU4tU,GzzBkmpGX,SAAU3tU,EAAQD,G0zB1spGxB,QAAS0uU,GAAW99S,GAClB,GAAIN,IAAS,EACTjH,EAASzW,MAAMge,EAAI8tB,KAKvB,OAHA9tB,GAAI+tB,QAAQ,SAASr6C,EAAOD,GAC1BglB,IAASiH,IAAUjsB,EAAKC,KAEnB+kB,EAGTppB,EAAOD,QAAU0uU,G1zBwtpGX,SAAUzuU,EAAQD,EAASH,G2zBjtpGjC,QAASouU,GAAatqU,EAAQi0H,EAAO3gB,EAASkzH,EAAYG,EAAWn4N,GACnE,GAAIo4N,GAAYtzH,EAAUuzH,EACtBokG,EAAWC,EAAWlrU,GACtBmrU,EAAYF,EAAShuU,MAIzB,IAAIkuU,GAHWD,EAAWj3M,GACDh3H,SAEM2pO,EAC7B,OAAM,CAGR,KADA,GAAIj6M,GAAQw+S,EACLx+S,KAAS,CACd,GAAIjsB,GAAMuqU,EAASt+S,EACnB,MAAMi6M,EAAYlmO,IAAOuzH,GAAQ32H,EAAeb,KAAKw3H,EAAOvzH,IAC1D,OAAM,EAIV,GAAIqmO,GAAUv4N,EAAM3O,IAAIG,EACxB,IAAI+mO,GAAWv4N,EAAM3O,IAAIo0H,GACvB,MAAO8yG,IAAW9yG,CAEpB,IAAIvuG,KACJlX,GAAMu9B,IAAI/rC,EAAQi0H,GAClBzlH,EAAMu9B,IAAIkoF,EAAOj0H,EAGjB,KADA,GAAIorU,GAAWxkG,IACNj6M,EAAQw+S,GAAW,CAC1BzqU,EAAMuqU,EAASt+S,EACf,IAAI8lM,GAAWzyN,EAAOU,GAClBwmO,EAAWjzG,EAAMvzH,EAErB,IAAI8lO,EACF,GAAIW,GAAWP,EACXJ,EAAWU,EAAUzU,EAAU/xN,EAAKuzH,EAAOj0H,EAAQwO,GACnDg4N,EAAW/T,EAAUyU,EAAUxmO,EAAKV,EAAQi0H,EAAOzlH,EAGzD,eAAM24N,EACG1U,IAAayU,GAAYP,EAAUlU,EAAUyU,EAAU5zH,EAASkzH,EAAYh4N,GAC7E24N,GACD,CACLzhN,IACA,OAEF0lT,IAAaA,EAAkB,eAAP1qU,GAE1B,GAAIglB,IAAW0lT,EAAU,CACvB,GAAIC,GAAUrrU,EAAOsa,YACjBgxT,EAAUr3M,EAAM35G,WAGhB+wT,IAAWC,GACV,eAAiBtrU,IAAU,eAAiBi0H,MACzB,kBAAXo3M,IAAyBA,YAAmBA,IACjC,kBAAXC,IAAyBA,YAAmBA,MACvD5lT,MAKJ,MAFAlX,GAAc,OAAExO,GAChBwO,EAAc,OAAEylH,GACTvuG,EArFT,GAAIwlT,GAAa,EAAQ,KAGrBrkG,EAAuB,EAGvBr+E,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,cA+EjChB,GAAOD,QAAUiuU,G3zBgvpGX,SAAUhuU,EAAQD,EAASH,G4zB7zpGjC,QAASgvU,GAAWlrU,GAClB,MAAOurU,GAAevrU,EAAQiG,EAAMulU,GAZtC,GAAID,GAAiB,EAAQ,KACzBC,EAAa,EAAQ,KACrBvlU,EAAO,EAAQ,IAanB3J,GAAOD,QAAU6uU,G5zB+0pGX,SAAU5uU,EAAQD,EAASH,G6zBh1pGjC,QAASqvU,GAAevrU,EAAQyrU,EAAUC,GACxC,GAAIhmT,GAAS+lT,EAASzrU,EACtB,OAAOgsB,GAAQhsB,GAAU0lB,EAASqtM,EAAUrtM,EAAQgmT,EAAY1rU,IAhBlE,GAAI+yN,GAAY,EAAQ,KACpB/mM,EAAU,EAAQ,GAkBtB1vB,GAAOD,QAAUkvU,G7zBq2pGX,SAAUjvU,EAAQD,EAASH,G8zBx3pGjC,GAAIyvU,GAAc,EAAQ,KACtBC,EAAY,EAAQ,KAGpBpjL,EAAcprJ,OAAOC,UAGrBysD,EAAuB0+F,EAAY1+F,qBAGnC+hR,EAAmBzuU,OAAOwsD,sBAS1B4hR,EAAcK,EAA+B,SAAS7rU,GACxD,MAAc,OAAVA,MAGJA,EAAS5C,OAAO4C,GACT2rU,EAAYE,EAAiB7rU,GAAS,SAASymR,GACpD,MAAO38N,GAAqBrtD,KAAKuD,EAAQymR,OANRmlD,CAUrCtvU,GAAOD,QAAUmvU,G9zB+3pGX,SAAUlvU,EAAQD,G+zBn5pGxB,QAASsvU,GAAYvvR,EAAOmrI,GAM1B,IALA,GAAI56J,IAAS,EACT1vB,EAAkB,MAATm/C,EAAgB,EAAIA,EAAMn/C,OACnC6uU,EAAW,EACXpmT,OAEKiH,EAAQ1vB,GAAQ,CACvB,GAAI0D,GAAQy7C,EAAMzvB,EACd46J,GAAU5mL,EAAOgsB,EAAOyvB,KAC1B12B,EAAOomT,KAAcnrU,GAGzB,MAAO+kB,GAGTppB,EAAOD,QAAUsvU,G/zBm6pGX,SAAUrvU,EAAQD,Gg0Bz6pGxB,QAASuvU,KACP,SAGFtvU,EAAOD,QAAUuvU,Gh0Bk8pGX,SAAUtvU,EAAQD,Gi0B/8pGxB,QAASurO,GAAU9nO,EAAGu6J,GAIpB,IAHA,GAAI1tI,IAAS,EACTjH,EAASzW,MAAMnP,KAEV6sB,EAAQ7sB,GACf4lB,EAAOiH,GAAS0tI,EAAS1tI,EAE3B,OAAOjH,GAGTppB,EAAOD,QAAUurO,Gj0B+9pGX,SAAUtrO,EAAQD,Gk0Br+pGxB,QAASihK,KACP,OAAM,EAGRhhK,EAAOD,QAAUihK,Gl0By/pGX,SAAUhhK,EAAQD,EAASH,Gm0Bp9pGjC,QAAS2hK,GAAiBl9J,GACxB,MAAOmjG,GAAanjG,IAClBq1F,EAASr1F,EAAM1D,WAAa8uU,EAAep/N,EAAWhsG,IAxD1D,GAAIgsG,GAAa,EAAQ,IACrB3W,EAAW,EAAQ,KACnB8N,EAAe,EAAQ,IA8BvBioO,IACJA,GAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,2BAShBA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,uBA0CjBzvU,EAAOD,QAAUwhK,Gn0BihqGX,SAAUvhK,EAAQD,EAASH,ao0B5kqGjC,SAAiB,EAAQ,KAGrBqhK,EAAgC,gBAAXlhK,IAAuBA,IAAYA,EAAQ+jE,UAAY/jE,EAG5EmhK,EAAaD,GAAgC,gBAAVjhK,IAAsBA,IAAWA,EAAO8jE,UAAY9jE,EAGvFmhK,EAAgBD,GAAcA,EAAWnhK,UAAYkhK,EAGrDyuK,EAAcvuK,GAAiBrwE,EAAWn3D,QAG1C8nI,EAAY,WACd,IAIE,MAFYP,IAAcA,EAAWlzG,SAAWkzG,EAAWlzG,QAAQ,QAAQ42D,OAOpE8qN,GAAeA,EAAYn4O,SAAWm4O,EAAYn4O,QAAQ,QACjE,MAAOp2F,OAGXnB,GAAOD,QAAU0hK,Ip0BglqGYthK,KAAKJ,EAASH,EAAoB,KAAKI,KAI9D,SAAUA,EAAQD,EAASH,Gq0BvmqGjC,QAASotU,GAAatpU,GAIpB,IAHA,GAAI0lB,GAASzf,EAAKjG,GACd/C,EAASyoB,EAAOzoB,OAEbA,KAAU,CACf,GAAIyD,GAAMglB,EAAOzoB,GACb0D,EAAQX,EAAOU,EAEnBglB,GAAOzoB,IAAWyD,EAAKC,EAAOknO,EAAmBlnO,IAEnD,MAAO+kB,GApBT,GAAImiN,GAAqB,EAAQ,KAC7B5hO,EAAO,EAAQ,IAsBnB3J,GAAOD,QAAUitU,Gr0BwnqGX,SAAUhtU,EAAQD,EAASH,Gs0B3nqGjC,QAAS+sJ,GAAoBvyI,EAAMqxN,GACjC,MAAIxuE,GAAM7iJ,IAASmxN,EAAmBE,GAC7BD,EAAwB1/E,EAAM1xI,GAAOqxN,GAEvC,SAAS/nO,GACd,GAAIyyN,GAAW5yN,EAAIG,EAAQ0W,EAC3B,iBAAQ+7M,GAA0BA,IAAasV,EAC3CrV,EAAM1yN,EAAQ0W,GACd6vN,EAAYwB,EAAUtV,EAAUoU,EAAuBG,IA5B/D,GAAIT,GAAc,EAAQ,KACtB1mO,EAAM,EAAQ,KACd6yN,EAAQ,EAAQ,KAChBn5D,EAAQ,EAAQ,KAChBsuE,EAAqB,EAAQ,KAC7BC,EAA0B,EAAQ,KAClC1/E,EAAQ,EAAQ,KAGhBy+E,EAAuB,EACvBG,EAAyB,CAsB7B1qO,GAAOD,QAAU4sJ,Gt0BspqGX,SAAU3sJ,EAAQD,EAASH,Gu0B3pqGjC,QAAS2D,GAAIG,EAAQ0W,EAAM+sC,GACzB,GAAI/9B,GAAmB,MAAV1lB,SAA6B2xL,EAAQ3xL,EAAQ0W,EAC1D,iBAAOgP,EAAuB+9B,EAAe/9B,EA7B/C,GAAIisK,GAAU,EAAQ,IAgCtBr1L,GAAOD,QAAUwD,Gv0B6rqGX,SAAUvD,EAAQD,EAASH,Gw0BlsqGjC,QAAS+D,GAASyW,GAChB,MAAO6iJ,GAAM7iJ,GAAQ28M,EAAajrE,EAAM1xI,IAASu1T,EAAiBv1T,GA5BpE,GAAI28M,GAAe,EAAQ,KACvB44G,EAAmB,EAAQ,KAC3B1yK,EAAQ,EAAQ,KAChBnR,EAAQ,EAAQ,IA4BpB9rJ,GAAOD,QAAU4D,Gx0BouqGX,SAAU3D,EAAQD,EAASH,Gy0B1vqGjC,QAAS+vU,GAAiBv1T,GACxB,MAAO,UAAS1W,GACd,MAAO2xL,GAAQ3xL,EAAQ0W,IAX3B,GAAIi7K,GAAU,EAAQ,IAetBr1L,GAAOD,QAAU4vU,Gz0B0wqGX,SAAU3vU,EAAQD,EAASH,G00B5vqGjC,QAAS8rO,GAASrnO,GAChB,MAAKA,IAGLA,EAAQunO,EAASvnO,MACH2nJ,GAAY3nJ,KAAW2nJ,GACvB3nJ,EAAQ,GAAK,EAAI,GACfurU,EAETvrU,IAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,EA/BjC,GAAIunO,GAAW,EAAQ,KAGnB5/E,EAAW,IACX4jL,EAAc,sBAqClB5vU,GAAOD,QAAU2rO,G10BgyqGX,SAAU1rO,EAAQD,EAASH,GAEjC,Y20BxzqGA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAjBvFrD,OAAOsC,eAAerD,EAAS,cAC3BsE,OAAMA,IAEVtE,EAAQomE,cAAgBpmE,EAAQusO,gBAAkBvsO,EAAQssO,6BAE1D,IAAIwjG,GAA0B,EAAQ,KAElCC,EAA2Bt1P,EAAuBq1P,GAElDE,EAAmB,EAAQ,KAE3BC,EAAoBx1P,EAAuBu1P,GAE3CE,EAAiB,EAAQ,KAEzBC,EAAkB11P,EAAuBy1P,EAI7ClwU,GAAQssO,uBAAyByjG,EAAyB1iR,QAC1DrtD,EAAQusO,gBAAkB0jG,EAAkB5iR,QAC5CrtD,EAAQomE,cAAgB+pQ,EAAgB9iR,S30Bg1qGlC,SAAUptD,EAAQD,EAASH,GAEjC,cAAa,S40Bz2qGb,GA8BA,QAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASsrB,GAAmBld,GAAO,GAAII,MAAM+c,QAAQnd,GAAM,CAAE,IAAK,GAAItS,GAAI,EAAG0vB,EAAOhd,MAAMJ,EAAI5R,QAASV,EAAIsS,EAAI5R,OAAQV,IAAO0vB,EAAK1vB,GAAKsS,EAAItS,EAAM,OAAO0vB,GAAe,MAAOhd,OAAMid,KAAKrd,GAc1L,QAAS85N,KAuDL,QAAS8jG,KACLC,EAAe3sT,KAAK,aAAc4sT,EAElC,IAAIC,GAAsB5pQ,GACtB6pQ,eAAcA,EACdC,iBAAgBA,EAChBC,kBAAiBA,GACjB,IACJL,GAAeM,aAAaC,EAAW,KAAML,GACzCM,GACAA,MAIR,QAASC,GAAwBn9S,EAAiB87C,GAC9CshQ,EAAW1jR,QAAQ1yB,MAAM,iDAAkDhH,EAAiB87C,GAC5FuhQ,IAAqBr9S,EAEjBs9S,IACAA,EAAuBD,GACvBC,EAAyB,MAGzBC,IACAA,EAAuBF,GACvBE,EAAyB,MAGzBC,IACAA,EAAyBH,GACzBG,EAA2B,MAInC,QAASC,GAAkB/sU,EAAKgtU,EAAW3rR,GACvCqrR,EAAW1jR,QAAQ1yB,MAAM,2CAA4Ct2B,EAAKqhD,GACtE4rR,EAAuBjtU,IACvBitU,EAAuBjtU,GAAKqhD,GAEhC4rR,EAAuBjtU,GAAO,KAGlC,QAASktU,GAAuBtpQ,GAC5B8oQ,EAAW1jR,QAAQ1yB,MAAM,+CAAgDstC,GACrEgpQ,IACAA,EAAuBD,GACvBC,EAAyB,MAE7B1qQ,EAA0B0B,GAQ9B,QAASupQ,GAAS5lQ,EAAYv2C,GAC1B07S,EAAW1jR,QAAQ1yB,MAAM,uBAAyBixC,EAAa,iBAAmBv2C,GAC9Eo8S,GACAA,GAAwB7lQ,WAAYA,EAAYv2C,MAAOA,IAI/D,QAASq8S,GAAmB9lQ,EAAY6D,EAAWC,GAC9B,MAAbD,GAAqC,MAAhBC,IACrBqhQ,EAAW1jR,QAAQrpD,MAAM,yBAA2B0rE,GAChD+hQ,GACAA,GAAwBhiQ,UAAWA,EAAWC,aAAcA,KAKxE,QAASiiQ,MAIT,QAASC,GAAiBC,EAAmBlzM,GACzC,GAA0B,4BAAtBkzM,EAAiD,CACjD,GAAInsR,IACAvU,QAASwtF,EAAa,GACtB/nG,KAAM+nG,EAAa,GACnBhlD,KAAMglD,EAAa,GACnBmzM,cAAenzM,EAAa,GAC5Bza,WAAYya,EAAa,GACzBozM,WAAYpzM,EAAa,GACzBqzM,GAAIrzM,EAAa,GAGrBoyM,GAAW1jR,QAAQ1yB,MAAM,0CAA2Ck3S,EAAmBnsR,IAI/F,QAAS7vB,GAAuBo8S,GAC5BlB,EAAW1jR,QAAQ1yB,MAAM,gDAAiDs3S,EAE1E,IAAI72E,GAAa82E,EAAsBhxU,OACnCk6P,IAAYA,EAAW62E,GAG/B,QAASE,KACL,GAAIC,GAAYjwU,SAASE,cAAc,SACvC+vU,GAAUl3T,GAAKm3T,EACfD,EAAU9vU,KAAO,kBACjB8vU,EAAU5vU,SACV4vU,EAAUzvU,IAAM2vU,EAChBF,EAAUxvP,iBAAiB,OAAQ,WAC/BytP,EAAiB,GAAI/vU,QAAOiyU,MAAMC,cAAcC,KAEpDtwU,SAASC,qBAAqB,QAAQ,GAAGU,YAAYsvU,GAGzD,QAASM,GAAiBrpT,GACtB,GAAIuN,GAAOvN,EAAOnc,KACdylU,EAAUtpT,EAAOupT,QAEjBC,IAA4BA,GAA6Bj8S,KAAMA,EAAM+7S,QAASA,IAGtF,QAASG,GAAellQ,GACe,kBAAxBmlQ,IACPA,EAAoBnlQ,GAI5B,QAASolQ,KACLngU,EAAOu9T,kBAAoBA,EAC3Bv9T,EAAOi+T,wBAA0BA,EACjCj+T,EAAOu+T,kBAAoBA,EAC3Bv+T,EAAOogU,sBAAwB1B,EAC/B1+T,EAAO8+T,UAAYA,EACnB9+T,EAAO++T,iBAAmBA,EAC1B/+T,EAAOgjB,uBAAyBA,EAChChjB,EAAO6/T,iBAAmBA,EAC1B7/T,EAAO2+T,SAAWA,EAClB3+T,EAAO6+T,mBAAqBA,EAC5B7+T,EAAOy9T,GAAyBwC,EA7LpC,GAAI9zT,GAAOzN,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,MACtEi1D,EAAYxnD,EAAKwnD,UACjB0sQ,EAAmBl0T,EAAK0nD,YACxBA,WAAcwsQ,EAAiC,GAAKA,EACpDC,EAAmBn0T,EAAKynD,YACxBA,WAAc0sQ,EAAiC7mG,EAAuB8mG,YAAYC,WAAaF,EAC/FG,EAAmBt0T,EAAK2nD,YACxBA,WAAc2sQ,GAAyCA,EACvDC,EAAwBv0T,EAAKunD,0BAC7BA,WAA4BgtQ,EAAsC,WAClE,MAAO,IAAIzxU,UACXyxU,EACAC,EAAwBx0T,EAAKsxT,sBAC7BA,WAAwBkD,EAAsC,iBAAmBA,CAErF,MAAM50T,eAAgB0tN,IAClB,MAAO,IAAIA,IACP9lK,UAAWA,EACXE,YAAaA,EACbD,YAAaA,EACbE,YAAaA,EACbJ,0BAA2BA,OAI/BktQ,EAASpmR,SAASzuC,KAAM80T,EAASrmR,QAAQrsD,UAAWmvU,EAAgB9iR,QAAQrsD,UAEhF,IAAI4vU,GAAY,OAEZ+C,IACJA,GAAQrnG,EAAuB8mG,YAAYC,YAAc,qEACzDM,EAAQrnG,EAAuB8mG,YAAY9rU,SAAW,4EACtD,IAAI+qU,GAAgB,QAEhBuB,IACJA,GAAoBtnG,EAAuB8mG,YAAYC,YAAc,yfACrEO,EAAoBtnG,EAAuB8mG,YAAY9rU,SAAW,wfAClE,IAAImrU,GAAqBmB,EAAoBntQ,GAEzC6rQ,EAAsBqB,EAAQltQ,GAC9BotQ,EAAentQ,EACf2pQ,EAAiB,KACjBQ,EAAqB,KACrBI,EAAyB,KACzBE,EAA2B,KAC3BM,EAAwB,KACxBS,KACAW,EAA6B,KAC7BvB,KACAJ,EAAyB,KACzB6B,EAAsB,KAEtB/B,IA4IJ,UAAWyC,EAASpmR,SAASzuC,MAQzBkvD,WAAY,SAAoBz4B,GAG5B,MAFA07R,GAAW1jR,QAAQ1yB,MAAM,qCAElB,GAAI74B,SAAQ,SAAUC,GACzB8uU,EAAqB,SAA4BiD,GAC7C/xU,EAAQ+xU,MACAC,EAAS1mR,SAAShY,IACtBA,EAAS,KAAMy+R,IAGvBd,IACAb,OAWRx+S,gBAAiB,WACb,MAAOq9S,IAWXgD,eAAgB,SAAwBxhR,GACpC,MAAmB,gBAARA,KACPqhR,EAAerhR,OAcvBz+B,oBAAqB,SAA6BshB,GAG9C,MAFA07R,GAAW1jR,QAAQ1yB,MAAM,8CAElB,GAAI74B,SAAQ,SAAUC,GACzBkvU,EAAyB,SAAgCt9S,GACrD5xB,EAAQ4xB,MACAogT,EAAS1mR,SAAShY,IACtBA,EAAS,KAAM1hB,IAGvB08S,EAAet8S,yBAcvBm7C,aAAc,SAAsBy9E,EAAUt3G,GAC1C,GAAImd,GAAMjhD,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,GAAKsiU,CAI9E,OAFA9C,GAAW1jR,QAAQ1yB,MAAM,gCAAkCgyH,GAEpD,GAAI7qJ,SAAQ,SAAUC,GACzBkvU,EAAyB,SAAgCt9S,GACrD5xB,EAAQ4xB,MACAogT,EAAS1mR,SAAShY,IACtBA,EAAS,KAAM1hB,IAGvB08S,EAAe4D,kBAAkBzhR,MAYzCwa,eAAgB,SAAwB33B,GAGpC,MAFA07R,GAAW1jR,QAAQ1yB,MAAM,yCAElB,GAAI74B,SAAQ,SAAUC,GACzBovU,EAA2B,SAAkCx9S,GACzD5xB,EAAQ4xB,MACAogT,EAAS1mR,SAAShY,IACtBA,EAAS,KAAM1hB,IAGvB08S,EAAeliP,YAYvBrlB,sBAAuB,SAA+BzzB,GAClD07R,EAAW1jR,QAAQ1yB,MAAM,+CAEzB,IAAIu5S,GAA+B,GAAIpyU,SAAQ,SAAUC,GACrD8wU,EAA6B9wU,GAQjC,OANAsuU,GAAel/E,yBAEP4iF,EAAS1mR,SAAShY,IACtBA,EAAS,MAAK,GAGX6+R,GAWX/lQ,YAAa,SAAqB9pE,GAC9B0sU,EAAW1jR,QAAQ1yB,MAAM,qCACzB,IAAIw5S,GAAqB,GAAIryU,SAAQ,SAAUC,GACvCsC,EACAitU,EAAuBjtU,GAAOtC,EAE9BA,EAAQ,OAMhB,OAHIsC,IACAgsU,EAAeliQ,YAAY9pE,GAExB8vU,GAWX7kQ,UAAW,SAAmBppB,EAAU7Q,GAGpC,MAFA07R,GAAW1jR,QAAQ1yB,MAAM,6BAA+BurB,GAEjD,GAAIpkD,SAAQ,SAAUC,GACzB0vU,EAAwB,SAA+B2C,GACnDryU,EAAQqyU,MACAL,EAAS1mR,SAAShY,IACtBA,EAAS,KAAM++R,IAGvB/D,EAAegE,iBAAiBnuR,MAWxC2kB,4BAA6B,WAGzB,IAAK,GAFDlsD,GAAQC,KAEHuR,EAAO5e,UAAU3Q,OAAQ6qB,EAAO7Y,MAAMud,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACzE3E,EAAK2E,GAAQ7e,UAAU6e,EAG3B,IAAIkkT,MAAkBP,EAAS1mR,SAAS5hC,EAAKA,EAAK7qB,OAAS,IACvD0kD,EAAYgvR,EAAc7oT,EAAKhZ,MAAM,EAAGgZ,EAAK7qB,OAAS,GAAK6qB,EAC3D4pB,EAAWi/R,EAAc7oT,EAAKA,EAAK7qB,OAAS,GAAK,IAErD,SAAIowU,EAIA,OAAM,EAHE+C,EAAS1mR,SAAShY,IACtBA,EAAS,SAENvzC,QAAQC,WAGnB,IAAIwyU,MAEAC,EAAmB7yU,EAAM2jD,EAAW,GAEpC/tB,EAAWi9S,EAAiB5jT,IAAI,SAAU6jT,GAC1C,MAAO,IAAI3yU,SAAQ,SAAUC,GACzB,GAAIq5P,GAAa,SAAoBs5E,GACjC3yU,EAAQ2yU,GAGZH,GAAYzzU,KAAKs6P,GAEjBi1E,EAAexlQ,4BAA4B4pQ,KAC5C9kQ,MAAM,WACL,YAMR,OAFAuiQ,GAAwBqC,EAEjBzyU,QAAQyrC,IAAIhW,GAAU6Z,KAAK,SAAU6qJ,GACxC,GAAI5yK,GAAS4yK,EAAQpyL,OAAO,SAAUC,EAAKysC,GACvC,MAAOzsC,GAAI2nB,OAAO8kB,OActB,OAXAltB,GAAOs1B,QAAQ,SAAUuH,GACrBvnC,EAAM4rB,KAAK+hM,EAAuBqoG,UAAUC,cAAe1uR,QAG3D2uR,EAASxnR,SAAS/H,EAAWj8B,GAAQs1B,QAAQ,SAAUuH,GACvDvnC,EAAM4rB,KAAK+hM,EAAuBqoG,UAAUG,kBAAmB5uR,QAG3D6tR,EAAS1mR,SAAShY,IACtBA,EAAS,KAAMhsB,GAEZA,KAGf4mD,eAAgB,SAAwBz9C,GAEpC,MADA69S,GAAe0E,oBAAoBviT,EAASs9C,IACrC,GAAIhuE,SAAQ,SAAUC,GACrB4kE,IACAuqQ,EAAyBnvU,MAIrC4rE,aAAc,SAAsBt4B,GAChC09R,EAAsB19R,KAlflCt0C,OAAOsC,eAAerD,EAAS,cAC3BsE,OAAMA,GAGV,IAAI0wU,GAAU,EAAQ,KAElBvB,EAAWh5P,EAAuBu6P,GAElCC,EAAW,EAAQ,KAEnBlB,EAAWt5P,EAAuBw6P,GAElCC,EAAW,EAAQ,KAEnBL,EAAWp6P,EAAuBy6P,GAElCC,EAAY,EAAQ,KAEpBpE,EAAat2P,EAAuB06P,GAEpCl2K,EAAU,EAAQ,KAElBy0K,EAAWj5P,EAAuBwkF,GAElCixK,EAAiB,EAAQ,KAEzBC,EAAkB11P,EAAuBy1P,GASzCvuU,EAAQ,QAASA,GAAM6Q,EAAKksC,GAC5B,MAAOlsC,GAAI5R,QAAU4R,EAAIC,MAAM,EAAGisC,IAAOjtB,OAAO/B,EAAmB/tB,EAAM6Q,EAAIC,MAAMisC,GAAOA,QAmd9F4tL,GAAuB8mG,aACnBC,WAAY,aACZ/rU,QAAS,WAGbglO,EAAuBqoG,WACnBC,cAAe,gBACfE,kBAAmB,qBAGvBxoG,EAAuB8oG,mBACnBC,WAAY,MAGhBr1U,EAAQqtD,QAAUi/K,EAClBrsO,EAAOD,QAAUA,EAAiB,U50B22qGLI,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,a60Bv3rGjC,GAmDA,QAASyR,GAAMsY,EAAMyR,EAAS5P,GAC5B,OAAQA,EAAK7qB,QACX,IAAK,GAAG,MAAOgpB,GAAKxpB,KAAKi7B,EACzB,KAAK,GAAG,MAAOzR,GAAKxpB,KAAKi7B,EAAS5P,EAAK,GACvC,KAAK,GAAG,MAAO7B,GAAKxpB,KAAKi7B,EAAS5P,EAAK,GAAIA,EAAK,GAChD,KAAK,GAAG,MAAO7B,GAAKxpB,KAAKi7B,EAAS5P,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,MAAO7B,GAAKtY,MAAM+pB,EAAS5P,GAY7B,QAASk0M,GAAc5/K,EAAOz7C,GAE5B,SADay7C,EAAQA,EAAMn/C,OAAS,IACjBg/N,EAAY7/K,EAAOz7C,EAAO,IAAM,EAYrD,QAASw7N,GAAkB//K,EAAOz7C,EAAOy7N,GAIvC,IAHA,GAAIzvM,IAAS,EACT1vB,EAASm/C,EAAQA,EAAMn/C,OAAS,IAE3B0vB,EAAQ1vB,GACf,GAAIm/N,EAAWz7N,EAAOy7C,EAAMzvB,IAC1B,OAAM,CAGV,UAYF,QAASkxF,GAASzhE,EAAOi+G,GAKvB,IAJA,GAAI1tI,IAAS,EACT1vB,EAASm/C,EAAQA,EAAMn/C,OAAS,EAChCyoB,EAASzW,MAAMhS,KAEV0vB,EAAQ1vB,GACfyoB,EAAOiH,GAAS0tI,EAASj+G,EAAMzvB,GAAQA,EAAOyvB,EAEhD,OAAO12B,GAWT,QAASqtM,GAAU32K,EAAO3tB,GAKxB,IAJA,GAAI9B,IAAS,EACT1vB,EAASwxB,EAAOxxB,OAChBu8I,EAASp9F,EAAMn/C,SAEV0vB,EAAQ1vB,GACfm/C,EAAMo9F,EAAS7sH,GAAS8B,EAAO9B,EAEjC,OAAOyvB,GAcT,QAASi6I,GAAcj6I,EAAOmrI,EAAW2O,EAAWgmC,GAIlD,IAHA,GAAIj/N,GAASm/C,EAAMn/C,OACf0vB,EAAQupK,GAAagmC,EAAY,GAAK,GAElCA,EAAYvvM,MAAYA,EAAQ1vB,GACtC,GAAIsqL,EAAUnrI,EAAMzvB,GAAQA,EAAOyvB,GACjC,MAAOzvB,EAGX,QAAQ,EAYV,QAASsvM,GAAY7/K,EAAOz7C,EAAOu1L,GACjC,GAAIv1L,IAAUA,EACZ,MAAO01L,GAAcj6I,EAAOg4Q,EAAWl+H,EAKzC,KAHA,GAAIvpK,GAAQupK,EAAY,EACpBj5L,EAASm/C,EAAMn/C,SAEV0vB,EAAQ1vB,GACf,GAAIm/C,EAAMzvB,KAAWhsB,EACnB,MAAOgsB,EAGX,QAAQ,EAUV,QAASynS,GAAUzzT,GACjB,MAAOA,KAAUA,EAUnB,QAASm9J,GAAU73I,GACjB,MAAO,UAAStlB,GACd,MAAOslB,GAAKtlB,IAYhB,QAASmzL,GAASrkF,EAAO/uG,GACvB,MAAO+uG,GAAMzjE,IAAItrC,GAWnB,QAASysG,GAASntG,EAAQU,GACxB,MAAiB,OAAVV,SAA6BA,EAAOU,GAU7C,QAASixU,GAAahxU,GAGpB,GAAI+kB,KACJ,IAAa,MAAT/kB,GAA0C,kBAAlBA,GAAMu4B,SAChC,IACExT,KAAY/kB,EAAQ,IACpB,MAAOlD,IAEX,MAAOioB,GAwDT,QAASglS,GAAKlwQ,GACZ,GAAI7tB,IAAS,EACT1vB,EAASu9C,EAAUA,EAAQv9C,OAAS,CAGxC,KADAge,KAAK8B,UACI4P,EAAQ1vB,GAAQ,CACvB,GAAI69D,GAAQtgB,EAAQ7tB,EACpB1R,MAAK8wB,IAAI+uB,EAAM,GAAIA,EAAM,KAW7B,QAAS6vP,KACP1vS,KAAKk/I,SAAWT,GAAeA,GAAa,SAa9C,QAASkxJ,GAAWlqT,GAClB,MAAOua,MAAK+wB,IAAItrC,UAAeua,MAAKk/I,SAASz5J,GAY/C,QAASmqT,GAAQnqT,GACf,GAAIqhD,GAAO9mC,KAAKk/I,QAChB,IAAIT,GAAc,CAChB,GAAIh0I,GAASq8B,EAAKrhD,EAClB,OAAOglB,KAAW4lS,UAA6B5lS,EAEjD,MAAOpoB,IAAeb,KAAKslD,EAAMrhD,GAAOqhD,EAAKrhD,UAY/C,QAASoqT,GAAQpqT,GACf,GAAIqhD,GAAO9mC,KAAKk/I,QAChB,OAAOT,aAAe33G,EAAKrhD,GAAqBpD,GAAeb,KAAKslD,EAAMrhD,GAa5E,QAASqqT,GAAQrqT,EAAKC,GAGpB,MAFWsa,MAAKk/I,SACXz5J,GAAQg5J,aAAgB/4J,EAAuB2qT,GAAiB3qT,EAC9Dsa,KAiBT,QAAS0+I,GAAUn/G,GACjB,GAAI7tB,IAAS,EACT1vB,EAASu9C,EAAUA,EAAQv9C,OAAS,CAGxC,KADAge,KAAK8B,UACI4P,EAAQ1vB,GAAQ,CACvB,GAAI69D,GAAQtgB,EAAQ7tB,EACpB1R,MAAK8wB,IAAI+uB,EAAM,GAAIA,EAAM,KAW7B,QAAS8+F,KACP3+I,KAAKk/I,YAYP,QAASN,GAAgBn5J,GACvB,GAAIqhD,GAAO9mC,KAAKk/I,SACZxtI,EAAQstI,EAAal4G,EAAMrhD,EAE/B,SAAIisB,EAAQ,IAIRA,GADYo1B,EAAK9kD,OAAS,EAE5B8kD,EAAKn0B,MAELtQ,GAAO7gB,KAAKslD,EAAMp1B,EAAO,OAc7B,QAASmtI,GAAap5J,GACpB,GAAIqhD,GAAO9mC,KAAKk/I,SACZxtI,EAAQstI,EAAal4G,EAAMrhD,EAE/B,OAAOisB,GAAQ,SAAgBo1B,EAAKp1B,GAAO,GAY7C,QAASotI,GAAar5J,GACpB,MAAOu5J,GAAah/I,KAAKk/I,SAAUz5J,IAAQ,EAa7C,QAASs5J,GAAat5J,EAAKC,GACzB,GAAIohD,GAAO9mC,KAAKk/I,SACZxtI,EAAQstI,EAAal4G,EAAMrhD,EAO/B,OALIisB,GAAQ,EACVo1B,EAAK5kD,MAAMuD,EAAKC,IAEhBohD,EAAKp1B,GAAO,GAAKhsB,EAEZsa,KAiBT,QAAS62K,GAASt3I,GAChB,GAAI7tB,IAAS,EACT1vB,EAASu9C,EAAUA,EAAQv9C,OAAS,CAGxC,KADAge,KAAK8B,UACI4P,EAAQ1vB,GAAQ,CACvB,GAAI69D,GAAQtgB,EAAQ7tB,EACpB1R,MAAK8wB,IAAI+uB,EAAM,GAAIA,EAAM,KAW7B,QAASi3H,KACP92K,KAAKk/I,UACH,KAAQ,GAAIuwJ,GACZ,IAAO,IAAK7yQ,IAAO8hH,GACnB,OAAU,GAAI+wJ,IAalB,QAAS14H,GAAetxL,GACtB,MAAOw5J,GAAWj/I,KAAMva,GAAa,OAAEA,GAYzC,QAASuxL,GAAYvxL,GACnB,MAAOw5J,GAAWj/I,KAAMva,GAAKb,IAAIa,GAYnC,QAASwxL,GAAYxxL,GACnB,MAAOw5J,GAAWj/I,KAAMva,GAAKsrC,IAAItrC,GAanC,QAASyxL,GAAYzxL,EAAKC,GAExB,MADAu5J,GAAWj/I,KAAMva,GAAKqrC,IAAIrrC,EAAKC,GACxBsa,KAkBT,QAAS04K,GAASllK,GAChB,GAAI9B,IAAS,EACT1vB,EAASwxB,EAASA,EAAOxxB,OAAS,CAGtC,KADAge,KAAKk/I,SAAW,GAAI23B,KACXnlK,EAAQ1vB,GACfge,KAAKgmE,IAAIxyD,EAAO9B,IAcpB,QAASinK,GAAYjzL,GAEnB,MADAsa,MAAKk/I,SAASpuH,IAAIprC,EAAO2qT,IAClBrwS,KAYT,QAAS44K,GAAYlzL,GACnB,MAAOsa,MAAKk/I,SAASnuH,IAAIrrC,GAe3B,QAASs5J,GAAa79G,EAAO17C,GAE3B,IADA,GAAIzD,GAASm/C,EAAMn/C,OACZA,KACL,GAAIkrJ,EAAG/rG,EAAMn/C,GAAQ,GAAIyD,GACvB,MAAOzD,EAGX,QAAQ,EAcV,QAAS20U,GAAex1R,EAAO3tB,EAAQ4rI,EAAU+hE,GAC/C,GAAIzvM,IAAS,EACT4E,EAAWyqM,EACXqN,KACApsO,EAASm/C,EAAMn/C,OACfyoB,KACAmsT,EAAepjT,EAAOxxB,MAE1B,KAAKA,EACH,MAAOyoB,EAEL20I,KACF5rI,EAASovF,EAASpvF,EAAQqvI,EAAUzD,KAElC+hE,GACF7qM,EAAW4qM,EACXkN,MAEO56M,EAAOxxB,QAAUqsO,IACxB/3M,EAAWuiK,EACXu1C,KACA56M,EAAS,GAAIklK,GAASllK,GAExB6yC,GACA,OAAS30C,EAAQ1vB,GAAQ,CACvB,GAAI0D,GAAQy7C,EAAMzvB,GACd68M,EAAWnvE,EAAWA,EAAS15J,GAASA,CAG5C,IADAA,EAASy7N,GAAwB,IAAVz7N,EAAeA,EAAQ,EAC1C0oO,GAAYG,IAAaA,EAAU,CAErC,IADA,GAAIsoG,GAAcD,EACXC,KACL,GAAIrjT,EAAOqjT,KAAiBtoG,EAC1B,QAASloK,EAGb57C,GAAOvoB,KAAKwD,OAEJ4wB,GAAS9C,EAAQ+6M,EAAUpN,IACnC12M,EAAOvoB,KAAKwD,GAGhB,MAAO+kB,GAcT,QAASmtM,GAAYz2K,EAAO+5H,EAAOoR,EAAWx8C,EAAUrlH,GACtD,GAAIiH,IAAS,EACT1vB,EAASm/C,EAAMn/C,MAKnB,KAHAsqL,IAAcA,EAAYurC,GAC1BptM,IAAWA,QAEFiH,EAAQ1vB,GAAQ,CACvB,GAAI0D,GAAQy7C,EAAMzvB,EACdwpJ,GAAQ,GAAKoR,EAAU5mL,GACrBw1K,EAAQ,EAEV08C,EAAYlyN,EAAOw1K,EAAQ,EAAGoR,EAAWx8C,EAAUrlH,GAEnDqtM,EAAUrtM,EAAQ/kB,GAEVoqI,IACVrlH,EAAOA,EAAOzoB,QAAU0D,GAG5B,MAAO+kB,GAWT,QAAS0nF,GAAazsG,GACpB,SAAKo8B,EAASp8B,IAAUqqT,EAASrqT,MAGlBs1F,EAAWt1F,IAAUgxU,EAAahxU,GAAU2/M,GAAa2qG,IACzDpqR,KAAK+xJ,EAASjyL,IAwC/B,QAASu5J,GAAWjtI,EAAKvsB,GACvB,GAAIqhD,GAAO90B,EAAIktI,QACf,OAAOC,GAAU15J,GACbqhD,EAAmB,gBAAPrhD,GAAkB,SAAW,QACzCqhD,EAAK90B,IAWX,QAASigF,GAAUltG,EAAQU,GACzB,GAAIC,GAAQwsG,EAASntG,EAAQU,EAC7B,OAAO0sG,GAAazsG,GAASA,SAU/B,QAASmyN,GAAcnyN,GACrB,MAAOqrB,IAAQrrB,IAAU8nJ,EAAY9nJ,OAChCmrT,IAAoBnrT,GAASA,EAAMmrT,KAU1C,QAAS1xJ,GAAUz5J,GACjB,GAAIhC,SAAcgC,EAClB,OAAgB,UAARhC,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVgC,EACU,OAAVA,EAUP,QAASqqT,GAAS/kS,GAChB,QAASklS,IAAeA,KAAcllS,GAUxC,QAAS2sK,GAAS3sK,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,MAAO68J,IAAarmL,KAAKwpB,GACzB,MAAOxoB,IACT,IACE,MAAQwoB,GAAO,GACf,MAAOxoB,KAEX,MAAO,GA8DT,QAAS0qJ,GAAGxnJ,EAAOszH,GACjB,MAAOtzH,KAAUszH,GAAUtzH,IAAUA,GAASszH,IAAUA,EAqB1D,QAASw0B,GAAY9nJ,GAEnB,MAAO07N,GAAkB17N,IAAUrD,GAAeb,KAAKkE,EAAO,aAC1DmpD,GAAqBrtD,KAAKkE,EAAO,WAAaqsG,GAAevwG,KAAKkE,IAAUqoO,IAqDlF,QAASjzI,GAAYp1F,GACnB,MAAgB,OAATA,GAAiBq1F,EAASr1F,EAAM1D,UAAYg5F,EAAWt1F,GA4BhE,QAAS07N,GAAkB17N,GACzB,MAAOmjG,GAAanjG,IAAUo1F,EAAYp1F,GAoB5C,QAASs1F,GAAWt1F,GAGlB,GAAI83E,GAAM17C,EAASp8B,GAASqsG,GAAevwG,KAAKkE,GAAS,EACzD,OAAO83E,IAAO25G,IAAW35G,GAAO45G,GA6BlC,QAASr8F,GAASr1F,GAChB,MAAuB,gBAATA,IACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS65J,GA4B7C,QAASz9H,GAASp8B,GAChB,GAAIhC,SAAcgC,EAClB,SAASA,IAAkB,UAARhC,GAA4B,YAARA,GA2BzC,QAASmlG,GAAanjG,GACpB,QAASA,GAAyB,gBAATA,GApoC3B,GAAI2oO,GAAmB,IAGnBgiF,GAAiB,4BAGjB9wJ,GAAmB,iBAGnBwuE,GAAU,qBACV52C,GAAU,oBACVC,GAAS,6BAMT64H,GAAe,sBAGfD,GAAe,8BAGf79N,GAA8B,gBAAVl+E,IAAsBA,GAAUA,EAAO9R,SAAWA,QAAU8R,EAGhFm+E,GAA0B,gBAARlxE,OAAoBA,MAAQA,KAAK/e,SAAWA,QAAU+e,KAGxEsuC,GAAO2iC,IAAcC,IAAY1oC,SAAS,iBAmN1C4mQ,GAAat8S,MAAM5R,UACnB0oL,GAAYphI,SAAStnD,UACrBmrJ,GAAcprJ,OAAOC,UAGrB+tT,GAAa3gQ,GAAK,sBAGlB0gQ,GAAc,WAChB,GAAIt2L,GAAM,SAASrmB,KAAK48M,IAAcA,GAAWnlT,MAAQmlT,GAAWnlT,KAAKolT,UAAY,GACrF,OAAOx2L,GAAO,iBAAmBA,EAAO,MAItCiuD,GAAeiD,GAAU7sJ,SAGzB57B,GAAiBkrJ,GAAYlrJ,eAO7B0vG,GAAiBw7C,GAAYtvH,SAG7BonL,GAAazmK,OAAO,IACtBipI,GAAarmL,KAAKa,IAAgB0qB,QAAQkjS,GAAc,QACvDljS,QAAQ,yDAA0D,SAAW,KAI5E+8B,GAAS0F,GAAK1F,OACd+E,GAAuB0+F,GAAY1+F,qBACnCxsC,GAASiuS,GAAWjuS,OACpBwuS,GAAmB/mQ,GAASA,GAAOgnQ,0BAGnC31H,GAAY78J,KAAKC,IAGjBqe,GAAMq1D,EAAUziD,GAAM,OACtBivG,GAAexsD,EAAU9vG,OAAQ,SA8FrCstT,GAAKrtT,UAAU0f,MAAQ4tS,EACvBD,EAAKrtT,UAAkB,OAAIutT,EAC3BF,EAAKrtT,UAAUwC,IAAMgrT,EACrBH,EAAKrtT,UAAU2uC,IAAM8+Q,EACrBJ,EAAKrtT,UAAU0uC,IAAMg/Q,EA4GrBpxJ,EAAUt8J,UAAU0f,MAAQ68I,EAC5BD,EAAUt8J,UAAkB,OAAIw8J,EAChCF,EAAUt8J,UAAUwC,IAAMi6J,EAC1BH,EAAUt8J,UAAU2uC,IAAM+tH,EAC1BJ,EAAUt8J,UAAU0uC,IAAMiuH,EA0F1B83B,EAASz0L,UAAU0f,MAAQg1K,EAC3BD,EAASz0L,UAAkB,OAAI20L,EAC/BF,EAASz0L,UAAUwC,IAAMoyL,EACzBH,EAASz0L,UAAU2uC,IAAMkmJ,EACzBJ,EAASz0L,UAAU0uC,IAAMomJ,EAiDzBwB,EAASt2L,UAAU4jF,IAAM0yG,EAASt2L,UAAUF,KAAOy2L,EACnDD,EAASt2L,UAAU2uC,IAAM6nJ,CAoQzB,IAAI7tF,IA9HJ,SAAkB//E,EAAM27D,GAEtB,MADAA,GAAQw0G,YAAUx0G,EAAuB37D,EAAKhpB,OAAS,EAAK2kF,EAAO,GAC5D,WAML,IALA,GAAI95D,GAAOla,UACP+e,GAAS,EACT1vB,EAASm5L,GAAUtuK,EAAK7qB,OAAS2kF,EAAO,GACxCxlC,EAAQntC,MAAMhS,KAET0vB,EAAQ1vB,GACfm/C,EAAMzvB,GAAS7E,EAAK85D,EAAQj1D,EAE9BA,IAAS,CAET,KADA,GAAIsmM,GAAYhkN,MAAM2yE,EAAQ,KACrBj1D,EAAQi1D,GACfqxI,EAAUtmM,GAAS7E,EAAK6E,EAG1B,OADAsmM,GAAUrxI,GAASxlC,EACZzuC,EAAMsY,EAAMhL,KAAMg4M,KA6GH,SAAS72K,EAAO3tB,GACxC,MAAO4tM,GAAkBjgL,GACrBw1R,EAAex1R,EAAOy2K,EAAYpkM,EAAQ,EAAG4tM,YAuF/CrwM,GAAU/c,MAAM+c,OA6KpB1vB,GAAOD,QAAU2pG,K70B23rGYvpG,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,a80BhhuGjC,YAMC,SAAUuuD,EAAM4iD,GACb,YAEI,eAAiB,0DAMvBpyF,EAAM,WACJ,YAeA,SAASuyF,GAAW/sG,EAAK8d,GACrB,GAAIsoB,GAASpmC,EAAI8d,EACjB,IAA2B,kBAAhBsoB,GAAO9mB,KACd,MAAO8mB,GAAO9mB,KAAKtf,EAEnB,KACI,MAAOkkD,UAAStnD,UAAU0iB,KAAKtjB,KAAKoqC,EAAQpmC,GAC9C,MAAOhD,GAEL,MAAO,YACH,MAAOknD,UAAStnD,UAAUsQ,MAAMA,MAAMk5B,GAASpmC,EAAKmN,cAQpE,QAAS0/F,GAAW/uF,GAKhB,MAJmB,UAAfA,IACAA,EAAa,aAGNne,KAAYmtG,aAEZntG,EAAQme,GACRivF,EAAWptG,EAASme,YACpBne,EAAQqN,IACR+/F,EAAWptG,EAAS,OAEpBmd,GAMf,QAASowF,GAAsB3iE,EAAO0iE,GAElC,IAAK,GAAInxG,GAAI,EAAGA,EAAIqxG,EAAW3wG,OAAQV,IAAK,CACxC,GAAIgiB,GAAaqvF,EAAWrxG,EAC5B0e,MAAKsD,GAAehiB,EAAIyuC,EACpBztB,EACAtC,KAAK4yF,cAActvF,EAAYysB,EAAO0iE,GAI9CzyF,KAAKxN,IAAMwN,KAAK+b,MAKpB,QAASy2E,GAAgClvF,EAAYysB,EAAO0iE,GACxD,MAAO,kBACQttG,KAAYmtG,IACnBI,EAAsBlxG,KAAKwe,KAAM+vB,EAAO0iE,GACxCzyF,KAAKsD,GAAY5Q,MAAMsN,KAAMrN,aAOzC,QAASkgG,GAAqBvvF,EAAYysB,EAAO0iE,GAE7C,MAAOJ,GAAW/uF,IACXkvF,EAAgC9/F,MAAMsN,KAAMrN,WAGvD,QAASmgG,GAAOxuG,EAAMyuG,EAAcC,GAQlC,QAASC,GAAuBC,GAC5B,GAAIC,IAAaR,EAAWO,IAAa,UAAUx+C,aAEnD,UAAWhzD,UAAW4wG,EAAtB,CAGA,IAEI,YADA5wG,OAAO21B,aAAa+7E,GAAcD,GAEpC,MAAOjqD,IAGT,IACIxnD,OAAO6B,SAAS80E,OACd9qD,mBAAmB6lF,GAAc,IAAMD,EAAY,IACvD,MAAOjqD,MAGb,QAASmqD,KACL,GAAIC,EAEJ,UAAW5xG,UAAW4wG,EAAtB,CAEA,IACIgB,EAAc5xG,OAAO21B,aAAa+7E,GACpC,MAAOlqD,IAGT,SAAWoqD,KAAgBhB,EACvB,IACI,GAAIj6B,GAAS32E,OAAO6B,SAAS80E,OACzB/8D,EAAW+8D,EAAO38D,QAClB6R,mBAAmB6lF,GAAc,MACnB,IAAd93F,IACAg4F,EAAc,WAAWC,KAAKl7B,EAAOxkE,MAAMyH,IAAW,IAE5D,MAAO4tC,IAQb,WAAO,KAJHhoC,EAAKsyF,OAAOF,KACZA,UAGGA,GAnDX,GACIG,GADAvyF,EAAOlB,KAEPozF,EAAa,UACb9uG,KACF8uG,GAAc,IAAM9uG,GAwDtB4c,EAAK5c,KAAOA,EAEZ4c,EAAKsyF,QAAW,MAAS,EAAG,MAAS,EAAG,KAAQ,EAAG,KAAQ,EACvD,MAAS,EAAG,OAAU,GAE1BtyF,EAAK0xF,cAAgBI,GAAWH,EAEhC3xF,EAAKwyF,SAAW,WACZ,MAAOD,IAGXvyF,EAAKyyF,SAAW,SAAU5jE,EAAOwqD,GAI7B,GAHqB,gBAAVxqD,aAAsB7uB,EAAKsyF,OAAOzjE,EAAM2kB,iBAC/C3kB,EAAQ7uB,EAAKsyF,OAAOzjE,EAAM2kB,kBAET,gBAAV3kB,IAAsBA,GAAS,GAAKA,GAAS7uB,EAAKsyF,OAAOI,QAUhE,KAAM,6CAA+C7jE,CAJrD,IALA0jE,EAAe1jE,OACXwqD,GACA0Y,EAAuBljE,GAE3B2iE,EAAsBlxG,KAAK0f,EAAM6uB,EAAOzrC,SAC7Ba,KAAYmtG,GAAiBviE,EAAQ7uB,EAAKsyF,OAAOI,OACxD,MAAO,oCAOnB1yF,EAAK2yF,gBAAkB,SAAU9jE,GACxBsjE,KACDnyF,EAAKyyF,SAAS5jE,OAItB7uB,EAAK4yF,UAAY,SAASvZ,GACtBr5E,EAAKyyF,SAASzyF,EAAKsyF,OAAOO,MAAOxZ,IAGrCr5E,EAAK8yF,WAAa,SAASzZ,GACvBr5E,EAAKyyF,SAASzyF,EAAKsyF,OAAOI,OAAQrZ,GAItC,IAAI0Z,GAAeZ,GACC,OAAhBY,IACAA,EAA+B,MAAhBlB,EAAuB,OAASA,GAEnD7xF,EAAKyyF,SAASM,MA7LhB,GAAI3xF,GAAO,aACPgwF,EAAgB,YAEhBK,GACA,QACA,QACA,OACA,OACA,SA8LAuB,EAAgB,GAAIpB,GAEpBqB,IACJD,GAAcE,UAAY,SAAmB9vG,GACzC,GAAoB,gBAATA,IAA8B,KAATA,EAC9B,KAAM,IAAI45B,WAAU,iDAGtB,IAAIm2E,GAASF,EAAe7vG,EAK5B,OAJK+vG,KACHA,EAASF,EAAe7vG,GAAQ,GAAIwuG,GAClCxuG,EAAM4vG,EAAcR,WAAYQ,EAActB,gBAE3CyB,EAIX,IAAIC,SAAe5yG,UAAW4wG,EAAiB5wG,OAAO8Q,UActD,OAbA0hG,GAAc12E,WAAa,WAMvB,aALW97B,UAAW4wG,GACf5wG,OAAO8Q,MAAQ0hG,IAClBxyG,OAAO8Q,IAAM8hG,GAGVJ,GAGXA,EAAc4iO,WAAa,WACvB,MAAO3iO,IAGJD,M90ByhuGkB1yG,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,GAEjC,cAAa,S+0BvxuGb,GAyBA,QAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAQvF,QAASmoO,GAAgBvtN,GAgBrB,QAAS22T,KACL,GAAIC,MAAeC,EAAYC,SAASC,EAAeC,EAoBvD,OAnBiB,QAAbJ,EACAK,EAAkBn0U,QAAQC,QAAQ6zU,GAC1BK,IACRA,EAAkB,GAAIn0U,SAAQ,SAAUC,EAASE,GAC7Ci0U,EAAa7oR,QAAQ7pD,IAAI2yU,GAAa3wP,IAAI,SAAU1hF,EAAK4iI,GACrD,GAAIA,EAAK,CACL,GAAI0vM,GAAmBrzT,KAAKoT,MAAMuwG,EAAIhsB,OAAMA,EACxCm7N,EAAYQ,SAASN,EAAeK,EAAkBJ,GAC1Dj0U,EAAQq0U,OAERn0U,GAAO6B,GAAO,GAAIlC,OAAM,sBAGjC+tE,MAAM,SAAU7rE,GACfC,EAAQqN,IAAI,2BAA4BtN,GACxCmyU,EAAkB,QAInBA,EAGX,QAASK,KACL,MAAOX,KAAcvkS,KAAK,SAAUwkS,GAGhC,MAFAW,GAAcX,GAAYA,EAASziJ,MAAQyiJ,EAASziJ,KAAKrgK,gBAAkB8iT,EAASziJ,KAAKrgK,eAAe0jT,IACxGxF,WAAmBuF,GAAkD,SAArBA,EAAYrzU,OA1CpE,GAAIuzU,GAAez3T,EAAKu4C,QACpBA,WAAUk/Q,EAA6B,YAAcA,EACrDC,EAAgB13T,EAAKqnD,SACrBA,WAAWqwQ,EAA8B,MAAQA,EACjDC,EAAwB33T,EAAK43T,mBAC7BA,WAAqBD,EAAsCE,EAAqBF,CAEpF,MAAM/3T,eAAgB2tN,IAClB,MAAO,IAAIA,IAAkBh1K,QAASA,EAAS8O,SAAUA,EAAUuwQ,mBAAoBA,GAE3F,IAAIT,GAAcS,EAAqB,YAAcr/Q,EAAU,aAAe8O,EAC1E2qQ,KACAiF,SACAM,QAmCJ,UAFI9C,EAASpmR,SAASzuC,KAAMuxT,EAAgB9iR,YAEjComR,EAASpmR,SAASzuC,MACzBkvD,WAAY,SAAoBz4B,GAC5B,MAAOihS,KAAcllS,KAAK,WAItB,OAAM,EAHE2iS,EAAS1mR,SAAShY,IACtBA,EAAS,MAAK,IAAC,KAK3B1hB,gBAAiB,WACb,MAAOq9S,IAEXj9S,oBAAqB,SAA6BshB,GAC9C,MAAOihS,KAAcllS,KAAK,SAAUzd,GAIhC,OAAM,EAHEogT,EAAS1mR,SAAShY,IACtBA,EAAS,KAAM1hB,GAEZA,KAGfu7C,aAAc,SAAsBy9E,EAAUt3G,GAC1C,MAAOihS,KAAcllS,KAAK,SAAUzd,GAIhC,OAAM,EAHEogT,EAAS1mR,SAAShY,IACtBA,EAAS,KAAM1hB,GAEZA,KAGfq5C,eAAgB,SAAwB33B,GAEpC,MADA27R,MACOlvU,QAAQC,QAAQivU,GAAkB5/R,KAAK,SAAUzd,GAIpD,OAAM,EAHEogT,EAAS1mR,SAAShY,IACtBA,EAAS,KAAM1hB,GAEZA,KAGfm1C,sBAAuB,SAA+BzzB,GAClD,MAAOsgS,KAAcvkS,KAAK,SAAUwkS,GAChC,GAAIkB,GAAqBlB,GAAYA,EAASziJ,MAAQyiJ,EAASziJ,KAAKrgK,gBAAkB8iT,EAASziJ,KAAKrgK,eAAe0jT,IAC/G5/S,EAAOkgT,EAAmB5zU,KAC1B6zU,EAASD,EAAmB9qR,UAE5BgrR,EAAoB,SAATpgT,GAAoBA,KAAMA,EAAMmgT,OAAQA,GAAW,IAIlE,UAHQhD,EAAS1mR,SAAShY,IACtBA,EAAS,KAAM2hS,GAEZA,KAGfnvQ,YAAa,SAAqBxyB,GAC9B,MAAOsgS,KAAcvkS,KAAK,SAAUwkS,GAChC,MAAOA,IAAYA,EAASziJ,MAAQyiJ,EAASziJ,KAAKj5K,WACnDk3B,KAAK,SAAUl3B,GAId,OAAM,EAHE65T,EAAS1mR,SAAShY,IACtBA,EAAS,KAAMn7B,GAEZA,OAzIvBnZ,OAAOsC,eAAerD,EAAS,cAC3BsE,OAAMA,IAEVtE,EAAQ+1U,oBAER,IAAIf,GAAU,EAAQ,KAElBvB,EAAWh5P,EAAuBu6P,GAElCC,EAAW,EAAQ,KAEnBlB,EAAWt5P,EAAuBw6P,GAElCgC,EAAc,EAAQ,KAEtBf,EAAez7P,EAAuBw8P,GAEtC/G,EAAiB,EAAQ,KAEzBC,EAAkB11P,EAAuBy1P,GAEzC2F,EAAc,EAAQ,KAItBE,EAAgB/1U,EAAQ+1U,cAAgB,aAExCC,EAAe,iBAEfa,EAAqB,sDAkHzB72U,GAAQqtD,QAAUk/K,I/0ByxuGWnsO,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,GAEjC,cAAa,Sg1Bh7uGb,GAMA,QAASq3U,GAAiB50U,GACtB,IACI,GAAIujT,GAAUvlT,OAAOgC,GACjB+B,EAAM,kBAGV,OAFAwhT,GAAQn8N,QAAQrlF,EAAKA,GACrBwhT,EAAQl9N,WAAWtkF,MAErB,MAAOP,GACL,OAAM,GAId,QAASuyU,GAAQhyU,EAAKwmL,GAClB,GAAIvoL,GAAOiP,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,GAAK,gBAE/E,SAAI2lU,EAAiB50U,KACHhC,OAAOgC,GACbonF,QAAQrlF,EAAK0e,KAAKC,UAAU6nK,QAM5C,QAASirJ,GAAQzxU,GACb,GAAI/B,GAAOiP,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,GAAK,iBAE3EmtH,EAAO,IACX,IAAIw4M,EAAiB50U,GAAO,CACxB,GAAIujT,GAAUvlT,OAAOgC,GACjBgC,EAAQuhT,EAAQ3vR,QAAQ7xB,EAC5B,KACIq6H,EAAO37G,KAAKoT,MAAM7xB,GACpB,MAAOR,GACLC,EAAQqN,IAAI,uBAAwBtN,IAG5C,MAAO46H,GAxCX39H,OAAOsC,eAAerD,EAAS,cAC3BsE,OAAMA,IA0CVtE,EAAQq2U,QAAUA,EAClBr2U,EAAQ81U,QAAUA,Ih1Bk7uGW11U,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQiE,EAAqBrE,GAE7C,cAAa,Si1Bt+uGb,GAUA,QAASs3U,GAAyB1lU,GAC9B,MAAoB,gBAATA,IACCA,EAAO,IAAO,GAAK,GAAK,IAAI4qN,QAAQ,GAEzC,UAIJ,QAAS+6G,KACZ,QAASnhT,aAAaC,QAAQmhT,GAI3B,QAASC,GAAT,GAAsD,GAAtBp0U,GAAsB,EAAtBA,KAAMmmE,EAAgB,EAAhBA,YACrCpzC,eACAA,aAAayzD,QAAQ6tP,EAAgCx0T,KAAKC,WACtD62D,KAAM,GAAI/qB,MACVt8B,UAAYtvB,OAAMmmE,mBAMvB,QAASmuQ,GAAa1oQ,GACrB74C,cAA+B,gBAAR64C,IACvB74C,aAAayzD,QAAQ2tP,EAAuB,GAAIvoR,MAAKggB,IAKtD,QAASilB,KACR99D,eACAA,aAAa0yD,WAAW4uP,GACxBthT,aAAa0yD,WAAW0uP,IAKzB,QAAS5sP,GAAoBrd,GAChC,GAAIn3C,aACA,IACI,GAAMwhT,GAAyBxhT,aAAaC,QAAQqhT,GAC9CG,EAAWzhT,aAAaC,QAAQmhT,EAEtC,IAAIK,GAAYD,EAAwB,CACpC,GAAME,GAAmB50T,KAAKoT,MAAMshT,GAC9BjlT,EAAWmlT,EAAiBnlT,aAC5BolT,EAAoB,GAAI9oR,MAAK6oR,EAAiB99P,MAAOk4C,UACrD8lN,EAAmB,GAAI/oR,MAAK4oR,GAAW3lN,UACvC+8B,MAAmBhgG,OAAQijE,UAE3B+lN,EAAkBX,EAAyBroL,EAAc8oL,GACzDG,EAAoBZ,EAAyBU,EAAkBD,EAEjEC,GAAkB/oL,GAClBkpL,YACIF,EACAC,EACAvlT,EACA46C,GAGR2mB,KAEN,MAAOkkP,GACLl0U,EAAQC,MAAMi0U,IA3E1B,0CAMMV,EAAiC,4BACjCF,EAAwB,qBj1BmjvGDj3U,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,Gk1B9jvGjC,GAAIw2L,GAAM,EAAQ,KACdn1K,EAAO,EAAQ,KACfq5K,EAAa,EAAQ,KAYrB2yC,EAAc72C,GAAQ,EAAIkE,EAAW,GAAIlE,IAAK,EAAE,KAAK,IAT1C,IASoE,SAASjkK,GAC1F,MAAO,IAAIikK,GAAIjkK,IAD2DlR,CAI5EjhB,GAAOD,QAAUktO,Gl1BqkvGX,SAAUjtO,EAAQD,Gm1B3kvGxB,QAASkhB,MAITjhB,EAAOD,QAAUkhB,Gn1B8lvGX,SAAUjhB,EAAQiE,EAAqBrE,GAE7C,Yo1BhnvGA,YAEM2qE,GAFN,OAEyB,SAAC,GAAD,QAAGD,QAAH,yBAEVryD,8BAAesyD,EAAkB,qBAAG9kB,Qp1B8nvG7C,SAAUzlD,EAAQD,EAASH,Gq1BrmvGjC,QAAS8B,GAAMo+C,EAAOrB,EAAMquL,GAExBruL,GADGquL,EAAQL,EAAe3sL,EAAOrB,EAAMquL,YAASruL,GACzC,EAEAq7I,EAAUD,EAAUp7I,GAAO,EAEpC,IAAI99C,GAAkB,MAATm/C,EAAgB,EAAIA,EAAMn/C,MACvC,KAAKA,GAAU89C,EAAO,EACpB,QAMF,KAJA,GAAIpuB,GAAQ,EACRm/S,EAAW,EACXpmT,EAASzW,MAAMslU,EAAWt3U,EAAS89C,IAEhCpuB,EAAQ1vB,GACbyoB,EAAOomT,KAAc0I,EAAUp4R,EAAOzvB,EAAQA,GAASouB,EAEzD,OAAOr1B,GA9CT,GAAI8uT,GAAY,EAAQ,KACpBzrG,EAAiB,EAAQ,KACzB5yC,EAAY,EAAQ,KAGpBo+I,EAAah7S,KAAKssG,KAClBuwD,EAAY78J,KAAKC,GA2CrBl9B,GAAOD,QAAU2B,Gr1ByovGX,SAAU1B,EAAQD,Gs1BjrvGxB,QAASm4U,GAAUp4R,EAAOwlC,EAAOC,GAC/B,GAAIl1D,IAAS,EACT1vB,EAASm/C,EAAMn/C,MAEf2kF,GAAQ,IACVA,GAASA,EAAQ3kF,EAAS,EAAKA,EAAS2kF,GAE1CC,EAAMA,EAAM5kF,EAASA,EAAS4kF,EAC1BA,EAAM,IACRA,GAAO5kF,GAETA,EAAS2kF,EAAQC,EAAM,EAAMA,EAAMD,IAAW,EAC9CA,KAAW,CAGX,KADA,GAAIl8D,GAASzW,MAAMhS,KACV0vB,EAAQ1vB,GACfyoB,EAAOiH,GAASyvB,EAAMzvB,EAAQi1D,EAEhC,OAAOl8D,GAGTppB,EAAOD,QAAUm4U,Gt1BisvGX,SAAUl4U,EAAQD,EAASH,GAEjC,Yu1B/tvGA,SAASu4U,GAAiBH,GAAM,MAAQA,IAAqB,gBAAPA,IAAoB,WAAaA,GAAMA,EAAY,QAAIA,EAM7G,QAAS9zU,GAAgBC,EAAKC,EAAKC,GAYjC,MAXID,KAAOD,GACTrD,OAAOsC,eAAee,EAAKC,GACzBC,MAAOA,EACPf,YAAWA,EACXD,cAAaA,EACbiB,UAASA,IAGXH,EAAIC,GAAOC,EAGNF,EAGT,QAASyZ,GAAeC,EAAUC,GAChCD,EAAS9c,UAAYD,OAAOid,OAAOD,EAAW/c,WAC9C8c,EAAS9c,UAAUid,YAAcH,EACjCA,EAASI,UAAYH,EAIvB,QAASs6T,GAAep3P,EAAoBq3P,EAA2Bj4P,GAarE,QAASr+D,GAAea,GACtB,MAAOA,GAAiBK,aAAeL,EAAiB3f,MAAQ,YAblE,GAAkC,kBAAvB+9E,GACT,KAAM,IAAIr/E,OAAM,gDAGlB,IAAyC,kBAA9B02U,GACT,KAAM,IAAI12U,OAAM,uDAGlB,aAAWy+E,GAAgE,kBAArBA,GACpD,KAAM,IAAIz+E,OAAM,kEAOlB,OAAO,UAAcihB,GAQnB,QAAS01T,KACPl1T,EAAQ49D,EAAmBu3P,EAAiB5nT,IAAI,SAAU2xC,GACxD,MAAOA,GAAS9jD,SAGdg6T,EAAWziT,UACbsiT,EAA0Bj1T,GACjBg9D,IACTh9D,EAAQg9D,EAAiBh9D,IAf7B,GAAgC,kBAArBR,GACT,KAAM,IAAIjhB,OAAM,qDAGlB,IACIyhB,GADAm1T,KAeAC,EAEJ,SAAUj6T,GAGR,QAASi6T,KACP,MAAOj6T,GAAWlN,MAAMsN,KAAMrN,YAAcqN,KAH9Cf,EAAe46T,EAAYj6T,GAQ3Bi6T,EAAWp2P,KAAO,WAChB,MAAOh/D,IAGTo1T,EAAWn2P,OAAS,WAClB,GAAIm2P,EAAWziT,UACb,KAAM,IAAIp0B,OAAM,mFAGlB,IAAI82U,GAAgBr1T,CAGpB,OAFAA,UACAm1T,KACOE,EAGT,IAAI55T,GAAS25T,EAAWz3U,SAyBxB,OAvBA8d,GAAO2C,sBAAwB,SAA+BF,GAC5D,OAAQ+D,EAAa/D,EAAW3C,KAAKH,QAGvCK,EAAO4kQ,mBAAqB,WAC1B80D,EAAiB13U,KAAK8d,MACtB25T,KAGFz5T,EAAO+F,mBAAqB,WAC1B0zT,KAGFz5T,EAAOqF,qBAAuB,WAC5B,GAAImM,GAAQkoT,EAAiBl+T,QAAQsE,KACrC45T,GAAiBv3T,OAAOqP,EAAO,GAC/BioT,KAGFz5T,EAAOG,OAAS,WACd,MAAO05T,GAAet2U,cAAcwgB,EAAkBjE,KAAKH,QAGtDg6T,GACP1iO,EAAMz2F,UAMR,OAJAnb,GAAgBs0U,EAAY,cAAe,cAAgBz2T,EAAea,GAAoB,KAE9F1e,EAAgBs0U,EAAY,YAAaziT,GAElCyiT,GAzHX,GAAI1iO,GAAQ,EAAQ,GAChB4iO,EAAiBP,EAAgBriO,GACjCzwF,EAAe8yT,EAAgB,EAAQ,MAuBvCpiT,IAAiC,mBAAX11B,UAA0BA,OAAO6B,WAAY7B,OAAO6B,SAASE,cAoGvFpC,GAAOD,QAAUq4U,Gv1BuuvGX,SAAUp4U,EAAQD,Gw1Bt2vGxBC,EAAOD,QAAU,SAAsBulB,EAAMC,EAAM4wL,EAASwiI,GAC1D,GAAIphT,GAAM4+K,EAAUA,EAAQh2M,KAAKw4U,EAAgBrzT,EAAMC,SAEvD,aAAIgS,EACF,QAASA,CAGX,IAAIjS,IAASC,EACX,OAAM,CAGR,IAAoB,gBAATD,KAAsBA,GAAwB,gBAATC,KAAsBA,EACpE,OAAM,CAGR,IAAIC,GAAQ1kB,OAAO6I,KAAK2b,GACpBG,EAAQ3kB,OAAO6I,KAAK4b,EAExB,IAAIC,EAAM7kB,SAAW8kB,EAAM9kB,OACzB,OAAM,CAMR,KAAK,GAHDktH,GAAkB/sH,OAAOC,UAAUC,eAAeyiB,KAAK8B,GAGlD6mI,EAAM,EAAGA,EAAM5mI,EAAM7kB,OAAQyrJ,IAAO,CAC3C,GAAIhoJ,GAAMohB,EAAM4mI,EAEhB,KAAKv+B,EAAgBzpH,GACnB,OAAM,CAGR,IAAIw0U,GAAStzT,EAAKlhB,GACdy0U,EAAStzT,EAAKnhB,EAIlB,UAFAmzB,EAAM4+K,EAAUA,EAAQh2M,KAAKw4U,EAAgBC,EAAQC,EAAQz0U,gBAAO,KAE9CmzB,GAAkBqhT,IAAWC,EACjD,OAAM,EAIV,OAAM,Ix1Bg3vGF,SAAU74U,EAAQD,EAASH,Gy1B/3vGjC,QAASi/S,GAAkBx6S,GACzB,MAAiB,QAAVA,YAAkBA,EAG3B,QAASi9J,GAAUn8I,GACjB,SAAKA,GAAkB,gBAANA,IAAsC,gBAAbA,GAAExkB,QACtB,kBAAXwkB,GAAE46I,MAA0C,kBAAZ56I,GAAE3S,OAGzC2S,EAAExkB,OAAS,GAAqB,gBAATwkB,GAAE,IAI/B,QAASqyL,GAASluL,EAAG5C,EAAGwkB,GACtB,GAAIjrC,GAAGmE,CACP,IAAIy6S,EAAkBv1R,IAAMu1R,EAAkBn4R,GAC5C,OAAM,CAER,IAAI4C,EAAEvoB,YAAc2lB,EAAE3lB,UAAW,OAAM,CAGvC,IAAIorJ,EAAY7iI,GACd,QAAK6iI,EAAYzlI,KAGjB4C,EAAIsuL,EAAOz3M,KAAKmpB,GAChB5C,EAAIkxL,EAAOz3M,KAAKumB,GACTqyL,EAAUzvL,EAAG5C,EAAGwkB,GAEzB,IAAIo2H,EAASh4I,GAAI,CACf,IAAKg4I,EAAS56I,GACZ,OAAM,CAER,IAAI4C,EAAE3oB,SAAW+lB,EAAE/lB,OAAQ,OAAM,CACjC,KAAKV,EAAI,EAAGA,EAAIqpB,EAAE3oB,OAAQV,IACxB,GAAIqpB,EAAErpB,KAAOymB,EAAEzmB,GAAI,OAAM,CAE3B,UAEF,IACE,GAAI43M,GAAK5lL,EAAW3I,GAChBwuL,EAAK7lL,EAAWvL,GACpB,MAAOvlB,GACP,OAAM,EAIR,GAAI02M,EAAGl3M,QAAUm3M,EAAGn3M,OAClB,OAAM,CAKR,KAHAk3M,EAAGnvI,OACHovI,EAAGpvI,OAEEzoE,EAAI43M,EAAGl3M,OAAS,EAAGV,GAAK,EAAGA,IAC9B,GAAI43M,EAAG53M,IAAM63M,EAAG73M,GACd,OAAM,CAIV,KAAKA,EAAI43M,EAAGl3M,OAAS,EAAGV,GAAK,EAAGA,IAE9B,GADAmE,EAAMyzM,EAAG53M,IACJ84M,EAAUzvL,EAAEllB,GAAMsiB,EAAEtiB,GAAM8mC,GAAO,OAAM,CAE9C,cAAc5hB,UAAa5C,GA5F7B,GAAIkxL,GAASjlM,MAAM5R,UAAUyR,MACzByf,EAAa,EAAQ,KACrBk6H,EAAc,EAAQ,KAEtB4sD,EAAY/4M,EAAOD,QAAU,SAAU0qF,EAAQC,EAAUx/C,GAG3D,MAFKA,KAAMA,MAEPu/C,IAAWC,IAGJD,YAAkB57B,OAAQ67B,YAAoB77B,MAChD47B,EAAOqnC,YAAcpnC,EAASonC,WAI3BrnC,IAAWC,GAA6B,gBAAVD,IAAyC,gBAAZC,GAC9Dx/C,EAAK27F,OAASp8C,IAAWC,EAAWD,GAAUC,EAS9C8sH,EAAS/sH,EAAQC,EAAUx/C,Mz1Bu+vGhC,SAAUlrC,EAAQD,G01B5/vGxB,QAASuwN,GAAMnsN,GACb,GAAIwF,KACJ,KAAK,GAAIvF,KAAOD,GAAKwF,EAAK9I,KAAKuD,EAC/B,OAAOuF,GAPT5J,EAAUC,EAAOD,QAAiC,kBAAhBe,QAAO6I,KACrC7I,OAAO6I,KAAO2mN,EAElBvwN,EAAQuwN,KAAOA,G11B4gwGT,SAAUtwN,EAAQD,G21BxgwGxB,QAAS+4U,GAAUp1U,GACjB,MAAiD,sBAA1C5C,OAAOC,UAAU67B,SAASz8B,KAAKuD,GAIxC,QAASq1U,GAAYr1U,GACnB,MAAOA,IACY,gBAAVA,IACiB,gBAAjBA,GAAO/C,QACdG,OAAOC,UAAUC,eAAeb,KAAKuD,EAAQ,YAC5C5C,OAAOC,UAAUysD,qBAAqBrtD,KAAKuD,EAAQ,cAjBxD,GAAIs1U,GAEI,sBAFqB,WAC3B,MAAOl4U,QAAOC,UAAU67B,SAASz8B,KAAKmR,aAGxCvR,GAAUC,EAAOD,QAAUi5U,EAAyBF,EAAYC,EAEhEh5U,EAAQ+4U,UAAYA,EAKpB/4U,EAAQg5U,YAAcA,G31B8hwGhB,SAAU/4U,EAAQD,G41BziwGxBA,EAAQ0D,cACQ1D,EAAQg8E,WACpBoE,KAAM,iBACN9C,MAAO,QACPrB,KAAM,OACN4E,KAAM,OACNE,KAAM,OACNxB,OAAQ,SACRD,SAAU,WACVE,MAAO,SAGUx/E,EAAQ88E,gBACzBqE,KAAM,OACNC,QAAS,UACTC,UAAW,aACXtE,IAAK,MACLmE,KAAM,OACNI,SAAU,WACVC,IAAK,MACLvE,WAAY,YACZC,SAAU,UACVC,UAAW,YAGKl9E,EAAQ2/E,eACxB,QAAW,UACX,aAAc,YACd,SAAY,WACZ,MAAS,c51BgjwGP,SAAU1/E,EAAQD,EAASH,GAEjC,Y61BnkwGA,SAAS8+D,MA4BT,QAASu6Q,GAAGtgT,EAAIla,EAASggD,GACvB9/C,KAAKga,GAAKA,EACVha,KAAKF,QAAUA,EACfE,KAAK8/C,KAAOA,MAcd,QAASw4B,GAAYkoE,EAASt1H,EAAOlR,EAAIla,EAASggD,GAChD,GAAkB,kBAAP9lC,GACT,KAAM,IAAIkE,WAAU,kCAGtB,IAAI/b,GAAW,GAAIm4T,GAAGtgT,EAAIla,GAAW0gJ,EAAS1gG,GAC1Cy6Q,EAAMvxR,EAASA,EAAS9d,EAAQA,CAMpC,OAJKs1H,GAAQH,QAAQk6K,GACX/5K,EAAQH,QAAQk6K,GAAKvgT,GAC1BwmI,EAAQH,QAAQk6K,IAAQ/5K,EAAQH,QAAQk6K,GAAMp4T,GADhBq+I,EAAQH,QAAQk6K,GAAKr4U,KAAKigB,IADlCq+I,EAAQH,QAAQk6K,GAAOp4T,EAAUq+I,EAAQF,gBAI7DE,EAUT,QAASg6K,GAAWh6K,EAAS+5K,GACI,KAAzB/5K,EAAQF,aAAoBE,EAAQH,QAAU,GAAItgG,SAC5CygG,GAAQH,QAAQk6K,GAU9B,QAASz6K,KACP9/I,KAAKqgJ,QAAU,GAAItgG,GACnB//C,KAAKsgJ,aAAe,EA3FtB,GAAIvvH,GAAM5uC,OAAOC,UAAUC,eACvB2mD,EAAS,GAkBT7mD,QAAOid,SACT2gD,EAAO39D,UAAYD,OAAOid,OAAO,UAMxB2gD,IAASzgD,YAAW0pC,OA2E/B82G,EAAa19J,UAAU8/J,WAAa,WAClC,GACIj4E,GACA3lF,EAFAksC,IAIJ,IAA0B,IAAtBxwB,KAAKsgJ,aAAoB,MAAO9vH,EAEpC,KAAKlsC,IAAS2lF,GAASjqE,KAAKqgJ,QACtBtvH,EAAIvvC,KAAKyoF,EAAQ3lF,IAAOksC,EAAMtuC,KAAK8mD,EAAS1kD,EAAKuP,MAAM,GAAKvP,EAGlE,OAAInC,QAAOwsD,sBACFne,EAAM3d,OAAO1wB,OAAOwsD,sBAAsBs7B,IAG5Cz5C,GAUTsvH,EAAa19J,UAAU6f,UAAY,SAAmBipB,GACpD,GAAIqvS,GAAMvxR,EAASA,EAAS9d,EAAQA,EAChCw/L,EAAW1qN,KAAKqgJ,QAAQk6K,EAE5B,KAAK7vG,EAAU,QACf,IAAIA,EAAS1wM,GAAI,OAAQ0wM,EAAS1wM,GAElC,KAAK,GAAI14B,GAAI,EAAGC,EAAImpO,EAAS1oO,OAAQy4U,EAAK,GAAIzmU,OAAMzS,GAAID,EAAIC,EAAGD,IAC7Dm5U,EAAGn5U,GAAKopO,EAASppO,GAAG04B,EAGtB,OAAOygT,IAUT36K,EAAa19J,UAAU++J,cAAgB,SAAuBj2H,GAC5D,GAAIqvS,GAAMvxR,EAASA,EAAS9d,EAAQA,EAChCjpB,EAAYjC,KAAKqgJ,QAAQk6K,EAE7B,OAAKt4T,GACDA,EAAU+X,GAAW,EAClB/X,EAAUjgB,OAFM,GAYzB89J,EAAa19J,UAAUupC,KAAO,SAAcT,EAAO4jE,EAAIC,EAAIE,EAAIC,EAAIwrO,GACjE,GAAIH,GAAMvxR,EAASA,EAAS9d,EAAQA,CAEpC,KAAKlrB,KAAKqgJ,QAAQk6K,GAAM,OAAM,CAE9B,IAEI1tT,GACAvrB,EAHA2gB,EAAYjC,KAAKqgJ,QAAQk6K,GACzB1nS,EAAMlgC,UAAU3Q,MAIpB,IAAIigB,EAAU+X,GAAI,CAGhB,OAFI/X,EAAU69C,MAAM9/C,KAAKw4E,eAAettD,EAAOjpB,EAAU+X,OAAGA,IAAC2E,GAErDkU,GACN,IAAK,GAAG,MAAO5wB,GAAU+X,GAAGx4B,KAAKygB,EAAUnC,UAASA,CACpD,KAAK,GAAG,MAAOmC,GAAU+X,GAAGx4B,KAAKygB,EAAUnC,QAASgvF,KACpD,KAAK,GAAG,MAAO7sF,GAAU+X,GAAGx4B,KAAKygB,EAAUnC,QAASgvF,EAAIC,KACxD,KAAK,GAAG,MAAO9sF,GAAU+X,GAAGx4B,KAAKygB,EAAUnC,QAASgvF,EAAIC,EAAIE,KAC5D,KAAK,GAAG,MAAOhtF,GAAU+X,GAAGx4B,KAAKygB,EAAUnC,QAASgvF,EAAIC,EAAIE,EAAIC,KAChE,KAAK,GAAG,MAAOjtF,GAAU+X,GAAGx4B,KAAKygB,EAAUnC,QAASgvF,EAAIC,EAAIE,EAAIC,EAAIwrO,MAGtE,IAAKp5U,EAAI,EAAGurB,EAAO,GAAI7Y,OAAM6+B,EAAK,GAAIvxC,EAAIuxC,EAAKvxC,IAC7CurB,EAAKvrB,EAAI,GAAKqR,UAAUrR,EAG1B2gB,GAAU+X,GAAGtnB,MAAMuP,EAAUnC,QAAS+M,OACjC,CACL,GACImV,GADAhgC,EAASigB,EAAUjgB,MAGvB,KAAKV,EAAI,EAAGA,EAAIU,EAAQV,IAGtB,OAFI2gB,EAAU3gB,GAAGw+D,MAAM9/C,KAAKw4E,eAAettD,EAAOjpB,EAAU3gB,GAAG04B,OAAGA,IAAC2E,GAE3DkU,GACN,IAAK,GAAG5wB,EAAU3gB,GAAG04B,GAAGx4B,KAAKygB,EAAU3gB,GAAGwe,QAAU,MACpD,KAAK,GAAGmC,EAAU3gB,GAAG04B,GAAGx4B,KAAKygB,EAAU3gB,GAAGwe,QAASgvF,EAAK,MACxD,KAAK,GAAG7sF,EAAU3gB,GAAG04B,GAAGx4B,KAAKygB,EAAU3gB,GAAGwe,QAASgvF,EAAIC,EAAK,MAC5D,KAAK,GAAG9sF,EAAU3gB,GAAG04B,GAAGx4B,KAAKygB,EAAU3gB,GAAGwe,QAASgvF,EAAIC,EAAIE,EAAK,MAChE,SACE,IAAKpiF,EAAM,IAAKmV,EAAI,EAAGnV,EAAO,GAAI7Y,OAAM6+B,EAAK,GAAI7Q,EAAI6Q,EAAK7Q,IACxDnV,EAAKmV,EAAI,GAAKrvB,UAAUqvB,EAG1B/f,GAAU3gB,GAAG04B,GAAGtnB,MAAMuP,EAAU3gB,GAAGwe,QAAS+M,IAKpD,OAAM,GAYRizI,EAAa19J,UAAUi2F,GAAK,SAAYntD,EAAOlR,EAAIla,GACjD,MAAOw4E,GAAYt4E,KAAMkrB,EAAOlR,EAAIla,OAYtCggJ,EAAa19J,UAAU09D,KAAO,SAAc50B,EAAOlR,EAAIla,GACrD,MAAOw4E,GAAYt4E,KAAMkrB,EAAOlR,EAAIla,OAatCggJ,EAAa19J,UAAUo2F,eAAiB,SAAwBttD,EAAOlR,EAAIla,EAASggD,GAClF,GAAIy6Q,GAAMvxR,EAASA,EAAS9d,EAAQA,CAEpC,KAAKlrB,KAAKqgJ,QAAQk6K,GAAM,MAAOv6T,KAC/B,KAAKga,EAEH,MADAwgT,GAAWx6T,KAAMu6T,GACVv6T,IAGT,IAAIiC,GAAYjC,KAAKqgJ,QAAQk6K,EAE7B,IAAIt4T,EAAU+X,GAEV/X,EAAU+X,KAAOA,GACf8lC,IAAQ79C,EAAU69C,MAClBhgD,GAAWmC,EAAUnC,UAAYA,GAEnC06T,EAAWx6T,KAAMu6T,OAEd,CACL,IAAK,GAAIj5U,GAAI,EAAG2oF,KAAajoF,EAASigB,EAAUjgB,OAAQV,EAAIU,EAAQV,KAEhE2gB,EAAU3gB,GAAG04B,KAAOA,GACnB8lC,IAAS79C,EAAU3gB,GAAGw+D,MACtBhgD,GAAWmC,EAAU3gB,GAAGwe,UAAYA,IAErCmqE,EAAO/nF,KAAK+f,EAAU3gB,GAOtB2oF,GAAOjoF,OAAQge,KAAKqgJ,QAAQk6K,GAAyB,IAAlBtwP,EAAOjoF,OAAeioF,EAAO,GAAKA,EACpEuwP,EAAWx6T,KAAMu6T,GAGxB,MAAOv6T,OAUT8/I,EAAa19J,UAAUq2F,mBAAqB,SAA4BvtD,GACtE,GAAIqvS,EAUJ,OARIrvS,IACFqvS,EAAMvxR,EAASA,EAAS9d,EAAQA,EAC5BlrB,KAAKqgJ,QAAQk6K,IAAMC,EAAWx6T,KAAMu6T,KAExCv6T,KAAKqgJ,QAAU,GAAItgG,GACnB//C,KAAKsgJ,aAAe,GAGftgJ,MAMT8/I,EAAa19J,UAAUm2F,IAAMunE,EAAa19J,UAAUo2F,eACpDsnE,EAAa19J,UAAUk2F,YAAcwnE,EAAa19J,UAAUi2F,GAK5DynE,EAAa66K,SAAW3xR,EAKxB82G,EAAaA,aAAeA,EAM1Bz+J,EAAOD,QAAU0+J,G71BslwGb,SAAUz+J,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAQrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAZ7Z,GAAIi6C,GAAyCn4D,EAAoB,IAC5G0uD,EAAiD1uD,EAAoB4D,EAAEu0D,GACvEsvI,EAA2CznM,EAAoB,KAC/D25U,EAA4C35U,EAAoB,KAChE45U,EAAwC55U,EAAoB,KAC5D+7L,EAA+C/7L,EAAoB,IACxF4jE,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M81Bt6wG1hBgsF,E,YACF,aAMQ,gEALJz2E,EAKI,EALJA,QAKI,IAJJzvC,eAII,EAJE,OAIF,EAHJ0vC,EAGI,EAHJA,cAGI,IAFJ0hQ,+BAEI,EAFkB,EAElB,EADJC,EACI,EADJA,MACI,kFAEJ,GAAKC,SAAW7hQ,EAChB,EAAK8hQ,eAAiB7hQ,EACtB,EAAK8hQ,kBAAqBrzQ,YAAan+B,GACvC,EAAKyxS,qBAAuBL,EAC5B,EAAKM,QAAUxrL,EAAUmrL,QAAUA,EACnC,EAAKM,mBAAqB,EAAKA,mBAAmBv2T,KAAxB,GAPtB,E91Bq2xGR,MAtbAg/C,GAAU8rF,EAAWI,GAyBrBnrF,EAAa+qF,IACTnqJ,IAAK,qBACLC,MAAO,S81Bh7wGQ41U,GAIf,MAHKt7T,MAAKu7T,mBACNv7T,KAAKu7T,iBAAmB,GAAID,GAAkBt7T,KAAKk7T,mBAEhDl7T,KAAKu7T,oB91Bm7wGZ91U,IAAK,mBACLC,MAAO,W81Bj7wGoB,WAAdqW,EAAc,0DAIrBwjD,EAAkB,0BAChBzJ,EAAqC/5C,EAArC+5C,SAAUhzD,EAA2BiZ,EAA3BjZ,QAAS+7D,EAAkB9iD,EAAlB8iD,aAC3B,IAAK+wF,EAAU4rL,QAAQ38Q,GAEhB,CACH,GAAM48Q,GAAkB7rL,EAAU4rL,QAAQ38Q,EAa1C,IAZI48Q,EAAA,aACAz7T,KAAK2rB,KAAKikH,EAAU7vF,OAAOC,kBAAmBy7Q,EAAA,aAE9CA,EAAA,eACAz7T,KAAK2rB,KAAKikH,EAAU7vF,OAAOG,oBAAqBu7Q,EAAA,eAEhDA,EAAA,cACAz7T,KAAK2rB,KAAKikH,EAAU7vF,OAAOM,mBAAoBo7Q,EAAA,cAE/CA,EAAgBl8Q,IAChBv/C,KAAK2rB,KAAKikH,EAAU7vF,OAAOK,gCAAiCq7Q,EAAgBl8Q,IAEpC,IAAxCp9D,OAAO6I,KAAKywU,GAAiBz5U,OAC7B,MAAOkB,KAAQC,cAhBnBysJ,GAAU4rL,QAAQ38Q,KAmBtB,IAAM/+C,GAAUg2C,EAAS7jC,OACnBypT,EAAWA,8BAA8B57T,CAC/C,OAAO8vI,GAAU+rL,YAAY98Q,KACxB+wF,EAAU+rL,YAAY98Q,GAAiB7+C,KAAK47T,WAAW97T,GAAS0yB,KAAK,SAAAqpS,GAAmB,GAC7EC,GAAqBD,EAArBC,SAAU7xP,EAAW4xP,EAAX5xP,OACZ8xP,EAAe9xP,EAAOrlF,IAAIgrJ,EAAU7vF,OAAOC,mBAC3Cg8Q,EAAe/xP,EAAOrlF,IAAIgrJ,EAAU7vF,OAAOG,qBAC3C+7Q,EAAwBhyP,EAAOrlF,IAAIgrJ,EAAU7vF,OAAOM,oBACpD67Q,EAAwBjyP,EAAOrlF,IAAIgrJ,EAAU7vF,OAAOK,iCACtD+7Q,SACEC,EAAc,QAAdA,GAAclxS,GAChB4oB,IAAoB4nR,GACpBh6U,OAAOmB,aAAas5U,GACpBL,EAASvjP,IAAIwjP,EAAcK,GAC3BxsL,EAAU4rL,QAAQ38Q,GAAlB,YAAmD3zB,EACnD5S,EAAKqT,KAAKikH,EAAU7vF,OAAOC,kBAAmB90B,IAE5CmxS,EAAc,QAAdA,GAAcnxS,GAChB4oB,IAAoB4nR,GACpBh6U,OAAOmB,aAAas5U,GACpBL,EAASvjP,IAAIyjP,EAAcK,GAC3BzsL,EAAU4rL,QAAQ38Q,GAAlB,cAAqD3zB,EACrD5S,EAAKqT,KAAKikH,EAAU7vF,OAAOG,oBAAqBh1B,IAE9CoxS,EAAgB,QAAhBA,GAAgBpxS,GAClB4oB,IAAoB4nR,GACpBh6U,OAAOmB,aAAas5U,GACpBL,EAASvjP,IAAI0jP,EAAuBK,GACpC1sL,EAAU4rL,QAAQ38Q,GAAlB,aAAoD3zB,EACpD5S,EAAKqT,KAAKikH,EAAU7vF,OAAOM,mBAAoBn1B,IAG7CqxS,EAAuB,QAAvBA,GAAuBrxS,GACzB4oB,IAAoB4nR,GACpBh6U,OAAOmB,aAAas5U,GACpBL,EAASvjP,IAAI2jP,EAAuBK,GACpC3sL,EAAU4rL,QAAQ38Q,GAAeU,GAAmBr0B,EACpD5S,EAAKqT,KAAKikH,EAAU7vF,OAAOK,gCAAiCl1B,GA0DhE,OAtDIpoC,KACAq5U,EAAQz6U,OAAOuC,WAAW,WAQtB,GAPAkB,EAAQC,MAAR,oCAAkDkzB,EAAK6iT,qBAAvD,YACArnR,IAAoB4nR,GACpBI,EAASvjP,IAAIwjP,EAAcK,GAC3BN,EAASvjP,IAAIyjP,EAAcK,GAC3BP,EAASvjP,IAAI0jP,EAAuBK,GACpCR,EAASvjP,IAAI2jP,EAAuBK,GAEhCzmR,EAASp6C,QA3EN,gBA2EiC,EAAG,CACvC,GAAM8gU,IAAap3U,MAAO,UAC1BwqJ,GAAU4rL,QAAQ38Q,GAAlB,YAAmD29Q,EACnDlkT,EAAKqT,KAAKikH,EAAU7vF,OAAOC,kBAAmBw8Q,GAElD,GAAI1mR,EAASp6C,QA/EJ,kBA+EiC,EAAG,CACzC,GAAM+gU,IACFr3U,MAAO,UACP66D,MAAQtqC,kBAEZi6H,GAAU4rL,QAAQ38Q,GAAlB,cAAqD49Q,EACrDnkT,EAAKqT,KAAKikH,EAAU7vF,OAAOG,oBAAqBu8Q,GAEpD,GAAI3mR,EAASp6C,QAtFL,iBAsFiC,EAAG,CACxC,GAAMghU,IACFt3U,MAAO,UACP66D,MAAQxpC,MAAO,MAEnBm5H,GAAU4rL,QAAQ38Q,GAAlB,aAAoD69Q,EACpDpkT,EAAKqT,KAAKikH,EAAU7vF,OAAOM,mBAAoBq8Q,GAEnD,GAAI5mR,EAASp6C,QAAQ6jD,IAAoB,EAAG,CACxC,GAAMo9Q,IACFv3U,MAAO,UACP66D,QAEJ2vF,GAAU4rL,QAAQ38Q,GAAeU,GAAmBo9Q,EACpDrkT,EAAKqT,KAAKikH,EAAU7vF,OAAOK,gCAAiCu8Q,KAErC,IAA5BrkT,EAAK6iT,uBAGRrlR,EAASp6C,QA3GE,gBA2GyB,GACpCogU,EAASzjP,GAAG0jP,EAAcK,GAE1BtmR,EAASp6C,QA7GI,kBA6GyB,GACtCogU,EAASzjP,GAAG2jP,EAAcK,GAE1BvmR,EAASp6C,QA/GG,iBA+GyB,GACrCogU,EAASzjP,GAAG4jP,EAAuBK,GAEnCxmR,EAASp6C,QAAQ6jD,IAAoB,GACrCu8Q,EAASzjP,GAAG6jP,EAAuBK,GAEvCzoR,IAAe4nR,GACRG,EAAgB7lR,iBAAiBj6C,EAAQ0G,SAAU1G,S91B67wGlEtW,IAAK,gBACLC,MAAO,S81B17wGGqW,GAAS,UACnB,OAAOiE,MAAK47T,aAAappS,KAAK,SAAAqpS,GAAmB,GACrCC,GAAqBD,EAArBC,SAAU7xP,EAAW4xP,EAAX5xP,MAClB,OAAO4xP,GAAgBpoQ,cAAc13D,EAAQ0G,SAAU1G,GAClDy2B,KAAK,WACFspS,EAASh8Q,KAAKmqB,EAAOrlF,IAAIgrJ,EAAU7vF,OAAOgT,iBAAkB,SAAC7nC,GACzD5S,EAAKqT,KAAKikH,EAAU7vF,OAAOgT,gBAAiB7nC,Y91Bm8wG5DzlC,IAAK,oBACLC,MAAO,S81B97wGO+c,EAAU47C,EAAa9J,EAAW+J,EAAoBC,GACpE,MAAOv+C,MAAK47T,aACPppS,KAAK,SAAAqpS,GAAA,MAAmBA,GAAgBz9Q,kBACrC37C,EACA47C,EACA9J,EACA+J,EACAC,GACF/rB,KAAK,SAAA/nB,GAAA,MAEHtlB,GAAQsN,KAAK,4BAA6BgY,U91Bg8wGlDhlB,IAAK,aACLC,MAAO,S81B57wGAoa,GAAS,WACVg/C,EAAWh/C,EAAUA,wBAAwBA,EAAY,sBAE/D,OADAg0C,KAAegL,GACR9+C,KAAKo7T,QAAQ3iG,KAAKz4N,KAAKg7T,SAAUh7T,KAAKi7T,gBAAgBzoS,KAAK,SAAC8oS,GAE/D,MADAxnR,KAAoBgL,GACbxmC,EAAK+iT,mBAAmBC,Q91Bk8wGnC71U,IAAK,SACLC,MAAO,S81B/7wGJqW,GAAS,WAGN6hO,GAAS59N,KAAK48T,SACpB,OAAO58T,MAAK47T,aACPppS,KAAK,SAAAqpS,GAAmB,GACbC,GAAqBD,EAArBC,SAAU7xP,EAAW4xP,EAAX5xP,OAGZkb,EAAMy4I,EAAQ,eAAiB,WACrC,OAAO,IAAI16O,KAAQ,SAACC,EAASE,GACzB8B,EAAQqN,IAAI2yF,EAAKppF,GACjB8/T,EAAgB12O,GAAKppF,EAAQ0G,SAAU1G,GAClCy2B,KAAK,SAAAqqS,GACF,GAAIj/F,EAAO,CACP,EAAKg/F,UAAYC,EACjB,EAAK36T,UAAU25T,EACf,IAAMiB,GAAap7U,OAAOuC,WAAW,WACjCd,MACD,IAMH,OALA24U,GAASh8Q,KAAKmqB,EAAOrlF,IAAIgrJ,EAAU7vF,OAAOg9Q,oBAAqB,WAC3Dr7U,OAAOmB,aAAai6U,GACpB35U,OAGG04U,EAAgBmB,aAAaH,GAKxC,MAFA15U,MAEO,EAAKy5U,YAEf7rQ,MAAM,SAAA7rE,GACHC,EAAQC,MAAMF,GACd7B,EAAO6B,Y91Bs8wG3BO,IAAK,YACLC,MAAO,S81Bj8wGDqW,GAAS,UACf,OAAKiE,MAAKu7T,kBAAqBv7T,KAAK48T,UAG7B58T,KAAKu7T,iBAAiBjpL,UAAUtyI,KAAK48T,UAAW7gU,GAASy2B,KAAK,sBAF1DtvC,IAAQC,QAAQ6c,S91B08wG3Bva,IAAK,gBACLC,MAAO,W81Bt8wGK,UACZ,OAAIsa,MAAKu7T,kBAAoBv7T,KAAK48T,WAC9B58T,KAAKuL,cACEvL,KAAKu7T,iBACPppL,cAAcnyI,KAAK48T,WACnBpqS,KAAK,WAEF,MADA,GAAKoqS,UAAY,KACjB,IAEH7rQ,MAAM,eAGR7tE,IAAQC,QAAQ6c,S91Bw8wGvBva,IAAK,aACLC,MAAO,S81Bt8wGAqW,GAAS,UAChB,OAAKiE,MAAKu7T,kBAAqBv7T,KAAK48T,WAGpCz3U,EAAQqN,IAAI,aAAcuJ,GACnBiE,KAAKu7T,iBAAiBhpL,WAAWvyI,KAAK48T,UAAW7gU,GAASy2B,KAAK,uBAH3DtvC,IAAQC,QAAQ6c,S91Bg9wG3Bva,IAAK,aACLC,MAAO,W81B38wGE,UACT,OAAKsa,MAAKu7T,kBAAqBv7T,KAAK48T,UAG7B58T,KAAKu7T,iBAAiB0B,iBAAiBj9T,KAAK48T,WAAWpqS,KAAK,sBAFxDtvC,IAAQC,QAAQ6c,S91Bo9wG3Bva,IAAK,SACLC,MAAO,W81Bh9wGF,UACL,OAAIsa,MAAKu7T,kBAAoBv7T,KAAK48T,WAC9B58T,KAAKuL,cACEvL,KAAKu7T,iBACP2B,aAAal9T,KAAK48T,WAClBpqS,KAAK,WAEF,MADA,GAAKoqS,UAAY,KACjB,IAEH7rQ,MAAM,eAER7tE,IAAQC,QAAQ6c,S91Bk9wGvBva,IAAK,OACLC,MAAO,W81Bh9wGJ,UACH,OAAKsa,MAAKu7T,iBAGHv7T,KAAKu7T,iBAAiB4B,WAAWn9T,KAAK48T,WAAWpqS,KAAK,sBAFlDtvC,IAAQC,QAAQ6c,S91By9wG3Bva,IAAK,QACLC,MAAO,W81Br9wGH,UACJ,OAAKsa,MAAKu7T,iBAGHv7T,KAAKu7T,iBAAiB6B,YAAYp9T,KAAK48T,WAAWpqS,KAAK,sBAFnDtvC,IAAQC,QAAQ6c,S91B89wG3Bva,IAAK,OACLC,MAAO,W81B19wGJ,UACH,OAAKsa,MAAKu7T,iBAGHv7T,KAAKu7T,iBAAiB8B,WAAWr9T,KAAK48T,WAAWpqS,KAAK,sBAFlDtvC,IAAQC,QAAQ6c,S91Bm+wG3Bva,IAAK,SACLC,MAAO,W81B/9wGF,UACL,OAAKsa,MAAKu7T,iBAGHv7T,KAAKu7T,iBAAiB+B,aAAat9T,KAAK48T,WAAWpqS,KAAK,sBAFpDtvC,IAAQC,QAAQ6c,S91Bw+wG3Bva,IAAK,QACLC,MAAO,W81Bn+wGP,KAAM,IAAI1C,OAAM,8B91Bu+wGhByC,IAAK,mBACLC,MAAO,W81Bp+wGP,MAAKsa,MAAKu7T,iBAGHv7T,KAAKu7T,iBAAiB5oL,iBAAiB3yI,KAAK48T,WAFxC15U,IAAQC,QAAQ6c,S91B0+wG3Bva,IAAK,sBACLC,MAAO,S81Bt+wGSurJ,GAAY,UAC5B,OAAKjxI,MAAKu7T,iBAGHv7T,KAAKu7T,iBAAiB3oL,oBAAoB5yI,KAAK48T,UAAW3rL,GAAYz+G,KAAK,sBAFvEtvC,IAAQC,QAAQ6c,S91B++wG3Bva,IAAK,YACLC,MAAO,S81B3+wGDm2U,GAAiB,WACfC,EAAqBD,EAArBC,QAAqBD,GAAX5xP,OACXlqC,QAAQ,SAACr6C,EAAOD,GAEnBq2U,EAASzjP,GAAG3yF,EAAO,SAAAwlC,GACf,EAAKS,KAAKlmC,EAAKylC,GACf/lC,EAAQqN,IAAI,iBAAkB/M,EAAKylC,OAG3ClrB,KAAKu9T,mBAAqB,WACtBzB,EAASrjP,yB91Bm/wGbhzF,IAAK,cACLC,MAAO,W81B/+wGHsa,KAAKu9T,qBACLv9T,KAAKu9T,qBACLv9T,KAAKu9T,mBAAqB,S91Bo/wG9B93U,IAAK,OACLb,IAAK,W81Bt0xGL,MAAOssJ,KAAW1iJ,O91B00xGlB/I,IAAK,kBACLb,IAAK,W81Bv0xGL,MAAOob,MAAKu7T,oB91B20xGZ91U,IAAK,WACLb,IAAK,W81Bx0xGL,MAAOob,MAAK48T,a91B40xGZn3U,IAAK,YACLb,IAAK,W81Bz0xGL,MAAOrB,UAAS87E,cAAcr/D,KAAK48T,e91B80xGhChtL,G81B52xGaD,IAwWxBC,GAAUmrL,OAAS,GAAIyC,KAEvB5tL,EAAU+rL,eACV/rL,EAAU4rL,WAEV5rL,EAAU7vF,QACNgT,gBAAiB,kBACjB7S,oBAAqB,sBACrBF,kBAAmB,oBACnB8uI,eAAgB,iBAChBiuI,mBAAoB,qBACpB9tI,aAAc,eACdwuI,aAAc,eACdC,aAAc,eACdC,WAAY,aACZC,aAAc,eACd1uI,eAAgB,iBAChB2uI,qBAAsB,uBACtB9uI,oBAAqB,sBACrB+uI,aAAc,eACd9uI,iBAAkB,mBAClB+uI,wBAAyB,0BACzBC,uBAAwB,yBACxB39Q,mBAAoB,qBACpB49Q,uBAAwB,yBACxBC,yBAA0B,2BAC1BC,uBAAwB,yBACxBC,wBAAyB,0BACzBC,kCAAmC,oCACnCC,uCAAwC,yCACxCC,iCAAkC,mCAClCC,gCAAiC,kCACjCC,oCAAqC,sCACrCC,8BAA+B,gCAC/BC,iCAAkC,mCAClCv+Q,gCAAiC,mCAGtBwvF,Q91BwgxGcpuJ,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YAKA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAJ3F,GAAIk7B,GAAyCn4D,EAAoB,IAC7D0uD,EAAiD1uD,EAAoB4D,EAAEu0D,GAC5FyL,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M+1Bn6xG1hB45Q,E,WACF,aAAc,UACVx9T,KAAK4+T,a/1Bs9xGT,MAvCA/5Q,GAAa24Q,IACT/3U,IAAK,OACLC,MAAO,W+1B/6xGuD,GAA7D4X,GAA6D,uDAAtD,iCAAkCW,EAAoB,uDAAV,QACpD,OACI+B,MAAK4+T,UAAU3gU,KACd+B,KAAK4+T,UAAU3gU,GAAW,GAAI/a,KAAQ,SAACC,EAASE,GAC7C,GAAI3B,OAAOm9U,4BAA8Bn9U,OAAOm9U,2BAA2B5gU,GACvE9a,EAAQzB,OAAOm9U,2BAA2B5gU,QACvC,CAEH,GAAM21C,GAASt2C,EAAT,WAAwBW,EAAxB,iBACAvb,EAASa,SAASE,cAAc,SACtCf,GAAOkB,SAEPlB,EAAOE,OAAS,WACRlB,OAAO45U,mBACF55U,OAAOm9U,6BACRn9U,OAAOm9U,+BAEXn9U,OAAOm9U,2BAA2B5gU,GAAWvc,OAAO45U,kBAEpDn4U,EAAQzB,OAAOm9U,2BAA2B5gU,KAE1C5a,EAAO,GAAIL,OAAM,2DAIzBN,EAAOC,QAAU,WACbU,EAAO,GAAIL,OAAM,4BAGrBN,EAAOqB,IAAM6vD,EACbrwD,SAASD,KAAKY,YAAYxB,W/1Bs7xGnC86U,I+1B/6xGIA,Q/1Bs7xGT,SAAUn8U,EAAQD,EAASH,GAEjC,Yg2Bh+xGA,SAAS69U,GAAkB1rU,GACzB4M,KAAK5M,QAAUA,EAHjB,GAAI2rU,GAAoB,EAAQ,IAMhCD,GAAkB18U,UAAY,GAAIY,OAClC87U,EAAkB18U,UAAUkC,KAAO,oBAEnCjD,EAAOD,QAAU,SAAUq1B,EAAM1a,GAC/B,GAAqB,gBAAV0a,GACT,KAAM,IAAIqoT,GAAkB,0BAG9B/iU,GAAUA,KACV,IAAIo6F,QAAMp6F,EAAQq0C,OAAkB,EAAI,CACxC,KACE,MAAOjsC,MAAKoT,MAAMwnT,EAAkBtoT,EAAM/Y,MAAM,KAAKy4F,KACrD,MAAO3zG,GACP,KAAM,IAAIs8U,GAAkB,4BAA8Bt8U,EAAE4Q,WAIhE/R,EAAOD,QAAQ09U,kBAAoBA,Gh2B0+xG7B,SAAUz9U,EAAQD,EAASH,Gi2BjgyGjC,QAAS+9U,GAAiBh3S,GACxB,MAAOg6E,oBAAmBi9N,EAAKj3S,GAAKjb,QAAQ,OAAQ,SAAU5oB,EAAGH,GAC/D,GAAIopB,GAAOppB,EAAE4xJ,WAAW,GAAG33H,SAAS,IAAIy2B,aAIxC,OAHItnC,GAAKprB,OAAS,IAChBorB,EAAO,IAAMA,GAER,IAAMA,KARjB,GAAI6xT,GAAO,EAAQ,IAYnB59U,GAAOD,QAAU,SAAS4mC,GACxB,GAAIqkG,GAASrkG,EAAIjb,QAAQ,KAAM,KAAKA,QAAQ,KAAM,IAClD,QAAQs/G,EAAOrqI,OAAS,GACtB,IAAK,GACH,KACF,KAAK,GACHqqI,GAAU,IACV,MACF,KAAK,GACHA,GAAU,GACV,MACF,SACE,KAAM,4BAGV,IACE,MAAO2yM,GAAiB3yM,GACxB,MAAOnnI,GACP,MAAO+5U,GAAK5yM,Mj2B4gyGV,SAAUhrI,EAAQD,Gk2BniyGxB,QAAS89U,GAAsB9rU,GAC7B4M,KAAK5M,QAAUA,EAMjB,QAASowS,GAAU97P,GACjB,GAAI1f,GAAMP,OAAOigB,GAAO36B,QAAQ,MAAO,GACvC,IAAIib,EAAIhmC,OAAS,GAAK,EACpB,KAAM,IAAIk9U,GAAsB,oEAElC,KAEE,GAAYC,GAAItnI,EAAZunI,EAAK,EAAe3xL,EAAM,EAAGphB,EAAS,GAE1CwrE,EAAS7vK,EAAIZ,OAAOqmH,MAEnBoqD,IAAWsnI,EAAKC,EAAK,EAAS,GAALD,EAAUtnI,EAASA,EAG3CunI,IAAO,GAAK/yM,GAAU5kG,OAAOunB,aAAa,IAAMmwR,KAAQ,EAAIC,EAAK,IAAM,EAGzEvnI,EAASi3E,EAAMpzQ,QAAQm8L,EAEzB,OAAOxrE,GA5BT,GAAIyiJ,GAAQ,mEAMZowD,GAAsB98U,UAAY,GAAIY,OACtCk8U,EAAsB98U,UAAUkC,KAAO,wBAyBvCjD,EAAOD,QAA4B,mBAAXM,SAA0BA,OAAOu9U,MAAQv9U,OAAOu9U,KAAKn6T,KAAKpjB,SAAW8hT,Gl2BijyGvF,SAAUniT,EAAQD,EAASH,GAEjC,Ym2BtlyGAkB,QAAOsC,eAAerD,EAAS,cAC7BsE,OAAMA,GAGR,IAAI25U,GAAU,EAAQ,KAElBC,EAEJ,SAAgC95U,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,IAFjD65U,EAItCj+U,GAAQqtD,QAAU6wR,EAAS7wR,QAC3BptD,EAAOD,QAAUA,EAAiB,Sn2B6lyG5B,SAAUC,EAAQD,EAASH,GAEjC,Yo2B1lyGA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAiBvF,QAASg3L,GAAOlgL,EAAInZ,EAASE,GACzB,GAAIuwD,GAAM2rR,EAAwB,iBAAmBjjU,CACrDkjU,GAA4B/wR,QAAQ7pD,IAAIgvD,GAAKuiI,kBAAkBrlJ,IAAI,2BAA4B2uS,GAAe74P,IAAI,SAAU1hF,EAAK4iI,GAC7H,GAAI5iI,IAAQ4iI,EAAI/zH,GACZ1Q,EAAO6B,OACJ,CACH,GAAIkzE,GAAM0vD,GAAOA,EAAI7nE,IACrBy/Q,GAASC,QAASvpT,KAAMgiD,EAAK97D,GAAI87D,EAAI97D,GAAI2gK,UAAW/sH,KAAKl9C,QACzD7P,EAAQi1E,MAKpB,QAASskH,GAAYpgL,GACjB,MAAKgzE,GAAQ1pD,KAAKtpB,GAIX,GAAIsjU,GAAWnxR,QAAQ,SAAUtrD,EAASE,GAC7Cq8U,EAASljJ,SAAShqJ,KAAK,SAAUgiE,GAC7B,GAAIp8B,GAAMo8B,GAASA,EAAMp+E,KACrBypT,EAAe3vR,KAAKl9C,MAAQwhG,EAAMyoE,UAA6B,GAAjB6iK,EAAsB,GAC5D,QAAR1nQ,GAAgBA,EAAI97D,KAAOA,GAAMujU,EACjCrjJ,EAAOlgL,EAAInZ,EAASE,GAEpBF,EAAQi1E,KAEbrH,MAAM,WACLyrH,EAAOlgL,EAAInZ,EAASE,OAbjBu8U,EAAWnxR,QAAQprD,OAAO,GAAIL,OAAM,iBAkBnD,QAAS+8U,GAAuBzjU,EAAI0jU,GAChC,IAAK1wP,EAAQ1pD,KAAKtpB,GACd,MAAOsjU,GAAWnxR,QAAQprD,OAAO,GAAIL,OAAM,gBAG/C,IAAI4wD,GAAMqsR,EAAqB,iBAAmB3jU,EAAK,WACvD,OAAOkjU,GAA4B/wR,QAAQ+nI,KAAK5iI,GAAKuiI,kBAAkBrlJ,IAAI,2BAA4B2uS,GAAenrN,KAAK0rN,GAAU58U,UAGzI,QAAS65L,KACL,GAAI78K,GAAOzN,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,GAAK61G,EAC3E03N,EAAoB9/T,EAAK88K,aACzBA,WAAegjJ,EAAkC13N,EAAsB00E,aAAegjJ,EACtFC,EAAqB//T,EAAKggU,cAC1BA,WAAgBD,EAAmC33N,EAAsB43N,cAAgBD,CAE7F,OAAMngU,gBAAgBi9K,IAGtBwiJ,EAAgBviJ,EAChB4iJ,EAAiBM,EACjBV,EAAW,GAAIW,GAAU5xR,QAAQqxR,GAC1B9/T,MALI,GAAIi9K,IAASC,aAAcA,EAAckjJ,cAAeA,IAnFvEj+U,OAAOsC,eAAerD,EAAS,cAC3BsE,OAAMA,GAGV,IAAI46U,GAA6B,EAAQ,KAErCd,EAA8B3jQ,EAAuBykQ,GAErDC,EAAY,EAAQ,IAEpBX,EAAa/jQ,EAAuB0kQ,GAEpCC,EAAW,EAAQ,KAEnBH,EAAYxkQ,EAAuB2kQ,GAInCjB,EAAwB,2BACxBU,EAAqB,gCAGrB3wP,EAAU,YAEVk5B,GACA00E,aALwB,oBAMxBkjJ,cALwB,IAQxBX,SACAK,SACAJ,QA4DJziJ,GAAO76L,UAAUs6L,YAAc,SAAUpgL,EAAIm6B,GACzC,MAAOimJ,GAAYpgL,GAAIo2B,IAAI,SAAU0lC,GACT,kBAAb3hC,IAAyBA,EAAS2hC,MAIrD6kH,EAAO76L,UAAUq+U,qBAAuB,SAAUnkU,EAAIm6B,GAClD,MAAOimJ,GAAYpgL,GAAIk2B,KAAK,SAAU4lC,GAClC,GAAIX,GAAUW,GAAOA,EAAIX,QACrBqlB,EAAWrlB,GAAWA,EAAQqlB,QAElC,OAA+B,OADLA,GAAYA,EAASQ,gBAAkBR,EAASQ,eAAe53F,SAE1FqrE,MAAM,WACL,OAAM,IACPr+B,IAAI,SAAU4qD,GACW,kBAAb7mD,IACPA,EAAS6mD,MAKrB2/F,EAAO76L,UAAUs+U,wBAA0B,SAAUpkU,EAAI4iH,EAAWzoF,GAChE,GAAIkqS,IAAuBzhN,EAAY,IAAM,KAAKjhG,WAE9C+hT,GACAljP,UACIQ,gBACI53F,MAAOi7U,EACPC,iBAAkBnB,EAClBoB,eAAgB3wR,KAAKl9C,QAKjC,OAAO+sU,GAAuBzjU,EAAI0jU,GAAUttS,IAAI,SAAUxtC,EAAK4iI,GACnC,kBAAbrxF,IACPA,EAASvxC,EAAK4iI,KAEnB/2D,MAAM,WACL,OAAM,IACP27H,QAAQ,WACPzP,EAAO76L,UAAU0+U,qBAAqBd,EAASljP,aAIvDmgG,EAAO76L,UAAU0+U,qBAAuB,SAAUhkP,GAC9C,GAAIQ,GAAiBR,EAASQ,cAC9BoiP,GAASljJ,SAAShqJ,KAAK,SAAUgiE,GAC7B,GAAIp8B,GAAMo8B,GAASA,EAAMp+E,IAEzBj0B,QAAO6I,KAAKsyF,GAAgBv9C,QAAQ,SAAUt6C,GAC1C2yE,EAAIX,QAAQqlB,SAASQ,eAAe73F,GAAO63F,EAAe73F,KAE9Di6U,EAASC,QAASvpT,KAAMgiD,EAAK97D,GAAI87D,EAAI97D,GAAI2gK,UAAW/sH,KAAKl9C,UAC1D+9D,MAAM,eAGbksH,EAAO76L,UAAU2+U,gBAAkB,SAAUzkU,EAAIm6B,GAC7C,QAASuqS,GAAOC,GACZ,MAAOA,GAAWjkP,SAAS6oB,MAAQo7N,EAAWjkP,SAAS3gC,MAG3D,QAAS6kR,GAAYD,GACjB,MAAIA,GAAWjkP,SAAS6oB,KACbo7N,EAAWjkP,SAAS6oB,KAAK+T,IACzBqnN,EAAWjkP,SAAS3gC,MACpB4kR,EAAWjkP,SAAS3gC,MAAMu9D,IAE9B,KAGX,MAAO8iE,GAAYpgL,GAAIk2B,KAAK,SAAU4lC,GAElC,OADkBA,GAAOA,EAAI+kB,aACVtnE,OAAOmrT,GAAQhvT,IAAIkvT,KACvCnwQ,MAAM,WACL,WACDr+B,IAAI,SAAUm5E,GACW,kBAAbp1E,IACPA,EAASo1E,MAKrBzqH,EAAQqtD,QAAUwuI,EAClB57L,EAAOD,QAAUA,EAAiB,Sp2BinyG5B,SAAUC,EAAQD,EAASH,aq2BlyyGjC,GAEA,GAAIiC,GAAU,EAAQ,IAGlByyN,EAAat0N,EAAOD,QAAU,EAAQ,KACtCsxL,EAAUijC,EAAWjjC,OAEzB,KACExvL,EAAQ6V,QAENsmB,cAAaA,IAEf,MAAO78B,GACP2C,EAAQyN,MACN,yCACA,2DACA,gDACA,yCAAyCqf,KAAK,MAEhD9sB,EAAQyN,KAAKpQ,EAAE+Q,OAIjB,GAAIqiN,GAAyB,SAASxiN,EAASywG,GAC7C,GAAItwG,EACJyM,MAAK5M,QAAUA,EACf4M,KAAK1b,KAAO,yBACZ0b,KAAK6jG,cAAgBA,EAEjB7gH,MAAMqlC,mBACRrlC,MAAMqlC,kBAAkBroB,KAAMA,KAAKX,aACnC9L,EAAQyM,KAAKzM,OAGbA,EAAQ,GAAKvQ,OAAMoQ,GAAUG,MAG3BpR,OAAOsC,gBACTtC,OAAOsC,eAAeub,KAAM,SAC1Bpb,IAAK,WACH,MAAIob,MAAK6jG,cACAtwG,EAAQ,iBAAmByM,KAAK6jG,cAActwG,MAGhDA,KAMfqiN,GAAuBxzN,UAAY,GAAIY,OACvC4yN,EAAuBxzN,UAAUid,YAAcu2M,EAC/CD,EAAWC,uBAAyBA,EAgBpCljC,EAAQtwL,UAAUgB,QAAU,WAC1B,GACIgC,GADA2sL,EAAM/xK,IAGV,OAAO,IAAI9c,GAAQ,SAASC,EAASE,EAAQsgC,GACzCouJ,EAAInrG,IAAI,SAAS1hF,EAAK4iI,GACpB,YAAWA,GAA+B,OAARA,GAAgBA,EAAIx6E,QAAU,IAAK,CACnE,GAAItnB,GAAM,UAAY+rJ,EAAInmJ,OAAS,IAAMmmJ,EAAIn+H,IAAM,KAAOk0E,EAAIx6E,OAAS,GACvEloD,GAAQ,GAAIwwN,GAAuB5vL,GACnC5gC,EAAMkoD,OAASw6E,EAAIx6E,OACnBloD,EAAM66D,KAAO6nE,EAAI7nE,KACjB76D,EAAM0iI,IAAMA,EACZzkI,EAAO+B,OACEF,GACT7B,EAAO,GAAIuyN,GAAuB,cAAe1wN,IAEjD/B,EAAQ2kI,KAIY,kBAAbnkG,IACTA,EAAS,WACPouJ,EAAIkE,aAiBdvD,EAAQtwL,UAAUowC,KAAO,WACvB,GAAIpvC,GAAU4c,KAAK5c,SACnB,OAAOA,GAAQovC,KAAK9/B,MAAMtP,EAASuP,YAarC+/K,EAAQtwL,UAAU2uE,MAAQ,WACxB,GAAI3tE,GAAU4c,KAAK5c,SACnB,OAAOA,GAAQ2tE,MAAMr+D,MAAMtP,EAASuP,cr2BuyyGTnR,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,GAEjC,cAAa,Ss2B16yGb,GAgBA,QAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAdhH/7B,OAAOsC,eAAerD,EAAS,cAC3BsE,OAAMA,IAEVtE,EAAQ+/U,YAAc//U,EAAQggV,2BAE9B,IAAIv8Q,GAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,MAG5hB28Q,EAAY,EAAQ,IAEpBX,EAEJ,SAAgCp6U,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,IAF/C+6U,GAOpCa,EAAuBhgV,EAAQggV,qBAAuB,aACtDD,EAAc//U,EAAQ+/U,aACtBE,KAAM,OACNC,cAAe,iBAGfC,GACAjqT,QAAS,SAAiB7xB,GACtB,MAAOm6U,GAAWnxR,QAAQtrD,QAAQghB,KAAKoT,MAAMtjB,EAAOojB,aAAaC,QAAQ7xB,MAE7EqlF,QAAS,SAAiBrlF,EAAKC,GAC3BuO,EAAOojB,aAAayzD,QAAQrlF,EAAK0e,KAAKC,UAAU1e,MAQpDiB,EAAU,WAKV,QAASA,KACL,GAAI8vF,GAAa9jF,UAAU3Q,OAAS,YAAK2Q,UAAU,GAAmBA,UAAU,GAAK,EAErF+wD,GAAgB1jD,KAAMrZ,GAEtBqZ,KAAKy2E,WAAaA,EAElBz2E,KAAKu9S,YAAc4jB,EAAYG,cAoEnC,MA5DAz8Q,GAAal+D,IACTlB,IAAK,mBACLC,MAAO,WACCsa,KAAKu9S,cAAgB4jB,EAAYE,MAAQ3/U,QAAUA,OAAO2uB,MAAQ3uB,OAAO2uB,KAAKmxT,iBAC9ExhU,KAAKu9S,YAAc4jB,EAAYE,KAC/BrhU,KAAKyhU,YAAcpxT,KAAKmxT,eAAeE,uBAI/Cj8U,IAAK,SACLC,MAAO,WACH,GAAIqa,GAAQC,IAGZ,OADAA,MAAK2hU,mBACD3hU,KAAKu9S,cAAgB4jB,EAAYE,KAC1B,GAAIzB,GAAWnxR,QAAQ,SAAUtrD,EAASE,GAC7C,GAAImxG,GAAQz0F,EAAM0hU,YAAYnqT,QAAQ8pT,GAClChpQ,EAAMo8B,GAASA,EAAMp+E,IACrBgiD,IAEAmpQ,EAAGz2P,QAAQs2P,GACPhrT,KAAMgiD,EACN97D,GAAI87D,EAAI97D,GACR2gK,UAAW/sH,KAAKl9C,QAEpB7P,EAAQqxG,IAERnxG,EAAO,GAAIL,OAAM,sBAItBu+U,EAAGjqT,QAAQ8pT,MAQtB37U,IAAK,SACLC,MAAO,SAAgB0yE,GACnBp4D,KAAK2hU,mBAELJ,EAAGz2P,QAAQs2P,GACPhrT,KAAMgiD,EAAIhiD,KACV9Z,GAAI87D,EAAI97D,GACR2gK,UAAW/sH,KAAKl9C,QAIhBgN,KAAKu9S,cAAgB4jB,EAAYE,MACjCrhU,KAAKyhU,YAAY32P,QAAQs2P,GACrBhrT,KAAMgiD,EAAIhiD,KACV9Z,GAAI87D,GAAOA,EAAI97D,GACfslU,WAAUA,GAAK1xR,OAAOijE,UAA8B,IAAlBnzG,KAAKy2E,iBAMhD9vF,IAGXvF,GAAQqtD,QAAU9nD,It2B46yGWnF,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQiE,EAAqBrE,GAE7C,cAAa,Su2B3izGb,GAYe,eAA+E,GAA9E4gV,GAA8E,0DAAhE/xQ,EAAgE,0DAAjDw1C,EAAiD,uDAApC,GAAIppG,EAAgC,uDAAzB,KAAMrC,EAAmB,uDAAT,KAC7EioU,EAAchyQ,EACdiyQ,SACA5zN,EAAS,EAEb,KAAK0zN,EAED,MADA18U,GAAQC,MAAM,uEACP,EAIe,iBAAfkgH,IAAiD,KAAtBA,EAAW/hB,QAAiBu+O,EAAY9/U,SAC1E+/U,EAAqBD,EAAY9vT,IAAI,SAAA69C,GAAA,MAAUA,GAAV,IAAiBy1C,EAAWjvF,iBAGjEriB,MAAM+c,QAAQgxT,KACdD,EAAcC,EAGlB,IAAMnuR,GAAMiuR,EAAQC,EAAY,KAAOD,EAAQlzU,SAQ/C,UAPuD,IAA3BilD,EAAIl4C,QAAQ,YAEM,gBAAZ7B,IAAkD,OAA1BA,EAAQwc,eACpD,OAATna,GAA0B,OAATA,IAClBiyG,GAAgC,IAAtBv6D,EAAIl4C,QAAQ,KAAb,WAAuCQ,EAAvC,IAA+CrC,EAA/C,WAAsEqC,EAAtE,IAA8ErC,GAG3F,GAAU+5C,EAAMu6D,Kv2BqjzGS3sH,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,KAMlB,SAAUC,EAAQD,EAASH,GAEjC,Yw2BrmzGA,IAAI+gV,GAAa,EAAQ,KAAWC,EAAW,EAAQ,IAEvDD,GAAoB,QAAE5zN,gBAAgB6zN,EAAkB,SACxDD,EAAoB,QAAE/vN,cAAgB,KAEtC7wH,EAAiB,QAAI4gV,EAAoB,Sx2B+mzGnC,SAAU3gV,EAAQD,EAASH,GAEjC,Yy2B3mzGA,SAASihV,GAAc9uU,EAASm9G,EAASY,GAErC,GAAIgxN,GAAyB,gBAAZ/uU,GACT8uU,EAAcE,QAAQhvU,GAAWA,CAEzC,KAAM+uU,GAAoB,yBAAbA,EAAIz+U,KACb,KAAM,IAAIw6B,WAAU,iDAKxBizF,GAAUnxG,KAAKqiU,cAAcH,EAAc/wN,QAASA,GAGpDmxN,EAAU79U,eAAeub,KAAM,WAAata,MAAOsa,KAAKwwG,eAAeD,IAKvE,IAAIyG,GAAWh3G,KAAK0wG,wBAAwB1wG,KAAKqqH,SAC7CjpB,EAAWphG,KAAKmhG,gBAAgBghO,EAAK5xN,EAASY,EAAS6F,GAIvDurN,EAAgBviU,IACpBA,MAAK1M,OAAS,SAAUkgB,GACtB,IACE,MAAO+uT,GAAcC,QAAQphO,EAAS5tF,GACtC,MAAOhxB,GACP,KAAIA,GAAEigV,WACE,GAAIz/U,OACR,qCAAwCR,EAAEigV,WAAa,qCAChBrvU,EAAU,KAG7C5Q,IAxChB,GAAIkgV,GAAc,EAAQ,KAAYJ,EAAY,EAAQ,KAAUK,EAAiB,EAAQ,KAAeC,EAA8B,EAAQ,IAClJxhV,GAAiB,QAAI8gV,EAgDrBI,EAAU79U,eAAey9U,EAAe,WACpCv9U,YAAWA,EAEXe,OACIkzE,QACI,UACIyC,MAAO,YAGX,SACIA,MAAO,YAIfJ,MACI,OACIg2C,MAAO,UACPD,IAAO,UACPiF,KAAO,WAGX,QACIhF,MAAO,QACPD,IAAO,UACPiF,KAAO,WAGX,MACIhF,MAAO,OACPD,IAAO,UACPiF,KAAO,WAGX,MACIF,QAAS,OACT9E,MAAS,OACTD,IAAS,UACTiF,KAAS,YAIjBpjH,MACI,OACIs0E,KAAQ,UACR4pC,OAAQ,WAGZ,QACI5pC,KAAQ,UACR4pC,OAAQ,UACRD,OAAQ,WAGZ,MACI3pC,KAAc,UACd4pC,OAAc,UACdD,OAAc,UACdoF,aAAc,SAGlB,MACI/uC,KAAc,UACd4pC,OAAc,UACdD,OAAc,UACdoF,aAAc,aAO9BosN,EAAU79U,eAAey9U,EAAe,kBAAmBx8U,MAAO48U,EAAUO,UAAU,QACtFP,EAAU79U,eAAey9U,EAAe,mBAAoBx8U,MAAO,SAAUohD,GACzE,IAAMA,IAAQA,EAAKqnE,OACf,KAAM,IAAInrH,OACN,2EAKRk/U,GAAczzN,eAAe3nE,EAAKqnE,OAAO93F,eAAiBywB,KAI9Dw7R,EAAU79U,eAAey9U,EAAe,WAAYx8U,MAAOk9U,EAAqC,QAAErrT,QAIlG+qT,EAAU79U,eAAey9U,EAAe,iBACpCv9U,YAAWA,EACXgB,YACAD,eAGJw8U,EAAc9/U,UAAUsyT,gBAAkB,WAEtC,OACIvmM,OAAQnuG,KAAKqqH,UAIrB63M,EAAc9/U,UAAU++G,gBAAkB,SAAUghO,EAAK5xN,EAASY,EAAS6F,GAEvE,MADe,IAAI2rN,GAAwB,QAAEpyN,EAASY,EAAS6F,GAC/C8rN,QAAQX,IAG5BD,EAAc9/U,UAAUsuH,wBAA0B,SAAUvC,GAMxD,IALA,GAAID,GAAag0N,EAAczzN,eAC3B3nE,EAAaonE,EAAWC,EAAO93F,eAI5BywB,GAAM,CACT,GAAIA,EAAKi8R,mBACL,MAAOj8R,GAAKi8R,kBAGhBj8R,GAAOA,EAAKmyF,cAAgB/qB,EAAWpnE,EAAKmyF,aAAa5iH,eAG7D,KAAM,IAAIrzB,OACN,iFAC+BmrH,IAIvC+zN,EAAc9/U,UAAUogV,QAAU,SAAUphO,EAAS5tF,GACjD,GACIlyB,GAAGuxC,EAAKknF,EAAMz9G,EAAI5W,EAAOR,EADzBulB,EAAS,EAGb,KAAKnpB,EAAI,EAAGuxC,EAAMuuE,EAAQp/G,OAAQV,EAAIuxC,EAAKvxC,GAAK,EAI5C,GAAoB,iBAHpBy4H,EAAO3Y,EAAQ9/G,IAGf,CAQA,GAHAgb,EAAKy9G,EAAKz9G,IAGJkX,IAAUkvT,EAAY5vG,IAAItxO,KAAKgyB,EAAQlX,GAG3C,KAFApX,GAAM,GAAIlC,OAAM,iCAAmCsZ,GACnDpX,EAAIu9U,WAAanmU,EACXpX,CAGRQ,GAAQ8tB,EAAOlX,GAKXy9G,EAAKh+G,QACL0O,GAAUzK,KAAKwiU,QAAQzoN,EAAKipN,UAAUt9U,GAAQ8tB,GAE9C/I,GAAUsvG,EAAKzmH,OAAO5N,OArBtB+kB,IAAUsvG,CAyBlB,OAAOtvG,IAGXy3T,EAAc9/U,UAAUigV,cAAgB,SAAU3nM,EAAUvpB,GACxD,GACIztH,GAAMu/U,EADNC,IAGJ,KAAKx/U,IAAQg3I,GACJgoM,EAAY5vG,IAAItxO,KAAKk5I,EAAUh3I,KAEpCw/U,EAAcx/U,GAAQu/U,EAAaX,EAAUO,UAAUnoM,EAASh3I,IAE5DytH,GAAWuxN,EAAY5vG,IAAItxO,KAAK2vH,EAASztH,IACzCg/U,EAAY16M,OAAOi7M,EAAY9xN,EAAQztH,IAI/C,OAAOw/U,IAGXhB,EAAc9/U,UAAUouH,eAAiB,SAAUD,GACxB,gBAAZA,KACPA,GAAWA,IAIfA,GAAWA,OAAe19F,OAAOqvT,EAAcjwN,cAE/C,IACI3wH,GAAGuxC,EAAKy7E,EAAaxnE,EADrBonE,EAAag0N,EAAczzN,cAQ/B,KAAKntH,EAAI,EAAGuxC,EAAM09E,EAAQvuH,OAAQV,EAAIuxC,EAAKvxC,GAAK,EAG5C,IAFAgtH,EAAciC,EAAQjvH,GAAG+0B,cAAc3Y,MAAM,KAEtC4wG,EAAYtsH,QAAQ,CAEvB,GADA8kD,EAAOonE,EAAWI,EAAYr8F,KAAK,MAI/B,MAAO60B,GAAKqnE,MAGhBG,GAAY37F,MAIpB,GAAIs/F,GAAgB1B,EAAQ59F,KAC5B,MAAM,IAAI3vB,OACN,2DACAutH,EAAQt+F,KAAK,MAAQ,4BAA8BggG,Kz2BkozGrD,SAAU5wH,EAAQD,EAASH,GAEjC,Y02B34zGA,IAAIyhV,GAAc,EAAQ,KAKtBS,EAAiB,WACjB,IAAM,QAAShhV,OAAOsC,kBAAmB,QACzC,MAAOjC,GAAK,OAAM,MAKlBiC,IAFO0+U,GAAmBhhV,OAAOC,UAAUghV,iBAE1BD,EAAiBhhV,OAAOsC,eACrC,SAAUe,EAAKlB,EAAM8sC,GAErB,OAASA,IAAQ5rC,EAAI49U,iBACrB59U,EAAI49U,iBAAiB9+U,EAAM8sC,EAAKxsC,OACxB89U,EAAY5vG,IAAItxO,KAAKgE,EAAKlB,IAAS,SAAW8sC,MACtD5rC,EAAIlB,GAAQ8sC,EAAK1rC,SAIrBm9U,EAAY1gV,OAAOid,QAAU,SAAU4xB,EAAOnxB,GAG9C,QAASwjU,MAFT,GAAI79U,GAAKuoH,CAGTs1N,GAAEjhV,UAAY4uC,EACdxrC,EAAM,GAAI69U,EAEV,KAAKt1N,IAAKluG,GACF6iU,EAAY5vG,IAAItxO,KAAKqe,EAAOkuG,IAC5BtpH,EAAee,EAAKuoH,EAAGluG,EAAMkuG,GAIrC,OAAOvoH,GAGXpE,GAAQqD,eAAiBA,EAAgBrD,EAAQyhV,UAAYA,G12B25zGvD,SAAUxhV,EAAQD,EAASH,GAEjC,Y22Bj8zGA,SAASqiV,GAAS/yN,EAASY,EAAS6F,GAChCh3G,KAAKuwG,QAAWA,EAChBvwG,KAAKmxG,QAAWA,EAChBnxG,KAAKg3G,SAAWA,EA4IpB,QAASusN,GAAajnU,GAClB0D,KAAK1D,GAAKA,EAWd,QAASknU,GAAalnU,EAAIy6G,EAAYwnB,EAAQxiI,EAASi7G,GACnDh3G,KAAK1D,GAAaA,EAClB0D,KAAK+2G,WAAaA,EAClB/2G,KAAKu+H,OAAaA,EAClBv+H,KAAKjE,QAAaA,EAClBiE,KAAKg3G,SAAaA,EAYtB,QAASysN,GAAmBnnU,EAAIiiI,EAAQmlM,EAAc/qQ,GAClD34D,KAAK1D,GAAeA,EACpB0D,KAAKu+H,OAAeA,EACpBv+H,KAAK0jU,aAAeA,EACpB1jU,KAAK24D,OAAeA,EAWxB,QAASgrQ,GAAarnU,EAAIP,GACtBiE,KAAK1D,GAAUA,EACf0D,KAAKjE,QAAUA,EA/LnB3a,EAAiB,QAAIkiV,EAQrBA,EAASlhV,UAAU0gV,QAAU,SAAUX,GAKnC,MAJAniU,MAAK4jU,eACL5jU,KAAK6jU,cAAqB,KAC1B7jU,KAAK8jU,mBAAqB,KAEnB9jU,KAAK+jU,eAAe5B,IAG/BmB,EAASlhV,UAAU2hV,eAAiB,SAAU5B,GAC1C,IAAMA,GAAoB,yBAAbA,EAAIz+U,KACb,KAAM,IAAIV,OAAM,qDAGpB,IAGI1B,GAAGuxC,EAAK/xB,EAHR64G,EAAWwoN,EAAIxoN,SACfvY,IAIJ,KAAK9/G,EAAI,EAAGuxC,EAAM8mF,EAAS33H,OAAQV,EAAIuxC,EAAKvxC,GAAK,EAG7C,OAFAwf,EAAU64G,EAASr4H,GAEXwf,EAAQpd,MACZ,IAAK,qBACD09G,EAAQl/G,KAAK8d,KAAKgkU,mBAAmBljU,GACrC,MAEJ,KAAK,kBACDsgG,EAAQl/G,KAAK8d,KAAKikU,gBAAgBnjU,GAClC,MAEJ,SACI,KAAM,IAAI9d,OAAM,8CAI5B,MAAOo+G,IAGXkiO,EAASlhV,UAAU4hV,mBAAqB,SAAUljU,GAI9C,MAAId,MAAK6jU,eAAiB,cAAcj+S,KAAK9kB,EAAQpb,QAG5Csa,KAAK8jU,qBACN9jU,KAAK8jU,mBAAqB,GAAI1sN,MAAKK,aAAaz3G,KAAKuwG,UAGlD,GAAIkzN,GACHzjU,KAAK6jU,cAAcvnU,GACnB0D,KAAK6jU,cAAcvwU,OAAOirI,OAC1Bv+H,KAAK8jU,mBACLhjU,EAAQpb,QAIbob,EAAQpb,MAAMqnB,QAAQ,OAAQ,MAGzCu2T,EAASlhV,UAAU6hV,gBAAkB,SAAUnjU,GAC3C,GAAIxN,GAASwN,EAAQxN,MAErB,KAAKA,EACD,MAAO,IAAIiwU,GAAaziU,EAAQxE,GAGpC,IAGIP,GAHAo1G,EAAWnxG,KAAKmxG,QAChBZ,EAAWvwG,KAAKuwG,QAChByG,EAAWh3G,KAAKg3G,QAGpB,QAAQ1jH,EAAO5P,MACX,IAAK,eAED,MADAqY,GAAUo1G,EAAQv4C,OAAOtlE,EAAO+nE,QAE5B/+D,GAAQwE,EAAQxE,GAChBhJ,OAAQ,GAAI8jH,MAAKK,aAAalH,EAASx0G,GAASzI,OAGxD,KAAK,aAED,MADAyI,GAAUo1G,EAAQl2C,KAAK3nE,EAAO+nE,QAE1B/+D,GAAQwE,EAAQxE,GAChBhJ,OAAQ,GAAI8jH,MAAKI,eAAejH,EAASx0G,GAASzI,OAG1D,KAAK,aAED,MADAyI,GAAUo1G,EAAQt+G,KAAKS,EAAO+nE,QAE1B/+D,GAAQwE,EAAQxE,GAChBhJ,OAAQ,GAAI8jH,MAAKI,eAAejH,EAASx0G,GAASzI,OAG1D,KAAK,eAED,MADAyI,GAAUiE,KAAKkkU,eAAepjU,GACvB,GAAI0iU,GACP1iU,EAAQxE,GAAIhJ,EAAOs5H,QAASt5H,EAAOirI,OAAQxiI,EAASi7G,EAG5D,KAAK,eAED,MADAj7G,GAAUiE,KAAKkkU,eAAepjU,GACvB,GAAI6iU,GAAa7iU,EAAQxE,GAAIP,EAExC,SACI,KAAM,IAAI/Y,OAAM,uDAI5BsgV,EAASlhV,UAAU8hV,eAAiB,SAAUpjU,GAC1C,GAAIxN,GAAcwN,EAAQxN,OACtByI,EAAczI,EAAOyI,QACrBooU,IAKJnkU,MAAK4jU,YAAY1hV,KAAK8d,KAAK6jU,eAC3B7jU,KAAK6jU,cAAgC,iBAAhBvwU,EAAO5P,KAA0Bod,EAAU,IAEhE,IAAIxf,GAAGuxC,EAAK0qF,CAEZ,KAAKj8H,EAAI,EAAGuxC,EAAM92B,EAAQ/Z,OAAQV,EAAIuxC,EAAKvxC,GAAK,EAC5Ci8H,EAASxhH,EAAQza,GAGjB6iV,EAAY5mN,EAAO96G,UAAYzC,KAAK+jU,eAAexmN,EAAO73H,MAM9D,OAFAsa,MAAK6jU,cAAgB7jU,KAAK4jU,YAAYjxT,MAE/BwxT,GASXZ,EAAanhV,UAAUkR,OAAS,SAAU5N,GACtC,MAAKA,IAA0B,gBAAVA,GAIG,gBAAVA,GAAqBA,EAAQ+hC,OAAO/hC,GAHvC,IAcf89U,EAAaphV,UAAU4gV,UAAY,SAAUt9U,GACzC,GAAIqW,GAAUiE,KAAKjE,OAKnB,OAHaA,GAAQ,IAAMrW,IACnBqW,EAAQiE,KAAKg3G,SAAStxH,EAAQsa,KAAKu+H,OAAQv+H,KAAK+2G,cAEvCh7G,EAAQi9G,OAU7ByqN,EAAmBrhV,UAAUkR,OAAS,SAAU5N,GAC5C,GAAIkzE,GAAS54D,KAAK0jU,aAAapwU,OAAO5N,EAAQsa,KAAKu+H,OAEnD,OAAOv+H,MAAK24D,OACH5rD,QAAQ,cAAe,KAAO6rD,GAC9B7rD,QAAQ,OAAQ,MAQ7B42T,EAAavhV,UAAU4gV,UAAY,SAAUt9U,GACzC,GAAIqW,GAAUiE,KAAKjE,OACnB,OAAOA,GAAQrW,IAAUqW,EAAQi9G,Q32Bo9zG/B,SAAU33H,EAAQD,EAASH,GAEjC,Y42Bjq0GAG,GAAUC,EAAOD,QAAU,EAAQ,KAAyB,QAC5DA,EAAiB,QAAIA,G52Byq0Gf,SAAUC,EAAQD,EAASH,GAEjC,Y62B5q0GAG,GAAiB,QAAI,WAenB,QAASgjV,GAAgBhxU,EAAS24E,EAAU63I,EAAOtoN,GACjD0E,KAAK5M,QAAWA,EAChB4M,KAAK+rE,SAAWA,EAChB/rE,KAAK4jN,MAAWA,EAChB5jN,KAAK1E,SAAWA,EAChB0E,KAAK1b,KAAW,cAEuB,kBAA5BtB,OAAMqlC,mBACfrlC,MAAMqlC,kBAAkBroB,KAAMokU,GAMlC,QAASC,GAAU38R,GAiLjB,QAASpsC,KACP,MAAOgpU,GAAoBC,GAAcC,IAqB3C,QAASC,GAAsBtuO,GAC7B,GACInyG,GAAG0gV,EADH1+D,EAAU2+D,GAAoBxuO,EAGlC,IAAI6vK,EACF,MAAOA,EAGP,KADAhiR,EAAImyG,EAAM,GACFwuO,GAAoB3gV,IAC1BA,GAUF,KAPAgiR,EAAU2+D,GAAoB3gV,GAC9BgiR,GACEtgP,KAAQsgP,EAAQtgP,KAChBk/S,OAAQ5+D,EAAQ4+D,OAChBC,OAAQ7+D,EAAQ6+D,QAGX7gV,EAAImyG,GACTuuO,EAAKh9R,EAAMtgB,OAAOpjC,GACP,OAAP0gV,GACG1+D,EAAQ6+D,QAAU7+D,EAAQtgP,OAC/BsgP,EAAQ4+D,OAAS,EACjB5+D,EAAQ6+D,WACQ,OAAPH,GAAsB,WAAPA,GAA0B,WAAPA,GAC3C1+D,EAAQtgP,OACRsgP,EAAQ4+D,OAAS,EACjB5+D,EAAQ6+D,YAER7+D,EAAQ4+D,SACR5+D,EAAQ6+D,WAGV7gV,GAIF,OADA2gV,IAAoBxuO,GAAO6vK,EACpBA,EAIX,QAASs+D,GAAoBQ,EAAUC,GACrC,GAAIC,GAAkBP,EAAsBK,GACxCG,EAAkBR,EAAsBM,EAE5C,QACEp+P,OACE43D,OAAQumM,EACRp/S,KAAQs/S,EAAgBt/S,KACxBk/S,OAAQI,EAAgBJ,QAE1Bh+P,KACE23D,OAAQwmM,EACRr/S,KAAQu/S,EAAcv/S,KACtBk/S,OAAQK,EAAcL,SAK5B,QAASM,GAASn5P,GACZy4P,GAAcW,KAEdX,GAAcW,KAChBA,GAAiBX,GACjBY,OAGFA,GAAoBljV,KAAK6pF,IA0E3B,QAASs5P,KAKP,MAFKC,KAKP,QAASA,KACP,GAAIC,GAAIC,EAAIC,CAKZ,KAHAF,EAAKf,GACLgB,KACAC,EAAKC,IACED,IAAOE,GACZH,EAAGtjV,KAAKujV,GACRA,EAAKC,GAQP,OANIF,KAAOG,IACTpB,GAAegB,EACfC,EAAKI,EAAOJ,IAEdD,EAAKC,EAKP,QAASE,KACP,GAAIH,EAOJ,OALAA,GAAKM,IACDN,IAAOI,IACTJ,EAAKO,KAGAP,EAGT,QAASQ,KACP,GAAIR,GAAIC,EAAIC,EAAIO,EAAIC,EAAIC,CAyBxB,IAvBAX,EAAKf,GACLgB,KACAC,EAAKjB,GACLwB,EAAKG,IACDH,IAAOL,GACTM,EAAKG,IACDH,IAAON,GACTO,EAAKC,IACDD,IAAOP,GACTK,GAAMA,EAAIC,EAAIC,GACdT,EAAKO,IAELxB,GAAciB,EACdA,EAAKE,KAGPnB,GAAciB,EACdA,EAAKE,KAGPnB,GAAciB,EACdA,EAAKE,GAEHF,IAAOE,EACT,KAAOF,IAAOE,GACZH,EAAGtjV,KAAKujV,GACRA,EAAKjB,GACLwB,EAAKG,IACDH,IAAOL,GACTM,EAAKG,IACDH,IAAON,GACTO,EAAKC,IACDD,IAAOP,GACTK,GAAMA,EAAIC,EAAIC,GACdT,EAAKO,IAELxB,GAAciB,EACdA,EAAKE,KAGPnB,GAAciB,EACdA,EAAKE,KAGPnB,GAAciB,EACdA,EAAKE,OAITH,GAAKG,CAiBP,OAfIH,KAAOG,IACTpB,GAAegB,EACfC,EAAKa,EAAOb,IAEdD,EAAKC,EACDD,IAAOI,IACTJ,EAAKf,GACLgB,EAAKc,IAEHf,EADEC,IAAOG,EACJj+R,EAAM2oD,UAAUk1O,EAAIf,IAEpBgB,GAIFD,EAGT,QAASM,KACP,GAAIN,GAAIC,CAUR,OARAD,GAAKf,GACLgB,EAAKO,IACDP,IAAOG,IACTpB,GAAegB,EACfC,EAAKe,EAAOf,IAEdD,EAAKC,EAKP,QAASgB,KACP,GAAIjB,GAAIC,EAAIC,CAGZ,KADAF,EAAKkB,OACMd,EAAY,CAUrB,GATAJ,EAAKf,GACLgB,KACIkB,EAAO9gT,KAAK8hB,EAAMtgB,OAAOo9S,MAC3BiB,EAAK/9R,EAAMtgB,OAAOo9S,IAClBA,OAEAiB,EAAKE,EACmB,IAApBgB,IAAyBzB,EAAS0B,IAEpCnB,IAAOE,EACT,KAAOF,IAAOE,GACZH,EAAGtjV,KAAKujV,GACJiB,EAAO9gT,KAAK8hB,EAAMtgB,OAAOo9S,MAC3BiB,EAAK/9R,EAAMtgB,OAAOo9S,IAClBA,OAEAiB,EAAKE,EACmB,IAApBgB,IAAyBzB,EAAS0B,QAI1CpB,GAAKG,CAGLJ,GADEC,IAAOG,EACJj+R,EAAM2oD,UAAUk1O,EAAIf,IAEpBgB,EAIT,MAAOD,GAGT,QAASO,KACP,GAAIP,GAAIC,EAAIC,EAAIO,EAAIC,EAAIC,EAAIW,EAAIC,EAAIC,CA0FpC,OAxFAxB,GAAKf,GACiC,MAAlC98R,EAAMkuG,WAAW4uL,KACnBgB,EAAKwB,EACLxC,OAEAgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAAS+B,IAEpCzB,IAAOG,GACTF,EAAKU,IACDV,IAAOE,GACTK,EAAKQ,IACDR,IAAOL,GACTM,EAAKE,IACDF,IAAON,GACTO,EAAK1B,GACiC,KAAlC98R,EAAMkuG,WAAW4uL,KACnBqC,EAAKK,EACL1C,OAEAqC,EAAKlB,EACmB,IAApBgB,IAAyBzB,EAASiC,IAEpCN,IAAOlB,GACTmB,EAAKX,IACDW,IAAOnB,GACToB,EAAKK,IACDL,IAAOpB,GACTkB,GAAMA,EAAIC,EAAIC,GACdb,EAAKW,IAELrC,GAAc0B,EACdA,EAAKP,KAGPnB,GAAc0B,EACdA,EAAKP,KAGPnB,GAAc0B,EACdA,EAAKP,GAEHO,IAAOP,IACTO,EAAK,MAEHA,IAAOP,GACTkB,EAAKV,IACDU,IAAOlB,GAC6B,MAAlCj+R,EAAMkuG,WAAW4uL,KACnBsC,EAAKO,EACL7C,OAEAsC,EAAKnB,EACmB,IAApBgB,IAAyBzB,EAASoC,IAEpCR,IAAOnB,GACTpB,GAAegB,EACfC,EAAK+B,EAAQvB,EAAIE,GACjBX,EAAKC,IAELhB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,GAGAJ,EAGT,QAAS6B,KACP,GAAI7B,EAaJ,OAXAA,GAAKiC,IACDjC,IAAOI,IACTJ,EAAKkC,OACM9B,IACTJ,EAAKmC,OACM/B,IACTJ,EAAKoC,KAKJpC,EAGT,QAASiC,KACP,GAAIjC,GAAIC,EAAIC,EAAIO,EAAIC,EAAIC,EAAIW,CA8E5B,OA5EAtB,GAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,KAAOoD,GACnCpC,EAAKoC,EACLpD,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAAS2C,IAEpCrC,IAAOG,IACLj+R,EAAMxf,OAAOs8S,GAAa,KAAOsD,GACnCtC,EAAKsC,EACLtD,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAAS6C,IAEpCvC,IAAOG,IACLj+R,EAAMxf,OAAOs8S,GAAa,KAAOwD,GACnCxC,EAAKwC,EACLxD,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAAS+C,MAIxCzC,IAAOG,GACTF,EAAKU,IACDV,IAAOE,GACTK,EAAKxB,GACiC,KAAlC98R,EAAMkuG,WAAW4uL,KACnByB,EAAKiB,EACL1C,OAEAyB,EAAKN,EACmB,IAApBgB,IAAyBzB,EAASiC,IAEpClB,IAAON,GACTO,EAAKC,IACDD,IAAOP,GACTkB,EAAKT,IACDS,IAAOlB,GACTM,GAAMA,EAAIC,EAAIW,GACdb,EAAKC,IAELzB,GAAcwB,EACdA,EAAKL,KAGPnB,GAAcwB,EACdA,EAAKL,KAGPnB,GAAcwB,EACdA,EAAKL,GAEHK,IAAOL,IACTK,EAAK,MAEHA,IAAOL,GACTpB,GAAegB,EACfC,EAAK0C,EAAQ1C,EAAIQ,GACjBT,EAAKC,IAELhB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,GAGAJ,EAGT,QAASkC,KACP,GAAIlC,GAAIC,EAAIC,EAAIO,EAAIC,EAAIC,CAiDxB,OA/CAX,GAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,KAAO2D,GACnC3C,EAAK2C,EACL3D,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASkD,KAEpC5C,IAAOG,GACTF,EAAKU,IACDV,IAAOE,GAC6B,KAAlCj+R,EAAMkuG,WAAW4uL,KACnBwB,EAAKkB,EACL1C,OAEAwB,EAAKL,EACmB,IAApBgB,IAAyBzB,EAASiC,IAEpCnB,IAAOL,GACTM,EAAKE,IACDF,IAAON,GACTO,EAAKmC,IACDnC,IAAOP,GACTpB,GAAegB,EACfC,EAAK8C,GAAQpC,GACbX,EAAKC,IAELhB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,GAGAJ,EAGT,QAASmC,KACP,GAAInC,GAAIC,EAAIC,EAAIO,EAAIC,EAAIC,CAiDxB,OA/CAX,GAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,MAAQ+D,IACpC/C,EAAK+C,GACL/D,IAAe,KAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASsD,KAEpChD,IAAOG,GACTF,EAAKU,IACDV,IAAOE,GAC6B,KAAlCj+R,EAAMkuG,WAAW4uL,KACnBwB,EAAKkB,EACL1C,OAEAwB,EAAKL,EACmB,IAApBgB,IAAyBzB,EAASiC,IAEpCnB,IAAOL,GACTM,EAAKE,IACDF,IAAON,GACTO,EAAKmC,IACDnC,IAAOP,GACTpB,GAAegB,EACfC,EAAKiD,GAAQvC,GACbX,EAAKC,IAELhB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,GAGAJ,EAGT,QAASoC,KACP,GAAIpC,GAAIC,EAAQQ,EAAQE,EAAIW,CAU5B,IARAtB,EAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,KAAOkE,IACnClD,EAAKkD,GACLlE,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASyD,KAEpCnD,IAAOG,EAET,GADKQ,MACMR,EAQT,GAPsC,KAAlCj+R,EAAMkuG,WAAW4uL,KACnBwB,EAAKkB,EACL1C,OAEAwB,EAAKL,EACmB,IAApBgB,IAAyBzB,EAASiC,IAEpCnB,IAAOL,EAET,GADKQ,MACMR,EAAY,CAGrB,GAFAO,MACAW,EAAK+B,OACMjD,EACT,KAAOkB,IAAOlB,GACZO,EAAGhkV,KAAK2kV,GACRA,EAAK+B,QAGP1C,GAAKP,CAEHO,KAAOP,GACTpB,GAAegB,EACfC,EAAKqD,GAAQ3C,GACbX,EAAKC,IAELhB,GAAce,EACdA,EAAKI,OAGPnB,IAAce,EACdA,EAAKI,MAGPnB,IAAce,EACdA,EAAKI,MAGPnB,IAAce,EACdA,EAAKI,MAGPnB,IAAce,EACdA,EAAKI,CAGP,OAAOJ,GAGT,QAASuD,KACP,GAAIvD,GAAIC,EAAIC,EAAIO,CAiChB,OA/BAT,GAAKf,GACLgB,EAAKhB,GACiC,KAAlC98R,EAAMkuG,WAAW4uL,KACnBiB,EAAKsD,GACLvE,OAEAiB,EAAKE,EACmB,IAApBgB,IAAyBzB,EAAS8D,KAEpCvD,IAAOE,GACTK,EAAKS,IACDT,IAAOL,GACTF,GAAMA,EAAIO,GACVR,EAAKC,IAELjB,GAAcgB,EACdA,EAAKG,KAGPnB,GAAcgB,EACdA,EAAKG,GAGLJ,EADEC,IAAOG,EACJj+R,EAAM2oD,UAAUk1O,EAAIf,IAEpBgB,EAEHD,IAAOI,IACTJ,EAAKa,KAGAb,EAGT,QAASqD,KACP,GAAIrD,GAAIC,EAAIC,EAAIO,EAAIC,EAAIC,EAAIW,EAAIC,EAAIC,CAmEpC,OAjEAxB,GAAKf,GACLgB,EAAKW,IACDX,IAAOG,GACTF,EAAKqD,IACDrD,IAAOE,GACTK,EAAKG,IACDH,IAAOL,GAC6B,MAAlCj+R,EAAMkuG,WAAW4uL,KACnByB,EAAKe,EACLxC,OAEAyB,EAAKN,EACmB,IAApBgB,IAAyBzB,EAAS+B,IAEpChB,IAAON,GACTO,EAAKC,IACDD,IAAOP,GACTkB,EAAKvB,IACDuB,IAAOlB,GACTmB,EAAKX,IACDW,IAAOnB,GAC6B,MAAlCj+R,EAAMkuG,WAAW4uL,KACnBuC,EAAKM,EACL7C,OAEAuC,EAAKpB,EACmB,IAApBgB,IAAyBzB,EAASoC,IAEpCP,IAAOpB,GACTpB,GAAegB,EACfC,EAAKyD,GAAQxD,EAAIoB,GACjBtB,EAAKC,IAELhB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,GAGAJ,EAGT,QAAS2D,KACP,GAAI3D,GAAIC,EAAIC,EAAIO,CA+BhB,OA7BAT,GAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,KAAO2E,IACnC3D,EAAK2D,GACL3E,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASkE,KAEpC5D,IAAOG,GACTF,EAAKU,IACDV,IAAOE,GACTK,EAAKS,IACDT,IAAOL,GACTpB,GAAegB,EACfC,EAAK6D,GAAQrD,GACbT,EAAKC,IAELhB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,GAGAJ,EAGT,QAAS8C,KACP,GAAI9C,GAAIC,EAAQQ,EAAIC,CAOpB,IALAV,EAAKf,GACLgB,EAAK0D,IACD1D,IAAOG,IACTH,EAAK,MAEHA,IAAOG,EAET,GADKQ,MACMR,EAAY,CAGrB,GAFAK,MACAC,EAAK2C,OACMjD,EACT,KAAOM,IAAON,GACZK,EAAG9jV,KAAK+jV,GACRA,EAAK2C,QAGP5C,GAAKL,CAEHK,KAAOL,GACTpB,GAAegB,EACfC,EAAK8D,GAAQ9D,EAAIQ,GACjBT,EAAKC,IAELhB,GAAce,EACdA,EAAKI,OAGPnB,IAAce,EACdA,EAAKI,MAGPnB,IAAce,EACdA,EAAKI,CAGP,OAAOJ,GAGT,QAASe,KACP,GAAIf,GAAIC,CAWR,IATAmB,KACApB,KACIgE,GAAQ3jT,KAAK8hB,EAAMtgB,OAAOo9S,MAC5BgB,EAAK99R,EAAMtgB,OAAOo9S,IAClBA,OAEAgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASsE,KAEpChE,IAAOG,EACT,KAAOH,IAAOG,GACZJ,EAAGrjV,KAAKsjV,GACJ+D,GAAQ3jT,KAAK8hB,EAAMtgB,OAAOo9S,MAC5BgB,EAAK99R,EAAMtgB,OAAOo9S,IAClBA,OAEAgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASsE,SAI1CjE,GAAKI,CAQP,OANAgB,MACIpB,IAAOI,IACTH,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASuE,KAGjClE,EAGT,QAASY,KACP,GAAIZ,GAAIC,EAAIC,CAMZ,KAJAkB,KACApB,EAAKf,GACLgB,KACAC,EAAKa,IACEb,IAAOE,GACZH,EAAGtjV,KAAKujV,GACRA,EAAKa,GAaP,OAVEf,GADEC,IAAOG,EACJj+R,EAAM2oD,UAAUk1O,EAAIf,IAEpBgB,EAEPmB,KACIpB,IAAOI,IACTH,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASwE,KAGjCnE,EAGT,QAASoE,KACP,GAAIpE,EAUJ,OARIqE,IAAQhkT,KAAK8hB,EAAMtgB,OAAOo9S,MAC5Be,EAAK79R,EAAMtgB,OAAOo9S,IAClBA,OAEAe,EAAKI,EACmB,IAApBgB,IAAyBzB,EAAS2E,KAGjCtE,EAGT,QAASuE,KACP,GAAIvE,EAUJ,OARIwE,IAAQnkT,KAAK8hB,EAAMtgB,OAAOo9S,MAC5Be,EAAK79R,EAAMtgB,OAAOo9S,IAClBA,OAEAe,EAAKI,EACmB,IAApBgB,IAAyBzB,EAAS8E,KAGjCzE,EAGT,QAASkB,KACP,GAAIlB,GAAIC,EAAIC,EAAIO,EAAIC,EAAIC,CAUxB,IARAX,EAAKf,GACiC,KAAlC98R,EAAMkuG,WAAW4uL,KACnBgB,EAAKyE,GACLzF,OAEAgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASgF,KAEpC1E,IAAOG,EAAY,CAUrB,GATAH,EAAKhB,GACLiB,EAAKjB,GACD2F,GAAQvkT,KAAK8hB,EAAMtgB,OAAOo9S,MAC5BwB,EAAKt+R,EAAMtgB,OAAOo9S,IAClBA,OAEAwB,EAAKL,EACmB,IAApBgB,IAAyBzB,EAASkF,KAEpCpE,IAAOL,EAAY,CAGrB,IAFAM,KACAC,EAAKyD,IACEzD,IAAOP,GACZM,EAAG/jV,KAAKgkV,GACRA,EAAKyD,GAEH1D,KAAON,GACTK,GAAMA,EAAIC,GACVR,EAAKO,IAELxB,GAAciB,EACdA,EAAKE,OAGPnB,IAAciB,EACdA,EAAKE,CAGLH,GADEC,IAAOE,EACJj+R,EAAM2oD,UAAUm1O,EAAIhB,IAEpBiB,EAST,MANID,KAAOG,IACTpB,GAAegB,EACfC,EAAK6E,GAAQ7E,IAEfD,EAAKC,EAKP,QAAS8E,KACP,GAAI/E,GAAIC,EAAIC,EAAIO,EAAIC,EAAIC,EAAIW,EAAIC,CA8HhC,OA5HIyD,IAAQ3kT,KAAK8hB,EAAMtgB,OAAOo9S,MAC5Be,EAAK79R,EAAMtgB,OAAOo9S,IAClBA,OAEAe,EAAKI,EACmB,IAApBgB,IAAyBzB,EAASsF,KAEpCjF,IAAOI,IACTJ,EAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,KAAOiG,IACnCjF,EAAKiF,GACLjG,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASwF,KAEpClF,IAAOG,IACTpB,GAAegB,EACfC,EAAKmF,OAEPpF,EAAKC,KACMG,IACTJ,EAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,KAAOoG,IACnCpF,EAAKoF,GACLpG,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAAS2F,KAEpCrF,IAAOG,IACTpB,GAAegB,EACfC,EAAKsF,OAEPvF,EAAKC,KACMG,IACTJ,EAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,KAAOuG,IACnCvF,EAAKuF,GACLvG,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAAS8F,KAEpCxF,IAAOG,IACTpB,GAAegB,EACfC,EAAKyF,OAEP1F,EAAKC,KACMG,IACTJ,EAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,KAAO0G,IACnC1F,EAAK0F,GACL1G,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASiG,KAEpC3F,IAAOG,IACTpB,GAAegB,EACfC,EAAK4F,OAEP7F,EAAKC,KACMG,IACTJ,EAAKf,GACD98R,EAAMxf,OAAOs8S,GAAa,KAAO6G,IACnC7F,EAAK6F,GACL7G,IAAe,IAEfgB,EAAKG,EACmB,IAApBgB,IAAyBzB,EAASoG,KAEpC9F,IAAOG,GACTF,EAAKjB,GACLwB,EAAKxB,GACLyB,EAAK6D,IACD7D,IAAON,GACTO,EAAK4D,IACD5D,IAAOP,GACTkB,EAAKiD,IACDjD,IAAOlB,GACTmB,EAAKgD,IACDhD,IAAOnB,GACTM,GAAMA,EAAIC,EAAIW,EAAIC,GAClBd,EAAKC,IAELzB,GAAcwB,EACdA,EAAKL,KAGPnB,GAAcwB,EACdA,EAAKL,KAGPnB,GAAcwB,EACdA,EAAKL,KAGPnB,GAAcwB,EACdA,EAAKL,GAGLF,EADEO,IAAOL,EACJj+R,EAAM2oD,UAAUo1O,EAAIjB,IAEpBwB,EAEHP,IAAOE,GACTpB,GAAegB,EACfC,EAAK+F,GAAQ9F,GACbF,EAAKC,IAELhB,GAAce,EACdA,EAAKI,KAGPnB,GAAce,EACdA,EAAKI,QAQVJ,EAGT,QAASa,KACP,GAAIb,GAAIC,EAAIC,CAKZ,IAHAF,EAAKf,GACLgB,MACAC,EAAK6E,OACM3E,EACT,KAAOF,IAAOE,GACZH,EAAGtjV,KAAKujV,GACRA,EAAK6E,QAGP9E,GAAKG,CAQP,OANIH,KAAOG,IACTpB,GAAegB,EACfC,EAAKgG,GAAQhG,IAEfD,EAAKC,EAzzCP,GAkKIiG,GAlKA1vU,EAAUpJ,UAAU3Q,OAAS,EAAI2Q,UAAU,MAG3CgzU,KAEA+F,GAA2B/kQ,MAAO0+P,GAClCsG,EAAyBtG,EAEzBO,EAAS,SAASjsN,GACV,OACIj2H,KAAU,uBACVi2H,SAAUA,EACVr+G,SAAUA,MAGtB+qU,EAAS,SAASvqO,GACV,GACIx6G,GAAG0gC,EAAG4pT,EAAUp9R,EAAOq9R,EADvBlzQ,EAAS,EAGb,KAAKr3E,EAAI,EAAGsqV,EAAW9vO,EAAK95G,OAAQV,EAAIsqV,EAAUtqV,GAAK,EAGnD,IAFAktD,EAAQstD,EAAKx6G,GAER0gC,EAAI,EAAG6pT,EAAWr9R,EAAMxsD,OAAQggC,EAAI6pT,EAAU7pT,GAAK,EACpD22C,GAAUnqB,EAAMxsB,EAIxB,OAAO22C,IAEf4tQ,EAAS,SAASuF,GACV,OACIpoV,KAAO,qBACPgC,MAAOomV,EACPxwU,SAAUA,MAGtBorU,EAAS,qBACTE,GAAWljV,KAAM,QAASgC,MAAO,uBAAwBmlD,YAAa,wBACtEm8R,EAAS,IACTC,GAAWvjV,KAAM,UAAWgC,MAAO,IAAKmlD,YAAa,OACrDq8R,EAAS,IACTC,GAAWzjV,KAAM,UAAWgC,MAAO,IAAKmlD,YAAa,OACrDw8R,EAAS,IACTC,GAAY5jV,KAAM,UAAWgC,MAAO,IAAKmlD,YAAa,OACtD08R,EAAU,SAASjrU,EAAIhJ,GACf,OACI5P,KAAQ,kBACR4Y,GAAQA,EACRhJ,OAAQA,GAAUA,EAAO,GACzBgI,SAAUA,MAGtBssU,EAAU,SACVC,GAAYnkV,KAAM,UAAWgC,MAAO,SAAUmlD,YAAa,YAC3Di9R,EAAU,OACVC,GAAYrkV,KAAM,UAAWgC,MAAO,OAAQmlD,YAAa,UACzDm9R,EAAU,OACVC,GAAYvkV,KAAM,UAAWgC,MAAO,OAAQmlD,YAAa,UACzDq9R,EAAU,SAASxkV,EAAM23E,GACjB,OACI33E,KAAOA,EAAO,SACd23E,MAAOA,GAASA,EAAM,GACtB//D,SAAUA,MAGtB6sU,EAAU,SACVC,IAAY1kV,KAAM,UAAWgC,MAAO,SAAUmlD,YAAa,YAC3Dy9R,GAAU,SAASyD,GACX,OACIroV,KAASqoV,EAAYroV,KACrBkpI,SAAQA,EACR2R,OAASwtM,EAAYxtM,QAAU,EAC/BxiI,QAASgwU,EAAYhwU,QACrBT,SAAUA,MAGtBitU,GAAU,gBACVC,IAAY9kV,KAAM,UAAWgC,MAAO,gBAAiBmlD,YAAa,mBAClE49R,GAAU,SAASsD,GACX,OACIroV,KAASqoV,EAAYroV,KACrBkpI,SAAQA,EACR2R,OAASwtM,EAAYxtM,QAAU,EAC/BxiI,QAASgwU,EAAYhwU,QACrBT,SAAUA,MAGtBotU,GAAU,SACVC,IAAYjlV,KAAM,UAAWgC,MAAO,SAAUmlD,YAAa,YAC3Dg+R,GAAU,SAAS9sU,GACX,OACIrY,KAAS,eACTqY,QAASA,EACTT,SAAUA,MAGtBytU,GAAU,IACVC,IAAYtlV,KAAM,UAAWgC,MAAO,IAAKmlD,YAAa,OACtDo+R,GAAU,SAASxmU,EAAU2+F,GACrB,OACI19G,KAAU,wBACV+e,SAAUA,EACV/c,MAAU07G,EACV9lG,SAAUA,MAGtB6tU,GAAU,UACVC,IAAY1lV,KAAM,UAAWgC,MAAO,UAAWmlD,YAAa,aAC5Dw+R,GAAU,SAASzwQ,GACX,MAAOA,IAEf0wQ,GAAU,SAAS/qM,EAAQxiI,GACnB,OACIrY,KAAS,eACT66I,OAASA,EACTxiI,QAASA,EACTT,SAAUA,MAGtBmuU,IAAY/lV,KAAM,QAASmnD,YAAa,cACxC0+R,GAAU,aACVC,IAAY9lV,KAAM,QAASgC,MAAO,eAAgBmlD,YAAa,gBAC/D6+R,IAAYhmV,KAAM,QAASmnD,YAAa,sBACxC++R,GAAU,SACVC,IAAYnmV,KAAM,QAASgC,MAAO,QAASmlD,YAAa,SACxDk/R,GAAU,aACVC,IAAYtmV,KAAM,QAASgC,MAAO,YAAamlD,YAAa,aAC5Do/R,GAAU,IACVC,IAAYxmV,KAAM,UAAWgC,MAAO,IAAKmlD,YAAa,OACtDs/R,GAAU,SACVC,IAAY1mV,KAAM,QAASgC,MAAO,QAASmlD,YAAa,SACxDw/R,GAAU,SAAS2B,GACf,MAAOtjT,UAASsjT,EAAQ,KAE5BzB,GAAU,0BACVC,IAAY9mV,KAAM,QAASgC,MAAO,oCAAqCmlD,YAAa,qCACpF4/R,GAAU,OACVC,IAAYhnV,KAAM,UAAWgC,MAAO,OAAQmlD,YAAa,cACzD8/R,GAAU,WAAa,MAAO,MAC9BC,GAAU,MACVC,IAAYnnV,KAAM,UAAWgC,MAAO,MAAOmlD,YAAa,WACxDigS,GAAU,WAAa,MAAO,OAC9BC,GAAU,MACVC,IAAYtnV,KAAM,UAAWgC,MAAO,MAAOmlD,YAAa,WACxDogS,GAAU,WAAa,MAAO,KAC9BC,GAAU,MACVC,IAAYznV,KAAM,UAAWgC,MAAO,MAAOmlD,YAAa,WACxDugS,GAAU,WAAa,MAAO,KAC9BC,GAAU,MACVC,IAAY5nV,KAAM,UAAWgC,MAAO,MAAOmlD,YAAa,WACxD0gS,GAAU,SAASS,GACX,MAAOvkT,QAAOunB,aAAatmB,SAASsjT,EAAQ,MAEpDR,GAAU,SAAS18D,GAAS,MAAOA,GAAM78P,KAAK,KAE9CuyT,GAAuB,EACvBD,GAAuB,EACvBI,KAA0Bj/S,KAAM,EAAGk/S,OAAQ,EAAGC,QAAOA,IACrDM,GAAuB,EACvBC,MACAuB,GAAuB,CAI3B,IAAI,aAAe5qU,GAAS,CAC1B,KAAMA,EAAQkwU,YAAaP,IACzB,KAAM,IAAI1oV,OAAM,mCAAqC+Y,EAAQkwU,UAAY,KAG3EN,GAAwBD,EAAuB3vU,EAAQkwU,WAupCzD,IAFAR,EAAaE,OAEMhG,GAAcnB,KAAgB98R,EAAM1lD,OACrD,MAAOypV,EAMP,MAJIA,KAAe9F,GAAcnB,GAAc98R,EAAM1lD,QACnDkjV,GAAWxhV,KAAM,MAAOmnD,YAAa,iBAvjCzC,SAA4Bz3C,EAAS24E,EAAU63I,EAAOtoN,GA+DpD,MAJiB,QAAbywE,GA1DJ,SAAyBA,GACvB,GAAIzqF,GAAI,CAYR,KAVAyqF,EAAShiB,KAAK,SAASp/C,EAAG5C,GACxB,MAAI4C,GAAEkgC,YAAc9iC,EAAE8iC,aACZ,EACClgC,EAAEkgC,YAAc9iC,EAAE8iC,YACpB,EAEA,IAIJvpD,EAAIyqF,EAAS/pF,QACd+pF,EAASzqF,EAAI,KAAOyqF,EAASzqF,GAC/ByqF,EAAS1pE,OAAO/gB,EAAG,GAEnBA,KA0CYyqF,GAGX,GAAIq4P,GACG,OAAZhxU,EAAmBA,EAzCrB,SAAsB24E,EAAU63I,GAkB9B,GACIsoH,GAAcC,EAAW7qV,EADzB8qV,EAAgB,GAAIp4U,OAAM+3E,EAAS/pF,OAGvC,KAAKV,EAAI,EAAGA,EAAIyqF,EAAS/pF,OAAQV,IAC/B8qV,EAAc9qV,GAAKyqF,EAASzqF,GAAGupD,WAWjC,OARAqhS,GAAengQ,EAAS/pF,OAAS,EAC7BoqV,EAAcv4U,MAAM,GAAI,GAAGoe,KAAK,MAC5B,OACAm6T,EAAcrgQ,EAAS/pF,OAAS,GACpCoqV,EAAc,GAElBD,EAAYvoH,EAAQ,IA9BpB,SAAsBv+N,GACpB,QAASgnV,GAAI3H,GAAM,MAAOA,GAAG9uL,WAAW,GAAG33H,SAAS,IAAIy2B,cAExD,MAAOrvD,GACJ0nB,QAAQ,MAAS,QACjBA,QAAQ,KAAS,OACjBA,QAAQ,QAAS,OACjBA,QAAQ,MAAS,OACjBA,QAAQ,MAAS,OACjBA,QAAQ,MAAS,OACjBA,QAAQ,MAAS,OACjBA,QAAQ,2BAA4B,SAAS23T,GAAM,MAAO,OAAS2H,EAAI3H,KACvE33T,QAAQ,wBAA4B,SAAS23T,GAAM,MAAO,MAAS2H,EAAI3H,KACvE33T,QAAQ,mBAA4B,SAAS23T,GAAM,MAAO,OAAS2H,EAAI3H,KACvE33T,QAAQ,mBAA4B,SAAS23T,GAAM,MAAO,MAAS2H,EAAI3H,MAgBpC9gH,GAAS,IAAO,eAEjD,YAAcsoH,EAAe,QAAUC,EAAY,WAQhBpgQ,EAAU63I,GACpD73I,EACA63I,EACAtoN,IAw/BA,KACA8pU,GACAD,GAAiBz9R,EAAM1lD,OAAS0lD,EAAMtgB,OAAO+9S,IAAkB,KAC/DA,GAAiBz9R,EAAM1lD,OACnBsiV,EAAoBa,GAAgBA,GAAiB,GACrDb,EAAoBa,GAAgBA,KAK9C,MAv2CA,UAAsB5lT,EAAOM,GAC3B,QAAS29N,KAASx9O,KAAKX,YAAckgB,EACrCi+N,EAAKp7P,UAAYy9B,EAAOz9B,UACxBm9B,EAAMn9B,UAAY,GAAIo7P,IAeX4mF,EAAiBphV,QAs1C5BspV,YAAalI,EACb7sT,MAAa8sT,O72Bur0GX,SAAUhjV,EAAQD,EAASH,GAEjC,Y82B3i3GAG,GAAiB,SAAK,OAAS,KAAK,mBAAqB,SAAUyD,EAAEkvH,GAAK,GAAI1uH,GAAEoiC,OAAO5iC,GAAG6Y,MAAM,KAAKs2G,GAAI3uH,EAAE,GAAG4uH,EAAG5pE,OAAOhlD,EAAE,KAAKR,EAAEqvH,EAAID,GAAI5uH,EAAE,GAAGwO,OAAO,GAAGsgH,EAAKF,GAAI5uH,EAAE,GAAGwO,OAAO,EAAG,OAAGkgH,GAAgB,GAALG,GAAc,IAANC,EAAS,MAAW,GAALD,GAAc,IAANC,EAAS,MAAW,GAALD,GAAc,IAANC,EAAS,MAAM,QAAkB,GAAHtvH,GAAMmvH,EAAG,MAAM,W92Boj3G3R,SAAU3yH,EAAQD,KAMlB,SAAUC,EAAQD,EAASH,GAEjC,Y+2B1j3GA,IAAIsrV,GAAqB,EAAQ,KAAuB,OAIxD,GAAQ,KAKRnrV,EAAUC,EAAOD,QAAUmrV,EAC3BnrV,EAAiB,QAAIA,G/2Bok3Gf,SAAUC,EAAQD,EAASH,GAEjC,Yg3Bll3GAkB,QAAOsC,eAAerD,EAAS,cAAgBsE,OAAMA,GACrD,IAAI8mV,GAAS,EAAQ,KACjBC,EAAO,EAAQ,IACnBD,GAAO/9R,QAAQ2/D,gBAAgBq+N,EAAKh+R,SACpC+9R,EAAO/9R,QAAQwjE,cAAgB,KAC/B7wH,EAAQqtD,QAAU+9R,EAAO/9R,Sh3B0l3GnB,SAAUptD,EAAQD,EAASH,GAEjC,Yi3B5k3GA,SAASyrV,GAAen8N,EAASx0G,GAC7BA,EAAUA,MAGN4wU,EAAM57T,QAAQw/F,KACdA,EAAUA,EAAQ19F,UAEtB85T,EAAMloV,eAAeub,KAAM,WAAata,MAAOsa,KAAKwwG,eAAeD,KACnEo8N,EAAMloV,eAAeub,KAAM,YAActa,OACjC21E,MAAOr7D,KAAK4sU,cAAc7wU,EAAQs/D,OAClCy3C,MAAO9yG,KAAK6sU,cAAc9wU,EAAQ+2G,QAAU/2G,EAAQ+2G,SAE5D65N,EAAMloV,eAAeub,KAAM,YAActa,MAAO6qH,IAChDo8N,EAAMloV,eAAeub,KAAM,WAAata,MAAOsa,KAAK8sU,YAAY9sU,KAAKqqH,WACrEsiN,EAAMloV,eAAeub,KAAM,aAAeta,MAAOinV,EAAM9J,UAAU,OAGjE,IAAIkK,GAAiB/sU,IACrBA,MAAK1M,OAAS,SAAgB2nE,EAAMl/D,GAChC,MAAOgxU,GAAevK,QAAQvnQ,EAAMl/D,IApC5C5Z,OAAOsC,eAAerD,EAAS,cAAgBsE,OAAMA,GAErD,IAAIsnV,GAAuB,EAAQ,KAC/BC,EAAS,EAAQ,KACjBN,EAAQ,EAAQ,IACpBvrV,GAAQqtD,QAAUi+R,CAElB,IAAIQ,IACA,SAAU,eACV,SAAU,eACV,OAAQ,aACR,MAAO,YACP,QAAS,cACT,OAAQ,cAERC,GAAU,WAAY,UAyB1BR,GAAMloV,eAAeioV,EAAgB,kBAAoBhnV,MAAOinV,EAAM9J,UAAU,QAChF8J,EAAMloV,eAAeioV,EAAgB,mBAAqBhnV,MAAO,WACzD,IAAK,GAAIpE,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CACvC,GAAI8rV,GAAQz6U,UAAUrR,EACtB,KAAM8rV,IAASA,EAAMj/N,OACjB,KAAM,IAAInrH,OAAM,kFAGpB0pV,GAAej+N,eAAe2+N,EAAMj/N,OAAO93F,eAAiB+2T,EAE5DJ,EAAqBv+R,QAAQ2/D,gBAAgBg/N,OAMzDT,EAAMloV,eAAeioV,EAAgB,iBACjC/nV,YAAWA,EACXgB,UAASA,EACTD,UAAMA,KAIVinV,EAAMloV,eAAeioV,EAAgB,cACjC/nV,YAAWA,EACXe,OACIorH,OAAQ,GAAI,eAAgB,GAC5BC,OAAQ,GAAI,eAAgB,GAC5B5pC,KAAM,GAAI,aAAc,GACxB6pC,IAAK,GAAI,YAAa,GACtBC,MAAO,GAAI,cAAe,MAGlCy7N,EAAetqV,UAAUsyT,gBAAkB,WACvC,OACIvmM,OAAQnuG,KAAKqqH,QACbhvD,MAAOr7D,KAAK+vI,SAAS10E,MACrBy3C,MAAO9yG,KAAK+vI,SAASj9B,QAG7B45N,EAAetqV,UAAUirV,gBAAkB,SAAUv6N,GAGjD,GAMIxxH,GANAivH,EAAUvwG,KAAKstU,SAEftoM,GADiBhlI,KAAKqqH,QACdrqH,KAAKutU,QAAQz6N,IACrB8zB,EAAe5B,EAAM4B,aACrB8B,EAAS,GACTC,EAAO,EAEX,KAAKrnJ,IAAKslJ,GAAa8B,OACf9B,EAAa8B,OAAOrmJ,eAAef,KACnConJ,GAAU,IAAMpnJ,EAAI,KAChBslJ,EAAa8B,OAAOpnJ,GAAGyrB,QAAQ,MAAO,KAAO,IAGzD,KAAKzrB,IAAKslJ,GAAa+B,KACf/B,EAAa+B,KAAKtmJ,eAAef,KACjCqnJ,GAAQ,IAAMrnJ,EAAI,KACdslJ,EAAa+B,KAAKrnJ,GAAGyrB,QAAQ,MAAO,KAAO,IAGvD,IAAI3Z,GAAU,sCAAwCs1I,EAAS,uBACpCC,EAAO,KAIlC,OAAO,IAAIqkM,GAAqBv+R,QAAQr7C,EAASm9G,IAErDm8N,EAAetqV,UAAUorV,YAAc,SAAU16N,GAC7C,GAAI32G,GAAW6D,KAAKytU,SAKpB,OAHKtxU,GAAS22G,KACV32G,EAAS22G,GAAS9yG,KAAKqtU,gBAAgBv6N,IAEpC32G,EAAS22G,IAEpB45N,EAAetqV,UAAUsrV,kBAAoB,SAAUvgN,EAAMra,GACzD,GAAIkyB,GAAQhlI,KAAKutU,QAAQz6N,EACzB,IAAIkyB,EAAMsrC,SACN,MAAOtrC,GAAMsrC,SAASnjD,IAG9Bu/M,EAAetqV,UAAU0qV,YAAc,SAAU3+N,GAK7C,IAJA,GAAID,GAAaw+N,EAAej+N,eAC5B3nE,EAAOonE,EAAWC,EAAO93F,eAGtBywB,GAAM,CACT,GAAIA,EAAK6qI,OACL,MAAO7qI,GAAK6qI,MAEhB7qI,GAAOA,EAAKmyF,cAAgB/qB,EAAWpnE,EAAKmyF,aAAa5iH,eAE7D,KAAM,IAAIrzB,OAAM,oEACZmrH,IAERu+N,EAAetqV,UAAUogV,QAAU,SAAUvnQ,EAAMl/D,GAC/C,GAAI/I,GAAM+I,YAAWA,EAAQ/I,IAAoB+I,EAAQ/I,IAAM25U,EAAMgB,SAMrE,aALI1yQ,IACAA,EAAOjoE,IAINojC,SAASpjC,GACV,KAAM,IAAI68B,YAAW,kFAGzB,KAAKuG,SAAS6kC,GACV,KAAM,IAAIprC,YAAW,gFAGzB,IAAI+9S,GAAaX,EAAOx+R,QAAQz7C,EAAKioE,GACjC63C,EAAQ9yG,KAAK+vI,SAASj9B,OAAS9yG,KAAK6tU,aAAaD,GACjDE,EAAcF,EAAW96N,EAC7B,IAA4B,YAAxB9yG,KAAK+vI,SAAS10E,MAAqB,CACnC,GAAI0yQ,GAAgB/tU,KAAK0tU,kBAAkBI,EAAah7N,EACxD,IAAIi7N,EACA,MAAOA,GAGf,MAAO/tU,MAAKwtU,YAAY16N,GAAOx/G,QAC3B,EAAKgrB,KAAK8oD,IAAI0mQ,GACdE,KAAMF,EAAc,EAAI,OAAS,YAGzCpB,EAAetqV,UAAUyqV,cAAgB,SAAU/5N,GAC/C,IAAKA,GAAS65N,EAAMsB,WAAWzsV,KAAK0rV,EAAQp6N,IAAU,EAClD,OAAM,CAEV,IAAqB,gBAAVA,GAAoB,CAC3B,GAAIpnB,GAAa,KAAK9lE,KAAKktF,IAAUA,EAAM5qF,OAAO,EAAG4qF,EAAM9wH,OAAS,EACpE,IAAI0pG,GAAcihP,EAAMsB,WAAWzsV,KAAK0rV,EAAQxhP,IAAe,EAC3D,KAAM,IAAI1oG,OAAM,IAAM8vH,EAAQ,oEACApnB,GAGtC,KAAM,IAAI1oG,OAAM,IAAM8vH,EAAQ,0EACJo6N,EAAOj7T,KAAK,QAAU,MAEpDy6T,EAAetqV,UAAUouH,eAAiB,SAAUD,GACzB,gBAAZA,KACPA,GAAWA,IAGfA,GAAWA,OAAe19F,OAAO65T,EAAez6N,cAChD,IACI3wH,GAAGuxC,EAAKy7E,EAAaxnE,EADrBonE,EAAaw+N,EAAej+N,cAOhC,KAAKntH,EAAI,EAAGuxC,EAAM09E,EAAQvuH,OAAQV,EAAIuxC,EAAKvxC,GAAK,EAE5C,IADAgtH,EAAciC,EAAQjvH,GAAG+0B,cAAc3Y,MAAM,KACtC4wG,EAAYtsH,QAAQ,CAEvB,GADA8kD,EAAOonE,EAAWI,EAAYr8F,KAAK,MAI/B,MAAO60B,GAAKqnE,MAEhBG,GAAY37F,MAGpB,GAAIs/F,GAAgB1B,EAAQ59F,KAC5B,MAAM,IAAI3vB,OAAM,4DACZutH,EAAQt+F,KAAK,MAAQ,4BAA8BggG,IAE3Dy6N,EAAetqV,UAAUwqV,cAAgB,SAAUvxQ,GAE/C,IAAKA,EACD,MAAO8xQ,GAAO,EAElB,IAAIR,EAAMsB,WAAWzsV,KAAK2rV,EAAQ9xQ,IAAU,EACxC,MAAOA,EAEX,MAAM,IAAIr4E,OAAM,IAAMq4E,EAAQ,0EACJ8xQ,EAAOl7T,KAAK,QAAU,MAEpDy6T,EAAetqV,UAAUyrV,aAAe,SAAUD,GAC9C,GAAItsV,GAAGC,EAAGuxH,EACN6+D,EAASu7J,EAAOr3T,OAAO,SAAUmvH,GACjC,MAAOA,GAAMtpI,QAAQ,UAAY,GAErC,KAAKpa,EAAI,EAAGC,EAAIowL,EAAO3vL,OAAQV,EAAIC,IAC/BuxH,EAAQ6+D,EAAOrwL,KACXg9B,KAAK8oD,IAAIwmQ,EAAW96N,IAAU45N,EAAe77N,WAAWiC,KAF1BxxH,GAAK,GAM3C,MAAOwxH,Kj3B0m3GL,SAAUzxH,EAAQD,EAASH,GAEjC,Yk3Bh13GA,SAASitV,GAAYpwM,GAEjB,MAAc,KAAPA,EAAa,OAOxB,QAASqwM,GAAWC,GAChB,GAAInzQ,GAAO,GAAI/qB,MAAKk+R,EAEpB,OADAnzQ,GAAKozQ,SAAS,EAAG,EAAG,EAAG,GAChBpzQ,EAEX,QAASqzQ,GAAyBC,EAAeC,GAC7C,GAAIC,GAAiBN,EAAWI,GAC5BG,EAAkBP,EAAWK,GAC7BG,EAAgBF,EAAet7N,UAC/Bs7N,EAAevvM,oBAAsB0vM,EACrCC,EAAiBH,EAAgBv7N,UACjCu7N,EAAgBxvM,oBAAsB0vM,CAI1C,OAAOtwT,MAAKggH,OAAOqwM,EAAgBE,GAAkBC,GAEzD,QAASC,GAAU99T,EAAMk4B,GAErBl4B,GAAQA,EACRk4B,GAAMA,CACN,IAAI8zF,GAAcqB,EAAMn1F,EAAKl4B,GAAO6/F,EAASwtB,EAAMrB,EAAc,KAAOlsB,EAASutB,EAAMxtB,EAAS,IAAK3pC,EAAOm3D,EAAMvtB,EAAS,IAIvHC,EAAMs9N,EAAyBnlS,EAAIl4B,GACnCkjH,EAAOmK,EAAMttB,EAAM,GACnBg+N,EAAWd,EAAYl9N,GAAMC,EAAQqtB,EAAiB,GAAX0wM,GAAgB/4N,EAAOqoB,EAAM0wM,EAC5E,QACI/xM,YAAaA,EACbnsB,OAAQA,EACR,eAAgBA,EAChBC,OAAQA,EACR,eAAgBA,EAChB5pC,KAAMA,EACN,aAAcA,EACd6pC,IAAKA,EACL,YAAaA,EACbmjB,KAAMA,EACN,aAAcA,EACdljB,MAAOA,EACP,cAAeA,EACfgF,KAAMA,EACN,aAAcA,GAvDtB9zH,OAAOsC,eAAerD,EAAS,cAAgBsE,OAAMA,GAErD,IAAI44I,GAAQhgH,KAAKggH,MAQbswM,EAAyB,IACzBE,EAAsB,KA+C1B1tV,GAAQqtD,QAAUsgS,Gl3B+13GZ,SAAU1tV,EAAQD,EAASH,GAEjC,Ym3B353GAkB,QAAOsC,eAAerD,EAAS,cAAgBsE,OAAMA,GAIrD,IAAIotO,GAAM3wO,OAAOC,UAAUC,eACvB47B,EAAW97B,OAAOC,UAAU67B,SAC5BklT,EAAiB,WACjB,IACI,QAAShhV,OAAOsC,kBAAmB,QAEvC,MAAOjC,GACH,OAAM,MAIViC,IADO0+U,GAAmBhhV,OAAOC,UAAUghV,iBAC1BD,EAAiBhhV,OAAOsC,eACzC,SAAUe,EAAKlB,EAAM8sC,GACb,OAASA,IAAQ5rC,EAAI49U,iBACrB59U,EAAI49U,iBAAiB9+U,EAAM8sC,EAAKxsC,OAE1BkuO,EAAItxO,KAAKgE,EAAKlB,IAAS,SAAW8sC,MACxC5rC,EAAIlB,GAAQ8sC,EAAK1rC,QAG7BtE,GAAQqD,eAAiBA,CACzB,IAAIo+U,GAAY1gV,OAAOid,QAAU,SAAU4xB,EAAOnxB,GAE9C,QAASwjU,MADT,GAAI79U,GAAKuoH,CAETs1N,GAAEjhV,UAAY4uC,EACdxrC,EAAM,GAAI69U,EACV,KAAKt1N,IAAKluG,GACFizN,EAAItxO,KAAKqe,EAAOkuG,IAChBtpH,EAAee,EAAKuoH,EAAGluG,EAAMkuG,GAGrC,OAAOvoH,GAEXpE,GAAQyhV,UAAYA,CACpB,IAAIoL,GAAaj6U,MAAM5R,UAAUsZ,SAAW,SAAUoC,EAAQm9K,GAE1D,GAAIrnL,GAAMoM,IACV,KAAKpM,EAAI5R,OACL,OAAQ,CAEZ,KAAK,GAAIV,GAAI25L,GAAa,EAAG18J,EAAM3qB,EAAI5R,OAAQV,EAAIi9B,EAAKj9B,IACpD,GAAIsS,EAAItS,KAAOwc,EACX,MAAOxc,EAGf,QAAQ,EAEZF,GAAQ6sV,WAAaA,CACrB,IAAIl9T,GAAU/c,MAAM+c,SAAW,SAAUvrB,GACrC,MAA8B,mBAAvBy4B,EAASz8B,KAAKgE,GAEzBpE,GAAQ2vB,QAAUA,CAClB,IAAI48T,GAAUz9R,KAAKl9C,KAAO,WACtB,OAAM,GAAKk9C,OAAOijE,UAEtB/xH,GAAQusV,QAAUA,Gn3Bu63GZ,SAAUtsV,EAAQD,EAASH,GAEjC,Yo3Bz+3GAkB,QAAOsC,eAAerD,EAAS,cAAgBsE,OAAMA,IAErDtE,EAAQqtD,SAAY,OAAU,KAAM,mBAAsB,SAAU5pD,EAAGkvH,GAC/D,GAAI1uH,GAAIoiC,OAAO5iC,GAAG6Y,MAAM,KAAMs2G,GAAM3uH,EAAE,GAAI4uH,EAAK5pE,OAAOhlD,EAAE,KAAOR,EAAGqvH,EAAMD,GAAM5uH,EAAE,GAAGwO,OAAO,GAAIsgH,EAAOF,GAAM5uH,EAAE,GAAGwO,OAAO,EACvH,OAAIkgH,GACe,GAAPG,GAAoB,IAARC,EAAc,MACpB,GAAPD,GAAoB,IAARC,EAAc,MACf,GAAPD,GAAoB,IAARC,EAAc,MACvB,QACL,GAALtvH,GAAUmvH,EAAM,MAAQ,SACjC,QAAY,MAAU,YAAe,OAAQ,UAAc,EAAK,YAAa,EAAK,YAAa,KAAM,aAAe,cAAkB,QAAY,IAAO,cAAe,MAAS,gBAAkB,MAAU,IAAO,eAAgB,MAAS,mBAAuB,cAAgB,YAAe,MAAO,UAAc,EAAK,WAAY,EAAK,WAAY,KAAM,YAAc,cAAkB,QAAY,IAAO,aAAc,MAAS,cAAgB,MAAU,IAAO,cAAe,MAAS,iBAAqB,OAAW,YAAe,QAAS,UAAc,EAAK,aAAc,EAAK,aAAc,KAAM,cAAgB,cAAkB,QAAY,IAAO,eAAgB,MAAS,iBAAmB,MAAU,IAAO,gBAAiB,MAAS,oBAAwB,eAAiB,YAAe,MAAO,UAAc,EAAK,WAAY,EAAK,WAAY,KAAM,YAAc,cAAkB,QAAY,IAAO,aAAc,MAAS,cAAgB,MAAU,IAAO,cAAe,MAAS,iBAAqB,MAAU,YAAe,OAAQ,eAAkB,kBAAmB,UAAc,EAAK,YAAa,EAAK,YAAa,KAAM,aAAe,cAAkB,QAAY,IAAO,cAAe,MAAS,gBAAkB,MAAU,IAAO,eAAgB,MAAS,mBAAuB,cAAgB,YAAe,MAAO,eAAkB,kBAAmB,UAAc,EAAK,WAAY,EAAK,WAAY,KAAM,YAAc,cAAkB,QAAY,IAAO,aAAc,MAAS,cAAgB,MAAU,IAAO,cAAe,MAAS,iBAAqB,KAAS,YAAe,MAAO,UAAc,EAAK,QAAS,EAAK,WAAY,KAAM,aAAe,cAAkB,QAAY,IAAO,aAAc,MAAS,eAAiB,MAAU,IAAO,cAAe,MAAS,kBAAsB,aAAe,YAAe,MAAO,UAAc,EAAK,QAAS,EAAK,WAAY,KAAM,aAAe,cAAkB,QAAY,IAAO,aAAc,MAAS,eAAiB,MAAU,IAAO,cAAe,MAAS,kBAAsB,MAAU,YAAe,OAAQ,UAAc,EAAK,aAAe,cAAkB,QAAY,IAAO,cAAe,MAAS,gBAAkB,MAAU,IAAO,eAAgB,MAAS,mBAAuB,cAAgB,YAAe,MAAO,UAAc,EAAK,aAAe,cAAkB,QAAY,IAAO,aAAc,MAAS,cAAgB,MAAU,IAAO,cAAe,MAAS,iBAAqB,QAAY,YAAe,SAAU,UAAc,EAAK,eAAiB,cAAkB,QAAY,IAAO,gBAAiB,MAAS,kBAAoB,MAAU,IAAO,iBAAkB,MAAS,qBAAyB,gBAAkB,YAAe,OAAQ,UAAc,EAAK,eAAiB,cAAkB,QAAY,IAAO,cAAe,MAAS,eAAiB,MAAU,IAAO,eAAgB,MAAS,kBAAsB,QAAY,YAAe,SAAU,UAAc,EAAK,OAAS,cAAkB,QAAY,IAAO,gBAAiB,MAAS,kBAAoB,MAAU,IAAO,iBAAkB,MAAS,qBAAyB,gBAAkB,YAAe,OAAQ,UAAc,EAAK,OAAS,cAAkB,QAAY,IAAO,cAAe,MAAS,eAAiB,MAAU,IAAO,eAAgB,MAAS,qBp3Bg/3G5vG,SAAU3yH,EAAQD,KAMlB,SAAUC,EAAQD,EAASH,GAEjC,Yq3Bh93GA,SAASs7S,GAAW/2O,GAChB,MAAIg3O,GAAQC,OAAOj3O,GACRk3O,EAEJC,EAAan3O,EAAoB,WAAMohE,EAUlD,QAASg2K,GAAqB11K,EAAiBC,EAAiB01K,GAC5D,GAA+B,gBAApB11K,GAA8B,CAGrC,GAAI21K,EAAiB,CACjB,GAAIC,GAAqBrsQ,EAAey2F,EACpC41K,IAAsBA,IAAuBD,GAC7CF,EAAqB11K,EAAiB61K,EAAoBF,GAIlE,GAAI7xS,GAAOylC,EAAoB02F,EAE3Bx4E,KACA3jD,EAAOA,EAAK6nB,OAAO87B,EAAsBw4E,IAM7C,KAAK,GAHD61K,GAAgBT,EAAWr1K,GAC3B+1K,EAAgBV,EAAWp1K,GAEtB7lI,EAAI,EAAGA,EAAI0J,EAAKhJ,SAAUV,EAAG,CAClC,GAAImE,GAAMuF,EAAK1J,EACf,MAAKylI,EAActhI,IAAUo3S,GAAaA,EAAUp3S,IAAWw3S,GAAiBA,EAAcx3S,IAAWu3S,GAAiBA,EAAcv3S,IAAO,CAC3I,GAAIorC,GAAaN,EAAyB42F,EAAiB1hI,EAC3D,KAEIhB,EAAeyiI,EAAiBzhI,EAAKorC,GACvC,MAAOruC,MAIjB,MAAO0kI,GAGX,MAAOA,GA7FX,GAAIs1K,GAAU,EAAQ,KAClB51K,GACA7lH,mBAAkBA,EAClBm8R,aAAYA,EACZl5R,cAAaA,EACbyjF,cAAaA,EACbnjF,aAAYA,EACZuiH,iBAAgBA,EAChBs2K,0BAAyBA,EACzBC,0BAAyBA,EACzBt2K,QAAOA,EACPnmH,WAAUA,EACVjd,MAAKA,GAGLqjI,GACAziI,MAAKA,EACLtC,QAAOA,EACPI,WAAUA,EACV+7B,QAAOA,EACPyzL,QAAOA,EACPj/M,WAAUA,EACVq0H,OAAMA,GAGNq2K,GACA,YACAh9R,QAAOA,EACPonF,cAAaA,EACbnjF,aAAYA,EACZ3D,WAAUA,GAGV+7R,GACA,YACAllG,SAAQA,EACR/vG,cAAaA,EACbnjF,aAAYA,EACZ3D,WAAUA,EACVjd,MAAKA,GAGLi5S,IACJA,GAAaH,EAAQc,YAAcD,CASnC,IAAI54S,GAAiBtC,OAAOsC,eACxBgsC,EAAsBtuC,OAAOsuC,oBAC7Bke,EAAwBxsD,OAAOwsD,sBAC/Bpe,EAA2BpuC,OAAOouC,yBAClCG,EAAiBvuC,OAAOuuC,eACxBosQ,EAAkB36S,OAAOC,SAuC7Bf,GAAOD,QAAUw7S,Gr3Byg4GX,SAAUv7S,EAAQiE,EAAqBrE,GAE7C,cAAa,Ss3Bjn4Gb,GAOe,aAAWguV,EAAUC,GAOhC,QAASt+P,KACL,IAAKu+P,EAAY,CACbA,IACA,KAAK,GAAI7tV,GAAI,EAAGA,EAAI8tV,EAAUptV,OAAQV,IAClC8tV,EAAU9tV,GAAG04B,GAAGx4B,KAAKE,OAAQ0tV,EAAU9tV,GAAG+hC,IAE9C+rT,OAIR,QAASC,KACwB,aAAxB9rV,SAASiyL,YACV5kG,IAlBRq+P,EAAWA,GAAY,WACvBC,EAAUA,GAAWj7U,EAAOvS,MAC5B,IAAI0tV,MACAD,KACAG,IAkBJ,OAAO,UAAU74S,EAAU32B,GACvB,GAAIqvU,EAEA,WADAlrV,YAAW,WAAawyC,EAAS32B,IAAW,EAG5CsvU,GAAUltV,MAAO83B,GAAIyc,EAAUpT,IAAKvjB,IAEZ,aAAxBvc,SAASiyL,aAA+BjyL,SAAS0gF,aAAuC,gBAAxB1gF,SAASiyL,WACzEvxL,WAAW2sF,EAAO,GACV0+P,IACJ/rV,SAASygF,kBACTzgF,SAASygF,iBAAiB,mBAAoB4M,MAC9ClvF,OAAOsiF,iBAAiB,OAAQ4M,QAEhCrtF,SAAS0gF,YAAY,qBAAsBorQ,GAC3C3tV,OAAOuiF,YAAY,SAAU2M,IAEjC0+P,QAGT,WAAYr7U,EAAOvS,Ut3Bqn4GOF,KAAK8D,EAAqBrE,EAAoB,MAIrE,SAAUI,EAAQD,EAASH,GAEjC,Yu3B1q4GA,SAASsuV,GAAsBC,GAC7B,MAAO,UAAUpvU,GACf,GAAIyF,GAAWzF,EAAKyF,SAChBjD,EAAWxC,EAAKwC,QACpB,OAAO,UAAUf,GACf,MAAO,UAAU29G,GACf,MAAsB,kBAAXA,GACFA,EAAO35G,EAAUjD,EAAU4sU,GAG7B3tU,EAAK29G,MAXpBp+H,EAAQ0D,aAiBR,IAAI2qV,GAAQF,GACZE,GAAMC,kBAAoBH,EAE1BnuV,EAAiB,QAAIquV,Gv3Bkr4Gf,SAAUpuV,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GACNlE,EAAoBoD,EAAEiB,EAAqB,IAAK,WAAa,MAAOq/P,IAI9E,Iw3B7s4GRA,Ix3B6s4GuD1jQ,EAAoB,Iw3B7s4GnD,2Bx3Bqx4GRO,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,Gy3Bpw4GjC,QAASopG,GAAQygI,EAAY1rE,GAC3B,MAAOw4D,GAAY5lM,EAAI84M,EAAY1rE,GAAW,GAzBhD,GAAIw4D,GAAc,EAAQ,KACtB5lM,EAAM,EAAQ,IA2BlB3wB,GAAOD,QAAUipG,Gz3Bmy4GX,SAAUhpG,EAAQD,EAASH,G03Bhx4GjC,QAAS+wB,GAAI84M,EAAY1rE,GAEvB,OADWruI,EAAQ+5M,GAAcloH,EAAW+sO,GAChC7kH,EAAYh9E,EAAasR,EAAU,IAjDjD,GAAIx8C,GAAW,EAAQ,KACnBkrC,EAAe,EAAQ,KACvB6hM,EAAU,EAAQ,KAClB5+T,EAAU,EAAQ,GAiDtB1vB,GAAOD,QAAU4wB,G13Bs04GX,SAAU3wB,EAAQD,EAASH,G23B/24GjC,QAAS0uV,GAAQ7kH,EAAY1rE,GAC3B,GAAI1tI,IAAS,EACTjH,EAASqwE,EAAYgwI,GAAc92N,MAAM82N,EAAW9oO,UAKxD,OAHAg2O,GAASlN,EAAY,SAASplO,EAAOD,EAAKqlO,GACxCrgN,IAASiH,GAAS0tI,EAAS15J,EAAOD,EAAKqlO,KAElCrgN,EAlBT,GAAIutN,GAAW,EAAQ,KACnBl9I,EAAc,EAAQ,GAoB1Bz5F,GAAOD,QAAUuuV,G33Bi44GX,SAAUtuV,EAAQD,EAASH,G43B344GjC,QAAS62O,GAAW/yO,EAAQq6J,GAC1B,MAAOr6J,IAAUmzO,EAAQnzO,EAAQq6J,EAAUp0J,GAZ7C,GAAIktO,GAAU,EAAQ,KAClBltO,EAAO,EAAQ,IAcnB3J,GAAOD,QAAU02O,G53B654GX,SAAUz2O,EAAQD,G63Br64GxB,QAAS62O,GAAchX,GACrB,MAAO,UAASl8N,EAAQq6J,EAAUoxK,GAMhC,IALA,GAAI9+S,IAAS,EACT+qO,EAAWt6P,OAAO4C,GAClB8a,EAAQ2wT,EAASzrU,GACjB/C,EAAS6d,EAAM7d,OAEZA,KAAU,CACf,GAAIyD,GAAMoa,EAAMohN,EAAYj/N,IAAW0vB,EACvC,SAAI0tI,EAASq9F,EAASh3P,GAAMA,EAAKg3P,GAC/B,MAGJ,MAAO13P,IAIX1D,EAAOD,QAAU62O,G73Bm74GX,SAAU52O,EAAQD,EAASH,G83Bj84GjC,QAAS82O,GAAe63G,EAAU3uH,GAChC,MAAO,UAAS6J,EAAY1rE,GAC1B,GAAkB,MAAd0rE,EACF,MAAOA,EAET,KAAKhwI,EAAYgwI,GACf,MAAO8kH,GAAS9kH,EAAY1rE,EAM9B,KAJA,GAAIp9J,GAAS8oO,EAAW9oO,OACpB0vB,EAAQuvM,EAAYj/N,GAAU,EAC9By6P,EAAWt6P,OAAO2oO,IAEd7J,EAAYvvM,MAAYA,EAAQ1vB,SAClCo9J,EAASq9F,EAAS/qO,GAAQA,EAAO+qO,KAIvC,MAAO3xB,IA3BX,GAAIhwI,GAAc,EAAQ,GA+B1Bz5F,GAAOD,QAAU22O,G93Bk94GX,SAAU12O,EAAQD,EAASH,G+3Bj/4GjC,GAAI4uV,GAAa,EAAQ,KACrBvlR,EAAY,EAAQ,KAsCpBm9P,EAAOooB,EAAWvlR,EAEtBjpE,GAAOD,QAAUqmU,G/3Bw/4GX,SAAUpmU,EAAQD,EAASH,Gg4Bth5GjC,QAAS4uV,GAAWC,GAClB,MAAO,UAAShlH,EAAYx+C,EAAW2O,GACrC,GAAIwhE,GAAWt6P,OAAO2oO,EACtB,KAAKhwI,EAAYgwI,GAAa,CAC5B,GAAI1rE,GAAWtR,EAAaw+B,EAAW,EACvCw+C,GAAa9/N,EAAK8/N,GAClBx+C,EAAY,SAAS7mL,GAAO,MAAO25J,GAASq9F,EAASh3P,GAAMA,EAAKg3P,IAElE,GAAI/qO,GAAQo+T,EAAchlH,EAAYx+C,EAAW2O,EACjD,OAAOvpK,IAAS,EAAI+qO,EAASr9F,EAAW0rE,EAAWp5M,GAASA,WApBhE,GAAIo8H,GAAe,EAAQ,KACvBhzD,EAAc,EAAQ,IACtB9vF,EAAO,EAAQ,IAsBnB3J,GAAOD,QAAUyuV,Gh4Bwi5GX,SAAUxuV,EAAQD,EAASH,Gi4Bhk5GjC,GAAI8uV,GAAY,EAAQ,KACpBtnG,EAAiB,EAAQ,KAiCzB9d,EAAQ8d,EAAe,SAAS1jP,EAAQwc,EAAQ6+B,GAClD2vS,EAAUhrV,EAAQwc,EAAQ6+B,IAG5B/+C,GAAOD,QAAUupO,Gj4Buk5GX,SAAUtpO,EAAQD,EAASH,Gk4B1l5GjC,QAAS8uV,GAAUhrV,EAAQwc,EAAQ6+B,EAAUmrL,EAAYh4N,GACnDxO,IAAWwc,GAGf22N,EAAQ32N,EAAQ,SAASurN,EAAUrnO,GAEjC,GADA8N,IAAUA,EAAQ,GAAI8nL,IAClBv5J,EAASgrM,GACXkjH,EAAcjrV,EAAQwc,EAAQ9b,EAAK26C,EAAU2vS,EAAWxkH,EAAYh4N,OAEjE,CACH,GAAIs6N,GAAWtC,EACXA,EAAW6M,EAAQrzO,EAAQU,GAAMqnO,EAAWrnO,EAAM,GAAKV,EAAQwc,EAAQhO,cACvEorB,KAEAkvM,IACFA,EAAWf,GAEbqL,EAAiBpzO,EAAQU,EAAKooO,KAE/BwK,GAtCL,GAAIh9C,GAAQ,EAAQ,KAChB88C,EAAmB,EAAQ,KAC3BD,EAAU,EAAQ,KAClB83G,EAAgB,EAAQ,KACxBluT,EAAW,EAAQ,IACnBu2M,EAAS,EAAQ,KACjBD,EAAU,EAAQ,IAmCtB/2O,GAAOD,QAAU2uV,Gl4Bon5GX,SAAU1uV,EAAQD,EAASH,Gm4B9n5GjC,QAAS+uV,GAAcjrV,EAAQwc,EAAQ9b,EAAK26C,EAAU6vS,EAAW1kH,EAAYh4N,GAC3E,GAAIikN,GAAW4gB,EAAQrzO,EAAQU,GAC3BqnO,EAAWsL,EAAQ72N,EAAQ9b,GAC3BqmO,EAAUv4N,EAAM3O,IAAIkoO,EAExB,IAAIhB,EAEF,WADAqM,GAAiBpzO,EAAQU,EAAKqmO,EAGhC,IAAI+B,GAAWtC,EACXA,EAAW/T,EAAUsV,EAAWrnO,EAAM,GAAKV,EAAQwc,EAAQhO,UAG3D66N,WAAWP,CAEf,IAAIO,EAAU,CACZ,GAAI9B,GAAQv7M,EAAQ+7M,GAChBN,GAAUF,GAAS3pE,EAASmqE,GAC5BojH,GAAW5jH,IAAUE,GAAUxpE,EAAa8pE,EAEhDe,GAAWf,EACPR,GAASE,GAAU0jH,EACjBn/T,EAAQymM,GACVqW,EAAWrW,EAEJ4J,EAAkB5J,GACzBqW,EAAWsiH,EAAU34H,GAEdgV,GACP4B,KACAP,EAAWuiH,EAAYtjH,OAEhBojH,GACP9hH,KACAP,EAAWwiH,EAAgBvjH,OAG3Be,KAGKlmD,EAAcmlD,IAAat/E,EAAYs/E,IAC9Ce,EAAWrW,EACPhqE,EAAYgqE,GACdqW,EAAWyiH,EAAc94H,GAEjB11L,EAAS01L,KAAax8H,EAAWw8H,KACzCqW,EAAW0iH,EAAgBzjH,KAI7BsB,KAGAA,IAEF76N,EAAMu9B,IAAIg8L,EAAUe,GACpBoiH,EAAUpiH,EAAUf,EAAU1sL,EAAUmrL,EAAYh4N,GACpDA,EAAc,OAAEu5N,IAElBqL,EAAiBpzO,EAAQU,EAAKooO,GA1FhC,GAAIsK,GAAmB,EAAQ,KAC3Bi4G,EAAc,EAAQ,KACtBC,EAAkB,EAAQ,KAC1BF,EAAY,EAAQ,KACpBI,EAAkB,EAAQ,KAC1B/iM,EAAc,EAAQ,KACtBz8H,EAAU,EAAQ,IAClBqwM,EAAoB,EAAQ,KAC5Bz+D,EAAW,EAAQ,KACnB3nE,EAAa,EAAQ,KACrBl5D,EAAW,EAAQ,IACnB6lJ,EAAgB,EAAQ,KACxB3kB,EAAe,EAAQ,KACvBo1E,EAAU,EAAQ,KAClBk4G,EAAgB,EAAQ,IA+E5BjvV,GAAOD,QAAU4uV,Gn4Boq5GX,SAAU3uV,EAAQD,EAASH,ao4Bjw5GjC,GAuBA,QAASmvV,GAAYv4I,EAAQ24I,GAC3B,GAAIA,EACF,MAAO34I,GAAOhkM,OAEhB,IAAI7R,GAAS61M,EAAO71M,OAChByoB,EAASi3M,EAAcA,EAAY1/N,GAAU,GAAI61M,GAAOx4L,YAAYrd,EAGxE,OADA61M,GAAOz2C,KAAK32I,GACLA,EA/BT,GAAI,GAAO,EAAQ,IAGf63I,EAAgC,gBAAXlhK,IAAuBA,IAAYA,EAAQ+jE,UAAY/jE,EAG5EmhK,EAAaD,GAAgC,gBAAVjhK,IAAsBA,IAAWA,EAAO8jE,UAAY9jE,EAGvFmhK,EAAgBD,GAAcA,EAAWnhK,UAAYkhK,EAGrDG,EAASD,EAAgBhzG,EAAKizG,cAC9Bi/D,EAAcj/D,EAASA,EAAOi/D,kBAqBlCrgO,GAAOD,QAAUgvV,Ip4Bqw5GY5uV,KAAKJ,EAASH,EAAoB,KAAKI,KAI9D,SAAUA,EAAQD,EAASH,Gq4Bjy5GjC,QAASovV,GAAgBI,EAAYD,GACnC,GAAI34I,GAAS24I,EAASE,EAAiBD,EAAW54I,QAAU44I,EAAW54I,MACvE,OAAO,IAAI44I,GAAWpxU,YAAYw4L,EAAQ44I,EAAWpuH,WAAYouH,EAAWzuV,QAZ9E,GAAI0uV,GAAmB,EAAQ,IAe/BrvV,GAAOD,QAAUivV,Gr4Bkz5GX,SAAUhvV,EAAQD,EAASH,Gs4Bxz5GjC,QAASyvV,GAAiBC,GACxB,GAAIlmU,GAAS,GAAIkmU,GAAYtxU,YAAYsxU,EAAYxuH,WAErD,OADA,IAAIxpB,GAAWluL,GAAQqmB,IAAI,GAAI6nK,GAAWg4I,IACnClmU,EAZT,GAAIkuL,GAAa,EAAQ,IAezBt3M,GAAOD,QAAUsvV,Gt4Bw05GX,SAAUrvV,EAAQD,Gu4B/05GxB,QAAS+uV,GAAU5uU,EAAQ4/B,GACzB,GAAIzvB,IAAS,EACT1vB,EAASuf,EAAOvf,MAGpB,KADAm/C,IAAUA,EAAQntC,MAAMhS,MACf0vB,EAAQ1vB,GACfm/C,EAAMzvB,GAASnQ,EAAOmQ,EAExB,OAAOyvB,GAGT9/C,EAAOD,QAAU+uV,Gv4B815GX,SAAU9uV,EAAQD,EAASH,Gw4Bt25GjC,QAASsvV,GAAgBxrV,GACvB,MAAqC,kBAAtBA,GAAOsa,aAA8BogJ,EAAY16J,MAC5D6rV,EAAW/lK,EAAa9lL,IAb9B,GAAI6rV,GAAa,EAAQ,KACrB/lK,EAAe,EAAQ,KACvBprB,EAAc,EAAQ,IAe1Bp+J,GAAOD,QAAUmvV,Gx4Bw35GX,SAAUlvV,EAAQD,EAASH,Gy4Bz45GjC,GAAI6gC,GAAW,EAAQ,IAGnB+uT,EAAe1uV,OAAOid,OAUtBwxU,EAAc,WAChB,QAAS7rV,MACT,MAAO,UAASisC,GACd,IAAKlP,EAASkP,GACZ,QAEF,IAAI6/S,EACF,MAAOA,GAAa7/S,EAEtBjsC,GAAO3C,UAAY4uC,CACnB,IAAIvmB,GAAS,GAAI1lB,EAEjB,OADAA,GAAO3C,iBACAqoB,KAIXppB,GAAOD,QAAUwvV,Gz4Bg55GX,SAAUvvV,EAAQD,EAASH,G04B735GjC,QAAS0mL,GAAcjiL,GACrB,IAAKmjG,EAAanjG,IAAUgsG,EAAWhsG,IAAUkiL,EAC/C,OAAM,CAER,IAAI52I,GAAQ65I,EAAanlL,EACzB,IAAc,OAAVsrC,EACF,OAAM,CAER,IAAI0uH,GAAOr9J,EAAeb,KAAKwvC,EAAO,gBAAkBA,EAAM3xB,WAC9D,OAAsB,kBAARqgJ,IAAsBA,YAAgBA,IAClDmoB,EAAarmL,KAAKk+J,IAASooB,EA1D/B,GAAIp2E,GAAa,EAAQ,IACrBm5E,EAAe,EAAQ,KACvBhiF,EAAe,EAAQ,IAGvB++E,EAAY,kBAGZkD,EAAYphI,SAAStnD,UACrBmrJ,EAAcprJ,OAAOC,UAGrBylL,EAAeiD,EAAU7sJ,SAGzB57B,EAAiBkrJ,EAAYlrJ,eAG7BylL,EAAmBD,EAAarmL,KAAKW,OA2CzCd,GAAOD,QAAUumL,G14Bo75GX,SAAUtmL,EAAQD,EAASH,G24Bt95GjC,QAASqvV,GAAc5qV,GACrB,MAAOkoO,GAAWloO,EAAO2yO,EAAO3yO,IA5BlC,GAAIkoO,GAAa,EAAQ,KACrByK,EAAS,EAAQ,IA8BrBh3O,GAAOD,QAAUkvV,G34Bw/5GX,SAAUjvV,EAAQD,EAASH,G44B1g6GjC,QAAS2sO,GAAWrsN,EAAQ1B,EAAO9a,EAAQwmO,GACzC,GAAIqS,IAAS74O,CACbA,KAAWA,KAKX,KAHA,GAAI2sB,IAAS,EACT1vB,EAAS6d,EAAM7d,SAEV0vB,EAAQ1vB,GAAQ,CACvB,GAAIyD,GAAMoa,EAAM6R,GAEZm8M,EAAWtC,EACXA,EAAWxmO,EAAOU,GAAM8b,EAAO9b,GAAMA,EAAKV,EAAQwc,cAClDod,KAEAkvM,IACFA,EAAWtsN,EAAO9b,IAEhBm4O,EACFv+E,EAAgBt6J,EAAQU,EAAKooO,GAE7BtW,EAAYxyN,EAAQU,EAAKooO,GAG7B,MAAO9oO,GApCT,GAAIwyN,GAAc,EAAQ,KACtBl4D,EAAkB,EAAQ,IAsC9Bh+J,GAAOD,QAAUwsO,G54B8h6GX,SAAUvsO,EAAQD,EAASH,G64Bpj6GjC,QAASq3O,GAAWvzO,GAClB,IAAK+8B,EAAS/8B,GACZ,MAAO+rV,GAAa/rV,EAEtB,IAAI+jP,GAAUrpF,EAAY16J,GACtB0lB,IAEJ,KAAK,GAAIhlB,KAAOV,IACD,eAAPU,IAAyBqjP,GAAYzmP,EAAeb,KAAKuD,EAAQU,KACrEglB,EAAOvoB,KAAKuD,EAGhB,OAAOglB,GA7BT,GAAIqX,GAAW,EAAQ,IACnB29H,EAAc,EAAQ,KACtBqxL,EAAe,EAAQ,KAGvBvjM,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,cAwBjChB,GAAOD,QAAUk3O,G74B4k6GX,SAAUj3O,EAAQD,G84Bnm6GxB,QAAS0vV,GAAa/rV,GACpB,GAAI0lB,KACJ,IAAc,MAAV1lB,EACF,IAAK,GAAIU,KAAOtD,QAAO4C,GACrB0lB,EAAOvoB,KAAKuD,EAGhB,OAAOglB,GAGTppB,EAAOD,QAAU0vV,G94Bmn6GX,SAAUzvV,EAAQD,EAASH,G+4B5n6GjC,QAASwnP,GAAexa,GACtB,MAAOnrH,GAAS,SAAS/9G,EAAQmpO,GAC/B,GAAIx8M,IAAS,EACT1vB,EAASksO,EAAQlsO,OACjBupO,EAAavpO,EAAS,EAAIksO,EAAQlsO,EAAS,UAC3CmsO,EAAQnsO,EAAS,EAAIksO,EAAQ,SAWjC,KATA3C,EAAc0C,EAASjsO,OAAS,GAA0B,kBAAdupO,IACvCvpO,IAAUupO,UAGX4C,GAASL,EAAeI,EAAQ,GAAIA,EAAQ,GAAIC,KAClD5C,EAAavpO,EAAS,SAAgBupO,EACtCvpO,EAAS,GAEX+C,EAAS5C,OAAO4C,KACP2sB,EAAQ1vB,GAAQ,CACvB,GAAIuf,GAAS2sN,EAAQx8M,EACjBnQ,IACF0sN,EAASlpO,EAAQwc,EAAQmQ,EAAO65M,GAGpC,MAAOxmO,KAhCX,GAAI+9G,GAAW,EAAQ,KACnBgrH,EAAiB,EAAQ,IAmC7BzsO,GAAOD,QAAUqnP,G/4B6o6GX,SAAUpnP,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAOrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAX7Z,GAAIqlD,GAAsCvjE,EAAoB,GAEzG8vV,GAD8C9vV,EAAoB4D,EAAE2/D,GACbvjE,EAAoB,MAChGqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Mg5Brr6G1hB8gI,EAAiB,SAACp3I,EAAQ5pD,GAAT,MACD,gBAAX4pD,IACW,KAAlBA,EAAOi2C,QACS,gBAAT7/F,IACS,KAAhBA,EAAK6/F,QACLj2C,EAAOi2C,OAAOltE,gBAAkB3yB,EAAK6/F,OAAOltE,eAG1C26T,EAAyB,SAAC,GAA+B,GAA7B1jS,GAA6B,EAA7BA,OAAQp6C,EAAqB,EAArBA,SAAUL,EAAW,EAAXA,KAC5Ci0E,EAAc,KACdmqQ,EAAe,GACbC,GACFljV,KAAM,OACNC,SAAU,WACVC,OAAQ,SAaZ,OATIw2L,GAAep3I,EAAQ4jS,EAAaljV,OACpC84E,EAAcoqQ,EAAaljV,KAAK0mD,cAChCu8R,EAAeC,EAAaljV,MACrB02L,EAAep3I,EAAQ4jS,EAAajjV,UAC3C64E,KAAiBj0E,EACV6xL,EAAep3I,EAAQ4jS,EAAahjV,UAC3C44E,EAAc5zE,IAId4zE,cACAmqQ,iBAIFE,EAAyB,SAACvyN,GAA+B,GAArBwyN,GAAqB,0DACvDltL,QAkBJ,OAhBIlwJ,OAAM+c,QAAQqgU,IAAgBA,EAAYpvV,OAAS,GAAK48H,GACxDwyN,EAAYp7T,KAAK,SAAAm+I,GAOb,MANIngK,OAAM+c,QAAQojJ,EAAK7hH,WAAa6hH,EAAK7hH,SAAStwD,OAAS,IACvDkiK,EAAiBiQ,EAAK7hH,SAASz8B,OAAO,SAAA0lC,GAAA,MACb,gBAAdA,GAAOj/C,IAAmBi/C,EAAOj/C,KAAOsiH,IACjD,MAGFslC,IAQLA,GAGLmtL,E,YACF,WAAYxxU,GAAO,yEACTA,GADS,OAEfyY,GAAKglG,QAAUhlG,EAAKglG,QAAQx4G,KAAbwT,GACfA,EAAK64I,WAAa74I,EAAK64I,WAAWrsJ,KAAhBwT,GAHH,Eh5B+z6GnB,MA7HAwrC,GAAUutR,EAAe9qL,GAYzB1hG,EAAawsR,IACT5rV,IAAK,UACLC,MAAO,Sg5B1s6GHwlC,GACJ/lC,EAAQqN,IAAI,oCAAqCwN,KAAKH,MAAO++G,EAC7D,IAAMA,GAAW1zF,EAAM6uD,cAAc30B,aAAa,WAC1CwiG,EAAU5nJ,KAAKH,MAAf+nJ,MACFjsG,EAAiBw1R,EAAuBvyN,EAAUgpC,IACpDjsG,GAAmBA,EAAeyyC,UAAazyC,EAAewe,aAI9Dh1E,EAAQyN,KAAK,iEAHboN,KAAKH,MAAMy9G,QAAQ3hE,EAAe/G,QAAQ,IAC1C50C,KAAKH,MAAM63N,ch5Bit6GfjyO,IAAK,aACLC,MAAO,Wg5B3s6GPsa,KAAKH,MAAM63N,ah5B+s6GXjyO,IAAK,SACLC,MAAO,Wg5B7s6GF,aAC8Bsa,KAAKH,MAAhCynB,EADH,EACGA,MAAOsgI,EADV,EACUA,MAAOhwI,EADjB,EACiBA,SAEhB05T,EAAY1pL,EAAM5lK,OAAS,GAAK4lK,EAAM51I,IAAI,YAAwB,GAArB1tB,GAAqB,EAArBA,KAAMguD,EAAe,EAAfA,SACjDi/R,EAAc,IAkElB,OAhEIv9U,OAAM+c,QAAQuhC,IAAaA,EAAStwD,OAAS,IAC7CuvV,EAAcj/R,EAAStgC,IAAI,YAYrB,GAXF1V,GAWE,EAXFA,GACA8wC,EAUE,EAVFA,UACMokS,EASJ,EATFltV,KACA02E,EAQE,EARFA,SACA1tB,EAOE,EAPFA,OACAp6C,EAME,EANFA,SACAL,EAKE,EALFA,KACA28L,EAIE,EAJFA,qBACAphG,EAGE,EAHFA,SAGE,IAFF/5E,qBAEE,WADFy7C,oBACE,OACI2hR,EAAWT,GAAyB1jS,SAAQp6C,WAAUL,QAG5D,6CAFsBu7F,EAAW,WAAa,IAE9C,UAC+D9xF,EAD/D,QAC4E,EAAKghH,gBADjF,mBAEuB,sCACTlwE,YAAA,IAEWA,EAFX,IAGWokS,IANzB,iDAS0DC,EAASR,eATnE,iDAU0DQ,EAASR,qBAClDQ,EAAS3qQ,aAEbsnB,GAAYA,EAAZA,OAAA,UACkB,oCADlB,gBAbb,mBAoBuB,wCApBvB,mBAqB2B,iCArB3B,iBAsBqBojP,GAtBrB,kBAuB8B,8BAvB9B,iBAwByBx2Q,IAERw0H,GAAwBA,EAAxBA,OAAA,UACkB,+BACVA,KAKRA,GAAD,EACK,KADL,eAEyBn7K,YAAWy7C,WAAUxzD,KAAIk1U,cAFlD,SAGkB55T,SAW1C,mBACmB,4BADnB,mBAEuB,kCAA2BtzB,GACzCitV,IAKb,2BACmB,mCADnB,mBAEuB,+BAFvB,YAGoB,cAHpB,UAG4C,uDAH5C,mBAI+B,kCAJ/B,mBAKmC,+BALnC,iBAM6BjqT,GAN7B,mBAOuC,sBAPvC,QAOsEtnB,KAAKmxJ,cAP3E,mBASmC,6BACVmgL,Wh5Bgt6GtBD,Gg5Bh06GiBhtR,gBAkI5BgtR,GAAc5pP,cACVmgE,SACAhwI,aAGWy5T,Qh5Bks6Gc7vV,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YAEqB,IAAIujE,GAAsCvjE,EAAoB,GAE1DqqD,GAD8CrqD,EAAoB4D,EAAE2/D,GAChBvjE,EAAoB,KACxEsqD,EAA4DtqD,EAAoB4D,EAAEymD,GAClF6W,EAAuClhE,EAAoB,GAC3DywV,EAA4DzwV,EAAoB,IACrGqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Ui5Bz46Gn4B8pP,EAAsB,6EACflqB,KAAK,SAAAthE,GAAA,MAAeA,KAAgBh/P,IAAayH,iBAGxDgjV,EAAsB,6EACfnqB,KACL,SAAAthE,GAAA,MAAeA,GAAY7vO,SAASnvB,IAAa4H,sBAInD8iV,EAAiB,WAAmC,GAAlCx9T,GAAkC,0DAAlBuD,EAAkB,0DAClD20E,IAKJ,OAJIv4F,OAAM+c,QAAQsD,IAAcrgB,MAAM+c,QAAQ6G,KAC1C20E,EAAap/C,IAAc94B,EAAWuD,IAGnC20E,EAAWvqG,OAAS,GAGlB8vV,EAAe,SAAC,GAA0C,QAAxCl6T,oBAAwC,WAAzBm6T,yBAAyB,MACnE,KAAKA,IAAkBA,EAAc19T,UACjC,MAAO,KAFwD,OAKzB09T,EAAlC19T,qBAL2D,SAKzB09T,EAAlBjiR,oBAL2C,OAM/DkiR,EAAa,YACbl/U,EAAQ,KACRm/U,EAAY,GACZ1lP,IA2BJ,OAxBIv4F,OAAM+c,QAAQ++C,IAAaA,EAAS9tE,OAAS,GAAKmxE,YAAkB4+Q,EAAe9qV,IAAUuH,MAC7F+9F,EAAaslP,EAAe/hR,EAAUl4C,GAClCg6T,EAAoB9hR,GACpBmiR,EAAY1lP,EAAa,YAAc,UAChColP,EAAoB7hR,GAC3BmiR,EAAY1lP,EAAa,0BAA4B,cAErD0lP,EAAY1lP,EAAa,sBAAwB,QACjDylP,EAAa,uBAGjBl/U,EAAQy5F,EAAaA,EAAbA,OAAA,UACW,sCAA+B0lP,GAD1C,yBAEmBD,UAAeC,KACnC9+Q,YAAkB4+Q,EAAe9qV,IAAUqH,OAAS6kE,YAAkB4+Q,EAAe9qV,IAAUsH,QACtGg+F,EAAaslP,EAAex9T,EAAWuD,GACvCq6T,EAAY1lP,EAAa,0BAA4B,qBACrDz5F,EAAQy5F,EAAaA,EAAbA,OAAA,UACW,sCAA+B0lP,GAD1C,yBAGkBD,UAAeC,IAItCn/U,GAGLo/U,EAAwB,SAAC,GAAD,GAAGt6T,GAAH,EAAGA,SAAUm6T,EAAb,EAAaA,aAAb,2BACX,gCACVD,GAAel6T,WAAUm6T,mBASlCG,GAAsBzqP,cAClB7vE,aAGWs6T,Oj5By66GT,SAAU7wV,EAAQiE,EAAqBrE,GAE7C,Yk5B7/6GA,6BAAAK,EAAA,qBAUegY,8BACX0yC,IACA+4G,IACArpG,IACA,WAAcrP,EAAMwqC,GAAoB,GAArCnmC,GAAqC,EAArCA,OAGC,OAAKnG,aAAQssC,IACuB,gBAAzBA,GAAgBnzF,MACuB,QAA9CmzF,EAAgBnzF,KAAK6/F,OAAOltE,cAI3Bk0B,YAAQ8B,IAA8B,gBAAdA,GAAK3oD,MAAwD,QAAnC2oD,EAAK3oD,KAAK6/F,OAAOltE,cAInEq6B,EAIGnG,YAAQssC,GAAqCxqC,EAAlBwqC,EAHxB,KAJAxqC,EAJAwqC,Kl5Bih7Gb,SAAUx1F,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIoqD,GAAyCpqD,EAAoB,GAE7D86F,GADiD96F,EAAoB4D,EAAEwmD,GAChCpqD,EAAoB,IAC3D81F,EAA6C91F,EAAoB,GACjEgmK,EAA8ChmK,EAAoB,IAClEkxV,EAAyDlxV,EAAoB,IAC7EmxV,EAAwDnxV,EAAoB,IAC5EoxV,EAAuDpxV,EAAoB,KAC3EqxV,EAAgDrxV,EAAoB,KACpEsxV,EAA+CtxV,EAAoB,IACnE8qD,EAAyD9qD,EAAoB,IAC7E41M,EAA0D51M,EAAoB,IAC9EuxV,EAA6DvxV,EAAoB,IACjFwxV,EAA0DxxV,EAAoB,KAC9EyxV,EAAsEzxV,EAAoB,KAC1F0xV,EAAmD1xV,EAAoB,IAC5FmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,Gm5Bxi7GxOhI,8BACX0yC,IACA07G,IACAhsG,IACA+uC,IACA7uC,IACAznC,IACAmB,IACAd,IACA5X,IACAsiD,IACA,SACIjT,EACAjtC,EACA63E,EACAhpB,EACAlS,EACA/jC,EACAuyC,EACAoyB,EACAnoE,EACA6qC,GAEA,GAAMotI,GAAQx1G,GAA4C,QAAzBA,EAAgBnzF,IAEjD,IACIuoD,EAAKuvB,aACLx8D,EAAO4xE,QACN0lB,YAAe1+E,IAAay0K,IAAUz0K,EAAS51B,UAC/CuoD,YAAQoR,SACTk7B,EAAgBvoB,cAChBtvD,EAAOulP,yBAGF5oM,EAAepJ,SAAWskC,EAAgBv6E,KAAOq/C,EAAepJ,QAAQj2C,IACzEq/C,EAAer/C,KAAOuxD,EAAcvxD,KAIpCsuF,YAAe/T,EAAiBj/D,OAChCm7H,YAA2Bp3F,EAAgB/jC,MAC7C,CACE,IAAK+jC,EAAetnC,WAAiD,IAApCsnC,EAAetnC,UAAUryB,QACzB,kBAA7B25D,EAAep6C,OAAOjF,IAA0B8X,EAChD,MAAO,MAAKunC,EACT,IAAIwX,YAAkBxX,EAAgB10D,IAAUsH,OAA6C,IAArCqpB,EAASlc,QAAQzU,IAAUsH,KACtF,MAAO,MAAKotD,GAAgBwO,UACzB,IAAIgJ,YAAkBxX,EAAgB10D,IAAUqH,OAASiuF,EAC5D,MAAO,MAAK5gC,GAAgB4gC,iBACzB,IAAIppB,YAAkBxX,EAAgB10D,IAAUwH,MACnD,MAAO,MAAKktD,EACT,IAAIwX,YAAkBxX,EAAgB10D,IAAUuH,MAAQywD,EAC3D,MAAO,MAAKtD,GAIxB,Yn5B+h7GF,SAAUt6D,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAMrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCo5Bhn7GhH,QAASyhI,MAIT,QAASizL,GAAiBC,EAAa7/T,EAAQyjB,GAO3C,OAJIo8S,cACA7/T,SACA8/T,SAAUr8S,GAKlB,QAASs8S,GAAet8S,EAAUqQ,EAAM5hD,GAEZ,kBAAbuxC,GACPA,EAASqQ,EAAM5hD,GACY,gBAAbuxC,IACd/0C,OAAO+0C,GAAUqQ,EAAM5hD,GA0JhB,QAASw5O,GAAmB3lO,GAIvC,MAHKi6U,IAAkC,mBAAXtxV,UACxBsxV,EAAe,GAAIC,GAAal6U,IAE7Bi6U,Ep5B076GsB1tV,EAAuB,EAAIo5O,CAC5D,IAAIt9N,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Mo5B5m7G5hBovR,SAqBSC,EAAb,WACI,aAA8D,8DAAjCC,SAAU,qBAAzBA,EAAgD,EAAhDA,QAAgD,WAC1DlzU,KAAKmzU,gBACLnzU,KAAKozU,UAAY,KACjBpzU,KAAKqzU,gBACLrzU,KAAKkzU,SAAWA,EAChBlzU,KAAKszU,GAAKJ,EAASx1U,MAAM,KAAKzS,OAAO,SAACC,EAAKooV,GAEvC,MADApoV,GAAIooV,GAAMpoV,EAAIooV,OACPpoV,EAAIooV,IACZ5xV,OACH,IAAM8jH,KACNlqG,UAASwC,OAAOiP,QAAQ,yBAA0B,SAACwmU,EAAI77B,EAAI87B,EAAIC,GAASjuO,EAAGkyM,GAAM+7B,IACjFzzU,KAAK0zU,MAAwB,QAAhBluO,EAAG/9C,SAChBznD,KAAK2zU,UAA4B,YAAhBnuO,EAAG/9C,SACpBznD,KAAK4zU,UAA4B,YAAhBpuO,EAAG/9C,SAd5B,kDAoBYznD,KAAKmzU,eAGTnzU,KAAKmzU,gBACLlvV,WAAW+b,KAAK6zU,iBAAiB/uU,KAAK9E,MAAO,OAxBrD,wCA4BQ,GAAM5M,GAAU4M,KAAKqzU,aAAa/wV,OAClC,IAAI8Q,EAAS,CAAC,GACF0/U,GAAa1/U,EAAb0/U,QAER,KACI9yU,KAAK8zU,gBAAgBhB,GACrB9yU,KAAK+zU,iBAAL,KAA2B3gV,GAAS0/U,SAAa9yU,KAAKkzU,SAAlB,eACtC,MAAOhuV,GACLC,EAAQC,MAAR,0CAAwDF,EAAIkO,SAC5D4M,KAAKg0U,MAAMlB,EAAU,KAAM5tV,GAG1B8a,KAAKqzU,aAAarxV,SACnBge,KAAKmzU,iBAOLnzU,KAAKmzU,cAAgBnzU,KAAK4zU,YAC1B5zU,KAAKozU,UAAYnvV,WAAW+b,KAAK6zU,iBAAiB/uU,KAAK9E,MAAO,UAjD9E,qCAsDoBy2B,GAAU,UAGtBz2B,MAAKszU,GAAG78S,SAAW,SAACqQ,GAChBxuB,EAAK07T,MAAMv9S,EAAUqQ,OA1DjC,2BA8DUrQ,EAAUqQ,EAAM5hD,GAMlB,GAJI8a,KAAKozU,YACLvwV,aAAamd,KAAKozU,WAClBpzU,KAAKozU,UAAY,MAEjB38S,EACA,GAAIvxC,EACA6tV,EAAet8S,EAAU,KAAMvxC,OAE/B,KACI6tV,EAAet8S,EAAUqQ,GAC3B,MAAOkqG,GACL+hM,EAAet8S,EAAU,KAAMu6G,GAIvChxI,KAAKqzU,aAAarxV,OAClBge,KAAK6zU,mBAEL7zU,KAAKszU,GAAG78S,SAAWkpH,KAlF/B,sCAsFqBvsJ,GACb,YAAWA,EAAX,CAMA,YAAW1R,OAAOuyV,OAEd,WADAvyV,QAAOuyV,OAAOC,gBAAgBC,YAAYx9F,YAAYvjP,EAI1D,IAAM0zC,GAAO3iC,KAAKC,UAAUhR,EACxB4M,MAAK2zU,WAAajyV,OAAO0yV,aAEzB1yV,OAAO0yV,aAAaC,gBAAgBvtS,GAC7B9mC,KAAK4zU,UAEZlyV,OAAO4yV,SAAStyU,OAAO8kC,GAChB9mC,KAAK0zU,MAEZhyV,OAAO4Z,SAAWwrC,EAElB3hD,EAAQqN,IAAI,kCAAmCY,OA7G3D,kCAiHiBA,GACT4M,KAAKqzU,aAAanxV,KAAKkR,GACvB4M,KAAKu0U,mBAnHb,6BAsHYC,EAAU/9S,GAAU,GAEhBo4J,GAAWntM,OAAO2uB,KAAlBw+K,MACR,aAAWA,EAMP,MALyB,SAArBA,EAAO2lJ,IAA6C,UAArB3lJ,EAAO2lJ,KAEtC3lJ,EAAO2lJ,GAAkC,SAArB3lJ,EAAO2lJ,QAE/B/9S,GAASo4J,EAAO2lJ,GAIpBx0U,MAAKs4O,YAAYk8F,KAAc/9S,MAlIvC,iCAqIgBrjC,EAAS4f,EAAQyjB,GACzBz2B,KAAKy0U,aAAa7B,EAAiBx/U,EAAS4f,EAAQyjB,OAtI5D,qCAyIoBmd,GACZ,GAAI5zC,KAAK2zU,UACL,IACIjyV,OAAO0yV,aAAaM,uBAAuB9gS,GAC7C,MAAO1uD,GACLC,EAAQyN,KAAK,2BAA4BghD,OAG7C5zC,MAAKs4O,YAAY,0BAA4B1kM,MAAKsuB,KAAMtuB,QAjJpE,Op5Buy7G6BpyD,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YAWA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,Gq5Bnz7Gje,QAASw1U,GAAqBzhQ,EAAIC,GAC9B,MAAO,IAAIjjC,MAAKijC,EAAGhY,KAAO,GAAIjrB,MAAKgjC,EAAG/X,KAG1C,QAASy5Q,KAAkC,GAAdriS,GAAc,0DACjCgJ,EAAShJ,EAAQqC,QAAQ6yQ,KAAK,SAAChnQ,GAAD,MAASA,GAAG5L,OAAS4L,EAAG5L,MAAMklB,KAElE,QACI+M,YAFgBv0B,EAAQ4oB,KAAO1lE,IAAWA,WAAW88C,EAAQ4oB,IAAK,aAGlE72E,KAAMiuD,EAAQjuD,KACd+3D,MAAO9J,EAAQsiS,gBAAgBx4R,MAC/BrD,OAAQzG,EAAQsiS,gBAAgB77R,OAChC7F,QAASoI,EAAOh6C,OAAOjd,KACvB49E,KAAM3mB,EAAO1G,MAAMklB,KAI3B,QAAS+6Q,GAAgBC,GACrB,GAAMC,GAAmBzxV,SAASE,cAAc,QAChDF,UAAS08D,KAAK/7D,YAAY8wV,GAC1BA,EAAiBlxV,aAAa,QAASixV,GACvCC,EAAiB9qI,SACjB3mN,SAAS0xV,YAAY,QACrB1xV,SAAS08D,KAAKggB,YAAY+0Q,Gr5B+w7GT,GAAIxwR,GAAsCvjE,EAAoB,GAE1Di0V,GAD8Cj0V,EAAoB4D,EAAE2/D,GACpBvjE,EAAoB,KACpEk0V,EAAuDl0V,EAAoB,IAC3EwqD,EAAuCxqD,EAAoB,GAChFqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Mq5Bx07G1hBwxR,IAEE5gE,QAAS,OACT9uR,MAAO,cAGP8uR,QAAS,QACT9uR,MAAO,SAGP8uR,QAAS,QACT9uR,MAAO,UAGP8uR,QAAS,SACT9uR,MAAO,WAGP8uR,QAAS,UACT9uR,MAAO,YAGP8uR,QAAS,OACT9uR,MAAO,SA8BT2vV,E,YACF,WAAYx1U,GAAO,yEACTA,GADS,OAEf,GAAK4E,OACDihF,OAAQ,OACRC,UAAW/9F,IAAUwK,MAJV,Er5B057GnB,MAvEA0xD,GAAUuxR,EAAoBz1U,GAc9BilD,EAAawwR,IACT5vV,IAAK,cACLC,MAAO,Sq5B317GCgsB,GAAO,MACa1R,KAAKyE,MAA3BihF,EADS,EACTA,OAAQC,EADC,EACDA,UACN6uL,EAAY4gE,EAAe1jU,GAA3B8iQ,OACJA,KAAYx0Q,KAAKyE,MAAMihF,OACvBC,EAAa3lF,KAAKyE,MAAMkhF,YAAc/9F,IAAUwK,KAAQxK,IAAUyK,IAAMzK,IAAUwK,MAElFszF,EAAS8uL,EACT7uL,EAAY/9F,IAAUwK,MAE1B4N,KAAKmG,UACDu/E,SACAC,cAEJ3lF,KAAKH,MAAMy1U,aAAaF,EAAe1jU,GAAOhsB,MAAOigG,Mr5Bi27GrDlgG,IAAK,SACLC,MAAO,Wq5B/17GF,WACC6vV,EAAaH,EAAepjU,IAAI,SAACwjU,EAAe9jU,GAAhB,uBACrB,iBAAM,GAAK+jU,YAAY/jU,YAAS8jU,EAAchhE,WAEzDpkO,EAASA,EAATA,eAAemlS,GACfzwO,EAAO9kG,KAAKH,MAAMyyC,SAASyX,KAAK4qR,GAAsB3iU,IAAI,SAACugC,GAC7D,GAAMmjS,GAAsBd,EAAoBriS,EAChD,wBACmBA,EAAQj2C,GAD3B,kBAEsB,yBAAkBo5U,EAAoB5uQ,aAF5D,kBAGsB,yBAAkB4uQ,EAAoBpxV,MAH5D,kBAIsB,yBAAkBoxV,EAAoBr5R,OAJ5D,kBAKsB,yBAAkBq5R,EAAoB18R,QAL5D,kBAMsB,4BAAqB08R,EAAoBviS,SAN/D,kBAOsB,gCAPtB,oBAQ6B,WAAQ2hS,EAAgBY,EAAoBxzQ,eARzE,sBAaJ,gDAGa9xB,GAHb,oBAMa00D,Qr5Bw27GVuwO,Gq5B357GsB30U,YA+DlBolJ,iBAASuvL,Ir5Bo27GlB,SAAUh0V,EAAQiE,EAAqBrE,GAE7C,Ys5B397GA,SAAS00V,GAAWrlS,GAChB,GAAIslS,GAAa,qDAcjB,OAbAtlS,GAAQvQ,QAAQ,SAACqS,GACIA,EAAOE,SACfvS,QAAQ,SAACwS,GACTA,EAAQsiS,kBACTtiS,EAAQsiS,mBAFc,OAIoDtiS,EAAtEsiS,gBAJkB,IAICx4R,iBAJD,EAIS,GAJT,MAIarD,kBAJb,EAIsB,GAJtB,IAIoDzG,EAAxBjuD,gBAJ5B,EAImC,GAJnC,IAIoDiuD,EAAb4oB,eAJvC,EAI6C,GAJ7C,IAKkD5oB,EAAQqC,QAAQ,GALlE,IAKlBrzC,OAAUjd,KAAMyzQ,WALE,EAKW,GALX,MAKiBljN,MAASklB,IAAK4nK,WAL/B,EAKyC,GALzC,EAMpBk0G,EAAcpgV,IAAWA,WAAW0lE,EAAK,YAE/Cy6Q,GAAgBA,EADJ78G,IAAI88G,EAAV,MAA2BvxV,EAA3B,KAAoC+3D,EAApC,IAA6CrD,EAA7C,IAAuD++M,EAAvD,IAAqEp2B,EAC3E,WAGDi0G,Et5B687GU,GAAIpxR,GAAsCvjE,EAAoB,GAE1D60V,GAD8C70V,EAAoB4D,EAAE2/D,GACzBvjE,EAAoB,MAC/D80V,EAAmD90V,EAAoB4D,EAAEixV,GACzEX,EAAuDl0V,EAAoB,IAChGqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Us5B/87Gn4BmuP,EAAe,SAAC,GAElB,QAAS1qP,GAAaowD,GAElB,GAAMm5B,GAAO,GAAIohK,OAAMC,GAAaztT,GAAY/kC,KAAMyyV,GACtDz6L,GAAGthE,iBACHg8P,IAAUC,OAAOxhK,GANoD,GAArD/4E,GAAqD,EAArDA,KAAMxrD,EAA+C,EAA/CA,QAAS7nB,EAAsC,EAAtCA,SAAsC,IAA5B0tT,oBAA4B,EAAjB,WAAiB,EACnED,EAAaP,EAAWrlS,EAO9B,uBACgBg7C,UACPwQ,GAYEk6O,Qt5Bs/7GT,SAAU30V,EAAQD,EAASH,Gu5Bli8GjC,MAeIo1V,EAASA,GAAW,SAAS/vN,GAChC,YAEA,eAAWA,GAA6C,mBAAdtjF,YAA6B,eAAepd,KAAKod,UAAUwpC,YAArG,CAGA,GACG6gC,GAAMiZ,EAAK/iI,SAEX+yV,EAAU,WACX,MAAOhwN,GAAKiwN,KAAOjwN,EAAKkwN,WAAalwN,GAEpCmwN,EAAYppO,EAAI4tK,gBAAgB,+BAAgC,KAChEy7D,EAAoB,YAAcD,GAClCE,EAAQ,SAAS1pT,GAClB,GAAI/B,GAAQ,GAAI0rT,YAAW,QAC3B3pT,GAAK9B,cAAcD,IAElB2rT,EAAY,eAAejxT,KAAK0gG,EAAKwwN,cAAgBxwN,EAAKywN,OAC1DC,EAAe,eAAepxT,KAAKod,UAAUwpC,WAC7CyqQ,EAAgB,SAAS5d,IACzB/yM,EAAK3jF,cAAgB2jF,EAAKriI,YAAY,WACtC,KAAMo1U,IACJ,IAKF6d,EAAS,SAASriK,GACnB,GAAIsiK,GAAU,WACO,gBAATtiK,GACVyhK,IAAUc,gBAAgBviK,GAE1BA,EAAKv9H,SAGPrzD,YAAWkzV,EATiB,MAW3BtxU,EAAW,SAASwxU,EAAWC,EAAapsT,GAC7CosT,KAAiBzkU,OAAOykU,EAExB,KADA,GAAIh2V,GAAIg2V,EAAYt1V,OACbV,KAAK,CACX,GAAI6gB,GAAWk1U,EAAU,KAAOC,EAAYh2V,GAC5C,IAAwB,kBAAb6gB,GACV,IACCA,EAAS3gB,KAAK61V,EAAWnsT,GAASmsT,GACjC,MAAOhe,GACR4d,EAAc5d,MAKhBke,EAAW,SAASC,GAGrB,MAAI,6EAA6E5xT,KAAK4xT,EAAK9zV,MACnF,GAAI+zV,OAAMhwT,OAAOunB,aAAa,OAASwoS,IAAQ9zV,KAAM8zV,EAAK9zV,OAE3D8zV,GAENpB,EAAY,SAASoB,EAAMlzV,EAAMozV,GAC7BA,IACJF,EAAOD,EAASC,GAGjB,IAIGG,GAHAN,EAAYr3U,KACZtc,EAAO8zV,EAAK9zV,KACZk0V,EA3CoB,6BA2CZl0V,EAERm0V,EAAe,WAChBhyU,EAASwxU,EAAW,qCAAqC35U,MAAM,MAuCjE,IAFA25U,EAAU7hK,WAAa6hK,EAAU1uK,KAE7B+tK,EAUH,MATAiB,GAAarB,IAAUwB,gBAAgBN,OACvCvzV,YAAW,WACVwyV,EAAU14U,KAAO45U,EACjBlB,EAAU/iE,SAAWpvR,EACrBqyV,EAAMF,GACNoB,IACAX,EAAOS,GACPN,EAAU7hK,WAAa6hK,EAAUU,QA5CrB,WACZ,IAAKf,GAAkBY,GAASf,IAAevwN,EAAK0xN,WAAY,CAE/D,GAAIC,GAAS,GAAID,WAWjB,OAVAC,GAAOC,UAAY,WAClB,GAAItkS,GAAMojS,EAAgBiB,EAAOxtU,OAASwtU,EAAOxtU,OAAOsC,QAAQ,eAAgB,wBACpEu5G,GAAK/4B,KAAK35C,EAAK,YAChB0yE,EAAKhrH,SAASyC,KAAO61C,GAChCA,SACAyjS,EAAU7hK,WAAa6hK,EAAUU,KACjCF,KAEDI,EAAOE,cAAcX,QACrBH,EAAU7hK,WAAa6hK,EAAU1uK,MAI7BgvK,IACJA,EAAarB,IAAUwB,gBAAgBN,IAEpCI,EACHtxN,EAAKhrH,SAASyC,KAAO45U,EAERrxN,EAAK/4B,KAAKoqP,EAAY,YAGlCrxN,EAAKhrH,SAASyC,KAAO45U,GAGvBN,EAAU7hK,WAAa6hK,EAAUU,KACjCF,IACAX,EAAOS,OAoBRS,EAAWhC,EAAUh0V,UACrBi0V,EAAS,SAASmB,EAAMlzV,EAAMozV,GAC/B,MAAO,IAAItB,GAAUoB,EAAMlzV,GAAQkzV,EAAKlzV,MAAQ,WAAYozV,GAI9D,OAAyB,mBAAd10S,YAA6BA,UAAUq1S,iBAC1C,SAASb,EAAMlzV,EAAMozV,GAM3B,MALApzV,GAAOA,GAAQkzV,EAAKlzV,MAAQ,WAEvBozV,IACJF,EAAOD,EAASC,IAEVx0S,UAAUq1S,iBAAiBb,EAAMlzV,KAI1C8zV,EAASniK,MAAQ,aACjBmiK,EAAS5iK,WAAa4iK,EAASzvK,KAAO,EACtCyvK,EAASE,QAAU,EACnBF,EAASL,KAAO,EAEhBK,EAAShzV,MACTgzV,EAASG,aACTH,EAASriK,WACTqiK,EAASI,QACTJ,EAASK,QACTL,EAASz1V,QACTy1V,EAASM,WACR,KAEMrC,KAEY,mBAATn1U,OAAwBA,MACb,mBAAXxf,SAA0BA,QACjCse,KAAKuyC,kBAMElxD,GAA0BA,EAAOD,QAC1CC,EAAOD,QAAQi1V,OAASA,EAC8B,OAAX,QAAoC,OAAf,kBAChE,aACE,MAAOA,IACR,+Bv5B2i8GG,SAAUh1V,EAAQD,Gw5Bru8GxBC,EAAOD,QAAU,WAChB,KAAM,IAAI4B,OAAM,oCx5B6u8GX,SAAU3B,EAAQD,ay5B9u8GxB,GACAC,EAAOD,QAAUu3V,Iz5Bkv8GYn3V,KAAKJ,OAI5B,SAAUC,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAgBrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,G05Btw8Gje,QAASy5U,GAAT,GAA6C,GAAhB71G,GAAgB,EAAhBA,aACrB81G,EAAY,EACZC,EAAa,EAajB,OANI/1G,IAAmC5+J,QAAU,SAAWA,SAAUA,OAAO6E,MANtD,MAOnB6vQ,EAAY,EACZC,EAAa,KAKbC,WAAY,KACZC,YAAa,KACbC,OAAQ,MACRC,SAAUL,EACVM,UAAWL,EACXxkL,aACIK,OAAQ,KACRE,OAAQ,KACRD,KAAM,KACNE,KAAM,KACNoD,YAAa,MAEjBkhL,UAASA,EACT7hL,UAASA,EACT8hL,SAAQA,EACRC,WAjBc,EAAKT,EAAYC,G15Bou8G6B,GAAIt0R,GAAsCvjE,EAAoB,GACzGwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpE+0R,EAA6Ct4V,EAAoB,IACjEu4V,EAAqDv4V,EAAoB4D,EAAE00V,GAC3EpE,EAAuDl0V,EAAoB,IAC3Ew4V,EAAuCx4V,EAAoB,KAC3Dy4V,EAA+Cz4V,EAAoB4D,EAAE40V,GACrEE,EAAiD14V,EAAoB,KAC1FmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPgmF,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BtxB,EAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,QAAUtkD,IAAQskD,OAAO1nD,UAAY,eAAkBoD,IAElQq/D,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M05B7t8G1hBi/K,E,YACF,WAAYhjO,GAAO,yEACTA,GADS,OAEfyY,GAAK7iB,WAAaA,IAAWA,WAC7B6iB,EAAKguD,aAAe7wE,IAAW6wE,aAC/BhuD,EAAKosD,UAAYjvE,IAAWivE,UAC5BpsD,EAAK7T,MAAQm0U,EAAkB/4U,GAC/ByY,EAAKshU,cAAgBthU,EAAKshU,cAAc90U,KAAnBwT,GACrBA,EAAKivR,SAAWjvR,EAAKivR,SAASziS,KAAdwT,GAChBA,EAAKzW,KAAOyW,EAAKzW,KAAKiD,KAAVwT,GACZA,EAAK68D,MAAQ78D,EAAK68D,MAAMrwE,KAAXwT,GACbA,EAAKi6I,WAAaj6I,EAAKi6I,WAAWztJ,KAAhBwT,GAClBA,EAAKg6I,UAAYh6I,EAAKg6I,UAAUxtJ,KAAfwT,GACjBA,EAAK+5I,SAAW/5I,EAAK+5I,SAASvtJ,KAAdwT,GAChBA,EAAKigJ,eAAiBjgJ,EAAKigJ,eAAezzJ,KAApBwT,GACtBA,EAAKuhU,UAAYvhU,EAAKuhU,UAAU/0U,KAAfwT,GACjBA,EAAKwhU,WAAaxhU,EAAKwhU,WAAWh1U,KAAhBwT,GAClBA,EAAKyhU,aAAezhU,EAAKyhU,aAAaj1U,KAAlBwT,GAhBL,E15B219GnB,MAxkBAwrC,GAAU++K,EAAYjjO,GA+BtBilD,EAAag+K,IACTp9O,IAAK,qBACLC,MAAO,W05B3x8GP,GAAMi/E,GAAQ3kE,KAAKH,MAAMm6U,eAAiB,GAAI9pS,MAC1ClwC,KAAKsmE,aAAatmE,KAAKH,MAAMo7D,OAAS,GAAI/qB,MACxC+pS,EAAQt1Q,EAAM0pQ,SAAS,EAAG,EAAG,EAAG,EACtCruU,MAAKmG,UACD4yU,WAAYkB,EACZjB,YAAaiB,O15Bwy8GjBx0V,IAAK,4BACLC,MAAO,S05B/x8Geid,GACtB,GAAMgiE,GAAQ3kE,KAAKsmE,aAAa3jE,EAAUs4D,OAAS,GAAI/qB,MACjD+pS,EAAQt1Q,EAAM0pQ,SAAS,EAAG,EAAG,EAAG,EAElC1rU,GAAUq2C,SAAWh5C,KAAKH,MAAMm5C,SAChCh5C,KAAK45U,cAAcK,GACnBj6U,KAAKmG,UACD4yU,WAAYkB,EACZb,UAASA,Q15B0y8GjB3zV,IAAK,WACLC,MAAO,W05Bly8GA,MAC2Bsa,KAAKyE,MAA/Bu0U,EADD,EACCA,YAAaE,EADd,EACcA,SACfgB,EAAW71Q,IAAO20Q,GAAan5M,SAASq5M,EAAU,QAAQ1yQ,SAChExmE,MAAK45U,cAAcM,M15B8y8GnBz0V,IAAK,OACLC,MAAO,W05Bxy8GJ,MAC+Bsa,KAAKyE,MAA/Bu0U,EADL,EACKA,YAAaE,EADlB,EACkBA,SACfgB,EAAW71Q,IAAO20Q,GAAahzQ,IAAIkzQ,EAAU,QAAQ1yQ,SAC3DxmE,MAAK45U,cAAcM,M15Boz8GnBz0V,IAAK,QACLC,MAAO,W05B7y8GPsa,KAAKmG,gB15B0z8GL1gB,IAAK,aACLC,MAAO,S05Bjz8GAlD,GACP,GAAM23V,YAAQ33V,EAAEg1K,QAAyBh1K,EAAEg1K,QAAQ,GAAG1iB,MAAQtyJ,EAAEyxJ,QAC1DmmM,WAAQ53V,EAAEg1K,QAAyBh1K,EAAEg1K,QAAQ,GAAGxiB,MAAQxyJ,EAAE0xJ,OAEhEl0I,MAAKmG,UACDoxJ,UAASA,EACTjD,aACIK,OAAQwlL,EACRtlL,OAAQulL,EACRxlL,KAAMulL,EACNrlL,KAAMslL,Q15Bi08Gd30V,IAAK,YACLC,MAAO,S05Bpz8GDlD,GACN,GAAKwd,KAAKyE,MAAM8yJ,SAAhB,CAIA,GAAMjD,GAAct0J,KAAKyE,MAAM6vJ,YAEzB+lL,EAAU73V,EAAEg1K,QAAWh1K,EAAEg1K,QAAQ,GAAG1iB,MAAQtyJ,EAAEyxJ,OACpDqgB,GAAYQ,KAAQtyK,EAAEg1K,QAAWh1K,EAAEg1K,QAAQ,GAAGxiB,MAAQxyJ,EAAE0xJ,QACxDogB,EAAY4D,YAAc5D,EAAYM,KAAON,EAAYK,MACzD,IAAM2lL,GAASD,EAASr6U,KAAKyE,MAAM6vJ,YAAYM,IAC/CN,GAAYM,KAAOylL,EACnBr6U,KAAKmG,UACDmuJ,cACAglL,WAAYt5U,KAAKyE,MAAM60U,WAAagB,IAEpC93V,GAAKA,EAAE43F,gBACP53F,EAAE43F,qB15Bg08GN30F,IAAK,WACLC,MAAO,W05Bpz8GP,GAAKsa,KAAKyE,MAAM8yJ,SAAhB,CAIA,GAAMjD,GAAct0J,KAAKyE,MAAM6vJ,YAEzBiE,EAAiBv4J,KAAKu4J,eAAejE,EAG3Ct0J,MAAKmG,UACDoxJ,UAASA,EACTjD,eACA4D,YAAa,IAGM,SAAnBK,GAA6Bj6I,KAAK8oD,IAAIktF,EAAY4D,aAAe,GACjEl4J,KAAKmG,UAAWizU,UAASA,IACzBp5U,KAAKunS,YACqB,UAAnBhvI,GAA8Bj6I,KAAK8oD,IAAIktF,EAAY4D,aAAe,GACzEl4J,KAAKmG,UAAWizU,UAASA,IACzBp5U,KAAK6B,SACEyc,KAAK8oD,IAAIktF,EAAY4D,aAE5Bl4J,KAAKm1E,a15Bs08GT1vF,IAAK,iBACLC,MAAO,S05B1z8GI4uK,GACX,GAAMC,GAAQD,EAAYK,OAASL,EAAYM,KACzCJ,EAAQF,EAAYO,OAASP,EAAYQ,KACzCv8I,EAAI+F,KAAKy2I,MAAMP,EAAOD,GACxBE,EAAan2I,KAAKggH,MAAU,IAAJ/lH,EAAU+F,KAAK02I,GAK3C,OAHIP,GAAa,IACbA,EAAa,IAAMn2I,KAAK8oD,IAAIqtF,IAE3BA,GAAc,IAAQA,GAAc,GAAOA,GAAc,KAASA,GAAc,SACzEz0J,KAAKH,MAAMm2J,IAAgB,OAAS,QAE3CvB,GAAc,KAASA,GAAc,SAC9Bz0J,KAAKH,MAAMm2J,IAAgB,QAAU,OAG1C,c15Bu08GPvwK,IAAK,YACLC,MAAO,S05B7z8GDqgD,EAAOtP,GACb,GAAI8jT,OAAmBrqS,OAAOijE,SAC9B,OAAO,YACH,GAAMtgH,OAAWq9C,OAAOijE,SACnBtgH,GAAO0nV,GAAiBx0S,IACzBw0S,EAAe1nV,EACf4jC,EAAS/jC,MAAM,KAAMC,gB15B608G7BlN,IAAK,aACLC,MAAO,S05Bh08GAu0V,EAAOO,EAAUh4V,GACpBA,GAAKA,EAAE63F,iBACP73F,EAAE63F,kBAEF73F,GAAKA,EAAE43F,gBACP53F,EAAE43F,iBAEN6/P,EAA0B,qBAAVA,EAAP,cAAOA,IAAsBA,EAAM5L,SAAS,EAAG,EAAG,EAAG,GAAK4L,EACjB,gBAAvCj6U,MAAKyE,MAAM6vJ,YAAY4D,cAC9Bl4J,KAAKmG,UACD4yU,WAAYkB,IAEhBj6U,KAAK45U,cAAcK,GACnBj6U,KAAK+5U,aAAaE,O15B608GtBx0V,IAAK,gBACLC,MAAO,S05Bn08GGw0V,GAGV,GAAMv1Q,GAAQ3kE,KAAKH,MAAMm6U,eAAiB,GAAI9pS,MAC1ClwC,KAAKsmE,aAAatmE,KAAKH,MAAMo7D,OAAS,GAAI/qB,MACxC+pS,EAAQt1Q,EAAM0pQ,SAAS,EAAG,EAAG,EAAG,GAChCoM,EAAkBz6U,KAAKH,MAAMm6U,eAAiB31Q,IAAO41Q,GAAOj0Q,IAAIhmE,KAAKH,MAAMmkO,gBAAiB,QAC9F3/J,IAAO41Q,GAAOj0Q,IAAIhmE,KAAKH,MAAMmkO,gBAAkBhkO,KAAKyE,MAAMy0U,SAAU,QAClEwB,EAAmBr2Q,IAAO41Q,GAAOp6M,SAAS7/H,KAAKH,MAAM86U,cAAe,QACpEC,EAAkBv2Q,IAAO61Q,GAAU7zQ,SAASo0Q,EAAiB,OAC7DI,EAAex2Q,IAAO61Q,GAAU9zQ,QAAQs0Q,EAAkB,OAC1DI,EAAU96U,KAAKyE,MAAMw0U,OACrBJ,EAAY74U,KAAKyE,MAAMy0U,QACzB2B,KACAX,EAAWQ,EAAiBl0Q,WAE5Bo0Q,IACAV,EAAWO,EAAgBj0Q,UAE/B,IAAMu0Q,GAAe/6U,KAAKyE,MAAMu0U,YAE1BgC,EAAW32Q,IAAO61Q,GAAUr6M,SAASg5M,EAAW,QAAQryQ,UACxDy0Q,EAAW52Q,IAAO22Q,GAAUh1Q,IAAiB,EAAZ6yQ,EAAgB,QAAQryQ,UACzDsyQ,EAAa94U,KAAKyE,MAAM00U,UAC1B+B,EAAU,CAEVH,IAAgBC,GAAYD,GAAgBE,EAG5CC,EAAU,GADIH,EAAeC,GACNF,EAAWhC,EAC3BiC,EAAeE,EAEtBC,EAAU,EAAKpC,GAA0B,EAAZD,GACtBkC,EAAeC,IAEtBE,EAAU,GAGdl7U,KAAKmG,UACD6yU,YAAakB,EACbZ,WAAY4B,EACZ7B,SAAQA,O15B608GZ5zV,IAAK,eACLC,MAAO,S05Bp08GEu0V,GACT,GAAMkB,GAAen7U,KAAKvK,WAAWwkV,EAAO,SAC5Cj6U,MAAKH,MAAMu7U,eAAep7U,KAAKsmE,aAAa2zQ,GAAQkB,M15Bi18GpD11V,IAAK,qBACLC,MAAO,W05Bv08GU,WACXmzV,EAAY74U,KAAKyE,MAAMy0U,SACvBJ,EAAa94U,KAAKyE,MAAM00U,UACxBkC,EAAU,EAAKxC,EAAYC,CAE7BuC,KAAYr7U,KAAKyE,MAAM60U,YACvBr1V,WAAW,WACP,EAAKkiB,UACDmzU,WAAY+B,EACZhC,SAAQA,KAEb,M15B608GP5zV,IAAK,cACLC,MAAO,S05B108GCu1E,GACR,IAAI,MAC4Cj7D,KAAKH,MAAzC4qC,EADR,EACQA,cAAetuC,EADvB,EACuBA,SAAU3B,EADjC,EACiCA,OAC3B+oO,EAAcvjO,KAAKH,MAAM0jO,WAG/B,KAAK/oO,IAAW0qO,YAAgB3B,GAC5B,MAAOtoK,EAEX,IAAMrnE,GAAMqnE,EAAKv9D,MAAM,KACjBuzG,EAAQxmE,EAActuC,EAASA,2BAA2BvI,EAAI,KAChEo9G,EAAMp9G,EAAI,GACRqiH,EAAOriH,EAAI,EAGjB,IAAIsxO,YAAgB3B,GAEhB,OADAvyH,EAAMp9G,EAAI,GAAGmZ,QAAQ,IAAK,KAC1B,IAAiBkkG,EAAjB,IAA0BgF,CAG9B,IAAMyxH,GAAqC,gBAAhBnE,IAA0D,gBAA9BA,EAAYltN,aAInE,OADA26F,GAAMp9G,EAAI,GAAGmZ,QAAQ,mBAAoB,IACrC26N,GAC0B12H,EAApB,IAA2BC,EAA3B,IAAoCgF,GACpBub,oBAIhBxgB,EAAV,OAAoBC,EAApB,KAA8BgF,EAChC,MAAMzzH,GAEJ,MADA2C,GAAQC,MAAM5C,EAAE2Z,UACT8+D,M15Bk18GXx1E,IAAK,eACLC,MAAO,S05B/08GEs0V,EAAgBe,EAAclC,GACvC,GAAIj+N,GAAYmgO,CAWhB,OAVIf,IAAgC,IAAdnB,EAMlBj+N,EAAYv2C,IAAO02Q,GAAcl7M,SAAS,EAAG,QAAQr5D,UAC9CwzQ,IACPp/N,EAAYv2C,IAAO02Q,GAAcl7M,SAAUg5M,EAAY,EAAI,QAAQryQ,WAEhEo0C,K15Bk18GPn1H,IAAK,aACLC,MAAO,S05Bh18GAs0V,EAAgBe,EAAclC,EAAWiC,GAChD,GAAIjgO,GAAUkgO,CAId,OAHKf,KACDn/N,EAAyB,IAAdg+N,EAAmBkC,EAAgB,EAAID,EAAWC,GAAiBlC,EAAY,GAAKiC,GAE5FjgO,K15Bm18GPp1H,IAAK,SACLC,MAAO,W05Bh08GP,IAAK,GAjBA,GAC6Csa,KAAKH,MAA/C4qC,EADH,EACGA,cAAetuC,EADlB,EACkBA,SAAU4mO,EAD5B,EAC4BA,aAC3Bu4G,EAAet7U,KAAKH,MAAM07U,gBAC1BR,EAAe/6U,KAAKyE,MAAMu0U,YAC1BwC,EAAcx7U,KAAKyE,MAAMs0U,WACzB+B,EAAU96U,KAAKyE,MAAMw0U,OACrBJ,EAAY74U,KAAKyE,MAAMy0U,SACvBJ,EAAa94U,KAAKyE,MAAM00U,UACxBsC,EAAaz7U,KAAKH,MAAMm6U,eAAiB31Q,IAAO02Q,GAAcl7M,SAAS,GAAI,QAAUx7D,IAAO02Q,GAAcl7M,SAASg5M,EAAW,QAC9H6C,KACAC,EAAgB37U,KAAKH,MAAM87U,cAC3BC,MAAa1rS,OAAQm+R,SAAS,EAAG,EAAG,EAAG,GAMpC/sV,EAAI,EAAGA,EAAiB,EAAZu3V,EAAgBv3V,IAAK,CAEtC,GAAMu6V,GAAWx3Q,IAAOo3Q,GAAYz1Q,IAAI1kF,EAAG,QAAQmgJ,QAAQ,OAAOj7D,UAC5Dg0Q,EAAW1B,EAAax3V,EAC1Bw6V,EAAe,GAEbj8U,GACF,UAAWG,KAAK0kE,UAAUm3Q,GAC1Bl7R,UAAW,kBAEX0a,OAAS2N,MAAO8vQ,EAAa,MAC7BrzV,IAAKnE,EAIJq6V,IAAkBL,EAAaO,KAChCC,EAAe,YAGfz3Q,IAAOm3Q,GAAar1Q,OAAO9B,IAAOw3Q,GAAW,SAC7CC,EAAe,SAInB,IAAMC,GAAW/7U,KAAKsmE,aAAau1Q,GAC7BG,EAAiBvxS,EAActuC,EAASA,yBAAyB6D,KAAKvK,WAAWsmV,EAAU,WAE3FE,EAAmBD,EAAnB,UAA2CD,EAAS/gN,UAApD,SAGDh7H,MAAKH,MAAMm6U,iBAAkB31Q,IAAOw3Q,GAAU35M,eAAe79D,IAAOu3Q,GAAQ,QAC7EF,EAAUx5V,KACN,6BAAS2d,GAAOy9G,QAASt9G,KAAK85U,WAAWh1U,KAAK9E,KAAM67U,EAAUrB,KAA9D,iBAC2DsB,EAD3D,yBACoG16Q,OAAQ66Q,IAA/F,OAASj8U,KAAK0kE,UAAUm3Q,MAMjD,GAAMK,IACFC,YAAan8U,KAAKuyJ,WAClB6pL,YAAap8U,KAAKyE,MAAM8yJ,SAAWv3J,KAAK65U,UAAU,GAAI75U,KAAKsyJ,WAAa,KACxE+pL,UAAWr8U,KAAKqyJ,SAChBiqL,aAAct8U,KAAKyE,MAAM8yJ,SAAWv3J,KAAKqyJ,SAAW,KACpDkqL,aAAcv8U,KAAKuyJ,WACnBiqL,YAAax8U,KAAKyE,MAAM8yJ,SAAWv3J,KAAK65U,UAAU,GAAI75U,KAAKsyJ,WAAa,KACxEmqL,WAAYz8U,KAAKqyJ,SACjBqqL,cAAe18U,KAAKyE,MAAM8yJ,SAAWv3J,KAAKqyJ,SAAW,KACrD1xG,UAAW,uBACXynL,SAAU,GAGRu0G,GACF3zQ,MAAQ8vQ,GAA0B,EAAZD,GAAkB,KACxCzqL,KAAOpuJ,KAAKyE,MAAM60U,YAAct5U,KAAKH,MAAM+8U,SAAY9D,EAAax6T,KAAK+oD,MAAMwxQ,EAAY,GAAM,GAAM,MAGrGj+N,EAAY56G,KAAK68U,aAAa78U,KAAKH,MAAMm6U,eAAgBe,EAAclC,GACvEh+N,EAAU76G,KAAK88U,WAAW98U,KAAKH,MAAMm6U,eAAgBe,EAAclC,EAAWiC,GAE9EiC,EAAaA,EAAbA,2BAAA,UAEmC,YAAtB,WACN/8U,KAAKg9U,YAAYh9U,KAAKvK,WAAWmlH,EAAW,WAHnD,2BAIkC,WAArB,UACN56G,KAAKg9U,YAAYh9U,KAAKvK,WAAWolH,EAAS,YASvD,OALI76G,MAAKyE,MAAM40U,UACXsD,EAAa5iL,WAAa,aAI9B,mBACmB,gBADnB,OAC4CkjL,MAAO,gBADnD,EAES,KAFT,MAGmBl6G,OACHljK,QAAQA,6cAJxB,mBAgBuB,wBACTk9Q,GAjBd,mBAmBuB,8DACX,wBAASb,EAAT,mBACmB,cADnB,MACwCS,UAC/BjB,IAtBrB,iBAyByB,SAzBzB,YAyB4C,OAzB5C,UAyB6D,yBAzB7D,OAyB+Fh/P,QAAS,SAzBxG,QAyB6H18E,KAAKunS,kBAzBlI,iBA2ByB,SA3BzB,YA2B4C,OA3B5C,UA2B6D,yBA3B7D,OA2B+F7qN,QAAS,SA3BxG,QA2B6H18E,KAAK6B,eA3BlI,mBA+BuB,uBA/BvB,aAgCqB,UAhCrB,UAgCyC,e15B418GtCghO,G05B519GcniO,YAyhBzBmiO,GAAWp7I,cACPxsB,KAAM,GAAI/qB,MACVkrS,eAAgB,SAACngR,KACjB+oK,gBAAiB,GACjB22G,cAAe,EACf53G,cAAaA,EACbi3G,gBAAeA,GAGJn3G,Q15By08GcrhP,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQD,EAASH,G25B749GjC,QAAS6mP,GAAiB7iG,EAAQi4M,GAChC,MAAO,UAASpyH,EAAY1rE,GAC1B,GAAIp0I,GAAO+F,EAAQ+5M,GAAcqyH,EAAkBC,EAC/CC,EAAcH,EAAcA,MAEhC,OAAOlyU,GAAK8/M,EAAY7lF,EAAQ6I,EAAasR,EAAU,GAAIi+L,IAlB/D,GAAIF,GAAkB,EAAQ,KAC1BC,EAAiB,EAAQ,KACzBtvM,EAAe,EAAQ,KACvB/8H,EAAU,EAAQ,GAmBtB1vB,GAAOD,QAAU0mP,G35Bi69GX,SAAUzmP,EAAQD,G45B769GxB,QAAS+7V,GAAgBh8S,EAAO8jG,EAAQma,EAAUi+L,GAIhD,IAHA,GAAI3rU,IAAS,EACT1vB,EAAkB,MAATm/C,EAAgB,EAAIA,EAAMn/C,SAE9B0vB,EAAQ1vB,GAAQ,CACvB,GAAI0D,GAAQy7C,EAAMzvB,EAClBuzH,GAAOo4M,EAAa33V,EAAO05J,EAAS15J,GAAQy7C,GAE9C,MAAOk8S,GAGTh8V,EAAOD,QAAU+7V,G55B879GX,SAAU97V,EAAQD,EAASH,G65Bt89GjC,QAASm8V,GAAetyH,EAAY7lF,EAAQma,EAAUi+L,GAIpD,MAHArlH,GAASlN,EAAY,SAASplO,EAAOD,EAAKqlO,GACxC7lF,EAAOo4M,EAAa33V,EAAO05J,EAAS15J,GAAQolO,KAEvCuyH,EAjBT,GAAIrlH,GAAW,EAAQ,IAoBvB32O,GAAOD,QAAUg8V,G75B099GX,SAAU/7V,EAAQiE,EAAqBrE,GAE7C,Y85Bt+9Ge,SAASq8V,KAAuC,GAAdzxP,GAAc,0DACrDvnG,EAAQunG,EAAQvnG,MAAyB,KAAjBunG,EAAQvnG,KAAeunG,EAAQvnG,KAAKi/F,OAAS,GACrEi4B,EAAW3vB,EAAQ2vB,UAAY,EAErC,OAAiB,KAAbA,EACUl3H,EAAV,KAAmBk3H,EAAnB,IAGGl3H,E95B4l+GX,QAASo/D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,G+5B7l+Gje,QAASo+U,GAAgBvkN,GAA+C,GAAzCwkN,GAAyC,0DAAnB52G,EAAmB,wDAChE/yN,IACJ,IAAa,aAATmlH,GAAgC,YAATA,GAA+B,aAATA,EAAqB,CAClE,GAAIykN,GAAeD,CACdC,GAAaz7V,SACdy7V,GAAgBt2V,IAAawH,YAEjCklB,EAAS4pU,EAAa1zR,OAAO/3C,IAAI,SAAAixI,GAC7B,GAAIv4C,UACAk+E,QA2BJ,OA1BI3lC,KAAgB97J,IAAawH,WAC7B+7G,EAAO,WACHk8H,IACAl8H,GAAQ,QAEZk+E,EAAM,SACC3lC,IAAgB97J,IAAayH,eACpC87G,EAAO,MACPk+E,EAAM,UACC3lC,IAAgB97J,IAAa0H,eACpC67G,EAAO,MACHk8H,IACAl8H,GAAQ,QAEZk+E,EAAM,WAE0D,IAAzD3lC,EAAYvnJ,QAAQvU,IAAa4H,qBACxC27G,EAAO,UACPk+E,EAAM,MAEFg+C,IACAl8H,GAAQ,UAKP52F,MADFtG,EADD,oDACkEk9F,EADlE,UAEUk+E,aAEjB,CACH,GAAI80J,GAAkBC,EAAmB3kN,IAASA,EAC5C4kN,EAAa5kN,CAEf4tG,KACa,iBAAT5tG,EACA0kN,EAAkB,eACX71V,IAAemxI,KAEtB0kN,EAAkB71V,IAAemxI,IAIzC,IAAM6kN,GACCrwU,EADD,oDACkEkwU,EADlE,SAEN7pU,GAAO3xB,MAAO4xB,MAAO+pU,EAAwBj1J,IAAKg1J,IAGtD,MAAO/pU,G/5Bs69GX,GAAIjJ,GAAQ3pB,EAAoB,GAI5BomP,EAAUpmP,EAAoB,KAC9B68V,EAA+B78V,EAAoB4D,EAAEwiP,GAGrDj+I,EAASnoG,EAAoB,KAC7B88V,EAA8B98V,EAAoB4D,EAAEukG,GAGpDy7D,EAAa5jK,EAAoB,IACjC6jK,EAAkC7jK,EAAoB4D,EAAEggK,GAGxD9rJ,EAAS9X,EAAoB,IAC7B+X,EAA8B/X,EAAoB4D,EAAEkU,GAGpDhE,EAAQ9T,EAAoB,GAG5BwU,EAAaxU,EAAoB,IAGjC4pG,EAAkB5pG,EAAoB,KAGtC0hP,EAAS1hP,EAAoB,KAG7B21N,EAAwB31N,EAAoB,KA0B5C6kK,EAAW7kK,EAAoB,IAG/BqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Ug6B7i+Gn4Bm2P,EAAe,SAAC,GAQhB,GAPJ1yP,GAOI,EAPJA,aACAO,EAMI,EANJA,QAMI,IALJvnG,gBAKI,EALG,GAKH,EAJJ4pG,EAII,EAJJA,WACAlC,EAGI,EAHJA,iBACAX,EAEI,EAFJA,qBACA4yP,EACI,EADJA,gBAEMC,QAOJ,OANIlyP,KACAkyP,SAAA,OACgBxhQ,QAAS,kBADzB,qBAC8D2O,UAAuB4yP,KAIhE,aAAjBpyP,EAAQnoG,KAAT,kBACGY,EAAM45V,GADT,8BAEWhwP,EAFX,aAEkC,QAFlC,QAEmD5C,UAAehnG,GAAU45V,IAaxEp4L,cAASk4L,Gh6Bgj+GpBvjO,EAAex5H,EAAoB,IAGnCk9V,EAAuB,WAAc,GAAI52P,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Ui6Bnl+Gn5Bu2P,EAAkB,SAAC,GAAD,GAAG39U,GAAH,EAAGA,QAAH,2BACL,gCADK,uBAGA,IAHA,YAIA,IAJA,UAKF,sBALE,qBAMO,iBANP,mBAOK,eAPL,gBAQE,IARF,gBASE,2BAEbA,KASE29U,Ij6Bol+GXC,EAA+B,WAAc,GAAI92P,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAE75BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M+5B5l+G5hBp2C,EACApS,IADAoS,cAGEmwU,GAAuBW,MAAO,OAAQ7tU,aAAc,oBA6DpD8tU,E,YACF,WAAY1+U,GAAO,yEACTA,GADS,OAEf,GAAK4E,OAAU+5U,uBAAwB,GACvC,EAAKC,oBAAsB,EAAKA,oBAAoB35U,KAAzB,GAHZ,E/5Byy+GnB,MApLAg/C,GAAUy6R,EAAyB3+U,GAYnCilD,EAAa05R,IACT94V,IAAK,4BACLC,MAAO,S+5B7n+Geid,GAClBA,EAAU0jO,cAAgBrmO,KAAKH,MAAMwmO,aACrCrmO,KAAKmG,UAAWq4U,uBAAwB,O/5Bio+G5C/4V,IAAK,wBACLC,MAAO,S+5B9n+GWid,EAAWiH,GAM7B,MACI5J,MAAKH,MAAMgnG,SAAS7kH,SAAW2gB,EAAUkkG,SAAS7kH,QAClDge,KAAKH,MAAM+X,SAAS51B,SAAW2gB,EAAUiV,SAAS51B,QAClDge,KAAKyE,MAAM+5U,wBAA0B50U,EAAU40U,uBAC/Cx+U,KAAKH,MAAMgnG,SAAS,GAAGvqG,KAAOqG,EAAUkkG,SAAS,GAAGvqG,IACpD0D,KAAKH,MAAMoX,yBAA2BtU,EAAUsU,0B/5B4n+GpDxxB,IAAK,qBACLC,MAAO,W+5Bxn+GHhE,OAAO2qE,SACP3qE,OAAO2qE,QAAQqyR,kB/5B6n+GnBj5V,IAAK,sBACLC,MAAO,S+5B1n+GS63H,GAChBv9G,KAAKmG,UAAWq4U,sBAAuBjhO,EAAO73H,W/5B6n+G9CD,IAAK,SACLC,MAAO,W+5B3n+GF,aAYDsa,KAAKH,MAVL07G,EAFC,EAEDA,SACA1U,EAHC,EAGDA,SACA5vF,EAJC,EAIDA,uBACAW,EALC,EAKDA,SACAyuN,EANC,EAMDA,YACYrR,EAPX,EAODv/N,WACAkpV,EARC,EAQDA,aACAV,EATC,EASDA,gBACAt3G,EAVC,EAUDA,mBACA9iJ,EAXC,EAWDA,WAEEkiJ,EAAuB,SAACp/N,EAAMC,GAChC,GAAMq/N,GAAQt/N,EAAKriB,KAAKi/F,OAAOltE,cACzB6vN,EAAQt/N,EAAKtiB,KAAKi/F,OAAOltE,aAC/B,OAAI4vN,GAAQC,EACD,EACAD,EAAQC,GACP,EAEL,GAGL04G,EAAmBv4G,IAAgB5rH,IAAaC,QAAQxsH,OAExDi4G,EAAgB/c,IAClByd,EAAS70F,IAAI,SAAC65E,GAAD,MAAaA,GAAQsa,cAAc,KAAK,QACvDp8C,KAAKg8K,YAGH5/H,EAAcA,EAAcnkH,OAAS,KACrCmkH,EAAcxzF,MACdwzF,EAAcz7C,YAAQA,IAG1B,IAAMm0R,GAA+Bx3G,IAAQxgI,EACzC,SAAChb,GAAD,MAAaA,GAAQsa,cAAc,IAAMta,EAAQsa,cAAc,GAAG7hH,OAEhEw6V,EAAc38V,OAAO6I,KAAKm7G,EAActwF,OAAO,SAACkpU,GAAD,QAAUA,KAAK/8V,OAAS,EAEvEg9V,EAAcn6L,IAAW,iBAC3B,eAAgBi6L,IAGdG,IAAmBnsV,MAAO6rV,EAAcj5V,OAAQ,IACjDmtB,OACGszF,EACKtwF,OAAO,SAACO,GAAD,QAAYA,IACnBpE,IAAI,SAACktU,GAAD,OAAepsV,MAAOosV,EAAO56V,KAAMoB,MAAOw5V,EAAO56V,SAG5D4lN,EAAS40I,GAAeA,EACzBn8G,EAAA,GADU,QAEEs8G,EAFF,cAGO,eAHP,SAIGj/U,KAAKy+U,sBAGjB5lH,EAAU+lH,EAAmB,EAAI,EACjCO,IAqFN,OAnFAh5O,GAAcpmE,QAAQ,SAACgnE,GACnB,GAAMq4O,IACoC,IAAtC,EAAK36U,MAAM+5U,yBAELz3O,IAAqD,IAAtC,EAAKtiG,MAAM+5U,uBAC5B,EAAK/5U,MAAM+5U,wBAA0Bz3O,EAAYziH,IAEnDyiH,IAAeq4O,EACjBD,EAAcj9V,KAAd,sBACyBi9V,EAAcn9V,OADvC,iCAGyB62O,UAHzB,mBAG0C9xH,EAAYziH,UAMtD66V,EAAcj9V,KAAd,sBAAwCi9V,EAAcn9V,QAG1D,IAAMq9V,GACFR,EAA8B93O,GAAeA,EAAYziH,MAASyiH,OAElEu4O,IACAF,KACAE,EAAwBD,GAG5BF,EAAcj9V,KAAd,sBACyBi9V,EAAcn9V,OAC9Bs9V,EAAsBttU,IAAI,SAAC65E,GACxB,GAAMoC,GAAWpD,YAAgB+rH,YAAsB/qH,GAAUj0E,EAAUX,GAErExxB,EAAMwoG,EAAWA,UAAX,UACQ,4CAChB,KAEEsxP,EAAsB1zP,EAAQ6b,WAAW,GAAGj9C,aAC5CgzR,EAAe5xP,EAAQ6b,WAAW,GAAG53C,SACrCj8C,EAAS0pU,EACXgC,EACA9B,GAEE+B,EAAY3rU,GAAUA,EAAO7B,IAAI,eAAG8B,GAAH,EAAGA,MAAO80K,EAAV,EAAUA,GAAV,qBACzB90K,EADyB,IACb80K,MAEpB53I,EAAY66C,EAAQ76C,WAAav7C,IAAW8xE,YAAYskB,EAAQ76C,WAChE81B,EAAc91B,GAAav7C,IAAWA,WAAWu7C,EAAWgkL,GAE5Dn3I,EAAYA,YAAYgO,EAAQnoG,KAChC+7V,EAAiB7oI,YAAsB/qH,GACvC6zP,EAAcpC,EAClBzxP,EACA4xP,GACCt2V,IAAawH,UAAWxH,IAAayH,cAAezH,IAAa0H,eAGpE,wBACmBg9F,EAAQvvF,GAD3B,kBAEsB,yBAAkBwqE,GAFxC,kBAGsB,gCAHtB,EAIag6O,GAJb,QAKyB2+B,EALzB,QAMyB5zP,EANzB,KAOsB6zP,EAPtB,UAQ2B7hQ,EAR3B,gBASiCogQ,EATjC,WAU4Bp6P,KAV5B,kBAasB,yBAAkBp+F,GAbxC,kBAcsB,4BAdtB,mBAe2B,qCACV+5V,WAUjC,WACcjkO,EAASj/G,GACdqqO,GAAsBA,0BAAtB,UAEsBq4G,UAFtB,oBAG2B,uBACXzjO,EAASj3H,OAGjB4lN,GATjB,EAYS,YACIi1I,Q/5Bsm+GVZ,G+5B1y+G2B79U,YA2MtC69U,GAAwB92P,cACpBk/I,oBAAmBA,GAgBR43G,O/5Byl+GT,SAAUl9V,EAAQD,EAASH,ak6Br4+GjC,SAAY,EAAQ,GAChB4qR,EAAW,EAAQ,IACnBjoM,EAAuB,EAAQ,KAC/B+7Q,EAAcxoP,EAAMH,cAAc,EAAQ,MAC1C4oP,EAAe,EAAQ,KACvBC,EAAe,EAAQ,KACvB7yI,EAA6B,EAAQ,IAAa++D,oCAClD+zE,EAAS,EAAQ,KAEjBC,EAAkBn8Q,EAAqBxsD,UAAY11B,OAAOo1V,eAC1DkJ,EAAap8Q,EAAqBxsD,UAAY7zB,SAAS08D,MAAQ/7D,YAAa,cAE5E0sK,EAAQz5D,EAAME,aAEhB/yF,YAAa,QACbwuM,SACEmtI,cAAe,SAASn/U,GACpBk/U,EAAaJ,EAAaM,WAAWp/U,IAEzCq/U,UAAW,cAObx/U,WACEy/U,OAAQjpP,EAAM7yC,UAAUuU,KAAKh4D,WAC7Bw6D,MAAO87B,EAAM7yC,UAAUv5C,OACrBwnC,QAAS4kD,EAAM7yC,UAAUv/D,OACzBs7V,QAASlpP,EAAM7yC,UAAUv/D,SAE3Bu7V,WAAYnpP,EAAM7yC,UAAUmnN,WAAWs0E,GACvCQ,YAAappP,EAAM7yC,UAAUt5C,KAC7Bw1U,eAAgBrpP,EAAM7yC,UAAUt5C,KAChCy1U,eAAgBtpP,EAAM7yC,UAAUsU,OAChC8nR,YAAavpP,EAAM7yC,UAAUuU,KAC7B8nR,0BAA2BxpP,EAAM7yC,UAAUuU,MAG7CguD,gBAAiB,WACf,OACEu5N,QAAOA,EACPM,aAAYA,EACZD,eAAgB,EAChBE,2BAA0BA,IAI9Bx7U,kBAAmB,WACjBnF,KAAKitB,KAAO1pC,SAASE,cAAc,OACnCuc,KAAKitB,KAAK0zB,UAAY,mBACtBp9D,SAAS08D,KAAK/7D,YAAY8b,KAAKitB,MAC/BjtB,KAAK4gV,aAAa5gV,KAAKH,QAGzByF,0BAA2B,SAAS6oF,GAClCnuF,KAAK4gV,aAAazyP,IAGpB5oF,qBAAsB,WACpBsmQ,EAASr+D,uBAAuBxtM,KAAKitB,MACrC1pC,SAAS08D,KAAKggB,YAAYjgE,KAAKitB,MAC/B4yT,EAAat8V,SAAS08D,MAAM3I,OAAO,2BAGrCspS,aAAc,SAAS/gV,GACjBA,EAAMugV,OACRP,EAAat8V,SAAS08D,MAAM+lB,IAAI,0BAEhC65Q,EAAat8V,SAAS08D,MAAM3I,OAAO,0BAGjCz3C,EAAM6gV,aACRd,EAAap8S,OAAO3jC,EAAMugV,OAAQvgV,EAAMygV,YAG1CtgV,KAAK6gV,OAAS7zI,EAA2BhtM,KAAM2/U,EAAYG,KAAWjgV,GAAQgxJ,cAAeD,EAAMC,iBAAkB7wJ,KAAKitB,OAG5H5sB,OAAQ,WACN,MAAO82F,GAAMK,IAAIp1B,aAIrBwuF,GAAMC,eACJwvL,SACEt+L,SAAkB,QAClBmM,IAAkB,EAClBE,KAAkB,EAClBC,MAAkB,EAClBF,OAAkB,EAClBO,gBAAkB,6BAEpBn8G,SACEwvG,SAA0B,WAC1BmM,IAA0B,OAC1BE,KAA0B,OAC1BC,MAA0B,OAC1BF,OAA0B,OAC1BwwC,OAA0B,iBAC1BpwC,WAA0B,OAC1B/lC,SAA0B,OAC1Bs4N,wBAA0B,QAC1BtyL,aAA0B,MAC1B4xC,QAA0B,OAC1B9xC,QAA0B,SAI9BjtK,EAAOD,QAAUwvK,Il6By4+GYpvK,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,Gm6B3/+GjC;;;;;CAMC,WACA,YAEA,IAAIm2B,KACe,mBAAX11B,UACPA,OAAO6B,WACP7B,OAAO6B,SAASE,eAGbmgF,GAEHxsD,UAAWA,EAEXysD,cAAiC,mBAAXC,QAEtBC,qBACC3sD,MAAgB11B,OAAOsiF,mBAAoBtiF,OAAOuiF,aAEnDC,eAAgB9sD,KAAe11B,OAAOyiF,kBAKtC,aACC,MAAOP,IACP,kCn6B0g/GG,SAAUviF,EAAQD,EAASH,Go6Bzi/GjC,GAAIk2G,GAAQ,EAAQ,GAChBh0D,EAAMg0D,EAAMK,IAAIr0D,IAChB49S,EAAe,EAAQ,KACvBC,EAAW,EAAQ,KACnBlB,EAAS,EAAQ,KAGjBmB,GACFZ,SACE9kT,KAAM,sBACN2lT,UAAW,kCACXC,YAAa,qCAEf5uS,SACEhX,KAAM,sBACN2lT,UAAW,kCACXC,YAAa,qCAIC9/V,GAAOD,QAAU+1G,EAAME,aAEvC/yF,YAAa,cAEbuiH,gBAAiB,WACf,OACExrD,OACEglR,WACA9tS,cAKNsyN,gBAAiB,WACf,OACEq8E,WAAUA,EACVC,aAAYA,IAIhBh8U,kBAAmB,WAEbnF,KAAKH,MAAMugV,SACbpgV,KAAKohV,qBAAoBA,GACzBphV,KAAKutF,SAIThoF,qBAAsB,WACpB1iB,aAAamd,KAAKqhV,aAGpB/7U,0BAA2B,SAAS6oF,IAE7BnuF,KAAKH,MAAMugV,QAAUjyP,EAASiyP,QACjCpgV,KAAKohV,qBAAoBA,GACzBphV,KAAKutF,QACIvtF,KAAKH,MAAMugV,SAAWjyP,EAASiyP,QACxCpgV,KAAKg1E,SAIT/uE,mBAAoB,WACdjG,KAAKshV,mBACPthV,KAAKuhV,eACLvhV,KAAKohV,qBAAoBA,KAI7BA,oBAAqB,SAAUnlJ,GAC7Bj8L,KAAKshV,iBAAmBrlJ,GAG1B1uG,KAAM,WACAvtF,KAAKyE,MAAMy8U,WAAalhV,KAAKyE,MAAM08U,aACrCt+V,aAAamd,KAAKqhV,YAClBrhV,KAAKmG,UAAWg7U,aAAYA,MAE5BJ,EAAaS,iBAAiBxhV,KAAKitB,MACnC8zT,EAAaU,oBACbzhV,KAAKmG,UAAUi6U,QAAOA,GAAQ,WAC5BpgV,KAAKmG,UAAU+6U,WAAUA,IAErBlhV,KAAKH,MAAMugV,QAAUpgV,KAAKH,MAAM0gV,aAClCvgV,KAAKH,MAAM0gV,eAEbz7U,KAAK9E,SAIXg1E,MAAO,WACAh1E,KAAK0hV,sBAEN1hV,KAAKH,MAAM4gV,eAAiB,EAC9BzgV,KAAK2hV,mBAEL3hV,KAAK4hV,wBAGTL,aAAc,WACZvhV,KAAK4+J,KAAKrsH,QAAQ0pJ,SAGpB0lJ,iBAAkB,WAChB3hV,KAAKmG,UAAUg7U,aAAYA,GAAQ,WACjCnhV,KAAKqhV,WAAap9V,WAAW+b,KAAK4hV,oBAAqB5hV,KAAKH,MAAM4gV,iBAClE37U,KAAK9E,QAGT4hV,oBAAqB,WACnB5hV,KAAKmG,UACHg7U,aAAYA,EACZf,QAAOA,EACPc,WAAUA,GACTlhV,KAAK6hV,aAGVA,WAAY,WACVd,EAAae,cACbf,EAAagB,uBAGfC,cAAe,SAAS92T,GACD,GAAjBA,EAAMwhI,SAAsBs0L,EAAShhV,KAAK4+J,KAAKrsH,QAASrnB,GACvC,IAAjBA,EAAMwhI,UACRxhI,EAAMkvD,iBACNp6E,KAAKiiV,aAAa/2T,KAItBg3T,mBAAoB,SAASh3T,GAG3B,IAFA,GAAI+B,GAAO/B,EAAM5pB,OAEV2rB,GAAM,CACX,GAAIA,IAASjtB,KAAK4+J,KAAKrsH,QAAS,MAChCtlB,GAAOA,EAAK45B,WAGV7mD,KAAKH,MAAM8gV,4BACT3gV,KAAK0hV,oBACP1hV,KAAKiiV,aAAa/2T,GAElBlrB,KAAKuhV,iBAIXU,aAAc,SAAS/2T,GACjBlrB,KAAK0hV,qBACP1hV,KAAKH,MAAM2gV,eAAet1T,IAG9Bw2T,kBAAmB,WACjB,MAAO1hV,MAAKH,MAAM2gV,gBAGpB2B,eAAgB,WACd,OAAQniV,KAAKH,MAAMugV,SAAWpgV,KAAKyE,MAAM08U,aAG3CiB,eAAgB,SAASlvF,EAAOmvF,GAC9B,GAAI1hS,GAAYsgS,EAAY/tF,GAAO33N,IAKnC,OAJIv7B,MAAKyE,MAAMy8U,YACbvgS,GAAa,IAAIsgS,EAAY/tF,GAAOguF,WAClClhV,KAAKyE,MAAM08U,cACbxgS,GAAa,IAAIsgS,EAAY/tF,GAAOiuF,aAC/BkB,EAAa1hS,EAAY,IAAM0hS,EAAa1hS,GAGrDtgD,OAAQ,WACN,GAAIiiV,GAAiBtiV,KAAKH,MAAe,aAASG,KAAKH,MAAMgxJ,cAAct+G,QACvEgwS,EAAiBviV,KAAKH,MAAsB,oBAASG,KAAKH,MAAMgxJ,cAAcwvL,OAElF,OAAOrgV,MAAKmiV,iBAAmBh/S,IAC7BA,GACEv9B,IAAK,UACL+6C,UAAW3gD,KAAKoiV,eAAe,UAAWpiV,KAAKH,MAAM2iV,kBACrDnnR,MAAOykR,KAAWyC,EAAeviV,KAAKH,MAAMw7D,MAAMglR,aAClD/iO,QAASt9G,KAAKkiV,oBAEd/+S,GACEv9B,IAAK,UACLy1D,MAAOykR,KAAWwC,EAAetiV,KAAKH,MAAMw7D,MAAM9oB,aAClDoO,UAAW3gD,KAAKoiV,eAAe,UAAWpiV,KAAKH,MAAM8gD,WACrDynL,SAAU,KACVq6G,UAAWziV,KAAKgiV,eAEhBhiV,KAAKH,MAAMY,ep6Bqj/Gf,SAAUpf,EAAQD,EAASH,aq6B/u/GjC,GAKA,QAASyhW,GAAWx3T,GAClBy3T,KAGF,QAASC,GAAY13T,GACnB,GAAIy3T,EAAa,CAEf,GADAA,MACKE,EACH,MAOF5+V,YAAW,WACL4+V,EAAanlK,SAASn6L,SAAS6mN,iBAEzB04I,EAAaD,GAAc,IAAMA,GACxC5mJ,SACF,IAzBP,GAAI,GAAe,EAAQ,KACvB4mJ,EAAe,KACfE,EAAoB,KACpBJ,IA0BJvhW,GAAQqgW,kBAAoB,WAC1BsB,EAAoBx/V,SAAS6mN,eAG/BhpN,EAAQ0gW,YAAc,WACpB,IACEiB,EAAkB9mJ,QAEpB,MAAOz5M,GACL2C,EAAQyN,KAAK,gCAAgCmwV,EAAkB,qCAEjEA,EAAoB,MAGtB3hW,EAAQogW,iBAAmB,SAAS1gV,GAClC+hV,EAAe/hV,EAEXpf,OAAOsiF,kBACTtiF,OAAOsiF,iBAAiB,OAAQ0+Q,MAChCn/V,SAASygF,iBAAiB,QAAS4+Q,QAEnClhW,OAAOuiF,YAAY,SAAUy+Q,GAC7Bn/V,SAAS0gF,YAAY,UAAW2+Q,KAIpCxhW,EAAQ2gW,oBAAsB,WAC5Bc,EAAe,KAEXnhW,OAAOsiF,kBACTtiF,OAAO6qK,oBAAoB,OAAQm2L,GACnCn/V,SAASgpK,oBAAoB,QAASq2L,KAEtClhW,OAAOwpL,YAAY,SAAUw3K,GAC7Bn/V,SAAS2nL,YAAY,UAAW03K,Or6Buv/GPphW,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,Gs6B1z/GjC,GAAI6hW,GAAe,EAAQ,IAE3BzhW,GAAOD,QAAU,SAAS6rC,EAAM/B,GAC9B,GAAIi9M,GAAW26G,EAAa71T,EAC5B,KAAKk7M,EAASnmP,OAEV,WADAkpC,GAAMkvD,gBAGU+tJ,GAASj9M,EAAMkpH,SAAW,EAAI+zF,EAASnmP,OAAS,KAEhDuB,SAAS6mN,eAE3Bn9K,IAAS1pC,SAAS6mN,gBAGpBl/K,EAAMkvD,iBACO+tJ,EAASj9M,EAAMkpH,SAAW+zF,EAASnmP,OAAS,EAAI,GACtDi6M,Wt6Bk0/GH,SAAU56M,EAAQD,EAASH,Gu6B/z/GjC,QAASunP,GAAWzjP,EAAQwc,GAC1B,MAAiB,OAAVA,EACHxc,EACAi+V,EAASzhV,EAAQvW,EAAKuW,GAASxc,GAfrC,GAAIi+V,GAAW,EAAQ,KACnBh4V,EAAO,EAAQ,IAiBnB3J,GAAOD,QAAUonP,Gv6B01/GX,SAAUnnP,EAAQD,Gw6Bl2/GxB,QAAS4hW,GAASzhV,EAAQ1B,EAAO9a,GAC/BA,IAAWA,KAKX,KAHA,GAAI2sB,IAAS,EACT1vB,EAAS6d,EAAM7d,SAEV0vB,EAAQ1vB,GAAQ,CACvB,GAAIyD,GAAMoa,EAAM6R,EAChB3sB,GAAOU,GAAO8b,EAAO9b,GAEvB,MAAOV,GAGT1D,EAAOD,QAAU4hW,Gx6B23/GX,SAAU3hW,EAAQD,Gy6Bp4/GxB,QAASynG,GAAanjG,GACpB,QAASA,GAAyB,gBAATA,GAgC3B,QAASusG,GAAUltG,EAAQU,GACzB,GAAIC,GAAkB,MAAVX,SAA6BA,EAAOU,EAChD,OAAO2/M,GAAS1/M,GAASA,SAmB3B,QAASs1F,GAAWt1F,GAIlB,MAAOo8B,GAASp8B,IAAUu9V,EAAYzhW,KAAKkE,IAAUyxL,EAuBvD,QAASr1J,GAASp8B,GAGhB,GAAIhC,SAAcgC,EAClB,SAASA,IAAkB,UAARhC,GAA4B,YAARA,GAmBzC,QAAS0hN,GAAS1/M,GAChB,MAAa,OAATA,IAGAs1F,EAAWt1F,GACN2/M,EAAWz/K,KAAKs9T,EAAW1hW,KAAKkE,IAElCmjG,EAAanjG,IAAUsqT,EAAapqR,KAAKlgC,IA3HlD,GAAIyxL,GAAU,oBAGV64H,EAAe,8BAcfziK,EAAcprJ,OAAOC,UAGrB8gW,EAAax5S,SAAStnD,UAAU67B,SAGhC57B,EAAiBkrJ,EAAYlrJ,eAM7B4gW,EAAc11M,EAAYtvH,SAG1BonL,EAAazmK,OAAO,IACtBskT,EAAW1hW,KAAKa,GAAgB0qB,QAAQ,sBAAuB,QAC9DA,QAAQ,yDAA0D,SAAW,IA4FhF1rB,GAAOD,QAAU6wG,Gz6Bi6/GX,SAAU5wG,EAAQD,G06Bt//GxB,QAASosJ,GAAY9nJ,GAEnB,MAAO07N,GAAkB17N,IAAUrD,EAAeb,KAAKkE,EAAO,aAC1DmpD,EAAqBrtD,KAAKkE,EAAO,WAAaqsG,EAAevwG,KAAKkE,IAAUqoO,GA4BlF,QAASjzI,GAAYp1F,GACnB,MAAgB,OAATA,GAAiBq1F,EAASr1F,EAAM1D,UAAYg5F,EAAWt1F,GA4BhE,QAAS07N,GAAkB17N,GACzB,MAAOmjG,GAAanjG,IAAUo1F,EAAYp1F,GAoB5C,QAASs1F,GAAWt1F,GAGlB,GAAI83E,GAAM17C,EAASp8B,GAASqsG,EAAevwG,KAAKkE,GAAS,EACzD,OAAO83E,IAAO25G,GAAW35G,GAAO45G,EA6BlC,QAASr8F,GAASr1F,GAChB,MAAuB,gBAATA,IACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS65J,EA4B7C,QAASz9H,GAASp8B,GAChB,GAAIhC,SAAcgC,EAClB,SAASA,IAAkB,UAARhC,GAA4B,YAARA,GA2BzC,QAASmlG,GAAanjG,GACpB,QAASA,GAAyB,gBAATA,GAvN3B,GAAI65J,GAAmB,iBAGnBwuE,EAAU,qBACV52C,EAAU,oBACVC,EAAS,6BAGT7pC,EAAcprJ,OAAOC,UAGrBC,EAAiBkrJ,EAAYlrJ,eAO7B0vG,EAAiBw7C,EAAYtvH,SAG7B4wB,EAAuB0+F,EAAY1+F,oBAqMvCxtD,GAAOD,QAAUosJ,G16BgjgHX,SAAUnsJ,EAAQD,G26B7vgHxB,QAASynG,GAAanjG,GACpB,QAASA,GAAyB,gBAATA,GAuD3B,QAASq1F,GAASr1F,GAChB,MAAuB,gBAATA,IAAqBA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS65J,EAuC9E,QAASvkE,GAAWt1F,GAIlB,MAAOo8B,GAASp8B,IAAUu9V,EAAYzhW,KAAKkE,IAAUyxL,EAuBvD,QAASr1J,GAASp8B,GAGhB,GAAIhC,SAAcgC,EAClB,SAASA,IAAkB,UAARhC,GAA4B,YAARA,GAmBzC,QAAS0hN,GAAS1/M,GAChB,MAAa,OAATA,IAGAs1F,EAAWt1F,GACN2/M,EAAWz/K,KAAKs9T,EAAW1hW,KAAKkE,IAElCmjG,EAAanjG,IAAUsqT,EAAapqR,KAAKlgC,IAtKlD,GACIyxL,GAAU,oBAGV64H,EAAe,8BAcfziK,EAAcprJ,OAAOC,UAGrB8gW,EAAax5S,SAAStnD,UAAU67B,SAGhC57B,EAAiBkrJ,EAAYlrJ,eAM7B4gW,EAAc11M,EAAYtvH,SAG1BonL,EAAazmK,OAAO,IACtBskT,EAAW1hW,KAAKa,GAAgB0qB,QAAQ,sBAAuB,QAC9DA,QAAQ,yDAA0D,SAAW,KAI5Eo2U,EAgBJ,SAAmBp+V,EAAQU,GACzB,GAAIC,GAAkB,MAAVX,SAA6BA,EAAOU,OAChD,OAAO2/M,GAAS1/M,GAASA,UAlBGsO,OAM1BurJ,EAAmB,iBA4CnBxuI,EAAUoyU,GAAiB,SAASz9V,GACtC,MAAOmjG,GAAanjG,IAAUq1F,EAASr1F,EAAM1D,SA1FhC,kBA0F2CihW,EAAYzhW,KAAKkE,GA+E3ErE,GAAOD,QAAU2vB,G36B2xgHX,SAAU1vB,EAAQD,EAASH,G46Bx7gHjC,QAASwnP,GAAexa,GACtB,MAAOm1H,GAAU,SAASr+V,EAAQmpO,GAChC,GAAIx8M,IAAS,EACT1vB,EAAmB,MAAV+C,EAAiB,EAAImpO,EAAQlsO,OACtCupO,EAAavpO,EAAS,EAAIksO,EAAQlsO,EAAS,UAC3CmsO,EAAQnsO,EAAS,EAAIksO,EAAQ,UAC7BzxM,EAAUz6B,EAAS,EAAIksO,EAAQlsO,EAAS,SAa5C,KAXyB,kBAAdupO,IACTA,EAAa83H,EAAa93H,EAAY9uM,EAAS,GAC/Cz6B,GAAU,IAEVupO,EAA+B,kBAAX9uM,GAAwBA,SAC5Cz6B,GAAWupO,EAAa,EAAI,GAE1B4C,GAASL,EAAeI,EAAQ,GAAIA,EAAQ,GAAIC,KAClD5C,EAAavpO,EAAS,SAAgBupO,EACtCvpO,EAAS,KAEF0vB,EAAQ1vB,GAAQ,CACvB,GAAIuf,GAAS2sN,EAAQx8M,EACjBnQ,IACF0sN,EAASlpO,EAAQwc,EAAQgqN,GAG7B,MAAOxmO,KAvCX,GAAIs+V,GAAe,EAAQ,KACvBv1H,EAAiB,EAAQ,KACzBs1H,EAAY,EAAQ,IAyCxB/hW,GAAOD,QAAUqnP,G56Bq9gHX,SAAUpnP,EAAQD,G66Br/gHxB,QAASiiW,GAAar4U,EAAMyR,EAASpP,GACnC,GAAmB,kBAARrC,GACT,MAAO+iI,EAET,aAAItxH,EACF,MAAOzR,EAET,QAAQqC,GACN,IAAK,GAAG,MAAO,UAAS3nB,GACtB,MAAOslB,GAAKxpB,KAAKi7B,EAAS/2B,GAE5B,KAAK,GAAG,MAAO,UAASA,EAAOgsB,EAAOo5M,GACpC,MAAO9/M,GAAKxpB,KAAKi7B,EAAS/2B,EAAOgsB,EAAOo5M,GAE1C,KAAK,GAAG,MAAO,UAASuyH,EAAa33V,EAAOgsB,EAAOo5M,GACjD,MAAO9/M,GAAKxpB,KAAKi7B,EAAS4gU,EAAa33V,EAAOgsB,EAAOo5M,GAEvD,KAAK,GAAG,MAAO,UAASplO,EAAOszH,EAAOvzH,EAAKV,EAAQwc,GACjD,MAAOyJ,GAAKxpB,KAAKi7B,EAAS/2B,EAAOszH,EAAOvzH,EAAKV,EAAQwc,IAGzD,MAAO,YACL,MAAOyJ,GAAKtY,MAAM+pB,EAAS9pB,YAmB/B,QAASo7I,GAASroJ,GAChB,MAAOA,GAGTrE,EAAOD,QAAUiiW,G76B+ghHX,SAAUhiW,EAAQD,G86B7hhHxB,QAAS05F,GAAYp1F,GACnB,MAAgB,OAATA,GAAiBq1F,EAAS2tJ,EAAUhjP,IAW7C,QAAS45J,GAAQ55J,EAAO1D,GAGtB,MAFA0D,GAAyB,gBAATA,IAAqB85J,EAAS55H,KAAKlgC,IAAWA,GAAS,EACvE1D,EAAmB,MAAVA,EAAiBu9J,EAAmBv9J,EACtC0D,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQ1D,EAYjD,QAAS8rO,GAAepoO,EAAOgsB,EAAO3sB,GACpC,IAAK+8B,EAAS/8B,GACZ,OAAM,CAER,IAAIrB,SAAcguB,EAClB,IAAY,UAARhuB,EACGo3F,EAAY/1F,IAAWu6J,EAAQ5tI,EAAO3sB,EAAO/C,QACrC,UAAR0B,GAAoBguB,IAAS3sB,GAAS,CAC3C,GAAIi0H,GAAQj0H,EAAO2sB,EACnB,OAAOhsB,KAAUA,EAASA,IAAUszH,EAAUA,IAAUA,EAE1D,OAAM,EAYR,QAASj+B,GAASr1F,GAChB,MAAuB,gBAATA,IAAqBA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS65J,EAuB9E,QAASz9H,GAASp8B,GAGhB,GAAIhC,SAAcgC,EAClB,SAASA,IAAkB,UAARhC,GAA4B,YAARA,GAtHzC,GAAI87J,GAAW,QAMXD,EAAmB,iBAyBnBmpF,EAhBJ,SAAsBjjP,GACpB,MAAO,UAASV,GACd,MAAiB,OAAVA,SAA6BA,EAAOU,UAwG/CpE,GAAOD,QAAU0sO,G96BslhHX,SAAUzsO,EAAQD,G+6BprhHxB,QAASgiW,GAAUp4U,EAAM27D,GACvB,GAAmB,kBAAR37D,GACT,KAAM,IAAIkT,WAAU2xN,EAGtB,OADAlpK,GAAQw0G,WAAUx0G,EAAuB37D,EAAKhpB,OAAS,GAAO2kF,GAAS,EAAI,GACpE,WAML,IALA,GAAI95D,GAAOla,UACP+e,GAAS,EACT1vB,EAASm5L,EAAUtuK,EAAK7qB,OAAS2kF,EAAO,GACxCwjG,EAAOn2K,MAAMhS,KAER0vB,EAAQ1vB,GACfmoL,EAAKz4J,GAAS7E,EAAK85D,EAAQj1D,EAE7B,QAAQi1D,GACN,IAAK,GAAG,MAAO37D,GAAKxpB,KAAKwe,KAAMmqK,EAC/B,KAAK,GAAG,MAAOn/J,GAAKxpB,KAAKwe,KAAM6M,EAAK,GAAIs9J,EACxC,KAAK,GAAG,MAAOn/J,GAAKxpB,KAAKwe,KAAM6M,EAAK,GAAIA,EAAK,GAAIs9J,GAEnD,GAAI6tC,GAAYhkN,MAAM2yE,EAAQ,EAE9B,KADAj1D,GAAS,IACAA,EAAQi1D,GACfqxI,EAAUtmM,GAAS7E,EAAK6E,EAG1B,OADAsmM,GAAUrxI,GAASwjG,EACZn/J,EAAKtY,MAAMsN,KAAMg4M,IApD5B,GAAI63B,GAAkB,sBAGlB10D,EAAY78J,KAAKC,GAqDrBl9B,GAAOD,QAAUgiW,G/6BguhHX,SAAU/hW,EAAQD,Gg7BhyhHxB,QAAS8+V,GAAWp/U,GAClB,GAAuB,gBAAZA,GAAsB,CAC/B,GAAI2/C,GAAKl9D,SAASg8E,iBAAiBz+D,EACnCA,GAAU,UAAY2/C,GAAKA,EAAG,GAAKA,EAGrC,MADA6iS,GAAWxiV,GAAWwiV,EAIxB,QAASC,GAAKjD,GACZkD,EAAgBlD,IACfA,GAAcgD,GAAUx/V,aAAa,cAAe,QAGvD,QAASg5D,GAAKwjS,GACZkD,EAAgBlD,IACfA,GAAcgD,GAAUpkR,gBAAgB,eAG3C,QAAS17B,GAAOigT,EAAYnD,GACtBmD,EACFF,EAAKjD,GAELxjS,EAAKwjS,GAGT,QAASkD,GAAgBlD,GACvB,IAAKA,IAAegD,EAClB,KAAM,IAAItgW,OAAM,+FAGpB,QAAS0gW,KACPJ,EAAW//V,SAAS08D,KAlCtB,GAAIqjS,GAA+B,mBAAb//V,UAA2BA,SAAS08D,KAAO,IAqCjE7+D,GAAQoiD,OAASA,EACjBpiD,EAAQ8+V,WAAaA,EACrB9+V,EAAQ07D,KAAOA,EACf17D,EAAQmiW,KAAOA,EACfniW,EAAQsiW,gBAAkBA,Gh7ByyhHpB,SAAUriW,EAAQD,Gi7B90hHxB,QAASsa,GAAQ9H,EAAKg9B,GACpB,GAAIh9B,EAAI8H,QAAS,MAAO9H,GAAI8H,QAAQk1B,EACpC,KAAK,GAAItvC,GAAI,EAAGuxC,EAAMj/B,EAAI5R,OAAQV,EAAIuxC,EAAKvxC,IACzC,GAAIsS,EAAItS,KAAOsvC,EAAM,MAAOtvC,EAC9B,QAAQ,EAGV,QAASqiW,GAAap3T,GACpB,KAAMvsB,eAAgB2jV,IAAe,MAAO,IAAIA,GAAap3T,EAExDA,KAAMA,MAGPA,EAAK44B,WAAU54B,GAAQk0B,GAAIl0B,IAE/BvsB,KAAKusB,KAAOA,EACZvsB,KAAKygD,GAAKl0B,EAAKk0B,IAAMl9D,SAAS08D,KACP,gBAAZjgD,MAAKygD,KAAiBzgD,KAAKygD,GAAKl9D,SAAS87E,cAAcr/D,KAAKygD,KArBzEp/D,EAAOD,QAAU,SAASmrC,GACxB,MAAO,IAAIo3T,GAAap3T,IAuB1Bo3T,EAAavhW,UAAU4jF,IAAM,SAASrlB,GACpC,GAAIF,GAAKzgD,KAAKygD,EACd,IAAKA,EAAL,CACA,GAAqB,KAAjBA,EAAGE,UAAkB,MAAOF,GAAGE,UAAYA,CAC/C,IAAIrS,GAAUmS,EAAGE,UAAUjjD,MAAM,IACjC,OAAIhC,GAAQ4yC,EAASqS,IAAc,EAAUrS,GAC7CA,EAAQpsD,KAAKy+D,GACbF,EAAGE,UAAYrS,EAAQr8B,KAAK,KACrBq8B,KAGTq1S,EAAavhW,UAAUk1D,OAAS,SAASqJ,GACvC,GAAIF,GAAKzgD,KAAKygD,EACd,IAAKA,GACgB,KAAjBA,EAAGE,UAAP,CACA,GAAIrS,GAAUmS,EAAGE,UAAUjjD,MAAM,KAC7B+vI,EAAM/xI,EAAQ4yC,EAASqS,EAG3B,OAFI8sF,IAAO,GAAGn/F,EAAQjsC,OAAOorI,EAAK,GAClChtF,EAAGE,UAAYrS,EAAQr8B,KAAK,KACrBq8B,IAGTq1S,EAAavhW,UAAU2uC,IAAM,SAAS4vB,GACpC,GAAIF,GAAKzgD,KAAKygD,EACd,IAAKA,EAEL,MAAO/kD,GADO+kD,EAAGE,UAAUjjD,MAAM,KACTijD,IAAc,GAGxCgjS,EAAavhW,UAAUohD,OAAS,SAASmd,GAC9B3gD,KAAKygD,KAEVzgD,KAAK+wB,IAAI4vB,GAAY3gD,KAAKs3C,OAAOqJ,GAChC3gD,KAAKgmE,IAAIrlB,Mj7B01hHV,SAAUt/D,EAAQD,EAASH,GAEjC,Yk7Bn5hHAG,GAAQ0D,aAER,IAAI8+V,GAAU,EAAQ,KAElBC,EAEJ,SAAgCr+V,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,IAFjDo+V,EAItCxiW,GAAQqtD,QAAUo1S,EAASp1S,Sl7B05hHrB,SAAUptD,EAAQD,EAASH,GAEjC,cAAa,Sm7Bt6hHb,GAsBA,QAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASk+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA1Bje/d,EAAQ0D,aAER,IAAIsc,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCgoR,EAAe,EAAQ,KAEvBC,EAAW,EAAQ,KAEnBC,EAAYnoR,EAAuBkoR,GAEnCE,EAAgB,EAAQ,KAExBC,EAAiBroR,EAAuBooR,GAExCE,EAAoB,EAAQ,KAU5BC,KAAcD,EAAkB/sU,cAAgB,EAAQ,KAExDitU,EAAS,SAAUhhR,GAGrB,QAASghR,GAAOxkV,GACd6jD,EAAgB1jD,KAAMqkV,EAEtB,IAAItkV,GAAQ8jD,EAA2B7jD,KAAMqjE,EAAiB7hF,KAAKwe,KAAMH,GA+BzE,OA7BAE,GAAMukV,sBAAwB,SAAU1+U,GACtC,MAAO7F,GAAMwkV,YAAc3+U,GAG7B7F,EAAMykV,UAAY,WAChB,MAAOzkV,GAAMwkV,YAAYC,aAG3BzkV,EAAM0kV,UAAY,WAChB,MAAO1kV,GAAMwkV,YAAYE,aAG3B1kV,EAAM2kV,UAAY,SAAUprL,GAC1B,GAAIqrL,GAAchyV,UAAU3Q,OAAS,YAAK2Q,UAAU,IAAmBA,UAAU,EACjF,OAAOoN,GAAMwkV,YAAYG,UAAUprL,EAAOqrL,IAG5C5kV,EAAM6kV,WAAa,WACjB,MAAO7kV,GAAMwkV,YAAY3zM,MAAM,WAGjC7wI,EAAM8kV,UAAY,WAChB,MAAO9kV,GAAMwkV,YAAY30J,SAAS,SAGpC7vL,EAAM0E,OACJq0J,WAAY,MAEd/4J,EAAM+kV,4BACC/kV,EA0KT,MA9MA+jD,GAAUugS,EAAQhhR,GAuClBghR,EAAOjiW,UAAU2yR,MAAQ,SAAex5Q,EAAOsxB,GAE7Cu3T,EAAQW,SAASxpV,EAAOsxB,GACxB7sB,KAAK8kV,yBAAyB5iW,MAAOqZ,MAAOA,EAAOsxB,QAASA,KAM9Dw3T,EAAOjiW,UAAU0iR,mBAAqB,WACpC,GAAI10J,GAASpwG,IAOb,IAAIA,KAAKH,MAAMu6P,WAAY,CACzB,GAAI4qF,GAAchlV,KAAKH,MAAMu6P,WAAWpoP,IAAI,SAAUizU,GACpD,MAAOA,GAAQnsL,YAGjBksL,GAAYj7R,KAAK,SAAUvjD,EAAGC,GAC5B,MAAOD,GAAIC,IAGbu+U,EAAYjlT,QAAQ,SAAU+4H,EAAYpnJ,GAExC,GAAIwzU,SAEFA,GADY,IAAVxzU,KACWsyU,EAAUv1S,UAAW02S,SAAU,EAAGtkH,SAAU/nE,OAE5CkrL,EAAUv1S,UACrB02S,SAAUH,EAAYtzU,EAAQ,GAAK,EACnCmvN,SAAU/nE,OAIVqrL,EAAkB/sU,cAAgBg5F,EAAO2kK,MAAMmwE,EAAQ,WACzD90O,EAAOjqG,UAAW2yJ,WAAYA,OAMlC,IAAIv9J,MAAYyoV,EAAUv1S,UAAW02S,SAAUH,EAAYnxV,OAAO,GAAG,QAEjEswV,EAAkB/sU,cAAgBpX,KAAK+0Q,MAAMx5Q,EAAO,WACtD60G,EAAOjqG,UAAW2yJ,WAAY,WAKpCurL,EAAOjiW,UAAUmjB,qBAAuB,WACtCvF,KAAK8kV,yBAAyB/kT,QAAQ,SAAUv6C,GAC9C4+V,EAAQgB,WAAW5/V,EAAI+V,MAAO/V,EAAIqnC,YAItCw3T,EAAOjiW,UAAUie,OAAS,WACxB,GAEIy8E,GACAqR,EAHAwnJ,EAAS31O,IAITA,MAAKyE,MAAMq0J,YACb3qE,EAAWnuF,KAAKH,MAAMu6P,WAAWvkP,OAAO,SAAUiqG,GAChD,MAAOA,GAAKg5C,aAAe68E,EAAOlxO,MAAMq0J,aAE1Ch8E,EAAoC,YAAzBqR,EAAS,GAAGrR,SAAyB,UAAY17E,KAAa8iV,EAAez1S,QAASzuC,KAAKH,MAAOsuF,EAAS,GAAGrR,WAEzHA,EAAW17E,KAAa8iV,EAAez1S,QAASzuC,KAAKH,OAInDi9E,EAASk3E,aACPl3E,EAASy5E,eAGbz5E,EAASy5E,eAAiB,GAGxBz5E,EAASu5E,OACPv5E,EAASm3E,aAGTn3E,EAASy5E,eAGbz5E,EAASm3E,aAAe,EACxBn3E,EAASy5E,eAAiB,EAI5B,IAAI91J,GAAWs7D,EAAQttB,QAAQluC,SAAS62F,QAAQp3F,KAAKH,MAAMY,SAI3DA,GAAWA,EAASoV,OAAO,SAAU0J,GACnC,MAAqB,gBAAVA,KACAA,EAAMgkE,SAERhkE,IAIPu9D,EAAS29E,gBAAkB39E,EAASgoB,KAAO,GAAKhoB,EAASuoQ,aAAe,KAC1ElgW,EAAQyN,KAAK,0EACbkqF,EAAS29E,iBAIX,KAAK,GAFD6qL,MACAC,EAAe,KACVjkW,EAAI,EAAGA,EAAImf,EAASze,OAAQV,GAAKw7F,EAASgoB,KAAOhoB,EAASuoQ,aAAc,CAE/E,IAAK,GADDzsL,MACK52I,EAAI1gC,EAAG0gC,EAAI1gC,EAAIw7F,EAASgoB,KAAOhoB,EAASuoQ,aAAcrjU,GAAK86D,EAASuoQ,aAAc,CAEzF,IAAK,GADDtsH,MACKhrH,EAAI/rF,EAAG+rF,EAAI/rF,EAAI86D,EAASuoQ,eAC3BvoQ,EAAS29E,eAAiBh6J,EAASstG,GAAGluG,MAAMw7D,QAC9CkqR,EAAe9kV,EAASstG,GAAGluG,MAAMw7D,MAAM2N,SAErC+kC,GAAKttG,EAASze,SAJ2B+rH,GAAK,EAKlDgrH,EAAI72O,KAAK65E,EAAQttB,QAAQwoD,aAAax2F,EAASstG,IAC7CtoH,IAAK,IAAMnE,EAAI,GAAK0gC,EAAI+rF,EACxBq6H,UAAW,EACX/sK,OACE2N,MAAO,IAAM8T,EAASuoQ,aAAe,IACrC3oQ,QAAS,kBAIfk8E,GAAS12K,KAAK65E,EAAQttB,QAAQhrD,cAC5B,OACEgC,IAAK,GAAKnE,EAAI0gC,GAChB+2M,IAGAj8I,EAAS29E,cACX6qL,EAAYpjW,KAAK65E,EAAQttB,QAAQhrD,cAC/B,OACEgC,IAAKnE,EAAG+5E,OAAS2N,MAAOu8Q,IAC1B3sL,IAGF0sL,EAAYpjW,KAAK65E,EAAQttB,QAAQhrD,cAC/B,OACEgC,IAAKnE,GACPs3K,IAKN,GAAiB,YAAb97E,EAAwB,CAC1B,GAAIn8B,GAAY,mBAAqB3gD,KAAKH,MAAM8gD,WAAa,GAC7D,OAAOob,GAAQttB,QAAQhrD,cACrB,OACEk9D,UAAWA,GACb2kS,GAKJ,MAHWA,GAAYtjW,QAAU86F,EAASm3E,eACxCn3E,EAASy9E,YAEJx+F,EAAQttB,QAAQhrD,cACrBqgW,EAAa0B,YACbpkV,GAAWwE,IAAK5F,KAAKskV,uBAAyBxnQ,GAC9CwoQ,IAIGjB,GACPtoR,EAAQttB,QAAQ/tC,UAElBtf,GAAQqtD,QAAU41S,In7Bw6hHW7iW,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,GAEjC,Yo7BvniHA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASs/F,GAAyBt/F,EAAKwF,GAAQ,GAAIsW,KAAa,KAAK,GAAIhgB,KAAKkE,GAAWwF,EAAK0Q,QAAQpa,IAAM,GAAkBa,OAAOC,UAAUC,eAAeb,KAAKgE,EAAKlE,KAAcggB,EAAOhgB,GAAKkE,EAAIlE,GAAM,OAAOggB,GAEnN,QAASoiD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GA/Cje/d,EAAQ0D,cACR1D,EAAQokW,kBAER,IAAIjvR,GAA4B,kBAAXzsB,SAAoD,gBAApBA,QAAOnD,SAAwB,SAAUnhD,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXskD,SAAyBtkD,EAAI6Z,cAAgByqC,QAAUtkD,IAAQskD,OAAO1nD,UAAY,eAAkBoD,IAElQ4b,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjCy3F,EAAY,EAAQ,IAEpBC,EAAa33F,EAAuB03F,GAEpCkyL,EAAgB,EAAQ,KAExBC,EAAiB7pR,EAAuB4pR,GAExCrvB,EAAU,EAAQ,KAElBvB,EAAWh5P,EAAuBu6P,GAElCuvB,EAAc,EAAQ,IAEtBC,EAAe/pR,EAAuB8pR,GAEtCxB,EAAoB,EAAQ,KAE5B0B,EAAS,EAAQ,KAEjBC,EAAQ,EAAQ,KAEhBC,EAAU,EAAQ,KAElBC,EAA0B,EAAQ,KAElCC,EAA2BpqR,EAAuBmqR,EAYpC5kW,GAAQokW,YAAc,SAAUniR,GAGhD,QAASmiR,GAAY3lV,GACnB6jD,EAAgB1jD,KAAMwlV,EAEtB,IAAIzlV,GAAQ8jD,EAA2B7jD,KAAMqjE,EAAiB7hF,KAAKwe,KAAMH,GAqqBzE,OAnqBAE,GAAMmmV,eAAiB,SAAUtgV,GAC/B,MAAO7F,GAAM6/C,KAAOh6C,GAGtB7F,EAAMomV,gBAAkB,SAAUvgV,GAChC,MAAO7F,GAAM6nE,MAAQhiE,GAGvB7F,EAAMqmV,YAAc,WAClB,GAAIrmV,EAAMF,MAAMwmV,gBAAkBtmV,EAAM6/C,KAAM,CAC5C,GAAIu0G,GAAOp0J,EAAM6/C,KAAKyf,cAAc,gBAAmBt/D,EAAM0E,MAAMsvJ,aAAe,KAClFh0J,GAAM6/C,KAAKyb,MAAM4N,UAAak7Q,EAAkBpxL,WAAWoB,GAAQ,OAIvEp0J,EAAM+kQ,mBAAqB,WAGzB,GAFA/kQ,EAAMumV,UACNvmV,EAAMF,MAAM0mV,QAAUxmV,EAAMF,MAAM0mV,SAC9BxmV,EAAMF,MAAMy2J,SAAU,CACxB,GAAIL,MAAmBkuL,EAAkB7wL,uBAAuBlyJ,KAAarB,EAAMF,MAAOE,EAAM0E,OAC5FwxJ,GAAaj0K,OAAS,IACxB+d,EAAMoG,SAAS,SAAUq+Q,GACvB,OACE3wH,eAAgB2wH,EAAU3wH,eAAehhJ,OAAOojJ,MAGhDl2J,EAAMF,MAAM2mV,YACdzmV,EAAMF,MAAM2mV,WAAWvwL,MAM/Bl2J,EAAMoF,kBAAoB,WACxB,GAAIsuJ,GAAOryJ,GAAWm0J,QAASx1J,EAAM6/C,KAAM61G,SAAU11J,EAAM6nE,OAAS7nE,EAAMF,MAC1EE,GAAM0mV,YAAYhzL,KAAY,WAC5B1zJ,EAAMqmV,cACNrmV,EAAMF,MAAMw+G,UAAYt+G,EAAM6vL,SAAS,YAEZ,gBAAzB7vL,EAAMF,MAAMy2J,WACdv2J,EAAM2mV,cAAgBl/J,YAAYznL,EAAM4mV,oBAAqB,MAE/D5mV,EAAM6mV,GAAK,GAAIX,GAAyBx3S,QAAQ,WAC1C1uC,EAAM0E,MAAM2xJ,WACdr2J,EAAM8mV,iBAAgBA,GACtB9mV,EAAM+mV,eAAe5kW,KAAK+B,WAAW,WACnC,MAAO8b,GAAM8mV,mBACZ9mV,EAAMF,MAAMw6J,SAEft6J,EAAM8mV,oBAGV9mV,EAAM6mV,GAAGnjT,QAAQ1jC,EAAM6/C,MACvB5rD,MAAM5R,UAAU29C,QAAQv+C,KAAK+B,SAASg8E,iBAAiB,gBAAiB,SAAU+5F,GAChFA,EAAMytL,QAAUhnV,EAAMF,MAAM+5P,aAAe75P,EAAMinV,aAAe,KAChE1tL,EAAM2tL,OAASlnV,EAAMF,MAAM+5P,aAAe75P,EAAMmnV,YAAc,OAG3DxlW,SAGDA,OAAOsiF,iBACTtiF,OAAOsiF,iBAAiB,SAAUjkE,EAAM8mV,iBAExCnlW,OAAOuiF,YAAY,WAAYlkE,EAAM8mV,mBAIzC9mV,EAAMwF,qBAAuB,WACvBxF,EAAMonV,sBACRtkW,aAAakd,EAAMonV,sBAEjBpnV,EAAM2mV,eACRj/J,cAAc1nL,EAAM2mV,eAElB3mV,EAAM+mV,eAAe9kW,SACvB+d,EAAM+mV,eAAe/mT,QAAQ,SAAUo8R,GACrC,MAAOt5U,cAAas5U,KAEtBp8T,EAAM+mV,mBAEJplW,OAAOsiF,iBACTtiF,OAAO6qK,oBAAoB,SAAUxsJ,EAAM8mV,iBAE3CnlW,OAAOwpL,YAAY,WAAYnrK,EAAM8mV,iBAEnC9mV,EAAMqnV,eACR3/J,cAAc1nL,EAAMqnV,gBAIxBrnV,EAAMuF,0BAA4B,SAAU3C,GAM1C,IAAK,GALD8wJ,GAAOryJ,GACTm0J,QAASx1J,EAAM6/C,KACf61G,SAAU11J,EAAM6nE,OACfjlE,EAAW5C,EAAM0E,OAChB4iV,KACKC,EAAYnlW,OAAO6I,KAAK+U,EAAMF,OAAQ0nV,EAAWvzV,MAAM+c,QAAQu2U,GAAYhxR,EAAK,EAAGgxR,EAAYC,EAAWD,EAAYA,EAAUx9S,OAAOnD,cAAe,CAC7J,GAAIvmC,EAEJ,IAAImnV,EAAU,CACZ,GAAIjxR,GAAMgxR,EAAUtlW,OAAQ,KAC5Boe,GAAOknV,EAAUhxR,SACZ,CAEL,GADAA,EAAKgxR,EAAUzlV,OACXy0D,EAAGxhC,KAAM,KACb10B,GAAOk2D,EAAG5wE,MAGZ,GAAID,GAAM2a,CAEV,KAAKuC,EAAUtgB,eAAeoD,GAAM,CAClC4hW,IACA,OAEF,GAAgC,WAA5B9wR,EAAQ5zD,EAAUld,KAAgD,kBAAnBkd,GAAUld,IAGzDkd,EAAUld,KAASsa,EAAMF,MAAMpa,GAAM,CACvC4hW,IACA,QAGJtnV,EAAM0mV,YAAYhzL,EAAM4zL,EAAe,WACjCtnV,EAAM0E,MAAMsvJ,cAAgBh4F,EAAQttB,QAAQluC,SAASokC,MAAMhiC,EAAUlC,WACvEV,EAAM0yJ,aACJr/J,QAAS,QACTse,MAAOqqD,EAAQttB,QAAQluC,SAASokC,MAAMhiC,EAAUlC,UAAYkC,EAAUsxJ,aACtEF,aAAch0J,EAAM0E,MAAMsvJ,eAG1BpxJ,EAAU07G,SACZt+G,EAAM6vL,SAAS,UAEf7vL,EAAM6wI,MAAM,aAKlB7wI,EAAMkG,mBAAqB,WAGzB,GAFAlG,EAAMynV,kBACNznV,EAAMF,MAAM4nV,UAAY1nV,EAAMF,MAAM4nV,WAChC1nV,EAAMF,MAAMy2J,SAAU,CACxB,GAAIL,MAAmBkuL,EAAkB7wL,uBAAuBlyJ,KAAarB,EAAMF,MAAOE,EAAM0E,OAC5FwxJ,GAAaj0K,OAAS,IACxB+d,EAAMoG,SAAS,SAAUq+Q,GACvB,OACE3wH,eAAgB2wH,EAAU3wH,eAAehhJ,OAAOojJ,MAGhDl2J,EAAMF,MAAM2mV,YACdzmV,EAAMF,MAAM2mV,WAAWvwL,IAO7Bl2J,EAAMqmV,eAGRrmV,EAAM8mV,gBAAkB,SAAUQ,GAC5BtnV,EAAM2nV,iBAAiB3nV,EAAM2nV,gBAAgBtoU,SACjDrf,EAAM2nV,mBAAsB7yB,EAASpmR,SAAS,WAC5C,MAAO1uC,GAAM4nV,aAAaN,IACzB,IACHtnV,EAAM2nV,mBAGR3nV,EAAM4nV,aAAe,WACnB,GAAIN,KAAgB10V,UAAU3Q,OAAS,YAAK2Q,UAAU,KAAmBA,UAAU,EAEnF,IAAK6gK,EAAW/kH,QAAQ6mH,YAAYv1J,EAAM6nE,OAA1C,CACA,GAAI6rF,GAAOryJ,GACTm0J,QAASx1J,EAAM6/C,KACf61G,SAAU11J,EAAM6nE,OACf7nE,EAAMF,MAAOE,EAAM0E,MACtB1E,GAAM0mV,YAAYhzL,EAAM4zL,EAAe,WACjCtnV,EAAMF,MAAMw+G,SAAUt+G,EAAM6vL,SAAS,UAAe7vL,EAAM6wI,MAAM,YAGtE7wI,EAAMoG,UACJiwJ,WAAUA,IAEZvzK,aAAakd,EAAMonV,4BACZpnV,GAAMonV,uBAGfpnV,EAAM0mV,YAAc,SAAUhzL,EAAM4zL,EAAe5wT,GACjD,GAAImxT,MAAmBzD,EAAkBxxL,kBAAkBc,EAC3DA,GAAOryJ,KAAaqyJ,EAAMm0L,GAAgBh0L,WAAYg0L,EAAa7zL,cACnE,IAAIyG,MAAiB2pL,EAAkBryL,cAAc2B,EACrDA,GAAOryJ,KAAaqyJ,GAAQrF,KAAMoM,GAClC,IAAI3D,MAAiBstL,EAAkBnyL,aAAayB,IAChD4zL,GAAiBtrR,EAAQttB,QAAQluC,SAASokC,MAAM5kC,EAAMF,MAAMY,YAAcs7D,EAAQttB,QAAQluC,SAASokC,MAAM8uH,EAAKhzJ,aAChHmnV,EAAyB,WAAI/wL,GAE/B92J,EAAMoG,SAASyhV,EAAcnxT,IAG/B12B,EAAMumV,QAAU,WACd,GAAIvmV,EAAMF,MAAM46J,cAAe,CAC7B,GAAIotL,GAAc,EACdC,EAAa,EACbC,KACAC,KAAgB7D,EAAkBtyL,cAAczwJ,KAAarB,EAAMF,MAAOE,EAAM0E,OAClF0wJ,WAAYp1J,EAAMF,MAAMY,SAASze,UAE/BimW,KAAiB9D,EAAkBvyL,eAAexwJ,KAAarB,EAAMF,MAAOE,EAAM0E,OACpF0wJ,WAAYp1J,EAAMF,MAAMY,SAASze,SAEnC+d,GAAMF,MAAMY,SAASs/B,QAAQ,SAAUxgB,GACrCwoU,EAAe7lW,KAAKq9B,EAAM1f,MAAMw7D,MAAM2N,OACtC6+Q,GAAetoU,EAAM1f,MAAMw7D,MAAM2N,OAEnC,KAAK,GAAI1nF,GAAI,EAAGA,EAAI0mW,EAAW1mW,IAC7BwmW,GAAcC,EAAeA,EAAe/lW,OAAS,EAAIV,GACzDumW,GAAeE,EAAeA,EAAe/lW,OAAS,EAAIV,EAE5D,KAAK,GAAI4mW,GAAM,EAAGA,EAAMD,EAAYC,IAClCL,GAAeE,EAAeG,EAEhC,KAAK,GAAIC,GAAM,EAAGA,EAAMpoV,EAAM0E,MAAMsvJ,aAAco0L,IAChDL,GAAcC,EAAeI,EAE/B,IAAIC,IACFp/Q,MAAO6+Q,EAAc,KACrBz5L,MAAO05L,EAAa,KAEtB,IAAI/nV,EAAMF,MAAMm0J,WAAY,CAC1B,GAAIuxL,GAAewC,EAAehoV,EAAM0E,MAAMsvJ,cAAgB,IAC9Dq0L,GAAYh6L,KAAO,QAAUg6L,EAAYh6L,KAAO,cAAgBm3L,EAAe,WAKjF,WAHAxlV,GAAMoG,UACJ0wJ,WAAYuxL,IAIhB,GAAIC,GAAgBtsR,EAAQttB,QAAQluC,SAASokC,MAAM5kC,EAAMF,MAAMY,UAC3DgzJ,EAAOryJ,KAAarB,EAAMF,MAAOE,EAAM0E,OAAS0wJ,WAAYkzL,IAC5DlzL,KAAiBgvL,EAAkBtyL,cAAc4B,MAAY0wL,EAAkBvyL,eAAe6B,GAAQ40L,EACtG7yL,EAAa,IAAMz1J,EAAMF,MAAMo0J,aAAekB,EAC9CO,EAAa,IAAMP,EACnBmzL,GAAa5yL,MAAkByuL,EAAkBtyL,cAAc4B,GAAQ1zJ,EAAM0E,MAAMsvJ,cAAgByB,EAAa,GAChHz1J,GAAMF,MAAMm0J,aACds0L,IAAc,IAAM5yL,EAAaF,EAAa,KAAO,EAEvD,IAAIqB,IACF7tF,MAAOwsF,EAAa,IACpBpH,KAAMk6L,EAAY,IAEpBvoV,GAAMoG,UACJuvJ,WAAYA,EAAa,IACzBmB,WAAYA,KAIhB92J,EAAMynV,gBAAkB,WACtB,GAAI3zU,GAAStwB,SAASg8E,iBAAiB,oBACnCgpR,EAAc10U,EAAO7xB,OACrBwmW,EAAc,CAClBx0V,OAAM5R,UAAU29C,QAAQv+C,KAAKqyB,EAAQ,SAAUC,GAC7C,GAAI+Y,GAAU,WACZ,QAAS27T,GAAeA,GAAeD,GAAexoV,EAAM8mV,kBAE9D,IAAK/yU,EAAM20U,QAIJ,CACL,GAAIC,GAAmB50U,EAAM20U,OAC7B30U,GAAM20U,QAAU,WACdC,IACA50U,EAAM+yC,WAAWo1I,aAPnBnoL,GAAM20U,QAAU,WACd,MAAO30U,GAAM+yC,WAAWo1I,QASvBnoL,GAAMlxB,SACLmd,EAAMF,MAAMy2J,SACdxiJ,EAAMlxB,OAAS,WACbmd,EAAMqmV,cACNrmV,EAAM+mV,eAAe5kW,KAAK+B,WAAW8b,EAAM8mV,gBAAiB9mV,EAAMF,MAAMw6J,UAG1EvmJ,EAAMlxB,OAASiqC,EACf/Y,EAAMnxB,QAAU,WACdkqC,IACA9sB,EAAMF,MAAM8oV,iBAAmB5oV,EAAMF,MAAM8oV,wBAOrD5oV,EAAM4mV,oBAAsB,WAG1B,IAAK,GAFD1wL,MACAxC,EAAOryJ,KAAarB,EAAMF,MAAOE,EAAM0E,OAClCiN,EAAQ3R,EAAM0E,MAAMsvJ,aAAcriJ,EAAQ3R,EAAM0E,MAAM0wJ,cAAiBgvL,EAAkBvyL,eAAe6B,GAAO/hJ,IACtH,GAAI3R,EAAM0E,MAAMovJ,eAAen4J,QAAQgW,GAAS,EAAG,CACjDukJ,EAAa/zK,KAAKwvB,EAClB,OAGJ,IAAK,GAAI8kS,GAASz2S,EAAM0E,MAAMsvJ,aAAe,EAAGyiJ,OAAe2tC,EAAkBtyL,cAAc4B,GAAO+iJ,IACpG,GAAIz2S,EAAM0E,MAAMovJ,eAAen4J,QAAQ86S,GAAU,EAAG,CAClDvgJ,EAAa/zK,KAAKs0T,EAClB,OAGAvgJ,EAAaj0K,OAAS,GACxB+d,EAAMoG,SAAS,SAAU1B,GACvB,OACEovJ,eAAgBpvJ,EAAMovJ,eAAehhJ,OAAOojJ,MAG5Cl2J,EAAMF,MAAM2mV,YACdzmV,EAAMF,MAAM2mV,WAAWvwL,IAGrBl2J,EAAM2mV,gBACRj/J,cAAc1nL,EAAM2mV,qBACb3mV,GAAM2mV,gBAKnB3mV,EAAM2yJ,aAAe,SAAUhhJ,GAC7B,GAAIizU,GAAchyV,UAAU3Q,OAAS,YAAK2Q,UAAU,IAAmBA,UAAU,GAC7Ei2V,EAAc7oV,EAAMF,MACpBgpV,EAAWD,EAAYC,SACvB90L,EAAe60L,EAAY70L,aAC3B+0L,EAAeF,EAAYE,aAC3BtC,EAAaoC,EAAYpC,WACzBnsL,EAAQuuL,EAAYvuL,MACpB0uL,EAAcH,EAAYG,YAE1BC,KAAoB7E,EAAkBzxL,cAActxJ,GACtDsQ,MAAOA,GACN3R,EAAMF,MAAOE,EAAM0E,OACpBgxJ,SAAU11J,EAAM6nE,MAChB4uF,OAAQz2J,EAAMF,MAAM22J,SAAWmuL,KAE7BlgV,EAAQukV,EAAcvkV,MACtBmF,EAAYo/U,EAAcp/U,SAE9B,IAAKnF,EAAL,CACAqkV,GAAgBA,EAAa/0L,EAActvJ,EAAMsvJ,aACjD,IAAIkC,GAAexxJ,EAAMovJ,eAAeh+I,OAAO,SAAUnwB,GACvD,MAAOqa,GAAM0E,MAAMovJ,eAAen4J,QAAQhW,GAAS,GAErD8gW,IAAcvwL,EAAaj0K,OAAS,GAAKwkW,EAAWvwL,GACpDl2J,EAAMoG,SAAS1B,EAAO,WACpBokV,GAAYA,EAAStE,YAAY9/U,MAAMsvJ,eAAiBA,GAAgB80L,EAAStE,YAAY7xL,aAAahhJ,GACrG9H,IACL7J,EAAMonV,qBAAuBljW,WAAW,WACtC,GAAImyK,GAAYxsJ,EAAUwsJ,UACtB6yL,EAAankQ,EAAyBl7E,GAAY,aAEtD7J,GAAMoG,SAAS8iV,EAAY,WACzBlpV,EAAM+mV,eAAe5kW,KAAK+B,WAAW,WACnC,MAAO8b,GAAMoG,UAAWiwJ,UAAWA,KAClC,KACH2yL,GAAeA,EAAYtkV,EAAMsvJ,oBAC1Bh0J,GAAMonV,wBAEd9sL,QAIPt6J,EAAM0yJ,YAAc,SAAU12J,GAC5B,GAAI4oV,GAAchyV,UAAU3Q,OAAS,YAAK2Q,UAAU,IAAmBA,UAAU,GAE7E8gK,EAAOryJ,KAAarB,EAAMF,MAAOE,EAAM0E,OACvC0yJ,KAAkBgtL,EAAkB1xL,aAAagB,EAAM13J,IACvC,IAAhBo7J,GAAsBA,UACtBwtL,EACF5kV,EAAM2yJ,aAAayE,EAAawtL,GAEhC5kV,EAAM2yJ,aAAayE,KAIvBp3J,EAAMurF,aAAe,SAAU9oG,QACzBud,EAAMmpV,YACR1mW,EAAE63F,kBACF73F,EAAE43F,kBAEJr6E,EAAMmpV,cAGRnpV,EAAMyyJ,WAAa,SAAUhwK,GAC3B,GAAIgR,MAAU2wV,EAAkB3xL,YAAYhwK,EAAGud,EAAMF,MAAMu3J,cAAer3J,EAAMF,MAAMm2J,IAC9E,MAARxiK,GAAcuM,EAAM0yJ,aAAcr/J,QAASI,KAG7CuM,EAAMopV,cAAgB,SAAUptV,GAC9BgE,EAAM0yJ,YAAY12J,IAGpBgE,EAAMqpV,kBAAoB,WACxB,GAAIhvQ,GAAiB,SAAwB53F,GAC3CA,EAAIA,GAAKd,OAAOwpC,MACZ1oC,EAAE43F,gBAAgB53F,EAAE43F,iBACxB53F,EAAE0iC,eAEJxjC,QAAO2nW,YAAcjvQ,GAGvBr6E,EAAMupV,iBAAmB,WACvB5nW,OAAO2nW,YAAc,MAGvBtpV,EAAMwyJ,WAAa,SAAU/vK,GACvBud,EAAMF,MAAM60J,iBACd30J,EAAMqpV,mBAER,IAAI3kV,MAAY0/U,EAAkB5xL,YAAY/vK,EAAGud,EAAMF,MAAMw3J,MAAOt3J,EAAMF,MAAMy3J,UACtE,MAAV7yJ,GAAgB1E,EAAMoG,SAAS1B,IAGjC1E,EAAMuyJ,UAAY,SAAU9vK,GAC1B,GAAIiiB,MAAY0/U,EAAkB7xL,WAAW9vK,EAAG4e,KAAarB,EAAMF,MAAOE,EAAM0E,OAC9EgxJ,SAAU11J,EAAM6nE,MAChB2tF,QAASx1J,EAAM6/C,KACfg0G,WAAY7zJ,EAAM0E,MAAMsvJ,eAErBtvJ,KACDA,EAAe,UACjB1E,EAAMmpV,cAERnpV,EAAMoG,SAAS1B,KAGjB1E,EAAMsyJ,SAAW,SAAU7vK,GACzB,GAAIiiB,MAAY0/U,EAAkB9xL,UAAU7vK,EAAG4e,KAAarB,EAAMF,MAAOE,EAAM0E,OAC7EgxJ,SAAU11J,EAAM6nE,MAChB2tF,QAASx1J,EAAM6/C,KACfg0G,WAAY7zJ,EAAM0E,MAAMsvJ,eAE1B,IAAKtvJ,EAAL,CACA,GAAI8kV,GAAsB9kV,EAA2B,0BAC9CA,GAA2B,oBAClC1E,EAAMoG,SAAS1B,YACX8kV,IACJxpV,EAAM2yJ,aAAa62L,GACfxpV,EAAMF,MAAM60J,iBACd30J,EAAMupV,sBAIVvpV,EAAMykV,UAAY,WAIhBzkV,EAAM+mV,eAAe5kW,KAAK+B,WAAW,WACnC,MAAO8b,GAAM0yJ,aAAcr/J,QAAS,cACnC,KAGL2M,EAAM0kV,UAAY,WAChB1kV,EAAM+mV,eAAe5kW,KAAK+B,WAAW,WACnC,MAAO8b,GAAM0yJ,aAAcr/J,QAAS,UACnC,KAGL2M,EAAM2kV,UAAY,SAAUprL,GAC1B,GAAIqrL,GAAchyV,UAAU3Q,OAAS,YAAK2Q,UAAU,IAAmBA,UAAU,EAGjF,IADA2mK,EAAQjvH,OAAOivH,GACX/vC,MAAM+vC,GAAQ,MAAO,EACzBv5J,GAAM+mV,eAAe5kW,KAAK+B,WAAW,WACnC,MAAO8b,GAAM0yJ,aACXr/J,QAAS,QACTse,MAAO4nJ,EACPvF,aAAch0J,EAAM0E,MAAMsvJ,cACzB4wL,IACF,KAGL5kV,EAAMm8C,KAAO,WACX,GAAI+0J,EACJ,IAAIlxM,EAAMF,MAAMm2J,IACdi7C,EAAYlxM,EAAM0E,MAAMsvJ,aAAeh0J,EAAMF,MAAM02J,mBAC9C,CACL,OAAQ4tL,EAAkBtxL,WAAWzxJ,KAAarB,EAAMF,MAAOE,EAAM0E,QAGnE,OAAM,CAFNwsM,GAAYlxM,EAAM0E,MAAMsvJ,aAAeh0J,EAAMF,MAAM02J,eAMvDx2J,EAAM2yJ,aAAau+C,IAGrBlxM,EAAM6vL,SAAW,SAAU45J,GACrBzpV,EAAMqnV,eACR3/J,cAAc1nL,EAAMqnV,cAEtB,IAAIlxL,GAAcn2J,EAAM0E,MAAMyxJ,WAC9B,IAAiB,WAAbszL,GACF,GAAoB,YAAhBtzL,GAA6C,YAAhBA,GAA6C,WAAhBA,EAC5D,WAEG,IAAiB,UAAbszL,GACT,GAAoB,WAAhBtzL,GAA4C,YAAhBA,EAC9B,WAEG,IAAiB,SAAbszL,IACW,WAAhBtzL,GAA4C,YAAhBA,GAC9B,MAGJn2J,GAAMqnV,cAAgB5/J,YAAYznL,EAAMm8C,KAAMn8C,EAAMF,MAAM85P,cAAgB,IAC1E55P,EAAMoG,UAAW+vJ,YAAa,aAGhCn2J,EAAM6wI,MAAQ,SAAU64M,GAClB1pV,EAAMqnV,gBACR3/J,cAAc1nL,EAAMqnV,eACpBrnV,EAAMqnV,cAAgB,KAExB,IAAIlxL,GAAcn2J,EAAM0E,MAAMyxJ,WACZ,YAAduzL,EACF1pV,EAAMoG,UAAW+vJ,YAAa,WACP,YAAduzL,EACW,YAAhBvzL,GAA6C,YAAhBA,GAC/Bn2J,EAAMoG,UAAW+vJ,YAAa,YAIZ,YAAhBA,GACFn2J,EAAMoG,UAAW+vJ,YAAa,aAKpCn2J,EAAM2pV,WAAa,WACjB,MAAO3pV,GAAMF,MAAMw+G,UAAYt+G,EAAM6wI,MAAM,YAG7C7wI,EAAM4pV,YAAc,WAClB,MAAO5pV,GAAMF,MAAMw+G,UAAwC,YAA5Bt+G,EAAM0E,MAAMyxJ,aAA6Bn2J,EAAM6vL,SAAS,UAGzF7vL,EAAM6pV,YAAc,WAClB,MAAO7pV,GAAMF,MAAMw+G,UAAYt+G,EAAM6wI,MAAM,YAG7C7wI,EAAM8pV,aAAe,WACnB,MAAO9pV,GAAMF,MAAMw+G,UAAwC,YAA5Bt+G,EAAM0E,MAAMyxJ,aAA6Bn2J,EAAM6vL,SAAS,UAGzF7vL,EAAMinV,aAAe,WACnB,MAAOjnV,GAAMF,MAAMw+G,UAAYt+G,EAAM6wI,MAAM,YAG7C7wI,EAAMmnV,YAAc,WAClB,MAAOnnV,GAAMF,MAAMw+G,UAAwC,YAA5Bt+G,EAAM0E,MAAMyxJ,aAA6Bn2J,EAAM6vL,SAAS,SAGzF7vL,EAAMM,OAAS,WACb,GAAIsgD,MAAgBilS,EAAan3S,SAAS,eAAgB1uC,EAAMF,MAAM8gD,WACpE,iBAAkB5gD,EAAMF,MAAM81J,SAC9B,qBAAoB,IAElBlC,EAAOryJ,KAAarB,EAAMF,MAAOE,EAAM0E,OACvCqlV,KAAiB3F,EAAkBvxL,eAAea,GAAO,OAAQ,UAAW,QAAS,WAAY,aAAc,gBAAiB,eAAgB,WAAY,iBAAkB,MAAO,aAAc,cAAe,aAAc,WAAY,eAAgB,iBAAkB,aAAc,aAAc,gBAAiB,UAAW,kBACtUomG,EAAe95P,EAAMF,MAAMg6P,YAE/BiwF,GAAa1oV,KAAa0oV,GACxBC,aAAclwF,EAAe95P,EAAM6pV,YAAc,KACjDtN,aAAcziF,EAAe95P,EAAM8pV,aAAe,KAClDG,YAAanwF,EAAe95P,EAAM6pV,YAAc,KAChDK,cAAelqV,EAAMF,MAAMoqV,cAAgBlqV,EAAMopV,cAAgB,MAGnE,IAAInvF,EACJ,SAAIj6P,EAAMF,MAAMm6P,MAAiBj6P,EAAM0E,MAAM0wJ,YAAcp1J,EAAMF,MAAMo0J,aAAc,CACnF,GAAIi2L,MAAe/F,EAAkBvxL,eAAea,GAAO,YAAa,aAAc,eAAgB,eAAgB,iBAAkB,eAAgB,WAAY,eAAgB,WAAY,eAC5LqmG,EAAmB/5P,EAAMF,MAAMi6P,gBAEnCowF,GAAW9oV,KAAa8oV,GACtB5+P,aAAcvrF,EAAM0yJ,YACpBs3L,aAAcjwF,EAAmB/5P,EAAM4pV,YAAc,KACrDK,YAAalwF,EAAmB/5P,EAAM2pV,WAAa,KACnDpN,aAAcxiF,EAAmB/5P,EAAM4pV,YAAc,OAEvD3vF,EAAOj+L,EAAQttB,QAAQhrD,cAAcqiW,EAAMqE,KAAMD,GAGnD,GAAIhwF,GAAWC,EACXiwF,KAAiBjG,EAAkBvxL,eAAea,GAAO,WAAY,aAAc,eAAgB,aAAc,eAAgB,YAAa,aAClJ22L,GAAW9+P,aAAevrF,EAAM0yJ,YAE5B1yJ,EAAMF,MAAMk6P,SACdG,EAAYn+L,EAAQttB,QAAQhrD,cAAcsiW,EAAQsE,UAAWD,GAC7DjwF,EAAYp+L,EAAQttB,QAAQhrD,cAAcsiW,EAAQuE,UAAWF,GAG/D,IAAIG,GAAsB,IAEtBxqV,GAAMF,MAAM81J,WACd40L,GACEthR,OAAQlpE,EAAM0E,MAAMqxJ,YAIxB,IAAI00L,GAAqB,MAAK,IAE1BzqV,EAAMF,MAAM81J,cACV51J,EAAMF,MAAMm0J,aACdw2L,GACEl8L,QAAS,OAASvuJ,EAAMF,MAAMq0J,qBAI9Bn0J,EAAMF,MAAMm0J,aACdw2L,GACEl8L,QAASvuJ,EAAMF,MAAMq0J,cAAgB,QAK3C,IAAIu2L,GAAYrpV,KAAampV,EAAqBC,GAC9CE,EAAY3qV,EAAMF,MAAM6qV,UACxBC,GACFhqS,UAAW,aACX0a,MAAOovR,EACPntO,QAASv9G,EAAMurF,aACf6wP,YAAauO,EAAY3qV,EAAMwyJ,WAAa,KAC5C6pL,YAAar8U,EAAM0E,MAAM8yJ,UAAYmzL,EAAY3qV,EAAMuyJ,UAAY,KACnE+pL,UAAWqO,EAAY3qV,EAAMsyJ,SAAW,KACxCiqL,aAAcv8U,EAAM0E,MAAM8yJ,UAAYmzL,EAAY3qV,EAAMsyJ,SAAW,KACnEkqL,aAAcmO,EAAY3qV,EAAMwyJ,WAAa,KAC7CiqL,YAAaz8U,EAAM0E,MAAM8yJ,UAAYmzL,EAAY3qV,EAAMuyJ,UAAY,KACnEmqL,WAAYiO,EAAY3qV,EAAMsyJ,SAAW,KACzCqqL,cAAe38U,EAAM0E,MAAM8yJ,UAAYmzL,EAAY3qV,EAAMsyJ,SAAW,KACpEowL,UAAW1iV,EAAMF,MAAMu3J,cAAgBr3J,EAAMyyJ,WAAa,MAGxDo4L,GACFjqS,UAAWA,EACXntD,IAAK,MAOP,OAJIuM,GAAMF,MAAM06J,UACdowL,GAAchqS,UAAW,cACzBiqS,GAAqBjqS,UAAWA,IAE3Bob,EAAQttB,QAAQhrD,cACrB,MACAmnW,EACC7qV,EAAMF,MAAM06J,QAAsB,GAAZ2/F,EACvBn+L,EAAQttB,QAAQhrD,cACd,MACA2d,GAAWwE,IAAK7F,EAAMmmV,gBAAkByE,GACxC5uR,EAAQttB,QAAQhrD,cACdoiW,EAAOgF,MACPzpV,GAAWwE,IAAK7F,EAAMomV,iBAAmB2D,GACzC/pV,EAAMF,MAAMY,WAGfV,EAAMF,MAAM06J,QAAsB,GAAZ4/F,EACtBp6P,EAAMF,MAAM06J,QAAiB,GAAPy/F,IAI3Bj6P,EAAM6/C,KAAO,KACb7/C,EAAM6nE,MAAQ,KACd7nE,EAAM0E,MAAQrD,KAAaskV,EAAej3S,SACxCslH,aAAch0J,EAAMF,MAAMk2J,aAC1BZ,WAAYp5F,EAAQttB,QAAQluC,SAASokC,MAAM5kC,EAAMF,MAAMY,YAEzDV,EAAM+mV,kBACN/mV,EAAMmpV,aACNnpV,EAAM2nV,gBAAkB,KACjB3nV,EAGT,MA7qBA+jD,GAAU0hS,EAAaniR,GA6qBhBmiR,GACPzpR,EAAQttB,QAAQ/tC,Yp7BqqiHZ,SAAUrf,EAAQD,EAASH,GAEjC,Yq7Bv4jHAG,GAAQ0D,aACR,IAAI4wN,IACFt/C,WAAUA,EACVF,YAAa,KACb40L,iBAAkB,EAClBjyL,YAAa,KACb9E,aAAc,EACd9yB,UAAW,EACXs2B,UAASA,EACTK,aAAYA,EACZzoG,aAAYA,EACZ0kG,kBACAiC,WAAY,KACZT,UAAW,KACXoC,WAAUA,EACVtC,WAAY,KACZU,YAAa,KACbH,WAAY,KACZoB,UAAW,KACXgB,QAAOA,EACPC,SAAQA,EACRzD,aAAeK,OAAQ,EAAGE,OAAQ,EAAGD,KAAM,EAAGE,KAAM,GACpD+B,cACArB,WAAY,EAGdp0K,GAAQqtD,QAAUinK,Gr7B84jHZ,SAAUr0N,EAAQD,EAASH,as7B16jHjC,GAkIA,QAASqtP,GAAStjO,EAAMujO,EAAMxyO,GAuB5B,QAASyyO,GAAW37O,GAClB,GAAIga,GAAOwE,EACPoL,EAAUgyN,CAKd,OAHAp9N,GAAWo9N,SACXC,EAAiB77O,EACjB4X,EAASO,EAAKtY,MAAM+pB,EAAS5P,GAI/B,QAAS8hO,GAAY97O,GAMnB,MAJA67O,GAAiB77O,EAEjB+7O,EAAU3qP,WAAW4qP,EAAcN,GAE5BO,EAAUN,EAAW37O,GAAQ4X,EAGtC,QAASskO,GAAcl8O,GACrB,GAAIm8O,GAAoBn8O,EAAOo8O,EAC3BC,EAAsBr8O,EAAO67O,EAC7BjkO,EAAS8jO,EAAOS,CAEpB,OAAOI,GAASC,EAAU5kO,EAAQ6kO,EAAUJ,GAAuBzkO,EAGrE,QAAS8kO,GAAa18O,GACpB,GAAIm8O,GAAoBn8O,EAAOo8O,EAC3BC,EAAsBr8O,EAAO67O,CAKjC,iBAAQO,GAA+BD,GAAqBT,GACzDS,EAAoB,GAAOI,GAAUF,GAAuBI,EAGjE,QAAST,KACP,GAAIh8O,GAAOG,GACX,IAAIu8O,EAAa18O,GACf,MAAO28O,GAAa38O,EAGtB+7O,GAAU3qP,WAAW4qP,EAAcE,EAAcl8O,IAGnD,QAAS28O,GAAa38O,GAKpB,MAJA+7O,UAIIa,GAAYp+N,EACPm9N,EAAW37O,IAEpBwe,EAAWo9N,SACJhkO,GAGT,QAAS2U,cACHwvN,GACF/rP,aAAa+rP,GAEfF,EAAiB,EACjBr9N,EAAW49N,EAAeR,EAAWG,SAGvC,QAASc,KACP,WAAO,KAAAd,EAAwBnkO,EAAS+kO,EAAax8O,KAGvD,QAAS28O,KACP,GAAI98O,GAAOG,IACP48O,EAAaL,EAAa18O,EAM9B,IAJAwe,EAAW1e,UACX87O,EAAWzuO,KACXivO,EAAep8O,EAEX+8O,EAAY,CACd,YAAIhB,EACF,MAAOD,GAAYM,EAErB,IAAIG,EAGF,MADAR,GAAU3qP,WAAW4qP,EAAcN,GAC5BC,EAAWS,GAMtB,WAAO,KAHHL,IACFA,EAAU3qP,WAAW4qP,EAAcN,IAE9B9jO,EAlHT,GAAI4G,GACAo9N,EACAa,EACA7kO,EACAmkO,EACAK,EACAP,EAAiB,EACjBI,KACAM,KACAK,IAEJ,IAAmB,kBAARzkO,GACT,KAAM,IAAIkT,WAAU2xN,EA0GtB,OAxGAtB,GAAOthB,EAASshB,IAAS,EACrBzsN,EAAS/lB,KACX+yO,IAAY/yO,EAAQ+yO,QACpBM,EAAS,WAAarzO,GACtBuzO,EAAUF,EAASj0D,EAAU8xC,EAASlxN,EAAQuzO,UAAY,EAAGf,GAAQe,EACrEG,EAAW,YAAc1zO,KAAYA,EAAQ0zO,SAAWA,GAiG1DE,EAAUvwN,OAASA,EACnBuwN,EAAUD,MAAQA,EACXC,EA4BT,QAAS7tN,GAASp8B,GAChB,GAAIhC,SAAcgC,EAClB,SAASA,IAAkB,UAARhC,GAA4B,YAARA,GA2BzC,QAASmlG,GAAanjG,GACpB,QAASA,GAAyB,gBAATA,GAoB3B,QAAS0nJ,GAAS1nJ,GAChB,MAAuB,gBAATA,IACXmjG,EAAanjG,IAAUqsG,EAAevwG,KAAKkE,IAAU84J,EA0B1D,QAASyuE,GAASvnO,GAChB,GAAoB,gBAATA,GACT,MAAOA,EAET,IAAI0nJ,EAAS1nJ,GACX,MAAOwnO,EAET,IAAIprM,EAASp8B,GAAQ,CACnB,GAAIszH,GAAgC,kBAAjBtzH,GAAM8gF,QAAwB9gF,EAAM8gF,UAAY9gF,CACnEA,GAAQo8B,EAASk3F,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,gBAATtzH,GACT,MAAiB,KAAVA,EAAcA,GAASA,CAEhCA,GAAQA,EAAMqnB,QAAQogN,EAAQ,GAC9B,IAAIC,GAAWC,EAAWznM,KAAKlgC,EAC/B,OAAQ0nO,IAAYE,EAAU1nM,KAAKlgC,GAC/B6nO,EAAa7nO,EAAMmO,MAAM,GAAIu5N,EAAW,EAAI,GAC3CI,EAAW5nM,KAAKlgC,GAASwnO,GAAOxnO,EA3WvC,GAAImqP,GAAkB,sBAGlB3iB,EAAM,IAGN1uE,EAAY,kBAGZ2uE,EAAS,aAGTK,EAAa,qBAGbH,EAAa,aAGbC,EAAY,cAGZC,EAAe7kM,SAGfypD,EAA8B,gBAAVl+E,IAAsBA,GAAUA,EAAO9R,SAAWA,QAAU8R,EAGhFm+E,EAA0B,gBAARlxE,OAAoBA,MAAQA,KAAK/e,SAAWA,QAAU+e,KAGxEsuC,EAAO2iC,GAAcC,GAAY1oC,SAAS,iBAG1C6jG,EAAcprJ,OAAOC,UAOrB2vG,EAAiBw7C,EAAYtvH,SAG7Bk9J,EAAY78J,KAAKC,IACjB8wN,EAAY/wN,KAAKgpD,IAkBjBt0E,EAAM,WACR,MAAOw8C,GAAKU,KAAKl9C,MA+SnB3R,GAAOD,QAAUktP,It7B86jHY9sP,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,GAEjC,Yu7B3xkHA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASk+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GArBje/d,EAAQ0D,cACR1D,EAAQypW,YAER,IAAIzpV,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjC6pR,EAAc,EAAQ,IAEtBC,EAAe/pR,EAAuB8pR,GAEtCxB,EAAoB,EAAQ,KAW5B4G,EAAkB,SAAyBt3L,GAC7C,GAAIu3L,GAAaC,EAAaC,EAC1BhyL,EAAcxnJ,CAkBlB,OAfEA,GADE+hJ,EAAKuC,IACCvC,EAAK0B,WAAa,EAAI1B,EAAK/hJ,MAE3B+hJ,EAAK/hJ,MAEfw5U,EAAcx5U,EAAQ,GAAKA,GAAS+hJ,EAAK0B,WACrC1B,EAAKO,YACPkF,EAAe56I,KAAK+oD,MAAMosF,EAAKQ,aAAe,GAC9Cg3L,GAAev5U,EAAQ+hJ,EAAKM,cAAgBN,EAAK0B,YAAe,EAC5DzjJ,EAAQ+hJ,EAAKM,aAAemF,EAAe,GAAKxnJ,GAAS+hJ,EAAKM,aAAemF,IAC/E8xL,OAGFA,EAAcv3L,EAAKM,cAAgBriJ,GAASA,EAAQ+hJ,EAAKM,aAAeN,EAAKQ,cAI7E,eAAc,EACd,eAAgB+2L,EAChB,eAAgBC,EAChB,eAAgBC,EAChB,gBANiBx5U,IAAU+hJ,EAAKM,eAUhCo3L,EAAgB,SAAuB13L,GACzC,GAAIp4F,KAkBJ,iBAhBIo4F,EAAKgH,oBAA+BhH,EAAKgH,gBAC3Cp/F,EAAM2N,MAAQyqF,EAAKiC,YAGjBjC,EAAK4C,OACPh7F,EAAM0mF,SAAW,WACb0R,EAAKkC,SACPt6F,EAAM6yF,KAAOuF,EAAK/hJ,MAAQgX,SAAS+qI,EAAKoC,aAExCx6F,EAAM+yF,MAAQqF,EAAK/hJ,MAAQgX,SAAS+qI,EAAKiC,YAE3Cr6F,EAAMy+F,QAAUrG,EAAKM,eAAiBN,EAAK/hJ,MAAQ,EAAI,EACvD2pD,EAAM0+F,WAAa,WAAatG,EAAK4G,MAAQ,MAAQ5G,EAAK6G,QAAU,gBAAuB7G,EAAK4G,MAAQ,MAAQ5G,EAAK6G,QACrHj/F,EAAM2+F,iBAAmB,WAAavG,EAAK4G,MAAQ,MAAQ5G,EAAK6G,QAAU,gBAAuB7G,EAAK4G,MAAQ,MAAQ5G,EAAK6G,SAGtHj/F,GAGL2vO,EAAS,SAAgBzrR,EAAO6rU,GAClC,MAAO7rU,GAAM95B,KAAO2lW,GAGlBC,EAAe,SAAsB53L,GACvC,GAAIhuK,GACA4zK,KACAiyL,KACAC,KACAlD,EAAgBtsR,EAAQttB,QAAQluC,SAASokC,MAAM8uH,EAAKhzJ,UACpDgzI,KAAiB0wM,EAAkB/wL,gBAAgBK,GACnDE,KAAewwL,EAAkBhxL,cAAcM,EAqFnD,OAnFA13F,GAAQttB,QAAQluC,SAASw/B,QAAQ0zH,EAAKhzJ,SAAU,SAAU0zJ,EAAMziJ,GAC9D,GAAI6N,UACAisU,GACFp4V,QAAS,WACTse,MAAOA,EACP6kJ,eAAgB9C,EAAK8C,eACrBxC,aAAcN,EAAKM,aAKnBx0I,IADGk0I,EAAK6C,UAAY7C,EAAK6C,UAAY7C,EAAKI,eAAen4J,QAAQgW,IAAU,EACnEyiJ,EAEAp4F,EAAQttB,QAAQhrD,cAAc,MAAO,KAE/C,IAAIgoW,GAAaN,EAAc/pV,KAAaqyJ,GAAQ/hJ,MAAOA,KACvDg6U,EAAansU,EAAM1f,MAAM8gD,WAAa,GACtCgrS,EAAeZ,EAAgB3pV,KAAaqyJ,GAAQ/hJ,MAAOA,IAkB/D,IAhBA2nJ,EAAOn3K,KAAK65E,EAAQttB,QAAQwoD,aAAa13E,GACvC95B,IAAK,WAAaulT,EAAOzrR,EAAO7N,GAChC,aAAcA,EACdivC,WAAUA,EAAKilS,EAAan3S,SAASk9S,EAAcD,GACnDtjH,SAAU,KACV,eAAgBujH,EAAa,gBAC7BtwR,MAAOj6D,GAAWg/L,QAAS,QAAU7gL,EAAM1f,MAAMw7D,UAAaowR,GAC9DnuO,QAAS,SAAiB96H,GACxB+8B,EAAM1f,OAAS0f,EAAM1f,MAAMy9G,SAAW/9F,EAAM1f,MAAMy9G,QAAQ96H,GACtDixK,EAAKw2L,eACPx2L,EAAKw2L,cAAcuB,OAMrB/3L,EAAKyB,eAAYzB,EAAK4C,KAAgB,CACxC,GAAIu1L,GAAavD,EAAgB32U,CAC7Bk6U,OAAkBzH,EAAkBtyL,cAAc4B,IAAS40L,IAAkB50L,EAAKQ,eACpFxuK,GAAOmmW,EACHnmW,GAAOguJ,IACTl0H,EAAQ40I,GAEVw3L,EAAeZ,EAAgB3pV,KAAaqyJ,GAAQ/hJ,MAAOjsB,KAC3D6lW,EAAeppW,KAAK65E,EAAQttB,QAAQwoD,aAAa13E,GAC/C95B,IAAK,YAAculT,EAAOzrR,EAAO95B,GACjC,aAAcA,EACd2iP,SAAU,KACVznL,WAAUA,EAAKilS,EAAan3S,SAASk9S,EAAcD,GACnD,eAAgBC,EAAa,gBAC7BtwR,MAAOj6D,KAAame,EAAM1f,MAAMw7D,UAAaowR,GAC7CnuO,QAAS,SAAiB96H,GACxB+8B,EAAM1f,OAAS0f,EAAM1f,MAAMy9G,SAAW/9F,EAAM1f,MAAMy9G,QAAQ96H,GACtDixK,EAAKw2L,eACPx2L,EAAKw2L,cAAcuB,QAMvBnD,IAAkB50L,EAAKQ,eACzBxuK,EAAM4iW,EAAgB32U,EAClBjsB,EAAMkuK,IACRp0I,EAAQ40I,GAEVw3L,EAAeZ,EAAgB3pV,KAAaqyJ,GAAQ/hJ,MAAOjsB,KAC3D8lW,EAAgBrpW,KAAK65E,EAAQttB,QAAQwoD,aAAa13E,GAChD95B,IAAK,aAAeulT,EAAOzrR,EAAO95B,GAClC,aAAcA,EACd2iP,SAAU,KACVznL,WAAUA,EAAKilS,EAAan3S,SAASk9S,EAAcD,GACnD,eAAgBC,EAAa,gBAC7BtwR,MAAOj6D,KAAame,EAAM1f,MAAMw7D,UAAaowR,GAC7CnuO,QAAS,SAAiB96H,GACxB+8B,EAAM1f,OAAS0f,EAAM1f,MAAMy9G,SAAW/9F,EAAM1f,MAAMy9G,QAAQ96H,GACtDixK,EAAKw2L,eACPx2L,EAAKw2L,cAAcuB,WAQ3B/3L,EAAKuC,IACAs1L,EAAez4U,OAAOwmJ,EAAQkyL,GAAiBjuR,UAE/CguR,EAAez4U,OAAOwmJ,EAAQkyL,GAI7BnqW,GAAQypW,MAAQ,SAAUgB,GAGpC,QAAShB,KAGP,MAFAnnS,GAAgB1jD,KAAM6qV,GAEfhnS,EAA2B7jD,KAAM6rV,EAAqBn5V,MAAMsN,KAAMrN,YAqB3E,MA1BAmxD,GAAU+mS,EAAOgB,GAQjBhB,EAAMzoW,UAAUie,OAAS,WACvB,GAAIg5J,GAASgyL,EAAarrV,KAAKH,OAC3Bq4G,EAASl4G,KAAKH,MACdkqV,EAAe7xO,EAAO6xO,aACtBC,EAAc9xO,EAAO8xO,YACrB1N,EAAepkO,EAAOokO,aAEtBwP,GAAgB/B,aAAcA,EAAcC,YAAaA,EAAa1N,aAAcA,EACxF,OAAOvgR,GAAQttB,QAAQhrD,cACrB,MACA2d,GACEu/C,UAAW,cACX0a,MAAOr7D,KAAKH,MAAMg3J,YACjBi1L,GACHzyL,IAIGwxL,GACP9uR,EAAQttB,QAAQ4V,gBv7BizkHZ,SAAUhjE,EAAQD,EAASH,GAEjC,Yw7Bp/kHA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASk+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAnBje/d,EAAQ0D,cACR1D,EAAQ+oW,WAER,IAAI/oV,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjC6pR,EAAc,EAAQ,IAEtBC,EAAe/pR,EAAuB8pR,GAUtCoG,EAAc,SAAqBt4L,GASrC,MANIA,GAAKyB,SACA52I,KAAKssG,KAAK6oC,EAAK0B,WAAa1B,EAAK8C,gBAEjCj4I,KAAKssG,MAAM6oC,EAAK0B,WAAa1B,EAAKQ,cAAgBR,EAAK8C,gBAAkB,EAMzEn1K,GAAQ+oW,KAAO,SAAU0B,GAGlC,QAAS1B,KAGP,MAFAzmS,GAAgB1jD,KAAMmqV,GAEftmS,EAA2B7jD,KAAM6rV,EAAqBn5V,MAAMsN,KAAMrN,YAwD3E,MA7DAmxD,GAAUqmS,EAAM0B,GAQhB1B,EAAK/nW,UAAUkpG,aAAe,SAAsBvvF,EAASvZ,GAG3DA,EAAE43F,iBACFp6E,KAAKH,MAAMyrF,aAAavvF,IAG1BouV,EAAK/nW,UAAUie,OAAS,WACtB,GAAI+vG,GAASpwG,KAETs4J,EAAWyzL,GACb52L,WAAYn1J,KAAKH,MAAMs1J,WACvBoB,eAAgBv2J,KAAKH,MAAM02J,eAC3BtC,aAAcj0J,KAAKH,MAAMo0J,aACzBiB,SAAUl1J,KAAKH,MAAMq1J,WAMnBh9C,EAASl4G,KAAKH,MACdkqV,EAAe7xO,EAAO6xO,aACtBC,EAAc9xO,EAAO8xO,YACrB1N,EAAepkO,EAAOokO,aAEtBwP,GAAgB/B,aAAcA,EAAcC,YAAaA,EAAa1N,aAAcA,GACpFtiF,EAAOhmQ,MAAMtB,MAAM,KAAMsB,MAAMskK,EAAW,GAAGrmJ,KAAK,KAAKvU,MAAM,KAAKsU,IAAI,SAAUxL,EAAGllB,GACrF,GAAI0qW,GAAY1qW,EAAI8uH,EAAOvwG,MAAM02J,eAC7B01L,EAAa3qW,EAAI8uH,EAAOvwG,MAAM02J,gBAAkBnmD,EAAOvwG,MAAM02J,eAAiB,GAC9E51G,KAAgBilS,EAAan3S,UAC/B,eAAgB2hE,EAAOvwG,MAAMk0J,cAAgBi4L,GAAa57O,EAAOvwG,MAAMk0J,cAAgBk4L,IAGrFC,GACF94V,QAAS,OACTse,MAAOpwB,EACPi1K,eAAgBnmD,EAAOvwG,MAAM02J,eAC7BxC,aAAc3jD,EAAOvwG,MAAMk0J,cAGzBz2C,EAAUlN,EAAO9kB,aAAaxmF,KAAKsrG,EAAQ87O,EAC/C,OAAOnwR,GAAQttB,QAAQhrD,cACrB,MACEgC,IAAKnE,EAAGq/D,UAAWA,GACrBob,EAAQttB,QAAQwoD,aAAamZ,EAAOvwG,MAAMssV,aAAa7qW,IAAMg8H,QAASA,MAI1E,OAAOvhD,GAAQttB,QAAQwoD,aAAaj3F,KAAKH,MAAMusV,WAAWpyF,GAAO54P,GAC/Du/C,UAAW3gD,KAAKH,MAAMo6P,WACrB6xF,KAGE3B,GACPpuR,EAAQttB,QAAQ4V,gBx7BwglHZ,SAAUhjE,EAAQD,EAASH,GAEjC,Yy7B3llHA,SAAS46E,GAAuBr2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,GAEvF,QAASk+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GArBje/d,EAAQ0D,cACR1D,EAAQkpW,UAAYlpW,EAAQipW,gBAE5B,IAAIjpV,GAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPw6D,EAAS,EAAQ,GAEjBC,EAAUF,EAAuBC,GAEjC6pR,EAAc,EAAQ,IAEtBC,EAAe/pR,EAAuB8pR,GAEtCxB,EAAoB,EAAQ,IAUhB/iW,GAAQipW,UAAY,SAAUwB,GAG5C,QAASxB,KAGP,MAFA3mS,GAAgB1jD,KAAMqqV,GAEfxmS,EAA2B7jD,KAAM6rV,EAAqBn5V,MAAMsN,KAAMrN,YA8C3E,MAnDAmxD,GAAUumS,EAAWwB,GAQrBxB,EAAUjoW,UAAUkpG,aAAe,SAAsBvvF,EAASvZ,GAC5DA,GACFA,EAAE43F,iBAEJp6E,KAAKH,MAAMyrF,aAAavvF,EAASvZ,IAGnC6nW,EAAUjoW,UAAUie,OAAS,WAC3B,GAAIgsV,IAAgB,eAAc,EAAO,cAAa,GAClDC,EAActsV,KAAKsrF,aAAaxmF,KAAK9E,MAAQ5M,QAAS,cAErD4M,KAAKH,MAAMq1J,WAAyC,IAA5Bl1J,KAAKH,MAAMk0J,cAAsB/zJ,KAAKH,MAAMs1J,YAAcn1J,KAAKH,MAAMo0J,gBAChGo4L,EAAY,qBACZC,EAAc,KAGhB,IAAIC,IACF9mW,IAAK,IACL,YAAa,OACbk7D,WAAUA,EAAKilS,EAAan3S,SAAS49S,GACrChxR,OAASqhB,QAAS,SAClB4gC,QAASgvO,GAEPxrS,GACFizG,aAAc/zJ,KAAKH,MAAMk0J,aACzBoB,WAAYn1J,KAAKH,MAAMs1J,WAezB,OAXIn1J,MAAKH,MAAMq6P,UACDn+L,EAAQttB,QAAQwoD,aAAaj3F,KAAKH,MAAMq6P,UAAW94P,KAAamrV,EAAgBzrS,IAEhFib,EAAQttB,QAAQhrD,cAC1B,SACA2d,GAAW3b,IAAK,IAAK/B,KAAM,UAAY6oW,GACvC,IACA,aAOClC,GACPtuR,EAAQttB,QAAQ4V,eAEFjjE,EAAQkpW,UAAY,SAAUkC,GAG5C,QAASlC,KAGP,MAFA5mS,GAAgB1jD,KAAMsqV,GAEfzmS,EAA2B7jD,KAAMwsV,EAAsB95V,MAAMsN,KAAMrN,YA8C5E,MAnDAmxD,GAAUwmS,EAAWkC,GAQrBlC,EAAUloW,UAAUkpG,aAAe,SAAsBvvF,EAASvZ,GAC5DA,GACFA,EAAE43F,iBAEJp6E,KAAKH,MAAMyrF,aAAavvF,EAASvZ,IAGnC8nW,EAAUloW,UAAUie,OAAS,WAC3B,GAAIosV,IAAgB,eAAc,EAAO,cAAa,GAClDC,EAAc1sV,KAAKsrF,aAAaxmF,KAAK9E,MAAQ5M,QAAS,YAEjD+wV,EAAkBtxL,WAAW7yJ,KAAKH,SACzC4sV,EAAY,qBACZC,EAAc,KAGhB,IAAIC,IACFlnW,IAAK,IACL,YAAa,OACbk7D,WAAUA,EAAKilS,EAAan3S,SAASg+S,GACrCpxR,OAASqhB,QAAS,SAClB4gC,QAASovO,GAEP5rS,GACFizG,aAAc/zJ,KAAKH,MAAMk0J,aACzBoB,WAAYn1J,KAAKH,MAAMs1J,WAezB,OAXIn1J,MAAKH,MAAMs6P,UACDp+L,EAAQttB,QAAQwoD,aAAaj3F,KAAKH,MAAMs6P,UAAW/4P,KAAaurV,EAAgB7rS,IAEhFib,EAAQttB,QAAQhrD,cAC1B,SACA2d,GAAW3b,IAAK,IAAK/B,KAAM,UAAYipW,GACvC,IACA,SAOCrC,GACPvuR,EAAQttB,QAAQ4V,gBz7BinlHZ,SAAUhjE,EAAQiE,EAAqBrE,GAE7C,Y07BxvlHA,8DAwJA,QAAS2rW,GAAUn2T,EAAUsP,GAQzB,QAAS8mT,KACDC,IACAA,KACAr2T,KAEAs2T,GACAvlV,IAUR,QAASwlV,KACLC,EAAwBJ,GAO5B,QAASrlV,KACL,GAAI0yE,GAAYhqC,KAAKl9C,KACrB,IAAI85V,EAAa,CAEb,GAAI5yQ,EAAY+0J,EAAei+G,EAC3B,MAMJH,UAGAD,MACAC,KACA9oW,WAAW+oW,EAAiBjnT,EAEhCkpM,GAAe/0J,EAjDnB,GAAI4yQ,MAAqBC,KAAsB99G,EAAe,CAmD9D,OAAOznO,GA4PX,QAAS2lV,GAAQznW,GACb,MAAOo7I,YAAWp7I,IAAU,EAShC,QAAS0nW,GAAezxL,GAEpB,IAAK,GADD0xL,MACK/2R,EAAK,EAAGA,EAAK3jE,UAAU3Q,OAAQs0E,IACpC+2R,EAAU/2R,EAAK,GAAK3jE,UAAU2jE,EAElC,OAAO+2R,GAAUpiW,OAAO,SAAU60C,EAAMiiH,GAEpC,MAAOjiH,GAAOqtT,EADFxxL,EAAO,UAAY5Z,EAAW,YAE3C,GAQP,QAASurM,GAAY3xL,GAGjB,IAAK,GAFD0xL,IAAa,MAAO,QAAS,SAAU,QACvCE,KACKj3R,EAAK,EAAGk3R,EAAcH,EAAW/2R,EAAKk3R,EAAYxrW,OAAQs0E,IAAM,CACrE,GAAIyrF,GAAWyrM,EAAYl3R,GACvB5wE,EAAQi2K,EAAO,WAAa5Z,EAChCwrM,GAASxrM,GAAYorM,EAAQznW,GAEjC,MAAO6nW,GASX,QAASE,GAAkBnsV,GACvB,GAAIgrR,GAAOhrR,EAAOosV,SAClB,OAAOC,GAAe,EAAG,EAAGrhE,EAAKtjN,MAAOsjN,EAAKrjN,QAQjD,QAAS2kR,GAA0BtsV,GAG/B,GAAIusV,GAAcvsV,EAAOusV,YAAaC,EAAexsV,EAAOwsV,YAS5D,KAAKD,IAAgBC,EACjB,MAAOC,EAEX,IAAIpyL,GAASqyL,EAAY1sV,GAAQ2sV,iBAAiB3sV,GAC9CisV,EAAWD,EAAY3xL,GACvBuyL,EAAWX,EAASn/L,KAAOm/L,EAASl/L,MACpC8/L,EAAUZ,EAASr/L,IAAMq/L,EAASp/L,OAKlCnlF,EAAQmkR,EAAQxxL,EAAO3yF,OAAQC,EAASkkR,EAAQxxL,EAAO1yF,OAqB3D,IAlByB,eAArB0yF,EAAOyyL,YAOH9vU,KAAKggH,MAAMt1D,EAAQklR,KAAcL,IACjC7kR,GAASokR,EAAezxL,EAAQ,OAAQ,SAAWuyL,GAEnD5vU,KAAKggH,MAAMr1D,EAASklR,KAAaL,IACjC7kR,GAAUmkR,EAAezxL,EAAQ,MAAO,UAAYwyL,KAOvDE,EAAkB/sV,GAAS,CAK5B,GAAIgtV,GAAgBhwU,KAAKggH,MAAMt1D,EAAQklR,GAAYL,EAC/CU,EAAiBjwU,KAAKggH,MAAMr1D,EAASklR,GAAWL,CAMpB,KAA5BxvU,KAAK8oD,IAAIknR,KACTtlR,GAASslR,GAEoB,IAA7BhwU,KAAK8oD,IAAImnR,KACTtlR,GAAUslR,GAGlB,MAAOZ,GAAeJ,EAASn/L,KAAMm/L,EAASr/L,IAAKllF,EAAOC,GA0B9D,QAASolR,GAAkB/sV,GACvB,MAAOA,KAAW0sV,EAAY1sV,GAAQ/d,SAAS63M,gBAQnD,QAASozJ,GAAeltV,GACpB,MAAKmtV,GAGDC,EAAqBptV,GACdmsV,EAAkBnsV,GAEtBssV,EAA0BtsV,GALtBysV,EAcf,QAASY,GAAmB3gP,GACxB,GAAIxnG,GAAIwnG,EAAGxnG,EAAGC,EAAIunG,EAAGvnG,EAAGuiE,EAAQglC,EAAGhlC,MAAOC,EAAS+kC,EAAG/kC,OAElD2lR,EAAoC,mBAApBC,iBAAkCA,gBAAkB1sW,OACpEwnR,EAAOxnR,OAAOid,OAAOwvV,EAAOxsW,UAShC,OAPA0sW,GAAmBnlF,GACfnjQ,EAAGA,EAAGC,EAAGA,EAAGuiE,MAAOA,EAAOC,OAAQA,EAClCilF,IAAKznJ,EACL4nJ,MAAO7nJ,EAAIwiE,EACXmlF,OAAQllF,EAASxiE,EACjB2nJ,KAAM5nJ,IAEHmjQ,EAYX,QAASgkF,GAAennV,EAAGC,EAAGuiE,EAAOC,GACjC,OAASziE,EAAGA,EAAGC,EAAGA,EAAGuiE,MAAOA,EAAOC,OAAQA,GAloB/C,GAAI8lR,GAAU,WAWV,QAASC,GAASp7V,EAAKnO,GACnB,GAAIglB,IAAU,CAQd,OAPA7W,GAAIoiB,KAAK,SAAU6pC,EAAOnuC,GACtB,MAAImuC,GAAM,KAAOp6D,IACbglB,EAASiH,QAKVjH,EAnBX,MAAmB,mBAARmyB,KACAA,IAoBW,WAClB,QAASqyT,KACLjvV,KAAKkvV,eAuET,MArEA/sW,QAAOsC,eAAewqW,EAAQ7sW,UAAW,QAIrCwC,IAAK,WACD,MAAOob,MAAKkvV,YAAYltW,QAE5B2C,YAAWA,EACXD,cAAaA,IAMjBuqW,EAAQ7sW,UAAUwC,IAAM,SAAUa,GAC9B,GAAIisB,GAAQs9U,EAAShvV,KAAKkvV,YAAazpW,GACnCo6D,EAAQ7/C,KAAKkvV,YAAYx9U,EAC7B,OAAOmuC,IAASA,EAAM,IAO1BovS,EAAQ7sW,UAAU0uC,IAAM,SAAUrrC,EAAKC,GACnC,GAAIgsB,GAAQs9U,EAAShvV,KAAKkvV,YAAazpW,IAClCisB,EACD1R,KAAKkvV,YAAYx9U,GAAO,GAAKhsB,EAG7Bsa,KAAKkvV,YAAYhtW,MAAMuD,EAAKC,KAOpCupW,EAAQ7sW,UAAU2vJ,OAAS,SAAUtsJ,GACjC,GAAI85C,GAAUv/B,KAAKkvV,YACfx9U,EAAQs9U,EAASzvT,EAAS95C,IACzBisB,GACD6tB,EAAQl9B,OAAOqP,EAAO,IAO9Bu9U,EAAQ7sW,UAAU2uC,IAAM,SAAUtrC,GAC9B,SAAUupW,EAAShvV,KAAKkvV,YAAazpW,IAKzCwpW,EAAQ7sW,UAAU0f,MAAQ,WACtB9B,KAAKkvV,YAAY7sV,OAAO,IAO5B4sV,EAAQ7sW,UAAU29C,QAAU,SAAUtJ,EAAUpT,YACxCA,IAAkBA,EAAM,KAC5B,KAAK,GAAIizC,GAAK,EAAG03C,EAAKhuG,KAAKkvV,YAAa54R,EAAK03C,EAAGhsH,OAAQs0E,IAAM,CAC1D,GAAIzW,GAAQmuD,EAAG13C,EACf7/B,GAASj1C,KAAK6hC,EAAKw8B,EAAM,GAAIA,EAAM,MAGpCovS,QAOXR,EAA8B,mBAAX/sW,SAA8C,mBAAb6B,WAA4B7B,OAAO6B,WAAaA,SAGpG4rW,EAAW,WACX,gBAAWl7V,GAA0BA,EAAOqqB,OAASA,KAC1CrqB,EAES,mBAATiN,OAAwBA,KAAKod,OAASA,KACtCpd,KAEW,mBAAXxf,SAA0BA,OAAO48B,OAASA,KAC1C58B,OAGJgoD,SAAS,oBAShBujT,EAA0B,WAC1B,MAAqC,kBAA1BmC,uBAIAA,sBAAsBtqV,KAAKqqV,GAE/B,SAAU14T,GAAY,MAAOxyC,YAAW,WAAc,MAAOwyC,GAASyZ,KAAKl9C,QAAW,IAAO,QAIpGk6V,EAAkB,EAiElBmC,EAAgB,GAGhBC,GAAkB,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,UAE/EC,EAAwD,mBAArB9sT,kBAInC+sT,EAA0C,WAM1C,QAASA,KAMLxvV,KAAKyvV,cAMLzvV,KAAK0vV,wBAML1vV,KAAK2vV,mBAAqB,KAM1B3vV,KAAK4vV,cACL5vV,KAAK6vV,iBAAmB7vV,KAAK6vV,iBAAiB/qV,KAAK9E,MACnDA,KAAK47I,QAAUgxM,EAAS5sV,KAAK47I,QAAQ92I,KAAK9E,MAAOqvV,GAgKrD,MAxJAG,GAAyBptW,UAAU0tW,YAAc,SAAUhnL,IACjD9oK,KAAK4vV,WAAWl0V,QAAQotK,IAC1B9oK,KAAK4vV,WAAW1tW,KAAK4mL,GAGpB9oK,KAAKyvV,YACNzvV,KAAK+vV,YASbP,EAAyBptW,UAAU4tW,eAAiB,SAAUlnL,GAC1D,GAAIowE,GAAYl5O,KAAK4vV,WACjBl+U,EAAQwnO,EAAUx9O,QAAQotK,IAEzBp3J,GACDwnO,EAAU72O,OAAOqP,EAAO,IAGvBwnO,EAAUl3P,QAAUge,KAAKyvV,YAC1BzvV,KAAKiwV,eASbT,EAAyBptW,UAAUw5J,QAAU,WACnB57I,KAAKkwV,oBAIvBlwV,KAAK47I,WAWb4zM,EAAyBptW,UAAU8tW,iBAAmB,WAElD,GAAIC,GAAkBnwV,KAAK4vV,WAAW/5U,OAAO,SAAUizJ,GACnD,MAAOA,GAASsnL,eAAgBtnL,EAASunL,aAQ7C,OADAF,GAAgBpwT,QAAQ,SAAU+oI,GAAY,MAAOA,GAASwnL,oBACvDH,EAAgBnuW,OAAS,GAQpCwtW,EAAyBptW,UAAU2tW,SAAW,WAGrCtB,IAAazuV,KAAKyvV,aAMvBlsW,SAASygF,iBAAiB,gBAAiBhkE,KAAK6vV,kBAChDnuW,OAAOsiF,iBAAiB,SAAUhkE,KAAK47I,SACnC2zM,GACAvvV,KAAK2vV,mBAAqB,GAAIltT,kBAAiBziC,KAAK47I,SACpD57I,KAAK2vV,mBAAmBlsT,QAAQlgD,UAC5B6/C,YAAWA,EACXmtT,WAAUA,EACVC,eAAcA,EACdC,SAAQA,MAIZltW,SAASygF,iBAAiB,qBAAsBhkE,KAAK47I,SACrD57I,KAAK0vV,yBAET1vV,KAAKyvV,gBAQTD,EAAyBptW,UAAU6tW,YAAc,WAGxCxB,GAAczuV,KAAKyvV,aAGxBlsW,SAASgpK,oBAAoB,gBAAiBvsJ,KAAK6vV,kBACnDnuW,OAAO6qK,oBAAoB,SAAUvsJ,KAAK47I,SACtC57I,KAAK2vV,oBACL3vV,KAAK2vV,mBAAmBhsT,aAExB3jC,KAAK0vV,sBACLnsW,SAASgpK,oBAAoB,qBAAsBvsJ,KAAK47I,SAE5D57I,KAAK2vV,mBAAqB,KAC1B3vV,KAAK0vV,wBACL1vV,KAAKyvV,gBASTD,EAAyBptW,UAAUytW,iBAAmB,SAAU7hP,GAC5D,GAAI0iP,GAAK1iP,EAAGpvF,aAAcA,WAAe8xU,EAAgB,GAAKA,CAEvCpB,GAAet5U,KAAK,SAAUvwB,GACjD,SAAUm5B,EAAaljB,QAAQjW,MAG/Bua,KAAK47I,WAQb4zM,EAAyBmB,YAAc,WAInC,MAHK3wV,MAAK4wV,YACN5wV,KAAK4wV,UAAY,GAAIpB,IAElBxvV,KAAK4wV,WAOhBpB,EAAyBoB,UAAY,KAC9BpB,KAUPV,EAAqB,SAAWxtV,EAAQzB,GACxC,IAAK,GAAIy2D,GAAK,EAAG03C,EAAK7rH,OAAO6I,KAAK6U,GAAQy2D,EAAK03C,EAAGhsH,OAAQs0E,IAAM,CAC5D,GAAI7wE,GAAMuoH,EAAG13C,EACbn0E,QAAOsC,eAAe6c,EAAQ7b,GAC1BC,MAAOma,EAAMpa,GACbd,YAAWA,EACXgB,UAASA,EACTjB,cAAaA,IAGrB,MAAO4c,IASP0sV,EAAc,SAAW1sV,GAOzB,MAHkBA,IAAUA,EAAOilH,eAAiBjlH,EAAOilH,cAAcC,aAGnD2oO,GAItBpB,EAAYJ,EAAe,EAAG,EAAG,EAAG,GAmIpCe,EAAuB,WAGvB,MAAkC,mBAAvBmC,oBACA,SAAUvvV,GAAU,MAAOA,aAAkB0sV,GAAY1sV,GAAQuvV,oBAKrE,SAAUvvV,GAAU,MAAQA,aAAkB0sV,GAAY1sV,GAAQwvV,YAC3C,kBAAnBxvV,GAAOosV,YAkElBqD,EAAmC,WAMnC,QAASA,GAAkBzvV,GAMvBtB,KAAKgxV,eAAiB,EAMtBhxV,KAAKixV,gBAAkB,EAMvBjxV,KAAKkxV,aAAevD,EAAe,EAAG,EAAG,EAAG,GAC5C3tV,KAAKsB,OAASA,EA0BlB,MAlBAyvV,GAAkB3uW,UAAU2zB,SAAW,WACnC,GAAI4zP,GAAO6kF,EAAexuV,KAAKsB,OAE/B,OADAtB,MAAKkxV,aAAevnF,EACZA,EAAK3gM,QAAUhpE,KAAKgxV,gBACxBrnF,EAAK1gM,SAAWjpE,KAAKixV,iBAQ7BF,EAAkB3uW,UAAU+uW,cAAgB,WACxC,GAAIxnF,GAAO3pQ,KAAKkxV,YAGhB,OAFAlxV,MAAKgxV,eAAiBrnF,EAAK3gM,MAC3BhpE,KAAKixV,gBAAkBtnF,EAAK1gM,OACrB0gM,GAEJonF,KAGPK,EAAqC,WAOrC,QAASA,GAAoB9vV,EAAQ+vV,GACjC,GAAIC,GAAc3C,EAAmB0C,EAOrCvC,GAAmB9uV,MAAQsB,OAAQA,EAAQgwV,YAAaA,IAE5D,MAAOF,MAGPG,EAAmC,WAWnC,QAASA,GAAkB96T,EAAU+6T,EAAYC,GAc7C,GAPAzxV,KAAK0xV,uBAML1xV,KAAK2xV,cAAgB,GAAI5C,GACD,kBAAbt4T,GACP,KAAM,IAAIvY,WAAU,0DAExBle,MAAK4xV,UAAYn7T,EACjBz2B,KAAK6xV,YAAcL,EACnBxxV,KAAK8xV,aAAeL,EAoHxB,MA5GAF,GAAkBnvW,UAAUqhD,QAAU,SAAUniC,GAC5C,IAAK3O,UAAU3Q,OACX,KAAM,IAAIk8B,WAAU,2CAGxB,IAAuB,mBAAZ0/Q,UAA6BA,kBAAmBz7S,QAA3D,CAGA,KAAMmf,YAAkB0sV,GAAY1sV,GAAQs8R,SACxC,KAAM,IAAI1/Q,WAAU,wCAExB,IAAI6zU,GAAe/xV,KAAK2xV,aAEpBI,GAAahhU,IAAIzvB,KAGrBywV,EAAajhU,IAAIxvB,EAAQ,GAAIyvV,GAAkBzvV,IAC/CtB,KAAK6xV,YAAY/B,YAAY9vV,MAE7BA,KAAK6xV,YAAYj2M,aAQrB21M,EAAkBnvW,UAAU4vW,UAAY,SAAU1wV,GAC9C,IAAK3O,UAAU3Q,OACX,KAAM,IAAIk8B,WAAU,2CAGxB,IAAuB,mBAAZ0/Q,UAA6BA,kBAAmBz7S,QAA3D,CAGA,KAAMmf,YAAkB0sV,GAAY1sV,GAAQs8R,SACxC,KAAM,IAAI1/Q,WAAU,wCAExB,IAAI6zU,GAAe/xV,KAAK2xV,aAEnBI,GAAahhU,IAAIzvB,KAGtBywV,EAAahgN,OAAOzwI,GACfywV,EAAajyT,MACd9/B,KAAK6xV,YAAY7B,eAAehwV,SAQxCuxV,EAAkBnvW,UAAUuhD,WAAa,WACrC3jC,KAAKiyV,cACLjyV,KAAK2xV,cAAc7vV,QACnB9B,KAAK6xV,YAAY7B,eAAehwV,OAQpCuxV,EAAkBnvW,UAAUguW,aAAe,WACvC,GAAIrwV,GAAQC,IACZA,MAAKiyV,cACLjyV,KAAK2xV,cAAc5xT,QAAQ,SAAUmyT,GAC7BA,EAAYn8U,YACZhW,EAAM2xV,oBAAoBxvW,KAAKgwW,MAU3CX,EAAkBnvW,UAAUkuW,gBAAkB,WAE1C,GAAKtwV,KAAKqwV,YAAV,CAGA,GAAIhtU,GAAMrjB,KAAK8xV,aAEXvyT,EAAUv/B,KAAK0xV,oBAAoB1/U,IAAI,SAAUkgV,GACjD,MAAO,IAAId,GAAoBc,EAAY5wV,OAAQ4wV,EAAYf,kBAEnEnxV,MAAK4xV,UAAUpwW,KAAK6hC,EAAKkc,EAASlc,GAClCrjB,KAAKiyV,gBAOTV,EAAkBnvW,UAAU6vW,YAAc,WACtCjyV,KAAK0xV,oBAAoBrvV,OAAO,IAOpCkvV,EAAkBnvW,UAAUiuW,UAAY,WACpC,MAAOrwV,MAAK0xV,oBAAoB1vW,OAAS,GAEtCuvW,KAMPr4G,EAA+B,mBAAZxhE,SAA0B,GAAIA,SAAY,GAAIq3K,GAKjEoD,EAAgC,WAOhC,QAASA,GAAe17T,GACpB,KAAMz2B,eAAgBmyV,IAClB,KAAM,IAAIj0U,WAAU,qCAExB,KAAKvrB,UAAU3Q,OACX,KAAM,IAAIk8B,WAAU,2CAExB,IAAIszU,GAAahC,EAAyBmB,cACtC7nL,EAAW,GAAIyoL,GAAkB96T,EAAU+6T,EAAYxxV,KAC3Dk5O,GAAUpoN,IAAI9wB,KAAM8oK,GAExB,MAAOqpL,OAIP,UACA,YACA,cACFpyT,QAAQ,SAAUnU,GAChBumU,EAAe/vW,UAAUwpC,GAAU,WAC/B,GAAIoiF,EACJ,QAAQA,EAAKkrI,EAAUt0P,IAAIob,OAAO4rB,GAAQl5B,MAAMs7G,EAAIr7G,aAI5D,IAAI+e,GAAQ,WAER,gBAAWy9U,EAASgD,eACThD,EAASgD,eAEbA,IAGI,c17B4vlHc3wW,KAAK8D,EAAqBrE,EAAoB,MAIrE,SAAUI,EAAQD,EAASH,G27B/pnHjC,GAAImxW,GAAe,EAAQ,KAEvBC,EAAc,SAAUC,GAE1B,MADS,kBACC1sU,KAAK0sU,IAGbC,EAAS,SAAU/sW,GACrB,GAAIu4D,GAAK,GACLqxF,EAAWjtJ,OAAO6I,KAAKxF,EAmB3B,OAlBA4pJ,GAASrvG,QAAQ,SAAUuyT,EAAS5gV,GAClC,GAAIhsB,GAAQF,EAAI8sW,EAChBA,GAAUF,EAAaE,GAEnBD,EAAYC,IAA6B,gBAAV5sW,KACjCA,GAAgB,MAGhBq4D,QADEr4D,EACI4sW,OACG5sW,EACH,OAAS4sW,EAET,IAAMA,EAAU,KAAO5sW,EAAQ,IAEnCgsB,EAAQ09H,EAASptJ,OAAO,IAC1B+7D,GAAM,WAGHA,GAGLy0S,EAAU,SAAUj3V,GACtB,GAAIwiD,GAAK,EACT,OAAqB,gBAAVxiD,GACFA,EAGLA,YAAiBvH,QACnBuH,EAAMwkC,QAAQ,SAAU0lE,EAAG/zF,GACzBqsC,GAAMw0S,EAAO9sP,GACT/zF,EAAQnW,EAAMvZ,OAAO,IACvB+7D,GAAM,QAGHA,GAGFw0S,EAAOh3V,GAGhBla,GAAOD,QAAUoxW,G37BqqnHX,SAAUnxW,EAAQD,G47BvtnHxB,GAAIgxW,GAAe,SAAUpqU,GAC3B,MAAOA,GACEjb,QAAQ,SAAU,SAAUzC,GAC3B,MAAO,IAAMA,EAAM+L,gBAEpBA,cAGXh1B,GAAOD,QAAUgxW,G57B6tnHX,SAAU/wW,EAAQD,EAASH,GAEjC,Y67BrunHAG,GAAQ0D,aAER,IAAIg3E,GAAS,EAAQ,GAEjBC,EAEJ,SAAgCv2E,GAAO,MAAOA,IAAOA,EAAIV,WAAaU,GAAQipD,QAASjpD,IAFlDs2E,GAIjC2rB,GACF2vE,eAAcA,EACdivL,gBAAeA,EACf0C,YAAa,KACbqD,WAAY,SAAoBpyF,GAC9B,MAAOj+L,GAAQttB,QAAQhrD,cACrB,MACE43E,OAASqhB,QAAS,UACpBs9K,IAGJD,QAAOA,EACP17I,UAASA,EACTs7I,cAAe,IACfmvF,aAAc,KACd90L,YAAWA,EACXE,cAAe,OACfvzG,UAAW,GACX25G,QAAS,OACT6xL,aAAc,SAAsB7qW,GAClC,MAAOy6E,GAAQttB,QAAQhrD,cACrB,SACA,KACAnC,EAAI,IAGR04Q,MAAKA,EACLC,UAAW,aACX3iG,WAAUA,EACVm7L,OAAQ,SACR96L,aAAc,IACdtB,MAAKA,EACL4zL,eAAcA,EACd/0L,UAASA,EACTa,aAAc,EACdO,SAAU,KACV6jG,UAAW,KACXtiG,OAAQ,KACR0uL,OAAQ,KACRoC,gBAAiB,KACjBlB,SAAU,KACV3tF,kBAAiBA,EACjBF,cAAaA,EACbC,cAAaA,EACbK,UAAW,KACXE,WAAY,KACZt1J,KAAM,EACNkxD,KAAIA,EACJsD,MAAO,MACP+rL,aAAc,EACd9uL,eAAgB,EAChBtC,aAAc,EACdoG,MAAO,IACPhD,OAAMA,EACNW,WAAY,KACZN,cAAaA,EACbgzL,WAAUA,EACVjyL,eAAgB,EAChBjC,QAAOA,EACPyD,cAAaA,EACbQ,eAAcA,EACd9E,UAASA,EACTQ,gBAAeA,EAGjB/0K,GAAQqtD,QAAUg5C,G77B4unHZ,SAAUpmG,EAAQD,EAASH,G87BvznHjC,GAAIyxW,GAAqB,EAAQ,IACjCrxW,GAAOD,QAAU,GAAIsxW,I97B8znHf,SAAUrxW,EAAQD,EAASH,G+7BnznHjC,QAASyxW,KACL,IAAIhxW,OAAOixW,WACP,KAAM,IAAI3vW,OAAM,6DAGpBgd,MAAK4yV,WACL5yV,KAAK6yV,oBAAsBnxW,OAAOixW,WAAW,YAAYpqU,QAlB7D,GAAIuqU,GAAa,EAAQ,KACrBC,EAAO,EAAQ,KACfnkU,EAAOmkU,EAAKnkU,KACZosD,EAAa+3Q,EAAK/3Q,WAClBjqE,EAAUgiV,EAAKhiV,OAiBnB2hV,GAAmBtwW,WAEfid,YAAcqzV,EAad3N,SAAW,SAASt/O,EAAG1pG,EAASi3V,GAC5B,GAAIJ,GAAkB5yV,KAAK4yV,QACvBK,EAAkBD,GAAiBhzV,KAAK6yV,kBAoB5C,OAlBID,GAAQntP,KACRmtP,EAAQntP,GAAK,GAAIqtP,GAAWrtP,EAAGwtP,IAIhCj4Q,EAAWj/E,KACVA,GAAYuO,MAAQvO,IAEpBgV,EAAQhV,KACRA,GAAWA,IAEf6yB,EAAK7yB,EAAS,SAAS8wB,GACfmuD,EAAWnuD,KACXA,GAAYviB,MAAQuiB,IAExB+lU,EAAQntP,GAAGytP,WAAWrmU,KAGnB7sB,MASXolV,WAAa,SAAS3/O,EAAG54E,GACrB,GAAItxB,GAAQyE,KAAK4yV,QAAQntP,EAYzB,OAVGlqG,KACIsxB,EACCtxB,EAAM43V,cAActmU,IAGpBtxB,EAAMuG,cACC9B,MAAK4yV,QAAQntP,KAIrBzlG,OAIf3e,EAAOD,QAAUsxW,G/7Bs0nHX,SAAUrxW,EAAQD,EAASH,Gg8Bh5nHjC,QAAS6xW,GAAWv3V,EAAO03V,GACvBjzV,KAAKzE,MAAQA,EACbyE,KAAKizV,gBAAkBA,EACvBjzV,KAAK0qN,YACL1qN,KAAKozV,IAAM1xW,OAAOixW,WAAWp3V,EAE7B,IAAI2F,GAAOlB,IACXA,MAAKmC,SAAW,SAASixV,GAErBlyV,EAAKkyV,IAAMA,EAAIr5Q,eAAiBq5Q,EAChClyV,EAAKmyV,UAETrzV,KAAKozV,IAAI96Q,YAAYt4E,KAAKmC,UAtB9B,GAAImxV,GAAe,EAAQ,KACvB1kU,EAAO,EAAQ,KAAUA,IAwB7BkkU,GAAW1wW,WAEPmxW,WAAaT,EAWbI,WAAa,SAASrmU,GAClB,GAAI2mU,GAAK,GAAIF,GAAazmU,EAC1B7sB,MAAK0qN,SAASxoO,KAAKsxW,GAEnBxzV,KAAKuoB,WAAairU,EAAGn7Q,MAQzB86Q,cAAgB,SAAStmU,GACrB,GAAI69L,GAAW1qN,KAAK0qN,QACpB97L,GAAK87L,EAAU,SAASp3F,EAAGhyI,GACvB,GAAGgyI,EAAE4zF,OAAOr6L,GAER,MADAymG,GAAE87D,WACMs7B,EAASroN,OAAO/gB,EAAE,MAUtCinC,QAAU,WACN,MAAOvoB,MAAKozV,IAAI7qU,SAAWvoB,KAAKizV,iBAMpCnxV,MAAQ,WACJ8sB,EAAK5uB,KAAK0qN,SAAU,SAAS79L,GACzBA,EAAQuiK,YAEZpvL,KAAKozV,IAAI56Q,eAAex4E,KAAKmC,UAC7BnC,KAAK0qN,SAAS1oO,OAAS,GAM3BqxW,OAAS,WACL,GAAI7zO,GAASx/G,KAAKuoB,UAAY,KAAO,KAErCqG,GAAK5uB,KAAK0qN,SAAU,SAAS79L,GACzBA,EAAQ2yF,SAKpBn+H,EAAOD,QAAU0xW,Gh8Bi6nHX,SAAUzxW,EAAQD,Gi8Bn/nHxB,QAASkyW,GAAav3V,GAClBiE,KAAKjE,QAAUA,GACdA,EAAQ03V,YAAczzV,KAAK0zV,QAGhCJ,EAAalxW,WAETid,YAAci0V,EAOdI,MAAQ,WACD1zV,KAAKjE,QAAQ23V,OACZ1zV,KAAKjE,QAAQ23V,QAEjB1zV,KAAK2zV,gBAQTt7Q,GAAK,YACAr4E,KAAK2zV,aAAe3zV,KAAK0zV,QAC1B1zV,KAAKjE,QAAQuO,OAAStK,KAAKjE,QAAQuO,SAQvCiuE,IAAM,WACFv4E,KAAKjE,QAAQ63V,SAAW5zV,KAAKjE,QAAQ63V,WASzCxkK,QAAU,WACNpvL,KAAKjE,QAAQqzL,QAAUpvL,KAAKjE,QAAQqzL,UAAYpvL,KAAKu4E,OAUzD2uI,OAAS,SAAS5lN,GACd,MAAOtB,MAAKjE,UAAYuF,GAAUtB,KAAKjE,QAAQuO,QAAUhJ,IAKjEjgB,EAAOD,QAAUkyW,Gj8BogoHX,SAAUjyW,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GA8CrC,QAASsqD,GAAkBz1B,GAAM,MAAO,YAAc,GAAI01B,GAAM11B,EAAGtnB,MAAMsN,KAAMrN,UAAY,OAAO,IAAIgmP,GAA+ChuO,EAAE,SAAUxnB,EAASE,GAAU,QAASusD,GAAKnqD,EAAK8kB,GAAO,IAAM,GAAI9X,GAAOi9C,EAAIjqD,GAAK8kB,GAAU7kB,EAAQ+M,EAAK/M,MAAS,MAAON,GAAwB,WAAf/B,GAAO+B,GAAkB,IAAIqN,EAAKqiC,KAAiC,MAAO6jN,GAA+ChuO,EAAExnB,QAAQuC,GAAO8sC,KAAK,SAAU9sC,GAASkqD,EAAK,OAAQlqD,IAAW,SAAUR,GAAO0qD,EAAK,QAAS1qD,IAA/K/B,GAAQuC,GAAqL,MAAOkqD,GAAK,WAE3gB,QAAS8T,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAnD5c,GAAIqlD,GAAsCvjE,EAAoB,GAE1D0/H,GAD8C1/H,EAAoB4D,EAAE2/D,GACxBvjE,EAAoB,IAChE2/H,EAA6C3/H,EAAoB,IACjE4/H,EAAqD5/H,EAAoB4D,EAAE+7H,GAC3E83H,EAAyCz3P,EAAoB,IAC7D03P,EAAiD13P,EAAoB4D,EAAE6zP,GACvEzhK,EAAuCh2F,EAAoB,GAE3D4yW,GADkD5yW,EAAoB,IACbA,EAAoB,MAC7E6yW,EAAuE7yW,EAAoB,KAC3F+yE,EAAuD/yE,EAAoB,IAC3E21M,EAAkD31M,EAAoB,IACtE8yW,EAA4C9yW,EAAoB,IAChE+yW,EAAoD/yW,EAAoB,IACxEqxM,EAA4DrxM,EAAoB,IAChFgzW,EAAiEhzW,EAAoB,KACrFizW,EAAqDjzW,EAAoB,KACzEkzW,EAA0DlzW,EAAoB,IAC9EmzW,EAAsDnzW,EAAoB,IAC1EozW,EAAuEpzW,EAAoB,IAC3FqzW,EAA8DrzW,EAAoB,IAClFszW,EAAqEtzW,EAAoB,IACzFuzW,EAAkEvzW,EAAoB,KACtFwzW,EAA2ExzW,EAAoB,IAC/FyzW,EAAoEzzW,EAAoB,IACxF0zW,EAAgE1zW,EAAoB,IACpF2zW,EAA+D3zW,EAAoB,GACnF4zW,EAAgE5zW,EAAoB,IACpF6zW,EAAmE7zW,EAAoB,IACvF8zW,EAA8D9zW,EAAoB,KAClF+zW,EAAsE/zW,EAAoB,KAC1Fg0W,EAAyCh0W,EAAoB,IAC7Di0W,EAAiDj0W,EAAoB4D,EAAEowW,GACvEE,EAAqEl0W,EAAoB,KACzFm0W,EAA4Cn0W,EAAoB,GAChEo0W,EAA4Dp0W,EAAoB,KACrGmvH,EAASpwG,KAETsnF,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BzmF,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Mk8B7koH5hBqwM,EAGA74P,IAHA64P,aACAzmP,EAEApS,IAFAoS,cACAqpP,EACAz7P,IADAy7P,UAGE4E,EAAejuP,EAAf,aAAyCymP,EAC3C6C,EAAgB2E,EAAhB,aACA5E,KACAC,EAAa,mCl8B8noHjB,Ik8B3noHQn7K,GAAY3oB,IAEZlhE,EAAuBvK,IAAvBuK,mBAEKwjW,EAAb,YACI,WAAYz1V,GAAO,yEACTA,GADS,OAEfyY,GAAK7T,OACDspO,WAAY7B,IAAiB3c,QAC7BgmI,SAAQA,EACRC,eAAcA,GAElBl9U,EAAKw1N,aAAex1N,EAAKw1N,aAAahpO,KAAlBwT,GACpBA,EAAK0xU,YAAc1xU,EAAK0xU,YAAYllV,KAAjBwT,GACnBA,EAAKm9U,WAAan9U,EAAKm9U,WAAW3wV,KAAhBwT,GAClBA,EAAKo9U,gBAAkBp9U,EAAKo9U,gBAAgB5wV,KAArBwT,GACvBA,EAAKq9U,gBAAkBr9U,EAAKq9U,gBAAgB7wV,KAArBwT,GAXR,EADvB,6DAewB,MACU/0B,SADV,IACRmtP,oBADQ,EACG,GADH,CAEhB1wO,MAAK41V,YAAYllH,EAFD,OAIsD1wO,KAAKH,MAAnEgG,EAJQ,EAIRA,SAAU0sC,EAJF,EAIEA,QAAoBl2C,EAJtB,EAIWq6D,QAAWr6D,0BAJtB,EAKOA,MALP,IAKRd,iBALQ,OAMZw9C,QACJlzC,GAAS2wC,eACT3wC,EAAS8xC,eACLpF,SACOh3C,GAAMiB,cACNjB,GAAM+4C,aACN/4C,GAAMy9C,OACbD,OACOx9C,EACAg3D,YAAahgB,KAEbh3C,EAAMe,IAAMf,EAAMiB,SAAWjB,EAAM03C,SAAW13C,EAAM43C,QAC3D4F,EAAWx9C,EACHA,EAAMo9C,UACdI,OACOx9C,GACH43C,QAAS,UAIjBttC,EAASw1C,YAAYtC,OAzC7B,kCA4CiBh7C,GAEJiC,KAAK61V,gBACN71V,KAAK41V,YAAY73V,MA/C7B,mCAoDYiC,KAAKyE,MAAM+wV,eAGfx1V,KAAKmG,UAAWovV,SAAQA,OAvDhC,kCA2DYv1V,KAAKyE,MAAM+wV,eAGfx1V,KAAKmG,UAAWovV,SAAQA,OA9DhC,uCAkEQv1V,KAAKmG,UAAWqvV,eAAcA,IAC9Bx1V,KAAKmG,UAAWovV,SAAQA,OAnEhC,uCAuEQv1V,KAAKmG,UAAWqvV,eAAcA,OAvEtC,8CAAAhzW,GAAA,0EA0EsBub,GA1EtB,sHA2EiHiC,KAAKH,MA3EtH,IA2EgBg+C,UAAayb,iBA3E7B,sBA2EiDC,oBA3EjD,SA2EmEC,mBA3EnE,KA2E4F3zD,EA3E5F,EA2E4FA,SAAUmN,EA3EtG,EA2EsGA,OACxF8iV,EAAa,yBAAyBviQ,KAAKx1F,GAC3CT,GAASw4V,GAAcA,EAAW,IAAO,IAAI/oV,QAAQ,SAAU,IACjEgpV,UACAx8R,GAAY73E,OAAOwsK,MAAQxsK,OAAOwf,KA/E9C,iBAgFYlB,KAAK61V,kBACLE,KAjFZ,4BAkFmBz4V,EAlFnB,uBAmFY0C,MAAK61V,kBACCpwW,EAAM/D,OAAO+yL,KAAKn3K,GApFpC,oBAsF0DuI,EAAS+lO,YAAYnmP,GAtF/E,sBAsFwBuwW,yBAtFxB,EAsFwC,QAtFxC,EAuFgBD,EAAmC,SAAlBC,EAvFjC,mDAyFgB7wW,EAAQC,MAAR,MACA2wW,IA1FhB,iCA4FmBv8R,GACPx5D,KAAK61V,kBAGLE,MAEA5wW,EAAQyN,KAAK,kCAlGzB,YAoG8B,MAAlBmjW,EApGZ,qBAqGgBA,EArGhB,4CAwG0B7yW,IAAQyrC,KACV9oB,EAASqwC,YAAqCljC,IAC9CnN,EAASswC,eACTtwC,EAASkwC,gBA3GjC,4DA8GoB5wD,EAAQC,MAAR,KA9GpB,SAiHY4a,KAAKmG,UACD4nO,WAAYgoH,EAAiB7pH,IAAiBc,QAAUd,IAAiBa,aAlHzF,8GAuHa,MAC0C/sO,KAAKyE,MAA5CspO,EADH,EACGA,WAAYwnH,EADf,EACeA,QAASC,EADxB,EACwBA,cADxB,EAqBDx1V,KAAKH,MAlBL0yC,EAHC,EAGDA,QACgB0jT,EAJf,EAIDrrQ,eACAj9C,EALC,EAKDA,SACAryC,EANC,EAMDA,SACA2wC,EAPC,EAODA,KACAjtC,EARC,EAQDA,OACAnF,EATC,EASDA,QACA8wD,EAVC,EAUDA,aACApxD,EAXC,EAWDA,aACAu5D,EAZC,EAYDA,SACAwhL,EAbC,EAaDA,WAbC,IAcD4hH,cACIv6R,EAfH,EAeGA,gBACAC,EAhBH,EAgBGA,iBAEOv/D,EAlBV,EAkBDq6D,QAAWr6D,0BACXF,EAnBC,EAmBDA,SACQsuC,EApBP,EAoBDyB,KAAQzB,cApBP,EAsBkBpuC,MAtBlB,IAsBGd,iBAtBH,OAuBC46V,EACU,OAAZt8V,IAEK0B,EAAMlU,IAAMiJ,UAAgE,UAApDiL,EAAMlU,IAAMoJ,qCACe,SAApD8K,EAAMlU,IAAMoJ,sCAEhBs9O,IAAe7B,IAAiBc,QAE9BI,IAAc7xO,EAAMlU,IAAMqJ,YAC1B28O,IAAmB9xO,EAAMlU,IAAMsJ,iBACjCi5K,QAWJ,OAVIruK,GAAMo9C,SAAuB,OAAZ9+C,EACjB+vK,EAAen/H,EAActuC,EAAS,kCAC/B4xO,IAAe7B,IAAiBa,YACvCnjE,EAAen/H,EAActuC,EAAS,mCAC/BouC,YAAQgI,GACfq3H,EAAen/H,EAActuC,EAAS,wCAC/Bo2C,GAAWA,EAAQjF,SAAWvmD,IAAckH,WACnD27K,EAAen/H,EAActuC,EAAS,wCAG1C,gBAEiB4lJ,SAAU,WAAY/4E,MAAO,OAAQC,OAAQ,QAF9D,YAGqBjpE,KAAKgqV,YAH1B,WAIoBhqV,KAAKy1V,mBAJzB,EAMS,KANT,OAQkBnxW,KAAM,SAAUiuD,QAAS,sBAR3C,OAWkBmiN,IAAK,aAAc32P,KAAS+4P,EAAT,cACnBpC,IAAK,aAAc32P,KAAS+4P,EAAT,eAEjBs/F,MAAO,0BACP1hG,IAAK,aACL32P,KAAM69D,IAhB1B,QAoBgBiE,QAAQA,yyCA6BD1wD,IA7BP,MA6BgCA,IA7BhC,4TAqCOC,IArCP,4NA2COA,IA3CP,0CA4COC,IA5CP,qXApBhB,SA4EoBtrB,IAAK43F,EAAQ7oB,KAGb/uE,IAAK43E,EACL/3E,OAAMA,MAhF1B,EAoFS,KApFT,QAqFqB2uD,EArFrB,eAsF4B0jT,EAtF5B,SAuFsBtoT,EAvFtB,MAwFmBpyC,EAxFnB,SAyFsBD,EAzFtB,KA0FkB2wC,EA1FlB,OA2FoBjtC,EA3FpB,aA4F0B2rD,EA5F1B,aA6F0BpxD,EA7F1B,WA8FwB+6O,EA9FxB,YA+FyBxiP,EA/FzB,WAgGwBi8O,EAhGxB,UAiGuBX,EAjGvB,eAkG4BC,EAlG5B,aAmG0BzjE,EAnG1B,aAoG0B5pK,KAAK8tO,aApG/B,eAqG4B9tO,KAAK01V,gBArGjC,eAsG4B11V,KAAK21V,gBAtGjC,gBAuG6B31V,KAAK01V,gBAvGlC,gBAwG6B11V,KAAK21V,kBAEzBQ,GAAsBA,EAClB,KADJ,SAEiB76V,EAFjB,QAGgBi6V,EAHhB,OAIeC,IA9GxB,EAkHS,aArRjB,GAAmDnxS,gBAgTnDixS,GAA8B7tQ,cAC1Bl1C,WACA8W,cAGJisS,EAA8B/qG,aAC1B7sM,IACA+L,IACA,SAACz2C,EAAD,WAAWtvB,gBAAX,EAAkB,OAAlB,QAA+B42H,aAAgB52H,IAC/C,SAACiuD,EAAYp2C,GAAb,kDAAuB,WAAOsK,GAAP,UAAA8E,EAAA,oGACbrO,EAAK,oBACLhY,EAAO,mBACbuhB,EAASkqC,YAAwBzzC,IACjCuJ,EAASosC,eACTpsC,EAAS6yC,iBAEHl8C,EAAUjB,EAAMiB,SAAWjB,EAAM+4C,OAC/BqE,EAA8Bp9C,EAA9Bo9C,QAASC,EAAqBr9C,EAArBq9C,MAAOC,EAAct9C,EAAds9C,UACpBtG,SACCh3C,EAAMe,KAAMq8C,EAVE,qBAWXp9C,EAAMo/G,WAXK,kCAYK90G,EAASq2G,YAAwB3gH,GAZtC,SAYXg3C,EAZW,OAaXA,EAAUA,EAAQ18B,OAAO,YAAmC,GAAhC6xF,GAAgC,EAAhCA,WAAYvB,EAAoB,EAApBA,cAC9BkwP,EACF3uP,EAAW,IACXA,EAAW,GAAGj9C,cACdi9C,EAAW,GAAGj9C,aAAangD,MAAM,WAIjCgsV,IAEJ,IAAI39S,GAAWwtD,EAAc,GAAI,CAC7B,GAAMntD,GAASmtD,EAAc,GACvBowP,EAAe,GAAI33T,QAAU+Z,EAAd,IAAyBA,EAAQ5rC,QAAQ,IAAK,KAAQ,KACrEypV,EAAax9S,EAAO5rC,MAAQ4rC,EAAO5rC,KAAK9C,MAAMisV,GAC9CE,EAAWz9S,EAAO18C,IAAM08C,EAAO18C,GAAG+Z,gBAAkBsiC,EAAQtiC,cAC5DqgV,KAAe19S,EAAO10D,OAAQ00D,EAAO10D,KAAKgmB,MAAMisV,GAEtDD,GAAgBE,GAAaC,GAAWC,EAG5C,MAAQL,IAAkBC,IAC3B,GAlCQ,yCAoCKzwV,EAASizC,aAAkBH,UAASC,UApCzC,SAoCXrG,EApCW,kBAwCfwG,eACGx9C,GAAMs9C,UACTtG,SACOh3C,GAAMiB,cACNjB,GAAM+4C,aACN/4C,GAAMy9C,aACNz9C,GAAMo9C,cACNp9C,GAAMq9C,MACbG,OAAgBx9C,GAAOe,GAAIi2C,EAAQj2C,MAC5BE,EACPu8C,GAAav8C,WACNjB,EAAMe,IAAMf,EAAM03C,SAAW13C,EAAM43C,QAC1C4F,EAAWx9C,EACHo9C,IACRI,OACOx9C,GACH43C,QAAS,UAIb8F,UACAF,EA7De,kCA8DClzC,EAAS2tC,YAAyBuF,GA9DnC,SA8DfE,EA9De,iBAgEuCA,MAhEvC,IAgEXhN,KAhEW,kBAgEHx3C,EAhEG,EAgEHA,QAAmB+7C,EAhEhB,EAgEM8B,SACrB9B,GAAeqI,IACfrI,EAAYpD,UAAYyL,GAE5BhzC,EAASsqC,aACL7zC,KACAhY,OACAmQ,UACA+7C,cACAE,SAAQA,KAGPiI,GACD9yC,EAASw1C,YAAYtC,GA7EN,4CAAvB,wDAmFJ,IAAM9wC,IAAkB,SAACxD,GAAU,GACvBqV,GAAarV,EAAbqV,SACFlC,EAAWzD,YAAiB1P,GAC5B8tC,EAAUwyG,YAAatgJ,GACvBwnC,EAAOD,YAAavnC,GAEpBwxV,EACFrrQ,YAAer4C,EAAS36B,QACvB2yB,YAAQgI,IACTA,EAAQjF,SAAWvmD,IAAckH,SAE/BqmP,EAAat1J,YAA6BpnE,EAChD,QACIimC,UAAWjlD,YAAkB6L,GAC7B8tC,UACAq4C,eAAgBqrQ,EAChBtoT,SAAU3C,YAAiBvmC,GAC3BwnC,MAAQ3vC,GAAI2vC,EAAK3vC,GAAIhY,KAAM2nD,EAAK3nD,MAChCoyE,QAAS79D,YAAgB4L,GACzBzF,OAAQ0oJ,YAAejjJ,GACvByxV,cAAex6R,YAA2Bj3D,GAC1C5K,QAASD,YAAgB6K,GACzB6vO,aACA3pL,aAAc8F,YAAiBhsD,GAC/BlL,aAAcF,YAAqBoL,GACnCquD,SAAUz3D,YAAiBoJ,GAC3B4hO,YAAavsN,EAASgrO,kBACtBj+I,SAAU/sF,EAAS+sF,aACnBw9I,QAASvqO,EAASuqO,SAIX71J,iBAAQvmF,IAAiB+7C,YAAWsxS,Ml8B6qoHtB9zW,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YAmFA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GApFje,GAAIyL,GAAQ3pB,EAAoB,GAI5B+iE,EAAa/iE,EAAoB,IAGjC2iK,EAAgB3iK,EAAoB,Km8BvqpHzB,GACX4/D,WACIkhG,SAAU,WACVmM,IAAK,EACLllF,MAAO,OACPC,OAAQ,OACRt7C,MAAO,QAEXu4O,QACInkH,SAAU,WACVmL,OAAQ,SACRoB,QAAS,GACTJ,IAAK,MACLiM,UAAW,mBACXnxF,MAAO,OACP63J,SAAU,IACV53J,OAAQ,OACRt7C,MAAO,OACP2vK,WAAY,IACZ6C,WAAY,yDAEhBw2J,WACI50M,SAAU,WACVkM,UAAW,IAEf2oM,aACI5sM,UAAW,UAEft/C,MAGI1hC,MAAO,OACPC,OAAQ,IAEZ4tR,iBACI5Z,MAAO,QAEX6Z,cACI52J,SAAU,GACVl3H,MAAO,KAEX+tR,aACI9tR,OAAQ,GACRglF,UAAW,IAEf+oM,YACIn2H,SAAU,IACVskH,SAAU,IACV52L,WAAY,OACZowC,OAAQ,EACRnwC,aAAc,EACd7gI,MAAO,OACPo0H,SAAU,WACViI,UAAW,SACX01E,WAAY,SACZpxE,QAAS,SACT4xC,SAAU,GACVl3H,MAAO,KAEXlnE,OACIA,MAAO,Sn8B8qpHXwlF,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BzmF,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Mo8BzupH1hB+3M,EAAqB,UAErBpxB,E,YACF,WAAY1qO,GAAO,yEACTA,GADS,OAEf,GAAK+7P,iBAAmB,EAAKA,iBAAiB92P,KAAtB,GACxB,EAAKooO,gBAAkB,EAAKA,gBAAgBpoO,KAArB,GACvB,EAAKL,OACDmP,SAAU+nP,GALC,Ep8B43pHnB,MAtIA73M,GAAUymL,EAAgBhkF,GAe1B1hG,EAAa0lL,IACT9kP,IAAK,mBACLC,MAAO,So8B9vpHMwlC,GACb,GAAMtX,GAAWsX,EAAM5pB,OAAO5b,KAC9Bsa,MAAKmG,UACDyN,gBp8BkwpHJnuB,IAAK,kBACLC,MAAO,So8B/vpHKwlC,GAAO,GACXtX,GAAa5T,KAAKyE,MAAlBmP,SADW,EAEoB5T,KAAKH,MAApCwpD,EAFW,EAEXA,UAAW6jL,EAFA,EAEAA,gBAEbviL,EAAetB,EAAUxzC,OAAO,qBAAG40C,eAAoC72C,IAAU,EACnF+2C,IAAgBuiL,GAChBA,EAAgBhiN,EAAOy/B,Mp8BywpH3BllE,IAAK,SACLC,MAAO,Wo8BtwpHF,GACGkuB,GAAa5T,KAAKyE,MAAlBmP,SADH,EAcD5T,KAAKH,MAXLwpD,EAHC,EAGDA,UAHC,IAID1b,SACU6yL,EALT,EAKGl8O,KACSm8O,EANZ,EAMG5yL,QAEJ94B,EARC,EAQDA,gBACAq4N,EATC,EASDA,UACAC,EAVC,EAUDA,eACAF,EAXC,EAWDA,cACAhxO,EAZC,EAYDA,SACQsuC,EAbP,EAaDyB,KAAQzB,cAENwsT,EAAmBA,KAAKt7L,EAAOg7L,UAAch7L,EAAOi7L,aAEpDvrH,EAAiBhiL,EAAUxzC,OAAO,kBAAuB,KAAvB,EAAGsoC,OACrC+4S,EAAiB7tS,EAAUxzC,OAAO,kBAAuB,KAAvB,EAAGsoC,OAGrC+3M,EAAkB7qB,EAAex4N,OAAOqkV,GAAgBllV,IAAI,eAAG1tB,GAAH,EAAGA,KAAMmmE,EAAT,EAASA,YAAT,0BAC/CA,UAAenmE,IAElC4xQ,GAAgBxrM,QAAhB,kBACmBixM,UADnB,SAEkBlxN,EAActuC,EAAS,8BAFzC,UAMA,IAAMg7V,GAASA,oBAAoBvjV,EAA7B,mBAGAwjV,EAAiB/pH,EACnB5iM,EAActuC,EAAS,6CACvB,GAEEk7V,EACF5sT,EADsB2iM,EACRjxO,EAAS,+CACTA,EAAS,iDAE3B,2BACmB,4BADnB,MACsDw/J,EAAO96G,kBAD7D,mBAEuB,kBAFvB,MAEgD86G,EAAOuqG,eAFvD,eAGwBvqG,EAAOi7L,oBAH/B,eAK2Bj7L,EAAOjxD,KALlC,IAMyB+1H,EANzB,IAOyBD,KAGXzrN,GAAoBq4N,EAArB,iCA0CmB6pH,UA1CnB,kBA2CiBI,GA3CjB,6BA4CiBD,KAERhqH,GAAD,eAA0B6pH,UAA1B,sBAEiB,+BAFjB,QAGgB9pH,EAHhB,MAIcxxE,EAAOq7L,mBAEbvsT,EAActuC,EAAS,8CApDvC,iCAEmBw/J,EAAOg7L,kBAF1B,gBAIgBlsT,EAActuC,EAAS,+BAJvC,eAOmBw/J,EAAOg7L,kBAP1B,eAQuBh7L,EAAOk7L,wBACdpsT,EAActuC,EAAS,0BATvC,qBAWuBw/J,EAAOk7L,wBAX9B,eAasB,eAbtB,aAciCjjV,EAdjC,MAe0B+nJ,EAAOm7L,aAfjC,SAgB6B92V,KAAK47P,yBAEd1F,GAlBpB,eAoB2Bv6F,EAAOo7L,oBACbnjV,IAAa+nP,GAAd,EACI/3G,EAAA,GADJ,GAEWuzM,EAFX,OAzCd,SAyCc,QAIgBn3V,KAAKktO,wBAJrB,sBAOqB,yBAPrB,MAQkBvxE,EAAOq7L,mBAEbvsT,EAActuC,EAAS,iDA/BvD,eAqCuBw/J,EAAO75J,gBp8B0wpHxCyoO,Go8B73pHkBlmL,gBAyJdL,iBAAWumL,Ip8B2upHpB,SAAUlpP,EAAQiE,EAAqBrE,GAE7C,YAgIA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAkPje,QAASm4V,GAAgC3zS,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhI,QAASq5U,GAA2Cr2V,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElP,QAASg2W,GAA0Bt4V,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAvXjf,GAAIyL,GAAQ3pB,EAAoB,GAC5BmpG,EAA6BnpG,EAAoB4D,EAAE+lB,GAGnDgiV,EAAW3rW,EAAoB,KAC/Bw2W,EAAgCx2W,EAAoB4D,EAAE+nW,GAGtD7zV,EAAS9X,EAAoB,IAC7B+X,EAA8B/X,EAAoB4D,EAAEkU,GAMpDksJ,GAHYhkK,EAAoB,IAGhBA,EAAoB,MAGpCqjF,EAAUrjF,EAAoB,KAC9B6/O,EAA+B7/O,EAAoB4D,EAAEy/E,GAGrDvvE,EAAQ9T,EAAoB,GAG5B0X,EAAc1X,EAAoB,IAGlCm2B,EAAYn2B,EAAoB,IAGhC+iE,EAAa/iE,EAAoB,Iq8B16pHtB,GACXmvD,QACI2xG,SAAU,WACVwM,WAAY,kEACZvlF,MAAO,OACPC,OAVqB,GAWrB00H,OAAQ,QACR5jC,WAAY,0BACZpsI,MAAO,OACPuyK,SAAU,GACVyxF,cAAe,OACf+lE,cAAe,EACfv3J,WAAY,yDAEhBrjJ,MACIq9G,UAAW,iBAEfopL,MACIppL,UAAUA,qBAEdzvD,MACIuyO,MAAO,OACPj0Q,MA1ByB,GA2BzBC,OAAQ,OACRqlF,QAAS,UAEbhnI,OACI2hD,OAAQ,OACRm0H,WAAY,OACZsiC,WAAY,SACZl3G,SAAU,SACVi3G,aAAc,WACd7xE,WApCyB,GAqCzBwB,YApC2B,KAsC/BuoM,WACIv1H,cAAe,UAEnBz0L,UACIsvS,MAAO,QACPj0Q,MA3C2B,IA4C3BC,OAAQ,OACRqlF,QAAS,SACTqjI,cAAe,OAEnB/9Q,UACIqpU,MAAO,QACPj0Q,MAjD2B,IAkD3BC,OAAQ,OACR2uR,aAAc,GACdjmE,cAAe,MACfjyD,WAAY,SACZ3lE,WAAY,cAEhB89L,SACIz1H,cAAe,SACfp5J,MAAO,OACPC,OAAQ,OACR43J,SAAU,OACVgJ,UAAW,OACX9vE,WAAY,cAEhB+9L,SACIp7Q,QAAS,eACT/uD,MAAO,OACPq7C,MAAO,EACP+uR,YAAa,GACbvvO,SAAU,SACV45G,cAAe,UAEnB5jG,WACI4jG,cAAe,UAEnB41H,QACIt7Q,QAAS,eACTzT,OAAQ,OACRm5J,cAAe,Wr8Bs7pHnB96I,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BzmF,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Ms8BngqHhhBz6D,EAAuBrD,IAA/BoD,KAAQC,iBAEV8uW,E,YACF,WAAYp4V,GAAO,yEACTA,GADS,OAEf,GAAK4E,OACDyzV,iBAAgBA,EAChBC,iBAAaA,IAEjB,EAAKC,cAAgB,EAAKA,cAActzV,KAAnB,GACrB,EAAKuzV,oBAAsB,EAAKA,oBAAoBvzV,KAAzB,GAC3B,EAAKwzV,mBAAqB,EAAKA,mBAAmBxzV,KAAxB,GARX,Et8B2tqHnB,MAxMAg/C,GAAUm0S,EAAe1xM,GAiBzB1hG,EAAaozS,IACTxyW,IAAK,oBACLC,MAAO,Ws8B1hqHPsa,KAAKu4V,qBt8B8hqHL9yW,IAAK,qBACLC,MAAO,Ws8B3hqHPsa,KAAKu4V,qBt8B+hqHL9yW,IAAK,gBACLC,MAAO,Ss8B7hqHGwlC,GACVA,EAAMkvD,iBACNp6E,KAAKH,MAAMohO,kBt8BgiqHXx7O,IAAK,sBACLC,MAAO,Ws8B7hqHPsa,KAAKmG,UAAW+xV,iBAAgBA,Ot8BiiqHhCzyW,IAAK,qBACLC,MAAO,Ws8B9hqHPsa,KAAKmG,UAAW+xV,iBAAgBA,Ot8BkiqHhCzyW,IAAK,kBACLC,MAAO,Ws8B/hqHHsa,KAAK83V,kBAAW93V,KAAKyE,MAAM0zV,cAC3Bn4V,KAAKmG,UAAWgyV,aAAcn4V,KAAK83V,QAAQ1jM,YAAc,Qt8BoiqH7D3uK,IAAK,SACLC,MAAO,Ws8BjiqHF,aACqCsa,KAAKyE,MAAvCyzV,EADH,EACGA,gBAAiBC,EADpB,EACoBA,aADpB,EAiBDn4V,KAAKH,MAdLi9C,EAHC,EAGDA,KACAx4D,EAJC,EAIDA,KAJC,IAKDid,OACUw2P,EANT,EAMGzzQ,KACSk0W,EAPZ,EAOG3qT,QAPH,IASDF,SACU6yL,EAVT,EAUGl8O,KACSm8O,EAXZ,EAWG5yL,QAEJj6B,EAbC,EAaDA,SACYrY,EAdX,EAcDD,SAAYC,MACZY,EAfC,EAeDA,SACQsuC,EAhBP,EAgBDyB,KAAQzB,cAGNsO,EAAWA,KAAKx9C,EACtBpZ,QAAO6I,KAAK+tD,GAAUhZ,QAAQ,SAAAt6C,IACa,IAAnC0D,EAAiBuS,QAAQjW,UAClBszD,GAAStzD,GAER,OAARA,IAAiBszD,EAAS5F,SAAW4F,EAAS9F,gBACvC8F,GAAStzD,IAGxB,IAAMqY,GAASnF,YAAYogD,GACvB0/S,EAAYA,gBAAgB36V,CAC5BsZ,OACAqhV,YAAsB/2W,OAAO4Z,SAASgC,KAAOm7V,EAIjD,IAAMp9R,GAAQA,KACPsgG,EAAOvrH,OACPurH,EAAO7+G,EAAO,OAAS,SAGxB47S,EAAaF,EAAgB78L,EAAOr0I,MAAvB,KACZq0I,EAAOr0I,OACVsmI,WAAY,KAGFrjF,EAAiB32D,EAAvBtvB,KACF+vP,EAAkB/vK,IAAQ,0CAA2C1wD,IACvE0wD,IAAQ,mBAAoB1wD,IAAa,GACvC+kV,EAAer0R,IAAQ,iBAAkB1wD,IAAa,SAExDglV,EAAeA,KACZj9L,EAAOm8L,SACVp7Q,QAAS,QAeb,iBAbIy7Q,EACAS,OACOj9L,EAAOm8L,SACV9uR,MAAO,OACP2sN,WAAY,WAETuiE,IACPU,OACOj9L,EAAOm8L,SACV9uR,MAAOmvR,EAAe,KAI9B,mBACmB,gBADnB,MAC0C98R,UACjCm9R,GAAiBA,EAAjBA,OAAA,MACe78L,EAAOjxD,aADtB,gBAEoBixD,EAAOq8L,SAF3B,aAGiBQ,EAHjB,IAGqCzgG,EAHrC,MAGwDp8F,EAAOk8L,WAG/DxjH,EAAkBA,EAAlBA,OAAA,MAEc6jH,EAAkBA,KAClBv8L,EAAO/nJ,UACVo1D,MAAO2yF,EAAO/nJ,SAASo1D,MAAQmvR,IAC/Bx8L,EAAO/nJ,SALlB,YAMoB5T,KAAKq4V,oBANzB,WAOmBr4V,KAAKs4V,2BAPxB,gBASoB38L,EAAOq8L,SAT3B,YAWiBW,EAXjB,OAYkB,SAZlB,IAae,sBAbf,IAcgBpuR,UAdhB,aAiBoB8pK,EAjBpB,IAkBoB9pK,EAlBpB,MAmBsB2tR,EAAkBA,KAClBv8L,EAAOk8L,SACVh3H,SAASA,eAAgBs3H,EAAzB,QACAx8L,EAAOk8L,WAtB1B,gBA0BkBK,EAAkBv8L,EAAOn9B,UAAzB,KACAm9B,EAAOn9B,WACV9hD,QAAS,iBA5BxB,OA+BO,uBACI92E,IAAK,SAAA66C,GAAQ,EAAKq3S,QAAUr3S,GAC5B4a,MAAOu9R,EACPt7O,QAASt9G,KAAKo4V,eAChB3tT,EAActuC,EAAS,oBAnChC,oBAuCmBw/J,EAAO/nJ,UAAUq6I,UAAW,aAvC/C,gBA0CkB0N,EAAOn9B,kBA1CzB,OA4CO,uBACI54H,IAAK,SAAA66C,GAAQ,EAAKq3S,QAAUr3S,GAC5B4a,MAAA,KACOsgG,EAAOm8L,SACV9uR,MAAOmvR,EAAe,IAE1B76O,QAASt9G,KAAKo4V,eAChB3tT,EAActuC,EAAS,oBA3DzC,eA8DoBw/J,EAAOhuH,iBA9D3B,gBA+DyBguH,EAAOq8L,SA/DhC,YAiEsBS,EAjEtB,OAkEuB,SAlEvB,IAmEoB,sBAnEpB,MAoEuBhuT,EAActuC,EAAS,uCAC1BqkO,yBArEpB,aAwE0BC,EAxE1B,IAwEgDD,EAxEhD,MAwEqE7kE,EAAOk8L,YAxE5E,eA2EoBa,EA3EpB,MA2EuCp0W,UA3EvC,gBA4EyBq3K,EAAOq8L,SA5EhC,gBA6EyBr8L,EAAOg8L,kBAAYrzW,St8BqiqHzC2zW,Gs8B5tqHiB5zS,gBA8L5B4zS,GAAcxwQ,cACV3qC,MAAKA,EACLv7C,UACAosC,YACA/5B,YAeWowC,mBAAWi0S,GC3NX,GACXp3S,WACIkhG,SAAU,WACV/4E,MAAO,OACPC,OAAQ,QAEZjqE,QACI+iJ,SAAU,WACV/4E,MAAO,OACPC,OAAQ,Sv8BsvqHZ4vR,EAAuB,WAAc,GAAItxQ,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr5BixQ,EAA+B,WAAc,QAASh0S,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Mw8BvvqH5iBp2C,EACApS,IADAoS,cAGEmwU,GAAuBW,MAAO,QAE9B5yF,E,YACF,WAAY7rP,GAAO,yEACTA,GADS,OAEf,GAAKk5V,kBAAoB,EAAKA,kBAAkBj0V,KAAvB,GACzB,EAAKk0V,iBAAmBnf,IAAU,EAAKmf,iBAAiBl0V,KAAtB,GAAkC,KACpE,EAAKL,OACDw0V,aAAYA,GALD,Ex8Bo2qHnB,MA5FAzB,GAA0B9rG,EAAQnlG,GAelCuyM,EAA6BptG,IACzBjmQ,IAAK,oBACLC,MAAO,Sw8BhxqHOwlC,GACd,IAAIlrB,KAAKH,MAAM6pL,eAAgB1pL,KAAKH,MAAMitL,cAA1C,CADqB,GAIE93C,GAAY9pH,EAA3BkuD,YAAe47D,KACvBh1I,MAAKg5V,iBAAiBhkN,Ox8BoxqHtBvvJ,IAAK,mBACLC,MAAO,Sw8BlxqHMsvJ,GACb,GAAMikN,GAAcjkN,GHlCC,EGmCjBh1I,MAAKyE,MAAMw0V,cAAgBA,GAC3Bj5V,KAAKmG,UAAW8yV,mBx8BsxqHpBxzW,IAAK,SACLC,MAAO,Ww8BnxqHF,aASDsa,KAAKH,MAPLvE,EAFC,EAEDA,SACAqyC,EAHC,EAGDA,SACA/5B,EAJC,EAIDA,SACA+nC,EALC,EAKDA,eACAkS,EANC,EAMDA,cACAxtD,EAPC,EAODA,OACA4gO,EARC,EAQDA,aAGE1lL,EAASsS,GAAiBlS,MACxBr3D,EAA+Di3D,EAA/Dj3D,KAZH,EAYkEi3D,EAAzDh6C,MAZT,sBAYuB8/K,GAZvB,EAYmB/kL,GAZnB,IAYiChY,KAAM40W,WAZvC,EAYoD,GAZpD,EAaC33V,GAAU8/K,GAAY63K,GAAY7iV,cAClCqnU,EAAkBC,EAAmBp8U,IAAWA,EAChDssC,EAAU6vS,EACTlwU,EADS,oDACwDkwU,EADxD,UACmF,KAC7Fyb,GACF70W,KAAM+8L,GAAY9/K,EAClBssC,UAGJ,OACI,0BACIjoC,IAAK,SAAC66C,GAAS,EAAKI,UAAYJ,GAChCE,UAAU,mBACV0a,MAAOh7D,EAASs7J,EAAO96G,WAAc67B,QAAS,QAC9C0/P,YAAa/7U,GAAUL,KAAK+4V,mBAE3B14V,KACI,GADJ,KAEaL,KAAKyE,MAAMw0V,YAFxB,KAGa30W,EAHb,OAIe60W,EAJf,SAKiBxrT,EALjB,SAMiBryC,EANjB,SAOiBsY,EAPjB,aAQqBqtN,IAGtB,yBACIr7N,IAAI,kBACJtJ,GAAG,6BACH++D,MAAOsgG,EAAO38J,cx8BiyqHvB0sP,Gw8Br2qHUrnM,gBAuFN4gG,iBAAcymG,Ix8BqxqHvB,SAAUrqQ,EAAQD,EAASH,Gy8Bz0qHjC,QAAS2rW,GAAS5hV,EAAMujO,EAAMxyO,GAC5B,GAAI+yO,MACAW,IAEJ,IAAmB,kBAARzkO,GACT,KAAM,IAAIkT,WAAU2xN,EAMtB,OAJI/tN,GAAS/lB,KACX+yO,EAAU,WAAa/yO,KAAYA,EAAQ+yO,QAAUA,EACrDW,EAAW,YAAc1zO,KAAYA,EAAQ0zO,SAAWA,GAEnDnB,EAAStjO,EAAMujO,GACpB,QAAWO,EACX,QAAWP,EACX,SAAYkB,IAhEhB,GAAInB,GAAW,EAAQ,KACnBxsN,EAAW,EAAQ,IAGnB+tN,EAAkB,qBAgEtBxuP,GAAOD,QAAUwrW,Gz8Bk4qHX,SAAUvrW,EAAQD,EAASH,G08Bt8qHjC,GAAIuuD,GAAO,EAAQ,IAkBfx8C,EAAM,WACR,MAAOw8C,GAAKU,KAAKl9C,MAGnB3R,GAAOD,QAAU4R,G18B68qHX,SAAU3R,EAAQiE,EAAqBrE,GAE7C,Y28Br+qHe,MACX4/D,WACIkhG,SAAU,WACV47C,OAAQ,EACR30H,MAAO,OACPC,OAAQ,OACRslF,WAAY,QAEhB6/E,iBACIplK,MAAO,OACPC,OAAQ,QAEZ71E,SACI2uJ,SAAU,WACVmL,OAAQ,SACRqB,WAAY,kBACZD,QAAS,GACTJ,IAAK,MACLiM,UAAW,mBACXnxF,MAAO,OACPC,OAAQ,OACRt7C,MAAO,OACP2vK,WAAY,IACZtzC,UAAW,Y38B4+qHb,SAAU3oK,EAAQiE,EAAqBrE,GAE7C,YAuFA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAxFje,GAAIyL,GAAQ3pB,EAAoB,GAI5BwqB,EAAKxqB,EAAoB,GAGzB4jK,EAAa5jK,EAAoB,IACjC6jK,EAAkC7jK,EAAoB4D,EAAEggK,GAGxD4hF,EAA4BxlP,EAAoB,KAGhDwjP,EAAuBxjP,EAAoB,KAG3CypG,EAA0BzpG,EAAoB,IAG9C22D,EAAU32D,EAAoB,I48B5hrHnB,GACX4/D,WACIkhG,SAAU,WACV47C,OAAQ,EACRzvC,IAAK,EACLE,KAAM,MACN6uL,MAAO,QACPj0Q,MAAO,MACPC,OAAQ,OACR8wF,WAAY,YACZC,iBAAkB,aAEtBo/L,QACIhrM,KAAM,GAEVirM,mBACIt3M,SAAU,WACVmM,IAAK,EACLllF,MAAO,OACPC,OAAQ,OACRslF,WAAY,OACZD,QAAS,GACTgrM,UAAW,QAEfC,cACIx3M,SAAU,WACVqM,MAAO,GACPF,IAAK,mBACLllF,MAAO,GACPC,OAAQ,GACRyT,QAAS,QACTo9E,QAAS,EACTpL,gBAAiB,qBACjBF,aAAc,gBACdF,QAAS,GACTtE,UAAW,SACX+P,WAAY,eACZC,iBAAkB,eAClBrsI,MAAO,QAEX6rU,kBACI1/L,QAAS,GAEb2/L,oBACI/8Q,QAAS,QAEbg9Q,mBACIx5J,SAAU,GACVn+C,SAAU,WACVqM,KAAM,MACNF,IAAK,MACLiM,UAAW,0B58BmirHf7yE,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BzmF,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M68BjlrH1hB+1S,E,YACF,WAAY95V,GAAO,yEACTA,GADS,OAEf,GAAK4E,OACDuU,MAAKA,EACLogV,QAAOA,GAEX,EAAK12H,YAAcxnH,IACnB,EAAK0+O,cAAgB,EAAKA,cAAc90V,KAAnB,GAPN,E78BysrHnB,MAvGAg/C,GAAU61S,EAA0B/5V,GAgBpCilD,EAAa80S,IACTl0W,IAAK,gBACLC,MAAO,W68B1mrHK,GACQ6V,GAAYyE,KAAKH,MAA7BvE,SAAYC,MACdkJ,GAAU20V,QAASp5V,KAAKyE,MAAM20V,OAChCp5V,MAAKyE,MAAMuU,OACXhZ,KAAKH,MAAMgG,SAAS7F,KAAK0iO,YAAL,GAAmBh/O,KAAM,QAAW6X,KACxDkJ,EAAMuU,SAEVhZ,KAAKmG,SAAS1B,M78B8mrHdhf,IAAK,SACLC,MAAO,W68B5mrHF,MAWDsa,KAAKH,MATLvE,EAFC,EAEDA,SACqBq9C,EAHpB,EAGDr9C,SAAYC,MAASo9C,QACXkhT,EAJT,EAIDhzP,SACAw9I,EALC,EAKDA,QACAzsO,EANC,EAMDA,SACAyuN,EAPC,EAODA,YACAvqO,EARC,EAQDA,SACAy5V,EATC,EASDA,QACArtH,EAVC,EAUDA,OAEIkxH,EAAWp5V,KAAKyE,MAAhB20V,OACFrnG,EAAe1jN,IAAW,aAAeg2M,YACzCvxP,EAAQsmW,EAAS,QAAU,WAC3B19F,EAAiB09F,EAASA,KACzBz9L,EAAO96G,UACP86G,EAAOy9L,QACVz9L,EAAO96G,UACLi5S,EAAeV,GAAW7D,EAI5B55L,EAAO49L,aAJS,KACb59L,EAAO49L,aACP59L,EAAO69L,iBACNtxH,EAASvsE,EAAO89L,uBAGpB5yP,EAAWgzP,CAmBf,OAjBAhzP,GAAWA,EAAShxF,OAAO,YAAuB,GAApBswF,GAAoB,EAApBA,cAEtBmwP,IAEJ,IAAI39S,GAAWwtD,EAAc,GAAI,CAC7B,GAAMntD,GAASmtD,EAAc,GACvBowP,EAAe,GAAI33T,QAAU+Z,EAAd,IAAyBA,EAAQ5rC,QAAQ,IAAK,KAAQ,KACrEypV,EAAax9S,EAAO5rC,MAAQ4rC,EAAO5rC,KAAK9C,MAAMisV,GAC9CE,EAAWz9S,EAAO18C,IAAM08C,EAAO18C,GAAG+Z,gBAAkBsiC,EAAQtiC,cAC5DqgV,KAAe19S,EAAO10D,OAAQ00D,EAAO10D,KAAKgmB,MAAMisV,GAEtDD,GAAgBE,GAAaC,GAAWC,EAG5C,MAAQJ,KAGZ,eACgB56F,UADhB,aAEkBo+F,EAFlB,QAEwC95V,KAAK45V,sBAF7C,gBAGyBj+L,EAAO+9L,0BAAoB5mW,IAHpD,uBAK2B,iBAL3B,MAKmD6oK,EAAO09L,0BAL1D,EAMa50H,EAAA,GANb,SAO0BnpO,EAP1B,sDAU6B0E,KAAK0iO,cAVlC,mBAY2B,UAZ3B,MAY4D,aAAhB2D,GAA+Bh3E,WAAY,eAZvF,YAawB,UAbxB,UAa6C0iG,EAb7C,OAaoEr1K,QAAS,iBAb7E,EAcqB+pJ,EAAA,GAdrB,SAekC5/H,EAflC,SAgBkCjvF,EAhBlC,YAiBqCyuN,EAjBrC,SAkBkCvqO,EAlBlC,eAmBwCR,EAASC,MAAMq/G,UAnBvD,kCAqBqCt/G,EAASC,MAAMgoO,sB78BonrHjDo2H,G68B1srH4Bj5V,aA4GjCuH,EAAkB,SAACxD,GAAU,GACvBrL,GAAkBqL,EAAlBrL,IAAK0gB,EAAarV,EAAbqV,QAEb,QACIlC,SAFazD,YAAiB1P,GAG9B4hO,YAAavsN,EAASgrO,kBACtBj+I,SAAU/sF,EAAS+sF,aACnBw9I,QAASvqO,EAASuqO,QAClBvoP,SAAU1C,EAAI0C,UAIP0yF,iBAAQvmF,GAAiB0xV,I78BumrHlC,SAAUt4W,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAkBrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAtB7Z,GAAIqlD,GAAsCvjE,EAAoB,GACzGwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEm8D,EAA4C1/H,EAAoB,GAChE2/H,EAA6C3/H,EAAoB,IACjE4/H,EAAqD5/H,EAAoB4D,EAAE+7H,GAC3Em5O,EAAwD94W,EAAoB,IAC5E+4W,EAAwC/4W,EAAoB,IAC5Dg5W,EAAgDh5W,EAAoB4D,EAAEm1W,GACtEE,EAAqEj5W,EAAoB,KACzFk5W,EAAoEl5W,EAAoB,IAC7GqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BzmF,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPy0D,EAAiB,WAAc,QAASC,GAAcpiE,EAAKtS,GAAK,GAAI20E,MAAeC,KAAeC,KAAgBC,QAAgB,KAAM,IAAK,GAAiCC,GAA7BC,EAAK1iE,EAAIk2C,OAAOnD,cAAmBuvB,GAAMG,EAAKC,EAAGz0D,QAAQizB,QAAoBmhC,EAAK/zE,KAAKm0E,EAAG3wE,QAAYpE,GAAK20E,EAAKj0E,SAAWV,GAA3D40E,OAAyE,MAAOhxE,GAAOixE,KAAWC,EAAKlxE,EAAO,QAAU,KAAWgxE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUriE,EAAKtS,GAAK,GAAI0S,MAAM+c,QAAQnd,GAAQ,MAAOA,EAAY,IAAIk2C,OAAOnD,WAAYxkD,QAAOyR,GAAQ,MAAOoiE,GAAcpiE,EAAKtS,EAAa,MAAM,IAAI48B,WAAU,4DAEllB2mC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M88BlvrH5hBqwM,EAGA74P,IAHA64P,aACAxmP,EAEArS,IAFAqS,QACAopP,EACAz7P,IADAy7P,UAGE4E,EAAehuP,EAAf,aAAmCwmP,EACrC6C,EAAgB2E,EAAhB,MACA5E,KACAC,EAAa,mC98BswrHjB,I88BnwrHQxmQ,GAAoBi9O,IAApBj9O,QAASkgP,EAAWjD,IAAXiD,OAEXkrB,GACFptG,QAAS,IAGP8rM,GACFnsM,UAAW,IAGXosM,GACArxR,MAAO,IACPC,OAAQ,KAGNiiL,E,YACF,WAAYrrP,GAAO,yEACTA,GADS,OAEfyY,GAAK7T,OACDnI,GAAI,GACJg4C,OAAQ,GACR0E,OAAQ,GACR7F,QAAS,GACT4uG,SAAU,EACV7R,YAAa,EACbr3F,UAAW,IAEfvgC,EAAKgiV,UAAYhiV,EAAKgiV,UAAUx1V,KAAfwT,GACjBA,EAAKiiV,WAAajiV,EAAKiiV,WAAWz1V,KAAhBwT,GAClBA,EAAKkiV,WAAaliV,EAAKkiV,WAAW11V,KAAhBwT,GAClBA,EAAKmiV,aAAeniV,EAAKmiV,aAAa31V,KAAlBwT,GACpBA,EAAKoiV,iBAAmBpiV,EAAKoiV,iBAAiB51V,KAAtBwT,GACxBA,EAAKqiV,iBAAmBriV,EAAKqiV,iBAAiB71V,KAAtBwT,GACxBA,EAAKsiV,gBAAkBtiV,EAAKsiV,gBAAgB91V,KAArBwT,GACvBA,EAAKy7N,WAAaz7N,EAAKy7N,WAAWjvO,KAAhBwT,GAClBA,EAAKuiV,gBAAkBviV,EAAKuiV,gBAAgB/1V,KAArBwT,GACvBA,EAAKwiV,yBAA2BxiV,EAAKwiV,yBAAyBh2V,KAA9BwT,GAChCA,EAAK27N,0BAA4B37N,EAAK27N,0BAA0BnvO,KAA/BwT,GACjCA,EAAKu1N,cAAgBv1N,EAAKu1N,cAAc/oO,KAAnBwT,GACrBA,EAAKw8K,gBAAkBx8K,EAAKw8K,gBAAgBhwL,KAArBwT,GACvBA,EAAKyiV,aAAeziV,EAAKyiV,aAAaj2V,KAAlBwT,GACpBA,EAAKi6N,oBAAsBj6N,EAAKi6N,oBAAoBztO,KAAzBwT,GAC3BA,EAAKw+N,wBAA0Bx+N,EAAKw+N,wBAAwBhyO,KAA7BwT,GAC/BA,EAAK0iV,WAAa1iV,EAAK0iV,WAAWl2V,KAAhBwT,GAClBA,EAAK2iV,gBAAkB3iV,EAAK2iV,gBAAgBn2V,KAArBwT,GACvBA,EAAK4iV,eAAiB5iV,EAAK4iV,eAAep2V,KAApBwT,GACtBA,EAAK6iV,eAAiB7iV,EAAK6iV,eAAer2V,KAApBwT,GACtBA,EAAKujP,gBAAkBvjP,EAAKujP,gBAAgB/2P,KAArBwT,GACvBA,EAAK8iV,iBAAmB9iV,EAAK8iV,iBAAiBt2V,KAAtBwT,GACxBA,EAAK+iV,kBAAoB/iV,EAAK+iV,kBAAkBv2V,KAAvBwT,GACzBA,EAAKgjV,cAAgBhjV,EAAKgjV,cAAcx2V,KAAnBwT,GAlCN,E98B2ssHnB,MAtcAwrC,GAAUonM,EAAyB3kG,GA2CnC1hG,EAAaqmM,IACTzlQ,IAAK,oBACLC,MAAO,W88B5wrHPhE,OAAOsiF,iBAAiB,UAAWhkE,KAAKs7V,kB98BgxrHxC71W,IAAK,gBACLC,MAAO,S88B9wrHGwlC,GAAO,MACuClrB,KAAKH,MAArDvE,SAAYC,KADH,2BACYggW,MAE7B,IAAe,oBAHE,OAOS,gBAAfrwU,GAAM4b,KAAjB,CAIA,GAAIA,SACJ,KACI,GAAMkC,GAAY14C,EAAZ,IAAuBkgP,EAAvB,GACN1pM,GAAO3iC,KAAKoT,MAAM2T,EAAM4b,KAAK5e,OAAO8gB,EAAOhnD,SAC7C,MAAOkD,GACL4hD,KAhBa,MAmBSA,EAAlBpjD,EAnBS,EAmBTA,KAAMu1D,EAnBG,EAmBHA,OAEd,IAAKv1D,EAAL,CArBiB,MAyBkBA,EAAKga,MAAM,KAzB7B,SAyBVi7C,EAzBU,KAyBDnuB,EAzBC,KAyBOgrN,EAzBP,IA2BjB,IAAI78L,IAAYroD,GAIZk6B,IAAWgmN,EACX,OAAQgF,GACJ,IAAK,cAGDx1O,KAAKw7V,SACD93W,KAAM6pP,IAAyB2K,YAC/Bj/L,SAAUv3D,OAAO4Z,SAASyC,OAE9B,MACJ,KAAK,mBACDiC,KAAKmG,UAAW+pI,YAAaj3F,GAC7B,MACJ,KAAK,eACL,IAAK,sBACL,IAAK,0BACD9zD,EAAQqN,IAAIgjP,EAASv8L,EACrB,MACJ,KAAK,2BACL,IAAK,gBACD,GAAIrF,GAAOqF,GAAWA,EAAQl7C,MAASiC,KAAK+oE,OAAOhlF,IADjC,EAEQ6vD,EAAIl2C,MAAM,KAFlB,SAEXJ,EAFW,KAELm+V,EAFK,IAGdA,KAEA7nT,EAASt2C,EAAT,IADqBm+V,EAAU1uV,QAAQ,4CAA6C,KAGxF/M,KAAK+oE,OAAOhlF,IAAM6vD,Q98ByyrH9BnuD,IAAK,aACLC,MAAO,S88BjyrHAwlC,GACPlrB,KAAKmG,UAAW7J,GAAI4uB,EAAM5pB,OAAO5b,W98BoyrHjCD,IAAK,kBACLC,MAAO,S88BlyrHKwlC,GACZlrB,KAAKmG,UAAW3J,QAAS0uB,EAAM5pB,OAAO5b,W98BqyrHtCD,IAAK,iBACLC,MAAO,S88BnyrHIwlC,GACXlrB,KAAKmG,UAAWmuC,OAAQppB,EAAM5pB,OAAO5b,W98BsyrHrCD,IAAK,iBACLC,MAAO,S88BpyrHIwlC,GACXlrB,KAAKmG,UAAW6yC,OAAQ9tB,EAAM5pB,OAAO5b,W98BuyrHrCD,IAAK,oBACLC,MAAO,S88BryrHOwlC,GACdlrB,KAAKmG,UAAW0yC,UAAW3tB,EAAM5pB,OAAO5b,W98BwyrHxCD,IAAK,kBACLC,MAAO,S88BtyrHKwlC,GACZlrB,KAAKmG,UAAWgtC,QAASjoB,EAAM5pB,OAAO5b,W98ByyrHtCD,IAAK,mBACLC,MAAO,S88BvyrHMwlC,GACblrB,KAAKmG,UAAW47I,SAAUr5H,SAASwC,EAAM5pB,OAAO5b,MAAO,S98B0yrHvDD,IAAK,mBACLC,MAAO,W88BvyrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBgK,iBAC/Bt+L,SAAUj5C,KAAKyE,MAAMs9I,e98B4yrHzBt8J,IAAK,mBACLC,MAAO,W88BxyrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBiK,sB98B6yrHnC/xP,IAAK,eACLC,MAAO,W88BzyrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyB4K,mB98B8yrHnC1yP,IAAK,sBACLC,MAAO,W88B1yrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyB6K,2B98B+yrHnC3yP,IAAK,0BACLC,MAAO,W88B3yrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyB8K,qB98BgzrHnC5yP,IAAK,YACLC,MAAO,W88B5yrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBkH,U98BizrHnChvP,IAAK,aACLC,MAAO,W88B7yrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBmH,W98BkzrHnCjvP,IAAK,aACLC,MAAO,W88B9yrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyB8J,U98BmzrHnC5xP,IAAK,eACLC,MAAO,W88B/yrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyB+J,Y98BozrHnC7xP,IAAK,kBACLC,MAAO,W88BhzrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBkK,sB98BqzrHnChyP,IAAK,aACLC,MAAO,W88BjzrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBoK,aAC/B1+L,SAAUj5C,KAAKyE,MAAMnI,GAAI0D,KAAK07V,sBAAsB12L,QAAShlK,KAAKyE,MAAMo0C,gB98BszrH5EpzD,IAAK,kBACLC,MAAO,W88BlzrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBqK,mBAC/B3+L,SAAUj5C,KAAKyE,MAAMjI,QAASwD,KAAK27V,2BAA2B32L,QAAShlK,KAAKyE,MAAMo0C,gB98BuzrHtFpzD,IAAK,2BACLC,MAAO,W88BnzrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBuK,6BAC/B7+L,SAAUj5C,KAAKyE,MAAM0uC,QAASnzC,KAAKyE,MAAMo0C,gB98BwzrH7CpzD,IAAK,4BACLC,MAAO,W88BpzrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBwK,wBAC/B9+L,SAAUj5C,KAAKyE,MAAM6vC,OAAQt0C,KAAKyE,MAAMu0C,OAAQh5C,KAAKyE,MAAMo0C,gB98ByzrH/DpzD,IAAK,gBACLC,MAAO,W88BrzrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyBgH,oB98B0zrHnC9uP,IAAK,kBACLC,MAAO,W88BtzrHPsa,KAAKw7V,SACD93W,KAAM6pP,IAAyB0K,uB98B2zrHnCxyP,IAAK,UACLC,MAAO,S88BxzrHHohD,GACJ,GAAM8pM,GAAe,oBAAoBr9I,KAAKvzF,KAAK+oE,OAAOhlF,KACpD8Z,EAAU+yO,GAAgBA,EAAa,IAAO,GACpD5wO,MAAK+oE,OAAO2tK,cAAcC,YAAYxyO,KAAKC,UAAU0iC,GAAOjpC,M98B2zrH5DpY,IAAK,SACLC,MAAO,W88BzzrHF,aAUDsa,KAAKyE,MARLnI,EAFC,EAEDA,GACAE,EAHC,EAGDA,QACA83C,EAJC,EAIDA,OACA0E,EALC,EAKDA,OACA7F,EANC,EAMDA,QACA4uG,EAPC,EAODA,SACA7R,EARC,EAQDA,YACAr3F,EATC,EASDA,UATC,EAiBD74C,KAAKH,MALOtE,EAZX,EAYDD,SAAYC,MAZX,IAaD26V,cACIv6R,EAdH,EAcGA,gBACAC,EAfH,EAeGA,iBAGAw+L,EAA4B7+P,EAA5B6+P,WAlBH,EAkB+B7+P,EAAhBsC,kBAlBf,EAkBwB,GAlBxB,EAmBCmrE,EAAkBztE,EAAlBytE,MAAOC,EAAW1tE,EAAX0tE,MACTmxL,IACApxL,EAAQ,OACRC,EAAS,WACFD,IAAUC,EACjBA,EAAS3qD,KAAKggH,MAAMt1D,GAAS,EAAI,MACzBA,GAASC,IACjBD,EAAQ1qD,KAAKggH,MAAMr1D,GAAU,GAAK,KAEtCoxR,EAAcrxR,GAASC,EAAT,KAAuBoxR,GAAarxR,QAAOC,WAAWoxR,CACpE,IAAMuB,GAAWA,KAAKrgW,SACfqgW,GAASL,aACTK,GAAS/9V,MAChB,IAAM2nG,GAAK7sG,YAAYijW,EAEvB,uBACgBlgG,UADhB,EAES,KAFT,OAIkBp3Q,KAAM,SAAUiuD,QAAS,sBAJ3C,OAOkBmiN,IAAK,aAAc32P,KAAS+4P,EAAT,cAEjBs/F,MAAO,0BACP1hG,IAAK,aACL32P,KAAM69D,IAX1B,QAegBiE,QAAQA,+RAfxB,SA0BoB97E,IAAK43E,EACL/3E,OAAMA,MA3B1B,iFAiC6Boc,KAAKs6V,kBAjClC,iCAkC6Bt6V,KAAKu6V,mBAlClC,kCAmC6Bv6V,KAAKw6V,mBAnClC,kCAoC6Bx6V,KAAKy6V,qBApClC,oCAqC6Bz6V,KAAK46V,wBArClC,0DAwC6B56V,KAAK06V,yBAxClC,oCAyCwB,OAzCxB,MAyCsC34M,EAzCtC,SAyC0D/hJ,KAAKo7V,mBAzC/D,oBA0C6Bp7V,KAAK26V,yBA1ClC,oCA2CwB,OA3CxB,MA2CsCzqN,EA3CtC,qDA8C6BlwI,KAAK+zO,mBA9ClC,8BA+CwB,OA/CxB,MA+CsCz3O,EA/CtC,SA+CoD0D,KAAKg7V,aA/CzD,mBAgD2B,mBAhD3B,YAkDgB,2BACIp1V,IAAK,SAAA8hC,GAAW,EAAKg0T,sBAAwBh0T,GAC7CprC,GAAG,WACH5Y,KAAK,WACL87R,kBACAnkN,OAASqhB,QAAS,mBAvDtC,kDA0DgD,OA1DhD,MA0D8D7jC,EA1D9D,SA0DmF74C,KAAKq7V,qBA1DxF,sCA6D6Br7V,KAAK66V,wBA7DlC,mCA8DwB,OA9DxB,MA8DsCr+V,EA9DtC,SA8DyDwD,KAAKi7V,kBA9D9D,mBA+D2B,mBA/D3B,YAiEgB,2BACIr1V,IAAK,SAAA8hC,GAAW,EAAKi0T,2BAA6Bj0T,GAClDprC,GAAG,WACH5Y,KAAK,WACL87R,kBACAnkN,OAASqhB,QAAS,mBAtEtC,kDAyEgD,OAzEhD,MAyE8D7jC,EAzE9D,SAyEmF74C,KAAKq7V,qBAzExF,sCA4E6Br7V,KAAK86V,iCA5ElC,4CA6EwB,OA7ExB,MA6EsC3nT,EA7EtC,SA6EyDnzC,KAAK67P,mBA7E9D,sCAgF6B77P,KAAKi0O,kCAhFlC,4EAiF6C,OAjF7C,MAiF2D3/L,EAjF3D,SAiF6Et0C,KAAKk7V,iBAjFlF,+CAkF6C,OAlF7C,MAkF2DliT,EAlF3D,SAkF6Eh5C,KAAKm7V,iBAlFlF,kDAmFgD,OAnFhD,MAmF8DtiT,EAnF9D,SAmFmF74C,KAAKq7V,qBAnFxF,sCAsF6Br7V,KAAK6tO,sBAtFlC,qCAuF6B7tO,KAAK80L,wBAvFlC,0DA0F6B90L,KAAK+6V,qBA1FlC,oCA2F6B/6V,KAAKuyO,4BA3FlC,2CA4F6BvyO,KAAK82O,gCA5FlC,2CA8FoBsjH,UACR,4BACIx0V,IAAK,SAAAmjE,GAAY,EAAKA,OAASA,GAC/BzsE,GAAG,oBACHvY,IAAQ8Z,EAAR,2BAAyC2nG,EACzCt8B,YAAY,IACZ2pM,mBACAx3M,MAAOg/R,U98Bk1rHpBnvG,G88B5ssH2B7mM,iBAuYhCp8C,EAAkB,SAACxD,GAAD,OACpByxV,cAAex6R,YAA2Bj3D,IAG/B+pF,iBAAQvmF,GAAiBijP,K98B20rHX1pQ,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAyCrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,G+8BpvsHje,QAAS08V,GAAen5N,GAChBA,YAAkBo5N,qBACkB,MAAhCp5N,EAAOt9E,aAAa,SACpBs9E,EAAOxjE,gBAAgB,QAE3BwjE,EAAO5+I,aAAa,aAAc,UAI1C,QAASi4W,KACL,GAAMC,GAAWz4W,SAAS87E,cAAc,8EAExC,IAAI28R,EAAU,CACV,GAAMC,GAAW14W,SAASC,qBAAqB,QAAQ,GACjD04W,EAAa34W,SAASE,cAAc,SAC1Cy4W,GAAWx4W,KAAO,kBAClBw4W,EAAWn4W,IAAM,+EACjBm4W,EAAWt5W,OAAS,WAChBlB,OAAOy6W,UAAUnjV,KAAK,oDAAqD,kBAAmB,mBACzFt3B,OAAO06W,OACR16W,OAAO06W,SAEX16W,OAAO06W,KAAKl6W,KAAK,WACbR,OAAOy6W,UAAUE,eAAe,kBAAmBL,MAI3DC,EAASrhT,OAAOshT,GAGhBF,EAASl4W,aAAa,KAAM,2CAC5Bk4W,EAASvT,QAAW,SAACv9T,GACjBA,EAAMkvD,iBACF14F,OAAOy6W,WAAaz6W,OAAOy6W,UAAUG,WACrC56W,OAAOy6W,UAAUG,UAAU,wBAInCn3W,GAAQyN,KAAK,4DAKrB,QAAS2pW,GAAeC,GAKpB,QAASC,GAAW/qV,EAAO62E,EAAOz1F,GAC9B,IAAKvP,SAAS87E,cAAT,qEAA4FkpB,EAA5F,MAAwG,CACzG,GAAMm0Q,GAAUn5W,SAASg8E,iBAAiB,oDACtCm9R,IACAh7W,OAAO+uF,OAAP,kIAE4D8X,EAF5D,sCAEuGA,EAFvG,kGAGsCz1F,EAHtC,sEAI4CA,EAJ5C,sFAOG6pW,YAAYj7W,OAAO+uF,OAAOisR,GAAS93W,IAAI8sB,KAfjDhwB,OAAO+uF,QAoBR+rR,GAAYA,EAASx6W,QACrBw6W,EAASz8T,QAAQ,eAAGruB,GAAH,EAAGA,MAAO5e,EAAV,EAAUA,KAAV,OAA4B2pW,GAAW/qV,EAAvC,EAAiBjW,KAAmC3I,KAI7E,QAAS8pW,GAAathW,EAAUkhW,GACxBA,GACAD,EAAeC,GAGflhW,GAAY5Z,OAAO+uF,QACnB/uF,OAAO+uF,OAAO,4BAA4B7hD,KAAK,WAC3C,GAAMiuU,GAAQn7W,OAAO+uF,OAAOzwE,MACtBjC,EAAO8+V,EAAMp1C,KAAK,qBAAqBtnP,KAAK,OAG9C,IAAG7kE,EAASixC,SAAWjxC,EAASiB,WAAewB,GAC/C,GAAGzC,EAASixC,SAAWjxC,EAASiB,SAAhC,MAAgDwB,EAEhD8+V,EAAMC,SAAS,UACRD,EAAME,SAAS,WACtBF,EAAMG,YAAY,Y/8BknsHkC,GAAIx4S,GAAsCvjE,EAAoB,GAEzGg8W,GAD8Ch8W,EAAoB4D,EAAE2/D,GAC1BvjE,EAAoB,KAC9Di8W,EAAkDj8W,EAAoB4D,EAAEo4W,GACxEE,EAA4Cl8W,EAAoB,GAChEm8W,EAAmDn8W,EAAoB,IAEvEo8W,GAD2Dp8W,EAAoB4D,EAAEu4W,GACpCn8W,EAAoB,KACjEq8W,EAAqDr8W,EAAoB4D,EAAEw4W,GAC3En+H,EAAuCj+O,EAAoB,GAC3Ds8W,EAAoDt8W,EAAoB,IACxEy1M,EAA2Dz1M,EAAoB,IAC/Eu8W,EAA+Dv8W,EAAoB,KACnFw8W,EAAmDx8W,EAAoB,IACvEy8W,EAAsDz8W,EAAoB,IAC1E08W,EAAiD18W,EAAoB,IACrE28W,EAAkE38W,EAAoB,KACtF48W,EAAqE58W,EAAoB,IACzF68W,EAA+D78W,EAAoB,GACnFi2M,EAA2Ej2M,EAAoB,IAC/F88W,EAAkE98W,EAAoB,KACtF+8W,EAAmE/8W,EAAoB,IACvFg9W,EAAgEh9W,EAAoB,IACpFi9W,EAAiEj9W,EAAoB,IACrFk9W,EAA6Dl9W,EAAoB,KACjFm9W,EAA4Dn9W,EAAoB,KAChFo9W,EAAqEp9W,EAAoB,KACzFq9W,EAA2Dr9W,EAAoB,IAC/Es9W,EAA8Ct9W,EAAoB,KAClEu9W,EAA8Dv9W,EAAoB,KAClFw9W,EAA+Dx9W,EAAoB,KACnFy9W,EAAiDz9W,EAAoB,KACrE09W,EAAwD19W,EAAoB,IAC5E29W,EAA4C39W,EAAoB,GAChE49W,EAAsD59W,EAAoB,KAC1E69W,EAAyC79W,EAAoB,IAC7D89W,EAAiD99W,EAAoB4D,EAAEi6W,GAC5Fx3Q,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,M+8BvvsH5hBqwM,EAIA74P,IAJA64P,aACAzmP,EAGApS,IAHAoS,cACAqpP,EAEAz7P,IAFAy7P,UACAm2C,EACA5xS,IADA4xS,iBAGEl2C,EAAaD,EAAY,mCAAwCrpP,EAApD,aAA8EymP,EAA9E,cA8Fb3I,E,YACF,WAAYzrP,GAAO,yEACTA,GADS,OAEfyY,GAAK0mV,uBAAyB1mV,EAAK0mV,uBAAuBl6V,KAA5BwT,GAC9BA,EAAK2mV,wBAA0B3mV,EAAK2mV,wBAAwBn6V,KAA7BwT,GAC/BA,EAAK4mV,kBAAoB,KACzB5mV,EAAK6mV,SAAW,KAChB7mV,EAAK8mV,eAAiB,KANP,E/8B2mtHnB,MA9UAt7S,GAAUwnM,EAAW1rP,GAerBilD,EAAaymM,IACT7lQ,IAAK,qBACLC,MAAO,W+8BrysHU,aACuDsa,KAAKH,MAD5D,IACTg+C,UAAawhT,SADJ,sBACiB33F,GADjB,EACiBA,IAAcltQ,EAD/B,EAC+BA,OAAQ8kW,EADvC,EACuCA,WAExD,IAAIloV,IAAW,CAGP11B,OAAO2qE,UACP3qE,OAAO2qE,QAAQgzS,aAJR,OAOer/V,KAAKF,QAAvBG,EAPG,EAOHA,MAAOksF,EAPJ,EAOIA,OACPtmF,EAAa7F,KAAKH,MAAlBgG,QAER7F,MAAKo5O,qBAAuBH,YAAiBh5O,GACzCs/V,IACAjmH,KAGJ,IAAM7qE,GAAiBtiF,EAAO4wD,aAAa,SAACyzD,GAAgB,MAC5B,EAAK3wM,MAAzBb,EADgD,EAChDA,OAAQ03D,EADwC,EACxCA,OAChB,SAAI13D,EAAO2+G,UACP,OAAM,CAH8C,OAOIjnD,EAApDr6D,0BAA2B05P,WAPqB,OAQlDypG,EAAcA,GAAGzpG,EAAgBxpN,SAAWwpN,EAAgBx5P,SAC5DkjW,EAAUA,GAAGjvJ,EAAYjkK,SAAWikK,EAAYj0M,SAChDmjW,EAAmB,GAAI9gU,QAAJ,IAAe4gU,EAAf,MAUzB,OARKC,GAAQn1V,MAAMo1V,KACf75V,EAASu3C,eACTv3C,EAASk3C,eACTl3C,EAAS44G,eACT54G,EAASm4G,eACTn4G,EAASgqC,eACThqC,EAASi5G,qBAKXywF,EAAWpjH,EAAO0D,OAAO,SAACv0F,GAC5B,EAAK8jW,eAAiB9jW,EAGlB5Z,OAAO2qE,SAAW3qE,OAAO2qE,QAAQC,SACjC5qE,OAAO2qE,QAAQC,QAAQsjC,QAAQ62P,YAAY,YAG/CmW,EAAathW,EAAUgkW,GAAe53F,IAG1C1nQ,MAAKuvM,SAAW,WACZ9gC,IACA8gC,KAGA/0M,GACAwF,KAAK2/V,oB/8BuzsHbl6W,IAAK,oBACLC,MAAO,W+8BnzsHS,aACyEsa,KAAKH,MAAtFgG,EADQ,EACRA,SADQ,IACEg4C,UAAawhT,SADf,sBAC4B33F,GAD5B,EAC4BA,IAAcvjP,EAD1C,EAC0CA,MAAO3pB,EADjD,EACiDA,OAAQ8kW,EADzD,EACyDA,WAIzE,IAHK9kW,GACDwF,KAAK2/V,gBAELj+W,OAAO+uF,OAAQ,CA4Bf,GA3BI/uF,OAAO+uF,OAAOvuE,YACdxgB,OAAO+uF,OAAOvuE,UAAU,YAAa,WACjCje,WAAW,WACP,GAAM27W,GAAoBr8W,SAASg8E,iBAAiB,UACpDvrE,OAAM5R,UAAU29C,QAAQv+C,KAAKo+W,EAAmB,SAACl9N,GAC7Cm5N,EAAen5N,MAEpB,KAEPhhJ,OAAO+uF,OAAOvuE,UAAU,mBAAoB,SAACs7C,GACzC33C,EAAS6yC,YAAe8E,MAE5B97D,OAAO+uF,OAAOvuE,UAAU,iBAAkB,WAGlCxgB,OAAOm+W,YACPn+W,OAAOm+W,UAAUjrL,OAAS,iBAKtClzL,OAAO+uF,OAAO/uF,QAAQ22F,GAAG,sBAAuB,WAC5C,GAAI32F,OAAO2qE,SAAW3qE,OAAO2qE,QAAQC,QAAS,CAC1C,GAAMwzS,GAASp+W,OAAO2qE,QAAQC,QAAQyzS,wBACtCl6V,GAASi4C,YAAWgiT,OAGxBp+W,OAAO2qE,SAAW3qE,OAAO2qE,QAAQC,QAAS,CAC1C,GAAM0zS,GAAYt+W,OAAO2qE,QAAQC,QAAQyzS,wBACzCl6V,GAASi4C,YAAWkiT,IAKxBt+W,OAAO+uF,OAAOltF,UAAU80F,GAAG,YAAa,WACpC32F,OAAO+uF,OAAO,+BAA+BqsR,SAAS,SACtD,IAAMmD,GAAmB18W,SAASg8E,iBAAiB,oBACnDvrE,OAAM5R,UAAU29C,QAAQv+C,KAAKy+W,EAAkB,SAACv9N,GAC5Cm5N,EAAen5N,KAEnBk6N,EAAa,EAAKwC,eAAgBE,GAAe53F,GAG5CltQ,GACDuhW,IAGJ,EAAKiD,2BAQb,GAJIt9W,OAAO2uB,MAAQ3uB,OAAO2uB,KAAKurI,SAC3Bl6J,OAAO2uB,KAAKurI,QAAQk4F,OAGpBk5D,GAAgD,SAA5B7oR,EAAM98B,IAAMwI,YAAwB,CACxD,GAAMqwW,GAAwB38W,SAASg9D,eAAe,uBAClD2/S,IACAA,EAAsBl8R,iBAAiB,QAAS,SAAC94C,GAC7C,EAAKi1U,kBAAkBD,EAAuBh1U,S/8Bm0sH1DzlC,IAAK,4BACLC,MAAO,S+8B9zsHeid,GAAW,MACPA,EAAlBrH,oBADyB,MAET0E,MAAKH,MAAMvE,WACXA,KAE0B,IAA1CA,EAASiB,SAASb,QAAQ,YAC2B,IAAjDnY,SAAS08D,KAAKU,UAAUjlD,QAAQ,cAChCnY,SAAS08D,KAAKU,UAAep9D,SAAS08D,KAAKU,UAA3C,oBAGJp9D,SAAS08D,KAAKU,UAAYp9D,SAAS08D,KAAKU,UAAU5zC,QAAQ,qBAAsB,KAKpF/M,KAAKH,MAAMk+C,IAAO/9C,KAAKH,MAAMk+C,KAAOp7C,EAAUo7C,IAAO/9C,KAAKk/V,oBAE1DrzF,IAASr+D,uBAAuBxtM,KAAKk/V,mBACjCl/V,KAAKm/V,WACLn/V,KAAKm/V,SAASl/R,YAAYjgE,KAAKk/V,mBAC/Bl/V,KAAKk/V,kBAAoB,OAIjCl/V,KAAKogW,8BAA8Bz9V,M/8Bm0sHnCld,IAAK,uBACLC,MAAO,W+8Bh0sHHsa,KAAKuvM,UACLvvM,KAAKuvM,WAELvvM,KAAKo5O,sBACLp5O,KAAKo5O,0B/8Bq0sHT3zP,IAAK,gBACLC,MAAO,W+8Bl0sHK,MACiBsa,KAAKH,MAA1BgG,EADI,EACJA,SAAUmN,EADN,EACMA,MAClBnN,GAASowC,YAA0BjjC,EAAQ7D,S/8Bw0sH3C1pB,IAAK,oBACLC,MAAO,S+8Bt0sHO8pD,EAAMtkB,EAAOrL,GAC3B,GAAMve,GAASue,GAAUqL,EAAM5pB,MAC/B,IAAIA,IAAWkuC,EAAf,CAFmC,GAM3BrrB,GAAUnkB,KAAKH,MAAfskB,MACFpmB,EAAOuD,EAAO8jD,cAAgB9jD,EAAO8jD,aAAa,OAEpDrnD,IAAQA,EAAKrC,QAAQ,WAAa,IAA0C,IAArCqC,EAAKrC,QAAQ,oBACpDwvB,EAAMkvD,iBACNp6E,KAAKF,QAAQG,MAAM4F,SACf3jB,eAAKqxE,YAAcx1D,EAAKL,MAAM,WAAW,GAAIymB,MAE1C7iB,EAAOulD,YACd7mD,KAAKmgW,kBAAkB3wT,EAAMtkB,EAAO5pB,EAAOulD,gB/8By0sH/CphE,IAAK,gCACLC,MAAO,W+8Bt0sHmC,GAAhBid,GAAgB,0DAClCg0C,EAAiCh0C,EAAjCg0C,aAAchM,EAAmBhoC,EAAnBgoC,OAAQ33B,EAAWrQ,EAAXqQ,OADY,EAEchT,KAAKH,MAArDgG,EAFkC,EAElCA,SAAwBw6V,EAFU,EAExB1pT,aACZ2pT,EAA0B17W,YAAImpB,IACpC,KAKSsyV,IACE1pT,GACC2pT,IAC2C,KAA3C,WAAY,UAAU5kW,QAAQivC,IAClC9kC,EAASyrC,YAAe3G,GAAU33B,SAAQu+B,cAAaA,KAE7D,MAAOnsD,GACLD,EAAQC,MAAR,oEAAkFulD,O/8B60sHtFllD,IAAK,yBACLC,MAAO,W+8B10sHc,GACbua,GAAUD,KAAKF,QAAfG,KACRD,MAAKi/V,0BACDj/V,KAAKk/V,mBACLrzF,IAASxrQ,OAAT,EACK,KADL,MACqBJ,UADrB,EAES,cAFT,EAGa,UAGTD,KAAKk/V,sB/8B80sHbz5W,IAAK,0BACLC,MAAO,W+8Br0sHP,GAHsB,OAAlBsa,KAAKm/V,WACLn/V,KAAKm/V,SAAW57W,SAAS87E,cAAc,gDAEtCr/D,KAAKm/V,WAIL57W,SAAS87E,cAAc,yBAA0B,CAClD,GAAMkhS,GAAeh9W,SAASE,cAAc,MAC5C88W,GAAajkW,GAAK,uBAClB0D,KAAKk/V,kBAAoBl/V,KAAKm/V,SAASj7W,YAAYq8W,O/8B60sHvD96W,IAAK,SACLC,MAAO,W+8B10sHF,MAODsa,KAAKH,MALL4jF,EAFC,EAEDA,SAFC,IAGDyyQ,cACIv6R,EAJH,EAIGA,gBACAC,EALH,EAKGA,gBAIR,4BAES,KAFT,OAIkB84L,IAAK,aAAc32P,KAAS+4P,EAAT,uBACnBpC,IAAK,aAAc32P,KAAS+4P,EAAT,oBACnBs/F,MAAO,oBAAqB1hG,IAAK,aAAc32P,KAAS+4P,EAAT,eAC/CpC,IAAK,aAAc32P,KAAS+4P,EAAT,eACnBpC,IAAK,aAAc32P,KAAS+4P,EAAT,wBACnBpC,IAAK,aAAc32P,KAAS+4P,EAAT,6BAEjBs/F,MAAO,0BACP1hG,IAAK,aACL32P,KAAM69D,IAb1B,QAiBgBiE,QAAQA,wvDAoCkB7wD,IApC1B,itFAgGOG,IAhGP,MAgGgCA,IAhGhC,4TAwGOC,IAxGP,+bAkHOA,IAlHP,0CAmHOC,IAnHP,2zFAjBhB,SAuMoBtrB,IAAK,8DAGLA,IAAK43E,EACL/3E,OAAMA,MA3M1B,aAiNgB,2BAjNhB,IAkNiB6/F,EAAWz0E,IAAwBF,IAlNpD,OAmNqB4tE,QAAS,UAErB+G,EAAW,KAAX,aACO,2BADP,IAEQ10E,IAFR,OAGY2tE,QAAS,UAxN9B,EA0NS,QA1NT,EA2NS,QACA18E,KAAKH,MAAMY,c/8BwosHjB6qP,G+8B5mtHa5qP,YA0fxB4qP,GAAUtnP,cACN/D,MAAOqkD,YAAUv/D,OAAO8b,WACxBsrF,OAAQ7nC,YAAUv/D,OAAO8b,WACzBqrC,KAAMmkE,IAAUxvG,WAChB1E,SAAUmoD,YAAUv/D,OAAO8b,YAG/ByqP,EAAUwS,eAAiBn2Q,IAAoBwK,WAC/Cm5P,EAAU8S,YAAc1gN,KACxB4tM,EAAUf,eACVe,EAAUuT,YAAcllB,IACxB2R,EAAUyT,WAAa,SAAoBl5P,GACvCA,EAASiyC,eAGb,IAAM7vC,GAAkB,SAACxD,GACrB,GAAMo5C,GAAYjlD,YAAkB6L,GAC9Bs5C,EAAK5kD,YAAYsL,GAAOs5C,GACxB7hD,EAAO/C,YAAYsL,GAAOvI,KAC1BwtB,EAAMvwB,YAAYsL,GAAOilB,IACzB1qB,EAAS0oJ,YAAejjJ,GACxBiyD,EAAU79D,YAAgB4L,GAC1B0f,EAAQm3B,YAAwB72C,GAChCg/E,EAAWzmF,YAAiByH,GAC5BjK,EAASR,YAAeyK,GATC,EAURunC,YAAavnC,GAAxBkmC,EAVmB,EAUvBruC,GACFq6C,EAAepgC,YAAwB9R,GACvCyxV,EAAgBx6R,YAA2Bj3D,EACjD,QACIo5C,YACAE,KACAuhT,aAAc9kW,GAAUkvB,IAAQ3jC,IAAQwD,KACxCyV,SACA03D,UACAvyC,QACAs/D,WACAjpF,SACAm8C,eACAz6C,OACAyuC,SACAurT,iBAIO1nQ,iBAAQvmF,GAAiBu4V,YAAqBl1G,M/8BynsHhC9pQ,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YAYA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,Gg9B7ztHje,QAASqhW,GAAqBv8V,GAAkB,GACtCw8V,GADsC,YAExC,WAAY5gW,GAAO,yEACTA,GADS,OAEfyY,GAAKmrK,eAAiB,GAAIi9K,KAAU7gW,GAFrB,EAFqB,2DAQpC,OACI4jL,eAAgBzjL,KAAKyjL,mBATW,yCAchC/hM,OAAOi/W,QAEPj/W,OAAOi/W,MAAMC,YAAc,WAA+B,GAAVp7W,GAAU,0DAChDq7W,EAAQn/W,OAAOi/W,MAAMG,kBACrBltW,KACFmtW,QAeJ,OAbA5+W,QAAO6I,KAAK61W,GAAO9gU,QAAQ,SAAAt6C,GACvBs7W,EAAOF,EAAMp7W,QACTD,EAAIw7W,kBAAyBD,EAAKE,qBAC9Bz7W,EAAI07W,aAAmBH,EAAK98K,aAAwB88K,EAAKI,YACzDvtW,EAAI1R,KAAK6+W,QACFv7W,EAAI47W,gBAAuBL,EAAK98K,kBAAwB88K,EAAKM,oBAE7D77W,EAAI07W,aAAmB17W,EAAI47W,WAClCxtW,EAAI1R,KAAK6+W,GAFTntW,EAAI1R,KAAK6+W,MAOdntW,GAGXlS,OAAOi/W,MAAMW,qBAAuB,WAChC,GAAM1tW,GAAMlS,OAAOi/W,MAAMC,aAAcM,QAAOA,EAAOF,aAAYA,GACjEt/W,QAAO6/W,UAAUC,IAAIt/W,KAAK,WACtBR,OAAO6/W,UAAUE,SAAS7lN,QAAQhoJ,MAG1CoM,KAAKyjL,eAAei+K,UAAYhgX,OAAOi/W,UA3CP,+CA+Cdh+V,GAAW,MACT3C,KAAKH,MAArBk+C,EADyB,EACzBA,GAAI2Y,EADqB,EACrBA,OAER3Y,KAAOp7C,EAAUo7C,KACZA,EAGD/9C,KAAKyjL,eAAek+K,mBAAmBh/V,GAFvC3C,KAAKyjL,eAAem+K,QAAQj/V,IAKgB+zD,EAA5Cr6D,0BAA6BE,WACpBoG,EAAU+zD,QAAQr6D,0BAA0BE,UACzDyD,KAAKyjL,eAAeo+K,aA3DY,wCAgErB1xI,GACXA,EAAUxsC,MAAQ3jL,KAAKH,MAAM8jL,KAC7B3jL,KAAKyjL,eAAem+K,QAAQ5hW,KAAKH,UAlED,8BAuEpC,MAAO,mBAACoE,EAAD,KAAsBjE,KAAKH,MAAWG,KAAKyE,YAvEd,GAChB/D,YAgF5B+/V,GAAc1/V,mBACV0iL,eAAgBn/H,YAAUv/D,OAAO8b,WAGrC,IAAMoH,GAAkB,SAACxD,GAAD,OACpBk/K,IAAKl/K,EAAMk/K,IACX5lI,GAAIt5C,EAAMrL,IAAI2kD,GACd2Y,QAASjyD,EAAMiyD,QACfvyC,MAAOm3B,YAAwB72C,IAGnC,OAAO+pF,aAAQvmF,GAAiBs8C,IAAak8S,EAAex8V,Ih9BkttH3C,GAAIugD,GAAsCvjE,EAAoB,GAC1DwjE,EAA8CxjE,EAAoB4D,EAAE2/D,GACpEm8D,EAA4C1/H,EAAoB,GAChE6gX,EAAwD7gX,EAAoB,KAC5E8gX,EAAgE9gX,EAAoB4D,EAAEi9W,GACtFp+M,EAAyDziK,EAAoB,IAC7E+gX,EAA2C/gX,EAAoB,KACpFmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,IAEnPujD,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Kg9BxttHjhB48S,Qh9Bk2tHT,SAAUn/W,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,GAOrC,QAASu+D,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAP5C,GAAI+jV,GAAgDhhX,EAAoB,KACnHihX,EAAwDjhX,EAAoB4D,EAAEo9W,GAC9EE,EAAyDlhX,EAAoB,KAC7EmhX,EAAyCnhX,EAAoB,IAC7DohX,EAAwDphX,EAAoB,KACjG4jE,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Mi9Bh9tH1hBohS,GACF,aAAc,KACd96O,QAAS,IACTswH,OAAQ,IACRrwH,OAAQ,KAGNm4P,GACFC,UAAW,YACXC,QAAS,WAGP9B,E,WACF,WAAY7gW,GAAO,UACfG,KAAKH,MAAQA,EACbG,KAAKyiW,UAAYC,IAAU1iW,KAAKyiW,UAAU39V,KAAK9E,MAAO,KAEtDA,KAAK2iW,YAAcD,IAAU1iW,KAAK4iW,YAAY99V,KAAK9E,MAAO,Gj9B6uuH9D,MA9QA6kD,GAAa67S,IACTj7W,IAAK,sBACLC,MAAO,Wi9B18tHP,MAHKsa,MAAK45T,mBACN55T,KAAK45T,qBAEF55T,KAAK45T,oBj9Bi9tHZn0U,IAAK,cACLC,MAAO,Si9B/8tHCi+D,GACR,GAAMliC,GAAYzhB,KAAK6iW,uBAER,IADDphV,EAAU/lB,QAAQioD,KAGH,IAArBliC,EAAUz/B,QACVge,KAAK8iW,iBAAgBA,GAEzBrhV,EAAUv/B,KAAKyhE,KAKd3jD,KAAK+iW,eAAiB/iW,KAAKH,MAAM8jL,IAAIx0H,aACtCnvD,KAAKgjW,YAAYr/S,Mj9Bm9tHrBl+D,IAAK,iBACLC,MAAO,Si9Bh9tHIi+D,GACX,GAAMliC,GAAYzhB,KAAK6iW,sBACjBnxV,EAAQ+P,EAAU/lB,QAAQioD,EAC5BjyC,IAAS,IACT+P,EAAUpf,OAAOqP,EAAO,GAEC,IAArB+P,EAAUz/B,QACVge,KAAK8iW,iBAAgBA,Oj9Bq9tH7Br9W,IAAK,UACLC,MAAO,Wi9Bh9tHPsa,KAAK+iW,oBj9Bo9tHLt9W,IAAK,UACLC,MAAO,Si9Bl9tHHma,GAAO,UACX,KAAKG,KAAKijW,aAAejjW,KAAKkjW,OAE1B,YADAljW,KAAK+iW,iBAIT/iW,MAAKH,MAAQA,CANF,OAQoBA,EAAvB8jL,eARG,OAQO99K,EAAahG,EAAbgG,QAClB,IAAI89K,EAAIrnL,IAAMqnL,EAAI2/D,cAAgB3/D,EAAIx0H,aAAew0H,EAAI/nC,SACrD,IACI57I,KAAKmjW,UAAYC,YAAkBvjW,GACnCG,KAAKijW,WAAWjqV,KAAKhZ,KAAKmjW,WAC1BnjW,KAAK+iW,iBACLl9V,EAASmnG,eAGTtrH,OAAO6/W,UAAUC,IAAIt/W,KAAK,WACtB,EAAK0gX,gBAEX,MAAO19W,GACLC,EAAQC,MAAMF,Oj9B49tHtBO,IAAK,qBACLC,MAAO,Si9Bx9tHQma,GACfG,KAAKH,MAAQA,EACbG,KAAKqjW,iBj9B29tHL59W,IAAK,kBACLC,MAAO,Si9Bz9tHKsgF,GAAK,YAChB,SAAU,UAAUjmC,QAAQ,SAAAm8C,GACzBx6F,OAAOskF,EAAM,mBAAqB,uBAAuBkW,EAAW5jE,EAAKmqV,gBj9B+9tH7Eh9W,IAAK,cACLC,MAAO,Si9B59tHCi+D,GACR,GAAK3jD,KAAKijW,WAAV,CADkB,GAIFK,GAAa3/S,EAArBi7G,KAAQ0kM,MAChBtjW,MAAKijW,WAAWM,aAAaD,EAAQtjW,KAAKmjW,WAC1CnjW,KAAK2iW,kBj9Bg+tHLl9W,IAAK,cACLC,MAAO,Wi9B99tHG,UAEVsa,MAAKwjW,wBAAwB,WACzB,EAAKH,mBj9Bo+tHT59W,IAAK,cACLC,MAAO,Wi9Bj+tHyC,WAAxC+7B,EAAwC,uDAA5BzhB,KAAK6iW,qBACzB,IAAK7iW,KAAKijW,WAAV,CADgD,GAIxCp9V,GAAa7F,KAAKH,MAAlBgG,SACF49V,KACAC,EAAiB1jW,KAAK2jW,SAAS9tV,OAAO,SAAC+tV,GACzC,GAAIC,KAEJ,IAAID,EAAQlgX,OAAS4+W,EAAOC,UACxBsB,SACG,CACH,GAAMC,GAAmBriV,EAAU5L,OAAO,qBAAG+oJ,KAAQ0kM,OAAsBhnW,KAAOsnW,EAAQG,qBAAoB,EAC9G,IAAID,EAAkB,CAAC,GACFtgL,GAAiEsgL,EAA1Er/V,MAAS++K,UAAsBU,EAA2C4/K,EAApDjkW,MAASqkL,mBAA8Bo/K,EAAaQ,EAArBllM,KAAQ0kM,OAE/DU,GAAiB9/K,GAAuBA,GAAsBV,EAC9DygL,EAAyB,EAAKC,6BAA6BZ,EACjEO,GAAgBG,GAAiBC,EAC5BJ,GACDJ,EAAavhX,KAAK0hX,GAEtBA,EAAQzC,YAAc0C,GAM9B,MAFAD,GAAQzC,YAAc0C,EAEfA,GAGPJ,GAAazhX,OAAS,GAEtBN,OAAO6/W,UAAUC,IAAIt/W,KAAK,WACtBR,OAAO6/W,UAAUE,SAAS3/V,MAAM2hW,KAMpCzjW,KAAKmkW,eACLnkW,KAAKijW,WAAWmB,0BACTV,EAAe1hX,OAAS,GAC/Bge,KAAKijW,WAAWrnN,QAAQ8nN,GAE5B79V,EAASqnG,mBj9B++tHTznH,IAAK,YACLC,MAAO,Wi9B7+tHC,UACRsa,MAAKwjW,wBAAwB,SAAC/hV,GACtBA,GAKA,EAAK4hV,mBj9Bq/tHb59W,IAAK,0BACLC,MAAO,Si9Bj/tHa+wC,GAEpB,GAAM4tU,GAAmBrkW,KAAK6iW,sBACzBhtV,OAAO,eAAY2tK,GAAZ,EAAG/+K,MAAS++K,SAAZ,UAAyB3jL,MAASqkL,qBAAkDV,GAEhG,IAAI6gL,EAAiBriX,OAAS,EAAG,CAC7B,GAAMsiX,GAAmBD,EACpBxuV,OAAO,eAAWytV,GAAX,EAAG1kM,KAAQ0kM,MAAX,OAA0BiB,aAAiBjB,IAEvD,IAAIgB,EAAiBtiX,OAAS,EAM1B,WALAsiX,GAAiBvkU,QAAQ,SAAC4jB,EAAUjyC,EAAO9d,GACvC+vD,EAASx9C,UAAWq9K,WAAUA,GAAS9xK,IAAU9d,EAAI5R,OAAS,EAAI,WAC9Dy0C,EAAS6tU,IACT,QAMZ7tU,GACAA,Oj9B6/tHJhxC,IAAK,+BACLC,MAAO,Si9Bz/tHkBq7W,GACzB,GAAMyD,GAAKxf,EAAYhlV,KAAKH,MAAMk+C,IAC5BgmI,EAAUg9K,EAAK37S,aAAa,mBAC5B0+H,EAAUi9K,EAAK37S,aAAa,mBAC9Bq/S,IAgBJ,OAdI1gL,KAEwC,IAApCA,EAAQrmL,MAAM,KAAKhC,QAAQ8oW,KAC3BC,MAIJ3gL,IAEwC,IAApCA,EAAQpmL,MAAM,KAAKhC,QAAQ8oW,KAC3BC,MAIDA,Kj9B4/tHPh/W,IAAK,YACLqrC,IAAK,Si9BptuHKprC,GACVsa,KAAKijW,WAAav9W,Kj9ButuHlBD,IAAK,WACLb,IAAK,Wi9BptuHL,MAAQob,MAAKijW,YAAcjjW,KAAKijW,WAAWrC,aAAcI,aAAYA,Wj9BwtuHrEv7W,IAAK,SACLb,IAAK,Wi9BrtuHL,MAAOob,MAAK6iW,sBAAsB7gX,OAAS,Kj9BytuH3CyD,IAAK,iBACLb,IAAK,Wi9BttuHL,MAAOob,MAAK2jW,SAAS9tV,OAAO,SAAAkrV,GAAA,MAAQA,GAAKr9W,OAAS4+W,EAAOE,UAASxgX,OAAS,Mj9B6tuHxE0+W,Ii9B/guHIA,Sj9BmhuHcl/W,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,Yk9B7wuHe,SAASsjX,GAAiB9jT,GACrC,QAAIA,GACaA,EAAGikT,wBAOPx2M,MAAQxsK,OAAOijX,aAAephX,SAAS63M,gBAAgB0yJ,cATxE,Ol9BgyuHM,SAAUzsW,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,Gm9BhyuHrC,QAASy/W,GAAa9sQ,GAOlB,MANsBA,GAAM+sQ,mBACI55W,OAAO,SAACC,EAAKzF,GACzC,GAAMkyC,GAAMmgE,EAAM8sQ,aAAan/W,EAE/B,OADAyF,GAAIzF,GAAsB,IAAfkyC,EAAI31C,OAAe21C,EAAI,GAAKA,EAChCzsC,On9B2xuHqD,GAAIkjF,GAAuCntF,EAAoB,GAC/HmgB,EAAWjf,OAAOkf,QAAU,SAAUC,GAAU,IAAK,GAAIhgB,GAAI,EAAGA,EAAIqR,UAAU3Q,OAAQV,IAAK,CAAE,GAAIigB,GAAS5O,UAAUrR,EAAI,KAAK,GAAImE,KAAO8b,GAAcpf,OAAOC,UAAUC,eAAeb,KAAK+f,EAAQ9b,KAAQ6b,EAAO7b,GAAO8b,EAAO9b,IAAY,MAAO6b,Gm9BvxuHxO,gBAAgB,GAAfzB,GAAe,0DACrBilW,EAAmBpjX,OAAO2uB,KAAKszK,KAAOjiM,OAAO2uB,KAAKszK,IAAI5qL,WACtDgsW,EAAgBD,EAAgB5uQ,KAAKjrG,OAAO,SAACu8I,EAAO5lI,GAEtD,MADA4lI,GAAM5lI,EAAQtd,MAAQsd,EAAQlc,MACvB8hJ,OAGHm8C,EAAQ9jL,EAAR8jL,GACR,IAAIA,EAAK,CACL,GAAMqhL,GAAiBrhL,EAAI5qL,OACrBksW,EAAkBA,KAAKF,EAAkBC,EAAe9uQ,MACxDgvQ,EAAoB/iX,OAAO6I,KAAKi6W,OAAuBjzV,IAAI,SAAC1tB,GAAD,OAC7DA,OACAoB,MAAOu/W,EAAgB3gX,KAI3BwgX,GAAgB9f,aACZmgB,IAAK,MACL5jX,GAAI,KAAM,MACV4C,GAAI,IAAK,MACTkB,GAAI,IAAK,KACT4qL,IAAK,EAAG,KAGZ,IAAMm1L,GAAWA,KACVN,GACHO,oBAAmBA,EACnBnvQ,KAAMgvQ,EACNn1U,MAAOi1U,EAAej1U,OAoB1B,OAjBoC,SAAhClwB,EAAMskB,MAAM98B,IAAMkI,YAClB61W,EAASE,kBAAoB,SAA2Bp6U,GAAO,GACnDq6U,GAAoCr6U,EAApCq6U,WAAYh7T,EAAwBrf,EAAxBqf,QAASzK,EAAe5U,EAAf4U,KAAMihU,EAAS71U,EAAT61U,KAC7ByE,EAAQzE,EAAKgD,mBACb0B,EAAgBb,EAAaljX,OAAO6/W,UAAUE,UAC9CiE,EAAgBd,EAAa7D,IAE9Bx2T,GAAWzK,EACZ36C,EAAQsN,KAAR,cAA2BsuW,EAAKr9W,KAAhC,iBAAqD6hX,EAArD,OAAsEzlU,EAAK,GAA3E,IAAiFA,EAAK,GAAtF,YAAoG0lU,EAApG,KACIE,EAAeD,EAAev6U,GAElC/lC,EAAQsN,KAAR,cAA2BsuW,EAAKr9W,KAAhC,+BAAmE8hX,EAAnE,KACIE,EAAeD,EAAev6U,KAKvCk6U,EAEX,Yn9B8yuHyB5jX,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YAeA,SAASyiE,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI1lC,WAAU,qCAEhH,QAAS2lC,GAA2B3iD,EAAM1f,GAAQ,IAAK0f,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO3f,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0f,EAAP1f,EAElO,QAASsiE,GAAU5kD,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI+e,WAAU,iEAAoE/e,GAAeD,GAAS9c,UAAYD,OAAOid,OAAOD,GAAcA,EAAW/c,WAAaid,aAAe3Z,MAAOwZ,EAAUva,YAAWA,EAAQgB,UAASA,EAAOjB,cAAaA,KAAgBya,IAAYhd,OAAO4hE,eAAiB5hE,OAAO4hE,eAAe7kD,EAAUC,GAAcD,EAASI,UAAYH,GAlB5c,GAAIqlD,GAAsCvjE,EAAoB,GAE1D0/H,GAD8C1/H,EAAoB4D,EAAE2/D,GACxBvjE,EAAoB,IAChE0kX,EAA4C1kX,EAAoB,KAChE2kX,EAAoD3kX,EAAoB4D,EAAE8gX,GAC1EE,EAAsE5kX,EAAoB,KAC1F6kX,EAAmE7kX,EAAoB,IACvF8kX,EAA4D9kX,EAAoB,KAChFw1M,EAAsEx1M,EAAoB,IAC1F+kX,EAA8C/kX,EAAoB,IACvFqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,UAEr4BhjC,EAAe,WAAc,QAASC,GAAiBxjD,EAAQzB,GAAS,IAAK,GAAIve,GAAI,EAAGA,EAAIue,EAAM7d,OAAQV,IAAK,CAAE,GAAIuvC,GAAahxB,EAAMve,EAAIuvC,GAAWlsC,WAAaksC,EAAWlsC,eAAqBksC,EAAWnsC,gBAAyB,SAAWmsC,KAAYA,EAAWlrC,aAAiBxD,OAAOsC,eAAe6c,EAAQuvB,EAAWprC,IAAKorC,IAAiB,MAAO,UAAU+yB,EAAamB,EAAYC,GAAiJ,MAA9HD,IAAYD,EAAiBlB,EAAYxhE,UAAW2iE,GAAiBC,GAAaF,EAAiBlB,EAAaoB,GAAqBpB,Ko9Bp3uHhiBgtG,KAAMC,gBp9By4uHN,Io9Bv4uHMo1M,G,YACF,WAAYpmW,GAAO,yEACTA,GADS,OAEf,GAAKqmW,eAAiB,EAAKA,eAAephW,KAApB,GAFP,Ep9Bs7uHnB,MA/CAg/C,GAAUmiT,EAAermW,GAWzBilD,EAAaohT,IACTxgX,IAAK,iBACLC,MAAO,Wo9B94uHPsa,KAAKmG,UAAWqkO,aAAc,KAC9Bp5K,cACApxD,KAAKH,MAAMgG,SAAS4nD,kBp9Bk5uHpBhoE,IAAK,SACLC,MAAO,Wo9Bh5uHF,MAIDsa,KAAKH,MAFL2tD,EAFC,EAEDA,mBACAqnI,EAHC,EAGDA,eAGEsxK,EAAkB34S,EAAqBA,EAArBA,OAAA,UAAoC,6BAAgC,IAC5F,0BAES24S,EAFT,EAGS,KAHT,OAGuB34S,EAHvB,eAG2DxtD,KAAKkmW,eAHhE,iBAGiG,6BAHjG,uBAI+B,yDAJ/B,mBAK+B,qDAL/B,QAK6FlmW,KAAKkmW,iBALlG,uBAMmC,+BANnC,EAOqB,KAPrB,eAQwCrxK,EARxC,cASsC,kCp9B25uHnCoxK,Go9Bv7uHiBvlW,YA4C5BulW,GAAcx+Q,cACVj6B,oBAAmBA,EAGvB,IAAMvlD,GAAkB,SAACxD,GAErB,OACI+oD,mBAFuBivB,YAA8Bh4E,IAO9CqrJ,mBAAsBthE,YAAQvmF,GAAiBg+V,Kp9Bi5uHxD,SAAU5kX,EAAQiE,EAAqBrE,GAE7C,Yq9Bt9uHe,SAASs+W,GAAgBt/V,GACpC,MAAOs5O,aAAat5O,EAAO+rC,IAAc,SAACo6T,EAAaC,QAC/CA,EAAS7qS,QACTq+K,gBAPZ,kBAAAv4P,EAAA,iBr9B6+uHM,SAAUD,EAAQD,EAASH,Is9Bz+uH/B,SAAUgT,EAAQ++F,IAKZ,SAAU3uB,GAAU,YAGxB,IAAIiiS,GAAiB,8DAA8D5oW,MAAM,KACrFk0H,EAAc,kDAAkDl0H,MAAM,IAEjE2mE,GAAOy0D,aAAa,MACzBjH,OAAS,2FAA2Fn0H,MAAM,KAC1Gk0H,YAAc,SAAUztI,EAAGmP,GACvB,MAAI,QAAQsyB,KAAKtyB,GACNs+H,EAAYztI,EAAE8sH,SAEdq1P,EAAeniX,EAAE8sH,UAGhCs1P,oBACApwO,SAAW,uDAAuDz4H,MAAM,KACxEw4H,cAAgB,qCAAqCx4H,MAAM,KAC3Du4H,YAAc,uBAAuBv4H,MAAM,KAC3C8oW,sBACAj6O,gBACI4b,GAAK,OACLD,IAAM,UACNE,EAAI,aACJC,GAAK,wBACLC,IAAM,6BACNC,KAAO,oCAEX5G,UACIgG,QAAU,WACN,MAAO,aAAiC,IAAjB3nI,KAAK63H,QAAiB,IAAM,IAAM,QAE7D+P,QAAU,WACN,MAAO,gBAAoC,IAAjB5nI,KAAK63H,QAAiB,IAAM,IAAM,QAEhEgQ,SAAW,WACP,MAAO,cAAkC,IAAjB7nI,KAAK63H,QAAiB,IAAM,IAAM,QAE9DiQ,QAAU,WACN,MAAO,cAAkC,IAAjB9nI,KAAK63H,QAAiB,IAAM,IAAM,QAE9DkQ,SAAW,WACP,MAAO,0BAA8C,IAAjB/nI,KAAK63H,QAAiB,IAAM,IAAM,QAE1EmQ,SAAW,KAEfpB,cACI8B,OAAS,QACTC,KAAO,UACPtjJ,EAAI,gBACJlB,EAAI,YACJykJ,GAAK,aACLtV,EAAI,WACJuV,GAAK,WACLxkJ,EAAI,SACJykJ,GAAK,UACLvV,EAAI,SACJwV,GAAK,WACLtiI,EAAI,SACJuiI,GAAK,WAET6B,aAAe,WACfje,QAAU,MACVuH,MACIL,IAAM,EACNC,IAAM,MApEgC,EAAQ,Ut9B4jvHpD,SAAU1yI,EAAQD,EAASH,Iu9B9jvH/B,SAAUgT,EAAQ++F,IAKZ,SAAU3uB,GAAU,YAGZA,GAAOy0D,aAAa,SAC5BjH,OAAS,2FAA2Fn0H,MAAM,KAC1Gk0H,YAAc,kDAAkDl0H,MAAM,KACtEy4H,SAAW,iFAAiFz4H,MAAM,KAClGw4H,cAAgB,8BAA8Bx4H,MAAM,KACpDu4H,YAAc,yBAAyBv4H,MAAM,KAC7C8oW,sBACAj6O,gBACI4b,GAAK,QACLD,IAAM,WACNE,EAAI,aACJC,GAAK,wBACLC,IAAM,mCACNC,KAAO,0CAEX5G,UACIgG,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,MAAuB,KAAf/nI,KAAKgxG,OAA8B,IAAfhxG,KAAKgxG,MAC7B,wBACA,yBAERg3B,SAAU,KAEdpB,cACI8B,OAAS,QACTC,KAAO,WACPtjJ,EAAI,kBACJlB,EAAI,YACJykJ,GAAK,aACLtV,EAAI,WACJuV,GAAK,WACLxkJ,EAAI,SACJykJ,GAAK,UACLvV,EAAI,SACJwV,GAAK,WACLtiI,EAAI,SACJuiI,GAAK,WAET6B,aAAc,WACdje,QAAU,SAjDgC,EAAQ,Uv9B6nvHpD,SAAUvrI,EAAQiE,EAAqBrE,GAE7C,cAAa,SACwBkE,Gw9BrnvHrC,QAASshX,KACL,IACI/kX,OAAO4Z,SAASyC,KAAOmR,IACzB,MAAOhqB,GACLC,EAAQC,MAAMF,IAIf,QAASwhX,GAAiB7mW,GAAO,GAEhCywC,GAKAzwC,EALAywC,QACAjE,EAIAxsC,EAJAwsC,KACA+3M,EAGAvkP,EAHAukP,WACAiG,EAEAxqP,EAFAwqP,eACAn8M,EACAruC,EADAquC,UAGJ,KAAKoC,EAAQtuD,QAAuC,IAA7BG,OAAO6I,KAAKqhD,GAAMrqD,aAAgBoiQ,EACrD,MAAO,GAAP,gBAAaqiH,IAGjB,IAAMn8G,IAAY,EAAC,OAAa,cAG5Bq8G,EAAY,KACZC,EAAc,KACdllP,EAAiBz7H,IAAa6D,kBAC9B+8W,EAAc,iCACdC,EAAc,OAGlB,IAAIx2T,EAAQ,IAAMA,EAAQ,GAAGzF,YAAa,CACtC,GAAMuF,GAASA,SAASE,EAAQ,GAAGhsD,KAC7BiuD,EAAUjC,EAAQ,GAAGzF,WAC3B87T,KAAa,KAAb,OAA+Bv2T,EAA/B,QAAgDmC,IAChDq0T,IAAe,KAAf,SAAqC,IAAK,OAC1CC,EAAc,6BACdC,EAAc,QAGlB,GAAIrlP,MACAG,KAjCgC,EAkCOtxE,EAAQ,OAlCf,IAkC5B57B,QAlC4B,sBAkChBymN,GAlCgB,EAkChBA,WAEhBA,KAAgB1zO,IAAY+C,SAC5B2wO,IAAgB1zO,IAAYiD,WAC5BywO,IAAgB1zO,IAAYgD,WAE5Bg3H,KACAC,EAAiB,KACjBE,KAEJ,IAAM75B,IAAa75C,GAAcm8M,CACjC,UACK,KADL,IACwBC,EADxB,UAC6CviK,UACpC05B,EAAqBA,EAAC,QAAwB,KAFvD,mBAGwBolP,UAHxB,uBAIgCC,UAJhC,EAKiB,KALjB,SAM8BtgX,IAASoD,WANvC,eAOoC83H,EAPpC,oBASyCD,EATzC,eAUoCG,GAFZ,0BARxB,uBAa+B,gBACd+kP,EACAC,KAgBN,QAASr7G,KAA+B,GAAdxvP,GAAc,4DACfA,EAA5BqwC,oBAD2C,EAChC,aADgC,EAG7C26T,EAAa,SAAClnW,GAAD,MAAW6mW,GAAiB7mW,GAE/CknW,GAAWpmW,WACP2vC,QAASgU,YAAUnjB,MACnBijN,WAAY9/L,YAAUuU,KACtBxsB,KAAMiY,YAAUv/D,QAGpBgiX,EAAWx8G,aACP,SAACv3O,EAAQzX,EAAOW,GAAhB,MAAyB23C,aAAsBzH,EAAUp5B,EAAQzX,EAAOW,IACxE,SAAC8W,EAAQzX,EAAOW,GAAhB,MAAyB27C,aAAoB37C,KAGjD6qW,EAAWv8G,gBAAkB,GAC7Bu8G,EAAWt8G,UAAY,YAA+D,GAA5D5kP,GAA4D,EAA5DA,SAAUu4I,EAAkD,EAAlDA,YAAaliJ,EAAqC,EAArCA,KAAqC,IAA/BZ,SAAYC,iBAAmB,MAClFsK,GAASguC,YAAsBkzT,EAAW36T,SAAUgyG,EAAa7iJ,EAAOW,IACnEs2B,KAAK,WACF3sB,EAASosC,iBAEjBpsC,EAASgyC,YAAoB37C,IACxBs2B,KAAK,WACF3sB,EAASqkF,iBAIrB,IAAMjiF,GAAkB,SAACxD,GAAD,OACpB6rC,QAAU7rC,EAAMwnC,MAAQxnC,EAAMwnC,KAAKqE,YACnC8zM,WAAa3/O,EAAMwnC,MAAQxnC,EAAMwnC,KAAKm4M,WACtC/3M,KAAM04G,YAAatgJ,GACnB4lP,eAAgB3rP,YAAuB+F,GACvCypC,WAAYD,YAAsBxpC,IAGtC,OAAO+pF,aAAQvmF,GAAiB8+V,Gx9B8/uHHzhX,EAAuB,EAAIimQ,CACvC,IAAI/mM,GAAsCvjE,EAAoB,GAE1D0/H,GAD8C1/H,EAAoB4D,EAAE2/D,GACxBvjE,EAAoB,IAChEkhE,EAAuClhE,EAAoB,GAC3D+lX,EAA8C/lX,EAAoB,IAClEgmX,EAAwDhmX,EAAoB,IAC5EimX,EAA8CjmX,EAAoB,IAClEkmX,EAA2ClmX,EAAoB,KAC/DmmX,EAAiDnmX,EAAoB,KACrEomX,EAAkEpmX,EAAoB,IACtFqmX,EAA2DrmX,EAAoB,IAC/EsmX,EAAiEtmX,EAAoB,KACrFumX,EAAyDvmX,EAAoB,IAC7EwmX,EAA4CxmX,EAAoB,GAEhEymX,GAD4CzmX,EAAoB,IACRA,EAAoB,IAC5E0mX,EAA0D1mX,EAAoB,IACnGqmG,EAAO,WAAc,GAAIC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,YAkJ52BrmG,KAAK8D,EAAqBrE,EAAoB,KAIrE,SAAUI,EAAQiE,EAAqBrE,GAE7C,YACqB,IAAIujE,GAAsCvjE,EAAoB,GAE/EqmG,GADmErmG,EAAoB4D,EAAE2/D,GAClF,WAAc,GAAI+iC,GAAuC,kBAAXz9C,SAAyBA,OAAO09C,KAAO19C,OAAO09C,IAAI,kBAAoB,KAAQ,OAAO,UAA+B9jG,EAAMmc,EAAOpa,EAAKgb,GAAY,GAAIgnF,GAAe/jG,GAAQA,EAAK+jG,aAAkBC,EAAiB/0F,UAAU3Q,OAAS,CAAuD,IAA/C6d,GAA4B,IAAnB6nF,IAAwB7nF,MAAkBA,GAAS4nF,EAAgB,IAAK,GAAIjO,KAAYiO,YAAoB5nF,EAAM25E,KAAwB35E,EAAM25E,GAAYiO,EAAajO,QAA2B35E,KAASA,EAAQ4nF,MAAsB,IAAuB,IAAnBC,EAAwB7nF,EAAMY,SAAWA,MAAiB,IAAIinF,EAAiB,EAAG,CAA0C,IAAK,GAAzCC,GAAa3zF,MAAM0zF,GAA0BpmG,EAAI,EAAGA,EAAIomG,EAAgBpmG,IAAOqmG,EAAWrmG,GAAKqR,UAAUrR,EAAI,EAAMue,GAAMY,SAAWknF,EAAc,OAASC,SAAUL,EAAoB7jG,KAAMA,EAAM+B,QAAIA,KAACA,EAAoB,KAAO,GAAKA,EAAKmgB,IAAK,KAAM/F,MAAOA,EAAOgoF,OAAQ,Wy9BlzvHn4B+/Q,EAAY,SAAC/nW,GAAD,8BACK,sCADL,sCAGDA,EAAMuwC,SAHL,mBAKK,kBALL,gBAMFvwC,EAAM0yC,WAUPq1T","file":"webapp.39a6bdc7d0de5d9183da.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t1: 0\n/******/ \t};\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};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\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/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + ({\"0\":\"polyfill-intl\"}[chunkId]||chunkId) + \".\" + \"39a6bdc7d0de5d9183da\" + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 379);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(78);\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export AddToCalendarPlacement */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return AuthenticatorType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AdobePass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return Api; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return AppEnvs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return BlackoutTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return BucketLayout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"u\", function() { return LayoutThresholds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"v\", function() { return LayoutVariant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"q\", function() { return Device; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"r\", function() { return DeviceType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return BucketStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return OneIdEnv; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return PageType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"z\", function() { return PlayerError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"A\", function() { return PlayerEvents; });\n/* unused harmony export Route */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"F\", function() { return Storage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"w\", function() { return ModalType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return ContentType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H\", function() { return URLPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return ContentStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"E\", function() { return SourceType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return AuthTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return AuthStates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"s\", function() { return Entitlements; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return ComScoreC3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return Flags; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"B\", function() { return PlayerPlacement; });\n/* unused harmony export ESPNAppCookie */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G\", function() { return SyndicatedPlayerLoginOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return BreakPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return BucketRatio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return BucketRatioCols; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"C\", function() { return RenderTemplateTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"D\", function() { return SortOrder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return DarkThemeLogos; });\nvar _URLPath, _ComScoreC, _BreakPoints$MOBILE, _BreakPoints$MOBILE_L, _BreakPoints$TABLET, _BreakPoints$DESKTOP, _BreakPoints$DESKTOP_, _BucketRatioCols;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar AddToCalendarPlacement = {\n ALERT: 'ALERT',\n EVENT_CARD: 'EVENT_CARD'\n};\n\nvar AuthenticatorType = {\n ADOBE: 'adobe',\n IP: 'ip'\n};\n\nvar AdobePass = {\n Env: {\n PROD: 'production',\n STAGING: 'staging'\n },\n METADATA: {\n TTL_AUTHN: 'TTL_AUTHN',\n TTL_AUTHZ: 'TTL_AUTHZ',\n USERID: 'userID',\n UPSTREAM_USERID: 'upstreamUserID',\n PACKAGE_ID: 'packageId',\n PACKAGE_TIER: 'tier'\n }\n};\n\nvar Api = {\n Page: {\n EVENT_QUERY_KEYS: ['airingId', 'eventId', 'id', 'network', 'channel', 'gameId', 'country'],\n PCC_NETWORK_NAMES: ['espn', 'espn2', 'espn3', 'espnu', 'longhorn', 'espnews', 'espndeportes', 'sec', 'secplus', 'accextra', 'acc']\n },\n Env: {\n DEV: 'dev',\n QA: 'qa',\n STAGING: 'staging',\n PROD: 'prod'\n }\n};\n\nvar AppEnvs = {\n prod: 'PROD',\n qa: 'QA',\n dev: 'DEV'\n};\n\nvar BlackoutTypes = {\n DMA: 'dma',\n DEVICE: 'device'\n};\n\nvar BucketLayout = {\n COLLECTION: 'COLLECTION',\n DEFAULT: 'DEFAULT',\n DEFAULT_UNLIMITED: 'DEFAULT_UNLIMITED',\n HERO: 'HERO',\n 'feature-left': 'feature-left',\n 'feature-right': 'feature-right',\n TAPESTRY_LEFT: 'TAPESTRY_LEFT', // will be deprecated\n TAPESTRY_RIGHT: 'TAPESTRY_RIGHT', // will be deprecated\n SixteenNineTapestryLeft: 'TAPESTRY_LEFT', // will be deprecated\n SixteenNineTapestryRight: 'TAPESTRY_RIGHT', // will be deprecated\n SCHEDULE_MODULE: 'SCHEDULE_MODULE',\n DEFAULT_EXPANDABLE: 'DEFAULT_EXPANDABLE',\n LARGE_EXPANDABLE: 'LARGE_EXPANDABLE',\n SixteenNine: 'SixteenNine',\n FiveTwo: 'FiveTwo',\n TwoThree: 'TwoThree',\n FourThree: 'FourThree',\n Carousel: 'carousel'\n};\n\nvar LayoutThresholds = {\n DEFAULT_UNLIMITED: undefined,\n 'feature-left': 5,\n 'feature-right': 5,\n TAPESTRY_LEFT: 5,\n TAPESTRY_RIGHT: 5,\n COLLECTION: undefined\n};\n\nvar LayoutVariant = {\n COLLECTION: 'collection',\n DTC: 'dtc'\n};\n\nvar Device = {\n DESKTOP: 'desktop',\n HANDSET: 'handset',\n TABLET: 'tablet'\n};\n\nvar DeviceType = Object.keys(Device).reduce(function (acc, key) {\n acc[Device[key]] = key;\n return acc;\n}, {});\n\nvar BucketStatus = {\n WEB_LIVE: 'WEB_LIVE',\n WEB_UPCOMING: 'WEB_UPCOMING'\n};\n\nvar OneIdEnv = {\n STAGING: 'staging',\n PROD: 'prod'\n};\n\nvar PageType = {\n HOME: 'HOME',\n COLLECTION: 'COLLECTION',\n FEATURES: 'FEATURES',\n SEARCH: 'SEARCH',\n ORIGINALS: 'ORIGINALS',\n SID: 'SID',\n CATALOG: 'CATALOG'\n};\n\nvar PlayerError = {\n AUTHORIZATION: 'AUTHORIZATION',\n DEFAULT: 'DEFAULT',\n UNSUPPORTED: 'UNSUPPORTED'\n};\n\nvar PlayerEvents = {\n ESPN_PLAYING: 'espn.playing',\n ESPN_PLAY: 'espn.play',\n ESPN_PAUSE: 'espn.pause',\n ESPN_AD_POD_STARTED: 'espn.ads-pod-started',\n ESPN_AD_POD_ENDED: 'espn.ads-pod-ended',\n ESPN_AD_STARTED: 'espn.ads-ad-started',\n ESPN_AD_ENDED: 'espn.ads-ad-ended',\n ESPN_CONTENT_ENDED: 'espn.contentended',\n ESPN_CONTENT_LOADED: 'espn.contentloaded',\n ESPN_PROGRAM_CHANGE: 'espn.programchange',\n ESPN_AUTOPLAY_TOGGLED: 'espn.autoplaytoggled',\n ESPN_SOCIAL_OPENED: 'socialopened',\n ESPN_SOCIAL_CLOSED: 'socialclosed',\n ESPN_CAPTION_OPENED: 'captionopened',\n ESPN_CAPTION_CLOSED: 'captionclosed',\n ESPN_ERROR: 'espn.error'\n};\n\nvar Route = {\n HOME: '',\n FEATURES: 'features',\n SCHEDULE: 'schedule',\n PLAYER: 'player'\n};\n\nvar Storage = {\n Analytics: {\n IS_AUTHENTICATING: 'IS_AUTHENTICATING'\n }\n};\n\nvar ModalType = {\n POPUP: 'POPUP',\n FLASH: 'FLASH',\n BLACKOUT_MAP: 'BLACKOUT_MAP',\n IFRAME_AUTH: 'IFRAME_AUTH',\n PAYWALL: 'PAYWALL',\n BROADCAST_PICKER: 'BROADCAST_PICKER'\n};\n\nvar ContentType = {\n LISTING: 'listing',\n VOD: 'vod',\n PRODUCT: 'product',\n SHOW: 'show',\n FILM: 'film',\n ONDEMAND: 'onDemand',\n PROGRAM: 'program',\n // legacy type for `v1` Page API used for legacy 5.x app\n EVENT: 'event',\n VIDEO: 'video',\n TERM: 'term',\n COMPILATION: 'compilation'\n};\n\nvar URLPath = (_URLPath = {}, _defineProperty(_URLPath, ContentType.PRODUCT, 'product'), _defineProperty(_URLPath, ContentType.SHOW, 'series'), _defineProperty(_URLPath, ContentType.FILM, 'film'), _defineProperty(_URLPath, ContentType.PROGRAM, 'program'), _defineProperty(_URLPath, ContentType.TERM, 'search'), _defineProperty(_URLPath, ContentType.COMPILATION, 'compilation'), _URLPath);\n\n// should we use this for `type` field in listings API?\nvar ContentStatus = {\n LIVE: 'live',\n UPCOMING: 'upcoming',\n REPLAY: 'replay',\n OVER: 'over'\n};\n\nvar SourceType = {\n LINEAR: 'linear',\n ONLINE: 'online'\n};\n\nvar AuthTypes = {\n MVPD: 'mvpd',\n ISP: 'isp',\n BAM: 'direct',\n OPEN: 'open'\n};\n\nvar AuthStates = {\n MVPD: 'mvpd_login',\n ISP: 'isp',\n MVPD_PREVIOUS: 'mvpd_previous'\n};\n\nvar Entitlements = {\n ESPN_PLUS: 'ESPN_PLUS',\n ESPN_PLUS_MLB: 'ESPN_PLUS_MLB',\n ESPN_PLUS_NHL: 'ESPN_PLUS_NHL',\n ESPN_EXEC: 'ESPN_EXEC',\n ESPN_PLUS_UFC_PPV: 'ESPN_PLUS_UFC_PPV',\n ESPN_TDA: 'fallback_subscription_directbilling_tda'\n};\n\nvar ComScoreC3 = (_ComScoreC = {}, _defineProperty(_ComScoreC, Entitlements.ESPN_PLUS, 'ESPNPlus'), _defineProperty(_ComScoreC, Entitlements.ESPN_PLUS_NHL, 'NHLTV'), _defineProperty(_ComScoreC, Entitlements.ESPN_PLUS_MLB, 'MLBTV'), _ComScoreC);\n\n// list of URL query flags we use\nvar Flags = {\n APP_NAME: 'appName', // The app can be the default \"webapp\", or \"espnapp\"\n ADOBEPASS_ENV: 'passenv', // used to point Adobe Pass Access Enabler to different environment\n API_ENV: 'apienv', // points the site at whatever PageApi environment,\n CONFIG_ENV: 'configenv', // use config file for the specified env (`qa` or `prod`)\n COUNTRY: 'country', // allows to override X-Country header to determine country\n LANG: 'lang', // allows to override Accept-Language header\n DEBUG_AD: 'debug_ad', // used for printing out gpt ads info\n DEVICE: 'device', // overrides the devices detected from X-Device header\n PACKAGE_ID: 'packageId', // allows testing passing this packageId into pageApi\n PLAYER_TECH: 'playertech', // overrides the player tech (for forcing brightcove in webviews).\n ROADBLOCK: 'roadblock', // set to false to disable the authenticated content roadblock\n FROM_ROADBLOCK: 'rb', // set this to indicate that we were linked from the roadblock page (prevents cyclic redirection)\n ROADBLOCK_NO_UNIVERSAL_LINK: 'rb_noul', // do not use Universal Link logic\n HIDENAV: 'hidenav', // Used by webview in apps to remove top nav bars\n CLIENT_NAV: 'clientnav', // a flag to enable client side rendering from the header navigation\n WEBVIEW: 'webview', // Used by webview in apps to render the page completely w/o page shell\n ENABLE_SEARCH: 'search', // Used to enable search box on home page\n BYPASS_TOKEN: 'bypass_token', // Used to bypass AdobePass auth step\n PACKAGE_FILTER: 'pkg_filter', // Used to filter contents by packageId for international\n SSR: 'ssr', // Used to indicate if the server side rendering should be used or not,\n REGION: 'region', // ESPN App passes this as the edition to webviews. We use this instead of headers if present\n PLAYER_ID: 'playerId', // A Brightcove playerId to override the default one\n ONEID_ENV: 'oneidenv', // Staging or Production OneID environment\n PARTNER: 'partner', // Used for partner syndicated player\n CATEGORY_ID: 'categoryId', // Syndicated player (i.e. US Open) to filter schedule correctly by (categoryId, id, partner)\n AUTO_DISPLAY_PROVIDER_DIALOG: 'autoDisplayDialog', // Used for syndicated player to show provider dialog immediately\n SHOW_SCHEDULE_IN_SYNDICATED_PLAYER: 'scheduleModule', // Used for showing schedule module in the syndicated player\n AUTH_RETRY: 'auth_retry', // Used when the syndicated player reload itself when the mvpd auth state failed to reflect\n XDOMAIN_BLOCKED: 'xd_blocked', // Used in the syndicated player to indicate that the browser blocks cross domain storage\n DEBUG: 'debug', // Used for the page shell to work in debug mode\n DISNEY_ENV: 'disneyid', // Used for the page shell to determine where to load `DisneyID.js`\n DISNEY_CLIENT_ID: 'disneyClientId', // Used for the page shell to override the `clientId` for OneID\n BAM_ENV: 'bamenv', // points BAM SDK to its env (`beta` or `qa`)\n MEDIA_LOCATION: 'ml', // temp param to override `media location(videoHref)`\n PAYWALL: 'paywall', // use BAM's paywall page\n PASS_ONEID_TOKEN: 'pass_token', // override bootstrap `bam.passToken` flag\n NO_SSR: 'no_ssr',\n PACKAGE_TIER: 'tier', // Package tier,\n EDITION: 'edition', // used to send edition to API calls i.e. carribean\n UNSUPPORTED_ERROR: 'unsupported_error', // Used to trigger the redirect to the /unsupported error page\n VIDEO_ADS_PROVIDER: 'videoAdsProvider', // Overrides which Ad Provider to use `google` or `freewheel` for the Player\n VIDEO_ADS_CMSID: 'videoAdsCMSID', // Overrides the GAM `cmsid` param for the Player\n VIDEO_ADS_NETWORK_CODE: 'videoAdsNetworkCode', // Overrides the `networkCode` adsConfig param for the Player\n VIDEO_ADS_AD_UNIT: 'videoAdsAdUnit', // Overrides the `adUnit` adsConfig param for the Player\n APP_DRM_SUPPORT: 'appDrmSupport', // indicates that the app (embedding the site as a webview) supports DRM\n MUTED: 'muted'\n};\n\nvar PlayerPlacement = {\n HERO: 'hero',\n PLAYER: 'player'\n};\n\nvar ESPNAppCookie = {\n AUTH: 'espnappwatchtab_auth',\n PERSONALIZATION: 'espnappwatchtab_personalization'\n};\n\nvar SyndicatedPlayerLoginOptions = {\n SELF: 0,\n NEW_WINDOW: 1,\n NEW_WINDOW_MANAGED: 2\n};\n\nvar BreakPoints = {\n MOBILE: 'mobile',\n MOBILE_LARGE: 'mobile-lg',\n TABLET: 'tablet',\n DESKTOP: 'desktop',\n DESKTOP_LARGE: 'desktop-lg'\n};\n\nvar BucketRatio = {\n SixteenNine: '16x9',\n FourThree: '4x3',\n FiveTwo: '5x2',\n TwoThree: '2x3'\n};\n\nvar BucketRatioCols = (_BucketRatioCols = {}, _defineProperty(_BucketRatioCols, BreakPoints.MOBILE, (_BreakPoints$MOBILE = {}, _defineProperty(_BreakPoints$MOBILE, BucketRatio.SixteenNine, 1), _defineProperty(_BreakPoints$MOBILE, BucketRatio.FourThree, 2), _defineProperty(_BreakPoints$MOBILE, BucketRatio.FiveTwo, 1), _defineProperty(_BreakPoints$MOBILE, BucketRatio.TwoThree, 2), _BreakPoints$MOBILE)), _defineProperty(_BucketRatioCols, BreakPoints.MOBILE_LARGE, (_BreakPoints$MOBILE_L = {}, _defineProperty(_BreakPoints$MOBILE_L, BucketRatio.SixteenNine, 1), _defineProperty(_BreakPoints$MOBILE_L, BucketRatio.FourThree, 4), _defineProperty(_BreakPoints$MOBILE_L, BucketRatio.FiveTwo, 1), _defineProperty(_BreakPoints$MOBILE_L, BucketRatio.TwoThree, 3), _BreakPoints$MOBILE_L)), _defineProperty(_BucketRatioCols, BreakPoints.TABLET, (_BreakPoints$TABLET = {}, _defineProperty(_BreakPoints$TABLET, BucketRatio.SixteenNine, 3), _defineProperty(_BreakPoints$TABLET, BucketRatio.FourThree, 4), _defineProperty(_BreakPoints$TABLET, BucketRatio.FiveTwo, 2), _defineProperty(_BreakPoints$TABLET, BucketRatio.TwoThree, 4), _BreakPoints$TABLET)), _defineProperty(_BucketRatioCols, BreakPoints.DESKTOP, (_BreakPoints$DESKTOP = {}, _defineProperty(_BreakPoints$DESKTOP, BucketRatio.SixteenNine, 4), _defineProperty(_BreakPoints$DESKTOP, BucketRatio.FourThree, 4), _defineProperty(_BreakPoints$DESKTOP, BucketRatio.FiveTwo, 2), _defineProperty(_BreakPoints$DESKTOP, BucketRatio.TwoThree, 5), _BreakPoints$DESKTOP)), _defineProperty(_BucketRatioCols, BreakPoints.DESKTOP_LARGE, (_BreakPoints$DESKTOP_ = {}, _defineProperty(_BreakPoints$DESKTOP_, BucketRatio.SixteenNine, 4), _defineProperty(_BreakPoints$DESKTOP_, BucketRatio.FourThree, 4), _defineProperty(_BreakPoints$DESKTOP_, BucketRatio.FiveTwo, 3), _defineProperty(_BreakPoints$DESKTOP_, BucketRatio.TwoThree, 6), _BreakPoints$DESKTOP_)), _BucketRatioCols);\n\nvar RenderTemplateTypes = {\n BASIC: 'basic',\n PAGE_SHELL: 'pageShell'\n};\n\nvar SortOrder = {\n DESC: 'DESC',\n ASC: 'ASC'\n};\n\nvar DarkThemeLogos = {\n espn_free: 'espn_free_wht',\n accextra: 'accextra_wht'\n};\n\n/* unused harmony default export */ var _unused_webpack_default_export = ({\n AddToCalendarPlacement: AddToCalendarPlacement,\n AdobePass: AdobePass,\n Api: Api,\n AppEnvs: AppEnvs,\n BucketLayout: BucketLayout,\n BucketStatus: BucketStatus,\n PageType: PageType,\n PlayerError: PlayerError,\n PlayerEvents: PlayerEvents,\n Route: Route,\n Storage: Storage,\n ModalType: ModalType,\n Flags: Flags,\n BucketRatio: BucketRatio,\n BucketRatioCols: BucketRatioCols\n});\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/*global window, global*/\nvar util = __webpack_require__(157)\nvar assert = __webpack_require__(225)\nvar now = __webpack_require__(384)\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/reselect/lib/index.js\nvar lib = __webpack_require__(9);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./config/i18n/editionMap.js\n// dateTime3 = 24h, dateTime2 = 12h + AM/PM\nvar esFaq = 'https://support.espn.com/hc/es';\nvar usFaq = 'https://support.espn.com/hc/en-us';\nvar brFaq = 'https://support.espn.com/hc/pt-br';\nvar carribFaq = 'http://cdn.espni.go.com/_templates/welcome-espnplay/popups/faq-en-espnplay.html';\nvar anzlFaq = 'https://support.espn.com/hc/en-au';\n\nvar faqMap = {\n ssla: esFaq,\n brazil: brFaq,\n caribbean: carribFaq,\n anzl: anzlFaq,\n us: usFaq\n};\n\nvar editionMap = {\n MX: { pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Mexico\n CR: { pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Costa Rica\n BZ: { pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Belize\n DO: { pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Dominican Republic\n SV: { pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // El Salvador\n GT: { pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Guatemala\n HN: { pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Honduras\n NI: { pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Nicaragua\n PA: { pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Panama\n AR: { pageShellRegion: 'ar', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.ar' }, dateFormat: 'dateTime3' }, // Argentina\n PY: { pageShellRegion: 'ar', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.ar' }, dateFormat: 'dateTime3' }, // Paraguay\n UY: { pageShellRegion: 'ar', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.ar' }, dateFormat: 'dateTime3' }, // Uruguay\n BO: { pageShellRegion: 'cl', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.cl' }, dateFormat: 'dateTime3' }, // Bolivia\n CL: { pageShellRegion: 'cl', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.cl' }, dateFormat: 'dateTime3' }, // Chile\n PE: { pageShellRegion: 'pe', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.pe' }, dateFormat: 'dateTime3' }, // Peru\n CO: { pageShellRegion: 'co', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.co' }, dateFormat: 'dateTime3' }, // Colombia\n EC: { pageShellRegion: 'co', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.co' }, dateFormat: 'dateTime3' }, // Ecuador\n VE: { pageShellRegion: 've', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.ve' }, dateFormat: 'dateTime3' }, // Venezuela\n BR: { pageShellRegion: 'br', pageShellLanguage: 'pt', edition: 'brazil', ad: { site: 'espn.com.br' }, dateFormat: 'dateTime3' }, // Brasil\n AI: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Anguila\n AG: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Antigua and Barbuda\n AW: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Aruba\n BS: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Bahamas\n BB: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Barbados\n BM: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Bermuda\n KY: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Cayman Islands\n DM: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Dominica\n GD: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Grenada\n GP: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Guadeloupe\n GY: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Guyana\n HT: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Haiti\n JM: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Jamaica\n MQ: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Martinique\n LC: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Saint Lucia\n MF: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Saint Martin (French part)\n VC: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Saint Vincent and the Grenadines\n SR: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Suriname\n VG: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Virgin Islands (British)\n BQ: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Bonaire\n CW: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Curacao\n MS: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Montserrat\n BL: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Saint Barthelemy\n KN: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - St Kitts and Nevis\n SX: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - St Maarten\n TT: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Trinidad and Tobago\n TC: { pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Turks and Caicos\n AU: { pageShellRegion: 'au', pageShellLanguage: 'en', edition: 'anzl', ad: { site: 'espn.au' }, dateFormat: 'dateTime2' }, // Australia\n NZ: { pageShellRegion: 'au', pageShellLanguage: 'en', edition: 'anzl', ad: { site: 'espn.au' }, dateFormat: 'dateTime2' }, // New Zealand\n NL: { pageShellRegion: 'nl', pageShellLanguage: 'nl', edition: 'nl', ad: { site: 'espn.nl' }, dateFormat: 'dateTime3' }, // Netherlands\n // ?? Deportes - US\n US: { pageShellRegion: 'us', pageShellLanguage: 'en', edition: 'us', ad: { site: 'espn.com' }, dateFormat: 'dateTime2' }\n};\n\n/* harmony default export */ var i18n_editionMap = (editionMap);\n\nfunction getEdition(countryCode) {\n return editionMap[countryCode] || editionMap['US'];\n}\n\nfunction getFaqUrl(edition, faqUrlsFromConfig) {\n // Default to hardcoded faq urls if external app-configurations is not available via bootstrap selector\n if (!faqUrlsFromConfig || !faqUrlsFromConfig[edition]) {\n return faqMap[edition] || faqMap['us'];\n }\n\n return faqUrlsFromConfig[edition];\n}\n\nfunction getAdEdition(countryCode) {\n var _getEdition = getEdition(countryCode),\n pageShellRegion = _getEdition.pageShellRegion,\n edition = _getEdition.edition;\n\n if (edition === 'caribbean') {\n return 'mx';\n }\n return pageShellRegion;\n}\n// EXTERNAL MODULE: ./app/lib/format/queryString.js\nvar queryString = __webpack_require__(18);\n\n// EXTERNAL MODULE: ./app/common/selectors/bootstrapSelector.js\nvar bootstrapSelector = __webpack_require__(29);\n\n// EXTERNAL MODULE: ./app/common/selectors/routingSelector.js\nvar routingSelector = __webpack_require__(23);\n\n// EXTERNAL MODULE: ./app/common/selectors/whitelistSelector.js + 1 modules\nvar whitelistSelector = __webpack_require__(307);\n\n// EXTERNAL MODULE: ./config/index.js\nvar config = __webpack_require__(16);\nvar config_default = /*#__PURE__*/__webpack_require__.n(config);\n\n// EXTERNAL MODULE: ./config/appNames.js\nvar appNames = __webpack_require__(308);\nvar appNames_default = /*#__PURE__*/__webpack_require__.n(appNames);\n\n// CONCATENATED MODULE: ./app/common/selectors/appSelector.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return adobePassEnvSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return apiEnvSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return configEnvSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return countrySelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return editionSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"s\", function() { return isDomesticSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"u\", function() { return isIntlSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return faqUrlSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return adEditionSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"A\", function() { return playbackMetaSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return dateFormatSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"I\", function() { return upcomingScheduleDateFormatSelector; });\n/* unused harmony export appNameSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return isESPNAppSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"K\", function() { return webviewSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return hasPageShellSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return enableSearchSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return oneIdEnvSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H\", function() { return ssrSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"D\", function() { return roadblockSelector; });\n/* unused harmony export unsupportedErrorSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"C\", function() { return playerTechSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"q\", function() { return intlSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return contentIdInPlayerUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return hideNavSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return intlAppSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return bypassTokenSelector; });\n/* unused harmony export isSyndicatedPlayerSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"z\", function() { return packageFilterSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"v\", function() { return isSecureSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"r\", function() { return isAdDisabled; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"E\", function() { return showDMVPDUpsellSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"w\", function() { return locationSelector; });\n/* unused harmony export isLegacyAppSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return apiVersionSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"J\", function() { return upsellUrlSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return newRelicTrackingSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G\", function() { return showOneIdLoginSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"F\", function() { return showHelpModuleSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"B\", function() { return playerOptionsSelector; });\n\n\n\n\n\n\n\n\n\n\n\nvar appSelector = function appSelector(_ref) {\n var _ref$app = _ref.app,\n app = _ref$app === undefined ? {} : _ref$app;\n return app;\n};\n\n/* harmony default export */ var selectors_appSelector = __webpack_exports__[\"j\"] = (Object(lib[\"createSelector\"])(appSelector, function (app) {\n return app;\n}));\n\nvar adobePassEnvSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref2) {\n var adobePassEnv = _ref2.adobePassEnv;\n return adobePassEnv;\n});\n\nvar apiEnvSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref3) {\n var apiEnv = _ref3.apiEnv;\n return apiEnv;\n});\n\nvar configEnvSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref4) {\n var configEnv = _ref4.configEnv;\n return configEnv;\n});\n\nvar countrySelector = Object(lib[\"createSelector\"])(appSelector, function (_ref5) {\n var country = _ref5.country;\n return country;\n});\n\nvar editionSelector = Object(lib[\"createSelector\"])(countrySelector, function (country) {\n return getEdition(country);\n});\n\nvar isDomesticSelector = Object(lib[\"createSelector\"])(countrySelector, function (country) {\n return country === 'US';\n});\n\nvar isIntlSelector = Object(lib[\"createSelector\"])(isDomesticSelector, function (isDomestic) {\n return !isDomestic;\n});\n\nvar faqUrlSelector = Object(lib[\"createSelector\"])(editionSelector, bootstrapSelector[\"a\" /* default */], function (_ref6, _ref7) {\n var edition = _ref6.edition;\n var faqUrls = _ref7.faqUrls;\n return getFaqUrl(edition, faqUrls);\n});\n\nvar adEditionSelector = Object(lib[\"createSelector\"])(countrySelector, function (country) {\n return getAdEdition(country);\n});\n\nvar playbackMetaSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref8) {\n var playbackMeta = _ref8.playbackMeta;\n return playbackMeta;\n});\n\n// Use format from config if available, otherwise choose based on domestic/intl\nvar dateFormatSelector = Object(lib[\"createSelector\"])(countrySelector, isIntlSelector, function (country, isIntl) {\n return getEdition(country).dateFormat || isIntl && 'dateTime3' || 'dateTime2';\n});\n\n// For isIntl, format the date as `Weekday, number de month`; default to `dddd, MMMM Do`\nvar upcomingScheduleDateFormatSelector = Object(lib[\"createSelector\"])(isIntlSelector, function (isIntl) {\n return isIntl && 'date15' || 'date10';\n});\n\nvar appNameSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref9) {\n var appName = _ref9.appName;\n return appName;\n});\n\nvar isESPNAppSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref10) {\n var appName = _ref10.appName;\n return appName === appNames_default.a.ESPNAPP;\n});\n\nvar webviewSelector = Object(lib[\"createSelector\"])(appSelector, isESPNAppSelector, function (_ref11, isESPNApp) {\n var webview = _ref11.webview;\n return webview || isESPNApp;\n});\n\nvar hasPageShellSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref12) {\n var renderTemplateType = _ref12.renderTemplateType;\n return renderTemplateType === enums[\"C\" /* RenderTemplateTypes */].PAGE_SHELL;\n});\n\n// Enable Search if query param search=true OR if set to true in config AND is domestic edition\nvar enableSearchSelector = Object(lib[\"createSelector\"])(appSelector, isDomesticSelector, function (_ref13, isDomestic) {\n var appName = _ref13.appName,\n enableSearch = _ref13.enableSearch;\n return enableSearch || config_default.a.enableSearch && isDomestic && appName !== appNames_default.a.ESPNAPP;\n});\n\nvar oneIdEnvSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref14) {\n var _ref14$location$query = _ref14.location.query,\n query = _ref14$location$query === undefined ? {} : _ref14$location$query;\n return query[enums[\"t\" /* Flags */].ONEID_ENV] || enums[\"x\" /* OneIdEnv */].PROD;\n});\n\n// FIXME: feedback page fails to populate intl providers on the server, fetching it client side\n// Turn off SSR on Sched page to get localized date/times\nvar ssrSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref15) {\n var appName = _ref15.appName,\n _ref15$location = _ref15.location;\n _ref15$location = _ref15$location === undefined ? {} : _ref15$location;\n var _ref15$location$query = _ref15$location.query,\n query = _ref15$location$query === undefined ? {} : _ref15$location$query,\n _ref15$location$path = _ref15$location.path,\n path = _ref15$location$path === undefined ? '' : _ref15$location$path;\n return query[enums[\"t\" /* Flags */].SSR] !== false && (appName !== appNames_default.a.ESPNAPP && path.indexOf('schedule') === -1 || path.indexOf('choose-provider') !== -1);\n});\n\nvar roadblockSelector = Object(lib[\"createSelector\"])(appSelector, isIntlSelector, whitelistSelector[\"a\" /* default */], webviewSelector, function (_ref16, isIntl, inWhitelist, isWebview) {\n var _ref16$isMobile = _ref16.isMobile,\n isMobile = _ref16$isMobile === undefined ? false : _ref16$isMobile,\n options = _ref16.options,\n _ref16$location = _ref16.location;\n _ref16$location = _ref16$location === undefined ? {} : _ref16$location;\n var _ref16$location$query = _ref16$location.query,\n query = _ref16$location$query === undefined ? {} : _ref16$location$query;\n\n // don't roadblock some lucky people\n if (inWhitelist || isWebview || isIntl) {\n return false;\n }\n\n if (query && query[enums[\"t\" /* Flags */].ROADBLOCK] !== undefined) {\n return query[enums[\"t\" /* Flags */].ROADBLOCK];\n }\n\n if (options && options[enums[\"t\" /* Flags */].ROADBLOCK] !== undefined) {\n return options[enums[\"t\" /* Flags */].ROADBLOCK];\n }\n\n return isMobile;\n});\n\nvar unsupportedErrorSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref17) {\n var appName = _ref17.appName,\n _ref17$location = _ref17.location;\n _ref17$location = _ref17$location === undefined ? {} : _ref17$location;\n var _ref17$location$query = _ref17$location.query,\n query = _ref17$location$query === undefined ? {} : _ref17$location$query,\n _ref17$location$path = _ref17$location.path,\n path = _ref17$location$path === undefined ? '' : _ref17$location$path;\n\n if (query && query[enums[\"t\" /* Flags */].UNSUPPORTED_ERROR] !== undefined && appName !== appNames_default.a.ESPNAPP && path.indexOf('unsupported') === -1) {\n return query[enums[\"t\" /* Flags */].UNSUPPORTED_ERROR];\n }\n\n return false;\n});\n\nvar playerTechSelector = Object(lib[\"createSelector\"])(appSelector, isIntlSelector, whitelistSelector[\"a\" /* default */], function (_ref18, isIntl, inWhitelist) {\n var options = _ref18.options,\n _ref18$location = _ref18.location;\n _ref18$location = _ref18$location === undefined ? {} : _ref18$location;\n var _ref18$location$query = _ref18$location.query,\n query = _ref18$location$query === undefined ? {} : _ref18$location$query;\n\n // always let some lucky people get brightcove player\n if (inWhitelist || isIntl) {\n return 'brightcove';\n }\n\n // Supports assigning the playertech via query param `playertech=native || playertech=brightcove`\n if (query && query[enums[\"t\" /* Flags */].PLAYER_TECH] !== undefined) {\n return query[enums[\"t\" /* Flags */].PLAYER_TECH];\n }\n\n if (options && options[enums[\"t\" /* Flags */].PLAYER_TECH] !== undefined) {\n return options[enums[\"t\" /* Flags */].PLAYER_TECH];\n }\n\n return 'brightcove';\n});\n\nvar intlSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref19) {\n var lang = _ref19.lang,\n messages = _ref19.messages;\n return { lang: lang, messages: messages };\n});\n\nvar contentIdInPlayerUrl = Object(lib[\"createSelector\"])(routingSelector[\"a\" /* default */], function (_ref20) {\n var locationBeforeTransitions = _ref20.locationBeforeTransitions;\n\n var id = null;\n\n var _ref21 = locationBeforeTransitions || {},\n _ref21$pathname = _ref21.pathname,\n pathname = _ref21$pathname === undefined ? '' : _ref21$pathname,\n _ref21$query = _ref21.query,\n query = _ref21$query === undefined ? {} : _ref21$query;\n\n if (pathname === '/' || pathname === '/player') {\n id = query.id || query.eventId;\n if (!id && pathname === '/player') {\n return true; // Return true to indicate on player page w/o ID\n }\n }\n return id;\n});\n\nvar hideNavSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref22) {\n var _ref22$location = _ref22.location;\n _ref22$location = _ref22$location === undefined ? {} : _ref22$location;\n var _ref22$location$query = _ref22$location.query,\n query = _ref22$location$query === undefined ? {} : _ref22$location$query;\n return query && query[enums[\"t\" /* Flags */].HIDENAV] || false;\n});\n\nvar intlAppSelector = Object(lib[\"createSelector\"])(hideNavSelector, isIntlSelector, function (hideNav, isIntl) {\n return hideNav && isIntl;\n});\n\nvar bypassTokenSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref23) {\n var _ref23$location = _ref23.location;\n _ref23$location = _ref23$location === undefined ? {} : _ref23$location;\n var _ref23$location$query = _ref23$location.query,\n query = _ref23$location$query === undefined ? {} : _ref23$location$query;\n return query && query[enums[\"t\" /* Flags */].BYPASS_TOKEN];\n});\n\nvar isSyndicatedPlayerSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref24) {\n var _ref24$location = _ref24.location;\n _ref24$location = _ref24$location === undefined ? {} : _ref24$location;\n var _ref24$location$path = _ref24$location.path,\n path = _ref24$location$path === undefined ? '' : _ref24$location$path;\n return path.indexOf('/syndicated/player') > -1;\n});\n\nvar packageFilterSelector = Object(lib[\"createSelector\"])(isSyndicatedPlayerSelector, function (isSyndicatedPlayer) {\n return !isSyndicatedPlayer;\n});\n\nvar isSecureSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref25) {\n var _ref25$location = _ref25.location;\n _ref25$location = _ref25$location === undefined ? {} : _ref25$location;\n var protocol = _ref25$location.protocol,\n _ref25$location$path = _ref25$location.path,\n path = _ref25$location$path === undefined ? '' : _ref25$location$path;\n return protocol === 'https' || path.indexOf('/activate') !== -1;\n});\n\nvar isAdDisabled = webviewSelector;\n\nvar showDMVPDUpsellSelector = Object(lib[\"createSelector\"])(isDomesticSelector, function (isDomestic) {\n return isDomestic;\n});\n\n// returns the equivalent of `window.location` key/value pairs plus `query` which works universally\nvar locationSelector = Object(lib[\"createSelector\"])(appSelector, routingSelector[\"a\" /* default */], function (_ref26, _ref27) {\n var _ref26$location = _ref26.location;\n _ref26$location = _ref26$location === undefined ? {} : _ref26$location;\n var baseUrl = _ref26$location.baseUrl,\n host = _ref26$location.host,\n path = _ref26$location.path,\n protocolArg = _ref26$location.protocol,\n _ref26$location$query = _ref26$location.query,\n query = _ref26$location$query === undefined ? {} : _ref26$location$query;\n var hash = _ref27.locationBeforeTransitions.hash;\n\n var tmp = host.split(':');\n var hostname = tmp[0];\n var port = tmp[1];\n var protocol = protocolArg + ':';\n var origin = protocol + '//' + host;\n var pathname = '' + baseUrl + path;\n var search = Object(queryString[\"a\" /* default */])(query, true);\n var href = '' + origin + pathname + search + hash;\n return {\n host: host,\n hostname: hostname,\n port: port,\n protocol: protocol,\n origin: origin,\n pathname: pathname,\n search: search,\n href: href,\n hash: hash,\n query: query\n };\n});\n\nvar isLegacyAppSelector = Object(lib[\"createSelector\"])(isESPNAppSelector, routingSelector[\"a\" /* default */], function (isESPNApp, _ref28) {\n var _ref28$locationBefore = _ref28.locationBeforeTransitions.query;\n _ref28$locationBefore = _ref28$locationBefore === undefined ? {} : _ref28$locationBefore;\n var version = _ref28$locationBefore.version,\n appversion = _ref28$locationBefore.appversion;\n\n var ver = version || appversion; // `version` is for Android, `appversion` is for iOS\n return isESPNApp && ver && ver.indexOf('5') === 0;\n});\n\nvar apiVersionSelector = Object(lib[\"createSelector\"])(isLegacyAppSelector, function (isLegacyApp) {\n return isLegacyApp ? 'v1' : 'v3';\n});\n\nvar upsellUrlSelector = Object(lib[\"createSelector\"])(isESPNAppSelector, bootstrapSelector[\"a\" /* default */], editionSelector, function () {\n return 'https://promo.espn.com/espn/contests/instantaccess/';\n});\n\nvar newRelicTrackingSelector = Object(lib[\"createSelector\"])(bootstrapSelector[\"a\" /* default */], function (_ref29) {\n var _ref29$newrelic = _ref29.newrelic;\n _ref29$newrelic = _ref29$newrelic === undefined ? {} : _ref29$newrelic;\n var trackingOn = _ref29$newrelic.trackingOn;\n return trackingOn || false;\n});\n\nvar showOneIdLoginSelector = Object(lib[\"createSelector\"])(appSelector, function (_ref30) {\n var _ref30$location = _ref30.location;\n _ref30$location = _ref30$location === undefined ? {} : _ref30$location;\n var _ref30$location$query = _ref30$location.query;\n _ref30$location$query = _ref30$location$query === undefined ? {} : _ref30$location$query;\n var _ref30$location$query2 = _ref30$location$query.login,\n login = _ref30$location$query2 === undefined ? false : _ref30$location$query2;\n return login;\n});\n\nvar showHelpModuleSelector = Object(lib[\"createSelector\"])(bootstrapSelector[\"a\" /* default */], function (_ref31) {\n var _ref31$activate = _ref31.activate;\n _ref31$activate = _ref31$activate === undefined ? {} : _ref31$activate;\n var _ref31$activate$helpM = _ref31$activate.helpModuleOn,\n helpModuleOn = _ref31$activate$helpM === undefined ? true : _ref31$activate$helpM;\n return helpModuleOn;\n});\n\nvar playerOptionsSelector = Object(lib[\"createSelector\"])(bootstrapSelector[\"a\" /* default */], function (_ref32) {\n var _ref32$player = _ref32.player;\n _ref32$player = _ref32$player === undefined ? {} : _ref32$player;\n var _ref32$player$options = _ref32$player.options,\n options = _ref32$player$options === undefined ? {} : _ref32$player$options;\n return options;\n});\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(177);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n\n// CONCATENATED MODULE: ./node_modules/react-redux/es/utils/PropTypes.js\n\nvar subscriptionShape = prop_types_default.a.shape({\n trySubscribe: prop_types_default.a.func.isRequired,\n tryUnsubscribe: prop_types_default.a.func.isRequired,\n notifyNestedSubs: prop_types_default.a.func.isRequired,\n isSubscribed: prop_types_default.a.func.isRequired\n});\nvar storeShape = prop_types_default.a.shape({\n subscribe: prop_types_default.a.func.isRequired,\n dispatch: prop_types_default.a.func.isRequired,\n getState: prop_types_default.a.func.isRequired\n});\n// EXTERNAL MODULE: ./node_modules/react-redux/es/utils/warning.js\nvar warning = __webpack_require__(178);\n\n// CONCATENATED MODULE: ./node_modules/react-redux/es/components/Provider.js\n\n\n\n\n\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n\n didWarnAboutReceivingStore = true;\n Object(warning[\"a\" /* default */])(' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nfunction createProvider(storeKey) {\n var _Provider$childContex;\n\n if (storeKey === void 0) {\n storeKey = 'store';\n }\n\n var subscriptionKey = storeKey + \"Subscription\";\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this[storeKey] = props.store;\n return _this;\n }\n\n _proto.render = function render() {\n return react[\"Children\"].only(this.props.children);\n };\n\n return Provider;\n }(react[\"Component\"]);\n\n if (false) {\n Provider.prototype.componentWillReceiveProps = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: prop_types_default.a.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n return Provider;\n}\n/* harmony default export */ var components_Provider = (createProvider());\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n// EXTERNAL MODULE: ./node_modules/react-redux/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\nvar hoist_non_react_statics_cjs = __webpack_require__(476);\nvar hoist_non_react_statics_cjs_default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics_cjs);\n\n// EXTERNAL MODULE: ./node_modules/invariant/browser.js\nvar browser = __webpack_require__(25);\nvar browser_default = /*#__PURE__*/__webpack_require__.n(browser);\n\n// EXTERNAL MODULE: ./node_modules/react-is/index.js\nvar react_is = __webpack_require__(179);\nvar react_is_default = /*#__PURE__*/__webpack_require__.n(react_is);\n\n// CONCATENATED MODULE: ./node_modules/react-redux/es/utils/Subscription.js\n// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub, onStateChange) {\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\n\n// CONCATENATED MODULE: ./node_modules/react-redux/es/components/connectAdvanced.js\n\n\n\n\n\n\n\n\n\n\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n return selector;\n}\n\nfunction connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n var _contextTypes, _childContextTypes;\n\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n return function wrapWithConnect(WrappedComponent) {\n browser_default()(Object(react_is[\"isValidElementType\"])(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n /* eslint-disable react/no-deprecated */\n\n });\n\n var Connect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Connect, _Component);\n\n function Connect(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n browser_default()(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n _this.initSelector();\n\n _this.initSubscription();\n\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref3;\n\n // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n var subscription = this.propsMode ? null : this.subscription;\n return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n _proto.getWrappedInstance = function getWrappedInstance() {\n browser_default()(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n return this.wrappedInstance;\n };\n\n _proto.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n _proto.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n _proto.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n _proto.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n _proto.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n\n var withExtras = _extends({}, props);\n\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n _proto.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return Object(react[\"createElement\"])(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(react[\"Component\"]);\n /* eslint-enable react/no-deprecated */\n\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (false) {\n Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n var _this2 = this;\n\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n\n this.initSubscription();\n\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoist_non_react_statics_cjs_default()(Connect, WrappedComponent);\n };\n}\n// CONCATENATED MODULE: ./node_modules/react-redux/es/utils/shallowEqual.js\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n// EXTERNAL MODULE: ./node_modules/redux/es/index.js + 14 modules\nvar es = __webpack_require__(180);\n\n// CONCATENATED MODULE: ./node_modules/react-redux/es/utils/isPlainObject.js\n/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}\n// CONCATENATED MODULE: ./node_modules/react-redux/es/utils/verifyPlainObject.js\n\n\nfunction verifyPlainObject_verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n Object(warning[\"a\" /* default */])(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}\n// CONCATENATED MODULE: ./node_modules/react-redux/es/connect/wrapMapToProps.js\n\nfunction wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nfunction getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \n\nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (false) verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}\n// CONCATENATED MODULE: ./node_modules/react-redux/es/connect/mapDispatchToProps.js\n\n\nfunction whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nfunction whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nfunction whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return Object(es[\"b\" /* bindActionCreators */])(mapDispatchToProps, dispatch);\n }) : undefined;\n}\n/* harmony default export */ var connect_mapDispatchToProps = ([whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject]);\n// CONCATENATED MODULE: ./node_modules/react-redux/es/connect/mapStateToProps.js\n\nfunction whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nfunction whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\n/* harmony default export */ var connect_mapStateToProps = ([whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing]);\n// CONCATENATED MODULE: ./node_modules/react-redux/es/connect/mergeProps.js\n\n\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nfunction wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (false) verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nfunction whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nfunction whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\n/* harmony default export */ var connect_mergeProps = ([whenMergePropsIsFunction, whenMergePropsIsOmitted]);\n// CONCATENATED MODULE: ./node_modules/react-redux/es/connect/verifySubselectors.js\n\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n Object(warning[\"a\" /* default */])(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nfunction verifySubselectors_verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}\n// CONCATENATED MODULE: ./node_modules/react-redux/es/connect/selectorFactory.js\n\n\nfunction impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nfunction finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (false) {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}\n// CONCATENATED MODULE: ./node_modules/react-redux/es/connect/connect.js\n\n\n\n\n\n\n\n\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nfunction createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? connect_mapStateToProps : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? connect_mapDispatchToProps : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? connect_mergeProps : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? finalPropsSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\n/* harmony default export */ var connect_connect = (createConnect());\n// CONCATENATED MODULE: ./node_modules/react-redux/es/index.js\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"a\", function() { return components_Provider; });\n/* unused concated harmony import createProvider */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return createProvider; });\n/* unused concated harmony import connectAdvanced */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return connectAdvanced; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"b\", function() { return connect_connect; });\n\n\n\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(37);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (false) {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return GRAPHQL_API_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return SHIELD_API_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return MVPD_PREVIOUS_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return GEO_LOCATION_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"q\", function() { return SUB_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return SESSION_TOKEN_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"r\", function() { return USER_TRACKING_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return PREAUTH_LOCALSTORAGE_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return FORCE_REFRESH_TOKEN_RETRY_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return PRODUCT_API_CONFIGURATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return GRAPHQL_API_CONFIGURATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return LISTINGS_API_CONFIGURATION; });\n/* unused harmony export xDeviceMap */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"z\", function() { return unknownAuthStates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"s\", function() { return clientRenderRoutes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return NO_CATEGORY_ID_MAPPINGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"u\", function() { return loadingImageUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"v\", function() { return loadingImageUrlDark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return secureLoadingImageUrl; });\n/* unused harmony export secureLoadingImageUrlDark */\n/* unused harmony export promoImageUrl */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return securePromoImageUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"w\", function() { return notFoundUrl; });\n/* unused harmony export UPCOMING_MINUTES_WINDOW */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return BAM_PROXY_IFRAME_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return BAM_PROMO_IFRAME_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BAM_PAYWALL_IFRAME_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return dotComNielsenData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return NIELSEN_APPID_EPLUS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return NIELSEN_APPID_TVE; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__config__);\n\n\n\nvar secureCdnHost = __WEBPACK_IMPORTED_MODULE_1__config___default.a.secureCdnHost,\n cdnHost = __WEBPACK_IMPORTED_MODULE_1__config___default.a.cdnHost;\n\n\nvar GRAPHQL_API_KEY = '0dbf88e8-cc6d-41da-aa83-18b5c630bc5c';\nvar SHIELD_API_KEY = '5p8m6dw513q716wt2os04mec3';\n\nvar MVPD_PREVIOUS_KEY = '@watch:MVPD_PREVIOUS';\nvar GEO_LOCATION_KEY = '@watch:GEO_LOCATION';\nvar SUB_KEY = '@watch:SUB';\nvar SESSION_TOKEN_KEY = '@watch:SESSION_TOKEN';\nvar USER_TRACKING_KEY = '@watch:USER_TRACKING';\nvar PREAUTH_LOCALSTORAGE_KEY = '@watch:PREAUTHZ';\nvar FORCE_REFRESH_TOKEN_RETRY_KEY = '@watch:TOKEN_REFRESH_RETRY';\nvar PRODUCT_API_CONFIGURATION = {\n dev: {\n serviceUrl: '//watch.product.api.espnsb.com',\n internalServiceUrl: '//watch.product.api.espnsb.com'\n },\n qa: {\n serviceUrl: '//watch.product.api.espnqa.com',\n internalServiceUrl: '//watch.product.api.espnqa.com'\n },\n staging: {\n serviceUrl: '//watch.product.api.preview.espn.com',\n internalServiceUrl: '//watch.product.api.preview.espn.com'\n },\n prod: {\n serviceUrl: '//watch.product.api.espn.com',\n internalServiceUrl: '//watchproductapi.prod.internal.geo.espn.com'\n }\n};\n\nvar GRAPHQL_API_CONFIGURATION = {\n dev: {\n serviceUrl: '//watch.graph.api.espnsb.com'\n },\n qa: {\n serviceUrl: '//watch.graph.api.espnqa.com'\n },\n staging: {\n serviceUrl: '//watch.graph.api.preview.espn.com'\n },\n prod: {\n serviceUrl: '//watch.graph.api.espn.com'\n }\n};\n\nvar LISTINGS_API_CONFIGURATION = {\n dev: {\n serviceUrl: '//broadband.espnqa.com/espn360/apis/v1/watch',\n internalServiceUrl: '//broadband.espnqa.com/espn360/apis/v1/watch'\n },\n qa: {\n serviceUrl: '//api-app.espn.com/v1/watch',\n internalServiceUrl: '//api-app.espn.com/espn360/apis/v1/watch'\n },\n staging: {\n serviceUrl: '//api-app.espn.com/v1/watch',\n internalServiceUrl: '//api-app.espn.com/espn360/apis/v1/watch'\n },\n prod: {\n serviceUrl: '//api-app.espn.com/v1/watch',\n internalServiceUrl: '//api-app.espn.com/espn360/apis/v1/watch'\n }\n};\n\n// list of varnish x-deivce values\n// https://github.disney.com/SEESPN/seespn_varnish/blob/4257d10478d4556183497914c22157aa08761613/files/default/etc/varnish/vcl/device.vcl#L50\n// Map of X-Device values to supports device values of PageAPI\nvar xDeviceMap = {\n pc: __WEBPACK_IMPORTED_MODULE_0__enums__[\"q\" /* Device */].DESKTOP,\n 'pc-generic': __WEBPACK_IMPORTED_MODULE_0__enums__[\"q\" /* Device */].DESKTOP,\n handset: __WEBPACK_IMPORTED_MODULE_0__enums__[\"q\" /* Device */].HANDSET,\n mobile: __WEBPACK_IMPORTED_MODULE_0__enums__[\"q\" /* Device */].HANDSET,\n 'mobile-generic': __WEBPACK_IMPORTED_MODULE_0__enums__[\"q\" /* Device */].HANDSET,\n 'mobile-smartphone': __WEBPACK_IMPORTED_MODULE_0__enums__[\"q\" /* Device */].HANDSET,\n tablet: __WEBPACK_IMPORTED_MODULE_0__enums__[\"q\" /* Device */].TABLET\n};\n\nvar unknownAuthStates = ['unknown_' + __WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].ISP, 'unknown_' + __WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].MVPD, 'unknown_' + __WEBPACK_IMPORTED_MODULE_0__enums__[\"s\" /* Entitlements */].ESPN_PLUS, 'unknown_' + __WEBPACK_IMPORTED_MODULE_0__enums__[\"s\" /* Entitlements */].ESPN_PLUS_NHL, 'unknown_' + __WEBPACK_IMPORTED_MODULE_0__enums__[\"s\" /* Entitlements */].ESPN_PLUS_MLB];\n\nvar clientRenderRoutes = ['home', 'espnplus', 'product'];\n\nvar NO_CATEGORY_ID_MAPPINGS = {\n pt: 'outros',\n en: 'others',\n es: 'otros'\n};\n\nvar loadingImageUrl = cdnHost + '/watchespn/images/espn-watch-placeholder.png';\nvar loadingImageUrlDark = cdnHost + '/watchespn/images/espn-watch-placeholder-dark.png';\nvar secureLoadingImageUrl = secureCdnHost + '/watchespn/images/espn-watch-placeholder.png';\nvar secureLoadingImageUrlDark = secureCdnHost + '/watchespn/images/espn-watch-placeholder-dark.png';\nvar promoImageUrl = cdnHost + '/watchespn/images/watch-promotional.jpg';\nvar securePromoImageUrl = secureCdnHost + '/watchespn/images/watch-promotional.jpg';\nvar notFoundUrl = 'https://www.espn.com/404';\n\nvar UPCOMING_MINUTES_WINDOW = 30;\n\nvar BAM_PROXY_IFRAME_ID = 'bam-proxy-iframe';\nvar BAM_PROMO_IFRAME_ID = 'bam-promo-iframe';\nvar BAM_PAYWALL_IFRAME_ID = 'bam-paywall-iframe';\n\nvar dotComNielsenData = {\n espnuk: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n general: {\n ci: 'us-600140',\n assetid: 'N/A',\n segB: 'N/A',\n sfcode: 'dcr',\n segA: 'N/A',\n section: 'N/A',\n segC: 'N/A',\n apn: 'espnCOM'\n },\n espnza: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n espnau: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n espn: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n espnin: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n fantasy: {\n apid: 'P302B69D5-F1DD-4E7A-BF8D-3E60F0EB5E5A',\n vc: 'c07'\n },\n watchespn: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n espndeportes: {\n apid: 'P890E2723-EDBC-4CCE-96BA-F35EA3E50650',\n vc: 'c02'\n },\n espnfc: {\n apid: 'PE6995AAE-0C49-4372-B5E7-54C61BFE2AA5',\n vc: 'c03'\n },\n cricinfo: {\n apid: 'PED8CDAC2-F114-41BE-8B98-AFA06FAEA06E',\n vc: 'c04'\n }\n};\n\nvar NIELSEN_APPID_EPLUS = 'P3AB2D9A0-5877-41BF-A1AB-D0D590F79234';\nvar NIELSEN_APPID_TVE = 'P31187EE2-AC6E-46CB-BB54-D07591BED067';\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length <= 1 || arguments[1] === undefined ? defaultEqualityCheck : arguments[1];\n\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastArgs === null || lastArgs.length !== args.length || !args.every(function (value, index) {\n return equalityCheck(value, lastArgs[index]);\n })) {\n lastResult = func.apply(undefined, args);\n }\n lastArgs = args;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len2 = arguments.length, memoizeOptions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n memoizeOptions[_key2 - 1] = arguments[_key2];\n }\n\n return function () {\n for (var _len3 = arguments.length, funcs = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n funcs[_key3] = arguments[_key3];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n return resultFunc.apply(undefined, arguments);\n }].concat(memoizeOptions));\n\n var selector = function selector(state, props) {\n for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n var params = dependencies.map(function (dependency) {\n return dependency.apply(undefined, [state, props].concat(args));\n });\n return memoizedResultFunc.apply(undefined, _toConsumableArray(params));\n };\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length <= 1 || arguments[1] === undefined ? createSelector : arguments[1];\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len5 = arguments.length, values = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n values[_key5] = arguments[_key5];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export convertToSecureImage */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return authenticationEnabledSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return authenticationSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"r\", function() { return userAuthSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return adobePassSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return adobePassInfoSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return adobePassMetadataSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return adobePassInitializedSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return adobePassAuthenticatedSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return adobePassIsAuthorizedSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return checkAuthenticationCompleteSelector; });\n/* unused harmony export ipSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return ipInfoSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"s\", function() { return userLocationSelector; });\n/* unused harmony export bamSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return subscriptionsSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"q\", function() { return superBundleSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return bamSessionTokenSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return bamSubReadySelector; });\n/* unused harmony export geoLocationSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return userTrackingSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return preauthorizedResourcesSelector; });\n/* unused harmony export entitlementTokenSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"u\", function() { return zipcodeSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return authStatesSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return passOneIdTokenSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib_util_localStorage__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_util_canUseDOM__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__routingSelector__ = __webpack_require__(23);\n\n\n\n\n\n\n\n\n\n// TODO: move this to `lib` once it's used in other places\nfunction convertToSecureImage(provider) {\n if (!provider || !provider.images) {\n return provider;\n }\n return Object.keys(provider.images).reduce(function (acc, key) {\n var image = provider.images[key];\n if (image && image.href) {\n acc.images[key] = { href: image.href.replace('http://a.espncdn.com', 'https://secure.espncdn.com') };\n }\n return acc;\n }, provider);\n}\n\nvar authenticationEnabledSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_6__appSelector__[\"D\" /* roadblockSelector */], function (roadblock) {\n return !roadblock;\n});\n\n// generic auth selectors\nvar authenticationSelector = function authenticationSelector(_ref) {\n var _ref$authentication = _ref.authentication,\n authentication = _ref$authentication === undefined ? {} : _ref$authentication;\n return authentication;\n};\n\nvar userAuthSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(authenticationSelector, __WEBPACK_IMPORTED_MODULE_6__appSelector__[\"e\" /* bypassTokenSelector */], function (_ref2, bypassToken) {\n var _ref2$authTypes = _ref2.authTypes,\n authTypes = _ref2$authTypes === undefined ? [] : _ref2$authTypes;\n\n if (bypassToken) {\n return [__WEBPACK_IMPORTED_MODULE_2__enums__[\"e\" /* AuthTypes */].ISP, __WEBPACK_IMPORTED_MODULE_2__enums__[\"e\" /* AuthTypes */].MVPD];\n }\n\n return authTypes;\n});\n\n// adobe pass selectors\nvar adobePassSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(authenticationSelector, function (_ref3) {\n var _ref3$adobePass = _ref3.adobePass,\n adobePass = _ref3$adobePass === undefined ? {} : _ref3$adobePass;\n return adobePass;\n});\n\nvar adobePassInfoSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(adobePassSelector, function (_ref4) {\n var _ref4$info = _ref4.info,\n info = _ref4$info === undefined ? null : _ref4$info;\n return convertToSecureImage(info);\n});\n\nvar adobePassMetadataSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(adobePassSelector, function (_ref5) {\n var _ref5$metadata = _ref5.metadata,\n metadata = _ref5$metadata === undefined ? {} : _ref5$metadata;\n return metadata;\n});\n\nvar adobePassInitializedSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(adobePassSelector, function (_ref6) {\n var _ref6$initialization = _ref6.initialization;\n _ref6$initialization = _ref6$initialization === undefined ? {} : _ref6$initialization;\n var completeTime = _ref6$initialization.completeTime;\n return !!completeTime;\n});\n\nvar adobePassAuthenticatedSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(adobePassSelector, function (_ref7) {\n var isAuthenticated = _ref7.isAuthenticated;\n return !!isAuthenticated;\n});\n\nvar adobePassIsAuthorizedSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(adobePassSelector, function (_ref8) {\n var isAuthorized = _ref8.isAuthorized;\n return !!isAuthorized;\n});\n\nvar checkAuthenticationCompleteSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(adobePassSelector, function (_ref9) {\n var _ref9$checkAuthentica = _ref9.checkAuthentication;\n _ref9$checkAuthentica = _ref9$checkAuthentica === undefined ? {} : _ref9$checkAuthentica;\n var completeTime = _ref9$checkAuthentica.completeTime;\n return !!completeTime;\n});\n\n// ip selectors\nvar ipSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(authenticationSelector, function (_ref10) {\n var _ref10$ip = _ref10.ip,\n ip = _ref10$ip === undefined ? {} : _ref10$ip;\n return ip;\n});\n\nvar ipInfoSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(ipSelector, function (_ref11) {\n var _ref11$info = _ref11.info,\n info = _ref11$info === undefined ? null : _ref11$info;\n return convertToSecureImage(info);\n});\n\nvar userLocationSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(ipSelector, function (_ref12) {\n var _ref12$location = _ref12.location,\n location = _ref12$location === undefined ? {} : _ref12$location;\n return location;\n});\n\n// bam selectors\nvar bamSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(authenticationSelector, function (_ref13) {\n var _ref13$bam = _ref13.bam,\n bam = _ref13$bam === undefined ? {} : _ref13$bam;\n return bam;\n});\n\nvar subscriptionsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(bamSelector, function (_ref14) {\n var subscriptions = _ref14.subscriptions;\n return subscriptions;\n});\n\nvar superBundleSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(subscriptionsSelector, function (subscriptions) {\n if (subscriptions && subscriptions.length) {\n return subscriptions.filter(function (sub) {\n return sub.isActive;\n }).some(function (sub) {\n // first test for the existance of the\n // bundle property and use it's value\n if ('bundle' in sub) {\n return sub.bundle;\n }\n\n // fall-back check for categoryCode of superbundle in products\n return sub.products.some(function (_ref15) {\n var categoryCodes = _ref15.categoryCodes;\n return categoryCodes && Array.isArray(categoryCodes) && categoryCodes.map(function (item) {\n return item.toLowerCase();\n }).includes('superbundle');\n });\n });\n }\n return false;\n});\n\nvar bamSessionTokenSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(bamSelector, function (_ref16) {\n var _ref16$session = _ref16.session;\n _ref16$session = _ref16$session === undefined ? {} : _ref16$session;\n var _ref16$session$token = _ref16$session.token,\n token = _ref16$session$token === undefined ? null : _ref16$session$token;\n return token;\n});\n\nvar bamSubReadySelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(authenticationSelector, function (_ref17) {\n var _ref17$bamSubReady = _ref17.bamSubReady,\n bamSubReady = _ref17$bamSubReady === undefined ? false : _ref17$bamSubReady;\n return bamSubReady;\n});\n\nvar geoLocationSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(bamSelector, function (_ref18) {\n var _ref18$geo = _ref18.geo,\n geo = _ref18$geo === undefined ? {} : _ref18$geo;\n return geo;\n});\n\nvar userTrackingSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(bamSelector, function (_ref19) {\n var _ref19$userTracking = _ref19.userTracking,\n userTracking = _ref19$userTracking === undefined ? {} : _ref19$userTracking;\n return userTracking;\n});\n\nvar preauthorizedResourcesSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(adobePassSelector, function (_ref20) {\n var preauthorizedResources = _ref20.preauthorizedResources;\n return preauthorizedResources;\n});\n\nvar entitlementTokenSelector = function entitlementTokenSelector() {\n var entitlementToken = void 0;\n if (__WEBPACK_IMPORTED_MODULE_4__lib_util_canUseDOM__[\"a\" /* default */]) {\n try {\n entitlementToken = window.localStorage.getItem('entitlementToken');\n if (entitlementToken) {\n entitlementToken = JSON.parse(entitlementToken);\n } else {\n entitlementToken = undefined;\n }\n } catch (err) {\n console.error(err);\n }\n }\n return entitlementToken;\n};\n\nvar zipcodeSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(geoLocationSelector, userLocationSelector, function (_ref21, _ref22) {\n var zipCode = _ref21.zipCode;\n var zipcode = _ref22.zipcode;\n return zipCode || zipcode;\n});\n\nvar authStatesSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(userAuthSelector, entitlementTokenSelector, function (userAuth) {\n var entitlementToken = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var authStates = void 0;\n var prevMVPDState = Object(__WEBPACK_IMPORTED_MODULE_3__lib_util_localStorage__[\"a\" /* get */])(__WEBPACK_IMPORTED_MODULE_1__constants__[\"i\" /* MVPD_PREVIOUS_KEY */]);\n var currMVPDState = entitlementToken.mvpd;\n var ispState = userAuth.filter(function (auth) {\n return auth === __WEBPACK_IMPORTED_MODULE_2__enums__[\"e\" /* AuthTypes */].ISP;\n })[0];\n if (prevMVPDState) {\n authStates = [__WEBPACK_IMPORTED_MODULE_2__enums__[\"d\" /* AuthStates */].MVPD_PREVIOUS];\n }\n if (currMVPDState) {\n if (!authStates) {\n authStates = [];\n }\n authStates.push(__WEBPACK_IMPORTED_MODULE_2__enums__[\"d\" /* AuthStates */].MVPD);\n }\n if (ispState) {\n if (!authStates) {\n authStates = [];\n }\n authStates.push(__WEBPACK_IMPORTED_MODULE_2__enums__[\"d\" /* AuthStates */].ISP);\n }\n return authStates;\n});\n\nvar passOneIdTokenSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__bootstrapSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__routingSelector__[\"a\" /* default */], function (_ref23, _ref24) {\n var _ref23$bam = _ref23.bam;\n _ref23$bam = _ref23$bam === undefined ? {} : _ref23$bam;\n var _ref23$bam$passToken = _ref23$bam.passToken,\n passTokenArg = _ref23$bam$passToken === undefined ? true : _ref23$bam$passToken;\n var locationBeforeTransitions = _ref24.locationBeforeTransitions;\n\n var passToken = passTokenArg;\n\n var _ref25 = locationBeforeTransitions || {},\n _ref25$query = _ref25.query,\n query = _ref25$query === undefined ? {} : _ref25$query;\n\n if (query[__WEBPACK_IMPORTED_MODULE_2__enums__[\"t\" /* Flags */].PASS_ONEID_TOKEN]) {\n passToken = query[__WEBPACK_IMPORTED_MODULE_2__enums__[\"t\" /* Flags */].PASS_ONEID_TOKEN] === 'true';\n }\n return passToken;\n});\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, console, global, setImmediate) {/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2017 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.0\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(true)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n continue;\n }\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n};\n\nAsync.prototype._drainQueues = function () {\n this._drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n this._drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (false) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (false) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n async.invokeLater(this._notifyUnhandledRejection, this, undefined);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new CustomEvent(name.toLowerCase(), {\n detail: event,\n cancelable: true\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (false) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (false) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.0\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (false) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var l = 8;\n while (l--) new FakeConstructor();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\";\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n \"object\" !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? Object({\"NODE_ENV\":\"production\"})[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(48), __webpack_require__(2), __webpack_require__(24), __webpack_require__(385).setImmediate))\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isEmpty;\nfunction isEmpty() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!obj) {\n return true;\n }\n return Object.keys(obj).length === 0;\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return metaSelector; });\n/* unused harmony export pageEditionSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return brandingSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return isFinalSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return competitorSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return showPromoSelector; });\n/* unused harmony export appReadySelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return pagePathWithPageId; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_intersection__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_intersection___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_intersection__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_format_convertObjectToQueryString__ = __webpack_require__(279);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__authenticationSelectors__ = __webpack_require__(10);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EVENT_QUERY_KEYS = __WEBPACK_IMPORTED_MODULE_3__enums__[\"b\" /* Api */].Page.EVENT_QUERY_KEYS;\n\nvar pageSelector = function pageSelector(_ref) {\n var _ref$page = _ref.page,\n page = _ref$page === undefined ? {} : _ref$page;\n return page;\n};\nvar intlSelector = function intlSelector(_, _ref2) {\n var messages = _ref2.messages,\n intl = _ref2.intl;\n return { messages: messages, intl: intl };\n};\n\n/* harmony default export */ __webpack_exports__[\"c\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(pageSelector, function (page) {\n return page;\n}));\n\nfunction meta(id, name, messages, formatMessage) {\n var contentType = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].VOD;\n var edition = arguments[5];\n\n var opts = { name: name };\n var pageId = messages['meta.title.' + id] ? id : 'home';\n var typeQualifier = id === 'player' ? '.' + contentType : '';\n var title = formatMessage(messages['meta.title.' + pageId], opts);\n var description = formatMessage(messages['meta.description.' + pageId + typeQualifier], opts);\n var keywords = formatMessage(messages['meta.keywords']);\n\n // Carib branding is `ESPN Play`, override the branding set in i18n file\n if (edition === 'caribbean') {\n title = title.replace(/WatchESPN/g, 'ESPN Play');\n description = description.replace(/WatchESPN/g, 'ESPN Play');\n keywords = keywords.replace(/WatchESPN/g, 'ESPN Play');\n }\n\n return {\n title: title,\n description: description,\n keywords: keywords\n };\n}\n\nvar metaSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_6__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_8__routingSelector__[\"a\" /* default */], pageSelector, __WEBPACK_IMPORTED_MODULE_6__appSelector__[\"k\" /* editionSelector */], intlSelector, __WEBPACK_IMPORTED_MODULE_6__appSelector__[\"q\" /* intlSelector */], function (_ref3, _ref4, _ref5, _ref6) {\n var _ref3$location = _ref3.location,\n location = _ref3$location === undefined ? {} : _ref3$location;\n var _ref4$locationBeforeT = _ref4.locationBeforeTransitions,\n locationBeforeTransitions = _ref4$locationBeforeT === undefined ? {} : _ref4$locationBeforeT;\n var _ref5$id = _ref5.id,\n id = _ref5$id === undefined ? 'home' : _ref5$id,\n pageName = _ref5.name,\n hero = _ref5.hero;\n var edition = _ref6.edition;\n\n var _ref8 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},\n messages = _ref8.messages,\n _ref8$intl = _ref8.intl;\n\n _ref8$intl = _ref8$intl === undefined ? {} : _ref8$intl;\n var formatMessage = _ref8$intl.formatMessage;\n var _ref7 = arguments[5];\n var lang = _ref7.lang;\n var host = location.host,\n protocol = location.protocol,\n path = location.path,\n baseUrl = location.baseUrl,\n origQuery = location.query;\n\n var _ref9 = locationBeforeTransitions || {},\n _ref9$basename = _ref9.basename,\n basename = _ref9$basename === undefined ? baseUrl : _ref9$basename,\n _ref9$pathname = _ref9.pathname,\n pathname = _ref9$pathname === undefined ? path : _ref9$pathname,\n _ref9$query = _ref9.query,\n query = _ref9$query === undefined ? origQuery : _ref9$query;\n\n // declare properties that can change depending on the path or if an event query is passed\n\n\n var canonicalUrl = protocol + '://' + host + basename + pathname;\n var sanatizedCanonicalUrl = canonicalUrl.slice(-1) === '/' ? canonicalUrl.slice(0, -1) : canonicalUrl;\n var langQueryParam = lang && lang !== '' ? 'lang=' + lang : '';\n var name = pageName;\n var contentType = void 0;\n var socialUrl = sanatizedCanonicalUrl;\n var socialDescription = void 0;\n var socialTitle = void 0;\n var socialImageUrl = __WEBPACK_IMPORTED_MODULE_2__constants__[\"y\" /* securePromoImageUrl */];\n var noIndex = false;\n var canonicalQuery = '';\n // Only use the content's meta information if linked specifically to an event\n var queryKeys = Object.keys(query);\n var matchedEventQueryKeys = __WEBPACK_IMPORTED_MODULE_1_lodash_intersection___default()(queryKeys, EVENT_QUERY_KEYS);\n\n if (matchedEventQueryKeys.length > 0 && hero) {\n var description = hero.description,\n imageHref = hero.imageHref,\n heroName = hero.name,\n status = hero.status,\n type = hero.type;\n\n contentType = type;\n\n // only use event query in the meta urls\n var matchedEventQueryValue = Object(__WEBPACK_IMPORTED_MODULE_4__lib_format_convertObjectToQueryString__[\"a\" /* default */])(query, matchedEventQueryKeys);\n canonicalQuery = matchedEventQueryValue && matchedEventQueryValue !== '' && '?' + matchedEventQueryValue;\n\n // Handle adding the lang query param properly when other params are in place\n if (canonicalQuery !== '' && langQueryParam !== '') {\n canonicalQuery = canonicalQuery + '&' + langQueryParam;\n } else if (canonicalQuery === '' && langQueryParam !== '') {\n canonicalQuery = '?' + langQueryParam;\n }\n\n // social meta tags should always reflect the content specified in the url\n socialTitle = heroName;\n socialImageUrl = imageHref;\n socialDescription = description;\n socialUrl = '' + sanatizedCanonicalUrl + canonicalQuery;\n\n // canonical url for the player page should include the event query\n if (pathname === '/player') {\n name = heroName;\n canonicalUrl = '' + sanatizedCanonicalUrl + canonicalQuery;\n }\n\n // TODO: serve `robots.txt` from Varnish for `www.espnsb.com`\n if (status === 'over' || host.indexOf('espnsb.com') > -1) {\n noIndex = true;\n }\n }\n\n var metaProps = meta(id, name, messages, formatMessage, contentType, edition);\n\n return _extends({}, metaProps, {\n canonicalUrl: canonicalUrl,\n socialImageUrl: socialImageUrl,\n socialDescription: socialDescription || metaProps.description,\n socialTitle: socialTitle || metaProps.title,\n socialUrl: socialUrl,\n noIndex: noIndex\n });\n});\n\nvar pageEditionSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(pageSelector, function (_ref10) {\n var _ref10$edition = _ref10.edition,\n edition = _ref10$edition === undefined ? {} : _ref10$edition;\n return edition;\n});\n\nvar brandingSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__bootstrapSelector__[\"a\" /* default */], pageSelector, __WEBPACK_IMPORTED_MODULE_6__appSelector__[\"k\" /* editionSelector */], pageEditionSelector, function (_ref11, _ref12, _ref13, _ref14) {\n var _ref11$branding = _ref11.branding;\n _ref11$branding = _ref11$branding === undefined ? {} : _ref11$branding;\n var _ref11$branding$editi = _ref11$branding.editions,\n editions = _ref11$branding$editi === undefined ? {} : _ref11$branding$editi;\n var id = _ref12.id;\n var edition = _ref13.edition;\n var _ref14$branding = _ref14.branding,\n branding = _ref14$branding === undefined ? {} : _ref14$branding;\n\n if (editions[edition]) {\n // override from bootstrap\n var _editions$edition = editions[edition],\n name = _editions$edition.name,\n logoUrl = _editions$edition.logoUrl,\n lightLogoUrl = _editions$edition.lightLogoUrl;\n\n branding.name = name;\n branding.logoUrl = logoUrl;\n branding.lightLogoUrl = lightLogoUrl;\n }\n\n // black background pages\n if (id === 'player' || id === 'syndicated-player') {\n branding.logoUrl = branding.lightLogoUrl;\n }\n\n return branding;\n});\n\nvar isFinalSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_6__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_6__appSelector__[\"s\" /* isDomesticSelector */], function (_ref15, isDomestic) {\n var packageId = _ref15.packageId;\n return isDomestic || typeof packageId !== 'undefined';\n});\n\nvar competitorSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(pageSelector, function (page) {\n return page.competitors;\n});\n\n// Caution: do not use this alone, combine with page name check\nvar showPromoSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_6__appSelector__[\"s\" /* isDomesticSelector */], __WEBPACK_IMPORTED_MODULE_7__oneIdSelector__[\"f\" /* oneIdLoggedInSelector */], __WEBPACK_IMPORTED_MODULE_9__authenticationSelectors__[\"r\" /* userAuthSelector */], __WEBPACK_IMPORTED_MODULE_9__authenticationSelectors__[\"k\" /* bamSubReadySelector */], function (isDomestic, isLoggedIn, entitlements, bamSubReady) {\n if (false) {\n return false;\n }\n return isDomestic && (!isLoggedIn || isLoggedIn && bamSubReady && entitlements && entitlements.indexOf(__WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_PLUS) === -1 && entitlements.indexOf(__WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_TDA) === -1);\n});\n\n// FIXME: couldn't define this in `appSelector` because of the `reselect` issue\n// https://github.com/reactjs/reselect/issues/169\nvar appReadySelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_6__appSelector__[\"j\" /* default */],\n// pageSelector,\n// ({ rendered }, { id, scored }) => (rendered && (id === 'schedule' || scored))\nfunction (_ref16) {\n var rendered = _ref16.rendered;\n return rendered;\n});\n\nvar pagePathWithPageId = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(pageSelector, __WEBPACK_IMPORTED_MODULE_6__appSelector__[\"j\" /* default */], function (_ref17, _ref18) {\n var _ref17$id = _ref17.id,\n id = _ref17$id === undefined ? 'index' : _ref17$id;\n var _ref18$location = _ref18.location;\n _ref18$location = _ref18$location === undefined ? {} : _ref18$location;\n var _ref18$location$baseU = _ref18$location.baseUrl,\n baseUrl = _ref18$location$baseU === undefined ? '/watch' : _ref18$location$baseU;\n\n var pageId = id === 'home' ? 'index' : id;\n\n return baseUrl + '/' + pageId;\n});\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(__dirname) {var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar path = __webpack_require__(191);\nvar envConfig = __webpack_require__(529);\n\nvar config = _extends({}, {\n dirs: {\n root: path.resolve(__dirname + '/../'),\n app: '/app'\n }\n}, envConfig);\n\n// keep both for now\nmodule.exports = exports['default'] = config;\n/* WEBPACK VAR INJECTION */}.call(exports, \"/\"))\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CLEAR_PAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return REQUEST_PAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return RECEIVE_PAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return INVALIDATE_PAGE; });\n/* unused harmony export LAUNCH_PLAYER */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return PAGE_INFO_SET; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return COMPLETE_PAGE_LOAD; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return REFRESH_BUCKETS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return REPLACE_BUCKETS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return REPLACE_HERO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return SET_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return START_GET_COMPETITORS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return COMPLETE_GET_COMPETITORS; });\n/* harmony export (immutable) */ __webpack_exports__[\"m\"] = clearPage;\n/* harmony export (immutable) */ __webpack_exports__[\"r\"] = createRequestPageAction;\n/* harmony export (immutable) */ __webpack_exports__[\"q\"] = createReceivePageAction;\n/* unused harmony export startGetCompetitors */\n/* unused harmony export completeGetCompetitors */\n/* harmony export (immutable) */ __webpack_exports__[\"s\"] = fetchAllCompetitors;\n/* harmony export (immutable) */ __webpack_exports__[\"v\"] = refreshBuckets;\n/* harmony export (immutable) */ __webpack_exports__[\"n\"] = completePageLoad;\n/* unused harmony export indexOfBucketInBucketList */\n/* unused harmony export fetchPageData */\n/* unused harmony export fetchEventData */\n/* unused harmony export fetchVideoData */\n/* harmony export (immutable) */ __webpack_exports__[\"t\"] = fetchEventOrVideoByQuery;\n/* unused harmony export fetchBuckets */\n/* unused harmony export handlePickerStreams */\n/* harmony export (immutable) */ __webpack_exports__[\"o\"] = createFetchPageAction;\n/* unused harmony export oneIdAndBam */\n/* harmony export (immutable) */ __webpack_exports__[\"p\"] = createPageShellInitAction;\n/* unused harmony export createLaunchPlayerAction */\n/* harmony export (immutable) */ __webpack_exports__[\"y\"] = setPageInfo;\n/* harmony export (immutable) */ __webpack_exports__[\"w\"] = replaceHero;\n/* harmony export (immutable) */ __webpack_exports__[\"z\"] = setPageState;\n/* harmony export (immutable) */ __webpack_exports__[\"u\"] = getAiring;\n/* unused harmony export getAirings */\n/* harmony export (immutable) */ __webpack_exports__[\"A\"] = singleEventPage;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_intersection__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_intersection___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_intersection__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__actions_listingsActions__ = __webpack_require__(206);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__actions_appActions__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ads_actions__ = __webpack_require__(92);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__actions_oneIdActions__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__lib_api__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__lib_util_localStorage__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__selectors_bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__selectors_oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__selectors_routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__actions_scoringActions__ = __webpack_require__(212);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__actions_apiAction__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__scheduleModule_actions__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__actions_fanActions__ = __webpack_require__(216);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__selectors_pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__lib_auth_hasTDA__ = __webpack_require__(215);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__selectors_authenticationSelectors__ = __webpack_require__(10);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _Api$Page = __WEBPACK_IMPORTED_MODULE_3__enums__[\"b\" /* Api */].Page,\n EVENT_QUERY_KEYS = _Api$Page.EVENT_QUERY_KEYS,\n PCC_NETWORK_NAMES = _Api$Page.PCC_NETWORK_NAMES;\n\n\nvar CLEAR_PAGE = 'CLEAR_PAGE';\nvar REQUEST_PAGE = 'REQUEST_PAGE';\nvar RECEIVE_PAGE = 'RECEIVE_PAGE';\nvar INVALIDATE_PAGE = 'INVALIDATE_PAGE';\nvar LAUNCH_PLAYER = 'LAUNCH_PLAYER';\nvar PAGE_INFO_SET = 'PAGE_INFO_SET';\nvar COMPLETE_PAGE_LOAD = 'COMPLETE_PAGE_LOAD';\nvar REFRESH_BUCKETS = 'REFRESH_BUCKETS';\nvar REPLACE_BUCKETS = 'REPLACE_BUCKETS';\nvar REPLACE_HERO = 'REPLACE_HERO';\nvar SET_STATE = 'SET_STATE';\nvar START_GET_COMPETITORS = 'START_GET_COMPETITORS';\nvar COMPLETE_GET_COMPETITORS = 'COMPLETE_GET_COMPETITORS';\n\nfunction clearPage() {\n return {\n type: CLEAR_PAGE\n };\n}\n\nfunction createRequestPageAction(id) {\n return {\n type: REQUEST_PAGE,\n id: id,\n requestedTime: Date.now()\n };\n}\n\nfunction createReceivePageAction(_ref) {\n var id = _ref.id,\n name = _ref.name,\n description = _ref.description,\n header = _ref.header,\n image = _ref.image,\n icon = _ref.icon,\n edition = _ref.edition,\n buckets = _ref.buckets,\n tracking = _ref.tracking,\n heroContent = _ref.heroContent,\n carouselBucket = _ref.carouselBucket,\n lang = _ref.lang,\n error = _ref.error,\n isFinal = _ref.isFinal,\n noHero = _ref.noHero;\n\n return {\n type: RECEIVE_PAGE,\n id: id,\n name: name,\n description: description,\n header: header,\n image: image,\n icon: icon,\n edition: edition,\n buckets: buckets,\n tracking: tracking,\n heroContent: heroContent,\n carouselBucket: carouselBucket,\n lang: lang,\n error: error,\n isFinal: isFinal,\n noHero: noHero,\n receivedTime: Date.now()\n };\n}\n\nfunction startGetCompetitors() {\n return {\n type: START_GET_COMPETITORS,\n startTime: Date.now()\n };\n}\n\nfunction completeGetCompetitors(competitors) {\n return {\n type: COMPLETE_GET_COMPETITORS,\n completeTime: Date.now(),\n competitors: competitors\n };\n}\n\nfunction fetchAllCompetitors() {\n return function (dispatch, getState) {\n var state = getState();\n var apiEnv = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_appSelector__[\"c\" /* apiEnvSelector */])(state);\n dispatch(startGetCompetitors());\n return __WEBPACK_IMPORTED_MODULE_8__lib_api__[\"e\" /* SearchAPI */].getAllCompetitors(apiEnv).then(function (competitors) {\n dispatch(completeGetCompetitors(competitors));\n return competitors;\n });\n };\n}\n\nfunction refreshBuckets(pageName) {\n var _this = this;\n\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$params = _ref2.params,\n params = _ref2$params === undefined ? {} : _ref2$params,\n _ref2$forceRefresh = _ref2.forceRefresh,\n forceRefresh = _ref2$forceRefresh === undefined ? false : _ref2$forceRefresh;\n\n return function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch, getState) {\n var state, _pageSelector, currentPageId, refreshedBuckets, id, seasonId, pathParams, newPageName, _ref4, _ref4$page, buckets, data, _data$page$buckets, _buckets, _pageSelector2, pageId;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n state = getState();\n _pageSelector = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_pageSelector__[\"c\" /* default */])(getState()), currentPageId = _pageSelector.id;\n refreshedBuckets = void 0;\n _context.prev = 3;\n\n if (!params.id) {\n _context.next = 19;\n break;\n }\n\n id = params.id, seasonId = params.seasonId;\n pathParams = id;\n\n if (seasonId) {\n pathParams += '/seasons/' + seasonId;\n }\n\n /**\n * pageName override calling collection and show page in the pageApi returns 404\n */\n newPageName = pageName;\n\n if (pageName === 'collection') {\n newPageName = 'bucket';\n } else if (pageName === 'show') {\n newPageName = 'series';\n }\n _context.next = 12;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"h\" /* getPageWithPathId */])({\n name: newPageName,\n pathParams: pathParams\n }));\n\n case 12:\n _ref4 = _context.sent;\n _ref4$page = _ref4.page;\n _ref4$page = _ref4$page === undefined ? {} : _ref4$page;\n buckets = _ref4$page.buckets;\n\n refreshedBuckets = buckets;\n _context.next = 23;\n break;\n\n case 19:\n _context.next = 21;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"f\" /* getPage */])({ name: pageName }));\n\n case 21:\n data = _context.sent;\n\n if (data && data.page) {\n _data$page$buckets = data.page.buckets, _buckets = _data$page$buckets === undefined ? {} : _data$page$buckets;\n\n refreshedBuckets = _buckets;\n }\n\n case 23:\n _pageSelector2 = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_pageSelector__[\"c\" /* default */])(state), pageId = _pageSelector2.id;\n\n if (!(pageId !== currentPageId)) {\n _context.next = 26;\n break;\n }\n\n return _context.abrupt('return');\n\n case 26:\n\n // Replace all the buckets\n if (forceRefresh) {\n dispatch({\n type: REPLACE_BUCKETS,\n buckets: refreshedBuckets\n });\n }\n\n dispatch({\n type: REFRESH_BUCKETS,\n buckets: refreshedBuckets\n });\n _context.next = 34;\n break;\n\n case 30:\n _context.prev = 30;\n _context.t0 = _context['catch'](3);\n\n console.error('refreshBuckets() Error: Unable to refresh buckets for page: ' + pageName, _context.t0);\n throw _context.t0;\n\n case 34:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this, [[3, 30]]);\n }));\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n}\n\nfunction completePageLoad(buckets) {\n return {\n type: COMPLETE_PAGE_LOAD,\n startTime: Date.now(),\n buckets: buckets\n };\n}\n\n// Checks if the contents of bucketPage all exist in one of the buckets and the bucket names match.\n// We then consider them equal.\nfunction indexOfBucketInBucketList() {\n var buckets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var bucket = arguments[1];\n\n var contentIds = bucket.contents.map(function (content) {\n return content.id;\n });\n\n if (!buckets.length > 0) {\n return -1;\n }\n\n var foundIndex = -1;\n\n var _loop = function _loop(index) {\n var bucketItem = buckets[index];\n var bucketItemContentIds = bucketItem.contents.map(function (content) {\n return content.id;\n });\n var isEqual = bucketItem.name === bucket.name && contentIds.every(function (id) {\n return bucketItemContentIds.indexOf(id) !== -1;\n });\n if (isEqual) {\n foundIndex = index;\n return 'break';\n }\n };\n\n for (var index = 0; index < buckets.length; index += 1) {\n var _ret = _loop(index);\n\n if (_ret === 'break') break;\n }\n\n return foundIndex;\n}\n\nfunction fetchPageData(pageName, params, query) {\n return function (dispatch) {\n if (pageName === 'collection') {\n var bucketId = query.bucketId;\n\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"d\" /* getBucketPage */])({\n bucketId: params.id || bucketId,\n groupId: params.groupId,\n ignores: 'displayLimit'\n }));\n } else if (['film', 'product', 'show', 'program', 'compilation'].indexOf(pageName) !== -1) {\n var id = params.id,\n seasonId = params.seasonId;\n\n var name = __WEBPACK_IMPORTED_MODULE_3__enums__[\"H\" /* URLPath */][pageName];\n var pathParams = id;\n if (seasonId) {\n pathParams += '/seasons/' + seasonId;\n }\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"h\" /* getPageWithPathId */])({\n name: name,\n pathParams: pathParams\n }));\n } else if (pageName && params.id !== '') {\n // NOTE: Handles `/catalog/:guid` without strict matching\n // TODO: This will eventually replace some pageName conditions in the `else if` above\n // since we will be deprecating `show`, `film` pages and use `catalog`\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"h\" /* getPageWithPathId */])({\n name: pageName,\n pathParams: params.id\n }));\n }\n\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"f\" /* getPage */])({ name: pageName }));\n };\n}\n\nfunction fetchEventData(query) {\n return function (dispatch) {\n var channel = query.channel,\n networkQuery = query.network;\n\n var network = networkQuery || channel;\n\n if (network) {\n query.network = network;\n }\n\n var hasInvalidNetwork = network && PCC_NETWORK_NAMES.indexOf(network) === -1;\n if (__WEBPACK_IMPORTED_MODULE_1_lodash_intersection___default()(Object.keys(query), EVENT_QUERY_KEYS).length > 0 && !hasInvalidNetwork) {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"e\" /* getEvent */])({ query: query }));\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve();\n };\n}\n\nfunction fetchVideoData(_ref5) {\n var id = _ref5.id;\n\n return function (dispatch) {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"j\" /* getVideo */])({ pathParams: id }));\n };\n}\n\nfunction fetchEventOrVideoByQuery(query) {\n var _this2 = this;\n\n return function () {\n var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(dispatch) {\n var data;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n data = void 0;\n _context2.prev = 1;\n _context2.next = 4;\n return dispatch(fetchEventData(query));\n\n case 4:\n data = _context2.sent;\n _context2.next = 10;\n break;\n\n case 7:\n _context2.prev = 7;\n _context2.t0 = _context2['catch'](1);\n\n console.error(_context2.t0);\n\n case 10:\n if (data) {\n _context2.next = 12;\n break;\n }\n\n return _context2.abrupt('return', data);\n\n case 12:\n if (!(!data.page.contents && query.id)) {\n _context2.next = 22;\n break;\n }\n\n _context2.prev = 13;\n _context2.next = 16;\n return dispatch(fetchVideoData(query));\n\n case 16:\n data = _context2.sent;\n _context2.next = 22;\n break;\n\n case 19:\n _context2.prev = 19;\n _context2.t1 = _context2['catch'](13);\n\n console.error(_context2.t1);\n\n case 22:\n return _context2.abrupt('return', data);\n\n case 23:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this2, [[1, 7], [13, 19]]);\n }));\n\n return function (_x5) {\n return _ref6.apply(this, arguments);\n };\n }();\n}\n\nfunction fetchBuckets(query, fullUrl) {\n return function (dispatch) {\n var bucketId = query.bucketId;\n\n\n if (fullUrl) {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"g\" /* getPageByFullUrl */])({ url: fullUrl }));\n } else if (bucketId) {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"d\" /* getBucketPage */])({\n bucketId: bucketId\n }));\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve();\n };\n}\n\nvar handlePickerStreams = function () {\n var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(dispatch, pickerApiUrl, eventId) {\n var pickerStream;\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n /**\n * if pickerApiUrl returns from above event pageApi, fetch picker pageApi\n * and update picker redux state\n */\n pickerStream = void 0;\n\n if (!pickerApiUrl) {\n _context3.next = 5;\n break;\n }\n\n _context3.next = 4;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"c\" /* fetchPickerStreams */])(pickerApiUrl, eventId));\n\n case 4:\n pickerStream = _context3.sent;\n\n case 5:\n return _context3.abrupt('return', pickerStream);\n\n case 6:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function handlePickerStreams(_x6, _x7, _x8) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nfunction createFetchPageAction(id, params, query, lang, fullUrl) {\n var _this3 = this;\n\n __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__[\"a\" /* markStart */]('createFetchPageAction');\n return function () {\n var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(dispatch, getState) {\n var pageName, state, isIntl, isFinal, _pageSelector3, currentId, noHero, shouldRefreshAds, pageData, heroData, bucketsData, _ref9, eventStreams, isHandlePickerCalled, _heroData$page$conten, contentId, isEvent, eventId, status, pickerApiUrl, eventHeroData, contents, _contents$links, links, _ref10, _ref10$page, name, description, header, image, icon, _ref10$page$edition, edition, _ref10$page$buckets, originalBuckets, tracking, error, buckets, newBucket, newBucketIndex, isBucketInBucketList, index, heroContent, carouselBucket, content, _heroContent, _heroContent$links, pickerUrl;\n\n return regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n pageName = id;\n state = getState();\n isIntl = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_appSelector__[\"u\" /* isIntlSelector */])(state);\n isFinal = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_pageSelector__[\"d\" /* isFinalSelector */])(state);\n _pageSelector3 = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_pageSelector__[\"c\" /* default */])(state), currentId = _pageSelector3.id;\n noHero = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_pageSelector__[\"g\" /* showPromoSelector */])(state) && id === 'espnplus';\n shouldRefreshAds = id !== currentId;\n\n dispatch(createRequestPageAction(id));\n\n pageData = dispatch(fetchPageData(id, params, query));\n heroData = dispatch(fetchEventOrVideoByQuery(query));\n bucketsData = pageName === 'player' ? dispatch(fetchBuckets(query, fullUrl)) : __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve();\n _context4.prev = 11;\n _context4.next = 14;\n return pageData;\n\n case 14:\n _context4.t0 = _context4.sent;\n _context4.next = 17;\n return heroData;\n\n case 17:\n _context4.t1 = _context4.sent;\n _context4.next = 20;\n return bucketsData;\n\n case 20:\n _context4.t2 = _context4.sent;\n _ref9 = [_context4.t0, _context4.t1, _context4.t2];\n pageData = _ref9[0];\n heroData = _ref9[1];\n bucketsData = _ref9[2];\n _context4.next = 30;\n break;\n\n case 27:\n _context4.prev = 27;\n _context4.t3 = _context4['catch'](11);\n\n console.error(_context4.t3);\n\n case 30:\n // even if deep linked with single `id`, if the feed is part of an event, the player should show feeds picker,\n // so check if it's part of an event, and fetch all streams with `eventId` if so.\n eventStreams = null;\n isHandlePickerCalled = false;\n\n if (!(!isIntl && query.id && !query.eventId && !query.gameId && heroData && heroData.page && heroData.page.contents && heroData.page.contents.type === __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING)) {\n _context4.next = 50;\n break;\n }\n\n _heroData$page$conten = heroData.page.contents, contentId = _heroData$page$conten.id, isEvent = _heroData$page$conten.isEvent, eventId = _heroData$page$conten.eventId, status = _heroData$page$conten.status;\n\n if (!(isEvent || eventId)) {\n _context4.next = 50;\n break;\n }\n\n /**\n * following try catch block code will be called after calling event pageApi with an airingId,\n * ex: watch/?id=9de24e02-1e11-43aa-9590-e12cf35a492a which will trigger event pageApi with an airingId.\n * When the response returns eventId, event pageApi will call again with eventId to fetch event data\n */\n pickerApiUrl = void 0;\n _context4.prev = 36;\n _context4.next = 39;\n return dispatch(fetchEventData({\n eventId: eventId || contentId,\n status: status.toUpperCase()\n }));\n\n case 39:\n eventHeroData = _context4.sent;\n contents = eventHeroData && eventHeroData.page && eventHeroData.page.contents;\n\n if (contents && contents.streams && contents.streams.length > 0) {\n _contents$links = contents.links, links = _contents$links === undefined ? {} : _contents$links;\n\n pickerApiUrl = links.picker;\n eventStreams = contents.streams;\n }\n _context4.next = 47;\n break;\n\n case 44:\n _context4.prev = 44;\n _context4.t4 = _context4['catch'](36);\n\n console.error(_context4.t4);\n\n case 47:\n _context4.next = 49;\n return handlePickerStreams(dispatch, pickerApiUrl, eventId);\n\n case 49:\n isHandlePickerCalled = _context4.sent;\n\n case 50:\n\n // getPage should never be rejected, it resolves with an error page skeleton, so no need for isFulfilled().\n _ref10 = pageData || {}, _ref10$page = _ref10.page;\n _ref10$page = _ref10$page === undefined ? {} : _ref10$page;\n name = _ref10$page.name, description = _ref10$page.description, header = _ref10$page.header, image = _ref10$page.image, icon = _ref10$page.icon, _ref10$page$edition = _ref10$page.edition, edition = _ref10$page$edition === undefined ? {} : _ref10$page$edition, _ref10$page$buckets = _ref10$page.buckets, originalBuckets = _ref10$page$buckets === undefined ? [] : _ref10$page$buckets, tracking = _ref10$page.tracking, error = _ref10$page.error;\n\n // bluebird seems to return a reference to originally cached pageapi request to player\n // here's a trick to operate on a new reference\n\n buckets = originalBuckets.concat([]);\n\n\n if (bucketsData && bucketsData.page.buckets) {\n newBucket = bucketsData.page.buckets[0];\n newBucketIndex = indexOfBucketInBucketList(buckets, newBucket);\n isBucketInBucketList = newBucketIndex !== -1;\n\n\n if (isBucketInBucketList && newBucketIndex !== 0) {\n buckets[newBucketIndex].__replaced = true;\n } else if (!isBucketInBucketList) {\n index = buckets.map(function (bucket) {\n return bucket.tags && bucket.tags.indexOf('replaceable') !== -1;\n }).indexOf(true);\n\n if (index !== -1) {\n buckets[index] = newBucket;\n buckets[index].__replaced = true;\n }\n }\n }\n\n heroContent = null;\n\n\n if (heroData && heroData.page && heroData.page.contents) {\n heroContent = heroData.page.contents;\n if (eventStreams && eventStreams.length > 0) {\n heroContent.streams = eventStreams;\n }\n // if the hero was determined via id param, mark as concrete as to not change when scored\n heroContent.concrete = true;\n }\n\n // if there is a bucket which type is `BucketLayout.Carousel`,\n // it should be rendered as a carousel component and featured on top (used in `Originals` page)\n carouselBucket = void 0;\n\n buckets.some(function (_ref11, index) {\n var layout = _ref11.layout;\n\n if (layout && layout.toLowerCase() === __WEBPACK_IMPORTED_MODULE_3__enums__[\"i\" /* BucketLayout */].Carousel) {\n carouselBucket = buckets.splice(index, 1)[0];\n return true;\n }\n return false;\n });\n\n if (carouselBucket) {\n noHero = true;\n }\n\n // If there is no specified hero content, grab the first content in the first bucket as hero\n\n if (!(!heroContent && !noHero)) {\n _context4.next = 72;\n break;\n }\n\n content = void 0;\n\n if (header) {\n // film or show\n if (header.bucket && header.bucket.contents && header.bucket.contents[0]) {\n content = header.bucket.contents[0];\n // workaround to remove duplicated live content in the first bucket\n if (buckets && buckets[0] && buckets[0].contents && buckets[0].contents.length === 1 && content.status === __WEBPACK_IMPORTED_MODULE_3__enums__[\"n\" /* ContentStatus */].LIVE && buckets[0].contents[0].id === content.id) {\n buckets.shift();\n }\n } else {\n noHero = true;\n }\n } else if (buckets && buckets[0] && buckets[0].contents && buckets[0].contents[0]) {\n content = buckets[0].contents[0];\n }\n\n if (!(content && (content.type === __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING || content.type === __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].VOD || content.type === __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].EVENT || content.type === __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].VIDEO))) {\n _context4.next = 72;\n break;\n }\n\n /**\n * Ticket: https://espnjira.disney.com/browse/WEWEB-2501\n * Fixed missing content props that we need to pass to DSS from hero component\n * */\n if (content.streams.length && !content.streams[0].content) {\n content = Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"b\" /* addContentToStream */])(content);\n }\n\n heroContent = content;\n // NOTE: The following logic catches the case when there is no Hero content\n // and we select the first item in the buckets array as a fallback for the Hero content\n // If that first bucket contains an `eventId` or `isEvent` property is truthy,\n // we fetch the picker streams using the first item data\n\n if (!((heroContent.eventId || heroContent.isEvent) && !query.eventCalendarId && !isHandlePickerCalled)) {\n _context4.next = 72;\n break;\n }\n\n _heroContent = heroContent, _heroContent$links = _heroContent.links;\n _heroContent$links = _heroContent$links === undefined ? {} : _heroContent$links;\n pickerUrl = _heroContent$links.picker;\n _context4.next = 72;\n return handlePickerStreams(dispatch, pickerUrl, heroContent.eventId);\n\n case 72:\n\n dispatch(createReceivePageAction({\n id: id,\n name: name,\n description: description,\n header: header,\n image: image,\n icon: icon,\n edition: edition,\n buckets: buckets,\n tracking: tracking,\n heroContent: heroContent,\n carouselBucket: carouselBucket,\n lang: lang,\n error: error,\n isFinal: isFinal,\n noHero: noHero\n }));\n\n if (shouldRefreshAds && pageName !== 'player') {\n // player page sets ads config when a content is selected\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__ads_actions__[\"g\" /* initAdsConfig */])(pageName, tracking, {}, query));\n }\n\n __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__[\"b\" /* measureAndTime */]('createFetchPageAction');\n return _context4.abrupt('return', __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve());\n\n case 76:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, _this3, [[11, 27], [36, 44]]);\n }));\n\n return function (_x9, _x10) {\n return _ref8.apply(this, arguments);\n };\n }();\n}\n\nfunction oneIdAndBam(bamProxyIFrameId, requests) {\n return function (dispatch) {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_oneIdActions__[\"g\" /* checkOneIDAuthentication */])()).then(function () {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_appActions__[\"B\" /* createSDKWrapper */])(bamProxyIFrameId, requests));\n });\n };\n}\n\nfunction createPageShellInitAction(params, bamProxyIFrameId) {\n var _this4 = this;\n\n return function () {\n var _ref12 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(dispatch, getState) {\n var state, isIntl, _bootstrapSelector, _bootstrapSelector$pa, _bootstrapSelector$pa2, queryParameters, _bootstrapSelector$pa3, requireClientRenderParams, _appSelector, lang, _routingSelector, locationBeforeTransitions, _pageSelector4, pageId, _ref13, _ref13$query, query, isLoggedIn, _oneIdSelector, swid, geo, userTracking, sub, sessionToken, requireClientRender, requireGeo, requireFan, requireCheckOneId, newState, entitlements, hasSuperBundle, bamSubReady, hasTDAEntitlement, isAuthenticated, requiredActions, _pageSelector5, currentPageId, actions;\n\n return regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__[\"a\" /* markStart */]('createPageShellInitAction');\n state = getState();\n isIntl = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_appSelector__[\"u\" /* isIntlSelector */])(state);\n\n if (!isIntl) {\n _context5.next = 9;\n break;\n }\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__[\"V\" /* createSmartAdobePassInitializeAction */])(params));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__[\"W\" /* createSmartIpAuthenticationAction */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_oneIdActions__[\"j\" /* completeOneIDAuthentication */])(false, []));\n _context5.next = 61;\n break;\n\n case 9:\n _bootstrapSelector = Object(__WEBPACK_IMPORTED_MODULE_11__selectors_bootstrapSelector__[\"a\" /* default */])(state), _bootstrapSelector$pa = _bootstrapSelector.pageApi;\n _bootstrapSelector$pa = _bootstrapSelector$pa === undefined ? {} : _bootstrapSelector$pa;\n _bootstrapSelector$pa2 = _bootstrapSelector$pa.queryParameters, queryParameters = _bootstrapSelector$pa2 === undefined ? [] : _bootstrapSelector$pa2, _bootstrapSelector$pa3 = _bootstrapSelector$pa.requireClientRenderParams, requireClientRenderParams = _bootstrapSelector$pa3 === undefined ? [] : _bootstrapSelector$pa3;\n _appSelector = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_appSelector__[\"j\" /* default */])(state), lang = _appSelector.lang;\n _routingSelector = Object(__WEBPACK_IMPORTED_MODULE_14__selectors_routingSelector__[\"a\" /* default */])(state), locationBeforeTransitions = _routingSelector.locationBeforeTransitions;\n _pageSelector4 = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_pageSelector__[\"c\" /* default */])(state), pageId = _pageSelector4.id;\n _ref13 = locationBeforeTransitions || {}, _ref13$query = _ref13.query, query = _ref13$query === undefined ? {} : _ref13$query;\n _context5.next = 18;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_oneIdActions__[\"h\" /* checkSWIDAuthentication */])());\n\n case 18:\n isLoggedIn = _context5.sent;\n _oneIdSelector = Object(__WEBPACK_IMPORTED_MODULE_13__selectors_oneIdSelector__[\"a\" /* default */])(getState()), swid = _oneIdSelector.swid;\n geo = Object(__WEBPACK_IMPORTED_MODULE_10__lib_util_localStorage__[\"a\" /* get */])(__WEBPACK_IMPORTED_MODULE_2__constants__[\"e\" /* GEO_LOCATION_KEY */]);\n userTracking = Object(__WEBPACK_IMPORTED_MODULE_10__lib_util_localStorage__[\"a\" /* get */])(__WEBPACK_IMPORTED_MODULE_2__constants__[\"r\" /* USER_TRACKING_KEY */]);\n sub = Object(__WEBPACK_IMPORTED_MODULE_10__lib_util_localStorage__[\"a\" /* get */])(__WEBPACK_IMPORTED_MODULE_2__constants__[\"q\" /* SUB_KEY */]);\n sessionToken = Object(__WEBPACK_IMPORTED_MODULE_10__lib_util_localStorage__[\"a\" /* get */])(__WEBPACK_IMPORTED_MODULE_2__constants__[\"o\" /* SESSION_TOKEN_KEY */]);\n requireClientRender = __WEBPACK_IMPORTED_MODULE_1_lodash_intersection___default()(queryParameters, requireClientRenderParams).length > 0;\n requireGeo = requireClientRender && queryParameters.indexOf('zipcode') > -1 && !geo;\n requireFan = requireClientRender && (queryParameters.indexOf('favoriteTeam') > -1 || queryParameters.indexOf('favoriteSport') > -1);\n requireCheckOneId = isLoggedIn;\n\n\n if (sub) {\n if (!isLoggedIn || !sub.swid || sub.swid !== swid) {\n Object(__WEBPACK_IMPORTED_MODULE_10__lib_util_localStorage__[\"c\" /* remove */])(__WEBPACK_IMPORTED_MODULE_2__constants__[\"q\" /* SUB_KEY */]);\n sub = null;\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__[\"P\" /* createGetBAMAuthenticationInfoAction */])(sub.subscriptions));\n newState = getState();\n entitlements = Object(__WEBPACK_IMPORTED_MODULE_13__selectors_oneIdSelector__[\"d\" /* oneIdEntitlementsSelector */])(newState);\n hasSuperBundle = Object(__WEBPACK_IMPORTED_MODULE_22__selectors_authenticationSelectors__[\"q\" /* superBundleSelector */])(newState);\n bamSubReady = Object(__WEBPACK_IMPORTED_MODULE_22__selectors_authenticationSelectors__[\"k\" /* bamSubReadySelector */])(newState);\n hasTDAEntitlement = Object(__WEBPACK_IMPORTED_MODULE_21__lib_auth_hasTDA__[\"a\" /* default */])(sessionToken);\n isAuthenticated = entitlements && entitlements.length > 0 || hasTDAEntitlement;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_oneIdActions__[\"j\" /* completeOneIDAuthentication */])(isAuthenticated, entitlements, hasTDAEntitlement, hasSuperBundle, bamSubReady));\n requireCheckOneId = false;\n }\n }\n\n if (geo) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__[\"R\" /* createGetGeoLocationAction */])(geo));\n }\n\n if (sessionToken) {\n if (!isLoggedIn) {\n Object(__WEBPACK_IMPORTED_MODULE_10__lib_util_localStorage__[\"c\" /* remove */])(__WEBPACK_IMPORTED_MODULE_2__constants__[\"o\" /* SESSION_TOKEN_KEY */]);\n sessionToken = null;\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__[\"Q\" /* createGetBAMSessionTokenAction */])(sessionToken));\n }\n }\n\n if (userTracking) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__[\"T\" /* createGetUserTrackingAction */])(userTracking));\n }\n\n if (isLoggedIn) {\n dispatch(oneIdAndBam(bamProxyIFrameId, requireGeo ? ['geolocation', 'subscriptions', 'sessionToken', 'userTrackingInformation'] : ['subscriptions', 'sessionToken', 'userTrackingInformation']));\n } else {\n // if user is not logged, we need to trigger createSDKWrapper call to get user tracking info from DSS sdk\n // ticket: https://jira.disney.com/browse/WEWEB-2597\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_appActions__[\"B\" /* createSDKWrapper */])(bamProxyIFrameId, ['userTrackingInformation']));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_oneIdActions__[\"j\" /* completeOneIDAuthentication */])(false, []));\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__[\"V\" /* createSmartAdobePassInitializeAction */])(params));\n // find out what actions are necessary to await to reflect to Page API params\n requiredActions = [];\n\n if (requireGeo) {\n // grabbing zipcode from location data since BAM's geolocation uses IP info as well.\n requiredActions.push(dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__[\"W\" /* createSmartIpAuthenticationAction */])()));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_authenticationActions__[\"W\" /* createSmartIpAuthenticationAction */])());\n }\n\n if (requireCheckOneId) {\n requiredActions.push(dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_oneIdActions__[\"g\" /* checkOneIDAuthentication */])()));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_oneIdActions__[\"g\" /* checkOneIDAuthentication */])());\n }\n\n if (requireFan) {\n requiredActions.push(dispatch(Object(__WEBPACK_IMPORTED_MODULE_19__actions_fanActions__[\"b\" /* createSmartFanAction */])()));\n } // we don't need it now\n\n if (!requiredActions.length) {\n _context5.next = 47;\n break;\n }\n\n _context5.prev = 39;\n _context5.next = 42;\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.all(requiredActions);\n\n case 42:\n _context5.next = 47;\n break;\n\n case 44:\n _context5.prev = 44;\n _context5.t0 = _context5['catch'](39);\n\n console.error('createPageShellInitAction', _context5.t0);\n\n case 47:\n _pageSelector5 = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_pageSelector__[\"c\" /* default */])(getState()), currentPageId = _pageSelector5.id;\n\n if (!(requireClientRender || query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].NO_SSR] === 'true' && __WEBPACK_IMPORTED_MODULE_2__constants__[\"s\" /* clientRenderRoutes */].indexOf(pageId) > -1)) {\n _context5.next = 61;\n break;\n }\n\n if (!(pageId && pageId === currentPageId && pageId !== 'schedule' && pageId !== 'search' && pageId !== 'sid')) {\n _context5.next = 61;\n break;\n }\n\n actions = [dispatch(createFetchPageAction(pageId, params, query, lang))];\n\n if (pageId !== 'player') {\n actions.push(dispatch(Object(__WEBPACK_IMPORTED_MODULE_18__scheduleModule_actions__[\"d\" /* fetchScheduleModule */])(lang)));\n }\n _context5.prev = 52;\n _context5.next = 55;\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.all(actions);\n\n case 55:\n _context5.next = 60;\n break;\n\n case 57:\n _context5.prev = 57;\n _context5.t1 = _context5['catch'](52);\n\n console.error('createPageShellInitAction', _context5.t1);\n\n case 60:\n __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__[\"b\" /* measureAndTime */]('createPageShellInitAction');\n\n case 61:\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_15__actions_scoringActions__[\"a\" /* scoreAll */])());\n\n case 62:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, _this4, [[39, 44], [52, 57]]);\n }));\n\n return function (_x11, _x12) {\n return _ref12.apply(this, arguments);\n };\n }();\n}\n\nfunction createLaunchPlayerAction(content) {\n var id = content.id;\n var tileType = content.type || '';\n var source = content.sourceType === __WEBPACK_IMPORTED_MODULE_3__enums__[\"E\" /* SourceType */].LINEAR ? content.source : null;\n\n return {\n type: LAUNCH_PLAYER,\n id: id,\n source: source,\n tileType: tileType,\n launchedAt: Date.now()\n };\n}\n\nfunction setPageInfo(id, name) {\n var autoPageViewTrack = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n return function (dispatch) {\n dispatch({\n type: PAGE_INFO_SET,\n id: id,\n name: name,\n isFinal: true,\n autoPageViewTrack: autoPageViewTrack\n });\n };\n}\n\nfunction replaceHero(content) {\n return {\n type: REPLACE_HERO,\n content: content\n };\n}\n\nfunction setPageState(isFinal) {\n return {\n type: SET_STATE,\n isFinal: isFinal\n };\n}\n\nfunction getAiring(_ref14) {\n var _this5 = this;\n\n var id = _ref14.id;\n\n return function () {\n var _ref15 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(dispatch) {\n var _ref16, _ref16$data, data, airing;\n\n return regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.prev = 0;\n _context6.next = 3;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"k\" /* graphql */])('getAiring', { id: id }));\n\n case 3:\n _ref16 = _context6.sent;\n _ref16$data = _ref16.data;\n data = _ref16$data === undefined ? {} : _ref16$data;\n airing = data.airing;\n return _context6.abrupt('return', airing);\n\n case 10:\n _context6.prev = 10;\n _context6.t0 = _context6['catch'](0);\n return _context6.abrupt('return', {});\n\n case 13:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, _this5, [[0, 10]]);\n }));\n\n return function (_x14) {\n return _ref15.apply(this, arguments);\n };\n }();\n}\n\nfunction getAirings(_ref17) {\n var _this6 = this;\n\n var eventId = _ref17.eventId;\n\n return function () {\n var _ref18 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(dispatch) {\n var _ref19, _ref19$data, data, airings;\n\n return regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.prev = 0;\n _context7.next = 3;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_apiAction__[\"k\" /* graphql */])('getAirings', { eventId: eventId, limit: 500 }));\n\n case 3:\n _ref19 = _context7.sent;\n _ref19$data = _ref19.data;\n data = _ref19$data === undefined ? {} : _ref19$data;\n airings = data.airings;\n return _context7.abrupt('return', airings);\n\n case 10:\n _context7.prev = 10;\n _context7.t0 = _context7['catch'](0);\n return _context7.abrupt('return', []);\n\n case 13:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, _this6, [[0, 10]]);\n }));\n\n return function (_x15) {\n return _ref18.apply(this, arguments);\n };\n }();\n}\n\nfunction singleEventPage(id, name, query) {\n var _this7 = this;\n\n return function () {\n var _ref20 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(dispatch) {\n var eventId, partner, dates, thumbnail, content, newQuery, payload, _ref21, _ref21$page, edition, heroContent, _heroContent$streams, streams;\n\n return regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n dispatch(createRequestPageAction(id));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_appActions__[\"w\" /* analyticsReady */])({}));\n\n eventId = query.eventId || query.gameId;\n partner = query.partner, dates = query.dates, thumbnail = query.thumbnail;\n content = void 0;\n\n if (!(!query.id && partner)) {\n _context8.next = 9;\n break;\n }\n\n _context8.next = 8;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_4__actions_listingsActions__[\"a\" /* getEventByQuery */])({ partner: partner, dates: dates }));\n\n case 8:\n content = _context8.sent;\n\n case 9:\n newQuery = void 0;\n\n delete query.thumbnail;\n if (content) {\n delete query.eventId;\n delete query.gameId;\n delete query.league;\n delete query.partner;\n delete query.dates;\n newQuery = _extends({}, query, { id: content.id });\n } else if (eventId) {\n newQuery = { eventId: eventId };\n } else if (query.id || query.channel || query.network) {\n newQuery = query;\n } else if (!partner) {\n newQuery = _extends({}, query, {\n network: 'espn'\n });\n }\n\n payload = void 0;\n\n if (!newQuery) {\n _context8.next = 17;\n break;\n }\n\n _context8.next = 16;\n return dispatch(fetchEventOrVideoByQuery(newQuery));\n\n case 16:\n payload = _context8.sent;\n\n case 17:\n _ref21 = payload || {}, _ref21$page = _ref21.page;\n _ref21$page = _ref21$page === undefined ? {} : _ref21$page;\n edition = _ref21$page.edition, heroContent = _ref21$page.contents;\n\n if (!heroContent) {\n _context8.next = 26;\n break;\n }\n\n if (thumbnail) {\n heroContent.imageHref = thumbnail;\n }\n _heroContent$streams = heroContent.streams, streams = _heroContent$streams === undefined ? [] : _heroContent$streams;\n\n if (!streams.length) {\n _context8.next = 26;\n break;\n }\n\n _context8.next = 26;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_appActions__[\"O\" /* streamSelect */])(streams[0]));\n\n case 26:\n dispatch(createReceivePageAction({\n id: id,\n name: name,\n edition: edition,\n heroContent: heroContent,\n isFinal: true\n }));\n\n case 27:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, _this7);\n }));\n\n return function (_x16) {\n return _ref20.apply(this, arguments);\n };\n }();\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = queryString;\nfunction queryString(params) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var append = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var queryString = '';\n var first = !append;\n for (var key in params) {\n if (params.hasOwnProperty(key) && params[key]) {\n queryString += first ? '?' : '&';\n queryString += key + '=' + (encode ? encodeURIComponent(params[key]) : params[key]);\n first = false;\n }\n }\n return queryString;\n};\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return APP_RENDERED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ANALYTICS_READY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return CLOSE_MODAL_MESSAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return CONTENT_SELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return CONTENT_UNSELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"u\", function() { return STREAM_SELECTING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return STREAM_SELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"v\", function() { return STREAM_UNSELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return DISPLAY_MODAL_MESSAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return MEDIA_QUERY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return INIT_APP_DATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return FETCH_EXTERNAL_CONFIG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return FETCH_EMBEDDED_OPTIONS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return PACKAGE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return PACKAGE_TIER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"q\", function() { return PICKER_STREAMS_SELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"s\", function() { return PICKER_STREAMS_UNSELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"r\", function() { return PICKER_STREAMS_SELECT_ERROR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return OPEN_PICKER_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return OPEN_PICKER_ERROR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return PICKER_AUTO_SELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return PICKER_STATE_CLEAR; });\n/* harmony export (immutable) */ __webpack_exports__[\"C\"] = displayModalMessage;\n/* harmony export (immutable) */ __webpack_exports__[\"y\"] = closeModalMessage;\n/* harmony export (immutable) */ __webpack_exports__[\"Q\"] = updateRoute;\n/* harmony export (immutable) */ __webpack_exports__[\"O\"] = streamSelect;\n/* harmony export (immutable) */ __webpack_exports__[\"P\"] = streamUnSelect;\n/* harmony export (immutable) */ __webpack_exports__[\"z\"] = contentSelect;\n/* harmony export (immutable) */ __webpack_exports__[\"A\"] = contentUnSelect;\n/* harmony export (immutable) */ __webpack_exports__[\"x\"] = appRendered;\n/* harmony export (immutable) */ __webpack_exports__[\"w\"] = analyticsReady;\n/* harmony export (immutable) */ __webpack_exports__[\"D\"] = fetchExternalConfig;\n/* unused harmony export initAppData */\n/* harmony export (immutable) */ __webpack_exports__[\"E\"] = mediaQuery;\n/* harmony export (immutable) */ __webpack_exports__[\"L\"] = savePackageId;\n/* harmony export (immutable) */ __webpack_exports__[\"M\"] = savePackageTier;\n/* harmony export (immutable) */ __webpack_exports__[\"N\"] = sendContentReward;\n/* harmony export (immutable) */ __webpack_exports__[\"B\"] = createSDKWrapper;\n/* unused harmony export createSelectMultipleStreamsAction */\n/* harmony export (immutable) */ __webpack_exports__[\"I\"] = pickerStreamsSelect;\n/* harmony export (immutable) */ __webpack_exports__[\"K\"] = pickerStreamsUnSelect;\n/* harmony export (immutable) */ __webpack_exports__[\"J\"] = pickerStreamsSelectError;\n/* harmony export (immutable) */ __webpack_exports__[\"G\"] = openPickerSuccess;\n/* harmony export (immutable) */ __webpack_exports__[\"F\"] = openPickerError;\n/* unused harmony export pickerAutoSelect */\n/* harmony export (immutable) */ __webpack_exports__[\"H\"] = pickerStateClear;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react_router_redux__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react_router_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react_router_redux__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__page_actions__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ads_actions__ = __webpack_require__(92);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__apiAction__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__oneIdActions__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__selectors_bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__selectors_flagsSelector__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__selectors_pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__selectors_routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__selectors_oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__selectors_selectedContentSelector__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__selectors_selectedStreamSelector__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__webapp_player_util__ = __webpack_require__(217);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__webapp_common_video_player__ = __webpack_require__(116);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__lib_util_getBamAuthConfig__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__lib_util_localStorage__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__lib_util_perf__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__lib_api_PageAPI__ = __webpack_require__(207);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__lib_auth_hasTDA__ = __webpack_require__(215);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n/* Only gets fired on the client */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar APP_RENDERED = 'APP_RENDERED';\nvar ANALYTICS_READY = 'ANALYTICS_READY';\nvar CLOSE_MODAL_MESSAGE = 'CLOSE_MODAL_MESSAGE';\nvar CONTENT_SELECT = 'CONTENT_SELECT';\nvar CONTENT_UNSELECT = 'CONTENT_UNSELECT';\nvar STREAM_SELECTING = 'STREAM_SELECTING';\nvar STREAM_SELECT = 'STREAM_SELECT';\nvar STREAM_UNSELECT = 'STREAM_UNSELECT';\nvar DISPLAY_MODAL_MESSAGE = 'DISPLAY_MODAL_MESSAGE';\nvar MEDIA_QUERY = 'MEDIA_QUERY';\nvar INIT_APP_DATA = 'INIT_APP_DATA';\nvar FETCH_EXTERNAL_CONFIG = 'FETCH_EXTERNAL_CONFIG';\nvar FETCH_EMBEDDED_OPTIONS = 'FETCH_EMBEDDED_OPTIONS';\nvar PACKAGE_ID = 'PACKAGE_ID';\nvar PACKAGE_TIER = 'PACKAGE_TIER';\nvar PICKER_STREAMS_SELECT = 'PICKER_STREAMS_SELECT';\nvar PICKER_STREAMS_UNSELECT = 'PICKER_STREAMS_UNSELECT';\nvar PICKER_STREAMS_SELECT_ERROR = 'PICKER_STREAMS_SELECT_ERROR';\nvar OPEN_PICKER_SUCCESS = 'OPEN_PICKER_SUCCESS';\nvar OPEN_PICKER_ERROR = 'OPEN_PICKER_ERROR';\nvar PICKER_AUTO_SELECT = 'PICKER_AUTO_SELECT';\nvar PICKER_STATE_CLEAR = 'PICKER_STATE_CLEAR';\n\nvar AdobePassEnv = __WEBPACK_IMPORTED_MODULE_2__enums__[\"a\" /* AdobePass */].Env;\nvar ApiEnv = __WEBPACK_IMPORTED_MODULE_2__enums__[\"b\" /* Api */].Env;\n\n\nfunction displayModalMessage(messageType, messageData) {\n return {\n type: DISPLAY_MODAL_MESSAGE,\n messageType: messageType,\n messageData: messageData\n };\n}\n\nfunction closeModalMessage() {\n return {\n type: CLOSE_MODAL_MESSAGE\n };\n}\n\nfunction updateRoute(query) {\n return function (dispatch, getState) {\n var state = getState();\n var flags = Object(__WEBPACK_IMPORTED_MODULE_10__selectors_flagsSelector__[\"a\" /* persistentFlagsSelector */])(state);\n\n var _routingSelector = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_routingSelector__[\"a\" /* default */])(state),\n locationBeforeTransitions = _routingSelector.locationBeforeTransitions;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_0_react_router_redux__[\"replace\"])(_extends({}, locationBeforeTransitions, { query: _extends({}, flags, query) })));\n };\n}\n\nfunction streamSelect(stream) {\n var _this = this;\n\n return function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch, getState) {\n var state, _appSelector, selectingStream, _appSelector$playback, playbackMetaArg, _pageSelector, pageId, _pageSelector$buckets, buckets, tracking, _routingSelector2, locationBeforeTransitions, _ref2, _ref2$query, query, content, selectedStream, type, bucketId, reselected, playbackMeta, _appSelector2, selectingStreamArg, id, _ref3, _ref3$tracking, sport, league, franchise, playerUrlId, regex, sp, lg, show;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!Object(__WEBPACK_IMPORTED_MODULE_20__lib_util_isEmpty__[\"a\" /* default */])(stream)) {\n _context.next = 3;\n break;\n }\n\n console.error('Empty stream selected');\n return _context.abrupt('return');\n\n case 3:\n state = getState();\n _appSelector = Object(__WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__[\"j\" /* default */])(state), selectingStream = _appSelector.selectingStream, _appSelector$playback = _appSelector.playbackMeta, playbackMetaArg = _appSelector$playback === undefined ? {} : _appSelector$playback;\n _pageSelector = Object(__WEBPACK_IMPORTED_MODULE_11__selectors_pageSelector__[\"c\" /* default */])(state), pageId = _pageSelector.id, _pageSelector$buckets = _pageSelector.buckets, buckets = _pageSelector$buckets === undefined ? [] : _pageSelector$buckets, tracking = _pageSelector.tracking;\n _routingSelector2 = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_routingSelector__[\"a\" /* default */])(state), locationBeforeTransitions = _routingSelector2.locationBeforeTransitions;\n _ref2 = locationBeforeTransitions || {}, _ref2$query = _ref2.query, query = _ref2$query === undefined ? {} : _ref2$query;\n content = Object(__WEBPACK_IMPORTED_MODULE_15__selectors_selectedContentSelector__[\"a\" /* default */])(state);\n selectedStream = Object(__WEBPACK_IMPORTED_MODULE_16__selectors_selectedStreamSelector__[\"a\" /* default */])(state);\n type = content.type, bucketId = content.bucketId;\n reselected = selectingStream && selectingStream.id === stream.id || playbackMetaArg.playbackState && playbackMetaArg.playbackState.id === stream.id;\n\n if (!reselected) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt('return');\n\n case 14:\n\n // NOTE: Assigning the playlist array to the stream without mobile restrictions\n if (type === __WEBPACK_IMPORTED_MODULE_2__enums__[\"o\" /* ContentType */].VOD) {\n stream.playlist = Object(__WEBPACK_IMPORTED_MODULE_18__webapp_player_util__[\"b\" /* getContentPlaylistFromBuckets */])(content, buckets);\n }\n\n dispatch({\n type: STREAM_SELECTING,\n stream: stream\n });\n\n playbackMeta = void 0;\n\n if (!(stream.links && stream.links.play)) {\n _context.next = 30;\n break;\n }\n\n _context.prev = 18;\n _context.next = 21;\n return Object(__WEBPACK_IMPORTED_MODULE_24__lib_api_PageAPI__[\"getPlaybackMeta\"])(stream.links.play);\n\n case 21:\n playbackMeta = _context.sent;\n _appSelector2 = Object(__WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__[\"j\" /* default */])(getState()), selectingStreamArg = _appSelector2.selectingStream;\n\n if (selectingStreamArg) {\n _context.next = 25;\n break;\n }\n\n return _context.abrupt('return');\n\n case 25:\n _context.next = 30;\n break;\n\n case 27:\n _context.prev = 27;\n _context.t0 = _context['catch'](18);\n\n console.error(_context.t0);\n\n case 30:\n id = stream.id;\n _ref3 = playbackMeta || {}, _ref3$tracking = _ref3.tracking;\n _ref3$tracking = _ref3$tracking === undefined ? {} : _ref3$tracking;\n sport = _ref3$tracking.sport, league = _ref3$tracking.league, franchise = _ref3$tracking.franchise;\n playerUrlId = Object(__WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__[\"g\" /* contentIdInPlayerUrl */])(state);\n\n if (playerUrlId && selectedStream.id !== id) {\n if (query.id && !query.eventId && !query.gameId || !stream.content.eventId) {\n dispatch(updateRoute({ id: id, bucketId: bucketId }));\n }\n }\n\n // reset AdobePass error\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"B\" /* createAdobePassErrorAction */])());\n\n dispatch({\n type: STREAM_SELECT,\n stream: stream,\n playbackMeta: playbackMeta,\n clickedTime: Date.now()\n });\n\n // refresh ads with the new ad targeting\n if (pageId === 'player') {\n // TODO: i think we can pass the value as is by encoding the value, but that might involves espn.com change.\n regex = /\\s|:|#|,|\\(|\\)|\\[|]/g;\n sp = sport && sport.replace(regex, '_');\n lg = league && league.replace(regex, '_');\n show = franchise && franchise.replace(regex, '_');\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__ads_actions__[\"g\" /* initAdsConfig */])(pageId, tracking, {\n sp: sp,\n lg: lg,\n show: show\n }, query));\n }\n\n case 39:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this, [[18, 27]]);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n}\n\nfunction streamUnSelect() {\n return {\n type: STREAM_UNSELECT\n };\n}\n\nfunction contentSelect(contentArg) {\n var _this2 = this;\n\n return function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(dispatch, getState) {\n var state, content, stream, _pageSelector2, id;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n state = getState();\n content = contentArg;\n stream = void 0;\n _pageSelector2 = Object(__WEBPACK_IMPORTED_MODULE_11__selectors_pageSelector__[\"c\" /* default */])(state), id = _pageSelector2.id;\n\n if (id === 'player') {\n if (content) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_4__page_actions__[\"w\" /* replaceHero */])(content));\n }\n }\n\n dispatch({\n type: CONTENT_SELECT,\n content: content,\n clickedTime: Date.now()\n });\n\n if (stream) {\n dispatch(streamSelect(stream));\n }\n\n case 7:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this2);\n }));\n\n return function (_x3, _x4) {\n return _ref4.apply(this, arguments);\n };\n }();\n}\n\nfunction contentUnSelect(content) {\n return {\n type: CONTENT_UNSELECT,\n content: content,\n clickedTime: Date.now()\n };\n}\n\nfunction appRendered() {\n return {\n type: APP_RENDERED\n };\n}\n\nfunction analyticsReady() {\n var initData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return {\n type: ANALYTICS_READY,\n initData: initData,\n completeTime: Date.now()\n };\n}\n\nfunction fetchExternalConfig() {\n var _this3 = this;\n\n return function () {\n var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(dispatch) {\n var config;\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__apiAction__[\"l\" /* loadBootstrap */])());\n\n case 2:\n config = _context3.sent;\n\n dispatch({\n type: FETCH_EXTERNAL_CONFIG,\n bootstrap: config\n });\n return _context3.abrupt('return', config);\n\n case 5:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this3);\n }));\n\n return function (_x6) {\n return _ref5.apply(this, arguments);\n };\n }();\n}\n// TODO: DTC - point back to `ApiEnv.PROD`\nfunction initAppData(_ref6) {\n var appName = _ref6.appName,\n _ref6$adobePassEnv = _ref6.adobePassEnv,\n adobePassEnv = _ref6$adobePassEnv === undefined ? AdobePassEnv.PROD : _ref6$adobePassEnv,\n _ref6$apiEnv = _ref6.apiEnv,\n apiEnv = _ref6$apiEnv === undefined ? ApiEnv.PROD : _ref6$apiEnv,\n configEnv = _ref6.configEnv,\n device = _ref6.device,\n env = _ref6.env,\n location = _ref6.location,\n lang = _ref6.lang,\n country = _ref6.country,\n messages = _ref6.messages,\n enableSearch = _ref6.enableSearch,\n packageId = _ref6.packageId,\n tier = _ref6.tier,\n edition = _ref6.edition,\n webview = _ref6.webview,\n renderTemplateType = _ref6.renderTemplateType,\n newrelicInsertKey = _ref6.newrelicInsertKey,\n newrelicAccountId = _ref6.newrelicAccountId;\n\n var isMobile = device === __WEBPACK_IMPORTED_MODULE_2__enums__[\"q\" /* Device */].HANDSET || device === __WEBPACK_IMPORTED_MODULE_2__enums__[\"q\" /* Device */].TABLET;\n\n return {\n type: INIT_APP_DATA,\n appName: appName,\n adobePassEnv: adobePassEnv,\n apiEnv: apiEnv,\n configEnv: configEnv,\n device: device,\n env: env,\n isMobile: isMobile,\n location: location,\n lang: lang,\n sourceLang: lang,\n country: country,\n messages: messages,\n enableSearch: enableSearch,\n packageId: packageId,\n tier: tier,\n edition: edition,\n webview: webview,\n renderTemplateType: renderTemplateType,\n newrelicInsertKey: newrelicInsertKey,\n newrelicAccountId: newrelicAccountId\n };\n}\n\nfunction mediaQuery(mq) {\n return {\n type: MEDIA_QUERY,\n mq: mq\n };\n}\n\nfunction savePackageId(packageId) {\n return {\n type: PACKAGE_ID,\n packageId: packageId\n };\n}\n\nfunction savePackageTier(tier) {\n return {\n type: PACKAGE_TIER,\n tier: tier\n };\n}\n\nfunction sendContentReward(_ref7) {\n var _this4 = this;\n\n var _ref7$selector = _ref7.selector,\n selector = _ref7$selector === undefined ? __WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* BAM_PROXY_IFRAME_ID */] : _ref7$selector,\n rewardToken = _ref7.rewardToken,\n contentId = _ref7.contentId,\n _ref7$userActivityAct = _ref7.userActivityAction,\n userActivityAction = _ref7$userActivityAct === undefined ? 'CLICK' : _ref7$userActivityAct,\n _ref7$recommendedCont = _ref7.recommendedContentIds,\n recommendedContentIds = _ref7$recommendedCont === undefined ? [] : _ref7$recommendedCont;\n\n return function () {\n var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(dispatch, getState) {\n var state, _bootstrapSelector, bam, _routingSelector3, locationBeforeTransitions, _ref9, query, videoPlayer;\n\n return regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n state = getState();\n _bootstrapSelector = Object(__WEBPACK_IMPORTED_MODULE_8__selectors_bootstrapSelector__[\"a\" /* default */])(state), bam = _bootstrapSelector.bam;\n _routingSelector3 = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_routingSelector__[\"a\" /* default */])(state), locationBeforeTransitions = _routingSelector3.locationBeforeTransitions;\n _ref9 = locationBeforeTransitions || {}, query = _ref9.query;\n _context4.prev = 4;\n videoPlayer = new __WEBPACK_IMPORTED_MODULE_19__webapp_common_video_player__[\"a\" /* default */]({\n bamPlayerOptions: query[__WEBPACK_IMPORTED_MODULE_2__enums__[\"t\" /* Flags */].BAM_ENV] ? _extends({}, bam, { env: query[__WEBPACK_IMPORTED_MODULE_2__enums__[\"t\" /* Flags */].BAM_ENV] }) : bam\n });\n _context4.next = 8;\n return videoPlayer.sendContentReward({\n selector: '#' + selector,\n rewardToken: rewardToken,\n contentId: contentId,\n userActivityAction: userActivityAction,\n recommendedContentIds: recommendedContentIds\n });\n\n case 8:\n _context4.next = 13;\n break;\n\n case 10:\n _context4.prev = 10;\n _context4.t0 = _context4['catch'](4);\n\n console.error('sendContentReward ERROR:', _context4.t0); // eslint-disable-line\n\n case 13:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, _this4, [[4, 10]]);\n }));\n\n return function (_x7, _x8) {\n return _ref8.apply(this, arguments);\n };\n }();\n}\n\nfunction createSDKWrapper(containerIdArg, requestsArg) {\n var _this5 = this;\n\n var transactionId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n return function (dispatch, getState) {\n var perfName = requestsArg ? 'createSDKWrapper_' + requestsArg.join('') : 'createSDKWrapper';\n __WEBPACK_IMPORTED_MODULE_23__lib_util_perf__[\"a\" /* markStart */](perfName);\n var state = getState();\n\n var _bootstrapSelector2 = Object(__WEBPACK_IMPORTED_MODULE_8__selectors_bootstrapSelector__[\"a\" /* default */])(state),\n bam = _bootstrapSelector2.bam;\n\n var passOneIdToken = Object(__WEBPACK_IMPORTED_MODULE_14__selectors_authenticationSelectors__[\"n\" /* passOneIdTokenSelector */])(state);\n\n var _routingSelector4 = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_routingSelector__[\"a\" /* default */])(state),\n locationBeforeTransitions = _routingSelector4.locationBeforeTransitions;\n\n var _ref10 = locationBeforeTransitions || {},\n query = _ref10.query;\n\n var isOneIdLoggedIn = Object(__WEBPACK_IMPORTED_MODULE_13__selectors_oneIdSelector__[\"f\" /* oneIdLoggedInSelector */])(state);\n var oneIdToken = Object(__WEBPACK_IMPORTED_MODULE_13__selectors_oneIdSelector__[\"g\" /* oneIdTokenSelector */])(state);\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"X\" /* createStartCheckBAMAuthenticationAction */])());\n return new __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a(function () {\n var _ref11 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(resolve) {\n var geolocationKey, subscriptionsKey, sessionTokenKey, userTrackingKey, result, requests, videoPlayer, geo, complete, defaultActions, removeRequest, location, appContainerEl, containerId, el, elCnt, eventRes, config;\n return regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n geolocationKey = 'geolocation';\n subscriptionsKey = 'subscriptions';\n sessionTokenKey = 'sessionToken';\n userTrackingKey = 'userTrackingInformation';\n result = {};\n requests = requestsArg || [geolocationKey, subscriptionsKey, sessionTokenKey, userTrackingKey];\n videoPlayer = new __WEBPACK_IMPORTED_MODULE_19__webapp_common_video_player__[\"a\" /* default */]({\n bamPlayerOptions: query[__WEBPACK_IMPORTED_MODULE_2__enums__[\"t\" /* Flags */].BAM_ENV] ? _extends({}, bam, { env: query[__WEBPACK_IMPORTED_MODULE_2__enums__[\"t\" /* Flags */].BAM_ENV] }) : bam\n });\n geo = Object(__WEBPACK_IMPORTED_MODULE_22__lib_util_localStorage__[\"a\" /* get */])(__WEBPACK_IMPORTED_MODULE_3__constants__[\"e\" /* GEO_LOCATION_KEY */]);\n\n complete = function complete() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"J\" /* createCompleteCheckBAMAuthenticationAction */])());\n __WEBPACK_IMPORTED_MODULE_23__lib_util_perf__[\"b\" /* measureAndTime */](perfName);\n resolve(result);\n };\n\n defaultActions = function defaultActions() {\n if (!geo) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"R\" /* createGetGeoLocationAction */])());\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"P\" /* createGetBAMAuthenticationInfoAction */])());\n complete();\n };\n\n removeRequest = function removeRequest(list, entry) {\n var index = list.indexOf(entry);\n if (index > -1) {\n list.splice(index, 1);\n }\n };\n\n if (requests.indexOf(geolocationKey) > -1) {\n if (geo) {\n // use cached one\n location = geo;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"R\" /* createGetGeoLocationAction */])(location));\n result[geolocationKey] = location;\n removeRequest(requests, geolocationKey);\n } else {\n videoPlayer.once(__WEBPACK_IMPORTED_MODULE_19__webapp_common_video_player__[\"a\" /* default */].Events.GEOLOCATION_READY, function () {\n var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref12$body = _ref12.body;\n\n _ref12$body = _ref12$body === undefined ? {} : _ref12$body;\n var location = _ref12$body.location;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"R\" /* createGetGeoLocationAction */])(location));\n result[geolocationKey] = location;\n if (Object.keys(result).length >= requests.length) {\n complete();\n }\n });\n }\n }\n if (requests.indexOf(subscriptionsKey) > -1) {\n if (!isOneIdLoggedIn) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"P\" /* createGetBAMAuthenticationInfoAction */])());\n removeRequest(requests, subscriptionsKey);\n } else {\n videoPlayer.once(__WEBPACK_IMPORTED_MODULE_19__webapp_common_video_player__[\"a\" /* default */].Events.SUBSCRIPTIONS_READY, function () {\n var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref13$body = _ref13.body;\n\n _ref13$body = _ref13$body === undefined ? {} : _ref13$body;\n var subscriptions = _ref13$body.subscriptions;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"P\" /* createGetBAMAuthenticationInfoAction */])(subscriptions));\n var newState = getState();\n var entitlements = Object(__WEBPACK_IMPORTED_MODULE_13__selectors_oneIdSelector__[\"d\" /* oneIdEntitlementsSelector */])(newState);\n var bamSessionToken = Object(__WEBPACK_IMPORTED_MODULE_14__selectors_authenticationSelectors__[\"j\" /* bamSessionTokenSelector */])(newState);\n var hasSuperBundle = Object(__WEBPACK_IMPORTED_MODULE_14__selectors_authenticationSelectors__[\"q\" /* superBundleSelector */])(newState);\n var hasTDAEntitlement = Object(__WEBPACK_IMPORTED_MODULE_25__lib_auth_hasTDA__[\"a\" /* default */])(bamSessionToken);\n var isAuthenticated = entitlements && entitlements.length > 0 || hasTDAEntitlement;\n\n var _oneIdSelector = Object(__WEBPACK_IMPORTED_MODULE_13__selectors_oneIdSelector__[\"a\" /* default */])(getState()),\n swid = _oneIdSelector.swid;\n\n Object(__WEBPACK_IMPORTED_MODULE_22__lib_util_localStorage__[\"d\" /* set */])(__WEBPACK_IMPORTED_MODULE_3__constants__[\"q\" /* SUB_KEY */], { swid: swid, subscriptions: subscriptions }, 24 * 60 * 60);\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__oneIdActions__[\"j\" /* completeOneIDAuthentication */])(isAuthenticated, entitlements, hasTDAEntitlement, hasSuperBundle, true));\n result[subscriptionsKey] = subscriptions;\n if (Object.keys(result).length >= requests.length) {\n complete();\n }\n });\n }\n }\n\n if (requests.indexOf(userTrackingKey) > -1) {\n videoPlayer.once(__WEBPACK_IMPORTED_MODULE_19__webapp_common_video_player__[\"a\" /* default */].Events.USER_TRACKING_INFORMATION_READY, function (_ref14) {\n var _ref14$body = _ref14.body,\n body = _ref14$body === undefined ? {} : _ref14$body;\n\n Object(__WEBPACK_IMPORTED_MODULE_22__lib_util_localStorage__[\"d\" /* set */])(__WEBPACK_IMPORTED_MODULE_3__constants__[\"r\" /* USER_TRACKING_KEY */], _extends({}, body), 24 * 60 * 60);\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"T\" /* createGetUserTrackingAction */])(body));\n result[userTrackingKey] = body;\n if (Object.keys(result).length >= requests.length) {\n complete();\n }\n });\n }\n\n if (requests.indexOf(sessionTokenKey) > -1) {\n if (!isOneIdLoggedIn) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"Q\" /* createGetBAMSessionTokenAction */])());\n removeRequest(requests, sessionTokenKey);\n } else {\n videoPlayer.once(__WEBPACK_IMPORTED_MODULE_19__webapp_common_video_player__[\"a\" /* default */].Events.SESSIONTOKEN_READY, function () {\n var _ref15 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref15$body = _ref15.body;\n\n _ref15$body = _ref15$body === undefined ? {} : _ref15$body;\n var token = _ref15$body.token;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__authenticationActions__[\"Q\" /* createGetBAMSessionTokenAction */])(token));\n // NOTE: Setting the sessionToken in temporary storage for subsequent calls to have quick access\n // On every page transition/load a new sessionToken will always be requested and re-assigned.\n Object(__WEBPACK_IMPORTED_MODULE_22__lib_util_localStorage__[\"d\" /* set */])(__WEBPACK_IMPORTED_MODULE_3__constants__[\"o\" /* SESSION_TOKEN_KEY */], token, 3600);\n result[sessionTokenKey] = token;\n if (Object.keys(result).length >= requests.length) {\n complete();\n }\n });\n }\n }\n\n if (requests.length) {\n _context5.next = 19;\n break;\n }\n\n defaultActions();\n _context5.next = 41;\n break;\n\n case 19:\n _context5.prev = 19;\n appContainerEl = document.getElementById('app');\n containerId = containerIdArg;\n el = document.getElementById(containerId);\n elCnt = 0;\n\n if (el) {\n while (el) {\n elCnt += 1;\n containerId = '' + containerIdArg + elCnt;\n el = document.getElementById(containerId);\n }\n }\n el = document.createElement('div');\n el.id = containerId;\n el.className = containerIdArg;\n appContainerEl.appendChild(el);\n eventRes = [userTrackingKey];\n\n if (isOneIdLoggedIn) {\n eventRes = [geolocationKey, subscriptionsKey, sessionTokenKey, userTrackingKey];\n }\n config = _extends({\n container: '#' + containerId,\n customProps: {}\n }, Object(__WEBPACK_IMPORTED_MODULE_21__lib_util_getBamAuthConfig__[\"a\" /* default */])(oneIdToken, passOneIdToken), {\n requests: eventRes,\n transactionId: transactionId,\n timeout: !(requests.length === 1 && requests.indexOf(subscriptionsKey) > -1)\n });\n\n console.log('createSDKWrapperConfig', config); // eslint-disable-line no-console\n _context5.next = 35;\n return videoPlayer.createSDKWrapper(config);\n\n case 35:\n _context5.next = 41;\n break;\n\n case 37:\n _context5.prev = 37;\n _context5.t0 = _context5['catch'](19);\n\n console.error(_context5.t0);\n defaultActions();\n\n case 41:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, _this5, [[19, 37]]);\n }));\n\n return function (_x10) {\n return _ref11.apply(this, arguments);\n };\n }());\n };\n}\n\n/**\n * @description Action to trigger watch web stream picker\n * It is not being used in currently. It has been replaced with .com stream picker.\n * We should remove it after .com stream picker is stable.\n * @param {object} content\n */\nfunction createSelectMultipleStreamsAction() {\n var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return function (dispatch) {\n if (content.streams.length) {\n dispatch(displayModalMessage(__WEBPACK_IMPORTED_MODULE_2__enums__[\"w\" /* ModalType */].BROADCAST_PICKER, content));\n }\n };\n}\n\nfunction pickerStreamsSelect(pickerStreams, pickerStreamsEventId) {\n return {\n type: PICKER_STREAMS_SELECT,\n pickerStreams: pickerStreams,\n pickerStreamsEventId: pickerStreamsEventId\n };\n}\n\nfunction pickerStreamsUnSelect() {\n return {\n type: PICKER_STREAMS_UNSELECT\n };\n}\n\nfunction pickerStreamsSelectError(error) {\n return {\n type: PICKER_STREAMS_SELECT_ERROR,\n error: error\n };\n}\n\nfunction openPickerSuccess(payload) {\n return {\n type: OPEN_PICKER_SUCCESS,\n payload: payload\n };\n}\n\nfunction openPickerError(error) {\n return {\n type: OPEN_PICKER_ERROR,\n error: error\n };\n}\n\nfunction pickerAutoSelect(stream) {\n return {\n type: PICKER_AUTO_SELECT,\n stream: stream\n };\n}\nfunction pickerStateClear() {\n return {\n type: PICKER_STATE_CLEAR\n };\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = injectIntl;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_hoist_non_react_statics__ = __webpack_require__(105);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_hoist_non_react_statics___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_hoist_non_react_statics__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_intl__ = __webpack_require__(95);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return __WEBPACK_IMPORTED_MODULE_2_react_intl__[\"e\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\nfunction injectIntl(WrappedComponent) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var OrigInjectIntl = Object(__WEBPACK_IMPORTED_MODULE_2_react_intl__[\"d\" /* injectIntl */])(WrappedComponent, options);\n\n var InjectIntl = function (_PureComponent) {\n _inherits(InjectIntl, _PureComponent);\n\n function InjectIntl() {\n _classCallCheck(this, InjectIntl);\n\n return _possibleConstructorReturn(this, (InjectIntl.__proto__ || Object.getPrototypeOf(InjectIntl)).apply(this, arguments));\n }\n\n _createClass(InjectIntl, [{\n key: 'getWrappedInstance',\n value: function getWrappedInstance() {\n return this.ref.getWrappedInstance();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(OrigInjectIntl, _extends({\n ref: function ref(inst) {\n _this2.ref = inst;\n }\n }, this.props, {\n messages: this.context.messages\n }));\n }\n }]);\n\n return InjectIntl;\n }(__WEBPACK_IMPORTED_MODULE_0_react__[\"PureComponent\"]);\n\n InjectIntl.contextTypes = {\n messages: __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].object\n };\n\n return __WEBPACK_IMPORTED_MODULE_1_hoist_non_react_statics___default()(InjectIntl, WrappedComponent);\n}\n\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar DOMProperty = __webpack_require__(82);\nvar ReactDOMComponentFlags = __webpack_require__(230);\n\nvar invariant = __webpack_require__(5);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n true ? false ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? false ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (immutable) */ __webpack_exports__[\"G\"] = createAuthenticator;\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"v\", function() { return START_ADOBEPASS_INITIALIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return COMPLETE_ADOBEPASS_INITIALIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return START_CHECK_AUTHENTICATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return COMPLETE_CHECK_AUTHENTICATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"w\", function() { return START_AUTHENTICATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return COMPLETE_AUTHENTICATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return START_AUTHORIZATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return COMPLETE_AUTHORIZATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"u\", function() { return REQUEST_PROVIDERS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return RECEIVE_PROVIDERS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return DISPLAY_PROVIDER_DIALOG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return CLOSE_PROVIDER_DIALOG; });\n/* unused harmony export SELECT_PROVIDER */\n/* unused harmony export START_LOGOUT */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return COMPLETE_LOGOUT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return GET_AUTHENTICATION_INFO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"r\", function() { return GET_METADATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return COMPLETE_PREAUTH_CHECK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"q\", function() { return GET_LOCATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ADOBEPASS_ERROR_EVENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"z\", function() { return START_CHECK_BAM_AUTHENTICATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return COMPLETE_CHECK_BAM_AUTHENTICATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return GET_BAM_AUTHENTICATION_INFO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return GET_GEOLOCATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return GET_BAM_SESSION_TOKEN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"s\", function() { return GET_USER_TRACKING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"A\", function() { return START_CHECK_IP_AUTHENTICATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return COMPLETE_CHECK_IP_AUTHENTICATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return GET_IP_AUTHENTICATION_INFO; });\n/* harmony export (immutable) */ __webpack_exports__[\"P\"] = createGetBAMAuthenticationInfoAction;\n/* harmony export (immutable) */ __webpack_exports__[\"R\"] = createGetGeoLocationAction;\n/* harmony export (immutable) */ __webpack_exports__[\"Q\"] = createGetBAMSessionTokenAction;\n/* harmony export (immutable) */ __webpack_exports__[\"T\"] = createGetUserTrackingAction;\n/* harmony export (immutable) */ __webpack_exports__[\"X\"] = createStartCheckBAMAuthenticationAction;\n/* harmony export (immutable) */ __webpack_exports__[\"J\"] = createCompleteCheckBAMAuthenticationAction;\n/* unused harmony export createStartCheckIpAuthenticationAction */\n/* harmony export (immutable) */ __webpack_exports__[\"K\"] = createCompleteCheckIpAuthenticationAction;\n/* unused harmony export createGetIpAuthenticationInfoAction */\n/* unused harmony export createGetLocationAction */\n/* harmony export (immutable) */ __webpack_exports__[\"S\"] = createGetLocationFromUserDataAction;\n/* unused harmony export createReceiveProvidersAction */\n/* unused harmony export createRequestProvidersAction */\n/* harmony export (immutable) */ __webpack_exports__[\"Z\"] = getProviders;\n/* harmony export (immutable) */ __webpack_exports__[\"W\"] = createSmartIpAuthenticationAction;\n/* unused harmony export createStartAdobePassInitializeAction */\n/* unused harmony export createCompleteAdobePassInitializeAction */\n/* unused harmony export createStartCheckAuthenticationAction */\n/* harmony export (immutable) */ __webpack_exports__[\"L\"] = createCompletePreauthCheckAction;\n/* unused harmony export checkPreauthResources */\n/* harmony export (immutable) */ __webpack_exports__[\"I\"] = createCompleteCheckAuthenticationAction;\n/* unused harmony export createStartAuthenticationAction */\n/* unused harmony export createCompleteAuthenticationAction */\n/* unused harmony export createStartAuthorizationAction */\n/* unused harmony export createCompleteAuthorizationAction */\n/* harmony export (immutable) */ __webpack_exports__[\"B\"] = createAdobePassErrorAction;\n/* harmony export (immutable) */ __webpack_exports__[\"N\"] = createDisplayProviderDialogAction;\n/* harmony export (immutable) */ __webpack_exports__[\"H\"] = createCloseProviderDialogAction;\n/* unused harmony export createStartLogoutAction */\n/* unused harmony export createCompleteLogoutAction */\n/* harmony export (immutable) */ __webpack_exports__[\"C\"] = createAndPerformLogoutAction;\n/* harmony export (immutable) */ __webpack_exports__[\"O\"] = createGetAuthenticationInfoAction;\n/* unused harmony export createGetMetadataAction */\n/* unused harmony export listenForAdobePassErrorEvent */\n/* unused harmony export initializeAdobePassAuthenticator */\n/* unused harmony export checkAdobePassAuthentication */\n/* harmony export (immutable) */ __webpack_exports__[\"Y\"] = getAdobePassAuthenticationInfo;\n/* unused harmony export getAdobePassMetadata */\n/* harmony export (immutable) */ __webpack_exports__[\"F\"] = createAsyncGetMetadataAction;\n/* harmony export (immutable) */ __webpack_exports__[\"V\"] = createSmartAdobePassInitializeAction;\n/* harmony export (immutable) */ __webpack_exports__[\"D\"] = createAndPerformStartAuthenticationAction;\n/* harmony export (immutable) */ __webpack_exports__[\"E\"] = createAndPerformStartAuthorizationAction;\n/* harmony export (immutable) */ __webpack_exports__[\"U\"] = createSelectProviderAction;\n/* unused harmony export createAccountSelectorAction */\n/* harmony export (immutable) */ __webpack_exports__[\"M\"] = createDTCPaywallAction;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_findIndex__ = __webpack_require__(208);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_findIndex___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_findIndex__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_auth_Authenticator__ = __webpack_require__(318);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__lib_auth_PreAuthZ__ = __webpack_require__(321);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__lib_auth_streamHasDTCPackage__ = __webpack_require__(143);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__lib_auth_streamHasAuthType__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__lib_auth_getContentId__ = __webpack_require__(60);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__lib_metrics_untimelyLogoutTracker__ = __webpack_require__(668);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__lib_api__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__lib_format_dateFormat__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__lib_format_getAdobePassRedirectUrl__ = __webpack_require__(297);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__lib_format_addQueryToUrl__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__lib_omniture__ = __webpack_require__(34);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__lib_util_getBamAuthConfig__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__lib_oneId__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__selectors_bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__selectors_oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__selectors_selectedContentSelector__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__selectors_pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__selectors_flagsSelector__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__selectors_providerSelector__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__selectors_routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__selectors_networksSelector__ = __webpack_require__(671);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__selectors_analyticsSelectors__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30_lodash_uniq__ = __webpack_require__(94);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30_lodash_uniq___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_30_lodash_uniq__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31_lodash_chunk__ = __webpack_require__(672);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31_lodash_chunk___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_31_lodash_chunk__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__appActions__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__page_actions__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__scheduleModule_actions__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__scoringActions__ = __webpack_require__(212);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__oneIdActions__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__page_AccountSelector__ = __webpack_require__(324);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__webapp_common_video_player__ = __webpack_require__(116);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction createAuthenticator(type) {\n return function (dispatch, getState) {\n if (type === __WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].IP) {\n return __WEBPACK_IMPORTED_MODULE_4__lib_auth_Authenticator__[\"a\" /* default */].ip({ partner: 'watchespn', platform: 'web' });\n }\n return __WEBPACK_IMPORTED_MODULE_4__lib_auth_Authenticator__[\"a\" /* default */].adobe({\n displayProviderDialogImpl: function displayProviderDialogImpl() {},\n elementId: 'ae_container',\n environment: Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"b\" /* adobePassEnvSelector */])(getState()),\n redirectUrl: window.location.href,\n refreshless: true\n });\n };\n}\n\n// Reduxified Adobe Pass Actions\nvar START_ADOBEPASS_INITIALIZE = 'START_ADOBEPASS_INITIALIZE';\nvar COMPLETE_ADOBEPASS_INITIALIZE = 'COMPLETE_ADOBEPASS_INITIALIZE';\nvar START_CHECK_AUTHENTICATION = 'START_CHECK_AUTHENTICATION';\nvar COMPLETE_CHECK_AUTHENTICATION = 'COMPLETE_CHECK_AUTHENTICATION';\nvar START_AUTHENTICATION = 'START_AUTHENTICATION';\nvar COMPLETE_AUTHENTICATION = 'COMPLETE_AUTHENTICATION';\nvar START_AUTHORIZATION = 'START_AUTHORIZATION';\nvar COMPLETE_AUTHORIZATION = 'COMPLETE_AUTHORIZATION';\nvar REQUEST_PROVIDERS = 'REQUEST_PROVIDERS';\nvar RECEIVE_PROVIDERS = 'RECEIVE_PROVIDERS';\nvar DISPLAY_PROVIDER_DIALOG = 'DISPLAY_PROVIDER_DIALOG';\nvar CLOSE_PROVIDER_DIALOG = 'CLOSE_PROVIDER_DIALOG';\nvar SELECT_PROVIDER = 'SELECT_PROVIDER';\nvar START_LOGOUT = 'START_LOGOUT';\nvar COMPLETE_LOGOUT = 'COMPLETE_LOGOUT';\nvar GET_AUTHENTICATION_INFO = 'GET_AUTHENTICATION_INFO';\nvar GET_METADATA = 'GET_METADATA';\nvar COMPLETE_PREAUTH_CHECK = 'COMPLETE_PREAUTH_CHECK';\nvar GET_LOCATION = 'GET_LOCATION';\nvar ADOBEPASS_ERROR_EVENT = 'ADOBEPASS_ERROR_EVENT';\n\n// BAM\nvar START_CHECK_BAM_AUTHENTICATION = 'START_CHECK_BAM_AUTHENTICATION';\nvar COMPLETE_CHECK_BAM_AUTHENTICATION = 'COMPLETE_CHECK_BAM_AUTHENTICATION';\nvar GET_BAM_AUTHENTICATION_INFO = 'GET_BAM_AUTHENTICATION_INFO';\nvar GET_GEOLOCATION = 'GET_GEOLOCATION';\nvar GET_BAM_SESSION_TOKEN = 'GET_BAM_SESSION_TOKEN';\nvar GET_USER_TRACKING = 'GET_USER_TRACKING';\n\n// Reduxified IP actionsexport\nvar START_CHECK_IP_AUTHENTICATION = 'START_CHECK_IP_AUTHENTICATION';\nvar COMPLETE_CHECK_IP_AUTHENTICATION = 'COMPLETE_CHECK_IP_AUTHENTICATION';\nvar GET_IP_AUTHENTICATION_INFO = 'GET_IP_AUTHENTICATION_INFO';\n\nfunction createGetBAMAuthenticationInfoAction(subscriptions) {\n return {\n type: GET_BAM_AUTHENTICATION_INFO,\n subscriptions: subscriptions\n };\n}\n\nfunction createGetGeoLocationAction(geo) {\n return {\n type: GET_GEOLOCATION,\n geo: geo\n };\n}\n\nfunction createGetBAMSessionTokenAction(sessionToken) {\n return {\n type: GET_BAM_SESSION_TOKEN,\n session: {\n token: sessionToken,\n completeTime: Date.now()\n }\n };\n}\n\nfunction createGetUserTrackingAction(userTracking) {\n return {\n type: GET_USER_TRACKING,\n userTracking: userTracking\n };\n}\n\nfunction createStartCheckBAMAuthenticationAction() {\n return {\n type: START_CHECK_BAM_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nfunction createCompleteCheckBAMAuthenticationAction() {\n return {\n type: COMPLETE_CHECK_BAM_AUTHENTICATION,\n completeTime: Date.now()\n };\n}\n\n// define ip authentication actions\nfunction createStartCheckIpAuthenticationAction() {\n return {\n type: START_CHECK_IP_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nfunction createCompleteCheckIpAuthenticationAction(isAuthenticated) {\n return {\n type: COMPLETE_CHECK_IP_AUTHENTICATION,\n directive: isAuthenticated === true ? 'add' : 'remove',\n authType: 'isp',\n startTime: Date.now()\n };\n}\n\nfunction createGetIpAuthenticationInfoAction(info) {\n return {\n type: GET_IP_AUTHENTICATION_INFO,\n info: info\n };\n}\n\nfunction createGetLocationAction(location) {\n return {\n type: GET_LOCATION,\n location: location\n };\n}\n\nfunction createGetLocationFromUserDataAction() {\n return function (dispatch) {\n return dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].IP)).getLocation().then(function (location) {\n if (location && (typeof location === 'undefined' ? 'undefined' : _typeof(location)) === 'object') {\n location.timeZone = __WEBPACK_IMPORTED_MODULE_12__lib_format_dateFormat__[\"a\" /* default */].getTimezone();\n dispatch(createGetLocationAction(location));\n }\n });\n };\n}\n\nfunction createReceiveProvidersAction(providers) {\n return {\n type: RECEIVE_PROVIDERS,\n providers: providers,\n completeTime: Date.now()\n };\n}\n\nfunction createRequestProvidersAction() {\n return {\n type: REQUEST_PROVIDERS,\n startTime: Date.now()\n };\n}\n\nvar compareByName = function compareByName(providerA, providerB) {\n return providerA.name.toLowerCase() > providerB.name.toLowerCase() ? 1 : -1;\n};\nfunction getProviders() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n country = _ref.country,\n partner = _ref.partner,\n platform = _ref.platform,\n version = _ref.version;\n\n return function (dispatch, getState) {\n var state = getState();\n var opts = {\n partner: partner,\n platform: platform,\n version: version,\n country: country || Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"h\" /* countrySelector */])(state),\n passenv: Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"b\" /* adobePassEnvSelector */])(state)\n };\n var providersFromState = Object(__WEBPACK_IMPORTED_MODULE_26__selectors_providerSelector__[\"c\" /* providersSelector */])(state);\n var providerPromise = void 0;\n dispatch(createRequestProvidersAction());\n if (providersFromState.length > 0) {\n providerPromise = __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(providersFromState);\n } else {\n providerPromise = __WEBPACK_IMPORTED_MODULE_11__lib_api__[\"b\" /* ClientAPI */].getProviders(opts).then(function () {\n var providersFromApi = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return providersFromApi.sort(compareByName);\n });\n }\n return providerPromise.then(function (providers) {\n dispatch(createReceiveProvidersAction(providers));\n return providers;\n });\n };\n}\n\nfunction createSmartIpAuthenticationAction() {\n var _this = this;\n\n return function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch, getState) {\n var ipAuthenticator, isAuthenticated, _ref3, _ref4, providers, ipInfo, orderedProviders, providerIndex, country, provider, providerInfo;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__[\"a\" /* markStart */]('createSmartIpAuthenticationAction');\n ipAuthenticator = dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].IP));\n _context.next = 4;\n return dispatch(createGetLocationFromUserDataAction());\n\n case 4:\n dispatch(createStartCheckIpAuthenticationAction());\n _context.next = 7;\n return ipAuthenticator.checkAuthentication();\n\n case 7:\n isAuthenticated = _context.sent;\n\n __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__[\"b\" /* measureAndTime */]('createSmartIpAuthenticationAction');\n dispatch(createCompleteCheckIpAuthenticationAction(isAuthenticated));\n\n if (!(isAuthenticated === true)) {\n _context.next = 31;\n break;\n }\n\n _context.next = 13;\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.all([dispatch(getProviders()), ipAuthenticator.getAuthenticationInfo()]);\n\n case 13:\n _ref3 = _context.sent;\n _ref4 = _slicedToArray(_ref3, 2);\n providers = _ref4[0];\n ipInfo = _ref4[1];\n orderedProviders = providers;\n providerIndex = __WEBPACK_IMPORTED_MODULE_1_lodash_findIndex___default()(providers, function (provider) {\n return provider.ispId === ipInfo.mvpd;\n });\n\n // if the provider is not found in the provider list, check the legacy \"watchespn-flash\" client,\n // which contains ISP only affs that \"watchespn-web\" does not\n\n if (!(providerIndex === -1)) {\n _context.next = 26;\n break;\n }\n\n country = Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"h\" /* countrySelector */])(getState());\n _context.next = 23;\n return __WEBPACK_IMPORTED_MODULE_11__lib_api__[\"b\" /* ClientAPI */].getProvider({ abbreviation: ipInfo.mvpd, country: country });\n\n case 23:\n provider = _context.sent;\n\n if (provider) {\n orderedProviders.unshift(provider);\n dispatch(createReceiveProvidersAction(orderedProviders));\n dispatch(createGetIpAuthenticationInfoAction(provider));\n }\n return _context.abrupt('return', provider);\n\n case 26:\n providerInfo = providers[providerIndex];\n\n if (providerIndex > 0) {\n providers.splice(providerIndex, 1); // Removes currIndex from providers array\n orderedProviders = [providerInfo].concat(_toConsumableArray(providers));\n }\n dispatch(createReceiveProvidersAction(orderedProviders));\n dispatch(createGetIpAuthenticationInfoAction(providerInfo));\n return _context.abrupt('return', providerInfo);\n\n case 31:\n return _context.abrupt('return', null);\n\n case 32:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this);\n }));\n\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }();\n}\n\n// Define Adobe Pass Authentication Actions\nfunction createStartAdobePassInitializeAction() {\n return {\n type: START_ADOBEPASS_INITIALIZE,\n startTime: Date.now()\n };\n}\n\nfunction createCompleteAdobePassInitializeAction() {\n return {\n type: COMPLETE_ADOBEPASS_INITIALIZE,\n completeTime: Date.now()\n };\n}\n\n// Define Adobe Pass Check Authentication Actions\nfunction createStartCheckAuthenticationAction() {\n return {\n type: START_CHECK_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nfunction createCompletePreauthCheckAction() {\n var resources = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return {\n type: COMPLETE_PREAUTH_CHECK,\n resources: resources\n };\n}\n\nfunction checkPreauthResources() {\n var _this2 = this;\n\n var resources = __WEBPACK_IMPORTED_MODULE_5__lib_auth_PreAuthZ__[\"a\" /* default */].getResources();\n return function () {\n var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(dispatch, getState) {\n var state, isIntl, _bootstrapSelector, _bootstrapSelector$ad, preauthorizeNetworksEnabled, _bootstrapSelector$ad2, preauthorizeNetworks, allAdobeIds, adobeAuthenticator, networks, chunkedAdobeIds, index, preAuthResources, channels, _chunkedAdobeIds, _index, _preAuthResources;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n state = getState();\n isIntl = Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"u\" /* isIntlSelector */])(state);\n _bootstrapSelector = Object(__WEBPACK_IMPORTED_MODULE_19__selectors_bootstrapSelector__[\"a\" /* default */])(state), _bootstrapSelector$ad = _bootstrapSelector.adobePass;\n _bootstrapSelector$ad = _bootstrapSelector$ad === undefined ? {} : _bootstrapSelector$ad;\n preauthorizeNetworksEnabled = _bootstrapSelector$ad.preauthorizeNetworksEnabled, _bootstrapSelector$ad2 = _bootstrapSelector$ad.preauthorizeNetworks, preauthorizeNetworks = _bootstrapSelector$ad2 === undefined ? [] : _bootstrapSelector$ad2;\n\n if (!isIntl && !preauthorizeNetworksEnabled) {\n // if preauth disabled for domestic, use static list of resources\n resources = preauthorizeNetworks;\n }\n\n if (resources) {\n _context2.next = 41;\n break;\n }\n\n allAdobeIds = void 0;\n adobeAuthenticator = dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE));\n\n if (!isIntl) {\n _context2.next = 26;\n break;\n }\n\n networks = Object(__WEBPACK_IMPORTED_MODULE_28__selectors_networksSelector__[\"a\" /* default */])(state) || [];\n\n allAdobeIds = __WEBPACK_IMPORTED_MODULE_30_lodash_uniq___default()(networks.filter(function (_ref6) {\n var isActive = _ref6.isActive,\n adobeResource = _ref6.adobeResource;\n return isActive && adobeResource;\n }).map(function (_ref7) {\n var adobeResource = _ref7.adobeResource;\n return adobeResource;\n }));\n chunkedAdobeIds = __WEBPACK_IMPORTED_MODULE_31_lodash_chunk___default()(allAdobeIds, __WEBPACK_IMPORTED_MODULE_5__lib_auth_PreAuthZ__[\"a\" /* default */].PREAUTH_MAX_LENGTH);\n // FIXME: it started to return the same preauthorized resources in the subsequent chunked requests..\n // https://tve.zendesk.com/hc/requests/34976\n /**\n * There cannot be multiple \"adobeAuthenticator.checkPreauthorizedResources\" in flight since\n * there is only one global function to handle the preauthz callback in `watch-authenticators-js`.\n * For this reason, we await in a conventional for loop until each \"checkPreauthorizedResources\" completes\n */\n\n index = 0;\n index;\n\n case 15:\n if (!(index < chunkedAdobeIds.length)) {\n _context2.next = 23;\n break;\n }\n\n _context2.next = 18;\n return adobeAuthenticator.checkPreauthorizedResources.apply(adobeAuthenticator, _toConsumableArray(chunkedAdobeIds[index]));\n\n case 18:\n preAuthResources = _context2.sent;\n\n if (preAuthResources.length > 0) {\n resources = (resources || []).concat(preAuthResources);\n }\n\n case 20:\n index += 1;\n _context2.next = 15;\n break;\n\n case 23:\n resources = __WEBPACK_IMPORTED_MODULE_30_lodash_uniq___default()(resources);\n _context2.next = 41;\n break;\n\n case 26:\n channels = getState().schedule.channels || [];\n\n allAdobeIds = __WEBPACK_IMPORTED_MODULE_30_lodash_uniq___default()(channels.map(function (channel) {\n return channel.adobeResource;\n }).filter(function (adobeResource) {\n return !!adobeResource;\n }));\n _chunkedAdobeIds = __WEBPACK_IMPORTED_MODULE_31_lodash_chunk___default()(allAdobeIds, __WEBPACK_IMPORTED_MODULE_5__lib_auth_PreAuthZ__[\"a\" /* default */].PREAUTH_MAX_LENGTH);\n // FIXME: it started to return the same preauthorized resources in the subsequent chunked requests..\n // https://tve.zendesk.com/hc/requests/34976\n /**\n * There cannot be multiple \"adobeAuthenticator.checkPreauthorizedResources\" in flight since\n * there is only one global function to handle the preauthz callback in `watch-authenticators-js`.\n * For this reason, we await in a conventional for loop until each \"checkPreauthorizedResources\" completes\n */\n\n _index = 0;\n _index;\n\n case 31:\n if (!(_index < _chunkedAdobeIds.length)) {\n _context2.next = 39;\n break;\n }\n\n _context2.next = 34;\n return adobeAuthenticator.checkPreauthorizedResources.apply(adobeAuthenticator, _toConsumableArray(_chunkedAdobeIds[_index]));\n\n case 34:\n _preAuthResources = _context2.sent;\n\n if (_preAuthResources.length > 0) {\n resources = (resources || []).concat(_preAuthResources);\n }\n\n case 36:\n _index += 1;\n _context2.next = 31;\n break;\n\n case 39:\n resources = __WEBPACK_IMPORTED_MODULE_30_lodash_uniq___default()(resources);\n if (resources && resources.length) {\n // in case preauthz fails and return invalid data\n __WEBPACK_IMPORTED_MODULE_5__lib_auth_PreAuthZ__[\"a\" /* default */].setResources(resources, 1); // set expiration to 1 day\n if (window.espn_ui && window.espn_ui.Helpers && window.espn_ui.Helpers.watchProviders && window.espn_ui.Helpers.watchProviders.setTVECookies) {\n window.espn_ui.Helpers.watchProviders.setTVECookies(resources);\n }\n }\n\n case 41:\n\n dispatch(createCompletePreauthCheckAction(resources));\n return _context2.abrupt('return', resources);\n\n case 43:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this2);\n }));\n\n return function (_x6, _x7) {\n return _ref5.apply(this, arguments);\n };\n }();\n}\n\nfunction createCompleteCheckAuthenticationAction(isAuthenticated) {\n return {\n type: COMPLETE_CHECK_AUTHENTICATION,\n directive: isAuthenticated === true ? 'add' : 'remove',\n isAuthenticated: isAuthenticated,\n authType: __WEBPACK_IMPORTED_MODULE_3__enums__[\"e\" /* AuthTypes */].MVPD,\n completeTime: Date.now()\n };\n}\n\nfunction createStartAuthenticationAction(content) {\n return {\n type: START_AUTHENTICATION,\n content: content,\n startTime: Date.now()\n };\n}\n\nfunction createCompleteAuthenticationAction(isAuthenticated, mvpd) {\n return {\n type: COMPLETE_AUTHENTICATION,\n directive: isAuthenticated === true ? 'add' : 'remove',\n isAuthenticated: isAuthenticated,\n authType: __WEBPACK_IMPORTED_MODULE_3__enums__[\"e\" /* AuthTypes */].MVPD,\n mvpd: mvpd,\n completeTime: Date.now()\n };\n}\n\nfunction createStartAuthorizationAction(resourceId) {\n return {\n type: START_AUTHORIZATION,\n resourceId: resourceId,\n startTime: Date.now()\n };\n}\n\nfunction createCompleteAuthorizationAction(resourceId, token) {\n return {\n type: COMPLETE_AUTHORIZATION,\n resourceId: resourceId,\n token: token,\n completeTime: Date.now()\n };\n}\n\nfunction createAdobePassErrorAction(error) {\n return {\n type: ADOBEPASS_ERROR_EVENT,\n error: error\n };\n}\n\n// Provider Display and Select Action creators.\n// The Display Provider Dialog action, which is triggered by startAuthentication\nfunction createDisplayProviderDialogAction() {\n return function (dispatch, getState) {\n var state = getState();\n Object(__WEBPACK_IMPORTED_MODULE_15__lib_omniture__[\"n\" /* trackMvpdPicker */])({ isDomestic: Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"s\" /* isDomesticSelector */])(state) });\n dispatch({\n type: DISPLAY_PROVIDER_DIALOG,\n showProviderDialog: true\n });\n };\n}\n\nfunction createCloseProviderDialogAction() {\n var resume = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n return function (dispatch, getState) {\n dispatch({\n type: CLOSE_PROVIDER_DIALOG,\n showProviderDialog: false\n });\n if (resume) {\n var _appSelector = Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"j\" /* default */])(getState()),\n previousContent = _appSelector.previousContent,\n playingStream = _appSelector.playingStream;\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_16__lib_util_isEmpty__[\"a\" /* default */])(playingStream)) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__appActions__[\"A\" /* contentUnSelect */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__appActions__[\"z\" /* contentSelect */])(previousContent));\n }\n }\n };\n}\n\nfunction createStartLogoutAction() {\n return {\n type: START_LOGOUT,\n startTime: Date.now()\n };\n}\n\nfunction createCompleteLogoutAction() {\n __WEBPACK_IMPORTED_MODULE_5__lib_auth_PreAuthZ__[\"a\" /* default */].clear();\n\n return {\n type: COMPLETE_LOGOUT,\n directive: 'remove',\n isAuthenticated: false,\n authType: __WEBPACK_IMPORTED_MODULE_3__enums__[\"e\" /* AuthTypes */].MVPD,\n completeTime: Date.now()\n };\n}\n\nfunction createAndPerformLogoutAction(stream) {\n return function (dispatch, getState) {\n dispatch(createStartLogoutAction());\n __WEBPACK_IMPORTED_MODULE_5__lib_auth_PreAuthZ__[\"a\" /* default */].clear();\n if (window.espn_ui && window.espn_ui.Helpers && window.espn_ui.Helpers.watchProviders && window.espn_ui.Helpers.watchProviders.setTVECookies) {\n window.espn_ui.Helpers.watchProviders.removeTVECookies();\n }\n return dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE)).deauthenticate().then(function (isAuthenticated) {\n // purposefully logged out, forget their authn ttl so we don't track a discrepancy\n __WEBPACK_IMPORTED_MODULE_10__lib_metrics_untimelyLogoutTracker__[\"b\" /* reset */]();\n if (isAuthenticated === false) {\n dispatch(createCompleteLogoutAction());\n if (stream && stream.authTypes) {\n var content = Object(__WEBPACK_IMPORTED_MODULE_22__selectors_selectedContentSelector__[\"a\" /* default */])(getState());\n content.reEmbed = true;\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__appActions__[\"P\" /* streamUnSelect */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__appActions__[\"O\" /* streamSelect */])(stream));\n }\n }\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve();\n });\n };\n}\n\nfunction createGetAuthenticationInfoAction(info) {\n return function (dispatch, getState) {\n var state = getState();\n var userAuth = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__[\"r\" /* userAuthSelector */])(state);\n var isDomestic = Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"s\" /* isDomesticSelector */])(state);\n var entitlementsTracking = Object(__WEBPACK_IMPORTED_MODULE_29__selectors_analyticsSelectors__[\"c\" /* entitlementsTrackingSelector */])(state);\n Object(__WEBPACK_IMPORTED_MODULE_15__lib_omniture__[\"j\" /* trackAuthenticationComplete */])({ userAuth: userAuth, provider: info, entitlementsTracking: entitlementsTracking, isDomestic: isDomestic });\n dispatch({\n type: GET_AUTHENTICATION_INFO,\n info: info\n });\n };\n}\n\nfunction createGetMetadataAction(key, value) {\n return {\n type: GET_METADATA,\n key: key,\n value: value\n };\n}\n\nfunction listenForAdobePassErrorEvent() {\n return function (dispatch) {\n return dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE)).onErrorEvent(function (errorData) {\n dispatch(createAdobePassErrorAction(errorData));\n });\n };\n}\n\nfunction initializeAdobePassAuthenticator() {\n return function (dispatch) {\n dispatch(createStartAdobePassInitializeAction());\n dispatch(listenForAdobePassErrorEvent());\n return dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE)).initialize().then(function (initialized) {\n if (initialized) {\n dispatch(createCompleteAdobePassInitializeAction());\n }\n return initialized;\n });\n };\n}\n\nfunction checkAdobePassAuthentication() {\n return function (dispatch, getState) {\n var adobePassInitialized = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__[\"c\" /* adobePassInitializedSelector */])(getState());\n if (!adobePassInitialized) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(false);\n }\n dispatch(createStartCheckAuthenticationAction());\n return dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE)).checkAuthentication().then(function (isAuthenticated) {\n dispatch(createCompleteCheckAuthenticationAction(isAuthenticated));\n return isAuthenticated;\n });\n };\n}\n\nfunction getAdobePassAuthenticationInfo() {\n return function (dispatch) {\n return dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE)).getAuthenticationInfo();\n };\n}\n\nfunction getAdobePassMetadata(key) {\n return function (dispatch) {\n return dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE)).getMetadata(key);\n };\n}\n\nfunction createAsyncGetMetadataAction(key) {\n return function (dispatch) {\n return dispatch(getAdobePassMetadata(key)).then(function () {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '' + Math.random();\n\n dispatch(createGetMetadataAction(key, value));\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(value);\n }, function (error) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.reject(error);\n });\n };\n}\n\n// Initializes Adobe, checks authentication, then gets provider list if not authenticated.\n// Called on page load\nfunction createSmartAdobePassInitializeAction(routerParams) {\n var _this3 = this;\n\n return function () {\n var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(dispatch, getState) {\n var isIntl, preAuthResources, state, isAuthenticated, info, providersFromApi, providerInfo, _appSelector2, lang, _routingSelector, locationBeforeTransitions, _pageSelector, pageId, _ref10, _ref10$query, query, packageId, packageTier, pkg, packageFilter;\n\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__[\"a\" /* markStart */]('createSmartAdobePassInitializeAction');\n isIntl = Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"u\" /* isIntlSelector */])(getState());\n\n if (!isIntl) {\n // check and store preauthz resource before awaiting async functions\n preAuthResources = __WEBPACK_IMPORTED_MODULE_5__lib_auth_PreAuthZ__[\"a\" /* default */].getResources();\n\n if (preAuthResources) {\n dispatch(createCompletePreauthCheckAction(preAuthResources));\n }\n }\n _context3.next = 5;\n return dispatch(initializeAdobePassAuthenticator());\n\n case 5:\n _context3.next = 7;\n return dispatch(checkAdobePassAuthentication());\n\n case 7:\n _context3.next = 9;\n return dispatch(getProviders());\n\n case 9:\n // make sure to grab from `getState()` not from cached one\n state = getState();\n isAuthenticated = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__[\"a\" /* adobePassAuthenticatedSelector */])(state);\n\n if (!isAuthenticated) {\n _context3.next = 53;\n break;\n }\n\n _context3.next = 14;\n return dispatch(getAdobePassAuthenticationInfo());\n\n case 14:\n info = _context3.sent;\n _context3.next = 17;\n return dispatch(createAsyncGetMetadataAction(__WEBPACK_IMPORTED_MODULE_3__enums__[\"a\" /* AdobePass */].METADATA.UPSTREAM_USERID));\n\n case 17:\n providersFromApi = state.providerDialog.providers;\n providerInfo = providersFromApi.filter(function (_ref9) {\n var abbreviation = _ref9.abbreviation;\n return abbreviation === info.mvpd;\n }).shift();\n // this means you are authenticated for mvpd in a different country\n // if we swallow it, provider dialog won't show up for the current country and users get stuck,\n // so logging out from the current invalid mvpd\n\n if (providerInfo) {\n _context3.next = 22;\n break;\n }\n\n _context3.next = 22;\n return dispatch(createAndPerformLogoutAction());\n\n case 22:\n _appSelector2 = Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"j\" /* default */])(state), lang = _appSelector2.lang;\n _routingSelector = Object(__WEBPACK_IMPORTED_MODULE_27__selectors_routingSelector__[\"a\" /* default */])(state), locationBeforeTransitions = _routingSelector.locationBeforeTransitions;\n _pageSelector = Object(__WEBPACK_IMPORTED_MODULE_24__selectors_pageSelector__[\"c\" /* default */])(state), pageId = _pageSelector.id;\n _ref10 = locationBeforeTransitions || {}, _ref10$query = _ref10.query, query = _ref10$query === undefined ? {} : _ref10$query;\n\n if (!isIntl) {\n _context3.next = 50;\n break;\n }\n\n _context3.next = 29;\n return dispatch(getAdobePassMetadata(__WEBPACK_IMPORTED_MODULE_3__enums__[\"a\" /* AdobePass */].METADATA.PACKAGE_ID));\n\n case 29:\n packageId = _context3.sent;\n _context3.next = 32;\n return dispatch(getAdobePassMetadata(__WEBPACK_IMPORTED_MODULE_3__enums__[\"a\" /* AdobePass */].METADATA.PACKAGE_TIER));\n\n case 32:\n packageTier = _context3.sent;\n\n // consumerKey from the affiliateApi is the package ID.\n pkg = providerInfo.packages.filter(function (item) {\n return item.consumerKey === packageId;\n }).shift();\n\n if (!packageTier && pkg) {\n // packageId from the affiliateApi contains package tier info.\n packageTier = pkg.packageId;\n }\n dispatch(createGetMetadataAction(__WEBPACK_IMPORTED_MODULE_3__enums__[\"a\" /* AdobePass */].METADATA.PACKAGE_ID, packageId));\n dispatch(createGetMetadataAction(__WEBPACK_IMPORTED_MODULE_3__enums__[\"a\" /* AdobePass */].METADATA.PACKAGE_TIER, packageTier));\n dispatch(createGetAuthenticationInfoAction(_extends({}, providerInfo, { package: pkg })));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__appActions__[\"L\" /* savePackageId */])(packageId));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__appActions__[\"M\" /* savePackageTier */])(packageTier));\n\n packageFilter = Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"z\" /* packageFilterSelector */])(getState());\n\n if (!(packageFilter && pageId !== 'syndicated-player')) {\n _context3.next = 47;\n break;\n }\n\n _context3.next = 44;\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.all([dispatch(Object(__WEBPACK_IMPORTED_MODULE_33__page_actions__[\"o\" /* createFetchPageAction */])(pageId, routerParams, query, lang)), dispatch(Object(__WEBPACK_IMPORTED_MODULE_34__scheduleModule_actions__[\"d\" /* fetchScheduleModule */])(lang))]);\n\n case 44:\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_35__scoringActions__[\"a\" /* scoreAll */])());\n _context3.next = 48;\n break;\n\n case 47:\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_33__page_actions__[\"z\" /* setPageState */])(true));\n\n case 48:\n _context3.next = 51;\n break;\n\n case 50:\n dispatch(createGetAuthenticationInfoAction(providerInfo));\n\n case 51:\n\n // save the authn ttl to local storage so we can track a discrepancy later\n if (!__WEBPACK_IMPORTED_MODULE_10__lib_metrics_untimelyLogoutTracker__[\"a\" /* isAuthNTtlSaved */]() && providerInfo) {\n __WEBPACK_IMPORTED_MODULE_10__lib_metrics_untimelyLogoutTracker__[\"d\" /* saveInitialAuthNData */](providerInfo);\n dispatch(getAdobePassMetadata(__WEBPACK_IMPORTED_MODULE_3__enums__[\"a\" /* AdobePass */].METADATA.TTL_AUTHN)).then(function (ttl) {\n __WEBPACK_IMPORTED_MODULE_10__lib_metrics_untimelyLogoutTracker__[\"c\" /* saveAuthNTtl */](ttl);\n });\n }\n\n if (isIntl) {\n // TODO: add `fetchNetwork` back in PageShell.js and enable this once we are comfortable\n /* const { location: { path = '' } } = appSelector(getState());\n // only check preAuth for schedule page\n if (path.indexOf('schedule') !== -1 && providerInfo) {\n dispatch(checkPreauthResources());\n } */\n } else {\n // not awaiting on purpose based on the requirement, it's ok to reflect the `preAuthResources` next time\n dispatch(checkPreauthResources());\n }\n\n case 53:\n if (isIntl) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_33__page_actions__[\"z\" /* setPageState */])(true));\n }\n __WEBPACK_IMPORTED_MODULE_10__lib_metrics_untimelyLogoutTracker__[\"e\" /* trackUntimelyLogout */](Object(__WEBPACK_IMPORTED_MODULE_29__selectors_analyticsSelectors__[\"c\" /* entitlementsTrackingSelector */])(getState()));\n __WEBPACK_IMPORTED_MODULE_9__lib_util_perf__[\"b\" /* measureAndTime */]('createSmartAdobePassInitializeAction');\n return _context3.abrupt('return', null);\n\n case 57:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this3);\n }));\n\n return function (_x10, _x11) {\n return _ref8.apply(this, arguments);\n };\n }();\n}\n\nfunction createAndPerformStartAuthenticationAction() {\n var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n content = _ref11.content,\n stream = _ref11.stream,\n redirectUrlArg = _ref11.redirectUrl;\n\n return function (dispatch, getState) {\n var flags = Object(__WEBPACK_IMPORTED_MODULE_25__selectors_flagsSelector__[\"a\" /* persistentFlagsSelector */])(getState());\n\n var _routingSelector2 = Object(__WEBPACK_IMPORTED_MODULE_27__selectors_routingSelector__[\"a\" /* default */])(getState()),\n locationBeforeTransitions = _routingSelector2.locationBeforeTransitions;\n\n var _ref12 = locationBeforeTransitions || {},\n _ref12$query = _ref12.query,\n query = _ref12$query === undefined ? {} : _ref12$query,\n _ref12$pathname = _ref12.pathname,\n pathname = _ref12$pathname === undefined ? '' : _ref12$pathname;\n\n var redirectUrl = redirectUrlArg || Object(__WEBPACK_IMPORTED_MODULE_13__lib_format_getAdobePassRedirectUrl__[\"a\" /* default */])({ content: content, stream: stream, flags: flags, query: query, pathname: pathname });\n dispatch(createStartAuthenticationAction(content));\n return dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE)).authenticate(null, null, redirectUrl || '').then(function (isAuthenticated) {\n dispatch(createCompleteAuthenticationAction(isAuthenticated));\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(isAuthenticated);\n });\n };\n}\n\nfunction createAndPerformStartAuthorizationAction(resource) {\n return function (dispatch, getState) {\n dispatch(createStartAuthorizationAction(resource));\n var state = getState();\n Object(__WEBPACK_IMPORTED_MODULE_15__lib_omniture__[\"l\" /* trackAuthorizationStart */])({\n userAuth: Object(__WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__[\"r\" /* userAuthSelector */])(state),\n provider: Object(__WEBPACK_IMPORTED_MODULE_26__selectors_providerSelector__[\"a\" /* default */])(state),\n entitlementsTracking: Object(__WEBPACK_IMPORTED_MODULE_29__selectors_analyticsSelectors__[\"c\" /* entitlementsTrackingSelector */])(state),\n isDomestic: Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"s\" /* isDomesticSelector */])(state)\n });\n\n return dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE)).authorize(resource).then(function (response) {\n dispatch(createCompleteAuthorizationAction(response.resourceId, response.token));\n Object(__WEBPACK_IMPORTED_MODULE_15__lib_omniture__[\"k\" /* trackAuthorizationComplete */])({\n userAuth: Object(__WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__[\"r\" /* userAuthSelector */])(state),\n provider: Object(__WEBPACK_IMPORTED_MODULE_26__selectors_providerSelector__[\"a\" /* default */])(state),\n entitlementsTracking: Object(__WEBPACK_IMPORTED_MODULE_29__selectors_analyticsSelectors__[\"c\" /* entitlementsTrackingSelector */])(state),\n isDomestic: Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"s\" /* isDomesticSelector */])(state)\n });\n if (!response.errorCode && !response.errorDetails) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve({\n resourceId: response.resourceId,\n token: response.token\n });\n }\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.reject(new Error(response.errorDetails || response.errorCode));\n }).catch(function (error) {\n dispatch(createCompleteAuthorizationAction());\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.reject(error);\n });\n };\n}\n\nfunction createSelectProviderAction(provider) {\n return function (dispatch, getState) {\n var adobeProvider = {\n ID: provider && provider.ID || provider.abbreviation\n };\n\n if (adobeProvider.ID) {\n var state = getState();\n var isDomestic = Object(__WEBPACK_IMPORTED_MODULE_23__selectors_appSelector__[\"s\" /* isDomesticSelector */])(state);\n Object(__WEBPACK_IMPORTED_MODULE_15__lib_omniture__[\"p\" /* trackProviderSelect */])({\n userAuth: Object(__WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__[\"r\" /* userAuthSelector */])(state),\n entitlementsTracking: Object(__WEBPACK_IMPORTED_MODULE_29__selectors_analyticsSelectors__[\"c\" /* entitlementsTrackingSelector */])(state),\n provider: provider,\n isDomestic: isDomestic\n });\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_15__lib_omniture__[\"b\" /* clearTrackingData */])();\n }\n dispatch(createAuthenticator(__WEBPACK_IMPORTED_MODULE_3__enums__[\"f\" /* AuthenticatorType */].ADOBE)).selectProvider(adobeProvider).then(function (isAuthenticated) {\n // this probably won't ever get called\n dispatch(createCompleteAuthenticationAction(isAuthenticated, adobeProvider.ID));\n });\n };\n}\n\nfunction createAccountSelectorAction(content, redirectUrlArg) {\n return function (dispatch, getState) {\n var state = getState();\n var flags = Object(__WEBPACK_IMPORTED_MODULE_25__selectors_flagsSelector__[\"a\" /* persistentFlagsSelector */])(state);\n\n var _routingSelector3 = Object(__WEBPACK_IMPORTED_MODULE_27__selectors_routingSelector__[\"a\" /* default */])(state),\n locationBeforeTransitions = _routingSelector3.locationBeforeTransitions;\n\n var _ref13 = locationBeforeTransitions || {},\n _ref13$query = _ref13.query,\n query = _ref13$query === undefined ? {} : _ref13$query;\n\n var redirectUrl = redirectUrlArg || Object(__WEBPACK_IMPORTED_MODULE_13__lib_format_getAdobePassRedirectUrl__[\"a\" /* default */])({ content: content, flags: flags, query: query });\n var mode = __WEBPACK_IMPORTED_MODULE_37__page_AccountSelector__[\"a\" /* AccountSelectorComponent */].MODE.ACCOUNT_SELECTOR;\n var oneIdParam = query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].ONEID_ENV] ? __WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].ONEID_ENV + '=' + query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].ONEID_ENV] + '&' : '';\n var url = '/watch/account-selector?' + oneIdParam + 'mode=' + mode + '&redirectUrl=' + encodeURIComponent(redirectUrl);\n window.location.href = url;\n };\n}\n\nfunction createDTCPaywallAction(_ref14) {\n var _this4 = this;\n\n var content = _ref14.content,\n stream = _ref14.stream,\n containerId = _ref14.containerId;\n\n return function () {\n var _ref15 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(dispatch, getState) {\n var state, _bootstrapSelector2, _bootstrapSelector2$b, bam, passOneIdToken, _routingSelector4, locationBeforeTransitions, _ref16, query, pathname, flags, oneIdToken, analytics, userAuth, redirectUrl, isPromo, navmethod, hasMLB, isVertical, isMatchup, matchup, matchupParam, oneIdParam, idParam, redirectParam, url, _oneIdParam, _idParam, _redirectParam, _url, promoEl, videoPlayer, contentId, eventIdOrId, paywallConfig, idKey, isContentInStream, firstStream, streamObject, _firstStream;\n\n return regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n state = getState();\n _bootstrapSelector2 = Object(__WEBPACK_IMPORTED_MODULE_19__selectors_bootstrapSelector__[\"a\" /* default */])(state), _bootstrapSelector2$b = _bootstrapSelector2.bam, bam = _bootstrapSelector2$b === undefined ? {} : _bootstrapSelector2$b;\n passOneIdToken = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__[\"n\" /* passOneIdTokenSelector */])(state);\n _routingSelector4 = Object(__WEBPACK_IMPORTED_MODULE_27__selectors_routingSelector__[\"a\" /* default */])(state), locationBeforeTransitions = _routingSelector4.locationBeforeTransitions;\n _ref16 = locationBeforeTransitions || {}, query = _ref16.query, pathname = _ref16.pathname;\n flags = Object(__WEBPACK_IMPORTED_MODULE_25__selectors_flagsSelector__[\"a\" /* persistentFlagsSelector */])(state);\n oneIdToken = Object(__WEBPACK_IMPORTED_MODULE_21__selectors_oneIdSelector__[\"g\" /* oneIdTokenSelector */])(state);\n analytics = Object(__WEBPACK_IMPORTED_MODULE_21__selectors_oneIdSelector__[\"b\" /* oneIdAnalyticsSelector */])(state) || {};\n userAuth = Object(__WEBPACK_IMPORTED_MODULE_20__selectors_authenticationSelectors__[\"r\" /* userAuthSelector */])(state);\n redirectUrl = Object(__WEBPACK_IMPORTED_MODULE_13__lib_format_getAdobePassRedirectUrl__[\"a\" /* default */])({ content: content, stream: stream, flags: flags, query: query, pathname: pathname });\n isPromo = containerId === __WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* BAM_PROMO_IFRAME_ID */];\n navmethod = Object(__WEBPACK_IMPORTED_MODULE_29__selectors_analyticsSelectors__[\"d\" /* navmethodSelector */])(state);\n\n if (!(query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].PAYWALL] === 'false')) {\n _context4.next = 19;\n break;\n }\n\n if (!(!isPromo && !stream)) {\n _context4.next = 16;\n break;\n }\n\n console.error('Empty stream selected');\n return _context4.abrupt('return');\n\n case 16:\n if (!isPromo) {\n hasMLB = Object(__WEBPACK_IMPORTED_MODULE_6__lib_auth_streamHasDTCPackage__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_PLUS_MLB);\n // TODO: DTC - find out how to detect `vertical` w/o checking particular package\n\n isVertical = hasMLB || Object(__WEBPACK_IMPORTED_MODULE_6__lib_auth_streamHasDTCPackage__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_PLUS_NHL);\n isMatchup = !!content.event; // TODO: DTC - confirm this check is correct\n\n matchup = void 0;\n\n if (!isVertical && isMatchup) {\n matchup = true;\n }\n matchupParam = matchup ? 'matchup=' + matchup + '&' : '';\n // const oneIdParam = query[Flags.ONEID_ENV] ? `${Flags.ONEID_ENV}=${query[Flags.ONEID_ENV]}&` : '';\n\n oneIdParam = query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].DISNEY_ENV] === 'stg' ? __WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].ONEID_ENV + '=staging&' : '';\n idParam = 'id=' + stream.id;\n redirectParam = 'redirectUrl=' + encodeURIComponent(redirectUrl);\n url = '/watch/account-selector?' + oneIdParam + matchupParam + idParam + '&' + redirectParam;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__appActions__[\"C\" /* displayModalMessage */])(__WEBPACK_IMPORTED_MODULE_3__enums__[\"w\" /* ModalType */].PAYWALL, { src: url }));\n } else {\n _oneIdParam = query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].DISNEY_ENV] === 'stg' ? __WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].ONEID_ENV + '=staging&' : '';\n _idParam = 'id=' + content.id;\n _redirectParam = 'redirectUrl=' + encodeURIComponent(redirectUrl);\n _url = '/watch/account-selector?' + _oneIdParam + _idParam + '&' + _redirectParam;\n promoEl = document.getElementById(__WEBPACK_IMPORTED_MODULE_2__constants__[\"b\" /* BAM_PROMO_IFRAME_ID */]);\n\n if (promoEl) {\n promoEl.innerHTML = '';\n }\n }\n _context4.next = 39;\n break;\n\n case 19:\n if (!isPromo) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__appActions__[\"C\" /* displayModalMessage */])(__WEBPACK_IMPORTED_MODULE_3__enums__[\"w\" /* ModalType */].PAYWALL, { content: content }));\n }\n videoPlayer = new __WEBPACK_IMPORTED_MODULE_38__webapp_common_video_player__[\"a\" /* default */]({\n bamPlayerOptions: query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].BAM_ENV] ? _extends({}, bam, { env: query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].BAM_ENV] }) : bam\n });\n contentId = Object(__WEBPACK_IMPORTED_MODULE_8__lib_auth_getContentId__[\"a\" /* default */])(content);\n eventIdOrId = contentId.eventId || contentId.id;\n paywallConfig = _extends({\n container: '#' + containerId,\n customProps: {}\n }, Object(__WEBPACK_IMPORTED_MODULE_17__lib_util_getBamAuthConfig__[\"a\" /* default */])(oneIdToken, passOneIdToken, userAuth), {\n redirectUrl: redirectUrl,\n isPromo: isPromo,\n analytics: analytics\n });\n\n // Only assign navmethod to analytics object if defined\n\n if (typeof navmethod === 'string' && navmethod !== '') {\n paywallConfig.analytics.navmethod = navmethod;\n }\n\n idKey = 'id';\n\n if (!stream && contentId.eventId) {\n idKey = 'eventId';\n }\n\n if (!isPromo) {\n if (stream) {\n paywallConfig[idKey] = stream.id;\n /**\n * Set stream to `customProps` where DSS needs to handle paywall and playback\n * To handle the /schedule page which uses GraphQL, we must embed\n * the `content` object which has been updated to contain the `backgroundImageHref`\n * 1. var isContentInStream: check if stream has content props, if it is yes, use stream\n * 2. if isContentInStream returns false, get firstStream (stream[0]) from content\n * 3. if step 1 and step 2 fail, let's just pass content object along with stream\n */\n isContentInStream = stream && stream.content;\n firstStream = content.streams[0];\n streamObject = void 0;\n\n if (isContentInStream) {\n streamObject = stream;\n } else if (firstStream && firstStream.content) {\n streamObject = firstStream;\n } else {\n streamObject = _extends({}, stream, { content: content });\n }\n paywallConfig.customProps.stream = streamObject;\n } else {\n paywallConfig[idKey] = eventIdOrId;\n // NOTE: In a multi-stream scenario we need to pass the event content to `customProps`\n // to ensure the generic paywall image is rendered.\n // The solution is to use the first stream which contains the `backgroundImageHref` as primary\n // and fallback to nesting the parent object with the content\n if (content) {\n _firstStream = content.streams[0];\n\n paywallConfig.customProps.stream = _firstStream || _extends({}, content, { content: content });\n }\n }\n }\n\n if (query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].DISNEY_ENV] === 'stg') {\n paywallConfig.oneIdEnv = 'stg';\n }\n if (!isPromo) {\n videoPlayer.once(__WEBPACK_IMPORTED_MODULE_38__webapp_common_video_player__[\"a\" /* default */].Events.LOGIN_REQUESTED, function (event) {\n var success = event.success,\n _event$body = event.body;\n _event$body = _event$body === undefined ? {} : _event$body;\n var authType = _event$body.authType,\n redirectUrlArg = _event$body.redirectUrl;\n\n if (!success) {\n console.error('LOGIN_REQUESTED', event);\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__appActions__[\"y\" /* closeModalMessage */])());\n if (authType === __WEBPACK_IMPORTED_MODULE_3__enums__[\"e\" /* AuthTypes */].BAM) {\n __WEBPACK_IMPORTED_MODULE_18__lib_oneId__[\"k\" /* on */]('login', function () {\n var _loginQuery;\n\n var streamArg = stream;\n if (!streamArg) {\n streamArg = content.streams.filter(function (streamParam) {\n return Object(__WEBPACK_IMPORTED_MODULE_7__lib_auth_streamHasAuthType__[\"a\" /* default */])(streamParam, __WEBPACK_IMPORTED_MODULE_3__enums__[\"e\" /* AuthTypes */].BAM);\n })[0];\n }\n var loginQuery = (_loginQuery = {}, _defineProperty(_loginQuery, 'login_with_content_' + idKey, eventIdOrId), _defineProperty(_loginQuery, 'login_with_pkg', streamArg && streamArg.packages && streamArg.packages.join(',')), _loginQuery);\n // pass stream id only when it's different from content id\n if (streamArg && streamArg.id !== eventIdOrId) {\n loginQuery.login_with_id = streamArg.id;\n }\n // pass airingId that user selected from picker to login params\n // so that we know which stream to play in the player\n var airingId = query.airingId;\n\n if (airingId) {\n loginQuery.airingId = airingId;\n }\n window.location.href = Object(__WEBPACK_IMPORTED_MODULE_14__lib_format_addQueryToUrl__[\"a\" /* default */])(redirectUrlArg, loginQuery);\n });\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_36__oneIdActions__[\"m\" /* launchLogin */])());\n } else if (authType === __WEBPACK_IMPORTED_MODULE_3__enums__[\"e\" /* AuthTypes */].MVPD) {\n dispatch(createAndPerformStartAuthenticationAction({ content: content, stream: stream })).then(function (isAuthenticated) {\n if (!isAuthenticated) {\n dispatch(createDisplayProviderDialogAction());\n }\n });\n }\n });\n }\n _context4.prev = 30;\n\n console.log('paywallConfig', paywallConfig); // eslint-disable-line no-console\n _context4.next = 34;\n return videoPlayer.renderPaywall(paywallConfig);\n\n case 34:\n _context4.next = 39;\n break;\n\n case 36:\n _context4.prev = 36;\n _context4.t0 = _context4['catch'](30);\n\n console.error(_context4.t0);\n\n case 39:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, _this4, [[30, 36]]);\n }));\n\n return function (_x13, _x14) {\n return _ref15.apply(this, arguments);\n };\n }();\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 23 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n\n\nvar routingSelector = function routingSelector(_ref) {\n var _ref$routing = _ref.routing,\n routing = _ref$routing === undefined ? {} : _ref$routing;\n return routing;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(routingSelector, function (routing) {\n return routing;\n}));\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (false) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = routerWarning;\nexports._resetWarned = _resetWarned;\n\nvar _warning = __webpack_require__(482);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction routerWarning(falseToWarn, message) {\n // Only issue deprecation warnings once.\n if (message.indexOf('deprecated') !== -1) {\n if (warned[message]) {\n return;\n }\n\n warned[message] = true;\n }\n\n message = '[react-router] ' + message;\n\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n _warning2.default.apply(undefined, [falseToWarn, message].concat(args));\n}\n\nfunction _resetWarned() {\n warned = {};\n}\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return oneIdInitializedSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return oneIdLoggedInSelector; });\n/* unused harmony export oneIdLangPrefSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return oneIdEntitlementsSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return oneIdTokenSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return oneIdEntitlementsParamsSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return oneIdAnalyticsSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_uniq__ = __webpack_require__(94);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_uniq___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_uniq__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_cookie_cutter__ = __webpack_require__(93);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_cookie_cutter___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_cookie_cutter__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_util_canUseDOM__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__fanSelector__ = __webpack_require__(91);\n\n\n\n\n\n\n\n\n\nvar oneIdSelector = function oneIdSelector(_ref) {\n var _ref$oneId = _ref.oneId,\n oneId = _ref$oneId === undefined ? {} : _ref$oneId;\n return oneId;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(oneIdSelector, function (oneId) {\n return oneId;\n}));\n\nvar oneIdInitializedSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(oneIdSelector, function (oneId) {\n return oneId && !!oneId.completeTime;\n});\n\nvar oneIdLoggedInSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(oneIdSelector, function (oneId) {\n if (__WEBPACK_IMPORTED_MODULE_4__lib_util_canUseDOM__[\"a\" /* default */] && window.espn && window.espn.core && window.espn.core.loggedIn != null) {\n return window.espn.core.loggedIn;\n }\n return oneId && !Object(__WEBPACK_IMPORTED_MODULE_3__lib_util_isEmpty__[\"a\" /* default */])(oneId.data);\n});\n\nvar oneIdLangPrefSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(oneIdSelector, function (oneId) {\n var langPref = void 0;\n if (oneId && !Object(__WEBPACK_IMPORTED_MODULE_3__lib_util_isEmpty__[\"a\" /* default */])(oneId.data)) {\n langPref = oneId.data.profile.languagePreference;\n }\n return langPref;\n});\n\nvar oneIdEntitlementsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__authenticationSelectors__[\"p\" /* subscriptionsSelector */], oneIdSelector, function (subscriptions, oneId) {\n var entitlements = void 0;\n if (subscriptions) {\n entitlements = __WEBPACK_IMPORTED_MODULE_1_lodash_uniq___default()(subscriptions.reduce(function (acc, _ref2) {\n var isActive = _ref2.isActive,\n _ref2$products = _ref2.products,\n products = _ref2$products === undefined ? [] : _ref2$products,\n _ref2$status = _ref2.status;\n _ref2$status = _ref2$status === undefined ? {} : _ref2$status;\n var type = _ref2$status.type;\n\n if (!isActive || type === 'UNSUBSCRIBED') {\n return acc;\n }\n var prdctEntitlements = products.reduce(function (acc2, _ref3) {\n var partner = _ref3.partner,\n _ref3$entitlements = _ref3.entitlements,\n productEntitlements = _ref3$entitlements === undefined ? [] : _ref3$entitlements;\n\n if (partner !== 'ESPN' && partner !== 'disney') {\n return acc2;\n }\n return acc2.concat(productEntitlements.map(function (_ref4) {\n var name = _ref4.name;\n return name;\n }));\n }, []);\n return acc.concat(prdctEntitlements);\n }, []));\n return entitlements;\n }\n // fall back to use info from OneID\n if (oneId && !Object(__WEBPACK_IMPORTED_MODULE_3__lib_util_isEmpty__[\"a\" /* default */])(oneId.data) && oneId.data.entitlements && oneId.data.entitlements.length) {\n entitlements = oneId.data.entitlements.filter(function (_ref5) {\n var digitalAssetName = _ref5.digitalAssetName;\n return digitalAssetName === 'ESPNPLUS';\n }).map(function (_ref6) {\n var digitalAssetSourceName = _ref6.digitalAssetSourceName;\n return digitalAssetSourceName;\n });\n }\n return entitlements;\n});\n\nvar oneIdTokenSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(oneIdSelector, function (oneId) {\n return oneId && oneId.data && oneId.data.token;\n});\n\nvar oneIdEntitlementsParamsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(oneIdEntitlementsSelector, function (oneIdEntitlements) {\n return oneIdEntitlements;\n});\n\nfunction convertGender(gender) {\n return {\n 1: 'M',\n 2: 'F'\n }[gender] || 'not set';\n}\n\nvar oneIdAnalyticsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_6__fanSelector__[\"a\" /* default */], oneIdSelector, function (fan, oneId) {\n var _ref7 = oneId || {},\n data = _ref7.data;\n\n var swid = fan.id || typeof document !== 'undefined' && __WEBPACK_IMPORTED_MODULE_2_cookie_cutter___default.a.get('SWID');\n var unid = fan.id || typeof document !== 'undefined' && __WEBPACK_IMPORTED_MODULE_2_cookie_cutter___default.a.get('UNID');\n var tracking = { swid: swid, unid: unid };\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__lib_util_isEmpty__[\"a\" /* default */])(data)) {\n var _data$profile = data.profile;\n _data$profile = _data$profile === undefined ? {} : _data$profile;\n var status = _data$profile.status,\n _data$profile$gender = _data$profile.gender,\n gender = _data$profile$gender === undefined ? '' : _data$profile$gender,\n _data$profile$dateOfB = _data$profile.dateOfBirth,\n dateOfBirth = _data$profile$dateOfB === undefined ? '' : _data$profile$dateOfB;\n\n tracking.registrationtype = 'espn';\n if (status) {\n tracking.loginstatus = 'Registered:Logged in ' + status;\n }\n tracking.gender = convertGender(gender);\n if (dateOfBirth) {\n tracking.birthage = dateOfBirth.slice(0, 4);\n }\n }\n return tracking;\n});\n\n/***/ }),\n/* 28 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export bootstrapPropTypes */\n/* unused harmony export entitlementsPropTypes */\n/* unused harmony export packagesPropTypes */\n/* unused harmony export sourcePropTypes */\n/* unused harmony export linksPropTypes */\n/* unused harmony export streamPropTypes */\n/* unused harmony export eventPropTypes */\n/* unused harmony export contentPropTypes */\n/* unused harmony export bucketMetadataPropTypes */\n/* unused harmony export bucketLinksPropTypes */\n/* unused harmony export bucketPropTypes */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__enums__ = __webpack_require__(1);\n\n\n\nvar string = __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].string,\n number = __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].number,\n bool = __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].bool,\n array = __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].array,\n object = __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].object,\n shape = __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].shape,\n oneOf = __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].oneOf,\n arrayOf = __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].arrayOf,\n oneOfType = __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].oneOfType;\n\n\nvar contentStatuses = Object.keys(__WEBPACK_IMPORTED_MODULE_1__enums__[\"n\" /* ContentStatus */]).map(function (key) {\n return __WEBPACK_IMPORTED_MODULE_1__enums__[\"n\" /* ContentStatus */][key];\n});\n\nvar bootstrapPropTypes = shape({\n version: string,\n env: string,\n bam: shape({\n sdkHost: string,\n env: string,\n playerVersion: string\n }),\n player: shape({\n logos: object\n }),\n syndicatedPlayer: shape({\n gatedAll: bool,\n gatedIE: bool\n }),\n preRoll: shape({\n editions: object\n }),\n adobePass: shape({\n preauthorizeNetworks: array,\n preauthorizeNetworksEnabled: bool\n })\n});\n\nvar entitlementsPropTypes = shape({\n entitled: bool\n});\n\nvar packagesPropTypes = array;\n\nvar sourcePropTypes = shape({\n id: string,\n name: string,\n type: oneOf(Object.keys(__WEBPACK_IMPORTED_MODULE_1__enums__[\"E\" /* SourceType */]).map(function (key) {\n return __WEBPACK_IMPORTED_MODULE_1__enums__[\"E\" /* SourceType */][key];\n })),\n origination: string\n});\n\nvar linksPropTypes = shape({\n play: string,\n web: string\n});\n\nvar streamPropTypes = shape({\n id: string,\n name: string,\n status: oneOf(contentStatuses),\n duration: string,\n entitlements: entitlementsPropTypes,\n packages: packagesPropTypes,\n source: sourcePropTypes,\n score: number,\n authTypes: array,\n adobeRSS: string,\n links: linksPropTypes,\n blackoutText: string\n});\n\nvar eventPropTypes = shape({\n type: string,\n gameState: string,\n teamOneName: string,\n teamTwoName: string,\n teamTwoRank: number,\n teamOneScore: string,\n teamTwoScore: string,\n teamOneIsWinner: bool,\n teamTwoIsWinner: bool,\n statusTextOne: string\n});\n\n// product content id is currently number\nvar contentPropTypes = shape({\n id: oneOfType([string, number]),\n guid: string,\n type: oneOf(Object.keys(__WEBPACK_IMPORTED_MODULE_1__enums__[\"o\" /* ContentType */]).map(function (key) {\n return __WEBPACK_IMPORTED_MODULE_1__enums__[\"o\" /* ContentType */][key];\n })),\n status: oneOf(contentStatuses),\n name: string,\n subtitle: string,\n imageHref: string,\n date: string,\n shortDate: string,\n utc: string,\n time: string,\n score: number,\n streams: arrayOf(streamPropTypes),\n event: eventPropTypes,\n description: string,\n iconHref: string,\n blackoutText: string,\n // To be added\n duration: string\n});\n\nvar bucketMetadataPropTypes = shape({\n totalCount: number,\n displayCount: number,\n scored: bool,\n grouped: bool\n});\n\nvar bucketLinksPropTypes = shape({\n self: string,\n web: string\n});\n\nvar bucketPropTypes = shape({\n id: number,\n name: string,\n type: string,\n style: string,\n metadata: bucketMetadataPropTypes,\n links: bucketLinksPropTypes,\n contents: arrayOf(contentPropTypes)\n});\n\n/* unused harmony default export */ var _unused_webpack_default_export = ({\n bootstrap: bootstrapPropTypes,\n source: sourcePropTypes,\n links: linksPropTypes,\n stream: streamPropTypes,\n content: contentPropTypes,\n bucketMetadata: bucketMetadataPropTypes,\n bucketLinks: bucketLinksPropTypes,\n bucket: bucketPropTypes\n});\n\n/***/ }),\n/* 29 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return espnPlayerSrcFilesSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n\n\nvar bootstrapSelector = function bootstrapSelector(_ref) {\n var _ref$app = _ref.app,\n app = _ref$app === undefined ? {} : _ref$app;\n var _app$bootstrap = app.bootstrap,\n bootstrap = _app$bootstrap === undefined ? {} : _app$bootstrap;\n\n return bootstrap;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(bootstrapSelector, function (bootstrap) {\n return bootstrap;\n}));\n\nvar espnPlayerSrcFilesSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(bootstrapSelector, function (bootstrap) {\n var _bootstrap$player = bootstrap.player,\n player = _bootstrap$player === undefined ? {} : _bootstrap$player;\n\n return {\n espnPlayerJsUrl: player['espn-web-player-js-url'],\n espnPlayerCssUrl: player['espn-web-player-css-url']\n };\n});\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactSideEffect = __webpack_require__(674);\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _deepEqual = __webpack_require__(676);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _objectAssign = __webpack_require__(15);\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = __webpack_require__(679);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props[property]) {\n return props[property];\n }\n }\n return null;\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, \"title\");\n var innermostTemplate = getInnermostProperty(propsList, \"titleTemplate\");\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, \"defaultTitle\");\n\n return innermostTitle || innermostDefaultTitle || \"\";\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, \"onChangeClientState\") || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[_HelmetConstants.TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n return typeof props[tagName] !== \"undefined\";\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n document.title = title || document.title;\n updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var htmlTag = document.getElementsByTagName(tagName)[0];\n var helmetAttributeString = htmlTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n htmlTag.setAttribute(attribute, value);\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n htmlTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n htmlTag.removeAttribute(HELMET_ATTRIBUTE);\n } else {\n htmlTag.setAttribute(HELMET_ATTRIBUTE, helmetAttributes.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(\"head\");\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === \"innerHTML\") {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === \"cssText\") {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateHtmlAttributesAsString = function generateHtmlAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes) {\n var attributeString = generateHtmlAttributesAsString(attributes);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(title) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(title) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === \"innerHTML\" || attribute === \"cssText\");\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute]) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = [_HelmetConstants.TAG_NAMES.NOSCRIPT, _HelmetConstants.TAG_NAMES.SCRIPT, _HelmetConstants.TAG_NAMES.STYLE].indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n // assigning into an array to define toString function on it\n var initProps = _defineProperty({\n key: title\n }, HELMET_ATTRIBUTE, true);\n var props = Object.keys(attributes).reduce(function (obj, key) {\n obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n\n return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var mappedTag = _defineProperty({\n key: i\n }, HELMET_ATTRIBUTE, true);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === \"innerHTML\" || mappedAttribute === \"cssText\") {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return _react2.default.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags) {\n switch (type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes);\n }\n };\n case _HelmetConstants.TAG_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return tags;\n },\n toString: function toString() {\n return generateHtmlAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var htmlAttributes = _ref.htmlAttributes,\n title = _ref.title,\n titleAttributes = _ref.titleAttributes,\n baseTag = _ref.baseTag,\n metaTags = _ref.metaTags,\n linkTags = _ref.linkTags,\n scriptTags = _ref.scriptTags,\n noscriptTags = _ref.noscriptTags,\n styleTags = _ref.styleTags;\n return {\n htmlAttributes: getMethodsForTag(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes),\n title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }),\n base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags),\n link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n _inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n _classCallCheck(this, HelmetWrapper);\n\n return _possibleConstructorReturn(this, (HelmetWrapper.__proto__ || Object.getPrototypeOf(HelmetWrapper)).apply(this, arguments));\n }\n\n _createClass(HelmetWrapper, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return !(0, _deepEqual2.default)(this.props, nextProps);\n }\n }, {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(Component, this.props);\n }\n }], [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n set: function set(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n /**\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {String} title: \"Title\"\n * @param {String} defaultTitle: \"Default Title\"\n * @param {String} titleTemplate: \"MySite.com - %s\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n */\n\n }]);\n\n return HelmetWrapper;\n }(_react2.default.Component), _class.propTypes = {\n htmlAttributes: _react2.default.PropTypes.object,\n title: _react2.default.PropTypes.string,\n defaultTitle: _react2.default.PropTypes.string,\n titleTemplate: _react2.default.PropTypes.string,\n titleAttributes: _react2.default.PropTypes.object,\n base: _react2.default.PropTypes.object,\n meta: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n link: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n script: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n noscript: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n style: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n onChangeClientState: _react2.default.PropTypes.func\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n htmlAttributes: {},\n title: \"\",\n titleAttributes: {},\n baseTag: [],\n metaTags: [],\n linkTags: [],\n scriptTags: [],\n noscriptTags: [],\n styleTags: []\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n htmlAttributes: getAttributesFromPropsList(_HelmetConstants.TAG_NAMES.HTML, propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(\"titleAttributes\", propsList),\n baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n onChangeClientState: getOnChangeClientState(propsList)\n };\n};\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n var htmlAttributes = newState.htmlAttributes,\n title = newState.title,\n titleAttributes = newState.titleAttributes,\n baseTag = newState.baseTag,\n metaTags = newState.metaTags,\n linkTags = newState.linkTags,\n scriptTags = newState.scriptTags,\n noscriptTags = newState.noscriptTags,\n styleTags = newState.styleTags,\n onChangeClientState = newState.onChangeClientState;\n\n\n updateAttributes(\"html\", htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nexports.default = Helmet(HelmetSideEffects);\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* jshint node:true */\n\n\n// Date comparison taken from\n// http://stackoverflow.com/questions/492994/compare-two-dates-with-javascript\n\nvar moment = __webpack_require__(588);\nvar selectn = __webpack_require__(113);\n\n// date time formatting related settings\nvar dateTime = {\n 'dateFormats': {\n 'time1': '',\n 'date1': 'D MMM, YYYY',\n 'date2': 'D/M/YYYY',\n 'date3': 'DD/MM/YYYY',\n 'date4': 'DDMMYYYY',\n 'date5': 'Do MMMM YYYY',\n 'date6': 'dddd, Do MMMM YYYY',\n 'date7': 'ddd, D MMM YYYY',\n 'date8': 'D/M',\n 'date9': 'ddd',\n 'date10': 'dddd, MMMM Do',\n 'date11': 'MMMM YYYY',\n 'date12': 'YYYYMMDD',\n 'date13': 'MMMM Do, YYYY',\n 'date14': 'M/D',\n 'date15': 'dddd, D [de] MMMM', // Brazil Edition\n 'date16': 'dddd, Do MMMM',\n 'dateTime1': 'h:mm A, MMMM D, YYYY',\n 'dateTime2': 'h:mm A',\n 'dateTime3': 'H:mm',\n 'dateTime4': 'MM/DD/YY HH:mm z',\n 'dateTime5': 'dddd, h:mm A',\n 'dateTime6': 'M/D h:mm A',\n 'dateTime7': 'dddd, MMMM DD YYYY - hh:mm A'\n },\n 'dayNamesLong': 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '),\n 'dayNamesMedium': 'Sun Mon Tue Wed Thu Fri Sat'.split(' '),\n 'dayNamesShort': 'Su Mo Tu We Th Fr Sa'.split(' '),\n 'monthNamesLong': 'January February March April May June July August September October November December'.split(' '),\n 'monthNamesShort': 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ')\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\n getTimezone: function getTimezone() {\n return moment.tz.guess() || 'UTC';\n },\n\n dateToKey: function dateToKey(oDate) {\n return this.dateFormat(oDate, 'date12');\n },\n\n paramToCalendarDatesString: function paramToCalendarDatesString(sParam) {\n if (!sParam) {\n return sParam;\n }\n return sParam.substr(0, 4) + '-' + sParam.substr(4, 2) + '-' + sParam.substr(6, 2);\n },\n\n paramToDate: function paramToDate(sParam) {\n var dateStr = this.paramToCalendarDatesString(sParam);\n\n if (!dateStr) {\n return dateStr;\n }\n\n return moment(dateStr).toDate();\n },\n\n dateDayNamesMedium: function dateDayNamesMedium() {\n return dateTime.dayNamesMedium;\n },\n\n dateFormat: function dateFormat(ISODate, _dateFormat, showTimezone) {\n if (ISODate === undefined) {\n return ISODate;\n }\n\n if (_dateFormat === undefined) {\n _dateFormat = 'date6';\n }\n\n showTimezone = showTimezone || false;\n\n var formatsMap = dateTime.dateFormats;\n var utcMoment = moment(ISODate); //, moment.ISO_8601\n var localMoment = moment(utcMoment.utc().toDate());\n\n _dateFormat = formatsMap[_dateFormat];\n\n var dateString = localMoment.format(_dateFormat);\n //console.log(localMoment.format('z'))\n //window.moment().tz(window.jstz.determine().name()).format('z')\n //if ($(element).hasClass('time') && showTimezone === 'true') {\n // var currentTimezone = espn_ui.Helpers.timezones.getCurrentTimezone()\n // dateString += ' ' + espn_ui.Behaviors.date_timezone.replace(currentTimezone)\n //}\n\n return dateString;\n },\n\n /**\n * Returns a formatted date string for events following the criteria below:\n * 1) Same day - 5:00 PM\n * 2) Next day - Tomorrow, 5:00 PM\n * 3) Between 2-6 days - Thursday, 5:00 PM\n * 4) past date & 7+ days - 5/29, 5:00 PM\n *\n * @param {ISODate} - Standardized date object\n * @param {dateFormat} - Format of output string\n * @param {timeZone} - Optional user timezone\n * @param {nextDayString} - i18n string representation for the the next day\n */\n eventDateFormat: function eventDateFormat(ISODate, dateFormat, timeZone) {\n var nextDayString = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Tomorrow';\n\n if (ISODate === undefined) {\n return ISODate;\n }\n\n var dateFormats = dateTime.dateFormats;\n\n var currentDateFormat = dateFormat || 'dateTime2';\n var eventDate = timeZone ? moment.tz(ISODate, timeZone) : moment(ISODate);\n var momentInstance = timeZone ? moment.tz(timeZone) : moment();\n var tomorrow = momentInstance.clone().add(1, 'day');\n var sevenDaysFromToday = momentInstance.clone().add(7, 'days');\n var eventDateFormatted = eventDate.format(dateFormats[currentDateFormat]);\n\n // Same day event\n if (eventDate.isSame(momentInstance, 'day')) {\n return eventDateFormatted; // Output: 5:00 PM\n }\n // Tomorrow\n if (eventDate.isSame(tomorrow, 'day')) {\n return nextDayString + ', ' + eventDateFormatted; // Output: Tomorrow, 5:00 PM; i18n supported\n }\n // 2-6 day range\n if (eventDate.isAfter(tomorrow, 'day') && eventDate.isBefore(sevenDaysFromToday, 'day')) {\n return eventDate.format(dateFormats['dateTime5']); // Output: Friday, 5:00 PM\n }\n // Past event and 7+ days (base case)\n return eventDate.format(dateFormats['dateTime6']); // Output: 06/13 5:00 PM\n },\n\n /**\n * Converts the date in d to a date-object using moment-timezone\n * @param {String/object} d date in string/Object\n * @return {Object} date-object\n */\n dateToObject: function dateToObject(d) {\n return moment(d).toDate();\n },\n\n /**\n * Compare two dates (could be of any type supported by the convert\n * function above) and returns:\n * -1 : if a < b\n * 0 : if a = b\n * 1 : if a > b\n * NaN : if a or b is an illegal date\n * NOTE: The code inside isFinite does an assignment (=).\n *\n * @param {String/object} a date in string/Object\n * @param {String/object} b date in string/Object\n * @return {Number} as described above\n **/\n dateCompare: function dateCompare(a, b) {\n return isFinite(a = this.dateToObject(a).valueOf()) && isFinite(b = this.dateToObject(b).valueOf()) ? (a > b) - (a < b) : NaN;\n },\n\n /**\n * Checks if date in d is between dates in start and end.\n * Returns a boolean or NaN:\n * true : if d is between start and end (inclusive)\n * false : if d is before start or after end\n * NaN : if one or more of the dates is illegal.\n * NOTE: The code inside isFinite does an assignment (=).\n *\n * @param {String/object} d date in string/Object\n * @param {String/Object} start startdate\n * @param {String/Object} end startdate\n * @return {Boolean/NaN} As described above\n **/\n dateInRange: function dateInRange(d, start, end) {\n return isFinite(d = this.dateToObject(d).valueOf()) && isFinite(start = this.dateToObject(start).valueOf()) && isFinite(end = this.dateToObject(end).valueOf()) ? start <= d && d <= end : NaN;\n },\n\n /**\n * Convert date/time as per the passed options of timezone and formatting\n * @param {String} d date String in ISO 8601 format\n * @param {Object} options date formatting options\n * @return {String} formatted time as per the options\n */\n convertDateTime: function convertDateTime(d, options) {\n // default return type\n var displayTime = '';\n\n /**\n * default formatting options\n * UTC as time zone - 'Europe/London'\n * 24HR time format - HH:mm z\n */\n var timeZone = 'Europe/London';\n var timeFormat = 'h:mm A';\n // Override default options if options input has valid properties\n if (typeof selectn('timeZone', options) !== 'undefined') {\n timeZone = options.timeZone;\n }\n\n if (typeof selectn('timeFormat', options) !== 'undefined') {\n timeFormat = options.timeFormat;\n }\n\n if (typeof selectn('dateFormat', options) !== 'undefined') {\n var formatsMap = dateTime.dateFormats;\n var dateFormat = options.dateFormat;\n\n if (formatsMap[dateFormat]) {\n timeFormat = formatsMap[dateFormat];\n }\n }\n\n // Convert to moment object\n var startTime = moment(d);\n // Format the date only if valid\n if (startTime.isValid() === true) {\n displayTime = startTime.tz(timeZone).format(timeFormat);\n //console.log('original, convertDateTime', d, displayTime)\n }\n return displayTime;\n },\n\n getTimezoneParam: function getTimezoneParam() {\n var tz = moment().utcOffset();\n var hour = Math.abs(Math.floor(tz / 60));\n var min = Math.abs(tz % 60);\n return 'UTC' + (tz >= 0 ? '+' : '-') + ('0' + hour).slice(-2) + ('0' + min).slice(-2);\n },\n\n /**\n * Convert date string from v1/listings API to the valid ISO string\n * @param {String} str A date string to convert\n * @return {String} ISO 8601 date string\n */\n toISOString: function toISOString() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n return str.replace(/GMT$/, 'Z').replace(/EST$/, '-05:00').replace(/EDT$/, '-04:00');\n },\n\n /**\n * Convert date to ISO string with minute precision\n * @param {Date} Standardized date object\n * @return {String} ISO 8601 date string with minute precision\n */\n getISOStringWithMinPrecision: function getISOStringWithMinPrecision() {\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n\n return date.toISOString().replace(/:\\d+\\.\\d+Z$/, '');\n },\n\n /**\n * Formats a standardized date by the format specified with optional timezone\n * @param {date} - Standardized date object\n * @param {dateFormat} - Format of output string\n * @param {timeZone} - Optional user timezone\n */\n getDateTimeString: function getDateTimeString(date, dateFormat, timeZone, type, nextDayString) {\n if (type === 'schedule-event') {\n return this.eventDateFormat(date, dateFormat, timeZone, nextDayString);\n }\n\n if (timeZone) {\n return this.convertDateTime(date, { timeZone: timeZone, dateFormat: dateFormat });\n }\n return this.dateFormat(date, dateFormat);\n }\n});\n\n/***/ }),\n/* 34 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return OMNITURE_CONSTANTS; });\n/* unused harmony export trackByIframe */\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = init;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = clearTrackingData;\n/* harmony export (immutable) */ __webpack_exports__[\"n\"] = trackMvpdPicker;\n/* harmony export (immutable) */ __webpack_exports__[\"p\"] = trackProviderSelect;\n/* harmony export (immutable) */ __webpack_exports__[\"j\"] = trackAuthenticationComplete;\n/* harmony export (immutable) */ __webpack_exports__[\"l\"] = trackAuthorizationStart;\n/* harmony export (immutable) */ __webpack_exports__[\"k\"] = trackAuthorizationComplete;\n/* harmony export (immutable) */ __webpack_exports__[\"q\"] = trackSearch;\n/* harmony export (immutable) */ __webpack_exports__[\"s\"] = trackUntimelyLogout;\n/* unused harmony export trackLeavePageAlertShown */\n/* harmony export (immutable) */ __webpack_exports__[\"r\"] = trackSocialShareClick;\n/* unused harmony export trackReturnAfterLeavePageAlert */\n/* harmony export (immutable) */ __webpack_exports__[\"o\"] = trackPage;\n/* harmony export (immutable) */ __webpack_exports__[\"h\"] = trackActivatePage;\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = trackActivateCodeInvalid;\n/* harmony export (immutable) */ __webpack_exports__[\"i\"] = trackActivateSuccess;\n/* harmony export (immutable) */ __webpack_exports__[\"m\"] = trackEspnPlayerOnAdSkipped;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__format__ = __webpack_require__(271);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(8);\n/* unused harmony reexport getOmniturePageName */\n/* unused harmony reexport getVideoTypeFromContent */\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return __WEBPACK_IMPORTED_MODULE_1__format__[\"g\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return __WEBPACK_IMPORTED_MODULE_1__format__[\"e\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return __WEBPACK_IMPORTED_MODULE_1__format__[\"f\"]; });\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\nvar UPSTREAM_USERID = __WEBPACK_IMPORTED_MODULE_0__enums__[\"a\" /* AdobePass */].METADATA.UPSTREAM_USERID;\n\n// nielsen uses this as well to format pageName and videoType\n\n\n\nvar OMNITURE_CONSTANTS = {\n Channel: 'web',\n Site: 'watchespn',\n ReportSuite: 'wdgespcom',\n ReportSuiteQA: 'wdgespncomdev',\n ReportSuiteIntl: 'wdgesp360international',\n ReportSuiteApp: 'wdgesp360netunoven',\n TrackingServer: 'w88.espn.com',\n SecureTrackingServer: 'sw88.espn.com'\n};\n\n// will be injected by the `init` call\nvar baseOmnitureData = void 0;\nvar initialized = false;\nvar initializing = false;\nvar trackingQueue = [];\nvar IS_AUTHENTICATING = __WEBPACK_IMPORTED_MODULE_0__enums__[\"F\" /* Storage */].Analytics.IS_AUTHENTICATING;\n\n/**\n * This function calls the actual omniture page tracking\n */\n\nfunction _trackPage() {\n var omnitureData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var bootstrap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!Object.keys(omnitureData).length) {\n return;\n }\n if (window.espn && window.espn.track) {\n var espnTrack = window.espn.track;\n if (!initialized && espnTrack.init && espnTrack.trackPage) {\n initialized = true;\n initializing = true;\n\n var nielsenData = espnTrack.data && espnTrack.data.nielsen;\n espnTrack.init({ omniture: omnitureData, nielsen: nielsenData || __WEBPACK_IMPORTED_MODULE_2__constants__[\"t\" /* dotComNielsenData */] });\n // espn.track.init() invokes async data fetch which we won't know when to complete\n // FIXME: we need to know when exactly all the remote data is ready w/o arbitrary timeout.\n setTimeout(function () {\n initializing = false;\n try {\n trackingQueue.forEach(function (queuedData) {\n espnTrack.trackPage(queuedData);\n });\n // TODO: DTC - remove this once https://code.espn.com/webdev/score/pull/9035 lands\n var _bootstrap$bam = bootstrap.bam;\n _bootstrap$bam = _bootstrap$bam === undefined ? {} : _bootstrap$bam;\n var env = _bootstrap$bam.env,\n playerdomainArg = _bootstrap$bam.playerdomain;\n\n if (window._sf_async_config && playerdomainArg) {\n var playerdomain = playerdomainArg;\n if ((env === 'beta' || /bamenv=beta($|[^_])/.test(window.location.search)) && playerdomain.indexOf('espnqa') > -1) {\n playerdomain = playerdomain.replace('espnqa', 'espn');\n }\n window._sf_async_config.playerdomain = playerdomain;\n }\n } catch (err) {\n console.error(err);\n }\n trackingQueue = [];\n }, 2000);\n } else if (initializing) {\n trackingQueue.push(omnitureData);\n } else if (espnTrack.trackPage) {\n espnTrack.trackPage(omnitureData);\n }\n } else {\n trackByIframe('page', omnitureData);\n }\n}\n\n/**\n * This function calls the actual omniture link tracking\n */\nfunction _trackLink() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (window.espn && window.espn.track && window.espn.track.clear && window.espn.track.trackLink) {\n window.espn.track.clear();\n var linkData = _extends({}, data, { link: 'true' });\n window.espn.track.userClicked = true;\n window.espn.track.trackLink(linkData);\n } else {\n trackByIframe('link', data);\n }\n}\n\nfunction trackByIframe(type, data) {\n var baseUrl = window.location.protocol === 'https:' ? 'https://secure.espn.com' : 'http://espn.com';\n\n data.type = type;\n data.content = data.contentType;\n data.source = data.site;\n data.pagename = data.pageName;\n\n var hash = Object.keys(data).reduce(function (acc, key) {\n return '' + acc + (acc ? '&' : '') + key + '=' + encodeURIComponent(data[key]);\n }, '');\n var trackingUrl = baseUrl + '/core/tracking/iframe#' + hash;\n var id = 'espn-tracking-iframe';\n var iframe = document.getElementById(id);\n if (iframe && iframe.parentNode) {\n iframe.parentNode.removeChild(iframe);\n }\n iframe = document.createElement('iframe');\n iframe.id = id;\n iframe.src = trackingUrl;\n iframe.width = '0';\n iframe.height = '0';\n iframe.frameBorder = '0';\n document.body.appendChild(iframe);\n}\n\nfunction init(constants) {\n baseOmnitureData = {\n site: constants.Site,\n channel: constants.Channel,\n account: constants.ReportSuite,\n premium: 'premium-no',\n eVar1: 'DoNotSet',\n eVar12: constants.Edition,\n prop1: 'watchespn',\n prop16: constants.Edition\n };\n}\n\nfunction clearTrackingData() {\n localStorage.removeItem(IS_AUTHENTICATING);\n}\n\nfunction trackMvpdPicker(_ref) {\n var isDomestic = _ref.isDomestic;\n\n var mvpdPickerData = {\n events: 'event3,event49,event67',\n pageName: 'mvpd picker',\n eVar13: 'mvpd picker',\n prop4: 'authentication',\n prop5: 'authentication',\n eVar11: 'authentication:' + baseOmnitureData.site + ':authentication'\n };\n var omnitureData = _extends({}, baseOmnitureData, mvpdPickerData, Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"a\" /* getOmnitureAuthData */])([], {}, isDomestic));\n _trackPage(omnitureData);\n}\n\nfunction trackProviderSelect(_ref2) {\n var userAuth = _ref2.userAuth,\n provider = _ref2.provider,\n entitlementsTracking = _ref2.entitlementsTracking,\n isDomestic = _ref2.isDomestic;\n\n var providerName = provider.package ? provider.abbreviation : provider.name;\n var providerChosen = 'provider chosen:' + providerName;\n var providerSelectData = {\n events: 'event72',\n pev2: providerName,\n prop9: providerChosen,\n eVar74: providerChosen\n };\n var omnitureData = _extends({}, baseOmnitureData, Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"a\" /* getOmnitureAuthData */])(userAuth, provider, isDomestic), Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"b\" /* getOmnitureEntitlementsData */])(entitlementsTracking), providerSelectData);\n _trackLink(omnitureData);\n localStorage.setItem(IS_AUTHENTICATING, 'true');\n}\n\nfunction trackAuthenticationComplete(_ref3) {\n var userAuth = _ref3.userAuth,\n provider = _ref3.provider,\n entitlementsTracking = _ref3.entitlementsTracking,\n isDomestic = _ref3.isDomestic;\n\n var isAuthenticating = localStorage.getItem(IS_AUTHENTICATING);\n if (isAuthenticating === 'true' || isAuthenticating === true) {\n var authenticationComplete = 'authentication complete';\n var authenticationCompleteData = {\n events: 'event68',\n pev2: authenticationComplete,\n prop9: authenticationComplete,\n eVar74: authenticationComplete\n };\n var omnitureData = _extends({}, baseOmnitureData, Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"a\" /* getOmnitureAuthData */])(userAuth, provider, isDomestic), Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"b\" /* getOmnitureEntitlementsData */])(entitlementsTracking), authenticationCompleteData);\n _trackLink(omnitureData);\n clearTrackingData();\n }\n}\n\nfunction trackAuthorizationStart(_ref4) {\n var userAuth = _ref4.userAuth,\n provider = _ref4.provider,\n entitlementsTracking = _ref4.entitlementsTracking,\n isDomestic = _ref4.isDomestic;\n\n var authorizationStart = 'authorization start';\n var authorizationStartData = {\n events: 'event69',\n pev2: authorizationStart,\n prop9: authorizationStart,\n eVar74: authorizationStart\n };\n var omnitureData = _extends({}, baseOmnitureData, Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"a\" /* getOmnitureAuthData */])(userAuth, provider, isDomestic), Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"b\" /* getOmnitureEntitlementsData */])(entitlementsTracking), authorizationStartData);\n setTimeout(function () {\n _trackLink(omnitureData);\n }, 1000);\n}\n\nfunction trackAuthorizationComplete(_ref5) {\n var userAuth = _ref5.userAuth,\n provider = _ref5.provider,\n entitlementsTracking = _ref5.entitlementsTracking,\n isDomestic = _ref5.isDomestic;\n\n var authorizationComplete = 'authorization complete';\n var authorizationCompleteData = {\n events: 'event70',\n pev2: authorizationComplete,\n prop9: authorizationComplete,\n eVar74: authorizationComplete\n };\n var omnitureData = _extends({}, baseOmnitureData, Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"a\" /* getOmnitureAuthData */])(userAuth, provider, isDomestic), Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"b\" /* getOmnitureEntitlementsData */])(entitlementsTracking), authorizationCompleteData);\n setTimeout(function () {\n _trackLink(omnitureData);\n }, 1000);\n}\n// https://espnjira.disney.com/browse/WEWEB-1174\nfunction trackSearch(_ref6) {\n var _ref6$fromHero = _ref6.fromHero,\n fromHero = _ref6$fromHero === undefined ? false : _ref6$fromHero,\n _ref6$searchTerm = _ref6.searchTerm,\n searchTerm = _ref6$searchTerm === undefined ? '' : _ref6$searchTerm,\n _ref6$isSuggestion = _ref6.isSuggestion,\n isSuggestion = _ref6$isSuggestion === undefined ? false : _ref6$isSuggestion,\n _ref6$isViewAllResult = _ref6.isViewAllResults,\n isViewAllResults = _ref6$isViewAllResult === undefined ? false : _ref6$isViewAllResult,\n type = _ref6.type,\n status = _ref6.status,\n entitlementsTracking = _ref6.entitlementsTracking;\n\n var context = fromHero === true ? 'search-hero' : 'search-page';\n var searchType = isSuggestion ? 'pre' : 'man';\n var submitMethod = 'submit';\n if (isSuggestion) {\n submitMethod = 'suggested';\n if (isViewAllResults) {\n submitMethod = 'view+all+results';\n } else if (type === __WEBPACK_IMPORTED_MODULE_0__enums__[\"o\" /* ContentType */].VOD) {\n submitMethod = 'suggested-vod-clip';\n } else if (type && status) {\n submitMethod = 'suggested-' + status + '-' + type;\n }\n }\n var searchTrackData = {\n events: 'event2',\n eVar4: searchType + ':' + searchTerm,\n prop7: searchType + ':' + searchTerm,\n eVar5: '' + submitMethod,\n eVar74: context,\n prop9: context\n };\n var omnitureData = _extends({}, baseOmnitureData, searchTrackData, Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"b\" /* getOmnitureEntitlementsData */])(entitlementsTracking));\n _trackLink(omnitureData);\n}\n\nfunction trackUntimelyLogout() {\n var actual = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'unknown';\n var expected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';\n var provider = arguments[2];\n var entitlementsTracking = arguments[3];\n\n var untimelyLogout = 'Untimely Logout';\n\n var providerName = provider.name;\n var providerAbbreviation = provider.abbreviation;\n if (provider.package) {\n providerName = provider.abbreviation;\n providerAbbreviation = provider.package.name;\n }\n\n var authnData = {\n eVar17: providerName,\n prop42: providerName,\n eVar32: providerAbbreviation,\n prop43: providerAbbreviation\n };\n\n var untimelyLogoutData = {\n events: 'event123',\n eVar37: navigator.userAgent,\n eVar74: untimelyLogout,\n eVar81: 'actual:' + actual + '|expected:' + expected,\n prop37: navigator.userAgent,\n prop9: untimelyLogout\n };\n var omnitureData = _extends({}, baseOmnitureData, authnData, untimelyLogoutData, Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"b\" /* getOmnitureEntitlementsData */])(entitlementsTracking));\n _trackLink(omnitureData);\n}\n\nfunction trackLeavePageAlertShown() {\n var leavePageAlertShown = 'Leave Page Alert Shown';\n var leavePageData = {\n events: 'event120',\n eVar74: leavePageAlertShown,\n eVar72: leavePageAlertShown,\n prop9: leavePageAlertShown\n };\n var omnitureData = _extends({}, baseOmnitureData, leavePageData);\n _trackLink(omnitureData);\n}\n\nfunction trackSocialShareClick(content, page, provider, socialPlatform, userAuth, entitlementsTracking, isDomestic) {\n var authData = Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"a\" /* getOmnitureAuthData */])(userAuth, provider, isDomestic);\n\n var socialShareValue = 'social share:' + Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"d\" /* getOmniturePageName */])(page) + ':' + socialPlatform + ':' + content.name;\n\n var omnitureData = _extends({\n events: 'event62',\n pev2: socialShareValue,\n prop9: socialShareValue,\n eVar72: 'social share:' + socialPlatform + ':' + content.type,\n eVar74: socialShareValue\n }, authData, Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"b\" /* getOmnitureEntitlementsData */])(entitlementsTracking));\n\n _trackLink(omnitureData);\n}\n\nfunction trackReturnAfterLeavePageAlert() {\n var returnAfterLeavePageAlert = 'Return After Leave Page Alert';\n var leavePageData = {\n events: 'event121',\n eVar74: returnAfterLeavePageAlert,\n eVar72: returnAfterLeavePageAlert,\n prop9: returnAfterLeavePageAlert\n };\n var omnitureData = _extends({}, baseOmnitureData, leavePageData);\n _trackLink(omnitureData);\n}\n\nfunction trackPage(_ref7) {\n var app = _ref7.app,\n page = _ref7.page,\n provider = _ref7.provider,\n userAuth = _ref7.userAuth,\n entitlementsTracking = _ref7.entitlementsTracking,\n promoTracking = _ref7.promoTracking,\n _ref7$adobePassMetada = _ref7.adobePassMetadata,\n adobePassMetadata = _ref7$adobePassMetada === undefined ? {} : _ref7$adobePassMetada,\n isDomestic = _ref7.isDomestic;\n\n var lang = (app.lang || '').toLowerCase();\n var usid = adobePassMetadata[UPSTREAM_USERID];\n\n var pageTrackData = {\n events: 'event3',\n prop17: lang,\n eVar9: lang,\n eVar85: usid\n };\n\n if (promoTracking) {\n pageTrackData.events = 'event3,prodView,event131';\n pageTrackData.products = promoTracking;\n }\n\n var omnitureData = _extends({}, baseOmnitureData, Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"c\" /* getOmniturePageData */])(page), Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"a\" /* getOmnitureAuthData */])(userAuth, provider, isDomestic), Object(__WEBPACK_IMPORTED_MODULE_1__format__[\"b\" /* getOmnitureEntitlementsData */])(entitlementsTracking), pageTrackData);\n _trackPage(omnitureData, app.bootstrap);\n}\n\nfunction trackActivatePage(lang) {\n var device = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';\n\n var trackingLang = lang.toLowerCase();\n var pageTrackData = {\n events: 'event3,event90',\n prop5: device,\n prop17: trackingLang,\n eVar9: trackingLang,\n eVar11: 'activate:watchespn:' + device,\n pageName: device + ':activate'\n };\n\n var omnitureData = _extends({}, baseOmnitureData, pageTrackData);\n _trackPage(omnitureData);\n}\n\nfunction trackActivateCodeInvalid() {\n var device = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'unknown';\n var provider = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mvpdId = provider.abbreviation,\n mvpdName = provider.name;\n\n var invalidCode = device + ':activate:invalidcode';\n var invalidCodeData = {\n events: 'event90',\n prop9: invalidCode,\n eVar74: invalidCode,\n eVar32: mvpdId,\n prop43: mvpdId,\n eVar17: mvpdName,\n prop42: mvpdName,\n eVar79: device + ':activationfail'\n\n };\n var omnitureData = _extends({}, baseOmnitureData, invalidCodeData);\n _trackLink(omnitureData);\n}\n\nfunction trackActivateSuccess() {\n var device = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'unknown';\n var provider = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mvpdId = provider.abbreviation,\n mvpdName = provider.name;\n\n var success = device + ':activate:success';\n var successData = {\n pageName: device + ':activate',\n events: 'event90',\n eVar11: 'activate:watchespn:' + device,\n prop9: success,\n eVar74: success,\n eVar32: mvpdId,\n prop43: mvpdId,\n eVar17: mvpdName,\n prop42: mvpdName,\n eVar79: device + ':activationsuccess'\n };\n var omnitureData = _extends({}, baseOmnitureData, successData);\n _trackPage(omnitureData);\n}\n\n// prop9 translates to c9, and eVar74 translates to v74\nfunction trackEspnPlayerOnAdSkipped() {\n var omnitureData = {\n prop1: 'watchespn',\n prop9: 'preroll+ad+skip',\n eVar74: 'preroll+ad+skip',\n pev2: 'Preroll Ad Skip'\n };\n\n _trackLink(omnitureData);\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export START_CHECK_SWID_AUTHENTICATION */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return COMPLETE_CHECK_SWID_AUTHENTICATION; });\n/* unused harmony export START_CHECK_ONEID_AUTHENTICATION */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return COMPLETE_CHECK_ONEID_AUTHENTICATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return GET_GUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CLEAR_GUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return LOGIN_START; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return LOGIN_CLOSED; });\n/* unused harmony export startSWIDAuthentication */\n/* unused harmony export completeSWIDAuthentication */\n/* unused harmony export startOneIDAuthentication */\n/* unused harmony export createLoginAction */\n/* unused harmony export loginClosed */\n/* unused harmony export setOneIdData */\n/* harmony export (immutable) */ __webpack_exports__[\"j\"] = completeOneIDAuthentication;\n/* harmony export (immutable) */ __webpack_exports__[\"h\"] = checkSWIDAuthentication;\n/* unused harmony export getLoggedInStatus */\n/* harmony export (immutable) */ __webpack_exports__[\"o\"] = logout;\n/* harmony export (immutable) */ __webpack_exports__[\"m\"] = launchLogin;\n/* harmony export (immutable) */ __webpack_exports__[\"n\"] = launchReauth;\n/* harmony export (immutable) */ __webpack_exports__[\"k\"] = forceTokenRefresh;\n/* harmony export (immutable) */ __webpack_exports__[\"l\"] = getGuest;\n/* harmony export (immutable) */ __webpack_exports__[\"i\"] = clearGuest;\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = checkOneIDAuthentication;\n/* unused harmony export disneyIDReadyAction */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_cookie_cutter__ = __webpack_require__(93);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_cookie_cutter___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_cookie_cutter__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_util_canUseDOM__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__lib_oneId__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__appActions__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__selectors_oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__lib_util_localStorage__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__lib_auth_hasTDA__ = __webpack_require__(215);\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n/* eslint-disable no-use-before-define, no-return-assign */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SWID_RE = /^\\{[\\w-]+\\}/;\n\nvar START_CHECK_SWID_AUTHENTICATION = 'START_CHECK_SWID_AUTHENTICATION';\nvar COMPLETE_CHECK_SWID_AUTHENTICATION = 'COMPLETE_CHECK_SWID_AUTHENTICATION';\nvar START_CHECK_ONEID_AUTHENTICATION = 'START_CHECK_ONEID_AUTHENTICATION';\nvar COMPLETE_CHECK_ONEID_AUTHENTICATION = 'COMPLETE_CHECK_ONEID_AUTHENTICATION';\nvar GET_GUEST = 'GET_GUEST';\nvar CLEAR_GUEST = 'CLEAR_GUEST';\nvar LOGIN_START = 'LOGIN_START';\nvar LOGIN_CLOSED = 'LOGIN_CLOSED';\n\nvar disneyIDReadyPromise = void 0;\n\nfunction startSWIDAuthentication() {\n return {\n type: START_CHECK_SWID_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nfunction completeSWIDAuthentication(isAuthenticated, swid) {\n return {\n type: COMPLETE_CHECK_SWID_AUTHENTICATION,\n isAuthenticated: isAuthenticated,\n swid: swid,\n completeTime: Date.now()\n };\n}\n\nfunction startOneIDAuthentication() {\n return {\n type: START_CHECK_ONEID_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nfunction createLoginAction(params) {\n return {\n type: LOGIN_START,\n params: params\n };\n}\n\nfunction loginClosed() {\n return {\n type: LOGIN_CLOSED\n };\n}\n\nfunction setOneIdData(data) {\n return {\n type: GET_GUEST,\n data: data,\n completeTime: Date.now()\n };\n}\n\nfunction completeOneIDAuthentication(isAuthenticated, entitlements, hasTDAEntitlement, hasSuperBundle) {\n var bamSubReady = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n return {\n type: COMPLETE_CHECK_ONEID_AUTHENTICATION,\n isAuthenticated: isAuthenticated,\n entitlements: entitlements,\n hasSuperBundle: hasSuperBundle,\n bamSubReady: bamSubReady,\n hasTDAEntitlement: hasTDAEntitlement,\n directive: isAuthenticated === true ? 'add' : 'remove',\n authType: __WEBPACK_IMPORTED_MODULE_2__enums__[\"e\" /* AuthTypes */].BAM,\n completeTime: Date.now()\n };\n}\n\n// TODO: Maybe swid should come from some OneId library instead of the cookie\nfunction checkSWIDAuthentication() {\n return function (dispatch) {\n dispatch(startSWIDAuthentication());\n var swid = __WEBPACK_IMPORTED_MODULE_1_cookie_cutter___default.a.get('SWID');\n var isAuthenticated = SWID_RE.test(swid);\n\n dispatch(completeSWIDAuthentication(isAuthenticated, swid));\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(isAuthenticated);\n };\n}\n\nfunction getLoggedInStatus() {\n return function (dispatch, getState) {\n var isLoggedIn = Object(__WEBPACK_IMPORTED_MODULE_10__selectors_oneIdSelector__[\"f\" /* oneIdLoggedInSelector */])(getState());\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(isLoggedIn);\n };\n}\n\nfunction logout() {\n return function () {\n return Object(__WEBPACK_IMPORTED_MODULE_6__lib_oneId__[\"i\" /* logout */])();\n };\n}\n\nfunction launchLogin(options, params) {\n return function (dispatch) {\n dispatch(createLoginAction(params));\n return Object(__WEBPACK_IMPORTED_MODULE_6__lib_oneId__[\"g\" /* launchLogin */])(options);\n };\n}\n\nfunction launchReauth(options, params) {\n return function (dispatch) {\n dispatch(createLoginAction(params));\n return Object(__WEBPACK_IMPORTED_MODULE_6__lib_oneId__[\"h\" /* launchReauth */])(options);\n };\n}\n\nfunction forceTokenRefresh() {\n return function () {\n return Object(__WEBPACK_IMPORTED_MODULE_6__lib_oneId__[\"c\" /* forceTokenRefresh */])();\n };\n}\n\nfunction getGuest() {\n return function (dispatch) {\n return Object(__WEBPACK_IMPORTED_MODULE_6__lib_oneId__[\"d\" /* getGuest */])().then(function (data) {\n dispatch(setOneIdData(data));\n return data;\n });\n };\n}\n\nfunction clearGuest() {\n return {\n type: CLEAR_GUEST,\n directive: 'remove',\n isAuthenticated: false,\n authType: __WEBPACK_IMPORTED_MODULE_2__enums__[\"e\" /* AuthTypes */].BAM,\n completeTime: Date.now()\n };\n}\n\nvar disneyIDReady = false;\nvar transactionId = 0;\n\nfunction checkOneIDAuthentication() {\n var _this = this;\n\n return function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(dispatch, getState) {\n var hasPageShell, data, state, isLoggedIn, entitlements, bamSessionToken, hasSuperBundle, bamSubReady, hasTDAEntitlement, isAuthenticated;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__[\"a\" /* markStart */]('checkOneIDAuthentication');\n dispatch(startOneIDAuthentication());\n hasPageShell = Object(__WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__[\"n\" /* hasPageShellSelector */])(getState());\n\n if (!hasPageShell) {\n _context2.next = 32;\n break;\n }\n\n if (disneyIDReadyPromise) {\n _context2.next = 24;\n break;\n }\n\n data = void 0;\n _context2.prev = 6;\n _context2.next = 9;\n return dispatch(disneyIDReadyAction());\n\n case 9:\n data = _context2.sent;\n\n Object(__WEBPACK_IMPORTED_MODULE_6__lib_oneId__[\"k\" /* on */])('refresh', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return dispatch(getGuest());\n\n case 2:\n transactionId += 1;\n // use new oneId token to refresh BAM token by calling SDK Data\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__appActions__[\"B\" /* createSDKWrapper */])(__WEBPACK_IMPORTED_MODULE_3__constants__[\"c\" /* BAM_PROXY_IFRAME_ID */], ['geolocation', 'subscriptions', 'sessionToken', 'userTrackingInformation'], transactionId));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this);\n })));\n Object(__WEBPACK_IMPORTED_MODULE_6__lib_oneId__[\"k\" /* on */])('logout', function () {\n Object(__WEBPACK_IMPORTED_MODULE_11__lib_util_localStorage__[\"c\" /* remove */])(__WEBPACK_IMPORTED_MODULE_3__constants__[\"q\" /* SUB_KEY */]);\n Object(__WEBPACK_IMPORTED_MODULE_11__lib_util_localStorage__[\"c\" /* remove */])(__WEBPACK_IMPORTED_MODULE_3__constants__[\"o\" /* SESSION_TOKEN_KEY */]);\n Object(__WEBPACK_IMPORTED_MODULE_11__lib_util_localStorage__[\"c\" /* remove */])(__WEBPACK_IMPORTED_MODULE_3__constants__[\"r\" /* USER_TRACKING_KEY */]);\n dispatch(clearGuest());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__authenticationActions__[\"P\" /* createGetBAMAuthenticationInfoAction */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__authenticationActions__[\"Q\" /* createGetBAMSessionTokenAction */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__authenticationActions__[\"T\" /* createGetUserTrackingAction */])({}));\n dispatch(completeOneIDAuthentication(false, []));\n });\n _context2.next = 20;\n break;\n\n case 14:\n _context2.prev = 14;\n _context2.t0 = _context2['catch'](6);\n\n console.error(_context2.t0);\n _context2.next = 19;\n return dispatch(getGuest());\n\n case 19:\n data = _context2.sent;\n\n case 20:\n dispatch(setOneIdData(data));\n disneyIDReady = true;\n _context2.next = 30;\n break;\n\n case 24:\n if (disneyIDReady) {\n _context2.next = 28;\n break;\n }\n\n return _context2.abrupt('return', disneyIDReadyPromise);\n\n case 28:\n _context2.next = 30;\n return dispatch(getGuest());\n\n case 30:\n _context2.next = 34;\n break;\n\n case 32:\n _context2.next = 34;\n return dispatch(getGuest());\n\n case 34:\n state = getState();\n isLoggedIn = Object(__WEBPACK_IMPORTED_MODULE_10__selectors_oneIdSelector__[\"f\" /* oneIdLoggedInSelector */])(state);\n entitlements = Object(__WEBPACK_IMPORTED_MODULE_10__selectors_oneIdSelector__[\"d\" /* oneIdEntitlementsSelector */])(state);\n bamSessionToken = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_authenticationSelectors__[\"j\" /* bamSessionTokenSelector */])(state);\n hasSuperBundle = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_authenticationSelectors__[\"q\" /* superBundleSelector */])(state);\n bamSubReady = Object(__WEBPACK_IMPORTED_MODULE_12__selectors_authenticationSelectors__[\"k\" /* bamSubReadySelector */])(state);\n hasTDAEntitlement = Object(__WEBPACK_IMPORTED_MODULE_13__lib_auth_hasTDA__[\"a\" /* default */])(bamSessionToken);\n isAuthenticated = entitlements && entitlements.length > 0 || hasTDAEntitlement;\n // TODO: DTC - move this to `createSDKWrapper` action once BAM side can sync user login state with OneID\n\n dispatch(completeOneIDAuthentication(isAuthenticated, entitlements, hasTDAEntitlement, hasSuperBundle, bamSubReady));\n __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__[\"b\" /* measureAndTime */]('checkOneIDAuthentication');\n return _context2.abrupt('return', {\n isLoggedIn: isLoggedIn,\n entitlements: entitlements\n });\n\n case 45:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this, [[6, 14]]);\n }));\n\n return function (_x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n}\n\nfunction disneyIDReadyAction() {\n var _this2 = this;\n\n return function (dispatch) {\n __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__[\"a\" /* markStart */]('disneyIDReadyAction');\n return disneyIDReadyPromise || (disneyIDReadyPromise = new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) {\n var timeout = 60 * 1000;\n var userCreated = false;\n var userInitialized = false;\n if (!__WEBPACK_IMPORTED_MODULE_4__lib_util_canUseDOM__[\"a\" /* default */]) {\n reject(new Error('memberservices not available server side'));\n } else if (window.jQuery) {\n window.jQuery(document).one('user.created', function () {\n userCreated = true;\n if (window.espn && window.espn.memberservices && window.espn.memberservices.ready) {\n window.espn.memberservices.ready(function () {\n userInitialized = true;\n console.log('memberservices.ready'); // eslint-disable-line no-console\n });\n }\n console.log('user.created'); // eslint-disable-line no-console\n });\n window.jQuery(document).one('user.initialized', function () {\n userInitialized = true;\n console.log('user.initialized'); // eslint-disable-line no-console\n });\n var userParsedTimer = window.setTimeout(_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n var guest;\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__[\"b\" /* measureAndTime */]('disneyIDReadyAction');\n\n if (!(userCreated && userInitialized)) {\n _context3.next = 9;\n break;\n }\n\n _context3.next = 4;\n return dispatch(getGuest());\n\n case 4:\n guest = _context3.sent;\n\n console.log('`user.parsed` timeout, retrieving guest'); // eslint-disable-line no-console\n __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__[\"b\" /* measureAndTime */]('disneyIDReadyAction');\n resolve(guest);\n return _context3.abrupt('return');\n\n case 9:\n reject(new Error('user.parsed timeout'));\n\n case 10:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this2);\n })), timeout);\n window.jQuery(document).one('user.parsed', function (event, guest) {\n console.log('user.parsed'); // eslint-disable-line no-console\n window.clearTimeout(userParsedTimer);\n __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__[\"b\" /* measureAndTime */]('disneyIDReadyAction');\n resolve(typeof guest !== 'string' ? guest : undefined);\n });\n } else {\n reject(new Error('jQuery is not available with page shell'));\n }\n }));\n };\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (false) {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(280);\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7),\n _assign = __webpack_require__(15);\n\nvar CallbackQueue = __webpack_require__(234);\nvar PooledClass = __webpack_require__(65);\nvar ReactFeatureFlags = __webpack_require__(235);\nvar ReactReconciler = __webpack_require__(83);\nvar Transaction = __webpack_require__(119);\n\nvar invariant = __webpack_require__(5);\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? false ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? false ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? false ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? false ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? false ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? false ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? false ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (false) {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_superagent_bluebird_promise__ = __webpack_require__(274);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_superagent_bluebird_promise___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_superagent_bluebird_promise__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_superagent_cache__ = __webpack_require__(606);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_superagent_cache___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_superagent_cache__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__index__ = __webpack_require__(304);\n//\n// const request = require('superagent-bluebird-promise');\n// const cacheModuleConfig = { defaultExpiration: 60 };\n// require('superagent-cache')(request, cacheModuleConfig);\n// module.exports = request;\n\n\n\n\n\nvar cacheModuleConfig = { defaultExpiration: 60 };\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ((function () {\n if (true) {\n __WEBPACK_IMPORTED_MODULE_1_superagent_cache___default()(__WEBPACK_IMPORTED_MODULE_0_superagent_bluebird_promise___default.a, cacheModuleConfig);\n return __WEBPACK_IMPORTED_MODULE_0_superagent_bluebird_promise___default.a;\n }\n __WEBPACK_IMPORTED_MODULE_1_superagent_cache___default()(__WEBPACK_IMPORTED_MODULE_0_superagent_bluebird_promise___default.a, __WEBPACK_IMPORTED_MODULE_2__index__[\"a\" /* default */]);\n return __WEBPACK_IMPORTED_MODULE_0_superagent_bluebird_promise___default.a;\n})());\n\n/***/ }),\n/* 43 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__config__);\n\n\nvar httpProxy = __WEBPACK_IMPORTED_MODULE_0__config___default.a.httpProxy,\n noProxy = __WEBPACK_IMPORTED_MODULE_0__config___default.a.noProxy;\n\nvar noProxyRegEx = noProxy ? new RegExp(noProxy) : null;\n\nvar httpProxyAgent = false;\nif (false) {\n var proxyAgent = require('http-proxy-agent');\n httpProxyAgent = new proxyAgent(httpProxy);\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (request) {\n // if there's a proxy agent setup\n if (httpProxyAgent && 'agent' in request) {\n // if there's no noProxy regex or the url does not match the noProxy regex\n // then use the proxy\n if (!noProxyRegEx || noProxyRegEx.test(request.url) === false) {\n request.agent(httpProxyAgent);\n }\n }\n return request;\n});\n\n/***/ }),\n/* 44 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (immutable) */ __webpack_exports__[\"d\"] = set;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = get;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = remove;\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = setSessionItem;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = getSessionItem;\nfunction set(key, value, expirationInSec) {\n try {\n var data = { value: value };\n if (expirationInSec) {\n data.expiration = Date.now() + expirationInSec * 1000;\n }\n window.localStorage.setItem(key, JSON.stringify(data));\n } catch (err) {\n console.error(err);\n }\n}\n\nfunction get(key) {\n try {\n var value = window.localStorage.getItem(key);\n if (value === null) {\n return undefined;\n }\n var data = JSON.parse(value);\n if (data.expiration && data.expiration < Date.now()) {\n remove(key);\n return undefined;\n }\n return data.value;\n } catch (err) {\n return undefined;\n }\n}\n\nfunction remove(key) {\n try {\n window.localStorage.removeItem(key);\n } catch (err) {\n console.error(err);\n }\n}\n\nfunction setSessionItem(key, object) {\n try {\n window.sessionStorage.setItem(key, JSON.stringify(object));\n } catch (err) {\n return undefined;\n }\n}\n\nfunction getSessionItem(key) {\n try {\n var value = window.sessionStorage.getItem(key);\n return value && JSON.parse(value);\n } catch (err) {\n return undefined;\n }\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 45 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = streamHasAuthType;\nfunction streamHasAuthType() {\n var stream = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var authType = arguments[1];\n\n if (stream.authTypes && authType) {\n return stream.authTypes.filter(function (auth) {\n return auth === authType;\n }).length > 0;\n }\n return false;\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n\n\nvar selectedContentSelector = function selectedContentSelector(_ref) {\n var app = _ref.app;\n return app.selectedContent;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(selectedContentSelector, function (selectedContent) {\n return selectedContent;\n}));\n\n/***/ }),\n/* 47 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return persistentFlagsSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__whitelistSelector__ = __webpack_require__(307);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__enums__ = __webpack_require__(1);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\nvar flagsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_2__appSelector__[\"o\" /* hideNavSelector */], __WEBPACK_IMPORTED_MODULE_2__appSelector__[\"C\" /* playerTechSelector */], __WEBPACK_IMPORTED_MODULE_2__appSelector__[\"D\" /* roadblockSelector */], function (hideNav, playerTech, roadblock) {\n return {\n hideNav: hideNav,\n playerTech: playerTech,\n roadblock: roadblock.toString()\n };\n});\n\nvar persistentFlagsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_2__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_3__routingSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_1__whitelistSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__appSelector__[\"K\" /* webviewSelector */], function (_ref, routing, inWhitelist, isWebview) {\n var isMobile = _ref.isMobile;\n\n // if flags were passed in the URL, persist them\n var locationBeforeTransitions = routing.locationBeforeTransitions;\n // `locationBeforeTransitions` is set to `null` on the server side, so default value assignment doesn't work\n\n var _ref2 = locationBeforeTransitions || {},\n _ref2$pathname = _ref2.pathname,\n pathname = _ref2$pathname === undefined ? '' : _ref2$pathname,\n _ref2$query = _ref2.query,\n query = _ref2$query === undefined ? {} : _ref2$query;\n\n // take all the query params that are also flags and persist through auth\n\n\n var persistentFlags = Object.keys(__WEBPACK_IMPORTED_MODULE_4__enums__[\"t\" /* Flags */]).reduce(function (acc, currentFlag) {\n var queryKey = __WEBPACK_IMPORTED_MODULE_4__enums__[\"t\" /* Flags */][currentFlag];\n // if query param is a flag, accumulate it\n if (query[queryKey]) {\n acc[queryKey] = query[queryKey];\n }\n return acc;\n }, {});\n\n if (pathname === '/syndicated/player') {\n persistentFlags = _extends({}, persistentFlags, {\n type: query.type,\n dates: query.dates\n });\n }\n\n // special case to disable roadblock for those opted in to that experience\n if (isMobile && (inWhitelist || isWebview)) {\n persistentFlags[__WEBPACK_IMPORTED_MODULE_4__enums__[\"t\" /* Flags */].ROADBLOCK] = 'false';\n }\n\n return persistentFlags;\n});\n\n/* unused harmony default export */ var _unused_webpack_default_export = (flagsSelector);\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar PooledClass = __webpack_require__(65);\n\nvar emptyFunction = __webpack_require__(37);\nvar warning = __webpack_require__(6);\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (false) {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (false) {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else if (typeof event.returnValue !== 'unknown') {\n // eslint-disable-line valid-typeof\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (typeof event.cancelBubble !== 'unknown') {\n // eslint-disable-line valid-typeof\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (false) {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (false) {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (false) {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n false ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(196),\n isLength = __webpack_require__(198);\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return OneIdJs; });\n/* unused harmony export loadDisneyID */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return getGuest; });\n/* unused harmony export getLoggedInStatus */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return launchLogin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return launchReauth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return forceTokenRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return logout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return on; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return off; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return getLicensePlateDataBag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return launchLicensePlate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Error; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__enums__ = __webpack_require__(1);\nvar _OneIdJs;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nvar oneIdConfig = {\n clientId: 'ESPN-ONESITE.WEB',\n responderPage: 'https://www.espn.com/login/responder/index.html',\n cssOverride: 'https://secure.espncdn.com/combiner/c?css=disneyid/core.css'\n};\n\nvar OneIdJs = (_OneIdJs = {}, _defineProperty(_OneIdJs, __WEBPACK_IMPORTED_MODULE_1__enums__[\"x\" /* OneIdEnv */].STAGING, 'https://stg.cdn.registerdisney.go.com/v2/outer/DisneyID.js'), _defineProperty(_OneIdJs, __WEBPACK_IMPORTED_MODULE_1__enums__[\"x\" /* OneIdEnv */].PROD, 'https://cdn.registerdisney.go.com/v2/outer/DisneyID.js'), _OneIdJs);\n\nvar disneyIdPromise = void 0;\nvar oneIdInstance = void 0;\nvar initialized = void 0;\nvar initializing = void 0;\n\nfunction get() {\n if (true) {\n if (window.DisneyID) {\n if (oneIdInstance && (initialized || initializing)) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(oneIdInstance);\n }\n\n initializing = true;\n\n if (window.did) {\n // the page already provides initialized oneId instance\n initialized = true;\n initializing = false;\n oneIdInstance = window.did;\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(oneIdInstance);\n }\n\n if (window.location.pathname === '/watch/activate') {\n oneIdConfig.optionalConfigs = {\n reporting: {\n source: 'ott auth',\n context: 'ott auth'\n }\n };\n }\n\n // NOTE: Supports new subscribe activation code page\n // https://espnjira.disney.com/browse/WEWEB-2044\n if (window.location.pathname === '/watch/subscribe') {\n oneIdConfig.optionalConfigs = {\n reporting: {\n source: 'ott auth',\n context: 'dtc',\n subcontext1: 'subscribe'\n }\n };\n }\n\n if (!/\\.espn\\.com$/.test(window.location.hostname)) {\n oneIdConfig.responderPage = oneIdConfig.responderPage.replace('www.espn.com', window.location.hostname);\n }\n oneIdInstance = window.DisneyID.get(oneIdConfig);\n window.did = oneIdInstance;\n return oneIdInstance.init().then(function () {\n initialized = true;\n initializing = false;\n return oneIdInstance;\n }).catch(function (error) {\n console.error(error);\n });\n } else {\n // TODO: support passing `oneIdEnv`\n return loadDisneyID().then(get);\n }\n } else {\n return Promise.resolve(null);\n }\n}\n\nfunction loadDisneyID() {\n var oneIdEnv = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : __WEBPACK_IMPORTED_MODULE_1__enums__[\"x\" /* OneIdEnv */].PROD;\n\n return disneyIdPromise || (disneyIdPromise = new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) {\n if (window.DisneyID) {\n resolve(window.DisneyID);\n } else {\n var url = OneIdJs[oneIdEnv];\n var script = document.createElement('script');\n script.async = true;\n\n script.onload = function () {\n if (window.DisneyID) {\n resolve(window.DisneyID);\n } else {\n reject(new Error('script loaded but window.DisneyID not found.'));\n }\n };\n\n script.onerror = function () {\n reject(new Error('failed to load DisneyID'));\n };\n\n script.src = url;\n document.head.appendChild(script);\n }\n }));\n}\n\n// `getGuest()` rejects when user is not logged in, make sure to catch\nvar getGuest = function getGuest() {\n return get().then(function (oneId) {\n if (!oneId) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve();\n }\n return oneId.getGuest().catch(function (err) {\n // `GUEST_READ_FAILURE` when token is not valid,\n // but most likely `logout()` won't work either when this happens\n if (err === 'GUEST_READ_FAILURE') {\n return logout().then(function () {\n return undefined;\n }).catch(function () {\n return undefined;\n });\n }\n // this means user is not logged in, e.g. `Session not established`\n return undefined;\n });\n });\n};\n\nvar getLoggedInStatus = function getLoggedInStatus(options) {\n return get().then(function (oneId) {\n return oneId && oneId.getLoggedInStatus(options);\n }).then(function (status) {\n return status;\n }).catch(function () {\n return false;\n });\n};\n\nvar launchLogin = function launchLogin(options) {\n return get().then(function (oneId) {\n return oneId && oneId.launchLogin(options);\n });\n};\n\nvar launchReauth = function launchReauth(options) {\n return get().then(function (oneId) {\n return oneId && oneId.launchReauth(options);\n }).catch(function () {\n return launchLogin(options);\n });\n};\n\nvar forceTokenRefresh = function forceTokenRefresh() {\n return get().then(function (oneId) {\n return oneId && oneId.forceTokenRefresh();\n }).catch(function () {\n return undefined;\n });\n};\n\nvar logout = function logout() {\n return get().then(function (oneId) {\n return oneId && oneId.logout();\n });\n};\n\nvar on = function on(eventName, callback) {\n return get().then(function (oneId) {\n return oneId && oneId.on(eventName, callback);\n });\n};\n\nvar off = function off(eventName, callback) {\n return get().then(function (oneId) {\n return oneId && oneId.off(eventName, callback);\n });\n};\n\nvar getLicensePlateDataBag = function getLicensePlateDataBag(options) {\n return get().then(function (oneId) {\n return oneId && oneId.getLicensePlateDataBag(options);\n });\n};\n\nvar launchLicensePlate = function launchLicensePlate(options) {\n return get().then(function (oneId) {\n return oneId && oneId.launchLicensePlate(options);\n });\n};\n\nvar Error = {\n CANCEL_BY_USER: 'CANCEL_BY_USER',\n INVALID_PAIRING_CODE: 'INVALID_PAIRING_CODE',\n MISSING_PAIRING_CODE: 'MISSING_PAIRING_CODE',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR'\n};\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 53 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export providerDialogSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return displayProviderDialogSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return providersSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__ = __webpack_require__(12);\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_1__authenticationSelectors__[\"b\" /* adobePassInfoSelector */], __WEBPACK_IMPORTED_MODULE_1__authenticationSelectors__[\"m\" /* ipInfoSelector */], function (adobePassInfo, ipInfo) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__[\"a\" /* default */])(adobePassInfo)) {\n return adobePassInfo;\n } else if (!Object(__WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__[\"a\" /* default */])(ipInfo)) {\n return ipInfo;\n }\n return {};\n}));\n\nvar providerDialogSelector = function providerDialogSelector(_ref) {\n var _ref$providerDialog = _ref.providerDialog,\n providerDialog = _ref$providerDialog === undefined ? {} : _ref$providerDialog;\n return providerDialog;\n};\n\nvar displayProviderDialogSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(providerDialogSelector, function (_ref2) {\n var _ref2$display = _ref2.display,\n display = _ref2$display === undefined ? false : _ref2$display;\n return display;\n});\n\nvar providersSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(providerDialogSelector, function (_ref3) {\n var _ref3$providers = _ref3.providers,\n providers = _ref3$providers === undefined ? [] : _ref3$providers;\n return providers;\n});\n\n/***/ }),\n/* 54 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export getNielsenValue */\n/* unused harmony export getEventValueFromContent */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return analyticsConstantsSelector; });\n/* unused harmony export storyIdSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return navmethodSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return entitlementsTrackingSelector; });\n/* unused harmony export promoTrackingSelector */\n/* unused harmony export wasPersonalizedSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return nielsenTrackingSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return comscoreTrackingSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return pageTrackingSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return placementPrefixSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_uniq__ = __webpack_require__(94);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_uniq___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_uniq__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_intersection__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_intersection___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_lodash_intersection__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__providerSelector__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__apiParamsSelector__ = __webpack_require__(115);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__selectedContentSelector__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__selectedStreamSelector__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__fanSelector__ = __webpack_require__(91);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__lib_auth_getAccessMethodFromAuthTypes__ = __webpack_require__(190);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__lib_auth_streamHasAuthType__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__lib_omniture__ = __webpack_require__(34);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19_cookie_cutter__ = __webpack_require__(93);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19_cookie_cutter___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_19_cookie_cutter__);\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar UPSTREAM_USERID = __WEBPACK_IMPORTED_MODULE_3__enums__[\"a\" /* AdobePass */].METADATA.UPSTREAM_USERID;\n\n// utility functions to format data specifically for nielsen\n\nfunction yesOrNo(boolParam) {\n return boolParam === true ? 'yes' : 'no';\n}\n\n/**\n * getNielsenValue - Returns the expected nielsen value. If no value is defined, the fallbackValue\n * will be returned. Ensures backwards compatibility when called without fallbackValue will result\n * as 'Not Applicable'\n *\n * @param {string} value - the expected value to be returned if defined\n * @param {string} fallbackValue = 'Not Applicable' - fallback value when value is not defined\n * @return {string}\n */\nvar getNielsenValue = function getNielsenValue(value) {\n var fallbackValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Not Applicable';\n return value && typeof value === 'string' && value.trim() !== '' ? value : fallbackValue;\n};\n\n/**\n * getEventValueFromContent - Returns the proper NielsenValue if the content.type matches the\n * contentType parameter. Provides a fallback value option.\n *\n * @param {object} content - object containing the type property that is used to compare with contentType\n * @param {string} contentType - content type to match current content with\n * @param {string} value - Expected value to be returned if condition is truthy\n * @param {string} fallbackValue = 'Not Applicable' - fallback value when value is not defined\n * @return {string}\n */\nvar getEventValueFromContent = function getEventValueFromContent() {\n var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var contentType = arguments[1];\n var value = arguments[2];\n var fallbackValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Not Applicable';\n return content && content.type === contentType ? getNielsenValue(value, fallbackValue) : fallbackValue;\n};\n\nfunction getNielsenPersonalizationData(fan) {\n if (Object.keys(fan).length > 0) {\n var _fan$profile$settings = fan.profile.settings,\n settings = _fan$profile$settings === undefined ? {} : _fan$profile$settings;\n var _settings$activeProdu = settings.activeProducts,\n activeProducts = _settings$activeProdu === undefined ? {} : _settings$activeProdu;\n var _activeProducts$metaD = activeProducts.metaData,\n metaData = _activeProducts$metaD === undefined ? {} : _activeProducts$metaD;\n\n\n var hasFantasy = Object.keys(metaData).filter(function (key) {\n return metaData[key] === 'true';\n }).map(function (key) {\n return key.indexOf('lm_') !== -1;\n }).length > 0;\n\n var hasFavorites = fan.preferences && fan.preferences.length > 0;\n var hasNotifications = fan.profile && fan.profile.hasNotificationPreferences;\n var videoAutoStart = settings.videoAutoStart && settings.videoAutoStart.value === '2';\n return 'has favorites:' + yesOrNo(hasFavorites) + '|fantasy:' + yesOrNo(hasFantasy) + '|notifications:' + hasNotifications + '|docking:no-autostart:' + yesOrNo(videoAutoStart); // eslint-disable-line\n }\n return 'Not Applicable';\n}\n\nfunction getNielsenLoginStatusFromFan(fan) {\n if (Object.keys(fan).length > 0) {\n return 'Registered:Logged in Active';\n }\n return 'Not Applicable';\n}\n\nfunction getActiveSubscriptions() {\n var subscriptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var stream = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // eslint-disable-line\n var packages = stream.packages;\n\n var activeSubscriptions = subscriptions.filter(function (_ref) {\n var isActive = _ref.isActive,\n _ref$products = _ref.products;\n _ref$products = _ref$products === undefined ? [] : _ref$products;\n\n var _ref$products2 = _slicedToArray(_ref$products, 1),\n _ref$products2$ = _ref$products2[0],\n product = _ref$products2$ === undefined ? {} : _ref$products2$,\n type = _ref.status.type;\n\n var _product$productEntit = product.productEntitlements;\n _product$productEntit = _product$productEntit === undefined ? [] : _product$productEntit;\n\n var _product$productEntit2 = _slicedToArray(_product$productEntit, 1),\n _product$productEntit3 = _product$productEntit2[0],\n entitlement = _product$productEntit3 === undefined ? {} : _product$productEntit3;\n\n return isActive && type === 'SUBSCRIBED' && (!packages || packages.indexOf(entitlement.name) > -1);\n });\n\n return activeSubscriptions;\n}\n\nfunction formatNielsenData() {\n var playbackMeta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var fan = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var provider = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var selectedContent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var selectedStream = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var userAuth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : [];\n var entitlementsTracking = arguments[7];\n var adobePassMetadata = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : {};\n var constants = arguments[9];\n var navmethod = arguments[10];\n var storyId = arguments[11];\n var wasPersonalized = arguments[12];\n var Site = constants.Site,\n ReportSuite = constants.ReportSuite,\n Edition = constants.Edition;\n var _playbackMeta$playbac = playbackMeta.playbackState,\n playbackState = _playbackMeta$playbac === undefined ? {} : _playbackMeta$playbac,\n _playbackMeta$trackin = playbackMeta.tracking,\n tracking = _playbackMeta$trackin === undefined ? {} : _playbackMeta$trackin;\n var usid = adobePassMetadata[UPSTREAM_USERID];\n\n if (provider.abbreviation === 'Comcast_SSO' || provider.abbreviation === 'YouTubeTV') {\n usid = undefined;\n }\n var Language = (page.lang || '').toLowerCase();\n var Placement = selectedContent.placement || 'player-direct';\n var PlayLocation = navmethod;\n var InsiderStatus = yesOrNo(fan.isInsider);\n\n // watch specific values\n var networkVal = selectedStream.source && selectedStream.source.dtc && selectedStream.source.dtc.toLowerCase() || selectedStream.source && selectedStream.source.id && selectedStream.source.id.toLowerCase() || selectedStream.source && selectedStream.source.name && selectedStream.source.name.toLowerCase();\n var Network = getEventValueFromContent(selectedContent, __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING, networkVal);\n var AirDate = getEventValueFromContent(selectedContent, __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING, selectedContent.date);\n var AirTime = getEventValueFromContent(selectedContent, __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING, selectedContent.time);\n // TODO: DTC - `airingId` not available in stream\n var AiringID = getEventValueFromContent(selectedContent, __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING, playbackState.airingId || playbackState.id);\n var isStudio = selectedContent.type === __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING ? yesOrNo(tracking.isStudio) : 'Not Applicable';\n var trackingId = tracking.trackingId;\n var WasPersonalized = yesOrNo(wasPersonalized);\n var ProgramCode = getEventValueFromContent(selectedContent, __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING, tracking.programCode);\n var SegC = ProgramCode;\n var SegA = selectedStream.name;\n\n var AccessMethod = getEventValueFromContent(selectedContent, __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING, Object(__WEBPACK_IMPORTED_MODULE_15__lib_auth_getAccessMethodFromAuthTypes__[\"a\" /* default */])(userAuth), 'Not Authenticated');\n var AuthenticationStatus = AccessMethod;\n var AffiliateName = getEventValueFromContent(selectedContent, __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING, provider.package ? provider.abbreviation : provider.name, 'Not Authenticated');\n var AffiliateID = getEventValueFromContent(selectedContent, __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING, provider.package ? provider.package.name : provider.abbreviation, 'Not Authenticated');\n usid = getEventValueFromContent(selectedContent, __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].LISTING, usid);\n\n var LoginStatus = getNielsenLoginStatusFromFan(fan);\n var Personalization = getNielsenPersonalizationData(fan);\n var Embedded = 'no';\n\n var SWID = fan.id || typeof document !== 'undefined' && __WEBPACK_IMPORTED_MODULE_19_cookie_cutter___default.a.get('SWID');\n var unid = fan.id || typeof document !== 'undefined' && __WEBPACK_IMPORTED_MODULE_19_cookie_cutter___default.a.get('UNID');\n var UserAgent = typeof window !== 'undefined' ? window.navigator.userAgent : 'Not Applicable';\n\n // Entitlements\n var purchaseMethod = entitlementsTracking.purchaseMethod,\n subscriberType = entitlementsTracking.subscriberType,\n entitlements = entitlementsTracking.entitlements,\n oneIdLoggedIn = entitlementsTracking.oneIdLoggedIn,\n userTracking = entitlementsTracking.userTracking,\n hasSuperBundle = entitlementsTracking.hasSuperBundle;\n\n var PurchaseMethod = purchaseMethod || 'Not Applicable';\n var SubscriberType = subscriberType || 'Not Applicable';\n var DisneyPlusBundle = hasSuperBundle ? 'Yes' : 'No';\n var DTCEntitlements = entitlements || 'Not Applicable';\n var DSSID = Object(__WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"d\" /* getOmnitureUserTrackingData */])(oneIdLoggedIn, userTracking);\n\n // #TODO get real orientation when mobile player launches\n var Orientation = 'Desktop';\n var VideoType = Object(__WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"e\" /* getVideoTypeFromStream */])(selectedContent);\n var ContentDuration = tracking.duration || -1;\n var Sport = getNielsenValue(tracking.sport);\n var League = getNielsenValue(tracking.league);\n // if No League, set it equal to the sport, ask Hopkins.\n League = League !== 'No League' ? League : Sport;\n // TODO: DTC - is this currently working?\n var GameID = getNielsenValue(selectedContent.gameId);\n var PlayerName = VideoType === __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].VOD ? 'Brightcove-vod' : 'Brightcove-live';\n if (selectedStream.authTypes && selectedStream.authTypes.indexOf(__WEBPACK_IMPORTED_MODULE_3__enums__[\"e\" /* AuthTypes */].BAM) > -1) {\n PlayerName = 'BAM-live';\n }\n\n var VideoTypeDetail = getNielsenValue(tracking.coverageType);\n // #TODO: get these values\n var isVOD = selectedContent.type === __WEBPACK_IMPORTED_MODULE_3__enums__[\"o\" /* ContentType */].VOD;\n var dateTimeArray = isVOD ? (tracking.originalPublishDate || '').split('T') : [];\n var PublishDate = isVOD ? dateTimeArray[0] : 'Not Applicable';\n var PublishTime = isVOD ? dateTimeArray[1] : 'Not Applicable';\n var ExpirationDate = isVOD ? tracking.expirationDate : 'Not Applicable';\n var DateLastModified = isVOD ? tracking.lastModified : 'Not Applicable';\n var CMSID = isVOD ? selectedContent.id + '-' + tracking.name : 'Not Applicable';\n var ShowCode = isVOD ? tracking.showCode : 'Not Applicable';\n var VideoPlaylist = 'Not Applicable';\n var isfullepisode = isVOD ? 'n' : 'y';\n var StoryID = storyId;\n\n return {\n Site: Site,\n ReportSuite: ReportSuite,\n SWID: SWID,\n UserAgent: UserAgent,\n Language: Language,\n Placement: Placement,\n PlayLocation: PlayLocation,\n Network: Network,\n InsiderStatus: InsiderStatus,\n AirDate: AirDate,\n AirTime: AirTime,\n AiringID: AiringID,\n isStudio: isStudio,\n trackingId: trackingId,\n WasPersonalized: WasPersonalized,\n SegA: SegA,\n SegC: SegC,\n ProgramCode: ProgramCode,\n LoginStatus: LoginStatus,\n Personalization: Personalization,\n Embedded: Embedded,\n Orientation: Orientation,\n AccessMethod: AccessMethod,\n AffiliateID: AffiliateID,\n AffiliateName: AffiliateName,\n AuthenticationStatus: AuthenticationStatus,\n PurchaseMethod: PurchaseMethod,\n SubscriberType: SubscriberType,\n Entitlements: DTCEntitlements,\n Edition: Edition,\n GameID: GameID,\n StoryID: StoryID,\n VideoType: VideoType,\n ContentDuration: ContentDuration,\n Sport: Sport,\n League: League,\n PlayerName: PlayerName,\n VideoTypeDetail: VideoTypeDetail,\n PublishDate: PublishDate,\n PublishTime: PublishTime,\n ExpirationDate: ExpirationDate,\n DateLastModified: DateLastModified,\n CMSID: CMSID,\n ShowCode: ShowCode,\n VideoPlaylist: VideoPlaylist,\n isfullepisode: isfullepisode,\n unid: unid,\n usid: usid,\n navmethod: navmethod,\n DSSID: DSSID,\n DisneyPlusBundle: DisneyPlusBundle\n };\n}\n\nvar analyticsSelector = function analyticsSelector(_ref2) {\n var _ref2$app = _ref2.app;\n _ref2$app = _ref2$app === undefined ? {} : _ref2$app;\n var _ref2$app$analytics = _ref2$app.analytics,\n analytics = _ref2$app$analytics === undefined ? null : _ref2$app$analytics;\n return analytics;\n};\n\nvar analyticsConstantsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_5__appSelector__[\"v\" /* isSecureSelector */], __WEBPACK_IMPORTED_MODULE_5__appSelector__[\"u\" /* isIntlSelector */], __WEBPACK_IMPORTED_MODULE_5__appSelector__[\"p\" /* intlAppSelector */], __WEBPACK_IMPORTED_MODULE_5__appSelector__[\"k\" /* editionSelector */], function (_ref3, isSecure, isIntl, intlApp, _ref4) {\n var env = _ref3.env,\n _ref3$location$path = _ref3.location.path,\n path = _ref3$location$path === undefined ? '' : _ref3$location$path;\n var edition = _ref4.edition;\n var Channel = __WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"a\" /* OMNITURE_CONSTANTS */].Channel,\n Site = __WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"a\" /* OMNITURE_CONSTANTS */].Site,\n ReportSuite = __WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"a\" /* OMNITURE_CONSTANTS */].ReportSuite,\n ReportSuiteQA = __WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"a\" /* OMNITURE_CONSTANTS */].ReportSuiteQA,\n ReportSuiteIntl = __WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"a\" /* OMNITURE_CONSTANTS */].ReportSuiteIntl,\n ReportSuiteApp = __WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"a\" /* OMNITURE_CONSTANTS */].ReportSuiteApp,\n TrackingServer = __WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"a\" /* OMNITURE_CONSTANTS */].TrackingServer,\n SecureTrackingServer = __WEBPACK_IMPORTED_MODULE_18__lib_omniture__[\"a\" /* OMNITURE_CONSTANTS */].SecureTrackingServer;\n\n var constants = {\n Channel: Channel,\n Site: Site,\n ReportSuite: ReportSuite,\n TrackingServer: isSecure ? SecureTrackingServer : TrackingServer,\n Edition: edition === 'us' ? 'en-us' : edition\n };\n if (intlApp) {\n constants.ReportSuite = ReportSuiteApp;\n } else if (isIntl) {\n // TODO: remove this on the 1st of the following month of the last intl. launch\n constants.ReportSuite = ReportSuiteIntl;\n } else if (env !== __WEBPACK_IMPORTED_MODULE_3__enums__[\"c\" /* AppEnvs */].prod) {\n constants.ReportSuite = ReportSuiteQA;\n }\n\n if (path.indexOf('/activate') !== -1) {\n constants.Channel = 'device:activation';\n }\n\n return constants;\n});\n\nvar storyIdSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_14__routingSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__pageSelector__[\"c\" /* default */], function (_ref5) {\n var locationBeforeTransitions = _ref5.locationBeforeTransitions;\n\n var _ref6 = locationBeforeTransitions || {},\n _ref6$query = _ref6.query,\n query = _ref6$query === undefined ? {} : _ref6$query;\n\n var storyId = query['om-storyid'] || 'Not Applicable';\n\n return storyId;\n});\n\nvar navmethodSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_14__routingSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__selectedContentSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__pageSelector__[\"c\" /* default */], function (_ref7, selectedContent, page) {\n var locationBeforeTransitions = _ref7.locationBeforeTransitions;\n\n var _ref8 = selectedContent || {},\n isHero = _ref8.isHero,\n placement = _ref8.placement,\n bucketName = _ref8.bucketName,\n pageId = _ref8.pageId,\n pageName = _ref8.pageName,\n omNavmethod = _ref8['om-navmethod'];\n\n var _ref9 = locationBeforeTransitions || {},\n _ref9$query = _ref9.query,\n query = _ref9$query === undefined ? {} : _ref9$query;\n\n var navmethod = query['om-navmethod'] || omNavmethod;\n // set navmethod on tile click, based on position\n if (!Object(__WEBPACK_IMPORTED_MODULE_17__lib_util_isEmpty__[\"a\" /* default */])(selectedContent) && !navmethod) {\n var _pageId = pageId || page.id;\n var _pageName = pageName || page.name;\n var path = 'watch';\n if (_pageId === 'collection') {\n path += ':' + _pageName;\n } else if (_pageId !== 'home') {\n path += ':' + _pageId;\n }\n\n var rowName = 'Not Applicable';\n if (isHero || placement === 'inline-hero') {\n rowName = 'hero';\n } else if (bucketName) {\n rowName = bucketName;\n }\n\n navmethod = path + ':' + rowName;\n }\n\n return navmethod;\n});\n\nvar entitlementsTrackingSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__appSelector__[\"s\" /* isDomesticSelector */], __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"p\" /* subscriptionsSelector */], __WEBPACK_IMPORTED_MODULE_13__oneIdSelector__[\"d\" /* oneIdEntitlementsSelector */], __WEBPACK_IMPORTED_MODULE_13__oneIdSelector__[\"f\" /* oneIdLoggedInSelector */], __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"t\" /* userTrackingSelector */], __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"q\" /* superBundleSelector */], function (isDomestic, subscriptions) {\n var entitlementsArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var oneIdLoggedIn = arguments[3];\n var userTracking = arguments[4];\n var hasSuperBundle = arguments[5];\n\n if (!isDomestic) {\n return {};\n }\n\n var purchaseMethod = [];\n var subscriberType = 'not subscribed';\n var entitlements = entitlementsArg;\n\n if (subscriptions) {\n purchaseMethod = __WEBPACK_IMPORTED_MODULE_1_lodash_uniq___default()(subscriptions.map(function (_ref10) {\n var _ref10$source = _ref10.source;\n _ref10$source = _ref10$source === undefined ? {} : _ref10$source;\n var provider = _ref10$source.provider;\n return provider && provider.toLowerCase();\n }));\n\n var subscriberTypes = __WEBPACK_IMPORTED_MODULE_1_lodash_uniq___default()(subscriptions.map(function (_ref11) {\n var isActive = _ref11.isActive;\n return isActive;\n }));\n\n if (subscriberTypes.length) {\n subscriberType = subscriberTypes.some(function (isActive) {\n return !!isActive;\n }) ? 'active' : 'inactive';\n }\n }\n\n if (!purchaseMethod.length) {\n purchaseMethod = ['no entitlements'];\n }\n\n if (!entitlements.length) {\n entitlements = ['no entitlements'];\n }\n\n return {\n hasSuperBundle: hasSuperBundle,\n subscriberType: subscriberType,\n oneIdLoggedIn: oneIdLoggedIn,\n userTracking: userTracking,\n purchaseMethod: purchaseMethod.join(','),\n entitlements: entitlements.join(',')\n };\n});\n\nvar promoTrackingSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_4__bootstrapSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__pageSelector__[\"c\" /* default */], __WEBPACK_IMPORTED_MODULE_9__pageSelector__[\"g\" /* showPromoSelector */], function (_ref12, _ref13, showPromo) {\n var _ref12$sku = _ref12.sku,\n sku = _ref12$sku === undefined ? [] : _ref12$sku;\n var id = _ref13.id;\n\n var productsVal = void 0;\n if (id !== 'espnplus' || !showPromo) {\n return productsVal;\n }\n var products = sku.filter(function (_ref14) {\n var _ref14$name = _ref14.name,\n name = _ref14$name === undefined ? '' : _ref14$name;\n return name.toLowerCase().indexOf('base') > -1;\n }).map(function (_ref15) {\n var value = _ref15.value;\n return ';' + value;\n });\n productsVal = 'D2C' + products.join(',');\n return productsVal;\n});\n\nvar wasPersonalizedSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_4__bootstrapSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__apiParamsSelector__[\"e\" /* pageAPIParamsSelector */], function (_ref16, pageAPIParams) {\n var _ref16$pageApi = _ref16.pageApi;\n _ref16$pageApi = _ref16$pageApi === undefined ? {} : _ref16$pageApi;\n var _ref16$pageApi$requir = _ref16$pageApi.requireClientRenderParams,\n requireClientRenderParams = _ref16$pageApi$requir === undefined ? [] : _ref16$pageApi$requir;\n\n var hasPersonalizedParams = __WEBPACK_IMPORTED_MODULE_2_lodash_intersection___default()(Object.keys(pageAPIParams), requireClientRenderParams).length > 0;\n return hasPersonalizedParams;\n});\n\n// last argument on the selector gets passed the previous arguments\nvar nielsenTrackingSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__appSelector__[\"A\" /* playbackMetaSelector */], __WEBPACK_IMPORTED_MODULE_12__fanSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__pageSelector__[\"c\" /* default */], __WEBPACK_IMPORTED_MODULE_6__providerSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__selectedContentSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_11__selectedStreamSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"r\" /* userAuthSelector */], entitlementsTrackingSelector, __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"e\" /* adobePassMetadataSelector */], analyticsConstantsSelector, navmethodSelector, storyIdSelector, wasPersonalizedSelector, formatNielsenData);\n\nvar comscoreTrackingSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__appSelector__[\"k\" /* editionSelector */], __WEBPACK_IMPORTED_MODULE_11__selectedStreamSelector__[\"a\" /* default */], function (_ref17, selectedStream) {\n var edition = _ref17.edition;\n\n var c3 = void 0;\n var c4 = edition === 'brazil' ? '\"watchespncombr\"' : '\"watchespncom\"';\n if (Object(__WEBPACK_IMPORTED_MODULE_16__lib_auth_streamHasAuthType__[\"a\" /* default */])(selectedStream, __WEBPACK_IMPORTED_MODULE_3__enums__[\"e\" /* AuthTypes */].BAM)) {\n c4 = '\"' + __WEBPACK_IMPORTED_MODULE_3__enums__[\"m\" /* ComScoreC3 */][__WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_PLUS] + '\"';\n var _selectedStream$packa = selectedStream.packages,\n packages = _selectedStream$packa === undefined ? [] : _selectedStream$packa;\n\n if (packages.length) {\n if (packages.indexOf(__WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_PLUS) > -1) {\n c3 = __WEBPACK_IMPORTED_MODULE_3__enums__[\"m\" /* ComScoreC3 */][__WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_PLUS];\n } else {\n c3 = __WEBPACK_IMPORTED_MODULE_3__enums__[\"m\" /* ComScoreC3 */][packages[0]];\n }\n }\n }\n var labels = {\n c4: c4\n };\n if (c3) {\n labels.c3 = '\"' + c3 + '\"';\n }\n return {\n labels: labels\n };\n});\n\nvar pageTrackingSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__appSelector__[\"s\" /* isDomesticSelector */], __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"b\" /* adobePassInfoSelector */], analyticsSelector, __WEBPACK_IMPORTED_MODULE_5__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"m\" /* ipInfoSelector */], __WEBPACK_IMPORTED_MODULE_9__pageSelector__[\"c\" /* default */], __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"r\" /* userAuthSelector */], __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"p\" /* subscriptionsSelector */], __WEBPACK_IMPORTED_MODULE_13__oneIdSelector__[\"f\" /* oneIdLoggedInSelector */], entitlementsTrackingSelector, promoTrackingSelector, __WEBPACK_IMPORTED_MODULE_8__authenticationSelectors__[\"e\" /* adobePassMetadataSelector */], function (isDomestic, adobePassInfo, analytics, app, ipInfo, page, userAuth, subscriptions, oneIdLoggedIn, entitlementsTracking, promoTracking, adobePassMetadata) {\n return {\n isDomestic: isDomestic,\n adobePassInfo: adobePassInfo,\n analytics: analytics,\n app: app,\n ipInfo: ipInfo,\n page: page,\n userAuth: userAuth,\n subscriptions: subscriptions,\n oneIdLoggedIn: oneIdLoggedIn,\n entitlementsTracking: entitlementsTracking,\n promoTracking: promoTracking,\n adobePassMetadata: adobePassMetadata\n };\n});\n\nvar placementPrefixSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_9__pageSelector__[\"c\" /* default */], function (page) {\n var prefix = page.id;\n if (page.id === 'collection' || page.id === 'product') {\n prefix += '-' + page.name;\n }\n prefix += '-';\n return prefix;\n});\n\n/***/ }),\n/* 55 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return SEARCH_TYPES; });\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = addContentToStream;\n/* unused harmony export parseContents */\n/* harmony export (immutable) */ __webpack_exports__[\"k\"] = graphql;\n/* harmony export (immutable) */ __webpack_exports__[\"i\"] = getSearchResults;\n/* harmony export (immutable) */ __webpack_exports__[\"l\"] = loadBootstrap;\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = getPage;\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = getEvent;\n/* harmony export (immutable) */ __webpack_exports__[\"j\"] = getVideo;\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = getBucketPage;\n/* harmony export (immutable) */ __webpack_exports__[\"h\"] = getPageWithPathId;\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = getPageByFullUrl;\n/* unused harmony export getScoringInfluencers */\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = fetchPickerStreams;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lib_api__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__selectors_bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__ = __webpack_require__(115);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__appActions__ = __webpack_require__(19);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n\n\n\n\n\n\n\n// un-comment to debug multiple feeds scenario\n// import getTestFeed from 'lib/api/TestFeeds';\n\nvar SEARCH_TYPES = {\n search: 'SEARCH',\n suggest: 'SUGGEST',\n competitors: 'COMPETITORS',\n listingsByCompetitor: 'LISTINGS_BY_COMPETITOR'\n};\n\nfunction addRecommendedConentIdsToContents(contents) {\n var recommendedContentIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n // To each content containing `dss` object, we want to expose the `recommendedContentIds` array\n contents.forEach(function (content) {\n if (content.dss) {\n content.dss.recommendedContentIds = recommendedContentIds;\n }\n });\n}\n\nfunction addContentToStream(content) {\n var streams = content.streams,\n contentParams = _objectWithoutProperties(content, ['streams']);\n\n if (Array.isArray(streams) && streams.length > 0) {\n streams.forEach(function (stream) {\n // should we just add content id and look up content metadata on demand?\n stream.contentId = content.id;\n stream.content = contentParams;\n // adds dss object to top level content\n if (stream.dss) {\n content.dss = stream.dss;\n }\n });\n }\n\n return content;\n}\n\nfunction parseContents(contents) {\n if (!contents) {\n return contents;\n }\n var recommendedContentIds = [];\n\n if (!Array.isArray(contents)) {\n return addContentToStream(contents);\n }\n\n contents.forEach(function (content) {\n addContentToStream(content);\n // NOTE: For each given content containing `dss.contentId`, we want to keep track via\n // recommendedContentIds which is required when executing `sendContentReward()`.\n if (content.dss && content.dss.contentId) {\n recommendedContentIds.push(content.dss.contentId);\n }\n });\n\n if (recommendedContentIds.length) {\n addRecommendedConentIdsToContents(contents, recommendedContentIds);\n }\n\n return contents;\n}\n\nfunction graphql(api, variables) {\n return function (dispatch, getState) {\n var state = getState();\n\n var _graphqlParamsSelecto = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"c\" /* graphqlParamsSelector */])(state),\n apiEnv = _graphqlParamsSelecto.apiEnv,\n lang = _graphqlParamsSelecto.lang,\n params = _objectWithoutProperties(_graphqlParamsSelecto, ['apiEnv', 'lang']);\n\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"c\" /* GraphQL */][api]({\n apiEnv: apiEnv,\n lang: lang,\n variables: _extends({}, params, variables)\n });\n };\n}\n\nfunction getSearchResults(query, apiEnv) {\n var endpoint = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : SEARCH_TYPES.search;\n\n var _this = this;\n\n var sortBy = arguments[3];\n var sortOrder = arguments[4];\n\n if (query.length === 0) {\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.reject('No Query Entered'));\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this);\n }));\n }\n switch (endpoint) {\n case SEARCH_TYPES.suggest:\n return function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(dispatch, getState) {\n var state, suggestApiParams, data;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n state = getState();\n suggestApiParams = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"h\" /* suggestApiParamsSelector */])(state);\n _context2.next = 4;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"e\" /* SearchAPI */].getSuggestion(query, apiEnv, _extends({}, suggestApiParams));\n\n case 4:\n data = _context2.sent;\n return _context2.abrupt('return', data);\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this);\n }));\n\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }();\n case SEARCH_TYPES.competitors:\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt('return', __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"e\" /* SearchAPI */].getAllCompetitors(apiEnv));\n\n case 1:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this);\n }));\n case SEARCH_TYPES.listingsByCompetitor:\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n return regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt('return', __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"e\" /* SearchAPI */].getEventsForTeam(query, apiEnv, { size: 1000, includes: 'sid', sortBy: sortBy, sortOrder: sortOrder }));\n\n case 1:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, _this);\n }));\n case SEARCH_TYPES.search:\n default:\n return function () {\n var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(dispatch, getState) {\n var state, searchApiParams, data;\n return regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n state = getState();\n searchApiParams = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"f\" /* searchApiParamsSelector */])(state);\n _context5.next = 4;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"e\" /* SearchAPI */].getSearchResults(query, apiEnv, _extends({}, searchApiParams));\n\n case 4:\n data = _context5.sent;\n return _context5.abrupt('return', data);\n\n case 6:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, _this);\n }));\n\n return function (_x5, _x6) {\n return _ref5.apply(this, arguments);\n };\n }();\n }\n}\n\nfunction loadBootstrap() {\n var _this2 = this;\n\n return function () {\n var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(dispatch, getState) {\n var configEnv, config;\n return regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n configEnv = Object(__WEBPACK_IMPORTED_MODULE_4__selectors_appSelector__[\"f\" /* configEnvSelector */])(getState());\n _context6.next = 3;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"a\" /* Bootstrap */].loadBootstrap({ configEnv: configEnv });\n\n case 3:\n config = _context6.sent;\n return _context6.abrupt('return', config);\n\n case 5:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, _this2);\n }));\n\n return function (_x7, _x8) {\n return _ref6.apply(this, arguments);\n };\n }();\n}\n\nvar testFeed = void 0; // eslint-disable-line prefer-const;\n\nfunction getPage(_ref7) {\n var _this3 = this;\n\n var name = _ref7.name,\n paramsArg = _objectWithoutProperties(_ref7, ['name']);\n\n return function () {\n var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(dispatch, getState) {\n var state, _bootstrapSelector, _bootstrapSelector$pa, _bootstrapSelector$pa2, pages, sessionToken, isTopLevel, pageAPIParams, data;\n\n return regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n state = getState();\n _bootstrapSelector = Object(__WEBPACK_IMPORTED_MODULE_2__selectors_bootstrapSelector__[\"a\" /* default */])(state), _bootstrapSelector$pa = _bootstrapSelector.pageApi;\n _bootstrapSelector$pa = _bootstrapSelector$pa === undefined ? {} : _bootstrapSelector$pa;\n _bootstrapSelector$pa2 = _bootstrapSelector$pa.pages, pages = _bootstrapSelector$pa2 === undefined ? [] : _bootstrapSelector$pa2;\n sessionToken = Object(__WEBPACK_IMPORTED_MODULE_5__selectors_authenticationSelectors__[\"j\" /* bamSessionTokenSelector */])(getState());\n isTopLevel = pages.some(function (_ref9) {\n var id = _ref9.id;\n return id === name;\n });\n pageAPIParams = isTopLevel ? Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"e\" /* pageAPIParamsSelector */])(state) : Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"d\" /* pageAPILimitedParamsSelector */])(state);\n _context7.next = 9;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"d\" /* PageAPI */].getPage(_extends({}, pageAPIParams, paramsArg, {\n name: name,\n sessionToken: sessionToken\n }));\n\n case 9:\n data = _context7.sent;\n\n\n // un-comment to debug multiple feeds scenario\n // testFeed = getTestFeed('espn3', configEnvSelector(getState()));\n if (data && data.page && data.page.buckets) {\n if (testFeed && data.page.buckets[0].contents[0].streams) {\n data.page.buckets[0].contents[0].streams.push(testFeed);\n }\n data.page.buckets.forEach(function (bucket) {\n var contents = bucket.contents;\n\n bucket.contents = parseContents(contents);\n });\n }\n\n return _context7.abrupt('return', data);\n\n case 12:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, _this3);\n }));\n\n return function (_x9, _x10) {\n return _ref8.apply(this, arguments);\n };\n }();\n}\n\nfunction getEvent(_ref10) {\n var _this4 = this;\n\n var query = _ref10.query,\n paramsArg = _objectWithoutProperties(_ref10, ['query']);\n\n return function () {\n var _ref11 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(dispatch, getState) {\n var state, pageAPIParams, data, notReplays, content;\n return regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n state = getState();\n pageAPIParams = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"d\" /* pageAPILimitedParamsSelector */])(state);\n _context8.next = 4;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"d\" /* PageAPI */].getEvent(_extends({}, pageAPIParams, paramsArg, {\n query: query\n }));\n\n case 4:\n data = _context8.sent;\n notReplays = void 0;\n // un-comment to debug multiple feeds scenario\n // testFeed = getTestFeed('espn3', configEnvSelector(getState()));\n\n if (data && data.page && data.page.contents) {\n if (testFeed) {\n data.page.contents.streams.push(testFeed);\n }\n data.page.contents = parseContents(data.page.contents);\n\n content = data.page.contents[0];\n\n if (content && !query.status) {\n notReplays = content.streams.filter(function (stream) {\n return stream.status !== 'upcoming';\n });\n }\n }\n\n return _context8.abrupt('return', notReplays || data);\n\n case 8:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, _this4);\n }));\n\n return function (_x11, _x12) {\n return _ref11.apply(this, arguments);\n };\n }();\n}\n\nfunction getVideo(_ref12) {\n var _this5 = this;\n\n var pathParams = _ref12.pathParams,\n paramsArg = _objectWithoutProperties(_ref12, ['pathParams']);\n\n return function () {\n var _ref13 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(dispatch, getState) {\n var state, pageAPIParams, data;\n return regeneratorRuntime.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n state = getState();\n pageAPIParams = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"d\" /* pageAPILimitedParamsSelector */])(state);\n _context9.next = 4;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"d\" /* PageAPI */].getVideo(_extends({}, pageAPIParams, paramsArg, {\n pathParams: pathParams\n }));\n\n case 4:\n data = _context9.sent;\n\n\n if (data && data.page && data.page.contents) {\n data.page.contents = parseContents(data.page.contents);\n }\n\n return _context9.abrupt('return', data);\n\n case 7:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, _this5);\n }));\n\n return function (_x13, _x14) {\n return _ref13.apply(this, arguments);\n };\n }();\n}\n\nfunction getBucketPage(_ref14) {\n var _this6 = this;\n\n var bucketId = _ref14.bucketId,\n groupId = _ref14.groupId,\n ignores = _ref14.ignores,\n paramsArg = _objectWithoutProperties(_ref14, ['bucketId', 'groupId', 'ignores']);\n\n return function () {\n var _ref15 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(dispatch, getState) {\n var state, pageAPIParams, sessionToken, data;\n return regeneratorRuntime.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n state = getState();\n pageAPIParams = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"e\" /* pageAPIParamsSelector */])(state);\n sessionToken = Object(__WEBPACK_IMPORTED_MODULE_5__selectors_authenticationSelectors__[\"j\" /* bamSessionTokenSelector */])(getState());\n _context10.next = 5;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"d\" /* PageAPI */].getBucketPage(_extends({}, pageAPIParams, paramsArg, {\n bucketId: bucketId,\n groupId: groupId,\n ignores: ignores,\n sessionToken: sessionToken\n }));\n\n case 5:\n data = _context10.sent;\n\n\n if (data && data.page && data.page.buckets) {\n data.page.buckets.forEach(function (bucket) {\n var contents = bucket.contents;\n\n bucket.contents = parseContents(contents);\n });\n }\n\n return _context10.abrupt('return', data);\n\n case 8:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, _this6);\n }));\n\n return function (_x15, _x16) {\n return _ref15.apply(this, arguments);\n };\n }();\n}\n\nfunction getPageWithPathId(_ref16) {\n var _this7 = this;\n\n var name = _ref16.name,\n pathParams = _ref16.pathParams,\n paramsArg = _objectWithoutProperties(_ref16, ['name', 'pathParams']);\n\n return function () {\n var _ref17 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(dispatch, getState) {\n var state, pageAPIParams, sessionToken, data;\n return regeneratorRuntime.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n state = getState();\n pageAPIParams = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"d\" /* pageAPILimitedParamsSelector */])(state);\n sessionToken = Object(__WEBPACK_IMPORTED_MODULE_5__selectors_authenticationSelectors__[\"j\" /* bamSessionTokenSelector */])(getState());\n _context11.next = 5;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"d\" /* PageAPI */].getPage(_extends({}, pageAPIParams, paramsArg, {\n name: name,\n sessionToken: sessionToken,\n pathParams: pathParams\n }));\n\n case 5:\n data = _context11.sent;\n\n\n if (data && data.page && data.page.buckets) {\n data.page.buckets.forEach(function (bucket) {\n var contents = bucket.contents;\n\n bucket.contents = contents;\n });\n }\n\n return _context11.abrupt('return', data);\n\n case 8:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, _this7);\n }));\n\n return function (_x17, _x18) {\n return _ref17.apply(this, arguments);\n };\n }();\n}\n\nfunction getPageByFullUrl(_ref18) {\n var _this8 = this;\n\n var url = _ref18.url,\n paramsArg = _objectWithoutProperties(_ref18, ['url']);\n\n return function () {\n var _ref19 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(dispatch, getState) {\n var state, pageAPIParams, sessionToken, data;\n return regeneratorRuntime.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n state = getState();\n pageAPIParams = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"d\" /* pageAPILimitedParamsSelector */])(state);\n sessionToken = Object(__WEBPACK_IMPORTED_MODULE_5__selectors_authenticationSelectors__[\"j\" /* bamSessionTokenSelector */])(getState());\n _context12.next = 5;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"d\" /* PageAPI */].getPageByFullUrl(_extends({}, pageAPIParams, paramsArg, {\n url: url,\n sessionToken: sessionToken\n }));\n\n case 5:\n data = _context12.sent;\n\n\n if (data && data.page && data.page.buckets) {\n data.page.buckets.forEach(function (bucket) {\n var contents = bucket.contents;\n\n bucket.contents = parseContents(contents);\n });\n }\n\n return _context12.abrupt('return', data);\n\n case 8:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, _this8);\n }));\n\n return function (_x19, _x20) {\n return _ref19.apply(this, arguments);\n };\n }();\n}\n\nfunction getScoringInfluencers(paramsArg) {\n return function (dispatch, getState) {\n var params = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_apiParamsSelector__[\"b\" /* default */])(getState());\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"d\" /* PageAPI */].getScoringInfluencers(_extends({}, params, paramsArg));\n };\n}\n\nfunction fetchPickerStreams(pickerUrl, eventId) {\n var _this9 = this;\n\n return function () {\n var _ref20 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee13(dispatch) {\n var data, _data$page, buckets;\n\n return regeneratorRuntime.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n _context13.prev = 0;\n _context13.next = 3;\n return __WEBPACK_IMPORTED_MODULE_1__lib_api__[\"d\" /* PageAPI */].getPickerStreams(pickerUrl);\n\n case 3:\n data = _context13.sent;\n _data$page = data.page;\n _data$page = _data$page === undefined ? {} : _data$page;\n buckets = _data$page.buckets;\n\n // NOTE: The `espn-web-player` is written to respect the nested `content` object\n // within the stream object (parent). In order to ensure backwards compatibility,\n // we need to maintain the same structure.\n // This happens when the new `stream picker` is displayed during an AuthZ error state\n // to allow the user to transition to a new stream\n\n if (!(Array.isArray(buckets) && buckets.length)) {\n _context13.next = 12;\n break;\n }\n\n buckets.forEach(function (bucket) {\n var contents = bucket.contents;\n\n bucket.contents = parseContents(contents);\n });\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__appActions__[\"I\" /* pickerStreamsSelect */])(buckets, eventId));\n _context13.next = 13;\n break;\n\n case 12:\n throw new Error('Picker buckets list is not an array or empty');\n\n case 13:\n return _context13.abrupt('return', buckets);\n\n case 16:\n _context13.prev = 16;\n _context13.t0 = _context13['catch'](0);\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__appActions__[\"J\" /* pickerStreamsSelectError */])(_context13.t0));\n return _context13.abrupt('return', []);\n\n case 20:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, _this9, [[0, 16]]);\n }));\n\n return function (_x21) {\n return _ref20.apply(this, arguments);\n };\n }();\n}\n\n/***/ }),\n/* 56 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return heroImageSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pageSelector__ = __webpack_require__(13);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_1__pageSelector__[\"c\" /* default */], function (_ref) {\n var _ref$hero = _ref.hero,\n hero = _ref$hero === undefined ? {} : _ref$hero;\n return hero;\n}));\n\n// Need to do this until the Page API can handle device specific images\n// Selector takes a content and returns the imageHref\nvar heroImageParams = '&templateId=espn.web.hero.1&size=xxl';\nvar contentSelector = function contentSelector() {\n var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return content;\n};\nvar heroImageSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(contentSelector, function (_ref2) {\n var _ref2$imageHref = _ref2.imageHref,\n imageHref = _ref2$imageHref === undefined ? '' : _ref2$imageHref;\n return imageHref.indexOf('espncdn.com/stitcher/artwork/collections') === -1 ? imageHref : '' + imageHref + heroImageParams;\n});\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lib_oneId__ = __webpack_require__(52);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\nvar MainContainer = function (_Component) {\n _inherits(MainContainer, _Component);\n\n function MainContainer() {\n _classCallCheck(this, MainContainer);\n\n return _possibleConstructorReturn(this, (MainContainer.__proto__ || Object.getPrototypeOf(MainContainer)).apply(this, arguments));\n }\n\n _createClass(MainContainer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var showLogin = this.props.showLogin;\n // navigating between routes could have potentially wiped away espn_ui's reference to the main-container\n // this reinitializes that container after re-render\n\n if (window.espn_ui && window.espn_ui.Helpers && window.espn_ui.Helpers.page && window.jQuery) {\n window.espn_ui.Helpers.page.container = window.jQuery('#main-container');\n }\n\n if (showLogin) {\n try {\n Object(__WEBPACK_IMPORTED_MODULE_1__lib_oneId__[\"k\" /* on */])('login', function () {\n /**\n * trigger page reload so that oneId login state will be refreshed\n * and user can see playback after logging in\n */\n window.location.reload();\n });\n Object(__WEBPACK_IMPORTED_MODULE_1__lib_oneId__[\"g\" /* launchLogin */])();\n } catch (err) {\n console.error('Show login error: ' + err);\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _jsx('div', {\n className: this.props.className\n }, void 0, this.props.pre, _jsx('section', {\n id: 'main-container'\n }, void 0, _jsx('div', {\n className: 'main-content layout-dbc'\n }, void 0, this.props.children)));\n }\n }]);\n\n return MainContainer;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MainContainer);\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.isReactChildren = isReactChildren;\nexports.createRouteFromReactElement = createRouteFromReactElement;\nexports.createRoutesFromReactChildren = createRoutesFromReactChildren;\nexports.createRoutes = createRoutes;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isValidChild(object) {\n return object == null || _react2.default.isValidElement(object);\n}\n\nfunction isReactChildren(object) {\n return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);\n}\n\nfunction createRoute(defaultProps, props) {\n return _extends({}, defaultProps, props);\n}\n\nfunction createRouteFromReactElement(element) {\n var type = element.type;\n var route = createRoute(type.defaultProps, element.props);\n\n if (route.children) {\n var childRoutes = createRoutesFromReactChildren(route.children, route);\n\n if (childRoutes.length) route.childRoutes = childRoutes;\n\n delete route.children;\n }\n\n return route;\n}\n\n/**\n * Creates and returns a routes object from the given ReactChildren. JSX\n * provides a convenient way to visualize how routes in the hierarchy are\n * nested.\n *\n * import { Route, createRoutesFromReactChildren } from 'react-router'\n *\n * const routes = createRoutesFromReactChildren(\n * \n * \n * \n * \n * )\n *\n * Note: This method is automatically used when you provide children\n * to a component.\n */\nfunction createRoutesFromReactChildren(children, parentRoute) {\n var routes = [];\n\n _react2.default.Children.forEach(children, function (element) {\n if (_react2.default.isValidElement(element)) {\n // Component classes may have a static create* method.\n if (element.type.createRouteFromReactElement) {\n var route = element.type.createRouteFromReactElement(element, parentRoute);\n\n if (route) routes.push(route);\n } else {\n routes.push(createRouteFromReactElement(element));\n }\n }\n });\n\n return routes;\n}\n\n/**\n * Creates and returns an array of routes from the given object which\n * may be a JSX route, a plain object route, or an array of either.\n */\nfunction createRoutes(routes) {\n if (isReactChildren(routes)) {\n routes = createRoutesFromReactChildren(routes);\n } else if (routes && !Array.isArray(routes)) {\n routes = [routes];\n }\n\n return routes;\n}\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getContentId;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\n\n\nfunction getContentId() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n id = _ref.id,\n eventId = _ref.eventId,\n status = _ref.status,\n isEvent = _ref.isEvent,\n _ref$streams = _ref.streams,\n streams = _ref$streams === undefined ? [] : _ref$streams,\n _ref$isEventOverride = _ref.isEventOverride,\n isEventOverride = _ref$isEventOverride === undefined ? false : _ref$isEventOverride;\n\n var content = { id: streams[0] && streams[0].id || id };\n // if (streams.length > 1 || isEventOverride || (status === ContentStatus.UPCOMING && (isEvent))) {\n // content = { eventId: eventId || id };\n // }\n return content;\n}\n\n/***/ }),\n/* 61 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (canUseDOM);\n\n/***/ }),\n/* 62 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n\n\nvar selectedStreamSelector = function selectedStreamSelector(_ref) {\n var app = _ref.app;\n return app.selectedStream;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(selectedStreamSelector, function (selectedStream) {\n return selectedStream;\n}));\n\n/***/ }),\n/* 63 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return REQUEST_SCHEDULE_MODULE_DATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return RECEIVE_SCHEDULE_MODULE_DATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return SCORE_SCHEDULE_MODULE_DATA; });\n/* unused harmony export createReceiveScheduleModuleAction */\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = fetchScheduleModule;\n/* unused harmony export completeScheduleModuleScoring */\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = scoreScheduleModule;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__actions_apiAction__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selectors_bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__selectors_routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib_format_getMinutesUntilStart__ = __webpack_require__(202);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__ = __webpack_require__(75);\n\n\n\n\n\n\n\n\nvar REQUEST_SCHEDULE_MODULE_DATA = 'REQUEST_SCHEDULE_MODULE_DATA';\nvar RECEIVE_SCHEDULE_MODULE_DATA = 'RECEIVE_SCHEDULE_MODULE_DATA';\nvar SCORE_SCHEDULE_MODULE_DATA = 'SCORE_SCHEDULE_MODULE_DATA';\n\nfunction decayContentScoreWithTime(content) {\n var DECAY_THRESHOLD = 30; // minutes until start time\n var minutesUntilStart = Object(__WEBPACK_IMPORTED_MODULE_3__lib_format_getMinutesUntilStart__[\"a\" /* default */])(content);\n\n if (minutesUntilStart >= DECAY_THRESHOLD) {\n content.score -= minutesUntilStart;\n }\n return content;\n}\n\nfunction dedupeBucketContents() {\n var buckets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return buckets.map(function (bucket) {\n var dedupedContents = __WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy___default()(bucket.contents || [], 'name');\n bucket.contents = dedupedContents;\n return bucket;\n });\n}\n\nfunction scoreBucketsWithTime() {\n var buckets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return buckets.map(function (bucket) {\n var scoredContents = bucket.contents.map(function (content) {\n return decayContentScoreWithTime(content);\n }).sort(function (aContent, bContent) {\n if (aContent.score > bContent.score) {\n return -1;\n } else if (aContent.score < bContent.score) {\n return 1;\n }\n return 0;\n });\n bucket.contents = scoredContents;\n return bucket;\n });\n}\n\nfunction createReceiveScheduleModuleAction(name, buckets) {\n return {\n type: RECEIVE_SCHEDULE_MODULE_DATA,\n name: name,\n buckets: buckets,\n receivedTime: Date.now()\n };\n}\n\nfunction fetchScheduleModule(langArg) {\n return function (dispatch, getState) {\n __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__[\"a\" /* markStart */]('fetchScheduleModule');\n var lang = langArg || undefined;\n var state = getState();\n var bootstrap = Object(__WEBPACK_IMPORTED_MODULE_1__selectors_bootstrapSelector__[\"a\" /* default */])(state);\n var _bootstrap$scheduleMo = bootstrap.scheduleModule,\n scheduleModule = _bootstrap$scheduleMo === undefined ? {} : _bootstrap$scheduleMo;\n\n var _routingSelector = Object(__WEBPACK_IMPORTED_MODULE_2__selectors_routingSelector__[\"a\" /* default */])(state),\n locationBeforeTransitions = _routingSelector.locationBeforeTransitions;\n\n var _ref = locationBeforeTransitions || {},\n _ref$pathname = _ref.pathname,\n pathname = _ref$pathname === undefined ? '' : _ref$pathname;\n\n var pageName = 'scheduleModule';\n Object.keys(scheduleModule).some(function (key) {\n var paths = scheduleModule[key].paths;\n if (paths.some(function (path) {\n return pathname.indexOf(path) > -1;\n })) {\n pageName = key;\n return true;\n }\n return false;\n });\n dispatch({\n type: REQUEST_SCHEDULE_MODULE_DATA,\n requestedTime: Date.now()\n });\n\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_0__actions_apiAction__[\"f\" /* getPage */])({ name: pageName, lang: lang })).then(function () {\n var response = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _response$page = response.page;\n _response$page = _response$page === undefined ? {} : _response$page;\n var _response$page$bucket = _response$page.buckets,\n buckets = _response$page$bucket === undefined ? [] : _response$page$bucket;\n\n if (buckets.length > 0) {\n var timeScoredBuckets = dedupeBucketContents(scoreBucketsWithTime(buckets));\n dispatch(createReceiveScheduleModuleAction(pageName, timeScoredBuckets));\n __WEBPACK_IMPORTED_MODULE_5__lib_util_perf__[\"b\" /* measureAndTime */]('fetchScheduleModule');\n }\n });\n };\n}\n\nfunction completeScheduleModuleScoring(buckets) {\n return {\n type: SCORE_SCHEDULE_MODULE_DATA,\n buckets: buckets ? scoreBucketsWithTime(buckets) : undefined,\n receivedTime: Date.now()\n };\n}\n\nfunction scoreScheduleModule() {\n return function (dispatch) {\n return dispatch(completeScheduleModuleScoring());\n };\n}\n\n/***/ }),\n/* 64 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./node_modules/react-router/lib/index.js\nvar lib = __webpack_require__(85);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// EXTERNAL MODULE: ./node_modules/lodash/flatMap.js\nvar flatMap = __webpack_require__(711);\nvar flatMap_default = /*#__PURE__*/__webpack_require__.n(flatMap);\n\n// EXTERNAL MODULE: ./app/common/PropTypes.js\nvar PropTypes = __webpack_require__(28);\n\n// EXTERNAL MODULE: ./app/common/actions/appActions.js\nvar appActions = __webpack_require__(19);\n\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./app/common/selectors/flagsSelector.js\nvar flagsSelector = __webpack_require__(47);\n\n// EXTERNAL MODULE: ./app/common/selectors/playingStreamSelector.js\nvar playingStreamSelector = __webpack_require__(148);\n\n// EXTERNAL MODULE: ./app/common/selectors/authenticationSelectors.js\nvar authenticationSelectors = __webpack_require__(10);\n\n// EXTERNAL MODULE: ./app/common/selectors/pageSelector.js\nvar pageSelector = __webpack_require__(13);\n\n// EXTERNAL MODULE: ./app/common/selectors/oneIdSelector.js\nvar oneIdSelector = __webpack_require__(27);\n\n// EXTERNAL MODULE: ./app/common/selectors/pickerStreamsSelector.js\nvar pickerStreamsSelector = __webpack_require__(149);\n\n// EXTERNAL MODULE: ./app/lib/auth/canPlayContent.js\nvar canPlayContent = __webpack_require__(117);\n\n// CONCATENATED MODULE: ./app/lib/auth/contentContainsStream.js\nfunction contentContainsStream(_ref) {\n var _ref$streams = _ref.streams,\n streams = _ref$streams === undefined ? [] : _ref$streams;\n var stream = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return streams.some(function (_ref2) {\n var id = _ref2.id;\n return id === stream.id;\n });\n}\n// EXTERNAL MODULE: ./app/lib/auth/isContentLocked.js\nvar isContentLocked = __webpack_require__(220);\n\n// EXTERNAL MODULE: ./app/lib/auth/getContentId.js\nvar getContentId = __webpack_require__(60);\n\n// CONCATENATED MODULE: ./app/lib/ui/scrollTo.js\nvar scrollTo = function scrollTo(element, to, duration) {\n if (duration <= 0) return;\n var difference = to - element.scrollTop;\n var perTick = difference / duration * 10;\n\n setTimeout(function () {\n element.scrollTop = element.scrollTop + perTick;\n if (element.scrollTop === to) return;\n scrollTo(element, to, duration - 10);\n }, 10);\n};\n\n/* harmony default export */ var ui_scrollTo = (scrollTo);\n// EXTERNAL MODULE: ./app/lib/util/isEmpty.js\nvar isEmpty = __webpack_require__(12);\n\n// EXTERNAL MODULE: ./app/lib/streamPicker/index.js + 9 modules\nvar streamPicker = __webpack_require__(221);\n\n// EXTERNAL MODULE: ./app/lib/format/queryString.js\nvar queryString = __webpack_require__(18);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/webapp/player/globalVideoElement.js\nvar globalVideoElement = __webpack_require__(347);\n\n// CONCATENATED MODULE: ./app/webapp/common/playable.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var playable = __webpack_exports__[\"a\"] = (function (WrappedComponent) {\n var Playable = function (_Component) {\n _inherits(Playable, _Component);\n\n function Playable(props) {\n _classCallCheck(this, Playable);\n\n var _this = _possibleConstructorReturn(this, (Playable.__proto__ || Object.getPrototypeOf(Playable)).call(this, props));\n\n _this.blackoutClickHandler = _this.blackoutClickHandler.bind(_this);\n _this.clickHandler = _this.clickHandler.bind(_this);\n _this.isUserBlackedOut = _this.isUserBlackedOut.bind(_this);\n return _this;\n }\n\n /**\n * Generates a URL for content that does not go to the player page when clicked\n * @param {string} page - show|film|product\n * @param {boolean} seo - whether or not to put descriptive \"junk\" on the end of the url\n * @param {boolean} toURL - used in render function for right click -> open in new tab\n */\n\n\n _createClass(Playable, [{\n key: 'getContentPageUrl',\n value: function getContentPageUrl(page) {\n var seo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var toURL = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var _props = this.props,\n _props$content = _props.content,\n id = _props$content.id,\n name = _props$content.name,\n type = _props$content.type,\n suggestion = _props$content.suggestion,\n flags = _props.flags,\n routing = _props.routing;\n\n var _ref = routing && routing.locationBeforeTransitions || {},\n basename = _ref.basename;\n\n var junk = '';\n\n if (seo && typeof name === 'string') {\n var currentName = name.trim().toLowerCase();\n // catching edge case where URL ends with \"espn+\"\n if (currentName === 'espn+') {\n junk = '/' + currentName;\n } else {\n // replace all special characters to include spaces with a \"-\"\n junk = '/' + currentName.replace(/[^A-Z0-9]+/ig, '-');\n }\n }\n\n // TODO: DTC - API to return `links.web`\n var pathname = '';\n if (enums[\"o\" /* ContentType */].TERM === type) {\n pathname = '/' + page + '/' + encodeURIComponent(suggestion);\n } else {\n pathname = '/' + page + '/' + id + junk;\n }\n var query = _extends({}, flags);\n\n if (toURL) {\n return '' + basename + pathname + Object(queryString[\"a\" /* default */])(query);\n }\n\n return {\n pathname: pathname,\n query: query\n };\n }\n }, {\n key: 'isUserBlackedOut',\n value: function isUserBlackedOut() {\n var _props2 = this.props,\n listing = _props2.listing,\n userLocation = _props2.userLocation,\n _props2$content = _props2.content;\n _props2$content = _props2$content === undefined ? {} : _props2$content;\n var _props2$content$strea = _props2$content.streams,\n streams = _props2$content$strea === undefined ? [] : _props2$content$strea;\n\n // do not label the content as `blackout` unless all the streams are blacked out\n\n if (streams.length && streams.every(function (stream) {\n return !!stream.blackoutText;\n })) {\n return true;\n }\n\n // This logic is for schedule link only\n // FIXME: currently GraphQL doesn't support blackout info (it used to work when using V1 listings)\n var _listing$blackouts = listing.blackouts,\n blackouts = _listing$blackouts === undefined ? [] : _listing$blackouts;\n\n var userIsBlackedOut = false;\n if (blackouts.length > 0) {\n // Return true if we don't have userLocation - this check is only for UI purposes\n if (!userLocation) {\n return true;\n }\n\n var _ref2 = userLocation || {},\n _ref2$dma = _ref2.dma,\n dma = _ref2$dma === undefined ? '' : _ref2$dma;\n\n var dmaBlackout = blackouts.filter(function (_ref3) {\n var type = _ref3.type;\n return type === 'dma';\n }).shift();\n userIsBlackedOut = dmaBlackout && dmaBlackout.detail.indexOf(dma.toString()) >= 0;\n }\n return userIsBlackedOut;\n }\n }, {\n key: 'blackoutClickHandler',\n value: function blackoutClickHandler(event) {\n event.preventDefault();\n this.props.dispatch(Object(appActions[\"C\" /* displayModalMessage */])(enums[\"w\" /* ModalType */].BLACKOUT_MAP, { content: this.props.content }));\n }\n }, {\n key: 'clickHandler',\n value: function clickHandler(event) {\n if (event) {\n event.preventDefault();\n }\n var _props3 = this.props,\n bucketId = _props3.bucketId,\n content = _props3.content,\n playingStream = _props3.playingStream,\n dispatch = _props3.dispatch,\n groupId = _props3.groupId,\n flags = _props3.flags,\n isHero = _props3.isHero,\n isMobile = _props3.isMobile,\n placement = _props3.placement,\n bucketName = _props3.bucketName,\n pageId = _props3.pageId,\n pageName = _props3.pageName,\n roadblock = _props3.roadblock,\n router = _props3.router,\n _props3$routing = _props3.routing,\n routing = _props3$routing === undefined ? {} : _props3$routing,\n userAuth = _props3.userAuth,\n entitlements = _props3.entitlements,\n preauthorizedResources = _props3.preauthorizedResources,\n country = _props3.country,\n lang = _props3.lang,\n _props3$pickerStreams = _props3.pickerStreams,\n pickerStreams = _props3$pickerStreams === undefined ? [] : _props3$pickerStreams,\n isAuthorized = _props3.isAuthorized;\n\n var _ref4 = routing && routing.locationBeforeTransitions || {},\n _ref4$pathname = _ref4.pathname,\n pathname = _ref4$pathname === undefined ? '' : _ref4$pathname,\n _ref4$query = _ref4.query,\n query = _ref4$query === undefined ? {} : _ref4$query;\n\n if (Object(isEmpty[\"a\" /* default */])(playingStream)) {\n globalVideoElement[\"a\" /* default */].prime();\n }\n\n if (roadblock === true && content.type === enums[\"o\" /* ContentType */].LISTING) {\n var contentId = Object(getContentId[\"a\" /* default */])(content);\n // NOTE: Obtain the `ESPN_PLUS_*` packages as a flattened array\n var packages = content.streams && flatMap_default()(content.streams, function (stream) {\n return stream.packages;\n }).filter(function (result) {\n return result;\n }) // Removes undefined values from the array\n || [];\n var isPurchasable = packages.length > 0;\n var isEntitled = packages.some(function (pkg) {\n return entitlements.indexOf(pkg) !== -1;\n });\n\n var roadblockUrl = '/watch/roadblock' + Object(queryString[\"a\" /* default */])(contentId);\n if (query[enums[\"t\" /* Flags */].ROADBLOCK_NO_UNIVERSAL_LINK] !== 'true' && !(isPurchasable && !isEntitled)) {\n // m.espn.com is enabled for Universal Link treatment on iOS, so use this domain\n roadblockUrl = '//m.espn.com' + roadblockUrl;\n }\n window.location = roadblockUrl;\n return;\n }\n\n if ([enums[\"o\" /* ContentType */].PRODUCT, enums[\"o\" /* ContentType */].SHOW, enums[\"o\" /* ContentType */].FILM, enums[\"o\" /* ContentType */].PROGRAM, enums[\"o\" /* ContentType */].TERM, enums[\"o\" /* ContentType */].COMPILATION].indexOf(content.type) !== -1) {\n var contentPageUrl = this.getContentPageUrl(enums[\"H\" /* URLPath */][content.type], true);\n router.push(contentPageUrl);\n return;\n }\n\n var enhancedContent = !Object(isEmpty[\"a\" /* default */])(content) ? _extends({}, content, {\n bucketId: bucketId,\n groupId: groupId,\n isHero: isHero,\n placement: placement,\n bucketName: bucketName,\n pageId: pageId,\n pageName: pageName\n }) : content;\n\n var onSyndicatedPlayerPage = pathname.indexOf('/syndicated/player') !== -1;\n var canPlay = Object(canPlayContent[\"a\" /* default */])(enhancedContent, userAuth, false);\n var isESPNPlus = enhancedContent.streams.some(function (_ref5) {\n var _ref5$source = _ref5.source,\n id = _ref5$source.id,\n name = _ref5$source.name;\n return name === 'ESPN+' || ['ESPN_DTC', 'ESPN_PPV'].indexOf(id) > -1;\n });\n var _enhancedContent$dss = enhancedContent.dss;\n _enhancedContent$dss = _enhancedContent$dss === undefined ? {} : _enhancedContent$dss;\n var _enhancedContent$dss$ = _enhancedContent$dss.rewardToken,\n rewardToken = _enhancedContent$dss$ === undefined ? null : _enhancedContent$dss$,\n _enhancedContent$dss$2 = _enhancedContent$dss.contentId,\n dssContentId = _enhancedContent$dss$2 === undefined ? null : _enhancedContent$dss$2,\n _enhancedContent$dss$3 = _enhancedContent$dss.recommendedContentIds,\n recommendedContentIds = _enhancedContent$dss$3 === undefined ? null : _enhancedContent$dss$3;\n\n\n if (rewardToken && dssContentId && recommendedContentIds) {\n dispatch(Object(appActions[\"N\" /* sendContentReward */])({\n rewardToken: rewardToken,\n contentId: dssContentId,\n recommendedContentIds: recommendedContentIds\n }));\n }\n\n var syndicatedScheduleLink = onSyndicatedPlayerPage && placement.indexOf('schedule') > -1;\n var syndicatedBigPlayButton = onSyndicatedPlayerPage && !syndicatedScheduleLink;\n var playerUrlQueryProps = { bucketId: bucketId, groupId: groupId, flags: flags, routing: routing };\n\n // Allow linear/TVE to display in-player provider picker, but open ESPN+/DTC in a new tab\n if (!canPlay && (syndicatedScheduleLink || syndicatedBigPlayButton && isESPNPlus)) {\n // Force content to open in a new browser window/tab, minus the `/syndicated` path segment\n var target = '_blank';\n\n // Except for ESPN+ content embedded on a domain matching `/espn/`\n if (syndicatedBigPlayButton && isESPNPlus && window.frameElement && window.location.origin.match(/espn/)) {\n target = '_parent';\n }\n\n var playerUrl = Object(streamPicker[\"b\" /* getPlayerUrl */])(_extends({\n content: enhancedContent,\n toURL: true,\n absoluteUrl: true\n }, playerUrlQueryProps));\n window.open(playerUrl, target);\n return;\n }\n\n if (syndicatedScheduleLink || canPlay) {\n var onPlayerPage = !syndicatedScheduleLink && pathname.indexOf('/player') !== -1;\n // if you're not in a Hero or on the player or syndicated player page, route to it\n if (!onPlayerPage && !syndicatedBigPlayButton) {\n var urlParams = _extends({\n isHero: isHero,\n content: enhancedContent,\n onSyndicatedPlayerPage: onSyndicatedPlayerPage\n }, playerUrlQueryProps);\n var _playerUrl = Object(streamPicker[\"b\" /* getPlayerUrl */])(urlParams);\n if (_playerUrl) {\n // if a user selects upcoming content, direct to the player page with the upcoming alert badge\n var alertContent = enhancedContent.status === enums[\"n\" /* ContentStatus */].UPCOMING ? enhancedContent : null;\n var rState = { alertContent: alertContent, placement: placement, bucketId: bucketId, bucketName: bucketName, pageId: pageId, pageName: pageName, userInitiated: true };\n var _enhancedContent$link = enhancedContent.links;\n _enhancedContent$link = _enhancedContent$link === undefined ? {} : _enhancedContent$link;\n var picker = _enhancedContent$link.picker;\n\n var showPicker = picker !== undefined;\n /**\n * if user can play the content, we don't want to send it to the player right away; otherwise\n * player will pick the first stream and play it to the user.\n * We will show picker if links.picker is defined\n */\n if (showPicker) {\n enhancedContent.isOnTile = true;\n dispatch(Object(appActions[\"z\" /* contentSelect */])(enhancedContent));\n Object(streamPicker[\"e\" /* openStreamPicker */])({\n lang: lang,\n country: country,\n dispatch: dispatch,\n pickerStreams: pickerStreams,\n content: enhancedContent,\n urlParams: urlParams,\n route: {\n router: router,\n rState: rState,\n locationBeforeTransitions: routing.locationBeforeTransitions\n },\n authRes: { userAuth: userAuth, preauthorizedResources: preauthorizedResources }\n });\n } else if (isHero && isAuthorized === false && pickerStreams.length) {\n /**\n * there are flaws how adobe authenticated user currently. User logs in with an authrized\n * MVPD account, it assumes user can play selected content, but it doesn't know\n * whether or not user can play single stream until doing another authentication check.\n * We need to handle usecase when user is authenticated and clicks on video hero compenent\n * and user is not isAuthorized to place selected stream, we will reload the page, so\n * the auth Z error will be handled in connectPlayer.js\n */\n window.location.reload();\n } else {\n // we may need to handle use case here when links.picker is not defined and if it is multi streams\n router.push(_extends({}, _playerUrl, {\n state: rState\n }));\n }\n return;\n }\n } else if (isMobile === true && onPlayerPage) {\n ui_scrollTo(document.body, 0, 250);\n }\n }\n\n dispatch(Object(appActions[\"z\" /* contentSelect */])(enhancedContent));\n }\n }, {\n key: 'render',\n value: function render() {\n var _props4 = this.props,\n content = _props4.content,\n playingStream = _props4.playingStream,\n placement = _props4.placement,\n bucketName = _props4.bucketName,\n pageId = _props4.pageId,\n pageName = _props4.pageName,\n userAuth = _props4.userAuth,\n preauthorizedResources = _props4.preauthorizedResources;\n\n\n var userAuthenticatedForContent = Object(canPlayContent[\"a\" /* default */])(content, userAuth);\n\n var showLock = Object(isContentLocked[\"a\" /* default */])(content, userAuth, preauthorizedResources);\n\n var playerHref = void 0;\n if ([enums[\"o\" /* ContentType */].PRODUCT, enums[\"o\" /* ContentType */].SHOW, enums[\"o\" /* ContentType */].FILM, enums[\"o\" /* ContentType */].PROGRAM, enums[\"o\" /* ContentType */].TERM, enums[\"o\" /* ContentType */].COMPILATION].indexOf(content.type) !== -1) {\n playerHref = this.getContentPageUrl(enums[\"H\" /* URLPath */][content.type], true, true) || '#';\n } else {\n var _props5 = this.props,\n bucketId = _props5.bucketId,\n groupId = _props5.groupId,\n flags = _props5.flags,\n routing = _props5.routing;\n\n\n playerHref = Object(streamPicker[\"b\" /* getPlayerUrl */])({\n content: content,\n toURL: true,\n bucketId: bucketId,\n groupId: groupId,\n flags: flags,\n routing: routing\n }) || '#';\n }\n\n var userIsBlackedOut = this.isUserBlackedOut();\n\n var newProps = _extends({}, this.props, {\n playerHref: playerHref,\n content: !Object(isEmpty[\"a\" /* default */])(content) ? _extends({}, content, { placement: placement, bucketName: bucketName, pageId: pageId, pageName: pageName }) : content,\n selected: contentContainsStream(content, playingStream),\n userAuthenticatedForContent: userAuthenticatedForContent,\n userIsBlackedOut: userIsBlackedOut,\n showLock: showLock\n });\n return react_default.a.createElement(WrappedComponent, _extends({}, newProps, {\n blackoutClickHandler: this.blackoutClickHandler,\n clickHandler: this.clickHandler\n }));\n }\n }]);\n\n return Playable;\n }(react[\"Component\"]);\n\n Playable.defaultProps = {\n featured: false,\n isMobile: false,\n layoutType: enums[\"i\" /* BucketLayout */].DEFAULT,\n placement: 'unknown',\n bucketName: undefined,\n pageId: undefined,\n pageName: undefined,\n playingStream: {},\n listing: {},\n content: {},\n entitlements: []\n };\n\n var mapStateToProps = function mapStateToProps(state) {\n var routing = state.routing;\n\n var _pageSelector = Object(pageSelector[\"c\" /* default */])(state),\n pageId = _pageSelector.id,\n pageName = _pageSelector.name;\n\n var _state$app = state.app,\n lang = _state$app.lang,\n country = _state$app.country,\n isMobile = _state$app.isMobile;\n\n return {\n routing: routing,\n lang: lang,\n isMobile: isMobile,\n pageId: pageId,\n pageName: pageName,\n country: country,\n entitlements: Object(oneIdSelector[\"d\" /* oneIdEntitlementsSelector */])(state),\n flags: Object(flagsSelector[\"a\" /* persistentFlagsSelector */])(state),\n playingStream: Object(playingStreamSelector[\"a\" /* default */])(state),\n preauthorizedResources: Object(authenticationSelectors[\"o\" /* preauthorizedResourcesSelector */])(state),\n roadblock: Object(appSelector[\"D\" /* roadblockSelector */])(state),\n userAuth: Object(authenticationSelectors[\"r\" /* userAuthSelector */])(state),\n userLocation: Object(authenticationSelectors[\"s\" /* userLocationSelector */])(state),\n pickerStreams: Object(pickerStreamsSelector[\"a\" /* default */])(state),\n isAuthorized: Object(authenticationSelectors[\"d\" /* adobePassIsAuthorizedSelector */])(state)\n };\n };\n\n return Object(lib[\"withRouter\"])(Object(es[\"b\" /* connect */])(mapStateToProps)(Playable), { withRef: true });\n});\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar invariant = __webpack_require__(5);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.routes = exports.route = exports.components = exports.component = exports.history = undefined;\nexports.falsy = falsy;\n\nvar _react = __webpack_require__(0);\n\nvar func = _react.PropTypes.func;\nvar object = _react.PropTypes.object;\nvar arrayOf = _react.PropTypes.arrayOf;\nvar oneOfType = _react.PropTypes.oneOfType;\nvar element = _react.PropTypes.element;\nvar shape = _react.PropTypes.shape;\nvar string = _react.PropTypes.string;\nfunction falsy(props, propName, componentName) {\n if (props[propName]) return new Error('<' + componentName + '> should not have a \"' + propName + '\" prop');\n}\n\nvar history = exports.history = shape({\n listen: func.isRequired,\n push: func.isRequired,\n replace: func.isRequired,\n go: func.isRequired,\n goBack: func.isRequired,\n goForward: func.isRequired\n});\n\nvar component = exports.component = oneOfType([func, string]);\nvar components = exports.components = oneOfType([component, object]);\nvar route = exports.route = oneOfType([object, element]);\nvar routes = exports.routes = oneOfType([route, arrayOf(route)]);\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Indicates that navigation was caused by a call to history.push.\n */\n\n\nexports.__esModule = true;\nvar PUSH = 'PUSH';\n\nexports.PUSH = PUSH;\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = 'REPLACE';\n\nexports.REPLACE = REPLACE;\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = 'POP';\n\nexports.POP = POP;\nexports['default'] = {\n PUSH: PUSH,\n REPLACE: REPLACE,\n POP: POP\n};\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.extractPath = extractPath;\nexports.parsePath = parsePath;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction extractPath(string) {\n var match = string.match(/^https?:\\/\\/[^\\/]*/);\n\n if (match == null) return string;\n\n return string.substring(match[0].length);\n}\n\nfunction parsePath(path) {\n var pathname = extractPath(path);\n var search = '';\n var hash = '';\n\n false ? _warning2['default'](path === pathname, 'A path must be pathname + search + hash only, not a fully qualified URL like \"%s\"', path) : undefined;\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substring(hashIndex);\n pathname = pathname.substring(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substring(searchIndex);\n pathname = pathname.substring(0, searchIndex);\n }\n\n if (pathname === '') pathname = '/';\n\n return {\n pathname: pathname,\n search: search,\n hash: hash\n };\n}\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.routerMiddleware = exports.routerActions = exports.goForward = exports.goBack = exports.go = exports.replace = exports.push = exports.CALL_HISTORY_METHOD = exports.routerReducer = exports.LOCATION_CHANGE = exports.syncHistoryWithStore = undefined;\n\nvar _reducer = __webpack_require__(272);\n\nObject.defineProperty(exports, 'LOCATION_CHANGE', {\n enumerable: true,\n get: function get() {\n return _reducer.LOCATION_CHANGE;\n }\n});\nObject.defineProperty(exports, 'routerReducer', {\n enumerable: true,\n get: function get() {\n return _reducer.routerReducer;\n }\n});\n\nvar _actions = __webpack_require__(273);\n\nObject.defineProperty(exports, 'CALL_HISTORY_METHOD', {\n enumerable: true,\n get: function get() {\n return _actions.CALL_HISTORY_METHOD;\n }\n});\nObject.defineProperty(exports, 'push', {\n enumerable: true,\n get: function get() {\n return _actions.push;\n }\n});\nObject.defineProperty(exports, 'replace', {\n enumerable: true,\n get: function get() {\n return _actions.replace;\n }\n});\nObject.defineProperty(exports, 'go', {\n enumerable: true,\n get: function get() {\n return _actions.go;\n }\n});\nObject.defineProperty(exports, 'goBack', {\n enumerable: true,\n get: function get() {\n return _actions.goBack;\n }\n});\nObject.defineProperty(exports, 'goForward', {\n enumerable: true,\n get: function get() {\n return _actions.goForward;\n }\n});\nObject.defineProperty(exports, 'routerActions', {\n enumerable: true,\n get: function get() {\n return _actions.routerActions;\n }\n});\n\nvar _sync = __webpack_require__(530);\n\nvar _sync2 = _interopRequireDefault(_sync);\n\nvar _middleware = __webpack_require__(531);\n\nvar _middleware2 = _interopRequireDefault(_middleware);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports.syncHistoryWithStore = _sync2['default'];\nexports.routerMiddleware = _middleware2['default'];\n\n/***/ }),\n/* 70 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = addQueryToUrl;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0____ = __webpack_require__(277);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nfunction addQueryToUrl() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var finalQuery = query;\n\n var pathAndQuery = url.split('?');\n if (pathAndQuery.length > 1) {\n var urlQuery = Object(__WEBPACK_IMPORTED_MODULE_0____[\"a\" /* convertQueryStringToObject */])(pathAndQuery[1]);\n finalQuery = _extends({}, urlQuery, finalQuery);\n }\n return '' + pathAndQuery[0] + Object(__WEBPACK_IMPORTED_MODULE_0____[\"b\" /* queryString */])(finalQuery);\n};\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(109),\n getRawTag = __webpack_require__(539),\n objectToString = __webpack_require__(540);\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsNative = __webpack_require__(547),\n getValue = __webpack_require__(550);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n var noop = function() {};\n var undefinedType = \"undefined\";\n\n function realMethod(methodName) {\n if (typeof console === undefinedType) {\n return false; // We can't build a real method without a console to log to\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // these private functions always need `this` to be set properly\n\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n }\n\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public API\n *\n */\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Package-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n return defaultLogger;\n}));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 74 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export getCacheFallback */\n/* unused harmony export setCacheFallback */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index__ = __webpack_require__(304);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_loglevel__ = __webpack_require__(73);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_loglevel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_loglevel__);\n\n\n\n\nvar log = __WEBPACK_IMPORTED_MODULE_2_loglevel___default.a.getLogger('fallbackCache');\n\nvar EXPIRATION = 86400; // one day\n\nfunction getCacheFallback(url) {\n log.warn('getCacheFallback: ' + url);\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.fromCallback(__WEBPACK_IMPORTED_MODULE_1__index__[\"a\" /* default */].get.bind(null, 'fallback:' + url)).catch(function (err) {\n console.error('Unable to get data from fallback cache');\n });\n}\n\nfunction setCacheFallback(url, value) {\n var expiration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EXPIRATION;\n\n if (!!value) {\n __WEBPACK_IMPORTED_MODULE_1__index__[\"a\" /* default */].set('fallback:' + url, value, expiration);\n }\n}\n\nvar defaultExport = {\n get: getCacheFallback,\n set: setCacheFallback\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (defaultExport);\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 75 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export canUsePerformance */\n/* unused harmony export mark */\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = markStart;\n/* unused harmony export markEnd */\n/* unused harmony export clear */\n/* unused harmony export measure */\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = measureAndTime;\n/* unused harmony export time */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__canUseDOM__ = __webpack_require__(61);\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\n\nvar canUsePerformance = __WEBPACK_IMPORTED_MODULE_0__canUseDOM__[\"a\" /* default */] && typeof window.performance !== 'undefined';\nvar perfDebug = __WEBPACK_IMPORTED_MODULE_0__canUseDOM__[\"a\" /* default */] && window.location.search.indexOf('perf_debug=true') > -1;\nvar perfEnabled = canUsePerformance && perfDebug;\nvar logMark = perfEnabled && window.location.search.indexOf('perf_mark_log=true') > -1;\n\nfunction mark(name) {\n if (!perfEnabled) {\n return;\n }\n window.performance.mark(name);\n}\n\nfunction markStart(name) {\n if (logMark) {\n console.log('perf: mark \\'' + name + '\\'');\n }\n mark(name + '_start');\n}\n\nfunction markEnd(name) {\n mark(name + '_end');\n}\n\nfunction clear(name) {\n if (!perfEnabled) {\n return;\n }\n var startMark = name + '_start';\n var endMark = name + '_end';\n window.performance.clearMarks(startMark);\n window.performance.clearMarks(endMark);\n window.performance.clearMeasures(name);\n}\n\nfunction measure(name, startMarkArg, endMarkArg) {\n if (!perfEnabled) {\n return;\n }\n var startMark = startMarkArg || name + '_start';\n var endMark = endMarkArg || name + '_end';\n\n var _window$performance$g = window.performance.getEntriesByName(endMark),\n _window$performance$g2 = _slicedToArray(_window$performance$g, 1),\n entry = _window$performance$g2[0];\n\n if (!entry) {\n mark(endMark);\n }\n try {\n window.performance.measure(name, startMark, endMark);\n } catch (err) {}\n}\n\nfunction measureAndTime(name, startMark, endMark) {\n measure(name, startMark, endMark);\n time(name);\n clear(name);\n}\n\nfunction time(name) {\n var all = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var print = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!perfEnabled) {\n return;\n }\n var entries = void 0;\n if (name) {\n entries = window.performance.getEntriesByName(name);\n } else {\n entries = window.performance.getEntriesByType('measure');\n }\n if (!all) {\n entries = entries[0];\n if (print) {\n console.log('perf: measure \\'' + name + '\\'', entries);\n }\n } else if (print) {\n entries.forEach(function (entry) {\n console.log('perf: measure \\'' + entry.name + '\\'', entry);\n });\n }\n return entries;\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 76 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AdContainer__ = __webpack_require__(218);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\nvar BannerAd = function BannerAd(props) {\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1__AdContainer__[\"a\" /* default */], _extends({\n className: 'ad-slot-banner ad-wrapper',\n kvps: { pos: 'banner' },\n slotType: 'banner'\n }, props));\n};\n\nBannerAd.defaultProps = {\n refreshOnLoad: false\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (BannerAd);\n\n/***/ }),\n/* 77 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = authStateKnown;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constants__ = __webpack_require__(8);\n\n\nfunction authStateKnown(userAuth) {\n if (Array.isArray(userAuth) && userAuth.length) {\n return userAuth.every(function (auth) {\n return __WEBPACK_IMPORTED_MODULE_0__constants__[\"z\" /* unknownAuthStates */].indexOf(auth) === -1;\n });\n }\n return false;\n};\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar ReactChildren = __webpack_require__(387);\nvar ReactComponent = __webpack_require__(158);\nvar ReactPureComponent = __webpack_require__(391);\nvar ReactClass = __webpack_require__(392);\nvar ReactDOMFactories = __webpack_require__(393);\nvar ReactElement = __webpack_require__(80);\nvar ReactPropTypes = __webpack_require__(394);\nvar ReactVersion = __webpack_require__(396);\n\nvar onlyChild = __webpack_require__(397);\nvar warning = __webpack_require__(6);\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (false) {\n var ReactElementValidator = require('./ReactElementValidator');\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (false) {\n var warned = false;\n __spread = function () {\n process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n warned = true;\n return _assign.apply(null, arguments);\n };\n}\n\nvar React = {\n\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactComponent,\n PureComponent: ReactPureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createFactory: createFactory,\n createMixin: function (mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\nmodule.exports = React;\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar ReactCurrentOwner = __webpack_require__(49);\n\nvar warning = __webpack_require__(6);\nvar canDefineProperty = __webpack_require__(226);\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = __webpack_require__(227);\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (false) {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (false) {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n false ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n false ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (false) {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (false) {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (false) {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(398);\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar invariant = __webpack_require__(5);\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? false ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? false ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (false) {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (false) {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: false ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function (attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactRef = __webpack_require__(406);\nvar ReactInstrumentation = __webpack_require__(38);\n\nvar warning = __webpack_require__(6);\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n ) {\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function (internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (internalInstance, safely) {\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function (internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n false ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n\n};\n\nmodule.exports = ReactReconciler;\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMNamespaces = __webpack_require__(167);\nvar setInnerHTML = __webpack_require__(121);\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(168);\nvar setTextContent = __webpack_require__(238);\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some plugins (like Flash Player) will read\n // nodes immediately upon insertion into the DOM, so \n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.createMemoryHistory = exports.hashHistory = exports.browserHistory = exports.applyRouterMiddleware = exports.formatPattern = exports.useRouterHistory = exports.match = exports.routerShape = exports.locationShape = exports.PropTypes = exports.RoutingContext = exports.RouterContext = exports.createRoutes = exports.useRoutes = exports.RouteContext = exports.Lifecycle = exports.History = exports.Route = exports.Redirect = exports.IndexRoute = exports.IndexRedirect = exports.withRouter = exports.IndexLink = exports.Link = exports.Router = undefined;\n\nvar _RouteUtils = __webpack_require__(58);\n\nObject.defineProperty(exports, 'createRoutes', {\n enumerable: true,\n get: function get() {\n return _RouteUtils.createRoutes;\n }\n});\n\nvar _PropTypes2 = __webpack_require__(181);\n\nObject.defineProperty(exports, 'locationShape', {\n enumerable: true,\n get: function get() {\n return _PropTypes2.locationShape;\n }\n});\nObject.defineProperty(exports, 'routerShape', {\n enumerable: true,\n get: function get() {\n return _PropTypes2.routerShape;\n }\n});\n\nvar _PatternUtils = __webpack_require__(86);\n\nObject.defineProperty(exports, 'formatPattern', {\n enumerable: true,\n get: function get() {\n return _PatternUtils.formatPattern;\n }\n});\n\nvar _Router2 = __webpack_require__(483);\n\nvar _Router3 = _interopRequireDefault(_Router2);\n\nvar _Link2 = __webpack_require__(264);\n\nvar _Link3 = _interopRequireDefault(_Link2);\n\nvar _IndexLink2 = __webpack_require__(505);\n\nvar _IndexLink3 = _interopRequireDefault(_IndexLink2);\n\nvar _withRouter2 = __webpack_require__(506);\n\nvar _withRouter3 = _interopRequireDefault(_withRouter2);\n\nvar _IndexRedirect2 = __webpack_require__(507);\n\nvar _IndexRedirect3 = _interopRequireDefault(_IndexRedirect2);\n\nvar _IndexRoute2 = __webpack_require__(508);\n\nvar _IndexRoute3 = _interopRequireDefault(_IndexRoute2);\n\nvar _Redirect2 = __webpack_require__(265);\n\nvar _Redirect3 = _interopRequireDefault(_Redirect2);\n\nvar _Route2 = __webpack_require__(509);\n\nvar _Route3 = _interopRequireDefault(_Route2);\n\nvar _History2 = __webpack_require__(510);\n\nvar _History3 = _interopRequireDefault(_History2);\n\nvar _Lifecycle2 = __webpack_require__(511);\n\nvar _Lifecycle3 = _interopRequireDefault(_Lifecycle2);\n\nvar _RouteContext2 = __webpack_require__(512);\n\nvar _RouteContext3 = _interopRequireDefault(_RouteContext2);\n\nvar _useRoutes2 = __webpack_require__(513);\n\nvar _useRoutes3 = _interopRequireDefault(_useRoutes2);\n\nvar _RouterContext2 = __webpack_require__(127);\n\nvar _RouterContext3 = _interopRequireDefault(_RouterContext2);\n\nvar _RoutingContext2 = __webpack_require__(514);\n\nvar _RoutingContext3 = _interopRequireDefault(_RoutingContext2);\n\nvar _PropTypes3 = _interopRequireDefault(_PropTypes2);\n\nvar _match2 = __webpack_require__(515);\n\nvar _match3 = _interopRequireDefault(_match2);\n\nvar _useRouterHistory2 = __webpack_require__(268);\n\nvar _useRouterHistory3 = _interopRequireDefault(_useRouterHistory2);\n\nvar _applyRouterMiddleware2 = __webpack_require__(517);\n\nvar _applyRouterMiddleware3 = _interopRequireDefault(_applyRouterMiddleware2);\n\nvar _browserHistory2 = __webpack_require__(518);\n\nvar _browserHistory3 = _interopRequireDefault(_browserHistory2);\n\nvar _hashHistory2 = __webpack_require__(520);\n\nvar _hashHistory3 = _interopRequireDefault(_hashHistory2);\n\nvar _createMemoryHistory2 = __webpack_require__(266);\n\nvar _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Router = _Router3.default; /* components */\n\nexports.Link = _Link3.default;\nexports.IndexLink = _IndexLink3.default;\nexports.withRouter = _withRouter3.default;\n\n/* components (configuration) */\n\nexports.IndexRedirect = _IndexRedirect3.default;\nexports.IndexRoute = _IndexRoute3.default;\nexports.Redirect = _Redirect3.default;\nexports.Route = _Route3.default;\n\n/* mixins */\n\nexports.History = _History3.default;\nexports.Lifecycle = _Lifecycle3.default;\nexports.RouteContext = _RouteContext3.default;\n\n/* utils */\n\nexports.useRoutes = _useRoutes3.default;\nexports.RouterContext = _RouterContext3.default;\nexports.RoutingContext = _RoutingContext3.default;\nexports.PropTypes = _PropTypes3.default;\nexports.match = _match3.default;\nexports.useRouterHistory = _useRouterHistory3.default;\nexports.applyRouterMiddleware = _applyRouterMiddleware3.default;\n\n/* histories */\n\nexports.browserHistory = _browserHistory3.default;\nexports.hashHistory = _hashHistory3.default;\nexports.createMemoryHistory = _createMemoryHistory3.default;\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.compilePattern = compilePattern;\nexports.matchPattern = matchPattern;\nexports.getParamNames = getParamNames;\nexports.getParams = getParams;\nexports.formatPattern = formatPattern;\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction _compilePattern(pattern) {\n var regexpSource = '';\n var paramNames = [];\n var tokens = [];\n\n var match = void 0,\n lastIndex = 0,\n matcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|\\*\\*|\\*|\\(|\\)/g;\n while (match = matcher.exec(pattern)) {\n if (match.index !== lastIndex) {\n tokens.push(pattern.slice(lastIndex, match.index));\n regexpSource += escapeRegExp(pattern.slice(lastIndex, match.index));\n }\n\n if (match[1]) {\n regexpSource += '([^/]+)';\n paramNames.push(match[1]);\n } else if (match[0] === '**') {\n regexpSource += '(.*)';\n paramNames.push('splat');\n } else if (match[0] === '*') {\n regexpSource += '(.*?)';\n paramNames.push('splat');\n } else if (match[0] === '(') {\n regexpSource += '(?:';\n } else if (match[0] === ')') {\n regexpSource += ')?';\n }\n\n tokens.push(match[0]);\n\n lastIndex = matcher.lastIndex;\n }\n\n if (lastIndex !== pattern.length) {\n tokens.push(pattern.slice(lastIndex, pattern.length));\n regexpSource += escapeRegExp(pattern.slice(lastIndex, pattern.length));\n }\n\n return {\n pattern: pattern,\n regexpSource: regexpSource,\n paramNames: paramNames,\n tokens: tokens\n };\n}\n\nvar CompiledPatternsCache = Object.create(null);\n\nfunction compilePattern(pattern) {\n if (!CompiledPatternsCache[pattern]) CompiledPatternsCache[pattern] = _compilePattern(pattern);\n\n return CompiledPatternsCache[pattern];\n}\n\n/**\n * Attempts to match a pattern on the given pathname. Patterns may use\n * the following special characters:\n *\n * - :paramName Matches a URL segment up to the next /, ?, or #. The\n * captured string is considered a \"param\"\n * - () Wraps a segment of the URL that is optional\n * - * Consumes (non-greedy) all characters up to the next\n * character in the pattern, or to the end of the URL if\n * there is none\n * - ** Consumes (greedy) all characters up to the next character\n * in the pattern, or to the end of the URL if there is none\n *\n * The function calls callback(error, matched) when finished.\n * The return value is an object with the following properties:\n *\n * - remainingPathname\n * - paramNames\n * - paramValues\n */\nfunction matchPattern(pattern, pathname) {\n // Ensure pattern starts with leading slash for consistency with pathname.\n if (pattern.charAt(0) !== '/') {\n pattern = '/' + pattern;\n }\n\n var _compilePattern2 = compilePattern(pattern);\n\n var regexpSource = _compilePattern2.regexpSource;\n var paramNames = _compilePattern2.paramNames;\n var tokens = _compilePattern2.tokens;\n\n\n if (pattern.charAt(pattern.length - 1) !== '/') {\n regexpSource += '/?'; // Allow optional path separator at end.\n }\n\n // Special-case patterns like '*' for catch-all routes.\n if (tokens[tokens.length - 1] === '*') {\n regexpSource += '$';\n }\n\n var match = pathname.match(new RegExp('^' + regexpSource, 'i'));\n if (match == null) {\n return null;\n }\n\n var matchedPath = match[0];\n var remainingPathname = pathname.substr(matchedPath.length);\n\n if (remainingPathname) {\n // Require that the match ends at a path separator, if we didn't match\n // the full path, so any remaining pathname is a new path segment.\n if (matchedPath.charAt(matchedPath.length - 1) !== '/') {\n return null;\n }\n\n // If there is a remaining pathname, treat the path separator as part of\n // the remaining pathname for properly continuing the match.\n remainingPathname = '/' + remainingPathname;\n }\n\n return {\n remainingPathname: remainingPathname,\n paramNames: paramNames,\n paramValues: match.slice(1).map(function (v) {\n return v && decodeURIComponent(v);\n })\n };\n}\n\nfunction getParamNames(pattern) {\n return compilePattern(pattern).paramNames;\n}\n\nfunction getParams(pattern, pathname) {\n var match = matchPattern(pattern, pathname);\n if (!match) {\n return null;\n }\n\n var paramNames = match.paramNames;\n var paramValues = match.paramValues;\n\n var params = {};\n\n paramNames.forEach(function (paramName, index) {\n params[paramName] = paramValues[index];\n });\n\n return params;\n}\n\n/**\n * Returns a version of the given pattern with params interpolated. Throws\n * if there is a dynamic segment of the pattern for which there is no param.\n */\nfunction formatPattern(pattern, params) {\n params = params || {};\n\n var _compilePattern3 = compilePattern(pattern);\n\n var tokens = _compilePattern3.tokens;\n\n var parenCount = 0,\n pathname = '',\n splatIndex = 0;\n\n var token = void 0,\n paramName = void 0,\n paramValue = void 0;\n for (var i = 0, len = tokens.length; i < len; ++i) {\n token = tokens[i];\n\n if (token === '*' || token === '**') {\n paramValue = Array.isArray(params.splat) ? params.splat[splatIndex++] : params.splat;\n\n !(paramValue != null || parenCount > 0) ? false ? (0, _invariant2.default)(false, 'Missing splat #%s for path \"%s\"', splatIndex, pattern) : (0, _invariant2.default)(false) : void 0;\n\n if (paramValue != null) pathname += encodeURI(paramValue);\n } else if (token === '(') {\n parenCount += 1;\n } else if (token === ')') {\n parenCount -= 1;\n } else if (token.charAt(0) === ':') {\n paramName = token.substring(1);\n paramValue = params[paramName];\n\n !(paramValue != null || parenCount > 0) ? false ? (0, _invariant2.default)(false, 'Missing \"%s\" parameter for path \"%s\"', paramName, pattern) : (0, _invariant2.default)(false) : void 0;\n\n if (paramValue != null) pathname += encodeURIComponent(paramValue);\n } else {\n pathname += token;\n }\n }\n\n return pathname.replace(/\\/+/g, '/');\n}\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayMap = __webpack_require__(134),\n baseIntersection = __webpack_require__(599),\n baseRest = __webpack_require__(302),\n castArrayLikeObject = __webpack_require__(605);\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nmodule.exports = intersection;\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar Bootstrap_namespaceObject = {};\n__webpack_require__.d(Bootstrap_namespaceObject, \"getUrl\", function() { return getUrl; });\n__webpack_require__.d(Bootstrap_namespaceObject, \"getFallbackConfig\", function() { return getFallbackConfig; });\n__webpack_require__.d(Bootstrap_namespaceObject, \"loadBootstrap\", function() { return loadBootstrap; });\nvar ClientAPI_namespaceObject = {};\n__webpack_require__.d(ClientAPI_namespaceObject, \"FULL_PREAUTH_PROVIDERS\", function() { return FULL_PREAUTH_PROVIDERS; });\n__webpack_require__.d(ClientAPI_namespaceObject, \"getClient\", function() { return getClient; });\n__webpack_require__.d(ClientAPI_namespaceObject, \"getProviders\", function() { return getProviders; });\n__webpack_require__.d(ClientAPI_namespaceObject, \"getProvider\", function() { return getProvider; });\nvar SearchAPI_namespaceObject = {};\n__webpack_require__.d(SearchAPI_namespaceObject, \"ERROR_PAGE_RESPONSE\", function() { return ERROR_PAGE_RESPONSE; });\n__webpack_require__.d(SearchAPI_namespaceObject, \"DEFAULT_CONFIGURATION\", function() { return DEFAULT_CONFIGURATION; });\n__webpack_require__.d(SearchAPI_namespaceObject, \"getSuggestion\", function() { return getSuggestion; });\n__webpack_require__.d(SearchAPI_namespaceObject, \"getSearchResults\", function() { return getSearchResults; });\n__webpack_require__.d(SearchAPI_namespaceObject, \"getAllCompetitors\", function() { return getAllCompetitors; });\n__webpack_require__.d(SearchAPI_namespaceObject, \"getEventsForTeam\", function() { return getEventsForTeam; });\nvar VideoAPI_namespaceObject = {};\n__webpack_require__.d(VideoAPI_namespaceObject, \"getChannels\", function() { return getChannels; });\nvar WatchAPI_namespaceObject = {};\n__webpack_require__.d(WatchAPI_namespaceObject, \"getServiceUrl\", function() { return WatchAPI_getServiceUrl; });\n__webpack_require__.d(WatchAPI_namespaceObject, \"getListings\", function() { return getListings; });\n__webpack_require__.d(WatchAPI_namespaceObject, \"getListingsBySubcategory\", function() { return getListingsBySubcategory; });\n__webpack_require__.d(WatchAPI_namespaceObject, \"getTopCategories\", function() { return getTopCategories; });\n__webpack_require__.d(WatchAPI_namespaceObject, \"getPrioritizedEventFromListings\", function() { return getPrioritizedEventFromListings; });\nvar GraphQL_namespaceObject = {};\n__webpack_require__.d(GraphQL_namespaceObject, \"config\", function() { return GraphQL_config; });\n__webpack_require__.d(GraphQL_namespaceObject, \"getServiceUrl\", function() { return GraphQL_getServiceUrl; });\n__webpack_require__.d(GraphQL_namespaceObject, \"getBaseUrl\", function() { return getBaseUrl; });\n__webpack_require__.d(GraphQL_namespaceObject, \"getNetworks\", function() { return getNetworks; });\n__webpack_require__.d(GraphQL_namespaceObject, \"getAirings\", function() { return getAirings; });\n__webpack_require__.d(GraphQL_namespaceObject, \"getAiring\", function() { return getAiring; });\n__webpack_require__.d(GraphQL_namespaceObject, \"getVideo\", function() { return getVideo; });\n__webpack_require__.d(GraphQL_namespaceObject, \"makeRequest\", function() { return makeRequest; });\n\n// EXTERNAL MODULE: ./node_modules/loglevel/lib/loglevel.js\nvar loglevel = __webpack_require__(73);\nvar loglevel_default = /*#__PURE__*/__webpack_require__.n(loglevel);\n\n// EXTERNAL MODULE: ./config/index.js\nvar config_0 = __webpack_require__(16);\nvar config_default = /*#__PURE__*/__webpack_require__.n(config_0);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/lib/metrics/newRelicEventBus.js\nvar newRelicEventBus = __webpack_require__(138);\n\n// EXTERNAL MODULE: ./app/lib/api/cache/requestCache.js\nvar requestCache = __webpack_require__(42);\n\n// EXTERNAL MODULE: ./app/lib/api/requestProxy.js\nvar requestProxy = __webpack_require__(43);\n\n// EXTERNAL MODULE: ./app/lib/api/cache/fallbackCache.js\nvar fallbackCache = __webpack_require__(74);\n\n// EXTERNAL MODULE: ./config/watchespn-web-1.0.config.qa.json\nvar watchespn_web_1_0_config_qa = __webpack_require__(633);\nvar watchespn_web_1_0_config_qa_default = /*#__PURE__*/__webpack_require__.n(watchespn_web_1_0_config_qa);\n\n// EXTERNAL MODULE: ./config/watchespn-web-1.0.config.json\nvar watchespn_web_1_0_config = __webpack_require__(634);\nvar watchespn_web_1_0_config_default = /*#__PURE__*/__webpack_require__.n(watchespn_web_1_0_config);\n\n// CONCATENATED MODULE: ./app/lib/api/Bootstrap.js\nvar _BOOTSTRAP_URL;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nvar log = loglevel_default.a.getLogger('Bootstrap');\n\nvar DEFAULT_EXPIRATION = 300;\nvar DEFAULT_TIMEOUT = 5000;\nvar BOOTSTRAP_URL = (_BOOTSTRAP_URL = {}, _defineProperty(_BOOTSTRAP_URL, enums[\"c\" /* AppEnvs */].dev, config_0[\"secureCdnHost\"] + '/connected-devices/app-configurations/watchespn-web-3.0_dev.config.json'), _defineProperty(_BOOTSTRAP_URL, enums[\"c\" /* AppEnvs */].qa, config_0[\"secureCdnHost\"] + '/connected-devices/app-configurations/watchespn-web-3.0_qa.config.json'), _defineProperty(_BOOTSTRAP_URL, enums[\"c\" /* AppEnvs */].prod, config_0[\"secureCdnHost\"] + '/connected-devices/app-configurations/watchespn-web-3.0.config.json'), _BOOTSTRAP_URL);\n\nfunction getUrl() {\n var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : config_0[\"appEnv\"];\n\n var url = BOOTSTRAP_URL[env];\n if (false) {\n // use non ssl domain for server side\n url = url.replace(secureCdnHost, 'http://proxy.espn.com');\n }\n return url;\n}\n\nfunction getFallbackConfig() {\n var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : config_0[\"appEnv\"];\n\n return env === enums[\"c\" /* AppEnvs */].prod ? watchespn_web_1_0_config_default.a : watchespn_web_1_0_config_qa_default.a;\n}\n\nfunction loadBootstrap() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n configEnv = _ref.configEnv;\n\n var url = getUrl(configEnv);\n return requestCache[\"a\" /* default */].get(url).expiration(DEFAULT_EXPIRATION).use(requestProxy[\"a\" /* default */]).timeout(DEFAULT_TIMEOUT).then(function (_ref2) {\n var body = _ref2.body;\n\n fallbackCache[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n log.error('loadBootstrap: ' + url, err.status, err.originalError);\n newRelicEventBus[\"b\" /* newRelicEmitter */].emit(newRelicEventBus[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n return fallbackCache[\"a\" /* default */].get(url).then(function (config) {\n if (!config) {\n log.error('loadBootstrap: using fallbackConfig');\n var fallbackConfig = getFallbackConfig(configEnv);\n return fallbackConfig;\n }\n return config;\n });\n });\n}\n// EXTERNAL MODULE: ./app/lib/url-adapter/toAbsoluteURL.js\nvar toAbsoluteURL = __webpack_require__(90);\n\n// EXTERNAL MODULE: ./app/lib/format/queryString.js\nvar queryString = __webpack_require__(18);\n\n// CONCATENATED MODULE: ./app/lib/auth/Provider.js\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\nvar appLinkBase = 'espnapi://espnnetworks.AdobePassProviderChosen';\n\nvar Provider_Provider = function () {\n function Provider(_ref) {\n var id = _ref.id,\n name = _ref.name,\n abbreviation = _ref.abbreviation,\n ispId = _ref.ispId,\n _ref$tier = _ref.tier,\n tier = _ref$tier === undefined ? 2 : _ref$tier,\n rank = _ref.rank,\n links = _ref.links,\n images = _ref.images,\n _ref$analytics = _ref.analytics,\n analytics = _ref$analytics === undefined ? {} : _ref$analytics,\n _ref$streamLimiting = _ref.streamLimiting,\n streamLimiting = _ref$streamLimiting === undefined ? {} : _ref$streamLimiting,\n _ref$countries = _ref.countries,\n countries = _ref$countries === undefined ? [{ countryCode: 'US' }] : _ref$countries,\n _ref$packages = _ref.packages,\n packages = _ref$packages === undefined ? [] : _ref$packages;\n var partner = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'espn';\n var platform = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'web';\n var version = arguments[3];\n\n _classCallCheck(this, Provider);\n\n this.id = id;\n this.name = name;\n this.abbreviation = abbreviation || ispId;\n this.ispId = ispId;\n this.tier = tier;\n this.rank = rank, this.links = links;\n this.images = images;\n this.analytics = analytics;\n this.streamLimiting = streamLimiting;\n this.countries = countries;\n this.packages = packages;\n var appLinkQuery = Object(queryString[\"a\" /* default */])({ partner: partner, platform: platform, version: version, mvpd: abbreviation });\n this.appLink = '' + appLinkBase + appLinkQuery;\n }\n\n /**\n * Provider\n * @Param {Object} domesticProvider - A domestic provider from /watch/clients/watchespn-web/providers\n */\n\n\n _createClass(Provider, null, [{\n key: 'createProviderDomestic',\n value: function createProviderDomestic(provider, partner, platform, version) {\n return new Provider(provider, partner, platform, version);\n }\n\n /**\n * Provider\n * @Param {Object} intlProvider - An international affiliate from the intl provider feed\n */\n\n }, {\n key: 'createProviderIntl',\n value: function createProviderIntl(_ref2) {\n var name = _ref2.name,\n adobeId = _ref2.adobeId,\n analyticsId = _ref2.analyticsId,\n ispId = _ref2.ispId,\n _ref2$logos = _ref2.logos,\n desktop = _ref2$logos.desktop,\n mobile = _ref2$logos.mobile,\n settop = _ref2$logos.settop,\n pickerImage = _ref2$logos.pickerImage,\n negativebgcolorImage = _ref2$logos.negativebgcolorImage,\n positivebgcolorImage = _ref2$logos.positivebgcolorImage,\n websiteUrl = _ref2.websiteUrl,\n _ref2$countries = _ref2.countries,\n countries = _ref2$countries === undefined ? [] : _ref2$countries,\n packages = _ref2.packages;\n var countryCode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var providerCountry = countries.filter(function (country) {\n return country.countryCode.toLowerCase() === countryCode.toLowerCase();\n });\n var tier = providerCountry.length > 0 && providerCountry[0].tier === 1 ? 1 : 2;\n var rank = providerCountry.length > 0 && providerCountry[0].rank ? providerCountry[0].rank : null;\n\n return new Provider({\n id: adobeId,\n name: name,\n abbreviation: adobeId,\n ispId: ispId,\n links: { web: { href: websiteUrl } },\n images: {\n logo: { href: desktop },\n mobile: { href: mobile },\n settop: { href: settop },\n picker: { href: pickerImage },\n whiteBackground: { href: positivebgcolorImage },\n colorWithPositiveBackground: { href: positivebgcolorImage },\n colorWithNegativeBackground: { href: negativebgcolorImage }\n },\n analytics: { id: analyticsId },\n countries: countries,\n tier: tier,\n rank: rank,\n packages: packages\n });\n }\n }]);\n\n return Provider;\n}();\n\n/* harmony default export */ var auth_Provider = (Provider_Provider);\n// CONCATENATED MODULE: ./app/lib/api/ClientAPI.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\n\nvar AdobePassEnv = enums[\"a\" /* AdobePass */].Env;\n\n\nvar ClientAPI_log = loglevel_default.a.getLogger('ClientAPI');\n\nvar ONE_HOUR = 3600;\n\nvar CONFIGURATION = {\n baseUrl: '//api-app.espn.com',\n baseInternalUrl: '//sports-bc.prod.espninfra.starwave.com',\n endPoint: '/v1/watch/clients/',\n apiKey: '',\n intlProviderServiceUrl: 'https://affiliate.api.espn.com/affiliateApi/affiliates'\n};\n\nvar QA_CONFIGURATION = {\n baseUrl: '//broadband.espnqa.com/espn360/apis',\n baseInternalUrl: '//sports-bc.qa.espninfra.starwave.com/espn360/apis',\n endPoint: '/v1/watch/clients/',\n apiKey: '',\n intlProviderServiceUrl: 'https://affiliate.api.qa.espn.com/affiliateApi/affiliates'\n};\n\nvar INTL_QUERY = {\n includeProperties: true,\n rows: 1000,\n apikey: 'iay88gnrz4un1jiaclo88df33'\n};\n\nvar FULL_PREAUTH_PROVIDERS = ['Comcast_SSO', 'ATT', 'Charter_Direct', 'TWC', 'Brighthouse', 'Cablevision', 'Verizon', 'Bend', 'WOW', 'Suddenlink', 'Mediacom', 'Dish', 'Grande', 'HTC', 'RCN'];\n\nfunction ClientAPI_getServiceUrl() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n passenv = _ref.passenv,\n _ref$platform = _ref.platform,\n platform = _ref$platform === undefined ? 'web' : _ref$platform,\n _ref$partner = _ref.partner,\n partner = _ref$partner === undefined ? 'watchespn' : _ref$partner;\n\n var config = CONFIGURATION;\n if (passenv === AdobePassEnv.STAGING) {\n config = QA_CONFIGURATION;\n }\n return '' + Object(toAbsoluteURL[\"a\" /* default */])(config.baseUrl) + config.endPoint + partner + '-' + platform;\n}\n\nfunction getProviderServiceUrl(_ref2) {\n var country = _ref2.country,\n passenv = _ref2.passenv,\n platform = _ref2.platform;\n\n var config = CONFIGURATION;\n if (passenv === AdobePassEnv.STAGING) {\n config = QA_CONFIGURATION;\n }\n if (country === 'US') {\n return ClientAPI_getServiceUrl({ passenv: passenv, platform: platform }) + '/providers?country=' + country;\n }\n\n return '' + config.intlProviderServiceUrl + Object(queryString[\"a\" /* default */])(_extends({}, INTL_QUERY, { country: country }));\n}\n\nfunction getClient() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$passenv = _ref3.passenv,\n passenv = _ref3$passenv === undefined ? AdobePassEnv.PROD : _ref3$passenv,\n _ref3$platform = _ref3.platform,\n platform = _ref3$platform === undefined ? 'web' : _ref3$platform;\n\n var url = ClientAPI_getServiceUrl({ passenv: passenv, platform: platform }) + '?enable=providers,channels';\n\n ClientAPI_log.debug('getClient: ' + url);\n\n return Object(requestCache[\"a\" /* default */])(url).expiration(ONE_HOUR).use(requestProxy[\"a\" /* default */]).then(function (_ref4) {\n var body = _ref4.body;\n\n var client = body.clients[0];\n var result = {\n channels: client.channels,\n providers: client.providers\n };\n\n fallbackCache[\"a\" /* default */].set(url, result);\n return result;\n }).catch(function (err) {\n ClientAPI_log.error('getClient:', err.originalError);\n return fallbackCache[\"a\" /* default */].get(url);\n });\n}\n\nfunction getProviders() {\n var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n country = _ref5.country,\n _ref5$passenv = _ref5.passenv,\n passenv = _ref5$passenv === undefined ? AdobePassEnv.PROD : _ref5$passenv,\n partner = _ref5.partner,\n platform = _ref5.platform,\n version = _ref5.version;\n\n var url = getProviderServiceUrl({ country: country, passenv: passenv, platform: platform });\n ClientAPI_log.debug('getProviders: ' + url);\n\n return requestCache[\"a\" /* default */].get(url).expiration(ONE_HOUR).use(requestProxy[\"a\" /* default */]).then(function (_ref6) {\n var body = _ref6.body;\n var clients = body.clients;\n\n if (clients) {\n var client = clients[0];\n var providers = client.providers.map(function (provider) {\n return auth_Provider.createProviderDomestic(provider, partner, platform, version);\n });\n fallbackCache[\"a\" /* default */].set(url, providers);\n return providers;\n }\n\n var rows = body.rows;\n\n if (rows) {\n var intlProviders = rows.map(function (_ref7) {\n var data = _ref7.data;\n return auth_Provider.createProviderIntl(data, country);\n });\n fallbackCache[\"a\" /* default */].set(url, intlProviders);\n return intlProviders;\n }\n }).catch(function (err) {\n ClientAPI_log.error('getProviders:', err.originalError);\n return fallbackCache[\"a\" /* default */].get(url);\n });\n}\n\nfunction getProvider() {\n var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n abbreviation = _ref8.abbreviation,\n _ref8$country = _ref8.country,\n country = _ref8$country === undefined ? 'US' : _ref8$country,\n _ref8$passenv = _ref8.passenv,\n passenv = _ref8$passenv === undefined ? AdobePassEnv.PROD : _ref8$passenv,\n _ref8$partner = _ref8.partner,\n partner = _ref8$partner === undefined ? 'watchespn' : _ref8$partner,\n _ref8$platform = _ref8.platform,\n platform = _ref8$platform === undefined ? 'flash' : _ref8$platform;\n\n if (country === 'US') {\n var url = ClientAPI_getServiceUrl({ passenv: passenv, platform: platform }) + '/providers/' + abbreviation;\n\n ClientAPI_log.debug('getProviders: ' + url);\n\n return requestCache[\"a\" /* default */].get(url).expiration(ONE_HOUR).use(requestProxy[\"a\" /* default */]).then(function (_ref9) {\n var body = _ref9.body;\n var clients = body.clients;\n\n if (clients) {\n var client = clients[0];\n var provider = auth_Provider.createProviderDomestic(client.providers[0], partner, platform);\n fallbackCache[\"a\" /* default */].set(url, provider);\n return provider;\n }\n }).catch(function (err) {\n ClientAPI_log.error('getProvider:', err.originalError);\n return fallbackCache[\"a\" /* default */].get(url);\n });\n }\n return Promise.resolve();\n}\n// EXTERNAL MODULE: ./app/lib/api/PageAPI.js\nvar PageAPI = __webpack_require__(207);\n\n// EXTERNAL MODULE: ./node_modules/bluebird/js/browser/bluebird.js\nvar bluebird = __webpack_require__(11);\nvar bluebird_default = /*#__PURE__*/__webpack_require__.n(bluebird);\n\n// CONCATENATED MODULE: ./app/lib/format/sanitizeQuery.js\n// Only allow Alpha-numeric, spaces, #, () and - in query\n\nvar emojiRegExp = /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|\\ud83c[\\udd70-\\udd71]|\\ud83c[\\udd7e-\\udd7f]|\\ud83c\\udd8e|\\ud83c[\\udd91-\\udd9a]|\\ud83c[\\udde6-\\uddff]|[\\ud83c[\\ude01-\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|[\\ud83c[\\ude32-\\ude3a]|[\\ud83c[\\ude50-\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff])/;\n\nfunction sanitizeQueryString(queryString) {\n var decodedQuery = decodeURIComponent(queryString);\n if (emojiRegExp.test(decodedQuery)) {\n return decodedQuery.codePointAt(0).toString(16);\n }\n return encodeURIComponent(decodedQuery.replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"$%*+,\\\\/:;<=>?@\\[\\]^_`{|}~]/gim, ''));\n}\n// CONCATENATED MODULE: ./app/lib/api/SearchAPI.js\nvar SearchAPI__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\n\n\n\n\nvar SearchAPI_DEFAULT_TIMEOUT = 10000;\nvar ApiEnv = enums[\"b\" /* Api */].Env;\n\n\nvar ERROR_PAGE_RESPONSE = {\n page: {\n name: 'Search API Error',\n buckets: []\n }\n};\nvar ENVIRONMENT_CONFIGURATION = {\n dev: {\n serviceUrl: '//watch-search.espnsb.com'\n },\n qa: {\n serviceUrl: '//watch-search.espnqa.com'\n },\n staging: {\n serviceUrl: '//watch-search.espnqa.com'\n },\n prod: {\n serviceUrl: '//watch-search.espn.com'\n }\n};\n\nvar DEFAULT_CONFIGURATION = {\n serviceUrl: ENVIRONMENT_CONFIGURATION.qa.serviceUrl,\n paths: {\n base: '/api/product/v3/watchespn/web/',\n search: '/api/product/v3/watchespn/web/search',\n suggest: '/api/product/v3/watchespn/web/suggest',\n keyword: {\n base: '/api/product/v3/watchespn/web/keywords',\n listings: '/listings'\n }\n }\n};\n\nvar SearchAPI_config = SearchAPI__extends({}, DEFAULT_CONFIGURATION, config_0[\"searchApi\"]);\n\nvar SearchAPI_getServiceUrl = function getServiceUrl() {\n var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ApiEnv.PROD;\n\n if (true) {\n var browserEnvironment = env; //global.watchGlobals && global.watchGlobals.env;\n return ENVIRONMENT_CONFIGURATION[browserEnvironment || env].serviceUrl;\n }\n return Object(toAbsoluteURL[\"a\" /* default */])(ENVIRONMENT_CONFIGURATION[env].serviceUrl);\n};\n\nfunction getSuggestion() {\n var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var apiEnv = arguments[1];\n\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n authNetworks = _ref.authNetworks,\n countryCode = _ref.countryCode,\n _ref$deviceType = _ref.deviceType,\n deviceType = _ref$deviceType === undefined ? enums[\"q\" /* Device */].DESKTOP : _ref$deviceType,\n zipcode = _ref.zipcode,\n lang = _ref.lang,\n tz = _ref.tz;\n\n if (query.length === 0) {\n return bluebird_default.a.reject(new Error('No query to get a suggestion.'));\n }\n var sanitizedQuery = sanitizeQueryString(query);\n if (!sanitizedQuery) {\n return bluebird_default.a.reject(new Error('No Valid Query Entered'));\n }\n var qs = Object(queryString[\"a\" /* default */])({\n q: sanitizedQuery,\n size: 3,\n authNetworks: authNetworks,\n countryCode: countryCode,\n deviceType: deviceType,\n zipcode: zipcode,\n lang: lang,\n tz: tz,\n includeDtcContent: true\n });\n var url = '' + SearchAPI_getServiceUrl(apiEnv) + SearchAPI_config.paths.suggest + qs;\n\n return requestCache[\"a\" /* default */].get(url).use(requestProxy[\"a\" /* default */]).timeout(SearchAPI_DEFAULT_TIMEOUT).then(function (_ref2) {\n var body = _ref2.body;\n\n fallbackCache[\"a\" /* default */].set(url, body);\n return body;\n }, function (err) {\n if (err.status === 404) {\n return ERROR_PAGE_RESPONSE;\n }\n return fallbackCache[\"a\" /* default */].get(url);\n });\n}\n\nfunction getSearchResults() {\n var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var apiEnv = arguments[1];\n\n var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n authNetworks = _ref3.authNetworks,\n countryCode = _ref3.countryCode,\n _ref3$deviceType = _ref3.deviceType,\n deviceType = _ref3$deviceType === undefined ? enums[\"q\" /* Device */].DESKTOP : _ref3$deviceType,\n zipcode = _ref3.zipcode,\n lang = _ref3.lang,\n tz = _ref3.tz;\n\n if (query.length === 0) {\n return bluebird_default.a.reject(new Error('No params to get a search result.'));\n }\n\n var sanitizedQuery = sanitizeQueryString(query);\n if (!sanitizedQuery) {\n return bluebird_default.a.reject(new Error('No Valid Query Entered'));\n }\n var qs = Object(queryString[\"a\" /* default */])({\n q: sanitizedQuery,\n size: 50,\n authNetworks: authNetworks,\n countryCode: countryCode,\n deviceType: deviceType,\n zipcode: zipcode,\n lang: lang,\n tz: tz,\n includeDtcContent: true\n });\n var url = '' + SearchAPI_getServiceUrl(apiEnv) + SearchAPI_config.paths.search + qs;\n\n return requestCache[\"a\" /* default */].get(url).use(requestProxy[\"a\" /* default */]).timeout(SearchAPI_DEFAULT_TIMEOUT).then(function (_ref4) {\n var body = _ref4.body;\n\n fallbackCache[\"a\" /* default */].set(url, body);\n return body;\n }, function (err) {\n if (err.status === 404) {\n return ERROR_PAGE_RESPONSE;\n }\n return fallbackCache[\"a\" /* default */].get(url);\n });\n}\n\nfunction getAllCompetitors(apiEnv) {\n var url = '' + SearchAPI_getServiceUrl(apiEnv) + SearchAPI_config.paths.keyword.base;\n return requestCache[\"a\" /* default */].get(url).use(requestProxy[\"a\" /* default */]).timeout(SearchAPI_DEFAULT_TIMEOUT).then(function (_ref5) {\n var body = _ref5.body;\n\n fallbackCache[\"a\" /* default */].set(url, body);\n return body;\n }, function (err) {\n if (err.status === 404) {\n return [];\n }\n return fallbackCache[\"a\" /* default */].get(url);\n });\n}\n\nfunction getEventsForTeam(team, apiEnv) {\n var _ref6 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n size = _ref6.size,\n includes = _ref6.includes,\n sortBy = _ref6.sortBy,\n sortOrder = _ref6.sortOrder;\n\n var qs = Object(queryString[\"a\" /* default */])({\n size: size,\n includes: includes,\n sortBy: sortBy,\n sortOrder: sortOrder\n });\n var url = '' + SearchAPI_getServiceUrl(apiEnv) + SearchAPI_config.paths.keyword.base + '/' + encodeURIComponent(team) + '/listings' + qs;\n return requestCache[\"a\" /* default */].get(url).use(requestProxy[\"a\" /* default */]).timeout(SearchAPI_DEFAULT_TIMEOUT).then(function (_ref7) {\n var body = _ref7.body;\n\n fallbackCache[\"a\" /* default */].set(url, body);\n return body;\n }, function (err) {\n if (err.status === 404) {\n return ERROR_PAGE_RESPONSE;\n }\n return fallbackCache[\"a\" /* default */].get(url);\n });\n}\n// CONCATENATED MODULE: ./app/lib/api/VideoAPI.js\nvar VideoAPI__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\nvar videoApiConfig = config_default.a.videoApi;\n\nvar VideoAPI_DEFAULT_CONFIGURATION = {\n serviceUrl: '//api-app.espn.com/v1/video',\n internalServiceUrl: '//sports-bc.prod.espninfra.starwave.com/allsports/apis/v1/video',\n apiKey: ''\n};\n\nvar VideoAPI_config = VideoAPI__extends({}, VideoAPI_DEFAULT_CONFIGURATION, videoApiConfig);\n\nfunction getChannels() {\n var url = Object(toAbsoluteURL[\"a\" /* default */])(VideoAPI_config.serviceUrl) + '/channels';\n\n return Object(requestCache[\"a\" /* default */])(url).use(requestProxy[\"a\" /* default */]).then(function (response) {\n return response.body;\n }, function () {\n throw new Error('Could not retrieve video api data.');\n });\n}\n// EXTERNAL MODULE: ./app/lib/format/apiDateFormatter.js\nvar apiDateFormatter = __webpack_require__(106);\n\n// EXTERNAL MODULE: ./app/constants.js\nvar constants = __webpack_require__(8);\n\n// CONCATENATED MODULE: ./app/lib/api/WatchAPI.js\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar WatchAPI__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar WatchAPI_ApiEnv = enums[\"b\" /* Api */].Env;\n\n\nvar WatchAPI_log = loglevel_default.a.getLogger('WatchAPI');\nvar watchApiConfig = config_default.a.watchApi;\n\nvar WatchAPI_DEFAULT_CONFIGURATION = {\n apiKey: '',\n networks: 'espn1,espn2,espn3,espnu,sec,secplus,espnews,espndeportes,longhorn,goalline,buzzerbeater,acc,accextra,secplus',\n resultsLimit: 200\n};\n\nvar WatchAPI_getServiceUrl = function getServiceUrl() {\n var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : WatchAPI_ApiEnv.PROD;\n return Object(toAbsoluteURL[\"a\" /* default */])(constants[\"h\" /* LISTINGS_API_CONFIGURATION */][env].serviceUrl);\n};\n\nvar WatchAPI_config = WatchAPI__extends({}, WatchAPI_DEFAULT_CONFIGURATION, watchApiConfig);\n\nfunction getListings(_ref, listingsHref) {\n var types = _ref.types,\n networks = _ref.networks,\n id = _ref.id,\n eventId = _ref.eventId,\n airingId = _ref.airingId,\n categories = _ref.categories,\n subcategories = _ref.subcategories,\n dates = _ref.dates,\n _ref$limit = _ref.limit,\n limit = _ref$limit === undefined ? WatchAPI_config.resultsLimit : _ref$limit,\n _ref$apiEnv = _ref.apiEnv,\n apiEnv = _ref$apiEnv === undefined ? WatchAPI_ApiEnv.PROD : _ref$apiEnv;\n\n var typesQuery = types ? types.join(',') : '';\n var networksQuery = networks === '' ? WatchAPI_config.networks : null;\n var categoriesQuery = categories ? categories.join(',') : '';\n var subcategoriesQuery = subcategories ? subcategories.join(',') : '';\n var datesQuery = dates ? apiDateFormatter[\"a\" /* default */].apply(undefined, _toConsumableArray(dates)) : 0;\n var limitQuery = limit;\n // Need ability to pass in listingsHref for conference channels (from state)\n var baseUrl = listingsHref || WatchAPI_getServiceUrl(apiEnv) + '/listings';\n\n var qs = Object(queryString[\"a\" /* default */])({\n types: typesQuery,\n networks: networksQuery,\n id: id,\n eventId: eventId,\n airingId: airingId,\n categories: categoriesQuery,\n subcategories: subcategoriesQuery,\n dates: datesQuery,\n limit: limitQuery\n });\n // if a baseUrl is passed in, it could potentially already have queryParamters. Need to replace ? with & if so\n var url = baseUrl.indexOf('?') !== -1 ? '' + baseUrl + qs.replace('?', '&') : '' + baseUrl + qs;\n\n WatchAPI_log.debug('getClient: ' + url);\n return Object(requestCache[\"a\" /* default */])(url).use(requestProxy[\"a\" /* default */]).then(function (response) {\n var listings = response.body.listings || [];\n fallbackCache[\"a\" /* default */].set(url, listings);\n return listings;\n }).catch(function (err) {\n WatchAPI_log.error('getListings:', err.originalError);\n return fallbackCache[\"a\" /* default */].get(url);\n });\n}\n\nfunction getListingsBySubcategory(_ref2) {\n var types = _ref2.types,\n networks = _ref2.networks,\n id = _ref2.id,\n eventId = _ref2.eventId,\n airingId = _ref2.airingId,\n subcategory = _ref2.subcategory,\n dates = _ref2.dates,\n _ref2$limit = _ref2.limit,\n limit = _ref2$limit === undefined ? WatchAPI_config.resultsLimit : _ref2$limit,\n _ref2$apiEnv = _ref2.apiEnv,\n apiEnv = _ref2$apiEnv === undefined ? WatchAPI_ApiEnv.PROD : _ref2$apiEnv;\n\n var typesQuery = types ? types.join(',') : '';\n var networksQuery = networks === '' ? WatchAPI_config.networks : networks.join(',');\n var datesQuery = 0;\n if (typeof dates === 'string' && /^\\d{8}/.test(dates)) {\n datesQuery = dates;\n } else if (Array.isArray(dates)) {\n datesQuery = apiDateFormatter[\"a\" /* default */].apply(undefined, _toConsumableArray(dates));\n }\n var limitQuery = limit;\n var baseUrl = WatchAPI_getServiceUrl(apiEnv) + '/subcategories/' + subcategory + '/listings';\n\n var qs = Object(queryString[\"a\" /* default */])({\n types: typesQuery,\n networks: networksQuery,\n id: id,\n eventId: eventId,\n airingId: airingId,\n dates: datesQuery,\n limit: limitQuery\n });\n // if a baseUrl is passed in, it could potentially already have queryParamters. Need to replace ? with & if so\n var url = baseUrl.indexOf('?') !== -1 ? '' + baseUrl + qs.replace('?', '&') : '' + baseUrl + qs;\n\n return Object(requestCache[\"a\" /* default */])(url).use(requestProxy[\"a\" /* default */]).then(function (response) {\n var subcategories = response.body.subcategories || [];\n var listings = subcategories[0] && subcategories[0].listings;\n fallbackCache[\"a\" /* default */].set(url, listings);\n return listings;\n }).catch(function (err) {\n WatchAPI_log.error('getListingsBySubcategory:', err.originalError);\n return fallbackCache[\"a\" /* default */].get(url);\n });\n}\n\nfunction getTopCategories() {\n var apiEnv = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : WatchAPI_ApiEnv.PROD;\n\n var url = WatchAPI_getServiceUrl(apiEnv) + '/categories/top';\n\n return Object(requestCache[\"a\" /* default */])(url).use(requestProxy[\"a\" /* default */]).then(function (response) {\n var categories = response.body.categories || [];\n fallbackCache[\"a\" /* default */].set(url, categories);\n return categories;\n }).catch(function (err) {\n WatchAPI_log.error('getTopCategories:', err.originalError);\n return fallbackCache[\"a\" /* default */].get(url);\n });\n}\n\nfunction getPrioritizedEventFromListings(listings, lang) {\n var event = void 0;\n var matchedLangLiveNonE3 = void 0;\n var matchedLiveE3 = void 0;\n var matchedLangLiveE3 = void 0;\n var matchedLiveNonE3 = void 0;\n var matchedLangNonE3 = void 0;\n var matchedLangE3 = void 0;\n var matchedLangReplay = void 0;\n var index = 0;\n var len = listings.length;\n\n for (; index < len; index += 1) {\n var content = listings[index];\n\n var type = content.type,\n sourceLang = content.lang,\n _content$broadcasts = _slicedToArray(content.broadcasts, 1),\n ncsId = _content$broadcasts[0].ncsId;\n\n event = content;\n if (len === 1) {\n break;\n }\n // prefer same lang, live and non-E3\n if (sourceLang === lang) {\n if (type === 'live') {\n if (ncsId !== 'n360') {\n matchedLangLiveNonE3 = event;\n break;\n } else if (!matchedLangLiveE3) {\n matchedLangLiveE3 = event;\n }\n } else if (type === 'replay') {\n if (!matchedLangReplay) {\n matchedLangReplay = event;\n }\n } else if (ncsId !== 'n360') {\n if (!matchedLangNonE3) {\n matchedLangNonE3 = event;\n }\n } else if (!matchedLangE3) {\n matchedLangE3 = event;\n }\n } else if (type === 'live') {\n if (ncsId !== 'n360') {\n if (!matchedLiveNonE3) {\n matchedLiveNonE3 = event;\n }\n } else if (!matchedLiveE3) {\n matchedLiveE3 = event;\n }\n }\n }\n\n return matchedLangLiveNonE3 || matchedLangLiveE3 || matchedLiveNonE3 || matchedLiveE3 || matchedLangReplay || matchedLangNonE3 || matchedLangE3 || event;\n}\n// CONCATENATED MODULE: ./app/queries.js\nvar AIRINGS = \"\\n query Airings (\\n $countryCode: String!,\\n $deviceType: DeviceType!,\\n $tz: String!,\\n $type: AiringType,\\n $categories: [String],\\n $networks: [String],\\n $packages: [String],\\n $eventId: String,\\n $packageId: String,\\n $start: String,\\n $end: String,\\n $day: String,\\n $limit: Int\\n ) {\\n airings(\\n countryCode: $countryCode,\\n deviceType: $deviceType,\\n tz: $tz,\\n type: $type,\\n categories: $categories,\\n networks: $networks,\\n packages: $packages,\\n eventId: $eventId,\\n packageId: $packageId,\\n start: $start,\\n end: $end,\\n day: $day,\\n limit: $limit\\n ) {\\n id\\n airingId\\n simulcastAiringId\\n name\\n type\\n startDateTime\\n shortDate: startDate(style: SHORT)\\n authTypes\\n adobeRSS\\n duration\\n feedName\\n purchaseImage {\\n url\\n }\\n image {\\n url\\n }\\n network {\\n id\\n type\\n abbreviation\\n name\\n shortName\\n adobeResource\\n isIpAuth\\n }\\n source {\\n url\\n authorizationType\\n hasPassThroughAds\\n hasNielsenWatermarks\\n hasEspnId3Heartbeats\\n commercialReplacement\\n }\\n packages {\\n name\\n }\\n category {\\n id\\n name\\n }\\n subcategory {\\n id\\n name\\n }\\n sport {\\n id\\n name\\n abbreviation\\n code\\n }\\n league {\\n id\\n name\\n abbreviation\\n code\\n }\\n franchise {\\n id\\n name\\n }\\n program {\\n id\\n code\\n categoryCode\\n isStudio\\n }\\n tracking {\\n nielsenCrossId1\\n nielsenCrossId2\\n comscoreC6\\n trackingId\\n }\\n }\\n }\\n\";\n\nvar AIRING = \"\\n query Airing (\\n $id: ID!,\\n $countryCode: String!,\\n $deviceType: DeviceType!,\\n $tz: String!\\n ) {\\n airing(\\n id: $id,\\n countryCode: $countryCode,\\n deviceType: $deviceType,\\n tz: $tz\\n ) {\\n id\\n airingId\\n simulcastAiringId\\n name\\n type\\n startDateTime\\n shortDate: startDate(style: SHORT)\\n authTypes\\n adobeRSS\\n duration\\n feedName\\n image {\\n url\\n }\\n network {\\n id\\n type\\n abbreviation\\n name\\n shortName\\n adobeResource\\n isIpAuth\\n }\\n source {\\n url\\n authorizationType\\n hasPassThroughAds\\n hasNielsenWatermarks\\n hasEspnId3Heartbeats\\n commercialReplacement\\n }\\n packages {\\n name\\n }\\n category {\\n id\\n name\\n }\\n subcategory {\\n id\\n name\\n }\\n sport {\\n id\\n name\\n abbreviation\\n code\\n }\\n league {\\n id\\n name\\n abbreviation\\n code\\n }\\n franchise {\\n id\\n name\\n }\\n program {\\n id\\n code\\n categoryCode\\n isStudio\\n }\\n tracking {\\n nielsenCrossId1\\n nielsenCrossId2\\n comscoreC6\\n trackingId\\n }\\n }\\n }\\n\";\n\nvar VOD = \"\\n query VOD(\\n $countryCode: String!,\\n $deviceType: DeviceType!,\\n $tz: String!,\\n $packageId: String,\\n $id: ID!\\n ) {\\n VOD(\\n countryCode: $countryCode,\\n deviceType: $deviceType,\\n tz: $tz,\\n $packageId: String,\\n id: $id\\n ) {\\n id\\n name\\n origination\\n originalPublishDate\\n embargoDate\\n expirationDate\\n lastModifiedDate\\n image {\\n url\\n }\\n description\\n source {\\n url\\n authorizationType\\n }\\n category {\\n id\\n name\\n }\\n subcategory {\\n id\\n name\\n }\\n sport {\\n id\\n name\\n abbreviation\\n code\\n }\\n league {\\n id\\n name\\n abbreviation\\n code\\n }\\n links {\\n web\\n }\\n tracking {\\n name\\n sportName\\n leagueName\\n }\\n ad {\\n sport\\n bundle\\n }\\n coverageType\\n authTypes\\n duration\\n }\\n }\\n\";\n\nvar NETWORKS = \"\\n query Networks(\\n $countryCode: String!\\n ) {\\n networks(\\n countryCode: $countryCode\\n ) {\\n id\\n name\\n abbreviation\\n shortName\\n adobeResource\\n type\\n isActive\\n isIpAuth\\n }\\n }\\n\";\n// CONCATENATED MODULE: ./app/lib/api/GraphQL.js\n\n\n\n\n\n\n\n\n\n\n\n\nvar GraphQL_ApiEnv = enums[\"b\" /* Api */].Env;\n\n\nvar GraphQL_log = loglevel_default.a.getLogger('GraphQL');\n\nvar GraphQL_config = {\n basePath: '/api'\n};\n\nvar GraphQL_getServiceUrl = function getServiceUrl() {\n var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : GraphQL_ApiEnv.PROD;\n\n return Object(toAbsoluteURL[\"a\" /* default */])(constants[\"f\" /* GRAPHQL_API_CONFIGURATION */][env].serviceUrl);\n};\n\nvar getBaseUrl = function getBaseUrl() {\n var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : GraphQL_ApiEnv.PROD;\n\n return '' + GraphQL_getServiceUrl(env) + GraphQL_config.basePath;\n};\n\nfunction getNetworks(_ref) {\n var lang = _ref.lang,\n apiEnv = _ref.apiEnv,\n variables = _ref.variables;\n\n return makeRequest({\n lang: lang,\n apiEnv: apiEnv,\n query: NETWORKS,\n variables: variables\n });\n}\n\nfunction getAirings(_ref2) {\n var lang = _ref2.lang,\n apiEnv = _ref2.apiEnv,\n variables = _ref2.variables;\n\n return makeRequest({\n lang: lang,\n apiEnv: apiEnv,\n query: AIRINGS,\n variables: variables\n });\n}\n\nfunction getAiring(_ref3) {\n var lang = _ref3.lang,\n apiEnv = _ref3.apiEnv,\n variables = _ref3.variables;\n\n return makeRequest({\n lang: lang,\n apiEnv: apiEnv,\n query: AIRING,\n variables: variables\n });\n}\n\nfunction getVideo(_ref4) {\n var lang = _ref4.lang,\n apiEnv = _ref4.apiEnv,\n variables = _ref4.variables;\n\n return makeRequest({\n lang: lang,\n apiEnv: apiEnv,\n query: VOD,\n variables: variables\n });\n}\n\nfunction makeRequest(_ref5) {\n var lang = _ref5.lang,\n apiEnv = _ref5.apiEnv,\n query = _ref5.query,\n variables = _ref5.variables;\n\n var qs = Object(queryString[\"a\" /* default */])({\n query: query.replace(/\\n/g, '').replace(/^(\\s+)|(\\s+)$/g, '').replace(/(\\s+)/g, ' '),\n variables: JSON.stringify(variables),\n apiKey: constants[\"g\" /* GRAPHQL_API_KEY */]\n }, true);\n var url = '' + getBaseUrl(apiEnv) + qs;\n GraphQL_log.debug('makeRequest: ' + url);\n\n return requestCache[\"a\" /* default */].get(url).set('Accept-Language', lang).use(requestProxy[\"a\" /* default */]).then(function (_ref6) {\n var body = _ref6.body;\n\n if (body.errors) {\n if (body.errors[0]) {\n var err = new Error(body.errors[0].message);\n GraphQL_log.error('makeRequest: ' + url, err.message);\n newRelicEventBus[\"b\" /* newRelicEmitter */].emit(newRelicEventBus[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n }\n return body;\n }\n fallbackCache[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n GraphQL_log.error('makeRequest: ' + url, err.status);\n newRelicEventBus[\"b\" /* newRelicEmitter */].emit(newRelicEventBus[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n // make sure response is not `null`, so we can use default assignment\n return fallbackCache[\"a\" /* default */].get(url).then(function (response) {\n return response || {};\n });\n });\n}\n// CONCATENATED MODULE: ./app/lib/api/index.js\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"a\", function() { return Bootstrap_namespaceObject; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"b\", function() { return ClientAPI_namespaceObject; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"d\", function() { return PageAPI; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"e\", function() { return SearchAPI_namespaceObject; });\n/* unused concated harmony import VideoAPI */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return VideoAPI_namespaceObject; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"f\", function() { return WatchAPI_namespaceObject; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"c\", function() { return GraphQL_namespaceObject; });\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toAbsoluteURL;\nfunction toAbsoluteURL(url) {\n if (url && url.indexOf('//') === 0 && !true) {\n // protocol relative and server side\n return 'http:' + url;\n } else if (url && url.indexOf('//') === 0 && true) {\n return 'https:' + url;\n }\n return url;\n}\n\n/***/ }),\n/* 91 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return favoriteTeamSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return favoriteSportSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n\n\nvar fanSelector = function fanSelector(_ref) {\n var _ref$fan = _ref.fan,\n fan = _ref$fan === undefined ? {} : _ref$fan;\n return fan;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(fanSelector, function (fan) {\n return fan;\n}));\n\nvar favoriteTeamSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(fanSelector, function (_ref2) {\n var preferences = _ref2.preferences;\n\n var uids = void 0;\n if (!preferences || !preferences.metaData) {\n return uids;\n }\n\n uids = preferences.filter(function (_ref3) {\n var metaData = _ref3.metaData;\n return !!metaData.team;\n }).map(function (_ref4) {\n var metaData = _ref4.metaData;\n var sportId = metaData.sportId,\n teamId = metaData.teamId;\n\n var value = '';\n // do not grab `uid` since it includes the league info we never supports\n if (sportId) {\n value = 's:' + sportId;\n if (teamId) {\n value += '~t:' + teamId;\n }\n }\n return value;\n });\n return uids.join(',');\n});\n\nvar favoriteSportSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(fanSelector, function (_ref5) {\n var preferences = _ref5.preferences;\n\n var uids = void 0;\n if (!preferences || !preferences.metaData) {\n return uids;\n }\n\n uids = preferences.filter(function (_ref6) {\n var metaData = _ref6.metaData;\n return !!metaData.sport;\n }).map(function (_ref7) {\n var metaData = _ref7.metaData;\n var sportId = metaData.sportId;\n\n var value = '';\n // do not grab `uid` since it includes the league info we never supports\n if (sportId) {\n value = 's:' + sportId;\n }\n return value;\n });\n return uids.join(',');\n});\n\n/***/ }),\n/* 92 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ADS_CONFIG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return ADS_CONFIG_INVALIDATED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return ADS_INITIALIZED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return ADS_REFRESHED; });\n/* unused harmony export setAdsConfig */\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = initAdsConfig;\n/* unused harmony export invalidateAdsConfig */\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = adsInitialized;\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = adsRefreshed;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selectors_adsSelector__ = __webpack_require__(309);\n\n\n\nvar ADS_CONFIG = 'ADS_CONFIG';\nvar ADS_CONFIG_INVALIDATED = 'ADS_CONFIG_INVALIDATED';\nvar ADS_INITIALIZED = 'ADS_INITIALIZED';\nvar ADS_REFRESHED = 'ADS_REFRESHED';\n\nfunction normalizePageId(id) {\n return id === 'home' ? 'index' : id;\n}\n\nfunction setAdsConfig(id, config) {\n return {\n type: ADS_CONFIG,\n id: id,\n config: config\n };\n}\n\nfunction initAdsConfig() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var tracking = arguments[1];\n var kvps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var query = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n return function (dispatch, getState) {\n var pageId = normalizePageId(id);\n var state = getState();\n var adSite = Object(__WEBPACK_IMPORTED_MODULE_1__selectors_adsSelector__[\"a\" /* adSiteSelector */])(state);\n var adEdition = Object(__WEBPACK_IMPORTED_MODULE_0__selectors_appSelector__[\"a\" /* adEditionSelector */])(state);\n var pgn = normalizePageId((tracking && tracking.context && tracking.context.PageName || '').toLowerCase());\n var adprodtest = query.adprodtest,\n adtar = query.adtar,\n tstAdTar = query.tstAdTar;\n // NOTE: The `adtar`, `adprodtest` and `tstAdTar` query params are used to test Content|Overlay|Banner Ads\n // Example: ?adprodtest=usuaptest01 will return test Ad placeholders\n\n var adtarParam = adprodtest || adtar || null;\n var tstAdTarParam = tstAdTar || null;\n\n kvps.pgtyp = pageId;\n kvps.ed = adEdition;\n if (pgn) {\n kvps.pgn = pgn;\n }\n\n // NOTE: New key as of 05/2019\n // SEE: https://espnjira.disney.com/browse/WEWEB-2308\n if (tstAdTarParam) {\n kvps.tstAdTar = tstAdTarParam;\n } else if (adtarParam) {\n kvps.adtar = adtarParam;\n }\n\n var config = { level: adSite + '/watch/' + pageId, kvps: kvps };\n return dispatch(setAdsConfig(id, config));\n };\n}\n\nfunction invalidateAdsConfig() {\n return {\n type: ADS_CONFIG_INVALIDATED\n };\n}\n\nfunction adsInitialized() {\n return {\n type: ADS_INITIALIZED\n };\n}\n\nfunction adsRefreshed() {\n return {\n type: ADS_REFRESHED\n };\n}\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nvar exports = module.exports = function (doc) {\n if (!doc) doc = {};\n if (typeof doc === 'string') doc = { cookie: doc };\n if (doc.cookie === undefined) doc.cookie = '';\n \n var self = {};\n self.get = function (key) {\n var splat = doc.cookie.split(/;\\s*/);\n for (var i = 0; i < splat.length; i++) {\n var ps = splat[i].split('=');\n var k = unescape(ps[0]);\n if (k === key) return unescape(ps[1]);\n }\n return undefined;\n };\n \n self.set = function (key, value, opts) {\n if (!opts) opts = {};\n var s = escape(key) + '=' + escape(value);\n if (opts.expires) s += '; expires=' + opts.expires;\n if (opts.path) s += '; path=' + escape(opts.path);\n if (opts.domain) s += '; domain=' + escape(opts.domain);\n if (opts.secure) s += '; secure';\n doc.cookie = s;\n return s;\n };\n return self;\n};\n\nif (typeof document !== 'undefined') {\n var cookie = exports(document);\n exports.get = cookie.get;\n exports.set = cookie.set;\n}\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseUniq = __webpack_require__(322);\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ../locale-data/index.js (ignored)\nvar locale_data_ignored_ = __webpack_require__(691);\nvar locale_data_ignored__default = /*#__PURE__*/__webpack_require__.n(locale_data_ignored_);\n\n// EXTERNAL MODULE: ./node_modules/intl-messageformat/index.js\nvar intl_messageformat = __webpack_require__(335);\nvar intl_messageformat_default = /*#__PURE__*/__webpack_require__.n(intl_messageformat);\n\n// EXTERNAL MODULE: ./node_modules/intl-relativeformat/index.js\nvar intl_relativeformat = __webpack_require__(700);\nvar intl_relativeformat_default = /*#__PURE__*/__webpack_require__.n(intl_relativeformat);\n\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(177);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-intl/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\nvar hoist_non_react_statics_cjs = __webpack_require__(707);\nvar hoist_non_react_statics_cjs_default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics_cjs);\n\n// EXTERNAL MODULE: ./node_modules/invariant/browser.js\nvar browser = __webpack_require__(25);\nvar browser_default = /*#__PURE__*/__webpack_require__.n(browser);\n\n// CONCATENATED MODULE: ./node_modules/intl-format-cache/lib/index.js\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nvar RelativeTimeFormat;\n// -- Utilities ----------------------------------------------------------------\nfunction getCacheId(inputs) {\n return JSON.stringify(inputs.map(function (input) {\n return input && typeof input === 'object' ? orderedProps(input) : input;\n }));\n}\nfunction orderedProps(obj) {\n return Object.keys(obj)\n .sort()\n .map(function (k) {\n var _a;\n return (_a = {}, _a[k] = obj[k], _a);\n });\n}\nvar memoizeFormatConstructor = function (FormatConstructor, cache) {\n if (cache === void 0) { cache = {}; }\n return function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var cacheId = getCacheId(args);\n var format = cacheId && cache[cacheId];\n if (!format) {\n format = new ((_a = FormatConstructor).bind.apply(_a, [void 0].concat(args)))();\n if (cacheId) {\n cache[cacheId] = format;\n }\n }\n return format;\n };\n};\n/* harmony default export */ var lib = (memoizeFormatConstructor);\n//# sourceMappingURL=index.js.map\n// CONCATENATED MODULE: ./node_modules/react-intl/lib/index.es.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return addLocaleData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return intlShape; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return injectIntl; });\n/* unused harmony export defineMessages */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return index_es_IntlProvider; });\n/* unused harmony export FormattedDate */\n/* unused harmony export FormattedTime */\n/* unused harmony export FormattedRelative */\n/* unused harmony export FormattedNumber */\n/* unused harmony export FormattedPlural */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return index_es_FormattedMessage; });\n/* unused harmony export FormattedHTMLMessage */\n/*\n * Copyright 2019, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n\n\n\n\n\n\n\n\n\n// GENERATED FILE\nvar defaultLocaleData = { \"locale\": \"en\", \"pluralRuleFunction\": function pluralRuleFunction(n, ord) {\n var s = String(n).split(\".\"),\n v0 = !s[1],\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2);if (ord) return n10 == 1 && n100 != 11 ? \"one\" : n10 == 2 && n100 != 12 ? \"two\" : n10 == 3 && n100 != 13 ? \"few\" : \"other\";return n == 1 && v0 ? \"one\" : \"other\";\n }, \"fields\": { \"year\": { \"displayName\": \"year\", \"relative\": { \"0\": \"this year\", \"1\": \"next year\", \"-1\": \"last year\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} year\", \"other\": \"in {0} years\" }, \"past\": { \"one\": \"{0} year ago\", \"other\": \"{0} years ago\" } } }, \"year-short\": { \"displayName\": \"yr.\", \"relative\": { \"0\": \"this yr.\", \"1\": \"next yr.\", \"-1\": \"last yr.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} yr.\", \"other\": \"in {0} yr.\" }, \"past\": { \"one\": \"{0} yr. ago\", \"other\": \"{0} yr. ago\" } } }, \"month\": { \"displayName\": \"month\", \"relative\": { \"0\": \"this month\", \"1\": \"next month\", \"-1\": \"last month\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} month\", \"other\": \"in {0} months\" }, \"past\": { \"one\": \"{0} month ago\", \"other\": \"{0} months ago\" } } }, \"month-short\": { \"displayName\": \"mo.\", \"relative\": { \"0\": \"this mo.\", \"1\": \"next mo.\", \"-1\": \"last mo.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} mo.\", \"other\": \"in {0} mo.\" }, \"past\": { \"one\": \"{0} mo. ago\", \"other\": \"{0} mo. ago\" } } }, \"day\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"day-short\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"hour\": { \"displayName\": \"hour\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hour\", \"other\": \"in {0} hours\" }, \"past\": { \"one\": \"{0} hour ago\", \"other\": \"{0} hours ago\" } } }, \"hour-short\": { \"displayName\": \"hr.\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hr.\", \"other\": \"in {0} hr.\" }, \"past\": { \"one\": \"{0} hr. ago\", \"other\": \"{0} hr. ago\" } } }, \"minute\": { \"displayName\": \"minute\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} minute\", \"other\": \"in {0} minutes\" }, \"past\": { \"one\": \"{0} minute ago\", \"other\": \"{0} minutes ago\" } } }, \"minute-short\": { \"displayName\": \"min.\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} min.\", \"other\": \"in {0} min.\" }, \"past\": { \"one\": \"{0} min. ago\", \"other\": \"{0} min. ago\" } } }, \"second\": { \"displayName\": \"second\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} second\", \"other\": \"in {0} seconds\" }, \"past\": { \"one\": \"{0} second ago\", \"other\": \"{0} seconds ago\" } } }, \"second-short\": { \"displayName\": \"sec.\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} sec.\", \"other\": \"in {0} sec.\" }, \"past\": { \"one\": \"{0} sec. ago\", \"other\": \"{0} sec. ago\" } } } } };\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction addLocaleData() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var locales = Array.isArray(data) ? data : [data];\n\n locales.forEach(function (localeData) {\n if (localeData && localeData.locale) {\n intl_messageformat_default.a.__addLocaleData(localeData);\n intl_relativeformat_default.a.__addLocaleData(localeData);\n }\n });\n}\n\nfunction hasLocaleData(locale) {\n var localeParts = (locale || '').split('-');\n\n while (localeParts.length > 0) {\n if (hasIMFAndIRFLocaleData(localeParts.join('-'))) {\n return true;\n }\n\n localeParts.pop();\n }\n\n return false;\n}\n\nfunction hasIMFAndIRFLocaleData(locale) {\n var normalizedLocale = locale && locale.toLowerCase();\n\n return !!(intl_messageformat_default.a.__localeData__[normalizedLocale] && intl_relativeformat_default.a.__localeData__[normalizedLocale]);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\nvar asyncGenerator = function () {\n function AwaitValue(value) {\n this.value = value;\n }\n\n function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n\n if (value instanceof AwaitValue) {\n Promise.resolve(value.value).then(function (arg) {\n resume(\"next\", arg);\n }, function (arg) {\n resume(\"throw\", arg);\n });\n } else {\n settle(result.done ? \"return\" : \"normal\", result.value);\n }\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== \"function\") {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n\n AsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n };\n\n AsyncGenerator.prototype.throw = function (arg) {\n return this._invoke(\"throw\", arg);\n };\n\n AsyncGenerator.prototype.return = function (arg) {\n return this._invoke(\"return\", arg);\n };\n\n return {\n wrap: function (fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n },\n await: function (value) {\n return new AwaitValue(value);\n }\n };\n}();\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (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\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar bool = prop_types_default.a.bool;\nvar number = prop_types_default.a.number;\nvar string = prop_types_default.a.string;\nvar func = prop_types_default.a.func;\nvar object = prop_types_default.a.object;\nvar oneOf = prop_types_default.a.oneOf;\nvar shape = prop_types_default.a.shape;\nvar any = prop_types_default.a.any;\nvar oneOfType = prop_types_default.a.oneOfType;\n\nvar localeMatcher = oneOf(['best fit', 'lookup']);\nvar narrowShortLong = oneOf(['narrow', 'short', 'long']);\nvar numeric2digit = oneOf(['numeric', '2-digit']);\nvar funcReq = func.isRequired;\n\nvar intlConfigPropTypes = {\n locale: string,\n timeZone: string,\n formats: object,\n messages: object,\n textComponent: any,\n\n defaultLocale: string,\n defaultFormats: object,\n\n onError: func\n};\n\nvar intlFormatPropTypes = {\n formatDate: funcReq,\n formatTime: funcReq,\n formatRelative: funcReq,\n formatNumber: funcReq,\n formatPlural: funcReq,\n formatMessage: funcReq,\n formatHTMLMessage: funcReq\n};\n\nvar intlShape = shape(_extends({}, intlConfigPropTypes, intlFormatPropTypes, {\n formatters: object,\n now: funcReq\n}));\n\nvar messageDescriptorPropTypes = {\n id: string.isRequired,\n description: oneOfType([string, object]),\n defaultMessage: string\n};\n\nvar dateTimeFormatPropTypes = {\n localeMatcher: localeMatcher,\n formatMatcher: oneOf(['basic', 'best fit']),\n\n timeZone: string,\n hour12: bool,\n\n weekday: narrowShortLong,\n era: narrowShortLong,\n year: numeric2digit,\n month: oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: numeric2digit,\n hour: numeric2digit,\n minute: numeric2digit,\n second: numeric2digit,\n timeZoneName: oneOf(['short', 'long'])\n};\n\nvar numberFormatPropTypes = {\n localeMatcher: localeMatcher,\n\n style: oneOf(['decimal', 'currency', 'percent']),\n currency: string,\n currencyDisplay: oneOf(['symbol', 'code', 'name']),\n useGrouping: bool,\n\n minimumIntegerDigits: number,\n minimumFractionDigits: number,\n maximumFractionDigits: number,\n minimumSignificantDigits: number,\n maximumSignificantDigits: number\n};\n\nvar relativeFormatPropTypes = {\n style: oneOf(['best fit', 'numeric']),\n units: oneOf(['second', 'minute', 'hour', 'day', 'month', 'year', 'second-short', 'minute-short', 'hour-short', 'day-short', 'month-short', 'year-short'])\n};\n\nvar pluralFormatPropTypes = {\n style: oneOf(['cardinal', 'ordinal'])\n};\n\n/*\nHTML escaping and shallow-equals implementations are the same as React's\n(on purpose.) Therefore, it has the following Copyright and Licensing:\n\nCopyright 2013-2014, Facebook, Inc.\nAll rights reserved.\n\nThis source code is licensed under the BSD-style license found in the LICENSE\nfile in the root directory of React's source tree.\n*/\n\nvar intlConfigPropNames = Object.keys(intlConfigPropTypes);\n\nvar ESCAPED_CHARS = {\n '&': '&',\n '>': '>',\n '<': '<',\n '\"': '"',\n \"'\": '''\n};\n\nvar UNSAFE_CHARS_REGEX = /[&><\"']/g;\n\nfunction index_es_escape(str) {\n return ('' + str).replace(UNSAFE_CHARS_REGEX, function (match) {\n return ESCAPED_CHARS[match];\n });\n}\n\nfunction filterProps(props, whitelist) {\n var defaults$$1 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n return whitelist.reduce(function (filtered, name) {\n if (props.hasOwnProperty(name)) {\n filtered[name] = props[name];\n } else if (defaults$$1.hasOwnProperty(name)) {\n filtered[name] = defaults$$1[name];\n }\n\n return filtered;\n }, {});\n}\n\nfunction invariantIntlContext() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n intl = _ref.intl;\n\n browser_default()(intl, '[React Intl] Could not find required `intl` object. ' + ' needs to exist in the component ancestry.');\n}\n\nfunction shallowEquals(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n for (var i = 0; i < keysA.length; i++) {\n if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction shouldIntlComponentUpdate(_ref2, nextProps, nextState) {\n var props = _ref2.props,\n state = _ref2.state,\n _ref2$context = _ref2.context,\n context = _ref2$context === undefined ? {} : _ref2$context;\n var nextContext = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _context$intl = context.intl,\n intl = _context$intl === undefined ? {} : _context$intl;\n var _nextContext$intl = nextContext.intl,\n nextIntl = _nextContext$intl === undefined ? {} : _nextContext$intl;\n\n\n return !shallowEquals(nextProps, props) || !shallowEquals(nextState, state) || !(nextIntl === intl || shallowEquals(filterProps(nextIntl, intlConfigPropNames), filterProps(intl, intlConfigPropNames)));\n}\n\nfunction createError(message, exception) {\n var eMsg = exception ? '\\n' + exception : '';\n return '[React Intl] ' + message + eMsg;\n}\n\nfunction defaultErrorHandler(error) {\n if (false) {\n console.error(error);\n }\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// Inspired by react-redux's `connect()` HOC factory function implementation:\n// https://github.com/rackt/react-redux\n\nfunction getDisplayName(Component$$1) {\n return Component$$1.displayName || Component$$1.name || 'Component';\n}\n\nfunction injectIntl(WrappedComponent) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$intlPropName = options.intlPropName,\n intlPropName = _options$intlPropName === undefined ? 'intl' : _options$intlPropName,\n _options$withRef = options.withRef,\n withRef = _options$withRef === undefined ? false : _options$withRef;\n\n var InjectIntl = function (_Component) {\n inherits(InjectIntl, _Component);\n\n function InjectIntl(props, context) {\n classCallCheck(this, InjectIntl);\n\n var _this = possibleConstructorReturn(this, (InjectIntl.__proto__ || Object.getPrototypeOf(InjectIntl)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(InjectIntl, [{\n key: 'getWrappedInstance',\n value: function getWrappedInstance() {\n browser_default()(withRef, '[React Intl] To access the wrapped instance, ' + 'the `{withRef: true}` option must be set when calling: ' + '`injectIntl()`');\n\n return this._wrappedInstance;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return react_default.a.createElement(WrappedComponent, _extends({}, this.props, defineProperty({}, intlPropName, this.context.intl), {\n ref: withRef ? /* istanbul ignore next */function (ref) {\n return _this2._wrappedInstance = ref;\n } : null\n }));\n }\n }]);\n return InjectIntl;\n }(react[\"Component\"]);\n\n InjectIntl.displayName = 'InjectIntl(' + getDisplayName(WrappedComponent) + ')';\n InjectIntl.contextTypes = {\n intl: intlShape\n };\n InjectIntl.WrappedComponent = WrappedComponent;\n\n\n return hoist_non_react_statics_cjs_default()(InjectIntl, WrappedComponent);\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction defineMessages(messageDescriptors) {\n // This simply returns what's passed-in because it's meant to be a hook for\n // babel-plugin-react-intl.\n return messageDescriptors;\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// This is a \"hack\" until a proper `intl-pluralformat` package is created.\n\nfunction resolveLocale(locales) {\n // IntlMessageFormat#_resolveLocale() does not depend on `this`.\n return intl_messageformat_default.a.prototype._resolveLocale(locales);\n}\n\nfunction findPluralFunction(locale) {\n // IntlMessageFormat#_findPluralFunction() does not depend on `this`.\n return intl_messageformat_default.a.prototype._findPluralRuleFunction(locale);\n}\n\nvar IntlPluralFormat = function IntlPluralFormat(locales) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, IntlPluralFormat);\n\n var useOrdinal = options.style === 'ordinal';\n var pluralFn = findPluralFunction(resolveLocale(locales));\n\n this.format = function (value) {\n return pluralFn(value, useOrdinal);\n };\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar DATE_TIME_FORMAT_OPTIONS = Object.keys(dateTimeFormatPropTypes);\nvar NUMBER_FORMAT_OPTIONS = Object.keys(numberFormatPropTypes);\nvar RELATIVE_FORMAT_OPTIONS = Object.keys(relativeFormatPropTypes);\nvar PLURAL_FORMAT_OPTIONS = Object.keys(pluralFormatPropTypes);\n\nvar RELATIVE_FORMAT_THRESHOLDS = {\n second: 60, // seconds to minute\n minute: 60, // minutes to hour\n hour: 24, // hours to day\n day: 30, // days to month\n month: 12 };\n\nfunction updateRelativeFormatThresholds(newThresholds) {\n var thresholds = intl_relativeformat_default.a.thresholds;\n thresholds.second = newThresholds.second;\n thresholds.minute = newThresholds.minute;\n thresholds.hour = newThresholds.hour;\n thresholds.day = newThresholds.day;\n thresholds.month = newThresholds.month;\n thresholds['second-short'] = newThresholds['second-short'];\n thresholds['minute-short'] = newThresholds['minute-short'];\n thresholds['hour-short'] = newThresholds['hour-short'];\n thresholds['day-short'] = newThresholds['day-short'];\n thresholds['month-short'] = newThresholds['month-short'];\n}\n\nfunction getNamedFormat(formats, type, name, onError) {\n var format = formats && formats[type] && formats[type][name];\n if (format) {\n return format;\n }\n\n onError(createError('No ' + type + ' format named: ' + name));\n}\n\nfunction index_es_formatDate(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats,\n timeZone = config.timeZone;\n var format = options.format;\n\n\n var onError = config.onError || defaultErrorHandler;\n var date = new Date(value);\n var defaults$$1 = _extends({}, timeZone && { timeZone: timeZone }, format && getNamedFormat(formats, 'date', format, onError));\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n try {\n return state.getDateTimeFormat(locale, filteredOptions).format(date);\n } catch (e) {\n onError(createError('Error formatting date.', e));\n }\n\n return String(date);\n}\n\nfunction index_es_formatTime(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats,\n timeZone = config.timeZone;\n var format = options.format;\n\n\n var onError = config.onError || defaultErrorHandler;\n var date = new Date(value);\n var defaults$$1 = _extends({}, timeZone && { timeZone: timeZone }, format && getNamedFormat(formats, 'time', format, onError));\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n if (!filteredOptions.hour && !filteredOptions.minute && !filteredOptions.second) {\n // Add default formatting options if hour, minute, or second isn't defined.\n filteredOptions = _extends({}, filteredOptions, { hour: 'numeric', minute: 'numeric' });\n }\n\n try {\n return state.getDateTimeFormat(locale, filteredOptions).format(date);\n } catch (e) {\n onError(createError('Error formatting time.', e));\n }\n\n return String(date);\n}\n\nfunction index_es_formatRelative(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats;\n var format = options.format;\n\n\n var onError = config.onError || defaultErrorHandler;\n var date = new Date(value);\n var now = new Date(options.now);\n var defaults$$1 = format && getNamedFormat(formats, 'relative', format, onError);\n var filteredOptions = filterProps(options, RELATIVE_FORMAT_OPTIONS, defaults$$1);\n\n // Capture the current threshold values, then temporarily override them with\n // specific values just for this render.\n var oldThresholds = _extends({}, intl_relativeformat_default.a.thresholds);\n updateRelativeFormatThresholds(RELATIVE_FORMAT_THRESHOLDS);\n\n try {\n return state.getRelativeFormat(locale, filteredOptions).format(date, {\n now: isFinite(now) ? now : state.now()\n });\n } catch (e) {\n onError(createError('Error formatting relative time.', e));\n } finally {\n updateRelativeFormatThresholds(oldThresholds);\n }\n\n return String(date);\n}\n\nfunction index_es_formatNumber(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats;\n var format = options.format;\n\n\n var onError = config.onError || defaultErrorHandler;\n var defaults$$1 = format && getNamedFormat(formats, 'number', format, onError);\n var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults$$1);\n\n try {\n return state.getNumberFormat(locale, filteredOptions).format(value);\n } catch (e) {\n onError(createError('Error formatting number.', e));\n }\n\n return String(value);\n}\n\nfunction index_es_formatPlural(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale;\n\n\n var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n var onError = config.onError || defaultErrorHandler;\n\n try {\n return state.getPluralFormat(locale, filteredOptions).format(value);\n } catch (e) {\n onError(createError('Error formatting plural.', e));\n }\n\n return 'other';\n}\n\nfunction formatMessage(config, state) {\n var messageDescriptor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var values = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats,\n messages = config.messages,\n defaultLocale = config.defaultLocale,\n defaultFormats = config.defaultFormats;\n var id = messageDescriptor.id,\n defaultMessage = messageDescriptor.defaultMessage;\n\n // Produce a better error if the user calls `intl.formatMessage(element)`\n\n if (false) {\n invariant(!isValidElement(config), '[React Intl] Don\\'t pass React elements to ' + 'formatMessage(), pass `.props`.');\n }\n\n // `id` is a required field of a Message Descriptor.\n browser_default()(id, '[React Intl] An `id` must be provided to format a message.');\n\n var message = messages && messages[id];\n var hasValues = Object.keys(values).length > 0;\n\n // Avoid expensive message formatting for simple messages without values. In\n // development messages will always be formatted in case of missing values.\n if (!hasValues && \"production\" === 'production') {\n return message || defaultMessage || id;\n }\n\n var formattedMessage = void 0;\n var onError = config.onError || defaultErrorHandler;\n\n if (message) {\n try {\n var formatter = state.getMessageFormat(message, locale, formats);\n\n formattedMessage = formatter.format(values);\n } catch (e) {\n onError(createError('Error formatting message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : ''), e));\n }\n } else {\n // This prevents warnings from littering the console in development\n // when no `messages` are passed into the for the\n // default locale, and a default message is in the source.\n if (!defaultMessage || locale && locale.toLowerCase() !== defaultLocale.toLowerCase()) {\n onError(createError('Missing message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : '')));\n }\n }\n\n if (!formattedMessage && defaultMessage) {\n try {\n var _formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats);\n\n formattedMessage = _formatter.format(values);\n } catch (e) {\n onError(createError('Error formatting the default message for: \"' + id + '\"', e));\n }\n }\n\n if (!formattedMessage) {\n onError(createError('Cannot format message: \"' + id + '\", ' + ('using message ' + (message || defaultMessage ? 'source' : 'id') + ' as fallback.')));\n }\n\n return formattedMessage || message || defaultMessage || id;\n}\n\nfunction index_es_formatHTMLMessage(config, state, messageDescriptor) {\n var rawValues = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n // Process all the values before they are used when formatting the ICU\n // Message string. Since the formatted message might be injected via\n // `innerHTML`, all String-based values need to be HTML-escaped.\n var escapedValues = Object.keys(rawValues).reduce(function (escaped, name) {\n var value = rawValues[name];\n escaped[name] = typeof value === 'string' ? index_es_escape(value) : value;\n return escaped;\n }, {});\n\n return formatMessage(config, state, messageDescriptor, escapedValues);\n}\n\n\n\nvar index_es_format = Object.freeze({\n\tformatDate: index_es_formatDate,\n\tformatTime: index_es_formatTime,\n\tformatRelative: index_es_formatRelative,\n\tformatNumber: index_es_formatNumber,\n\tformatPlural: index_es_formatPlural,\n\tformatMessage: formatMessage,\n\tformatHTMLMessage: index_es_formatHTMLMessage\n});\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar intlConfigPropNames$1 = Object.keys(intlConfigPropTypes);\nvar intlFormatPropNames = Object.keys(intlFormatPropTypes);\n\n// These are not a static property on the `IntlProvider` class so the intl\n// config values can be inherited from an ancestor.\nvar defaultProps = {\n formats: {},\n messages: {},\n timeZone: null,\n textComponent: 'span',\n\n defaultLocale: 'en',\n defaultFormats: {},\n\n onError: defaultErrorHandler\n};\n\nvar index_es_IntlProvider = function (_Component) {\n inherits(IntlProvider, _Component);\n\n function IntlProvider(props) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, IntlProvider);\n\n var _this = possibleConstructorReturn(this, (IntlProvider.__proto__ || Object.getPrototypeOf(IntlProvider)).call(this, props, context));\n\n browser_default()(typeof Intl !== 'undefined', '[React Intl] The `Intl` APIs must be available in the runtime, ' + 'and do not appear to be built-in. An `Intl` polyfill should be loaded.\\n' + 'See: http://formatjs.io/guides/runtime-environments/');\n\n var intlContext = context.intl;\n\n // Used to stabilize time when performing an initial rendering so that\n // all relative times use the same reference \"now\" time.\n\n var initialNow = void 0;\n if (isFinite(props.initialNow)) {\n initialNow = Number(props.initialNow);\n } else {\n // When an `initialNow` isn't provided via `props`, look to see an\n // exists in the ancestry and call its `now()`\n // function to propagate its value for \"now\".\n initialNow = intlContext ? intlContext.now() : Date.now();\n }\n\n // Creating `Intl*` formatters is expensive. If there's a parent\n // ``, then its formatters will be used. Otherwise, this\n // memoize the `Intl*` constructors and cache them for the lifecycle of\n // this IntlProvider instance.\n\n var _ref = intlContext || {},\n _ref$formatters = _ref.formatters,\n formatters = _ref$formatters === undefined ? {\n getDateTimeFormat: lib(Intl.DateTimeFormat),\n getNumberFormat: lib(Intl.NumberFormat),\n getMessageFormat: lib(intl_messageformat_default.a),\n getRelativeFormat: lib(intl_relativeformat_default.a),\n getPluralFormat: lib(IntlPluralFormat)\n } : _ref$formatters;\n\n _this.state = _extends({}, formatters, {\n\n // Wrapper to provide stable \"now\" time for initial render.\n now: function now() {\n return _this._didDisplay ? Date.now() : initialNow;\n }\n });\n return _this;\n }\n\n createClass(IntlProvider, [{\n key: 'getConfig',\n value: function getConfig() {\n var intlContext = this.context.intl;\n\n // Build a whitelisted config object from `props`, defaults, and\n // `context.intl`, if an exists in the ancestry.\n\n var config = filterProps(this.props, intlConfigPropNames$1, intlContext);\n\n // Apply default props. This must be applied last after the props have\n // been resolved and inherited from any in the ancestry.\n // This matches how React resolves `defaultProps`.\n for (var propName in defaultProps) {\n if (config[propName] === undefined) {\n config[propName] = defaultProps[propName];\n }\n }\n\n if (!hasLocaleData(config.locale)) {\n var _config = config,\n locale = _config.locale,\n defaultLocale = _config.defaultLocale,\n defaultFormats = _config.defaultFormats,\n onError = _config.onError;\n\n\n onError(createError('Missing locale data for locale: \"' + locale + '\". ' + ('Using default locale: \"' + defaultLocale + '\" as fallback.')));\n\n // Since there's no registered locale data for `locale`, this will\n // fallback to the `defaultLocale` to make sure things can render.\n // The `messages` are overridden to the `defaultProps` empty object\n // to maintain referential equality across re-renders. It's assumed\n // each contains a `defaultMessage` prop.\n config = _extends({}, config, {\n locale: defaultLocale,\n formats: defaultFormats,\n messages: defaultProps.messages\n });\n }\n\n return config;\n }\n }, {\n key: 'getBoundFormatFns',\n value: function getBoundFormatFns(config, state) {\n return intlFormatPropNames.reduce(function (boundFormatFns, name) {\n boundFormatFns[name] = index_es_format[name].bind(null, config, state);\n return boundFormatFns;\n }, {});\n }\n }, {\n key: 'getChildContext',\n value: function getChildContext() {\n var config = this.getConfig();\n\n // Bind intl factories and current config to the format functions.\n var boundFormatFns = this.getBoundFormatFns(config, this.state);\n\n var _state = this.state,\n now = _state.now,\n formatters = objectWithoutProperties(_state, ['now']);\n\n\n return {\n intl: _extends({}, config, boundFormatFns, {\n formatters: formatters,\n now: now\n })\n };\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._didDisplay = true;\n }\n }, {\n key: 'render',\n value: function render() {\n return react[\"Children\"].only(this.props.children);\n }\n }]);\n return IntlProvider;\n}(react[\"Component\"]);\n\nindex_es_IntlProvider.displayName = 'IntlProvider';\nindex_es_IntlProvider.contextTypes = {\n intl: intlShape\n};\nindex_es_IntlProvider.childContextTypes = {\n intl: intlShape.isRequired\n};\n false ? index_es_IntlProvider.propTypes = _extends({}, intlConfigPropTypes, {\n children: PropTypes.element.isRequired,\n initialNow: PropTypes.any\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar index_es_FormattedDate = function (_Component) {\n inherits(FormattedDate, _Component);\n\n function FormattedDate(props, context) {\n classCallCheck(this, FormattedDate);\n\n var _this = possibleConstructorReturn(this, (FormattedDate.__proto__ || Object.getPrototypeOf(FormattedDate)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedDate, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatDate = _context$intl.formatDate,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n children = _props.children;\n\n\n var formattedDate = formatDate(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedDate);\n }\n\n return react_default.a.createElement(\n Text,\n null,\n formattedDate\n );\n }\n }]);\n return FormattedDate;\n}(react[\"Component\"]);\n\nindex_es_FormattedDate.displayName = 'FormattedDate';\nindex_es_FormattedDate.contextTypes = {\n intl: intlShape\n};\n false ? index_es_FormattedDate.propTypes = _extends({}, dateTimeFormatPropTypes, {\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar index_es_FormattedTime = function (_Component) {\n inherits(FormattedTime, _Component);\n\n function FormattedTime(props, context) {\n classCallCheck(this, FormattedTime);\n\n var _this = possibleConstructorReturn(this, (FormattedTime.__proto__ || Object.getPrototypeOf(FormattedTime)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedTime, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatTime = _context$intl.formatTime,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n children = _props.children;\n\n\n var formattedTime = formatTime(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedTime);\n }\n\n return react_default.a.createElement(\n Text,\n null,\n formattedTime\n );\n }\n }]);\n return FormattedTime;\n}(react[\"Component\"]);\n\nindex_es_FormattedTime.displayName = 'FormattedTime';\nindex_es_FormattedTime.contextTypes = {\n intl: intlShape\n};\n false ? index_es_FormattedTime.propTypes = _extends({}, dateTimeFormatPropTypes, {\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar SECOND = 1000;\nvar MINUTE = 1000 * 60;\nvar HOUR = 1000 * 60 * 60;\nvar DAY = 1000 * 60 * 60 * 24;\n\n// The maximum timer delay value is a 32-bit signed integer.\n// See: https://mdn.io/setTimeout\nvar MAX_TIMER_DELAY = 2147483647;\n\nfunction selectUnits(delta) {\n var absDelta = Math.abs(delta);\n\n if (absDelta < MINUTE) {\n return 'second';\n }\n\n if (absDelta < HOUR) {\n return 'minute';\n }\n\n if (absDelta < DAY) {\n return 'hour';\n }\n\n // The maximum scheduled delay will be measured in days since the maximum\n // timer delay is less than the number of milliseconds in 25 days.\n return 'day';\n}\n\nfunction getUnitDelay(units) {\n switch (units) {\n case 'second':\n return SECOND;\n case 'minute':\n return MINUTE;\n case 'hour':\n return HOUR;\n case 'day':\n return DAY;\n default:\n return MAX_TIMER_DELAY;\n }\n}\n\nfunction isSameDate(a, b) {\n if (a === b) {\n return true;\n }\n\n var aTime = new Date(a).getTime();\n var bTime = new Date(b).getTime();\n\n return isFinite(aTime) && isFinite(bTime) && aTime === bTime;\n}\n\nvar index_es_FormattedRelative = function (_Component) {\n inherits(FormattedRelative, _Component);\n\n function FormattedRelative(props, context) {\n classCallCheck(this, FormattedRelative);\n\n var _this = possibleConstructorReturn(this, (FormattedRelative.__proto__ || Object.getPrototypeOf(FormattedRelative)).call(this, props, context));\n\n invariantIntlContext(context);\n\n var now = isFinite(props.initialNow) ? Number(props.initialNow) : context.intl.now();\n\n // `now` is stored as state so that `render()` remains a function of\n // props + state, instead of accessing `Date.now()` inside `render()`.\n _this.state = { now: now };\n return _this;\n }\n\n createClass(FormattedRelative, [{\n key: 'scheduleNextUpdate',\n value: function scheduleNextUpdate(props, state) {\n var _this2 = this;\n\n // Cancel and pending update because we're scheduling a new update.\n clearTimeout(this._timer);\n\n var value = props.value,\n units = props.units,\n updateInterval = props.updateInterval;\n\n var time = new Date(value).getTime();\n\n // If the `updateInterval` is falsy, including `0` or we don't have a\n // valid date, then auto updates have been turned off, so we bail and\n // skip scheduling an update.\n if (!updateInterval || !isFinite(time)) {\n return;\n }\n\n var delta = time - state.now;\n var unitDelay = getUnitDelay(units || selectUnits(delta));\n var unitRemainder = Math.abs(delta % unitDelay);\n\n // We want the largest possible timer delay which will still display\n // accurate information while reducing unnecessary re-renders. The delay\n // should be until the next \"interesting\" moment, like a tick from\n // \"1 minute ago\" to \"2 minutes ago\" when the delta is 120,000ms.\n var delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);\n\n this._timer = setTimeout(function () {\n _this2.setState({ now: _this2.context.intl.now() });\n }, delay);\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.scheduleNextUpdate(this.props, this.state);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(_ref) {\n var nextValue = _ref.value;\n\n // When the `props.value` date changes, `state.now` needs to be updated,\n // and the next update can be rescheduled.\n if (!isSameDate(nextValue, this.props.value)) {\n this.setState({ now: this.context.intl.now() });\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps, nextState) {\n this.scheduleNextUpdate(nextProps, nextState);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n clearTimeout(this._timer);\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatRelative = _context$intl.formatRelative,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n children = _props.children;\n\n\n var formattedRelative = formatRelative(value, _extends({}, this.props, this.state));\n\n if (typeof children === 'function') {\n return children(formattedRelative);\n }\n\n return react_default.a.createElement(\n Text,\n null,\n formattedRelative\n );\n }\n }]);\n return FormattedRelative;\n}(react[\"Component\"]);\n\nindex_es_FormattedRelative.displayName = 'FormattedRelative';\nindex_es_FormattedRelative.contextTypes = {\n intl: intlShape\n};\nindex_es_FormattedRelative.defaultProps = {\n updateInterval: 1000 * 10\n};\n false ? index_es_FormattedRelative.propTypes = _extends({}, relativeFormatPropTypes, {\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n updateInterval: PropTypes.number,\n initialNow: PropTypes.any,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar index_es_FormattedNumber = function (_Component) {\n inherits(FormattedNumber, _Component);\n\n function FormattedNumber(props, context) {\n classCallCheck(this, FormattedNumber);\n\n var _this = possibleConstructorReturn(this, (FormattedNumber.__proto__ || Object.getPrototypeOf(FormattedNumber)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedNumber, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatNumber = _context$intl.formatNumber,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n children = _props.children;\n\n\n var formattedNumber = formatNumber(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedNumber);\n }\n\n return react_default.a.createElement(\n Text,\n null,\n formattedNumber\n );\n }\n }]);\n return FormattedNumber;\n}(react[\"Component\"]);\n\nindex_es_FormattedNumber.displayName = 'FormattedNumber';\nindex_es_FormattedNumber.contextTypes = {\n intl: intlShape\n};\n false ? index_es_FormattedNumber.propTypes = _extends({}, numberFormatPropTypes, {\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar index_es_FormattedPlural = function (_Component) {\n inherits(FormattedPlural, _Component);\n\n function FormattedPlural(props, context) {\n classCallCheck(this, FormattedPlural);\n\n var _this = possibleConstructorReturn(this, (FormattedPlural.__proto__ || Object.getPrototypeOf(FormattedPlural)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedPlural, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatPlural = _context$intl.formatPlural,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n other = _props.other,\n children = _props.children;\n\n\n var pluralCategory = formatPlural(value, this.props);\n var formattedPlural = this.props[pluralCategory] || other;\n\n if (typeof children === 'function') {\n return children(formattedPlural);\n }\n\n return react_default.a.createElement(\n Text,\n null,\n formattedPlural\n );\n }\n }]);\n return FormattedPlural;\n}(react[\"Component\"]);\n\nindex_es_FormattedPlural.displayName = 'FormattedPlural';\nindex_es_FormattedPlural.contextTypes = {\n intl: intlShape\n};\nindex_es_FormattedPlural.defaultProps = {\n style: 'cardinal'\n};\n false ? index_es_FormattedPlural.propTypes = _extends({}, pluralFormatPropTypes, {\n value: PropTypes.any.isRequired,\n\n other: PropTypes.node.isRequired,\n zero: PropTypes.node,\n one: PropTypes.node,\n two: PropTypes.node,\n few: PropTypes.node,\n many: PropTypes.node,\n\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar index_es_defaultFormatMessage = function defaultFormatMessage(descriptor, values) {\n if (false) {\n console.error('[React Intl] Could not find required `intl` object. needs to exist in the component ancestry. Using default message as fallback.');\n }\n return formatMessage({}, { getMessageFormat: lib(intl_messageformat_default.a) }, descriptor, values);\n};\n\nvar index_es_FormattedMessage = function (_Component) {\n inherits(FormattedMessage, _Component);\n\n function FormattedMessage(props, context) {\n classCallCheck(this, FormattedMessage);\n\n var _this = possibleConstructorReturn(this, (FormattedMessage.__proto__ || Object.getPrototypeOf(FormattedMessage)).call(this, props, context));\n\n if (!props.defaultMessage) {\n invariantIntlContext(context);\n }\n return _this;\n }\n\n createClass(FormattedMessage, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n var values = this.props.values;\n var nextValues = nextProps.values;\n\n\n if (!shallowEquals(nextValues, values)) {\n return true;\n }\n\n // Since `values` has already been checked, we know they're not\n // different, so the current `values` are carried over so the shallow\n // equals comparison on the other props isn't affected by the `values`.\n var nextPropsToCheck = _extends({}, nextProps, {\n values: values\n });\n\n for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n next[_key - 1] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _ref = this.context.intl || {},\n _ref$formatMessage = _ref.formatMessage,\n formatMessage$$1 = _ref$formatMessage === undefined ? index_es_defaultFormatMessage : _ref$formatMessage,\n _ref$textComponent = _ref.textComponent,\n Text = _ref$textComponent === undefined ? 'span' : _ref$textComponent;\n\n var _props = this.props,\n id = _props.id,\n description = _props.description,\n defaultMessage = _props.defaultMessage,\n values = _props.values,\n _props$tagName = _props.tagName,\n Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n children = _props.children;\n\n\n var tokenDelimiter = void 0;\n var tokenizedValues = void 0;\n var elements = void 0;\n\n var hasValues = values && Object.keys(values).length > 0;\n if (hasValues) {\n // Creates a token with a random UID that should not be guessable or\n // conflict with other parts of the `message` string.\n var uid = Math.floor(Math.random() * 0x10000000000).toString(16);\n\n var generateToken = function () {\n var counter = 0;\n return function () {\n return 'ELEMENT-' + uid + '-' + (counter += 1);\n };\n }();\n\n // Splitting with a delimiter to support IE8. When using a regex\n // with a capture group IE8 does not include the capture group in\n // the resulting array.\n tokenDelimiter = '@__' + uid + '__@';\n tokenizedValues = {};\n elements = {};\n\n // Iterates over the `props` to keep track of any React Element\n // values so they can be represented by the `token` as a placeholder\n // when the `message` is formatted. This allows the formatted\n // message to then be broken-up into parts with references to the\n // React Elements inserted back in.\n Object.keys(values).forEach(function (name) {\n var value = values[name];\n\n if (Object(react[\"isValidElement\"])(value)) {\n var token = generateToken();\n tokenizedValues[name] = tokenDelimiter + token + tokenDelimiter;\n elements[token] = value;\n } else {\n tokenizedValues[name] = value;\n }\n });\n }\n\n var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n var formattedMessage = formatMessage$$1(descriptor, tokenizedValues || values);\n\n var nodes = void 0;\n\n var hasElements = elements && Object.keys(elements).length > 0;\n if (hasElements) {\n // Split the message into parts so the React Element values captured\n // above can be inserted back into the rendered message. This\n // approach allows messages to render with React Elements while\n // keeping React's virtual diffing working properly.\n nodes = formattedMessage.split(tokenDelimiter).filter(function (part) {\n return !!part;\n }).map(function (part) {\n return elements[part] || part;\n });\n } else {\n nodes = [formattedMessage];\n }\n\n if (typeof children === 'function') {\n return children.apply(undefined, toConsumableArray(nodes));\n }\n\n // Needs to use `createElement()` instead of JSX, otherwise React will\n // warn about a missing `key` prop with rich-text message formatting.\n return react[\"createElement\"].apply(undefined, [Component$$1, null].concat(toConsumableArray(nodes)));\n }\n }]);\n return FormattedMessage;\n}(react[\"Component\"]);\n\nindex_es_FormattedMessage.displayName = 'FormattedMessage';\nindex_es_FormattedMessage.contextTypes = {\n intl: intlShape\n};\nindex_es_FormattedMessage.defaultProps = {\n values: {}\n};\n false ? index_es_FormattedMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n values: PropTypes.object,\n tagName: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar index_es_FormattedHTMLMessage = function (_Component) {\n inherits(FormattedHTMLMessage, _Component);\n\n function FormattedHTMLMessage(props, context) {\n classCallCheck(this, FormattedHTMLMessage);\n\n var _this = possibleConstructorReturn(this, (FormattedHTMLMessage.__proto__ || Object.getPrototypeOf(FormattedHTMLMessage)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedHTMLMessage, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n var values = this.props.values;\n var nextValues = nextProps.values;\n\n\n if (!shallowEquals(nextValues, values)) {\n return true;\n }\n\n // Since `values` has already been checked, we know they're not\n // different, so the current `values` are carried over so the shallow\n // equals comparison on the other props isn't affected by the `values`.\n var nextPropsToCheck = _extends({}, nextProps, {\n values: values\n });\n\n for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n next[_key - 1] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatHTMLMessage = _context$intl.formatHTMLMessage,\n Text = _context$intl.textComponent;\n var _props = this.props,\n id = _props.id,\n description = _props.description,\n defaultMessage = _props.defaultMessage,\n rawValues = _props.values,\n _props$tagName = _props.tagName,\n Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n children = _props.children;\n\n\n var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n var formattedHTMLMessage = formatHTMLMessage(descriptor, rawValues);\n\n if (typeof children === 'function') {\n return children(formattedHTMLMessage);\n }\n\n // Since the message presumably has HTML in it, we need to set\n // `innerHTML` in order for it to be rendered and not escaped by React.\n // To be safe, all string prop values were escaped when formatting the\n // message. It is assumed that the message is not UGC, and came from the\n // developer making it more like a template.\n //\n // Note: There's a perf impact of using this component since there's no\n // way for React to do its virtual DOM diffing.\n var html = { __html: formattedHTMLMessage };\n return react_default.a.createElement(Component$$1, { dangerouslySetInnerHTML: html });\n }\n }]);\n return FormattedHTMLMessage;\n}(react[\"Component\"]);\n\nindex_es_FormattedHTMLMessage.displayName = 'FormattedHTMLMessage';\nindex_es_FormattedHTMLMessage.contextTypes = {\n intl: intlShape\n};\nindex_es_FormattedHTMLMessage.defaultProps = {\n values: {}\n};\n false ? index_es_FormattedHTMLMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n values: PropTypes.object,\n tagName: PropTypes.string,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(defaultLocaleData);\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(locale_data_ignored__default.a);\n\n\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return START_GET_SCHEDULE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return COMPLETE_GET_SCHEDULE; });\n/* unused harmony export START_GET_CATEGORIES */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return COMPLETE_GET_CATEGORIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return SET_STATUS_FILTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return SET_SPORTS_FILTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return SET_NETWORK_FILTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return SET_DATE_FILTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return SET_REPLAY_DATE_FILTER; });\n/* unused harmony export startGetSchedule */\n/* unused harmony export completeGetSchedule */\n/* harmony export (immutable) */ __webpack_exports__[\"l\"] = setStatusFilter;\n/* unused harmony export getQueryFromParams */\n/* harmony export (immutable) */ __webpack_exports__[\"j\"] = fetchSchedule;\n/* harmony export (immutable) */ __webpack_exports__[\"k\"] = fetchSyndicatedSchedule;\n/* unused harmony export startGetCategories */\n/* unused harmony export completeGetCategories */\n/* harmony export (immutable) */ __webpack_exports__[\"i\"] = fetchCategories;\n/* unused harmony export setSportsFilter */\n/* unused harmony export setNetworkFilter */\n/* unused harmony export setDateFilter */\n/* unused harmony export setReplayDateFilter */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lib_api__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_format_apiDateFormatter__ = __webpack_require__(106);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__selectors_apiParamsSelector__ = __webpack_require__(115);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__actions_apiAction__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__StatusFilter__ = __webpack_require__(97);\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\n\n\n\n\n\n\n\n\nvar START_GET_SCHEDULE = 'START_GET_SCHEDULE';\nvar COMPLETE_GET_SCHEDULE = 'COMPLETE_GET_SCHEDULE';\nvar START_GET_CATEGORIES = 'START_GET_CATEGORIES';\nvar COMPLETE_GET_CATEGORIES = 'COMPLETE_GET_CATEGORIES';\nvar SET_STATUS_FILTER = 'SET_STATUS_FILTER';\nvar SET_SPORTS_FILTER = 'SET_SPORTS_FILTER';\nvar SET_NETWORK_FILTER = 'SET_NETWORK_FILTER';\nvar SET_DATE_FILTER = 'SET_DATE_FILTER';\nvar SET_REPLAY_DATE_FILTER = 'SET_REPLAY_DATE_FILTER';\n\nfunction startGetSchedule() {\n return {\n type: START_GET_SCHEDULE,\n startTime: Date.now()\n };\n}\n\nfunction completeGetSchedule(listings) {\n return {\n type: COMPLETE_GET_SCHEDULE,\n completeTime: Date.now(),\n listings: listings\n };\n}\n\nfunction setStatusFilter(status) {\n return {\n type: SET_STATUS_FILTER,\n status: status\n };\n}\n\nfunction getQueryFromParams(_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === undefined ? __WEBPACK_IMPORTED_MODULE_6__StatusFilter__[\"a\" /* default */].Options.LIVE : _ref$type,\n categoryId = _ref.categoryId,\n channel = _ref.channel,\n startDate = _ref.startDate,\n endDate = _ref.endDate;\n\n var categories = categoryId && [categoryId.toString()];\n\n var packageMap = {\n espn_plus: 'espn_plus',\n espn_plus_mlb: 'espn_plus_mlb',\n espn_plus_nhl: 'espn_plus_nhl'\n };\n\n var packages = null;\n var networks = null;\n\n // ESPN+, MLB.TV, and NHL.TV are treated as packages, and not networks\n if (channel && packageMap[channel.toLowerCase()]) {\n packages = [channel.toLowerCase()];\n } else {\n networks = channel && [channel.toLowerCase()];\n }\n\n var dates = [startDate];\n\n // end date is only used for replays, and should always reflect current time of today\n var end = new Date();\n\n if (endDate) {\n dates.push(end);\n }\n if (type === __WEBPACK_IMPORTED_MODULE_6__StatusFilter__[\"a\" /* default */].Options.REPLAY && !startDate) {\n // set default date range\n var start = new Date();\n dates = [Object(__WEBPACK_IMPORTED_MODULE_2__lib_format_apiDateFormatter__[\"a\" /* default */])(start)];\n }\n\n return {\n type: type.toUpperCase(),\n networks: networks,\n packages: packages,\n categories: categories,\n dates: dates\n };\n}\n\nfunction fetchSchedule(params) {\n return function (dispatch, getState) {\n dispatch(startGetSchedule());\n var state = getState();\n var isDomestic = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_appSelector__[\"s\" /* isDomesticSelector */])(state);\n\n var _getQueryFromParams = getQueryFromParams(params),\n typeArg = _getQueryFromParams.type,\n categories = _getQueryFromParams.categories,\n networks = _getQueryFromParams.networks,\n packages = _getQueryFromParams.packages,\n dates = _getQueryFromParams.dates;\n\n var day = void 0;\n var start = void 0;\n var end = void 0;\n if (dates.length === 1) {\n day = __WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__[\"a\" /* default */].paramToCalendarDatesString(dates[0]);\n } else if (dates.length === 2) {\n // API only allows the date to be down to minute precision:(\n start = dates && dates[0] && __WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__[\"a\" /* default */].getISOStringWithMinPrecision(__WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__[\"a\" /* default */].paramToDate(dates[0]));\n end = dates && dates[1] && __WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__[\"a\" /* default */].getISOStringWithMinPrecision(dates[1]);\n }\n var limit = 500;\n\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_apiAction__[\"k\" /* graphql */])('getAirings', {\n type: typeArg,\n categories: categories,\n networks: networks,\n packages: packages,\n start: start,\n end: end,\n day: day,\n limit: limit\n })).then(function (_ref2) {\n var _ref2$data = _ref2.data,\n data = _ref2$data === undefined ? {} : _ref2$data;\n var airings = data.airings;\n\n airings = airings || []; // response could return `null` for `airings` node when there is an error\n var listings = airings.map(function (_ref3) {\n var id = _ref3.id,\n name = _ref3.name,\n type = _ref3.type,\n startDateTime = _ref3.startDateTime,\n shortDate = _ref3.shortDate,\n mediumTime = _ref3.mediumTime,\n network = _ref3.network,\n category = _ref3.category,\n subcategory = _ref3.subcategory,\n feedName = _ref3.feedName,\n backgroundImageHref = _ref3.purchaseImage.url,\n _ref3$image = _ref3.image;\n _ref3$image = _ref3$image === undefined ? {} : _ref3$image;\n var imageUrl = _ref3$image.url,\n packageArray = _ref3.packages;\n\n var mapped = {\n id: id,\n name: name,\n feedName: feedName,\n type: type.toLowerCase(),\n startTime: startDateTime,\n startDate: shortDate,\n mediumTime: mediumTime,\n backgroundImageHref: backgroundImageHref,\n broadcasts: network ? [{\n abbreviation: isDomestic ? network.abbreviation.toLowerCase() : network.adobeResource,\n adobeResource: network.adobeResource,\n name: network.name,\n code: network.id.toUpperCase(),\n type: network.type,\n shortName: network.shortName,\n ipAuth: network.isIpAuth,\n packages: packageArray ? packageArray.map(function (_ref4) {\n var nameArg = _ref4.name;\n return nameArg;\n }) : []\n }] : [{}],\n thumbnails: {\n large: {\n width: 640,\n height: 360,\n href: imageUrl\n }\n },\n categories: [category],\n subcategories: subcategory ? [subcategory] : []\n };\n return mapped;\n });\n\n dispatch(completeGetSchedule(listings));\n\n return listings;\n });\n };\n}\nfunction fetchSyndicatedSchedule(params) {\n return function (dispatch, getState) {\n dispatch(startGetSchedule());\n var state = getState();\n var isDomestic = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_appSelector__[\"s\" /* isDomesticSelector */])(state);\n\n var _getQueryFromParams2 = getQueryFromParams(params),\n typeArg = _getQueryFromParams2.type,\n categories = _getQueryFromParams2.categories,\n networks = _getQueryFromParams2.networks,\n packages = _getQueryFromParams2.packages;\n\n var dates = params.dates || Object(__WEBPACK_IMPORTED_MODULE_2__lib_format_apiDateFormatter__[\"a\" /* default */])(new Date());\n\n var day = void 0;\n var start = void 0;\n var end = void 0;\n\n if (params.dates && params.dates.match(/-/)) {\n // API only allows the date to be down to minute precision:(\n var _params$dates$split = params.dates.split('-');\n\n var _params$dates$split2 = _slicedToArray(_params$dates$split, 2);\n\n start = _params$dates$split2[0];\n end = _params$dates$split2[1];\n start = __WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__[\"a\" /* default */].getISOStringWithMinPrecision(__WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__[\"a\" /* default */].paramToDate(start));\n end = __WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__[\"a\" /* default */].getISOStringWithMinPrecision(__WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__[\"a\" /* default */].paramToDate(end));\n } else {\n day = __WEBPACK_IMPORTED_MODULE_1__lib_format_dateFormat__[\"a\" /* default */].paramToCalendarDatesString(dates);\n }\n var limit = 500;\n\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_apiAction__[\"k\" /* graphql */])('getAirings', {\n type: typeArg,\n categories: categories,\n networks: networks,\n packages: packages,\n start: start,\n end: end,\n day: day,\n limit: limit\n })).then(function (_ref5) {\n var _ref5$data = _ref5.data,\n data = _ref5$data === undefined ? {} : _ref5$data;\n var airings = data.airings;\n\n airings = airings || []; // response could return `null` for `airings` node when there is an error\n // TODO: update schedule page to reflect the data structure from GraphQL API so that this mapping is not necessary\n var listings = airings.map(function (_ref6) {\n var id = _ref6.id,\n name = _ref6.name,\n type = _ref6.type,\n startDateTime = _ref6.startDateTime,\n shortDate = _ref6.shortDate,\n mediumTime = _ref6.mediumTime,\n network = _ref6.network,\n category = _ref6.category,\n subcategory = _ref6.subcategory,\n feedName = _ref6.feedName,\n _ref6$purchaseImage = _ref6.purchaseImage;\n _ref6$purchaseImage = _ref6$purchaseImage === undefined ? {} : _ref6$purchaseImage;\n var backgroundImageHref = _ref6$purchaseImage.url,\n _ref6$image = _ref6.image;\n _ref6$image = _ref6$image === undefined ? {} : _ref6$image;\n var imageUrl = _ref6$image.url,\n packageArray = _ref6.packages;\n\n var mapped = {\n id: id,\n name: name,\n feedName: feedName,\n type: type.toLowerCase(),\n startTime: startDateTime,\n startDate: shortDate,\n mediumTime: mediumTime,\n backgroundImageHref: backgroundImageHref,\n broadcasts: network ? [{\n abbreviation: isDomestic ? network.abbreviation.toLowerCase() : network.adobeResource,\n adobeResource: network.adobeResource,\n name: network.name,\n code: network.id.toUpperCase(),\n type: network.type,\n shortName: network.shortName,\n ipAuth: network.isIpAuth,\n packages: packageArray ? packageArray.map(function (_ref7) {\n var nameArg = _ref7.name;\n return nameArg;\n }) : []\n }] : [{}],\n thumbnails: {\n large: {\n width: 640,\n height: 360,\n href: imageUrl\n }\n },\n categories: [category],\n subcategories: subcategory ? [subcategory] : []\n };\n\n return mapped;\n });\n\n dispatch(completeGetSchedule(listings));\n\n return listings;\n });\n };\n}\n\nfunction startGetCategories() {\n return {\n type: START_GET_CATEGORIES,\n startTime: Date.now()\n };\n}\n\nfunction completeGetCategories(categories) {\n return {\n type: COMPLETE_GET_CATEGORIES,\n completeTime: Date.now(),\n categories: categories\n };\n}\n\nfunction fetchCategories() {\n return function (dispatch, getState) {\n var state = getState();\n var apiEnv = Object(__WEBPACK_IMPORTED_MODULE_3__selectors_appSelector__[\"c\" /* apiEnvSelector */])(state);\n var params = Object(__WEBPACK_IMPORTED_MODULE_4__selectors_apiParamsSelector__[\"a\" /* collectionParamsSelector */])(state);\n dispatch(startGetCategories);\n return __WEBPACK_IMPORTED_MODULE_0__lib_api__[\"d\" /* PageAPI */].getCategories(apiEnv, params).then(function (categories) {\n dispatch(completeGetCategories(categories));\n return categories;\n });\n };\n}\n\nfunction setSportsFilter(option) {\n return {\n type: SET_SPORTS_FILTER,\n value: option.value,\n filterType: option.type,\n label: option.label\n };\n}\n\nfunction setNetworkFilter(option) {\n return {\n type: SET_NETWORK_FILTER,\n value: option.value,\n label: option.label\n };\n}\n\nfunction setDateFilter(date) {\n return {\n type: SET_DATE_FILTER,\n date: date\n };\n}\n\nfunction setReplayDateFilter(startDate, endDate) {\n return {\n type: SET_REPLAY_DATE_FILTER,\n startDate: startDate,\n endDate: endDate\n };\n}\n\n/***/ }),\n/* 97 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar StatusFilter = function StatusFilter(_ref) {\n var handleClick = _ref.handleClick,\n selected = _ref.selected,\n labels = _ref.labels;\n\n var onClick = function onClick(event) {\n event.preventDefault();\n var status = event.target.getAttribute('data-status');\n handleClick(status);\n };\n\n var options = Object.keys(StatusFilter.Options).map(function (key) {\n var option = StatusFilter.Options[key];\n return _jsx('a', {\n className: 'button-filter-alt med ' + (selected === option ? 'active' : ''),\n 'data-status': option,\n onClick: onClick\n }, option, labels[option]);\n });\n\n return _jsx('div', {\n className: 'form-group button-group tabbed',\n 'data-behavior': 'tabs'\n }, void 0, options);\n};\n\nStatusFilter.Options = {\n LIVE: 'live',\n UPCOMING: 'upcoming',\n REPLAY: 'replay'\n};\n\nStatusFilter.defaultProps = {\n selected: StatusFilter.Options.LIVE\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (StatusFilter);\n\n/***/ }),\n/* 98 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/cookie-cutter/index.js\nvar cookie_cutter = __webpack_require__(93);\nvar cookie_cutter_default = /*#__PURE__*/__webpack_require__.n(cookie_cutter);\n\n// EXTERNAL MODULE: ./app/common/actions/appActions.js\nvar appActions = __webpack_require__(19);\n\n// EXTERNAL MODULE: ./app/common/actions/apiAction.js\nvar apiAction = __webpack_require__(55);\n\n// EXTERNAL MODULE: ./app/common/selectors/authenticationSelectors.js\nvar authenticationSelectors = __webpack_require__(10);\n\n// EXTERNAL MODULE: ./node_modules/reselect/lib/index.js\nvar lib = __webpack_require__(9);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// EXTERNAL MODULE: ./app/common/selectors/fanSelector.js\nvar fanSelector = __webpack_require__(91);\n\n// CONCATENATED MODULE: ./app/common/selectors/fanAutoStartSelector.js\n\n\n\n/* harmony default export */ var fanAutoStartSelector = (Object(lib[\"createSelector\"])(fanSelector[\"a\" /* default */], function (_ref) {\n var _ref$profile = _ref.profile;\n _ref$profile = _ref$profile === undefined ? {} : _ref$profile;\n var _ref$profile$settings = _ref$profile.settings,\n settings = _ref$profile$settings === undefined ? {} : _ref$profile$settings;\n var _settings$videoAutoSt = settings.videoAutoStart;\n _settings$videoAutoSt = _settings$videoAutoSt === undefined ? {} : _settings$videoAutoSt;\n var _settings$videoAutoSt2 = _settings$videoAutoSt.value,\n value = _settings$videoAutoSt2 === undefined ? null : _settings$videoAutoSt2;\n\n return value;\n}));\n// EXTERNAL MODULE: ./app/common/selectors/routingSelector.js\nvar routingSelector = __webpack_require__(23);\n\n// EXTERNAL MODULE: ./app/common/selectors/pageSelector.js\nvar pageSelector = __webpack_require__(13);\n\n// EXTERNAL MODULE: ./app/common/selectors/selectedContentSelector.js\nvar selectedContentSelector = __webpack_require__(46);\n\n// EXTERNAL MODULE: ./app/common/selectors/analyticsSelectors.js\nvar analyticsSelectors = __webpack_require__(54);\n\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./app/lib/auth/locationBlackedOutForContent.js\n\n\n/**\n * @param {object} location\n * @param {array} blackouts - destrctured from content {object}\n * Destructures a blackout array from content and checks for blackouts\n * against user location\n*/\nfunction locationBlackedOutForContent() {\n var location = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _ref = arguments[1];\n var _ref$blackouts = _ref.blackouts,\n blackouts = _ref$blackouts === undefined ? [] : _ref$blackouts;\n\n return blackouts.filter(function (blackout) {\n switch (blackout.type) {\n case enums[\"g\" /* BlackoutTypes */].DMA:\n return (blackout.detail || []).indexOf(location.dma) !== -1;\n break;\n case enums[\"g\" /* BlackoutTypes */].DEVICE:\n // #TODO: implement when live content is support on mobile\n return false;\n break;\n default:\n return false;\n }\n }).length > 0;\n};\n// CONCATENATED MODULE: ./app/webapp/player/actions/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AUTHORIZATION_ERROR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return AUTOPLAY_UPDATED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return AUTOEMBED_TIMER_COMPLETE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return CLEAR_PLAYING_STREAM; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return STREAM_PLAYING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return PLAYER_EMBEDDING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return PLAYER_EMBEDDED; });\n/* unused harmony export PLAYER_INITIALIZED */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return PLAYER_READY; });\n/* unused harmony export PROGRAM_CHANGE */\n/* unused harmony export RECEIVER_AVAILABLE */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return REGISTER_PLAYER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return RESET_PLAYER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return FEED_SELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return FEED_RESET; });\n/* unused harmony export createRegisterPlayerAction */\n/* harmony export (immutable) */ __webpack_exports__[\"u\"] = createPlayerEmbeddingAction;\n/* harmony export (immutable) */ __webpack_exports__[\"t\"] = createPlayerEmbeddedAction;\n/* unused harmony export createPlayerInitializedAction */\n/* harmony export (immutable) */ __webpack_exports__[\"x\"] = createResetPlayerAction;\n/* harmony export (immutable) */ __webpack_exports__[\"n\"] = createAutoEmbedTimerCompleteAction;\n/* harmony export (immutable) */ __webpack_exports__[\"o\"] = createAutoplayUpdatedAction;\n/* harmony export (immutable) */ __webpack_exports__[\"y\"] = createStreamPlayingAction;\n/* harmony export (immutable) */ __webpack_exports__[\"p\"] = createClearPlayingStreamAction;\n/* harmony export (immutable) */ __webpack_exports__[\"s\"] = createFeedSelectAction;\n/* harmony export (immutable) */ __webpack_exports__[\"r\"] = createFeedResetAction;\n/* harmony export (immutable) */ __webpack_exports__[\"v\"] = createPlayerReadyAction;\n/* unused harmony export createReceiverAvailableAction */\n/* harmony export (immutable) */ __webpack_exports__[\"m\"] = createAuthorizationErrorAction;\n/* harmony export (immutable) */ __webpack_exports__[\"w\"] = createProgramChangeAction;\n/* harmony export (immutable) */ __webpack_exports__[\"q\"] = createContinuousPlayAction;\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AUTHORIZATION_ERROR = 'AUTHORIZATION_ERROR';\nvar AUTOPLAY_UPDATED = 'AUTOPLAY_UPDATED';\nvar AUTOEMBED_TIMER_COMPLETE = 'AUTOEMBED_TIMER_COMPLETE';\nvar CLEAR_PLAYING_STREAM = 'CLEAR_PLAYING_STREAM';\nvar STREAM_PLAYING = 'STREAM_PLAYING';\nvar PLAYER_EMBEDDING = 'PLAYER_EMBEDDING';\nvar PLAYER_EMBEDDED = 'PLAYER_EMBEDDED';\nvar PLAYER_INITIALIZED = 'PLAYER_INITIALIZED';\nvar PLAYER_READY = 'PLAYER_READY';\nvar PROGRAM_CHANGE = 'PROGRAM_CHANGE';\nvar RECEIVER_AVAILABLE = 'RECEIVER_AVAILABLE';\nvar REGISTER_PLAYER = 'REGISTER_PLAYER';\nvar RESET_PLAYER = 'RESET_PLAYER';\nvar FEED_SELECT = 'FEED_SELECT';\nvar FEED_RESET = 'FEED_RESET';\n\nfunction createRegisterPlayerAction() {\n return {\n type: REGISTER_PLAYER,\n ready: false\n };\n}\n\nfunction createPlayerEmbeddingAction() {\n var embedding = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n return {\n type: PLAYER_EMBEDDING,\n embedding: embedding\n };\n}\n\nfunction createPlayerEmbeddedAction() {\n var embedded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n return {\n type: PLAYER_EMBEDDED,\n embedded: embedded\n };\n}\n\nfunction createPlayerInitializedAction() {\n var initialized = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n return {\n type: PLAYER_INITIALIZED,\n initialized: initialized\n };\n}\n\nfunction createResetPlayerAction() {\n return {\n type: RESET_PLAYER\n };\n}\n\nfunction createAutoEmbedTimerCompleteAction() {\n return {\n type: AUTOEMBED_TIMER_COMPLETE\n };\n}\n\nfunction createAutoplayUpdatedAction() {\n var autoplay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n return {\n type: AUTOPLAY_UPDATED,\n autoplay: autoplay\n };\n}\n\nfunction createStreamPlayingAction(_ref) {\n var stream = _ref.stream,\n _ref$error = _ref.error,\n error = _ref$error === undefined ? false : _ref$error;\n\n return {\n type: STREAM_PLAYING,\n stream: stream,\n error: error\n };\n}\n\nfunction createClearPlayingStreamAction() {\n return {\n type: CLEAR_PLAYING_STREAM\n };\n}\n\nfunction createFeedSelectAction(streamId) {\n return function (dispatch, getState) {\n var content = Object(selectedContentSelector[\"a\" /* default */])(getState());\n dispatch({\n type: FEED_SELECT,\n content: content,\n streamId: streamId\n });\n };\n}\n\nfunction createFeedResetAction() {\n return {\n type: FEED_RESET\n };\n}\n\nfunction createPlayerReadyAction(playerPlacement) {\n var content = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return function (dispatch, getState) {\n var state = getState();\n var _state$app$isMobile = state.app.isMobile,\n isMobile = _state$app$isMobile === undefined ? false : _state$app$isMobile;\n\n var _pageSelector = Object(pageSelector[\"c\" /* default */])(state),\n pageId = _pageSelector.id;\n\n var _routingSelector = Object(routingSelector[\"a\" /* default */])(state),\n _routingSelector$loca = _routingSelector.locationBeforeTransitions;\n\n _routingSelector$loca = _routingSelector$loca === undefined ? {} : _routingSelector$loca;\n var _routingSelector$loca2 = _routingSelector$loca.query;\n _routingSelector$loca2 = _routingSelector$loca2 === undefined ? {} : _routingSelector$loca2;\n var id = _routingSelector$loca2.id,\n autoStart = _routingSelector$loca2.autoStart;\n\n var roadblock = Object(appSelector[\"D\" /* roadblockSelector */])(state);\n var fanAutoStart = fanAutoStartSelector(state);\n\n var autoEmbed = true;\n // always autoEmbed if an id is passed, or user is on player page\n if (!id && pageId !== 'player') {\n var videoAutoStartCookie = cookie_cutter_default.a.get('VAS');\n if (fanAutoStart !== null) {\n autoEmbed = fanAutoStart === '1' || fanAutoStart === 1;\n } else if (videoAutoStartCookie) {\n // check for cookie autoplay (1=on, anything else=off)\n autoEmbed = videoAutoStartCookie === '1' || videoAutoStartCookie === 1;\n }\n }\n\n // don't autoembed users who are blacked out for content\n if (playerPlacement === enums[\"B\" /* PlayerPlacement */].HERO) {\n var userLocation = Object(authenticationSelectors[\"s\" /* userLocationSelector */])(state);\n autoEmbed = !locationBlackedOutForContent(userLocation, content);\n }\n\n // don't autoEmbed if it's authenticated content on mobile (only respect this if roadblock is enabled)\n if (roadblock) {\n var _content$authTypes = content.authTypes,\n authTypes = _content$authTypes === undefined ? [] : _content$authTypes;\n\n if (isMobile && authTypes.length > 0) {\n autoEmbed = false;\n }\n }\n\n if (autoStart === 'false') {\n autoEmbed = false;\n }\n\n var action = {\n type: PLAYER_READY,\n autoEmbed: autoEmbed,\n ready: true\n };\n\n dispatch(action);\n return action;\n };\n}\n\nfunction createReceiverAvailableAction() {\n return {\n type: RECEIVER_AVAILABLE\n };\n}\n\nfunction createAuthorizationErrorAction(message) {\n return {\n type: AUTHORIZATION_ERROR,\n message: message\n };\n}\n\n// TODO: We should be able to check if content is already available in bucket and not get from network\nfunction createProgramChangeAction(query, streamId) {\n var _this = this;\n\n return function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch, getState) {\n var resp, trackingData, selectedContent, content, stream;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n dispatch({ type: PROGRAM_CHANGE, query: query });\n _context.next = 3;\n return dispatch(Object(apiAction[\"e\" /* getEvent */])({ query: query }));\n\n case 3:\n resp = _context.sent;\n trackingData = void 0;\n\n if (!(resp && resp.page && resp.page.contents)) {\n _context.next = 16;\n break;\n }\n\n // preserve custom \"placement\" property by merging the next content rather than replacing\n selectedContent = Object(selectedContentSelector[\"a\" /* default */])(getState());\n content = _extends({}, selectedContent, resp.page.contents);\n\n content.reEmbed = false; // don't initiate reEmbed for program changes or playlists\n stream = content.streams && content.streams.filter(function (_ref3) {\n var id = _ref3.id;\n return id === streamId;\n })[0] || content.streams[0];\n\n dispatch(Object(appActions[\"z\" /* contentSelect */])(content));\n _context.next = 13;\n return dispatch(Object(appActions[\"O\" /* streamSelect */])(stream));\n\n case 13:\n dispatch(createStreamPlayingAction({ stream: stream }));\n trackingData = Object(analyticsSelectors[\"e\" /* nielsenTrackingSelector */])(getState());\n return _context.abrupt('return', trackingData);\n\n case 16:\n return _context.abrupt('return', trackingData);\n\n case 17:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this);\n }));\n\n return function (_x6, _x7) {\n return _ref2.apply(this, arguments);\n };\n }();\n}\n\n// TODO: We should be able to check if content is already available in bucket and not get from network\nfunction createContinuousPlayAction(streamId) {\n return function (dispatch, getState) {\n return dispatch(Object(apiAction[\"j\" /* getVideo */])({ pathParams: streamId })).then(function (resp) {\n if (resp && resp.page && resp.page.contents) {\n // preserve custom \"placement\" property by merging the next content rather than replacing\n var selectedContent = Object(selectedContentSelector[\"a\" /* default */])(getState());\n var content = _extends({}, selectedContent, resp.page.contents);\n content.reEmbed = false; // don't initiate reEmbed for program changes or playlists\n var stream = content.streams && content.streams.filter(function (_ref4) {\n var id = _ref4.id;\n return id === streamId;\n })[0] || content.streams[0];\n dispatch(Object(appActions[\"z\" /* contentSelect */])(content));\n dispatch(Object(appActions[\"O\" /* streamSelect */])(stream));\n dispatch(createStreamPlayingAction({ stream: stream }));\n }\n });\n };\n}\n\n/***/ }),\n/* 99 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export insertScheduleModuleIntoBuckets */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_helmet__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_intersection__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_intersection___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_lodash_intersection__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__PropTypes__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__alias_ScheduleModuleContainer__ = __webpack_require__(337);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__Bucket__ = __webpack_require__(348);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__selectors_pageSelector__ = __webpack_require__(13);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\nfunction insertScheduleModuleIntoBuckets(buckets, pageType) {\n var clonedBuckets = buckets.slice();\n // on the home page, find the live bucket, and insert the schedule module right after it\n if (pageType === __WEBPACK_IMPORTED_MODULE_6__enums__[\"y\" /* PageType */].HOME) {\n var insertIndex = -1;\n buckets.forEach(function (bucket, index) {\n var _bucket$tags = bucket.tags,\n tags = _bucket$tags === undefined ? [] : _bucket$tags;\n\n if (tags.indexOf(__WEBPACK_IMPORTED_MODULE_6__enums__[\"l\" /* BucketStatus */].WEB_LIVE) !== -1) {\n insertIndex = index;\n }\n });\n // if we found the live buckets, insert right after it, otherwise, push it on the end\n if (insertIndex !== -1) {\n clonedBuckets.splice(insertIndex + 1, 0, { __schedule_module_placeholder__: true });\n return clonedBuckets;\n }\n }\n\n clonedBuckets.push({ __schedule_module_placeholder__: true });\n return clonedBuckets;\n}\n\n// these are the buckets we don't want to render below the hero\nvar heroExcludeTags = [__WEBPACK_IMPORTED_MODULE_6__enums__[\"i\" /* BucketLayout */].HERO, __WEBPACK_IMPORTED_MODULE_6__enums__[\"i\" /* BucketLayout */].SCHEDULE_MODULE];\n\nvar BucketListContainer = function (_Component) {\n _inherits(BucketListContainer, _Component);\n\n function BucketListContainer(props) {\n _classCallCheck(this, BucketListContainer);\n\n var _this = _possibleConstructorReturn(this, (BucketListContainer.__proto__ || Object.getPrototypeOf(BucketListContainer)).call(this, props));\n\n _this.showPromoOnHero = _this.showPromoOnHero.bind(_this);\n return _this;\n }\n\n _createClass(BucketListContainer, [{\n key: 'showPromoOnHero',\n value: function showPromoOnHero() {\n var _props = this.props,\n id = _props.page.id,\n showPromo = _props.showPromo;\n\n return showPromo && id === 'espnplus';\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n buckets = _props2.buckets,\n heroContentId = _props2.heroContentId,\n renderHeroInBucket = _props2.renderHeroInBucket,\n layoutOverride = _props2.layoutOverride,\n pageType = _props2.pageType,\n origHideHeaderLink = _props2.hideHeaderLink,\n bamSubReady = _props2.bamSubReady,\n page = _props2.page;\n\n\n var curatedBuckets = insertScheduleModuleIntoBuckets(buckets.filter(function (_ref) {\n var type = _ref.type;\n return type !== 'hero';\n }), pageType);\n var showPromo = this.showPromoOnHero();\n var id = page.id;\n\n\n return _jsx('div', {\n className: 'bucket-list'\n }, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_2_react_helmet___default.a, {\n style: [{\n cssText: '\\n .dtc-watch__row--showAll .dtc-watch__item{\\n display:block !important;\\n }\\n '\n }]\n }), curatedBuckets.map(function (bucket, index) {\n // inserts the schedule module into a mobile only container depending on what page we're on\n if (bucket.__schedule_module_placeholder__ === true) {\n return _jsx('div', {\n className: 'mobile-tablet-only'\n }, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_5__alias_ScheduleModuleContainer__[\"a\" /* default */], {\n contentLimit: 3\n }));\n }\n\n // some pages such as the /watch/shows page do not have a hero\n var bucketContents = bucket.contents.filter(function (content) {\n return renderHeroInBucket || id === 'espnplus' && (bamSubReady && !showPromo && heroContentId !== content.id || bamSubReady && showPromo && content.id || !bamSubReady && content.id) || id !== 'espnplus' && heroContentId !== content.id;\n });\n\n var contentLength = bucketContents.length; // same as displayCount\n if (!renderHeroInBucket && !showPromo && (contentLength === 1 && bucketContents[0].id === heroContentId || bucket.tags && __WEBPACK_IMPORTED_MODULE_3_lodash_intersection___default()(heroExcludeTags, bucket.tags).length > 0)) {\n return null;\n }\n\n var hideHeaderLink = origHideHeaderLink && index === 0;\n\n // make the link relative by chopping off the host\n\n var _ref2 = bucket || {},\n _ref2$links = _ref2.links;\n\n _ref2$links = _ref2$links === undefined ? {} : _ref2$links;\n var _ref2$links$web = _ref2$links.web,\n web = _ref2$links$web === undefined ? '' : _ref2$links$web,\n metadata = _ref2.metadata;\n\n var link = web.replace(/https?:\\/\\/[^\\/]*(?:\\/watch)?/, '');\n var bucketId = metadata && metadata.bucketId || bucket.id;\n var groupId = metadata && metadata.groupId;\n // Avoids duplicate key assignment error\n var uniqueKey = '' + bucket.id + index;\n\n return _jsx(__WEBPACK_IMPORTED_MODULE_7__Bucket__[\"a\" /* default */], {\n bucketId: bucketId,\n hideHeaderLink: hideHeaderLink,\n contents: bucketContents,\n groupId: groupId,\n iconHref: bucket.iconHref,\n layout: bucket.layout,\n layoutOverride: layoutOverride,\n link: link,\n metadata: bucket.metadata,\n name: bucket.name,\n pageType: pageType,\n tags: bucket.tags,\n type: bucket.type,\n tier: index + 1\n }, uniqueKey);\n }));\n }\n }]);\n\n return BucketListContainer;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\nBucketListContainer.defaultProps = {\n buckets: [],\n renderHeroInBucket: false\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n buckets: state.page && state.page.buckets || [],\n heroContentId: state.page.hero && state.page.hero.id,\n page: Object(__WEBPACK_IMPORTED_MODULE_9__selectors_pageSelector__[\"c\" /* default */])(state),\n bamSubReady: Object(__WEBPACK_IMPORTED_MODULE_8__selectors_authenticationSelectors__[\"k\" /* bamSubReadySelector */])(state),\n showPromo: Object(__WEBPACK_IMPORTED_MODULE_9__selectors_pageSelector__[\"g\" /* showPromoSelector */])(state)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(BucketListContainer));\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\n\nvar emptyObject = {};\n\nif (false) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(102);\nvar EventPluginUtils = __webpack_require__(161);\n\nvar accumulateInto = __webpack_require__(231);\nvar forEachAccumulated = __webpack_require__(232);\nvar warning = __webpack_require__(6);\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar EventPluginRegistry = __webpack_require__(160);\nvar EventPluginUtils = __webpack_require__(161);\nvar ReactErrorUtils = __webpack_require__(162);\n\nvar accumulateInto = __webpack_require__(231);\nvar forEachAccumulated = __webpack_require__(232);\nvar invariant = __webpack_require__(5);\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function (inst, registrationName, listener) {\n !(typeof listener === 'function') ? false ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function (inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function (inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function (inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function (events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function (simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? false ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function () {\n listenerBank = {};\n },\n\n __getListenerBank: function () {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(50);\n\nvar getEventTarget = __webpack_require__(163);\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function (event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function (event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function (key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function (key) {\n return key._reactInternalInstance;\n },\n\n has: function (key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function (key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n arguments: true,\n arity: true\n};\n\nvar isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';\n\nmodule.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n var keys = Object.getOwnPropertyNames(sourceComponent);\n\n /* istanbul ignore else */\n if (isGetOwnPropertySymbolsAvailable) {\n keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {\n try {\n targetComponent[keys[i]] = sourceComponent[keys[i]];\n } catch (error) {\n\n }\n }\n }\n }\n\n return targetComponent;\n};\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = apiDateFormatter;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_moment__ = __webpack_require__(107);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_moment___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_moment__);\n\n\nfunction apiDateFormatter(startDate, endDate) {\n var startDateToFormat = startDate ? __WEBPACK_IMPORTED_MODULE_0_moment___default()(startDate) : __WEBPACK_IMPORTED_MODULE_0_moment___default()();\n var formattedStartDate = startDateToFormat.format('YYYYMMDD');\n var apiDate = '';\n if (endDate) {\n var endDateToFormat = __WEBPACK_IMPORTED_MODULE_0_moment___default()(endDate);\n var formattedEndDate = endDateToFormat.format('YYYYMMDD');\n if (formattedEndDate === formattedStartDate) {\n apiDate = formattedEndDate;\n } else if (formattedEndDate > formattedStartDate) {\n apiDate = formattedStartDate + '-' + formattedEndDate;\n } else {\n apiDate = formattedEndDate + '-' + formattedStartDate;\n }\n } else {\n apiDate = '' + formattedStartDate;\n }\n\n return apiDate;\n};\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console, module) {//! moment.js\n//! version : 2.15.2\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n true ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, function () { 'use strict';\n\n var hookCallback;\n\n function utils_hooks__hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function create_utc__createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function valid__isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function valid__createInvalid (flags) {\n var m = create_utc__createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = utils_hooks__hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n utils_hooks__hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (utils_hooks__hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (utils_hooks__hooks.deprecationHandler != null) {\n utils_hooks__hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (utils_hooks__hooks.deprecationHandler != null) {\n utils_hooks__hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n utils_hooks__hooks.suppressDeprecationWarnings = false;\n utils_hooks__hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function locale_set__set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function locale_calendar__calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relative__relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n get_set__set(this, unit, value);\n utils_hooks__hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get_set__get(this, unit);\n }\n };\n }\n\n function get_set__get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function get_set__set (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (typeof callback === 'number') {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return this._months;\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return this._monthsShort;\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function units_month__handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = create_utc__createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return units_month__handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = create_utc__createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (typeof value !== 'number') {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n utils_hooks__hooks.updateOffset(this, true);\n return this;\n } else {\n return get_set__get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = create_utc__createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n utils_hooks__hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n //the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return this._weekdays;\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function day_of_week__handleStrictParse(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = create_utc__createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return day_of_week__handleStrictParse.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = create_utc__createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = create_utc__createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour he wants. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n ordinalParse: defaultOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n !(function webpackMissingModule() { var e = new Error(\"Cannot find module \\\"./locale\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e; }());\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n locale_locales__getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function locale_locales__getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = locale_locales__getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n // treat as if there is no base config\n deprecateSimple('parentLocaleUndefined',\n 'specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/');\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n // backwards compat for now: also set the locale\n locale_locales__getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n locale_locales__getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function locale_locales__getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function locale_locales__listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n utils_hooks__hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(utils_hooks__hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);\n week = defaults(w.w, 1);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n utils_hooks__hooks.ISO_8601 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === utils_hooks__hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!valid__isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || locale_locales__getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return valid__createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (isDate(input)) {\n config._d = input;\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!valid__isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date(utils_hooks__hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (typeof(input) === 'object') {\n configFromObject(config);\n } else if (typeof(input) === 'number') {\n // from milliseconds\n config._d = new Date(input);\n } else {\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (typeof(locale) === 'boolean') {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function local__createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = local__createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return valid__createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = local__createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return valid__createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return local__createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = locale_locales__getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = ((string || '').match(matcher) || []);\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : local__createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n utils_hooks__hooks.updateOffset(res, false);\n return res;\n } else {\n return local__createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n utils_hooks__hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n } else if (Math.abs(input) < 16) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n utils_hooks__hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n\n if (tZone === 0) {\n this.utcOffset(0, true);\n } else {\n this.utcOffset(offsetFromString(matchOffset, this._i));\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? local__createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\n function create__createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (typeof input === 'number') {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n create__createDuration.fn = Duration.prototype;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = create__createDuration(val, period);\n add_subtract__addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n utils_hooks__hooks.updateOffset(mom, days || months);\n }\n }\n\n var add_subtract__add = createAdder(1, 'add');\n var add_subtract__subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function moment_calendar__calendar (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || local__createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = utils_hooks__hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, local__createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : local__createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : local__createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : local__createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n utils_hooks__hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function moment_format__toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n local__createLocal(time).isValid())) {\n return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(local__createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n local__createLocal(time).isValid())) {\n return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(local__createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = locale_locales__getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function to_type__valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function moment_valid__isValid () {\n return valid__isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = utils_hooks__hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIOROITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var momentPrototype__proto = Moment.prototype;\n\n momentPrototype__proto.add = add_subtract__add;\n momentPrototype__proto.calendar = moment_calendar__calendar;\n momentPrototype__proto.clone = clone;\n momentPrototype__proto.diff = diff;\n momentPrototype__proto.endOf = endOf;\n momentPrototype__proto.format = format;\n momentPrototype__proto.from = from;\n momentPrototype__proto.fromNow = fromNow;\n momentPrototype__proto.to = to;\n momentPrototype__proto.toNow = toNow;\n momentPrototype__proto.get = stringGet;\n momentPrototype__proto.invalidAt = invalidAt;\n momentPrototype__proto.isAfter = isAfter;\n momentPrototype__proto.isBefore = isBefore;\n momentPrototype__proto.isBetween = isBetween;\n momentPrototype__proto.isSame = isSame;\n momentPrototype__proto.isSameOrAfter = isSameOrAfter;\n momentPrototype__proto.isSameOrBefore = isSameOrBefore;\n momentPrototype__proto.isValid = moment_valid__isValid;\n momentPrototype__proto.lang = lang;\n momentPrototype__proto.locale = locale;\n momentPrototype__proto.localeData = localeData;\n momentPrototype__proto.max = prototypeMax;\n momentPrototype__proto.min = prototypeMin;\n momentPrototype__proto.parsingFlags = parsingFlags;\n momentPrototype__proto.set = stringSet;\n momentPrototype__proto.startOf = startOf;\n momentPrototype__proto.subtract = add_subtract__subtract;\n momentPrototype__proto.toArray = toArray;\n momentPrototype__proto.toObject = toObject;\n momentPrototype__proto.toDate = toDate;\n momentPrototype__proto.toISOString = moment_format__toISOString;\n momentPrototype__proto.toJSON = toJSON;\n momentPrototype__proto.toString = toString;\n momentPrototype__proto.unix = unix;\n momentPrototype__proto.valueOf = to_type__valueOf;\n momentPrototype__proto.creationData = creationData;\n\n // Year\n momentPrototype__proto.year = getSetYear;\n momentPrototype__proto.isLeapYear = getIsLeapYear;\n\n // Week Year\n momentPrototype__proto.weekYear = getSetWeekYear;\n momentPrototype__proto.isoWeekYear = getSetISOWeekYear;\n\n // Quarter\n momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;\n\n // Month\n momentPrototype__proto.month = getSetMonth;\n momentPrototype__proto.daysInMonth = getDaysInMonth;\n\n // Week\n momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;\n momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;\n momentPrototype__proto.weeksInYear = getWeeksInYear;\n momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;\n\n // Day\n momentPrototype__proto.date = getSetDayOfMonth;\n momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;\n momentPrototype__proto.weekday = getSetLocaleDayOfWeek;\n momentPrototype__proto.isoWeekday = getSetISODayOfWeek;\n momentPrototype__proto.dayOfYear = getSetDayOfYear;\n\n // Hour\n momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;\n\n // Minute\n momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;\n\n // Second\n momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;\n\n // Millisecond\n momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;\n\n // Offset\n momentPrototype__proto.utcOffset = getSetOffset;\n momentPrototype__proto.utc = setOffsetToUTC;\n momentPrototype__proto.local = setOffsetToLocal;\n momentPrototype__proto.parseZone = setOffsetToParsedOffset;\n momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;\n momentPrototype__proto.isDST = isDaylightSavingTime;\n momentPrototype__proto.isLocal = isLocal;\n momentPrototype__proto.isUtcOffset = isUtcOffset;\n momentPrototype__proto.isUtc = isUtc;\n momentPrototype__proto.isUTC = isUtc;\n\n // Timezone\n momentPrototype__proto.zoneAbbr = getZoneAbbr;\n momentPrototype__proto.zoneName = getZoneName;\n\n // Deprecations\n momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n momentPrototype__proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n var momentPrototype = momentPrototype__proto;\n\n function moment__createUnix (input) {\n return local__createLocal(input * 1000);\n }\n\n function moment__createInZone () {\n return local__createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var prototype__proto = Locale.prototype;\n\n prototype__proto.calendar = locale_calendar__calendar;\n prototype__proto.longDateFormat = longDateFormat;\n prototype__proto.invalidDate = invalidDate;\n prototype__proto.ordinal = ordinal;\n prototype__proto.preparse = preParsePostFormat;\n prototype__proto.postformat = preParsePostFormat;\n prototype__proto.relativeTime = relative__relativeTime;\n prototype__proto.pastFuture = pastFuture;\n prototype__proto.set = locale_set__set;\n\n // Month\n prototype__proto.months = localeMonths;\n prototype__proto.monthsShort = localeMonthsShort;\n prototype__proto.monthsParse = localeMonthsParse;\n prototype__proto.monthsRegex = monthsRegex;\n prototype__proto.monthsShortRegex = monthsShortRegex;\n\n // Week\n prototype__proto.week = localeWeek;\n prototype__proto.firstDayOfYear = localeFirstDayOfYear;\n prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;\n\n // Day of Week\n prototype__proto.weekdays = localeWeekdays;\n prototype__proto.weekdaysMin = localeWeekdaysMin;\n prototype__proto.weekdaysShort = localeWeekdaysShort;\n prototype__proto.weekdaysParse = localeWeekdaysParse;\n\n prototype__proto.weekdaysRegex = weekdaysRegex;\n prototype__proto.weekdaysShortRegex = weekdaysShortRegex;\n prototype__proto.weekdaysMinRegex = weekdaysMinRegex;\n\n // Hours\n prototype__proto.isPM = localeIsPM;\n prototype__proto.meridiem = localeMeridiem;\n\n function lists__get (format, index, field, setter) {\n var locale = locale_locales__getLocale();\n var utc = create_utc__createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return lists__get(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = lists__get(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = locale_locales__getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return lists__get(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = lists__get(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function lists__listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function lists__listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function lists__listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function lists__listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function lists__listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n locale_locales__getSetGlobalLocale('en', {\n ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);\n utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);\n\n var mathAbs = Math.abs;\n\n function duration_abs__abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function duration_add_subtract__addSubtract (duration, input, value, direction) {\n var other = create__createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function duration_add_subtract__add (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function duration_add_subtract__subtract (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function duration_as__valueOf () {\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function duration_get__get (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n }\n\n function makeGetter(name) {\n return function () {\n return this._data[name];\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {\n var duration = create__createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds < thresholds.s && ['s', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function duration_humanize__getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n return true;\n }\n\n function humanize (withSuffix) {\n var locale = this.localeData();\n var output = duration_humanize__relativeTime(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var iso_string__abs = Math.abs;\n\n function iso_string__toISOString() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n var seconds = iso_string__abs(this._milliseconds) / 1000;\n var days = iso_string__abs(this._days);\n var months = iso_string__abs(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n }\n\n var duration_prototype__proto = Duration.prototype;\n\n duration_prototype__proto.abs = duration_abs__abs;\n duration_prototype__proto.add = duration_add_subtract__add;\n duration_prototype__proto.subtract = duration_add_subtract__subtract;\n duration_prototype__proto.as = as;\n duration_prototype__proto.asMilliseconds = asMilliseconds;\n duration_prototype__proto.asSeconds = asSeconds;\n duration_prototype__proto.asMinutes = asMinutes;\n duration_prototype__proto.asHours = asHours;\n duration_prototype__proto.asDays = asDays;\n duration_prototype__proto.asWeeks = asWeeks;\n duration_prototype__proto.asMonths = asMonths;\n duration_prototype__proto.asYears = asYears;\n duration_prototype__proto.valueOf = duration_as__valueOf;\n duration_prototype__proto._bubble = bubble;\n duration_prototype__proto.get = duration_get__get;\n duration_prototype__proto.milliseconds = milliseconds;\n duration_prototype__proto.seconds = seconds;\n duration_prototype__proto.minutes = minutes;\n duration_prototype__proto.hours = hours;\n duration_prototype__proto.days = days;\n duration_prototype__proto.weeks = weeks;\n duration_prototype__proto.months = months;\n duration_prototype__proto.years = years;\n duration_prototype__proto.humanize = humanize;\n duration_prototype__proto.toISOString = iso_string__toISOString;\n duration_prototype__proto.toString = iso_string__toISOString;\n duration_prototype__proto.toJSON = iso_string__toISOString;\n duration_prototype__proto.locale = locale;\n duration_prototype__proto.localeData = localeData;\n\n // Deprecations\n duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);\n duration_prototype__proto.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n utils_hooks__hooks.version = '2.15.2';\n\n setHookCallback(local__createLocal);\n\n utils_hooks__hooks.fn = momentPrototype;\n utils_hooks__hooks.min = min;\n utils_hooks__hooks.max = max;\n utils_hooks__hooks.now = now;\n utils_hooks__hooks.utc = create_utc__createUTC;\n utils_hooks__hooks.unix = moment__createUnix;\n utils_hooks__hooks.months = lists__listMonths;\n utils_hooks__hooks.isDate = isDate;\n utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;\n utils_hooks__hooks.invalid = valid__createInvalid;\n utils_hooks__hooks.duration = create__createDuration;\n utils_hooks__hooks.isMoment = isMoment;\n utils_hooks__hooks.weekdays = lists__listWeekdays;\n utils_hooks__hooks.parseZone = moment__createInZone;\n utils_hooks__hooks.localeData = locale_locales__getLocale;\n utils_hooks__hooks.isDuration = isDuration;\n utils_hooks__hooks.monthsShort = lists__listMonthsShort;\n utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;\n utils_hooks__hooks.defineLocale = defineLocale;\n utils_hooks__hooks.updateLocale = updateLocale;\n utils_hooks__hooks.locales = locale_locales__listLocales;\n utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;\n utils_hooks__hooks.normalizeUnits = normalizeUnits;\n utils_hooks__hooks.relativeTimeRounding = duration_humanize__getSetRelativeTimeRounding;\n utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;\n utils_hooks__hooks.calendarFormat = getCalendarFormat;\n utils_hooks__hooks.prototype = momentPrototype;\n\n var _moment = utils_hooks__hooks;\n\n return _moment;\n\n}));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2), __webpack_require__(108)(module)))\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(39);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports) {\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isSymbol = __webpack_require__(129);\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsArguments = __webpack_require__(570),\n isObjectLike = __webpack_require__(59);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar curry2 = __webpack_require__(592)\nvar debug = __webpack_require__(594)('selectn')\nvar dotted = __webpack_require__(597)\nvar splits = __webpack_require__(598)\nvar string = Object.prototype.toString\n\nmodule.exports = curry2(selectn)\n\n/**\n * Curried property accessor function that resolves deeply-nested object properties via dot/bracket-notation\n * string path while mitigating `TypeErrors` via friendly and composable API.\n *\n * @param {String|Array} path\n * Dot/bracket-notation string path or array.\n *\n * @param {Object} object\n * Object to access.\n *\n * @return {Function|*|undefined}\n * (1) returns `selectn/1` when partially applied.\n * (2) returns value at path if path exists.\n * (3) returns undefined if path does not exist.\n */\nfunction selectn (path, object) {\n debug('arguments:', {\n path: path,\n object: object\n })\n\n var idx = -1\n var seg = string.call(path) === '[object Array]' ? path : splits(dotted(path))\n var end = seg.length\n var ref = end ? object : void 0\n\n while (++idx < end) {\n if (Object(ref) !== ref) return void 0\n ref = ref[seg[idx]]\n }\n\n debug('ref:', ref)\n return typeof ref === 'function' ? ref() : ref\n}\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseMatches = __webpack_require__(635),\n baseMatchesProperty = __webpack_require__(657),\n identity = __webpack_require__(199),\n isArray = __webpack_require__(32),\n property = __webpack_require__(659);\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return shieldApiKeySelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return graphqlParamsSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return collectionParamsSelector; });\n/* unused harmony export getWhitelistedParams */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return searchApiParamsSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return suggestApiParamsSelector; });\n/* unused harmony export pageApiFeatureFlagsSelector */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return pageAPIParamsSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return pageAPILimitedParamsSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__fanSelector__ = __webpack_require__(91);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__lib_format_dateFormat__ = __webpack_require__(33);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\n\n\n\nvar apiConfigParams = ['apiEnv', 'apiVersion'];\n\nvar apiParamsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_3__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_3__appSelector__[\"c\" /* apiEnvSelector */], __WEBPACK_IMPORTED_MODULE_3__appSelector__[\"d\" /* apiVersionSelector */], function (app, apiEnv, apiVersion) {\n var deviceType = app.device,\n country = app.country,\n lang = app.lang,\n sourceLang = app.sourceLang,\n packageId = app.packageId,\n tier = app.tier,\n edition = app.edition;\n\n var tz = __WEBPACK_IMPORTED_MODULE_7__lib_format_dateFormat__[\"a\" /* default */].getTimezoneParam();\n return {\n apiEnv: apiEnv,\n apiVersion: apiVersion,\n countryCode: country,\n deviceType: deviceType,\n lang: lang,\n sourceLang: sourceLang,\n tz: tz,\n packageId: packageId,\n tier: tier,\n edition: edition\n };\n});\n\nvar shieldApiKeySelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_3__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_3__appSelector__[\"k\" /* editionSelector */], function (_ref, _ref2) {\n var shieldApiKeys = _ref.bootstrap.shieldApiKey;\n var edition = _ref2.edition;\n\n if (shieldApiKeys[edition]) {\n return shieldApiKeys[edition];\n }\n\n // If we haven't returned, go with domestic/US.\n return shieldApiKeys.domestic;\n});\n\nvar graphqlParamsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_3__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_3__appSelector__[\"c\" /* apiEnvSelector */], function (app, apiEnv) {\n var device = app.device,\n countryCode = app.country,\n lang = app.lang,\n packageId = app.packageId;\n\n var tz = __WEBPACK_IMPORTED_MODULE_7__lib_format_dateFormat__[\"a\" /* default */].getTimezoneParam();\n return {\n apiEnv: apiEnv,\n countryCode: countryCode,\n deviceType: __WEBPACK_IMPORTED_MODULE_1__enums__[\"r\" /* DeviceType */][device],\n lang: lang,\n tz: tz,\n packageId: packageId\n };\n});\n\nvar collectionParamsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_3__appSelector__[\"j\" /* default */], function (app) {\n var country = app.country,\n lang = app.lang;\n\n return {\n countryCode: country,\n lang: lang\n };\n});\n\nfunction getWhitelistedParams(paramsArg, queryParameters) {\n var params = paramsArg;\n if (queryParameters) {\n var whitelisted = queryParameters.concat(apiConfigParams);\n params = Object.keys(params).reduce(function (acc, key) {\n if (whitelisted.indexOf(key) > -1) {\n acc[key] = params[key];\n }\n return acc;\n }, {});\n }\n\n return params;\n}\n\nvar searchApiParamsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_2__bootstrapSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__appSelector__[\"s\" /* isDomesticSelector */], apiParamsSelector, __WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__[\"o\" /* preauthorizedResourcesSelector */], __WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__[\"u\" /* zipcodeSelector */], function (_ref3, isDomestic, apiParams, authNetworks, zipcode) {\n var _ref3$pageApi = _ref3.pageApi;\n _ref3$pageApi = _ref3$pageApi === undefined ? {} : _ref3$pageApi;\n var queryParameters = _ref3$pageApi.queryParameters;\n\n var params = isDomestic ? _extends({}, apiParams, {\n authNetworks: authNetworks,\n zipcode: zipcode\n }) : apiParams;\n\n params = getWhitelistedParams(params, queryParameters);\n\n return params;\n});\n\nvar suggestApiParamsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_2__bootstrapSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__appSelector__[\"s\" /* isDomesticSelector */], apiParamsSelector, __WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__[\"o\" /* preauthorizedResourcesSelector */], __WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__[\"u\" /* zipcodeSelector */], function (_ref4, isDomestic, apiParams, authNetworks, zipcode) {\n var _ref4$pageApi = _ref4.pageApi;\n _ref4$pageApi = _ref4$pageApi === undefined ? {} : _ref4$pageApi;\n var queryParameters = _ref4$pageApi.queryParameters;\n\n var params = isDomestic ? _extends({}, apiParams, {\n authNetworks: authNetworks,\n zipcode: zipcode\n }) : apiParams;\n\n params = getWhitelistedParams(params, queryParameters);\n\n return params;\n});\n\nvar pageApiFeatureFlagsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_2__bootstrapSelector__[\"a\" /* default */], function (_ref5) {\n var _ref5$pageApi = _ref5.pageApi;\n _ref5$pageApi = _ref5$pageApi === undefined ? {} : _ref5$pageApi;\n var _ref5$pageApi$feature = _ref5$pageApi.featureFlags,\n featureFlags = _ref5$pageApi$feature === undefined ? [] : _ref5$pageApi$feature;\n\n var features = featureFlags.length ? featureFlags.join(',') : undefined;\n\n return {\n features: features\n };\n});\n\nvar pageAPIParamsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_2__bootstrapSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__appSelector__[\"s\" /* isDomesticSelector */], apiParamsSelector, __WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__[\"g\" /* authStatesSelector */], __WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__[\"o\" /* preauthorizedResourcesSelector */], __WEBPACK_IMPORTED_MODULE_5__oneIdSelector__[\"c\" /* oneIdEntitlementsParamsSelector */], __WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__[\"u\" /* zipcodeSelector */], __WEBPACK_IMPORTED_MODULE_6__fanSelector__[\"c\" /* favoriteTeamSelector */], __WEBPACK_IMPORTED_MODULE_6__fanSelector__[\"b\" /* favoriteSportSelector */], pageApiFeatureFlagsSelector, function (_ref6, isDomestic, apiParams, authStates, authNetworks, entitlements, zipcode, favoriteTeam, favoriteSport, features) {\n var _ref6$pageApi = _ref6.pageApi;\n _ref6$pageApi = _ref6$pageApi === undefined ? {} : _ref6$pageApi;\n var queryParameters = _ref6$pageApi.queryParameters;\n\n var params = isDomestic ? _extends({}, apiParams, features, {\n authStates: authStates,\n authNetworks: authNetworks,\n entitlements: entitlements,\n zipcode: zipcode,\n favoriteTeam: favoriteTeam,\n favoriteSport: favoriteSport\n }) : _extends({}, apiParams, features);\n\n params = getWhitelistedParams(params, queryParameters);\n\n return params;\n});\n\n// `/web/event` and `/web/video`\nvar pageAPILimitedParamsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_2__bootstrapSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__appSelector__[\"s\" /* isDomesticSelector */], apiParamsSelector, __WEBPACK_IMPORTED_MODULE_4__authenticationSelectors__[\"u\" /* zipcodeSelector */], __WEBPACK_IMPORTED_MODULE_5__oneIdSelector__[\"c\" /* oneIdEntitlementsParamsSelector */], pageApiFeatureFlagsSelector, function (_ref7, isDomestic, apiParams, zipcode, entitlements, features) {\n var _ref7$pageApi = _ref7.pageApi;\n _ref7$pageApi = _ref7$pageApi === undefined ? {} : _ref7$pageApi;\n var queryParameters = _ref7$pageApi.queryParameters;\n\n var params = isDomestic ? _extends({}, apiParams, features, {\n entitlements: entitlements,\n zipcode: zipcode\n }) : _extends({}, apiParams, features);\n\n params = getWhitelistedParams(params, queryParameters);\n\n return params;\n});\n\n/* harmony default export */ __webpack_exports__[\"b\"] = (apiParamsSelector);\n\n/***/ }),\n/* 116 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/bluebird/js/browser/bluebird.js\nvar bluebird = __webpack_require__(11);\nvar bluebird_default = /*#__PURE__*/__webpack_require__.n(bluebird);\n\n// EXTERNAL MODULE: ./app/webapp/common/video-player/constants.js\nvar constants = __webpack_require__(213);\n\n// EXTERNAL MODULE: ./app/webapp/common/video-player/player-tech/PlayerBase.js\nvar PlayerBase = __webpack_require__(214);\n\n// EXTERNAL MODULE: ./app/webapp/common/video-player/player-tech/BAMPlayer/index.js\nvar BAMPlayer = __webpack_require__(681);\n\n// CONCATENATED MODULE: ./app/webapp/common/video-player/player-tech/BrightcovePlayer/index.js\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable class-methods-use-this, no-return-assign */\n\n\n\n\nvar BrightcovePlayer_BrightcovePlayer = function (_PlayerBase) {\n _inherits(BrightcovePlayer, _PlayerBase);\n\n function BrightcovePlayer() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n playerTech = _ref.playerTech,\n options = _objectWithoutProperties(_ref, ['playerTech']);\n\n _classCallCheck(this, BrightcovePlayer);\n\n var _this = _possibleConstructorReturn(this, (BrightcovePlayer.__proto__ || Object.getPrototypeOf(BrightcovePlayer)).call(this));\n\n _this._playerTech = playerTech;\n _this._options = options;\n return _this;\n }\n\n _createClass(BrightcovePlayer, [{\n key: 'currentTime',\n value: function currentTime(value) {\n var _this2 = this;\n\n return new bluebird_default.a(function (resolve, reject) {\n try {\n if (value && _this2._player) {\n _this2._player.currentTime(value);\n resolve(_this2);\n return;\n }\n resolve(_this2._player && _this2._player.currentTime());\n } catch (err) {\n reject(err);\n }\n });\n }\n }, {\n key: 'createPlayer',\n value: function createPlayer() {\n var _this3 = this;\n\n var ESPNVideoPlayer = window.ESPNVideoPlayer;\n return this._playerPromise || (this._playerPromise = new bluebird_default.a(function (resolve, reject) {\n if (ESPNVideoPlayer) {\n _this3._player = new ESPNVideoPlayer(_this3._playerTech, _this3._options);\n _this3._player.ready(resolve);\n } else {\n setTimeout(function () {\n reject(new Error('ESPN web player bunlde JS not available.'));\n }, 1000);\n }\n }));\n }\n }, {\n key: 'addPlayerListeners',\n value: function addPlayerListeners() {\n var _this4 = this;\n\n var _ref2 = this._player || {},\n player = _ref2.player;\n\n if (player) {\n this._unsubscribes = Object.keys(BrightcovePlayer.Events).map(function (key) {\n var callback = function callback() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this4.emit.apply(_this4, [BrightcovePlayer.Events[key]].concat(args));\n };\n player.on(BrightcovePlayer.Events[key], callback);\n return function () {\n player.off(BrightcovePlayer.Events[key], callback);\n };\n });\n }\n }\n }, {\n key: 'removePlayerListeners',\n value: function removePlayerListeners() {\n if (this._unsubscribes) {\n while (this._unsubscribes.length) {\n this._unsubscribes.pop()();\n }\n this._unsubscribes = null;\n }\n }\n }, {\n key: 'create',\n value: function create(options) {\n var _this5 = this;\n\n return this.createPlayer().then(function () {\n var guid = options.guid,\n el = options.el,\n playOptions = options.options;\n\n return new bluebird_default.a(function (resolve) {\n _this5._player.embed(guid, el, playOptions, function () {\n _this5.addPlayerListeners();\n resolve(_this5);\n });\n });\n });\n }\n }, {\n key: 'delete',\n value: function _delete() {\n this.removePlayerListeners();\n this._player.unembed();\n return bluebird_default.a.resolve(this);\n }\n }, {\n key: 'play',\n value: function play() {\n var _this6 = this;\n\n return new bluebird_default.a(function (resolve, reject) {\n try {\n _this6._player.play();\n resolve(_this6);\n } catch (err) {\n reject(err);\n }\n });\n }\n }, {\n key: 'pause',\n value: function pause() {\n var _this7 = this;\n\n return new bluebird_default.a(function (resolve, reject) {\n try {\n _this7._player.pause();\n resolve(_this7);\n } catch (err) {\n reject(err);\n }\n });\n }\n }, {\n key: 'mute',\n value: function mute() {\n var _this8 = this;\n\n return new bluebird_default.a(function (resolve, reject) {\n try {\n _this8._player.muted(true);\n resolve(_this8);\n } catch (err) {\n reject(err);\n }\n });\n }\n }, {\n key: 'unmute',\n value: function unmute() {\n var _this9 = this;\n\n return new bluebird_default.a(function (resolve, reject) {\n try {\n _this9._player.muted(false);\n resolve(_this9);\n } catch (err) {\n reject(err);\n }\n });\n }\n }, {\n key: 'requestFullscreen',\n value: function requestFullscreen() {\n var _this10 = this;\n\n return new bluebird_default.a(function (resolve, reject) {\n try {\n _this10._player.requestFullscreen();\n resolve(_this10);\n } catch (err) {\n reject(err);\n }\n });\n }\n }, {\n key: 'exitFullscreen',\n value: function exitFullscreen() {\n var _this11 = this;\n\n return new bluebird_default.a(function (resolve, reject) {\n try {\n _this11._player.exitFullscreen();\n resolve(_this11);\n } catch (err) {\n reject(err);\n }\n });\n }\n }, {\n key: 'error',\n value: function error(err, content) {\n var _this12 = this;\n\n return new bluebird_default.a(function (resolve, reject) {\n try {\n _this12._player.error(err, content);\n resolve(_this12);\n } catch (err2) {\n reject(err2);\n }\n });\n }\n }, {\n key: 'getPlayerConfigs',\n value: function getPlayerConfigs() {\n return bluebird_default.a.resolve(this._player.bundle.options);\n }\n }, {\n key: 'updatePlayerConfigs',\n value: function updatePlayerConfigs(newConfigs) {\n return bluebird_default.a.resolve(newConfigs);\n }\n }, {\n key: 'tech',\n get: function get() {\n return constants[\"a\" /* PlayerTech */].BRIGHTCOVE;\n }\n }, {\n key: 'container',\n get: function get() {\n return this._player && this._player.bundle.element.parentNode;\n }\n }, {\n key: 'player',\n get: function get() {\n return this._player && this._player.player;\n }\n }, {\n key: 'analytics',\n get: function get() {\n return this._player && this._player.analytics;\n }\n }, {\n key: 'advertising',\n get: function get() {\n return this._player && this._player.advertising;\n }\n }]);\n\n return BrightcovePlayer;\n}(PlayerBase[\"a\" /* default */]);\n\nBrightcovePlayer_BrightcovePlayer.Events = {\n ESPN_PLAYING: 'espn.playing',\n ESPN_PLAY: 'espn.play',\n ESPN_PAUSE: 'espn.pause',\n ESPN_AD_POD_STARTED: 'espn.ads-pod-started',\n ESPN_AD_POD_ENDED: 'espn.ads-pod-ended',\n ESPN_AD_STARTED: 'espn.ads-ad-started',\n ESPN_AD_ENDED: 'espn.ads-ad-ended',\n ESPN_CONTENT_ENDED: 'espn.contentended',\n ESPN_CONTENT_LOADED: 'espn.contentloaded',\n ESPN_PROGRAM_CHANGE: 'espn.programchange',\n ESPN_AUTOPLAY_TOGGLED: 'espn.autoplaytoggled',\n ESPN_SOCIAL_OPENED: 'socialopened',\n ESPN_SOCIAL_CLOSED: 'socialclosed',\n ESPN_CAPTION_OPENED: 'captionopened',\n ESPN_CAPTION_CLOSED: 'captionclosed',\n ESPN_ERROR: 'espn.error',\n ESPN_DRM_ERROR: 'espn.drm.error',\n ESPN_ADS_AD_SKIPPED: 'ads-ad-skipped'\n};\n\n/* harmony default export */ var player_tech_BrightcovePlayer = (BrightcovePlayer_BrightcovePlayer);\n// CONCATENATED MODULE: ./app/webapp/common/video-player/index.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar video_player__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction video_player__objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction video_player__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction video_player__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction video_player__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable class-methods-use-this */\n\n\n\n\n\n\nvar video_player_WatchESPNWebPlayer = function (_PlayerBase) {\n video_player__inherits(WatchESPNWebPlayer, _PlayerBase);\n\n function WatchESPNWebPlayer() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$bamPlayerOptions = _ref.bamPlayerOptions,\n bamPlayerOptions = _ref$bamPlayerOptions === undefined ? {} : _ref$bamPlayerOptions,\n _ref$brightcovePlayer = _ref.brightcovePlayerOptions,\n brightcovePlayerOptions = _ref$brightcovePlayer === undefined ? {} : _ref$brightcovePlayer;\n\n video_player__classCallCheck(this, WatchESPNWebPlayer);\n\n var _this = video_player__possibleConstructorReturn(this, (WatchESPNWebPlayer.__proto__ || Object.getPrototypeOf(WatchESPNWebPlayer)).call(this));\n\n _this._bamPlayer = null;\n _this._brightcovePlayer = null;\n _this._bamPlayerOptions = bamPlayerOptions;\n _this._brightcovePlayerOptions = brightcovePlayerOptions;\n return _this;\n }\n\n video_player__createClass(WatchESPNWebPlayer, [{\n key: 'create',\n value: function create(_ref2) {\n var _this2 = this;\n\n var playerTech = _ref2.playerTech,\n container = _ref2.container,\n options = video_player__objectWithoutProperties(_ref2, ['playerTech', 'container']);\n\n var promise = bluebird_default.a.resolve();\n if (playerTech === constants[\"a\" /* PlayerTech */].BAM) {\n if (!this._bamPlayer) {\n this._bamPlayer = new BAMPlayer[\"a\" /* default */](this._bamPlayerOptions);\n Object.keys(BAMPlayer[\"a\" /* default */].Events).forEach(function (event) {\n _this2._bamPlayer.on(BAMPlayer[\"a\" /* default */].Events[event], _this2.proxyEvent.bind(_this2, BAMPlayer[\"a\" /* default */].Events[event]));\n });\n }\n if (this._player && this._player.tech !== constants[\"a\" /* PlayerTech */].BAM) {\n promise = this.delete();\n }\n this._player = this._bamPlayer;\n } else if (playerTech === constants[\"a\" /* PlayerTech */].BRIGHTCOVE) {\n if (!this._brightcovePlayer) {\n this._brightcovePlayer = new player_tech_BrightcovePlayer(this._brightcovePlayerOptions);\n Object.keys(player_tech_BrightcovePlayer.Events).forEach(function (event) {\n _this2._brightcovePlayer.on(player_tech_BrightcovePlayer.Events[event], _this2.proxyEvent.bind(_this2, player_tech_BrightcovePlayer.Events[event]));\n });\n }\n if (this._player && this._player.tech !== constants[\"a\" /* PlayerTech */].BRIGHTCOVE) {\n promise = this.delete();\n }\n this._player = this._brightcovePlayer;\n }\n if (!this._player) {\n return bluebird_default.a.reject(new Error('cannot create player.'));\n }\n\n var containerEl = void 0;\n try {\n if (typeof container === 'string') {\n containerEl = document.querySelector(container);\n } else {\n containerEl = container;\n }\n } catch (err) {\n return bluebird_default.a.reject(err);\n }\n\n var playerOptions = _extends({}, options, {\n selector: container,\n el: containerEl\n });\n\n return promise.then(function () {\n return _this2._player.create(playerOptions);\n }).then(function () {\n _this2.emit(WatchESPNWebPlayer.Events.READY);\n });\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n\n if (this._bamPlayer && this._player.destroyPlayer) {\n return this._player.destroyPlayer().then(function () {\n _this3._bamPlayer.removeAllListeners();\n });\n }\n\n return this.delete().then(function () {\n _this3._brightcovePlayer.removeAllListeners();\n _this3._brightcovePlayer = null;\n });\n }\n }, {\n key: 'getPlayer',\n value: function getPlayer(tech) {\n switch (tech) {\n case constants[\"a\" /* PlayerTech */].BRIGHTCOVE:\n return this._brightcovePlayer;\n case constants[\"a\" /* PlayerTech */].BAM:\n return this._bamPlayer;\n default:\n // return currently active player\n return this._player;\n }\n }\n }, {\n key: 'getGeoLocation',\n value: function getGeoLocation(options) {\n var player = new BAMPlayer[\"a\" /* default */](this._bamPlayerOptions);\n player.once(BAMPlayer[\"a\" /* default */].Events.GEOLOCATION_READY, this.proxyEvent.bind(this, BAMPlayer[\"a\" /* default */].Events.GEOLOCATION_READY));\n return player.getGeoLocation(_extends({}, options, { selector: options.container }));\n }\n }, {\n key: 'renderPaywall',\n value: function renderPaywall(options) {\n var player = new BAMPlayer[\"a\" /* default */](this._bamPlayerOptions);\n player.once(BAMPlayer[\"a\" /* default */].Events.LOGIN_REQUESTED, this.proxyEvent.bind(this, BAMPlayer[\"a\" /* default */].Events.LOGIN_REQUESTED));\n return player.renderPaywall(_extends({}, options, { selector: options.container }));\n }\n }, {\n key: 'createSDKWrapper',\n value: function createSDKWrapper(options) {\n var player = new BAMPlayer[\"a\" /* default */](this._bamPlayerOptions);\n player.once(BAMPlayer[\"a\" /* default */].Events.SUBSCRIPTIONS_READY, this.proxyEvent.bind(this, BAMPlayer[\"a\" /* default */].Events.SUBSCRIPTIONS_READY));\n player.once(BAMPlayer[\"a\" /* default */].Events.GEOLOCATION_READY, this.proxyEvent.bind(this, BAMPlayer[\"a\" /* default */].Events.GEOLOCATION_READY));\n player.once(BAMPlayer[\"a\" /* default */].Events.SESSIONTOKEN_READY, this.proxyEvent.bind(this, BAMPlayer[\"a\" /* default */].Events.SESSIONTOKEN_READY));\n\n player.once(BAMPlayer[\"a\" /* default */].Events.USER_TRACKING_INFORMATION_READY, this.proxyEvent.bind(this, BAMPlayer[\"a\" /* default */].Events.USER_TRACKING_INFORMATION_READY));\n\n window.sdkWrapper = player;\n return player.createSDKWrapper(_extends({}, options, { selector: options.container }));\n }\n }, {\n key: 'sendContentReward',\n value: function sendContentReward(_ref3) {\n var selector = _ref3.selector,\n rewardToken = _ref3.rewardToken,\n contentId = _ref3.contentId,\n userActivityAction = _ref3.userActivityAction,\n recommendedContentIds = _ref3.recommendedContentIds;\n\n if (window.sdkWrapper) {\n return window.sdkWrapper.sendContentReward(selector, rewardToken, contentId, userActivityAction, recommendedContentIds);\n }\n\n return bluebird_default.a.resolve(this);\n }\n }, {\n key: 'delete',\n value: function _delete() {\n var _this4 = this;\n\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return this._player.delete().then(function () {\n _this4._player = null;\n });\n }\n }, {\n key: 'loadMedia',\n value: function loadMedia(options) {\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return this._player.loadMedia(_extends({}, options, { selector: options.container }));\n }\n }, {\n key: 'changeFeed',\n value: function changeFeed(options) {\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return this._player.changeFeed(_extends({}, options, { selector: options.container }));\n }\n }, {\n key: 'deactivate',\n value: function deactivate() {\n var _player;\n\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return (_player = this._player).deactivate.apply(_player, arguments);\n }\n }, {\n key: 'play',\n value: function play() {\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return this._player.play();\n }\n }, {\n key: 'pause',\n value: function pause() {\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return this._player.pause();\n }\n }, {\n key: 'mute',\n value: function mute() {\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return this._player.mute();\n }\n }, {\n key: 'unmute',\n value: function unmute() {\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return this._player.unmute();\n }\n }, {\n key: 'error',\n value: function error() {\n var _player2;\n\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return (_player2 = this._player).error.apply(_player2, arguments);\n }\n }, {\n key: 'getPlayerConfigs',\n value: function getPlayerConfigs() {\n if (!this._player) {\n return bluebird_default.a.resolve();\n }\n return this._player.getPlayerConfigs();\n }\n }, {\n key: 'updatePlayerConfigs',\n value: function updatePlayerConfigs() {\n var _player3;\n\n if (!this._player) {\n return bluebird_default.a.resolve(this);\n }\n return (_player3 = this._player).updatePlayerConfigs.apply(_player3, arguments);\n }\n }, {\n key: 'proxyEvent',\n value: function proxyEvent(type) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n this.emit.apply(this, [type].concat(args));\n }\n }]);\n\n return WatchESPNWebPlayer;\n}(PlayerBase[\"a\" /* default */]);\n\nvideo_player_WatchESPNWebPlayer.Events = _extends({\n READY: 'READY'\n}, player_tech_BrightcovePlayer.Events, BAMPlayer[\"a\" /* default */].Events);\n\nvideo_player_WatchESPNWebPlayer.PlayerTech = constants[\"a\" /* PlayerTech */];\n\n/* harmony default export */ var video_player = __webpack_exports__[\"a\"] = (video_player_WatchESPNWebPlayer);\n\n/***/ }),\n/* 117 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = canPlayContent;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__canPlayStream__ = __webpack_require__(118);\n\n\nfunction canPlayContent() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n status = _ref.status,\n _ref$streams = _ref.streams,\n streams = _ref$streams === undefined ? [] : _ref$streams;\n\n var userAuth = arguments[1];\n var optimisitic = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n return status != 'upcoming' && streams.some(function (stream) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__canPlayStream__[\"a\" /* default */])(stream, userAuth, optimisitic);\n });\n}\n\n/***/ }),\n/* 118 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = canPlayStream;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__shallowCheckAuthentication__ = __webpack_require__(146);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_isEmpty__ = __webpack_require__(346);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_isEmpty___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_isEmpty__);\n\n\n\nfunction canPlayStream() {\n var stream = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var userAuth = arguments[1];\n var optimisitic = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n // theoretically should be able to use `showKey` field\n return Object(__WEBPACK_IMPORTED_MODULE_0__shallowCheckAuthentication__[\"b\" /* default */])(stream, userAuth, optimisitic);\n};\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar invariant = __webpack_require__(5);\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n *
\n *                       wrappers (injected at creation time)\n *                                      +        +\n *                                      |        |\n *                    +-----------------|--------|--------------+\n *                    |                 v        |              |\n *                    |      +---------------+   |              |\n *                    |   +--|    wrapper1   |---|----+         |\n *                    |   |  +---------------+   v    |         |\n *                    |   |          +-------------+  |         |\n *                    |   |     +----|   wrapper2  |--------+   |\n *                    |   |     |    +-------------+  |     |   |\n *                    |   |     |                     |     |   |\n *                    |   v     v                     v     v   | wrapper\n *                    | +---+ +---+   +---------+   +---+ +---+ | invariants\n * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | +---+ +---+   +---------+   +---+ +---+ |\n *                    |  initialize                    close    |\n *                    +-----------------------------------------+\n * 
\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function () {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function () {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function (method, scope, a, b, c, d, e, f) {\n !!this.isInTransaction() ? false ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function (startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function (startIndex) {\n !this.isInTransaction() ? false ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(103);\nvar ViewportMetrics = __webpack_require__(237);\n\nvar getEventModifierState = __webpack_require__(165);\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function (event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function (event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function (event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function (event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(31);\nvar DOMNamespaces = __webpack_require__(167);\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(168);\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '' + html + '';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function (node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar EventPluginRegistry = __webpack_require__(160);\nvar ReactEventEmitterMixin = __webpack_require__(427);\nvar ViewportMetrics = __webpack_require__(237);\n\nvar getVendorPrefixedEventName = __webpack_require__(428);\nvar isEventSupported = __webpack_require__(164);\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function (ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function (enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function () {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function (registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function () {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function () {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.canUseMembrane = undefined;\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar canUseMembrane = exports.canUseMembrane = false;\n\n// No-op by default.\nvar deprecateObjectProperties = function deprecateObjectProperties(object) {\n return object;\n};\n\nif (false) {\n try {\n if (Object.defineProperty({}, 'x', {\n get: function get() {\n return true;\n }\n }).x) {\n exports.canUseMembrane = canUseMembrane = true;\n }\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n if (canUseMembrane) {\n deprecateObjectProperties = function deprecateObjectProperties(object, message) {\n // Wrap the deprecated object in a membrane to warn on property access.\n var membrane = {};\n\n var _loop = function _loop(prop) {\n if (!Object.prototype.hasOwnProperty.call(object, prop)) {\n return 'continue';\n }\n\n if (typeof object[prop] === 'function') {\n // Can't use fat arrow here because of use of arguments below.\n membrane[prop] = function () {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;\n return object[prop].apply(object, arguments);\n };\n return 'continue';\n }\n\n // These properties are non-enumerable to prevent React dev tools from\n // seeing them and causing spurious warnings when accessing them. In\n // principle this could be done with a proxy, but support for the\n // ownKeys trap on proxies is not universal, even among browsers that\n // otherwise support proxies.\n Object.defineProperty(membrane, prop, {\n get: function get() {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;\n return object[prop];\n }\n });\n };\n\n for (var prop in object) {\n var _ret = _loop(prop);\n\n if (_ret === 'continue') continue;\n }\n\n return membrane;\n };\n }\n}\n\nexports.default = deprecateObjectProperties;\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexports.canUseDOM = canUseDOM;\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _queryString = __webpack_require__(497);\n\nvar _runTransitionHook = __webpack_require__(185);\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _PathUtils = __webpack_require__(68);\n\nvar _deprecate = __webpack_require__(186);\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nvar SEARCH_BASE_KEY = '$searchBase';\n\nfunction defaultStringifyQuery(query) {\n return _queryString.stringify(query).replace(/%20/g, '+');\n}\n\nvar defaultParseQueryString = _queryString.parse;\n\nfunction isNestedObject(object) {\n for (var p in object) {\n if (Object.prototype.hasOwnProperty.call(object, p) && typeof object[p] === 'object' && !Array.isArray(object[p]) && object[p] !== null) return true;\n }return false;\n}\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know how to handle URL queries.\n */\nfunction useQueries(createHistory) {\n return function () {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var history = createHistory(options);\n\n var stringifyQuery = options.stringifyQuery;\n var parseQueryString = options.parseQueryString;\n\n if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;\n\n if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;\n\n function addQuery(location) {\n if (location.query == null) {\n var search = location.search;\n\n location.query = parseQueryString(search.substring(1));\n location[SEARCH_BASE_KEY] = { search: search, searchBase: '' };\n }\n\n // TODO: Instead of all the book-keeping here, this should just strip the\n // stringified query from the search.\n\n return location;\n }\n\n function appendQuery(location, query) {\n var _extends2;\n\n var searchBaseSpec = location[SEARCH_BASE_KEY];\n var queryString = query ? stringifyQuery(query) : '';\n if (!searchBaseSpec && !queryString) {\n return location;\n }\n\n false ? _warning2['default'](stringifyQuery !== defaultStringifyQuery || !isNestedObject(query), 'useQueries does not stringify nested query objects by default; ' + 'use a custom stringifyQuery function') : undefined;\n\n if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n var searchBase = undefined;\n if (searchBaseSpec && location.search === searchBaseSpec.search) {\n searchBase = searchBaseSpec.searchBase;\n } else {\n searchBase = location.search || '';\n }\n\n var search = searchBase;\n if (queryString) {\n search += (search ? '&' : '?') + queryString;\n }\n\n return _extends({}, location, (_extends2 = {\n search: search\n }, _extends2[SEARCH_BASE_KEY] = { search: search, searchBase: searchBase }, _extends2));\n }\n\n // Override all read methods with query-aware versions.\n function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n _runTransitionHook2['default'](hook, addQuery(location), callback);\n });\n }\n\n function listen(listener) {\n return history.listen(function (location) {\n listener(addQuery(location));\n });\n }\n\n // Override all write methods with query-aware versions.\n function push(location) {\n history.push(appendQuery(location, location.query));\n }\n\n function replace(location) {\n history.replace(appendQuery(location, location.query));\n }\n\n function createPath(location, query) {\n false ? _warning2['default'](!query, 'the query argument to createPath is deprecated; use a location descriptor instead') : undefined;\n\n return history.createPath(appendQuery(location, query || location.query));\n }\n\n function createHref(location, query) {\n false ? _warning2['default'](!query, 'the query argument to createHref is deprecated; use a location descriptor instead') : undefined;\n\n return history.createHref(appendQuery(location, query || location.query));\n }\n\n function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var fullLocation = history.createLocation.apply(history, [appendQuery(location, location.query)].concat(args));\n if (location.query) {\n fullLocation.query = location.query;\n }\n return addQuery(fullLocation);\n }\n\n // deprecated\n function pushState(state, path, query) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n push(_extends({ state: state }, path, { query: query }));\n }\n\n // deprecated\n function replaceState(state, path, query) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n replace(_extends({ state: state }, path, { query: query }));\n }\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation,\n\n pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n });\n };\n}\n\nexports['default'] = useQueries;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _deprecateObjectProperties = __webpack_require__(124);\n\nvar _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);\n\nvar _getRouteParams = __webpack_require__(504);\n\nvar _getRouteParams2 = _interopRequireDefault(_getRouteParams);\n\nvar _RouteUtils = __webpack_require__(58);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar array = _React$PropTypes.array;\nvar func = _React$PropTypes.func;\nvar object = _React$PropTypes.object;\n\n/**\n * A renders the component tree for a given router state\n * and sets the history object and the current location in context.\n */\n\nvar RouterContext = _react2.default.createClass({\n displayName: 'RouterContext',\n\n\n propTypes: {\n history: object,\n router: object.isRequired,\n location: object.isRequired,\n routes: array.isRequired,\n params: object.isRequired,\n components: array.isRequired,\n createElement: func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n createElement: _react2.default.createElement\n };\n },\n\n\n childContextTypes: {\n history: object,\n location: object.isRequired,\n router: object.isRequired\n },\n\n getChildContext: function getChildContext() {\n var _props = this.props;\n var router = _props.router;\n var history = _props.history;\n var location = _props.location;\n\n if (!router) {\n false ? (0, _routerWarning2.default)(false, '`` expects a `router` rather than a `history`') : void 0;\n\n router = _extends({}, history, {\n setRouteLeaveHook: history.listenBeforeLeavingRoute\n });\n delete router.listenBeforeLeavingRoute;\n }\n\n if (false) {\n location = (0, _deprecateObjectProperties2.default)(location, '`context.location` is deprecated, please use a route component\\'s `props.location` instead. http://tiny.cc/router-accessinglocation');\n }\n\n return { history: history, location: location, router: router };\n },\n createElement: function createElement(component, props) {\n return component == null ? null : this.props.createElement(component, props);\n },\n render: function render() {\n var _this = this;\n\n var _props2 = this.props;\n var history = _props2.history;\n var location = _props2.location;\n var routes = _props2.routes;\n var params = _props2.params;\n var components = _props2.components;\n\n var element = null;\n\n if (components) {\n element = components.reduceRight(function (element, components, index) {\n if (components == null) return element; // Don't create new children; use the grandchildren.\n\n var route = routes[index];\n var routeParams = (0, _getRouteParams2.default)(route, params);\n var props = {\n history: history,\n location: location,\n params: params,\n route: route,\n routeParams: routeParams,\n routes: routes\n };\n\n if ((0, _RouteUtils.isReactChildren)(element)) {\n props.children = element;\n } else if (element) {\n for (var prop in element) {\n if (Object.prototype.hasOwnProperty.call(element, prop)) props[prop] = element[prop];\n }\n }\n\n if ((typeof components === 'undefined' ? 'undefined' : _typeof(components)) === 'object') {\n var elements = {};\n\n for (var key in components) {\n if (Object.prototype.hasOwnProperty.call(components, key)) {\n // Pass through the key as a prop to createElement to allow\n // custom createElement functions to know which named component\n // they're rendering, for e.g. matching up to fetched data.\n elements[key] = _this.createElement(components[key], _extends({\n key: key }, props));\n }\n }\n\n return elements;\n }\n\n return _this.createElement(components, props);\n }, element);\n }\n\n !(element === null || element === false || _react2.default.isValidElement(element)) ? false ? (0, _invariant2.default)(false, 'The root route must render a single element') : (0, _invariant2.default)(false) : void 0;\n\n return element;\n }\n});\n\nexports.default = RouterContext;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArray = __webpack_require__(32),\n isKey = __webpack_require__(194),\n stringToPath = __webpack_require__(541),\n toString = __webpack_require__(565);\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(71),\n isObjectLike = __webpack_require__(59);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(72);\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar listCacheClear = __webpack_require__(555),\n listCacheDelete = __webpack_require__(556),\n listCacheGet = __webpack_require__(557),\n listCacheHas = __webpack_require__(558),\n listCacheSet = __webpack_require__(559);\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eq = __webpack_require__(110);\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isKeyable = __webpack_require__(561);\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(283);\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n/***/ }),\n/* 138 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return UNFULFILLED_PROMISE_EVENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return nrEmitter; });\nvar NOOP = function NOOP() {};\nvar env = Object({\"NODE_ENV\":\"production\"});\nvar nrEmitter = void 0;\nif (false) {\n var newRelic = require('newrelic');\n var EventEmitter = require('events');\n nrEmitter = new EventEmitter();\n // newRelicEmitter.on(UNFULFILLED_PROMISE_EVENT, (err) => {\n // newRelic.noticeError(err);\n // });\n} else {\n nrEmitter = { emit: NOOP };\n}\n\nvar UNFULFILLED_PROMISE_EVENT = 'unfulfilledPromise';\n\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = $getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n ReflectApply(this.listener, this.target, args);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeKeys = __webpack_require__(313),\n baseKeys = __webpack_require__(200),\n isArrayLike = __webpack_require__(51);\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(39),\n stubFalse = __webpack_require__(653);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(108)(module)))\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsTypedArray = __webpack_require__(654),\n baseUnary = __webpack_require__(301),\n nodeUtil = __webpack_require__(655);\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = streamHasDTCPackage;\nfunction streamHasDTCPackage() {\n var stream = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var packageName = arguments[1];\n\n if (stream.packages && packageName) {\n return stream.packages.indexOf(packageName) > -1;\n }\n return false;\n};\n\n/***/ }),\n/* 144 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getBamAuthConfig;\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * getBamAuthConfig - returns a proper formatted auth object containing the token and swid keys.\n * Defaults to null values if id_token and swid values are undefined\n * @param {boolean} oneIdTokenObject = {} - Object containing both token and swid data\n * @param {object} passOneIdToken = false - Boolean flag to determine if a oneIdToken was passed\n * @param {array} userAuth = [] or array list of user auth types\n * @return {object}\n */\nfunction getBamAuthConfig() {\n var oneIdTokenObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var passOneIdToken = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var userAuth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n var authObject = {\n auth: {\n token: null,\n swid: null,\n userAuth: userAuth\n }\n };\n\n if (passOneIdToken === true && (typeof oneIdTokenObject === 'undefined' ? 'undefined' : _typeof(oneIdTokenObject)) === 'object') {\n var _oneIdTokenObject$id_ = oneIdTokenObject.id_token,\n id_token = _oneIdTokenObject$id_ === undefined ? null : _oneIdTokenObject$id_,\n _oneIdTokenObject$swi = oneIdTokenObject.swid,\n swid = _oneIdTokenObject$swi === undefined ? null : _oneIdTokenObject$swi;\n\n authObject = _extends({}, authObject, { auth: { token: id_token, swid: swid, userAuth: userAuth } });\n }\n\n return authObject;\n};\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIteratee = __webpack_require__(114),\n baseUniq = __webpack_require__(322);\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n\n\n/***/ }),\n/* 146 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export isEspnPlusExecAccount */\n/* unused harmony export isEspnPlusTDA */\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = checkESPNPlusAuthentication;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = shallowCheckAuthentication;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_intersection__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_intersection___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash_intersection__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__enums__ = __webpack_require__(1);\n\n\n\n/**\n * Verifies if the user's authenticated entitlements contain the Exectuive entitlement.\n * @param {array} userAuth - array of entitlements\n * @returns {boolean}\n */\nfunction isEspnPlusExecAccount() {\n var userAuth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return !!userAuth.length && userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_1__enums__[\"s\" /* Entitlements */].ESPN_EXEC) !== -1;\n}\n\n/**\n * Verifies if the user's authenticated entitlements contain TDA entitlement.\n * @param {array} userAuth - array of entitlements\n * @returns {boolean}\n */\nfunction isEspnPlusTDA() {\n var userAuth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return !!userAuth.length && userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_1__enums__[\"s\" /* Entitlements */].ESPN_TDA) !== -1;\n}\n\nfunction checkESPNPlusAuthentication() {\n var stream = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var userAuth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var authTypes = stream.authTypes,\n _stream$packages = stream.packages,\n packages = _stream$packages === undefined ? [] : _stream$packages;\n\n if (authTypes.indexOf(__WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].BAM) === -1) {\n return false;\n }\n\n if (packages.length === 0) {\n return true;\n }\n\n var userAuthForESPNPlus = userAuth.filter(function (auth) {\n return auth.indexOf(__WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].MVPD) === -1 && auth.indexOf(__WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].ISP) === -1;\n });\n\n // NOTE: For `Executive` accounts we always allow access to all content\n if (isEspnPlusExecAccount(userAuth)) {\n return true;\n }\n\n // For TDA accounts, allow access to all content\n if (isEspnPlusTDA(userAuth)) {\n return true;\n }\n\n if (packages.length === 1 && userAuthForESPNPlus.indexOf(packages[0]) > -1) {\n return true;\n }\n\n if (__WEBPACK_IMPORTED_MODULE_0_lodash_intersection___default()(packages, userAuthForESPNPlus).length > 0) {\n return true;\n }\n\n return false;\n}\n/**\n * Checks a user's authentication status for a given content based on what is available in state.\n * It is shallow because it doesn't fetch any additional data, just calculates based on what we have already.\n *\n * @param {array} authTypes - Destructured from content object. The authTypes required to watch this content\n * @param {array} userAuth - The authTypes a user has at this given moment\n * @param {boolean} optimistic - Returns true if a user's authTypes are currently unknown\n */\n\nfunction shallowCheckAuthentication() {\n var stream = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var userAuth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var optimisitic = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var authTypes = stream.authTypes,\n _stream$source = stream.source,\n source = _stream$source === undefined ? '' : _stream$source;\n // if a content does not have authTypes, it's available for everyone\n\n if (!authTypes || authTypes.length === 0 || authTypes.some(function (authType) {\n return authType === __WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].OPEN;\n })) {\n return true;\n }\n\n // E+ content in legacy app\n if (authTypes.indexOf(__WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].MVPD) > -1 && source === 'ESPN+') {\n return false;\n }\n\n // check if a user's authTypes intersects with a content's authTypes\n if (userAuth && authTypes) {\n var ESPNPlusAuthentication = checkESPNPlusAuthentication(stream, userAuth);\n\n return ESPNPlusAuthentication || authTypes.some(function (authType) {\n return userAuth.indexOf(authType) !== -1 || userAuth.indexOf('unknown_' + authType) !== -1 && optimisitic;\n });\n }\n\n // if we got here, we didn't have all the information to shallow check auth\n return optimisitic;\n};\n\n/***/ }),\n/* 147 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_router__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_router___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_router__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__selectors_flagsSelector__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_format_addQueryToUrl__ = __webpack_require__(70);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\n\n\n\n\n\nvar LinkWithFlags = function LinkWithFlags(props) {\n var ownProps = props.ownProps,\n flags = props.flags,\n toArg = props.to;\n\n var to = void 0;\n if ((typeof toArg === 'undefined' ? 'undefined' : _typeof(toArg)) === 'object') {\n to = _extends({}, toArg, {\n query: _extends({}, toArg.query, flags)\n });\n } else {\n to = Object(__WEBPACK_IMPORTED_MODULE_4__lib_format_addQueryToUrl__[\"a\" /* default */])(toArg, flags);\n }\n var newProps = _extends({}, ownProps, {\n to: to\n });\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_2_react_router__[\"Link\"], newProps);\n};\n\nLinkWithFlags.defaultProps = __WEBPACK_IMPORTED_MODULE_2_react_router__[\"Link\"].defaultProps;\n\nvar mapStateToProps = function mapStateToProps(state, ownProps) {\n return {\n ownProps: ownProps,\n flags: Object(__WEBPACK_IMPORTED_MODULE_3__selectors_flagsSelector__[\"a\" /* persistentFlagsSelector */])(state)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(LinkWithFlags));\n\n/***/ }),\n/* 148 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n\n\nvar playingStreamSelector = function playingStreamSelector(_ref) {\n var app = _ref.app;\n return app.playingStream || {};\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(playingStreamSelector, function (playingStream) {\n return playingStream;\n}));\n\n/***/ }),\n/* 149 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_find__ = __webpack_require__(717);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_find___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_find__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_merge__ = __webpack_require__(719);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_merge___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_lodash_merge__);\n\n\n\n\n\nvar pickerStreamsSelector = function pickerStreamsSelector(_ref) {\n var app = _ref.app;\n return app.pickerStreams;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(pickerStreamsSelector, function () {\n var pickerStreams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (pickerStreams.length > 0) {\n pickerStreams.forEach(function (item) {\n if (Array.isArray(item.contents) && item.contents.length > 0) {\n item.contents.forEach(function (content) {\n // NOTE: Merges first matching nested `stream` object to the parent to ensure we have\n // all the metadata the players need for UI and playback such as `authTypes` and `packages`\n if (Array.isArray(content.streams) && content.streams.length > 0 && content.id) {\n var id = content.id,\n streams = content.streams;\n\n var matchingStream = __WEBPACK_IMPORTED_MODULE_1_lodash_find___default()(streams, { id: id });\n\n if (matchingStream) {\n __WEBPACK_IMPORTED_MODULE_2_lodash_merge___default()(content, matchingStream);\n }\n }\n });\n }\n });\n }\n\n return pickerStreams;\n}));\n\n/***/ }),\n/* 150 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_classnames__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__AdContainer__ = __webpack_require__(218);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\nvar InContentAd = function InContentAd(props) {\n var className = __WEBPACK_IMPORTED_MODULE_1_classnames___default()('ad-slot-incontent ad-wrapper', props.adClassName);\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_2__AdContainer__[\"a\" /* default */], _extends({\n className: className,\n slotType: 'incontent',\n kvps: { pos: 'incontent' },\n render: InContentAd.render\n }, props));\n};\n\n// This pattern is for AdContainer to give control to disable ads based on global state\nInContentAd.render = function (children) {\n return _jsx('div', {\n className: 'ad-wrapper'\n }, void 0, _jsx('article', {\n className: 'ad-300'\n }, void 0, _jsx('div', {\n className: 'ad-center'\n }, void 0, children)));\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (InContentAd);\n\n/***/ }),\n/* 151 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contentSubtitle__ = __webpack_require__(351);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return __WEBPACK_IMPORTED_MODULE_0__contentSubtitle__[\"a\"]; });\n/* eslint-disable import/prefer-default-export */\n\n\n/***/ }),\n/* 152 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./app/constants.js\nvar constants = __webpack_require__(8);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/common/PropTypes.js\nvar PropTypes = __webpack_require__(28);\n\n// EXTERNAL MODULE: ./app/common/selectors/heroSelector.js\nvar heroSelector = __webpack_require__(56);\n\n// EXTERNAL MODULE: ./app/common/ResponsiveThumbnail.js\nvar ResponsiveThumbnail = __webpack_require__(222);\n\n// EXTERNAL MODULE: ./app/webapp/player/connectPlayer.js\nvar connectPlayer = __webpack_require__(223);\n\n// EXTERNAL MODULE: ./app/common/page/hero/ContentMetadataLarge.js\nvar ContentMetadataLarge = __webpack_require__(354);\n\n// EXTERNAL MODULE: ./app/webapp/lib/format/index.js\nvar format = __webpack_require__(151);\n\n// EXTERNAL MODULE: ./app/lib/util/isEmpty.js\nvar isEmpty = __webpack_require__(12);\n\n// CONCATENATED MODULE: ./app/webapp/page/hero/Hero.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar IMAGE_WIDTHS = [400, 640, 1200, 1800];\n\n// this needs to be a class because we're connecting a player to it\n\nvar Hero_Hero = function (_Component) {\n _inherits(Hero, _Component);\n\n function Hero() {\n _classCallCheck(this, Hero);\n\n return _possibleConstructorReturn(this, (Hero.__proto__ || Object.getPrototypeOf(Hero)).apply(this, arguments));\n }\n\n _createClass(Hero, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n content = _props.content,\n selectedStream = _props.selectedStream,\n playingStream = _props.playingStream,\n clickHandler = _props.clickHandler,\n userIsBlackedOut = _props.userIsBlackedOut,\n showLock = _props.showLock;\n\n var stream = !Object(isEmpty[\"a\" /* default */])(playingStream) ? playingStream : selectedStream;\n var contentId = content.id,\n contentName = content.name,\n contentScore = content.score,\n contentStatus = content.status;\n\n\n var imageHref = Object(heroSelector[\"b\" /* heroImageSelector */])(content);\n var _stream$id = stream.id,\n id = _stream$id === undefined ? contentId : _stream$id,\n _stream$name = stream.name,\n name = _stream$name === undefined ? contentName : _stream$name,\n _stream$score = stream.score,\n score = _stream$score === undefined ? contentScore : _stream$score,\n _stream$status = stream.status,\n status = _stream$status === undefined ? contentStatus : _stream$status;\n\n var isPlayable = !userIsBlackedOut;\n var title = content.name;\n var subtitle = Object(format[\"a\" /* contentSubtitle */])(content);\n\n var playButtonClasses = classnames_default()({\n 'button-play button-play--video': isPlayable,\n 'button-play--live': isPlayable && status === enums[\"n\" /* ContentStatus */].LIVE\n });\n\n var blurredImage = _jsx(ResponsiveThumbnail[\"a\" /* default */], {\n className: 'hero_img hero_img--blurred',\n src: imageHref,\n srcSetWidths: IMAGE_WIDTHS,\n sizes: '100vw',\n alt: name\n });\n\n var hero = id ? _jsx('article', {\n className: 'hero--super',\n 'data-score': score\n }, void 0, react_default.a.createElement(\n 'figure',\n { className: 'hero_wrapper', ref: 'playerContainer' },\n _jsx('a', {\n className: 'col-a'\n }, void 0, _jsx('div', {\n onClick: isPlayable && clickHandler,\n id: 'hero-' + id\n }, void 0, _jsx(ResponsiveThumbnail[\"a\" /* default */], {\n className: 'hero_img',\n src: imageHref,\n srcSetWidths: IMAGE_WIDTHS,\n sizes: '100vw',\n alt: name\n }), _jsx('div', {\n className: playButtonClasses\n })))\n ), _jsx(ContentMetadataLarge[\"a\" /* default */], {\n blurredImage: blurredImage,\n title: title,\n subtitle: subtitle,\n content: content,\n isHero: true,\n showLock: showLock,\n userIsBlackedOut: userIsBlackedOut\n })) : null;\n\n return _jsx('div', {}, void 0, hero);\n }\n }]);\n\n return Hero;\n}(react[\"Component\"]);\n\nHero_Hero.defaultProps = {\n clickHandler: function clickHandler(event) {\n event.preventDefault();\n }\n};\n\n/* harmony default export */ var hero_Hero = (Object(connectPlayer[\"a\" /* default */])(Hero_Hero));\n// EXTERNAL MODULE: ./app/common/search/SearchContainer.js + 3 modules\nvar SearchContainer = __webpack_require__(154);\n\n// EXTERNAL MODULE: ./app/webapp/scheduleModule/ScheduleModuleContainer.js + 8 modules\nvar ScheduleModuleContainer = __webpack_require__(337);\n\n// EXTERNAL MODULE: ./app/webapp/common/playable.js + 2 modules\nvar playable = __webpack_require__(64);\n\n// CONCATENATED MODULE: ./app/webapp/common/BAMIFrame.js\nvar BAMIFrame__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar BAMIFrame = function BAMIFrame(_ref) {\n var id = _ref.id,\n src = _ref.src;\n\n var content = src && BAMIFrame__jsx('iframe', {\n src: src\n });\n return BAMIFrame__jsx('div', {\n id: id\n }, void 0, content);\n};\n\n/* harmony default export */ var common_BAMIFrame = (BAMIFrame);\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./app/common/selectors/pageSelector.js\nvar pageSelector = __webpack_require__(13);\n\n// EXTERNAL MODULE: ./app/common/selectors/analyticsSelectors.js\nvar analyticsSelectors = __webpack_require__(54);\n\n// EXTERNAL MODULE: ./app/common/actions/authenticationActions.js\nvar authenticationActions = __webpack_require__(22);\n\n// CONCATENATED MODULE: ./app/common/page/common/TopLayoutContainer.js\n/* unused harmony export BaseTopLayoutContainer */\nvar TopLayoutContainer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar TopLayoutContainer__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction TopLayoutContainer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction TopLayoutContainer__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction TopLayoutContainer__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PlayableHero = Object(playable[\"a\" /* default */])(hero_Hero);\n\nvar TopLayoutContainer_TopLayoutContainer = function (_PureComponent) {\n TopLayoutContainer__inherits(TopLayoutContainer, _PureComponent);\n\n function TopLayoutContainer(props) {\n TopLayoutContainer__classCallCheck(this, TopLayoutContainer);\n\n var _this = TopLayoutContainer__possibleConstructorReturn(this, (TopLayoutContainer.__proto__ || Object.getPrototypeOf(TopLayoutContainer)).call(this, props));\n\n _this.state = {\n promoShown: false\n };\n return _this;\n }\n\n TopLayoutContainer__createClass(TopLayoutContainer, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n var promoShown = this.state.promoShown;\n var dispatch = this.props.dispatch;\n // can't use `ref` for stateless component(BAMIFrame), so checking against real DOM element\n\n if (!promoShown && this.showPromo && document.getElementById(constants[\"b\" /* BAM_PROMO_IFRAME_ID */])) {\n dispatch(Object(authenticationActions[\"M\" /* createDTCPaywallAction */])({\n containerId: constants[\"b\" /* BAM_PROMO_IFRAME_ID */]\n }));\n if (!this.state.promoShown) {\n this.promoShown();\n }\n }\n }\n }, {\n key: 'promoShown',\n value: function promoShown() {\n this.setState({ promoShown: true });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n heroArg = _props.hero,\n apiEnv = _props.apiEnv,\n showSearch = _props.showSearch,\n entitlementsTracking = _props.entitlementsTracking;\n\n var hero = null;\n var search = null;\n var scheduleModule = null;\n\n if (this.showPromo) {\n hero = TopLayoutContainer__jsx(common_BAMIFrame, {\n id: constants[\"b\" /* BAM_PROMO_IFRAME_ID */]\n });\n } else if (!Object(isEmpty[\"a\" /* default */])(heroArg)) {\n hero = TopLayoutContainer__jsx(PlayableHero, {\n content: heroArg,\n playerPlacement: enums[\"B\" /* PlayerPlacement */].HERO,\n placement: 'inline-hero',\n isHero: true\n });\n }\n if (hero) {\n search = TopLayoutContainer__jsx(SearchContainer[\"a\" /* default */], {\n apiEnv: apiEnv,\n entitlementsTracking: entitlementsTracking,\n pageType: enums[\"y\" /* PageType */].HOME,\n enabled: showSearch\n });\n scheduleModule = TopLayoutContainer__jsx(ScheduleModuleContainer[\"a\" /* default */], {});\n }\n var colCClassName = showSearch ? 'col-c' : 'col-c no-search';\n return TopLayoutContainer__jsx('div', {\n className: 'layout-bc'\n }, void 0, TopLayoutContainer__jsx('section', {\n className: 'mobile-tablet-only'\n }, void 0, search), TopLayoutContainer__jsx('section', {\n className: 'col-b'\n }, void 0, hero), TopLayoutContainer__jsx('section', {\n className: colCClassName\n }, void 0, search, scheduleModule));\n }\n }, {\n key: 'showPromo',\n get: function get() {\n var _props2 = this.props,\n id = _props2.page.id,\n showPromoArg = _props2.showPromo;\n\n return showPromoArg && id === 'espnplus';\n }\n }]);\n\n return TopLayoutContainer;\n}(react[\"PureComponent\"]);\n\nvar TopLayoutContainer_mapStateToProps = function mapStateToProps(state) {\n return {\n page: Object(pageSelector[\"c\" /* default */])(state),\n hero: Object(heroSelector[\"a\" /* default */])(state),\n showSearch: Object(appSelector[\"l\" /* enableSearchSelector */])(state),\n showPromo: Object(pageSelector[\"g\" /* showPromoSelector */])(state),\n apiEnv: Object(appSelector[\"c\" /* apiEnvSelector */])(state),\n entitlementsTracking: Object(analyticsSelectors[\"c\" /* entitlementsTrackingSelector */])(state)\n };\n};\n\n/* harmony default export */ var common_TopLayoutContainer = __webpack_exports__[\"a\"] = (Object(es[\"b\" /* connect */])(TopLayoutContainer_mapStateToProps)(TopLayoutContainer_TopLayoutContainer));\n\n\n/***/ }),\n/* 153 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return autoPlaySelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return lastFeedsSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return playerAdsConfigSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return prerollConfigSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return recommendMobileWebSelector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return dssPlayerMutedSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__selectedStreamSelector__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__adsSelector__ = __webpack_require__(309);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__lib_util_getAndroidVersionFromUserAgent__ = __webpack_require__(327);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__lib_util_getPrerollConfigByEdition__ = __webpack_require__(330);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__lib_util_getAdsConfigByEdition__ = __webpack_require__(329);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__lib_util_getAdsConfigByAdProvider__ = __webpack_require__(331);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__lib_util_hasTier__ = __webpack_require__(332);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar playerSelector = function playerSelector(_ref) {\n var _ref$player = _ref.player,\n player = _ref$player === undefined ? {} : _ref$player;\n return player;\n};\n\n/* harmony default export */ __webpack_exports__[\"b\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(playerSelector, function (player) {\n return player;\n}));\n\nvar autoPlaySelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_2__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_4__selectedStreamSelector__[\"a\" /* default */], function (_ref2) {\n var isMobile = _ref2.isMobile,\n _ref2$location = _ref2.location;\n _ref2$location = _ref2$location === undefined ? {} : _ref2$location;\n var _ref2$location$query = _ref2$location.query;\n _ref2$location$query = _ref2$location$query === undefined ? {} : _ref2$location$query;\n var autoplay = _ref2$location$query.autoplay;\n var selectedStream = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // set `autoplay` to false for the first mobile/tablet playback\n // until Brightcove fixes the issue where the player incorrectly detects the device is auto-playable.\n // TODO: remove this once Brightcove player fixes the mobile/tablet playback.\n if (isMobile) {\n return false;\n }\n\n if (autoplay != null) {\n return autoplay;\n }\n\n // The selectedStream used for playback does not get autoplayed if the tier property is not primary\n if (!Object(__WEBPACK_IMPORTED_MODULE_12__lib_util_hasTier__[\"a\" /* default */])(selectedStream, 'primary') && selectedStream.content && selectedStream.content.type !== __WEBPACK_IMPORTED_MODULE_1__enums__[\"o\" /* ContentType */].VOD) {\n return false;\n }\n\n return true;\n});\n\nvar lastFeedsSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(playerSelector, function (_ref3) {\n var feeds = _ref3.feeds;\n return feeds;\n});\n\nvar playerAdsConfigSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_7__adsSelector__[\"a\" /* adSiteSelector */], __WEBPACK_IMPORTED_MODULE_3__pageSelector__[\"f\" /* pagePathWithPageId */], __WEBPACK_IMPORTED_MODULE_5__bootstrapSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__appSelector__[\"j\" /* default */], __WEBPACK_IMPORTED_MODULE_2__appSelector__[\"k\" /* editionSelector */], function (adSite, pathWithId, _ref4, _ref5, _ref6) {\n var _ref4$syndicatedPlaye = _ref4.syndicatedPlayer;\n _ref4$syndicatedPlaye = _ref4$syndicatedPlaye === undefined ? {} : _ref4$syndicatedPlaye;\n var _ref4$syndicatedPlaye2 = _ref4$syndicatedPlaye.adsConfig,\n adsConfig = _ref4$syndicatedPlaye2 === undefined ? {} : _ref4$syndicatedPlaye2;\n var _ref5$location = _ref5.location;\n _ref5$location = _ref5$location === undefined ? {} : _ref5$location;\n var _ref5$location$query = _ref5$location.query,\n query = _ref5$location$query === undefined ? {} : _ref5$location$query;\n var _ref6$edition = _ref6.edition,\n edition = _ref6$edition === undefined ? 'us' : _ref6$edition;\n\n var adProviderOverride = query[__WEBPACK_IMPORTED_MODULE_1__enums__[\"t\" /* Flags */].VIDEO_ADS_PROVIDER];\n var configByEdition = Object(__WEBPACK_IMPORTED_MODULE_10__lib_util_getAdsConfigByEdition__[\"a\" /* default */])(edition, adsConfig);\n var configByAdProvider = Object(__WEBPACK_IMPORTED_MODULE_11__lib_util_getAdsConfigByAdProvider__[\"a\" /* default */])(adProviderOverride, configByEdition);\n var isActiveAdProviderGoogle = typeof configByAdProvider.activeAdProvider === 'string' && configByAdProvider.activeAdProvider.toLowerCase().indexOf('google') !== -1;\n // NOTE: Appending `adUnit` only for Google Ad Manager\n if (adSite && isActiveAdProviderGoogle) {\n configByAdProvider = _extends({}, configByAdProvider, { adUnit: '' + adSite + pathWithId });\n }\n\n if (isActiveAdProviderGoogle) {\n var cmsidOverride = query[__WEBPACK_IMPORTED_MODULE_1__enums__[\"t\" /* Flags */].VIDEO_ADS_CMSID];\n var networkCodeOverride = query[__WEBPACK_IMPORTED_MODULE_1__enums__[\"t\" /* Flags */].VIDEO_ADS_NETWORK_CODE];\n var adUnitOverride = query[__WEBPACK_IMPORTED_MODULE_1__enums__[\"t\" /* Flags */].VIDEO_ADS_AD_UNIT];\n\n configByAdProvider.cmsid = cmsidOverride || configByAdProvider.cmsid;\n configByAdProvider.networkCode = networkCodeOverride || configByAdProvider.networkCode;\n configByAdProvider.adUnit = adUnitOverride || configByAdProvider.adUnit;\n }\n\n return configByAdProvider;\n});\n\nvar prerollConfigSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__bootstrapSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__oneIdSelector__[\"d\" /* oneIdEntitlementsSelector */], __WEBPACK_IMPORTED_MODULE_2__appSelector__[\"k\" /* editionSelector */], __WEBPACK_IMPORTED_MODULE_4__selectedStreamSelector__[\"a\" /* default */], function (_ref7) {\n var _ref7$preRoll = _ref7.preRoll;\n _ref7$preRoll = _ref7$preRoll === undefined ? {} : _ref7$preRoll;\n var _ref7$preRoll$edition = _ref7$preRoll.editions,\n prerollConfigEditionMap = _ref7$preRoll$edition === undefined ? {} : _ref7$preRoll$edition;\n var entitlements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var _ref8 = arguments[2];\n var _ref8$edition = _ref8.edition,\n edition = _ref8$edition === undefined ? 'us' : _ref8$edition;\n var selectedStream = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var defaultInterval = 0;\n var intervals = {};\n var exportedConfig = {};\n var _selectedStream$conte = selectedStream.content,\n content = _selectedStream$conte === undefined ? {} : _selectedStream$conte;\n\n var contentType = content.type || null;\n var prerollEditionConfig = Object(__WEBPACK_IMPORTED_MODULE_9__lib_util_getPrerollConfigByEdition__[\"a\" /* default */])(edition, prerollConfigEditionMap);\n var prerollContentTypeConfig = contentType ? prerollEditionConfig[contentType] : null;\n\n if (prerollContentTypeConfig) {\n // Use defaults from contentType match\n intervals = prerollContentTypeConfig.intervals;\n if (intervals && intervals.default) {\n defaultInterval = intervals.default;\n }\n\n // Merge initial config with new contentType config\n exportedConfig.contentType = content.type;\n exportedConfig = _extends({}, exportedConfig, prerollContentTypeConfig);\n }\n\n var rate = entitlements.map(function (packageName) {\n return intervals[packageName];\n }).reduce(function (minRate) {\n var packageRate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return Math.min(minRate, packageRate);\n }, defaultInterval);\n\n // Add numerical rate and boolean flag to enable/disable preroll\n exportedConfig.calculatedRate = rate;\n exportedConfig.enablePreroll = rate >= 1;\n\n return exportedConfig;\n});\n\nvar recommendMobileWebSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_2__appSelector__[\"p\" /* intlAppSelector */], function (intlApp) {\n return intlApp && Object(__WEBPACK_IMPORTED_MODULE_8__lib_util_getAndroidVersionFromUserAgent__[\"a\" /* default */])() < 5.0;\n});\n\nvar dssPlayerMutedSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_5__bootstrapSelector__[\"a\" /* default */], function (_ref9) {\n var _ref9$syndicatedPlaye = _ref9.syndicatedPlayer;\n _ref9$syndicatedPlaye = _ref9$syndicatedPlaye === undefined ? {} : _ref9$syndicatedPlaye;\n var _ref9$syndicatedPlaye2 = _ref9$syndicatedPlaye.dssPlayer;\n _ref9$syndicatedPlaye2 = _ref9$syndicatedPlaye2 === undefined ? {} : _ref9$syndicatedPlaye2;\n var muted = _ref9$syndicatedPlaye2.muted;\n return muted;\n});\n\n/***/ }),\n/* 154 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/react-router/lib/index.js\nvar lib = __webpack_require__(85);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// EXTERNAL MODULE: ./app/common/actions/apiAction.js\nvar apiAction = __webpack_require__(55);\n\n// CONCATENATED MODULE: ./app/common/Tag.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\nvar Tag_Tag = function Tag(_ref) {\n var content = _ref.content,\n formatMessage = _ref.intl.formatMessage,\n messages = _ref.messages,\n userIsBlackedOut = _ref.userIsBlackedOut;\n var status = content.status,\n streams = content.streams,\n type = content.type;\n\n\n var classes = classnames_default()('search__results__bug', { 'search__results__bug--live': status === enums[\"n\" /* ContentStatus */].LIVE }, { 'search__results__bug--blackout': userIsBlackedOut });\n\n var tagContent = null;\n\n if (userIsBlackedOut) {\n tagContent = formatMessage(messages.blackout).toUpperCase();\n } else if (type === enums[\"o\" /* ContentType */].VOD) {\n tagContent = streams[0].duration;\n } else {\n tagContent = status.toUpperCase();\n }\n\n return _jsx('span', {\n className: classes\n }, void 0, tagContent);\n};\n\n/* harmony default export */ var common_Tag = (Object(injectIntl[\"a\" /* default */])(Tag_Tag));\n// EXTERNAL MODULE: ./app/webapp/lib/format/index.js\nvar format = __webpack_require__(151);\n\n// EXTERNAL MODULE: ./app/webapp/common/playable.js + 2 modules\nvar playable = __webpack_require__(64);\n\n// CONCATENATED MODULE: ./app/common/search/SuggestionItem.js\nvar SuggestionItem__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\nvar liStyle = {\n textAlign: 'left',\n position: 'relative'\n};\n\nvar SuggestionItem_SuggestionItem = function (_Component) {\n _inherits(SuggestionItem, _Component);\n\n function SuggestionItem(props) {\n _classCallCheck(this, SuggestionItem);\n\n var _this = _possibleConstructorReturn(this, (SuggestionItem.__proto__ || Object.getPrototypeOf(SuggestionItem)).call(this, props));\n\n _this.handleSuggestionOnClick = _this.handleSuggestionOnClick.bind(_this);\n _this.handleMouseEnter = _this.handleMouseEnter.bind(_this);\n return _this;\n }\n\n _createClass(SuggestionItem, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _props = this.props,\n enterPressed = _props.enterPressed,\n isSelected = _props.isSelected;\n\n if (nextProps.enterPressed && enterPressed !== nextProps.enterPressed && isSelected) {\n this.handleSuggestionOnClick();\n }\n }\n }, {\n key: 'handleMouseEnter',\n value: function handleMouseEnter() {\n this.props.handleItemEnter(this.props.index);\n }\n }, {\n key: 'isUserBlackedOut',\n value: function isUserBlackedOut() {\n var _props$content = this.props.content;\n _props$content = _props$content === undefined ? {} : _props$content;\n var _props$content$stream = _props$content.streams,\n streams = _props$content$stream === undefined ? [] : _props$content$stream;\n\n // do not label the content as `blackout` unless all the streams are blacked out\n\n if (streams.length && streams.every(function (stream) {\n return !!stream.blackoutText;\n })) {\n return true;\n }\n return false;\n }\n }, {\n key: 'handleSuggestionOnClick',\n value: function handleSuggestionOnClick() {\n this.props.handleClick(this.props.content);\n this.props.clickHandler();\n }\n\n // const SuggestionItem = ({ content, handleClick, hideKey, pageType, isSelected }) => {\n\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n content = _props2.content,\n pageType = _props2.pageType,\n isSelected = _props2.isSelected,\n handleItemLeave = _props2.handleItemLeave;\n\n var formattedSubtitle = Object(format[\"a\" /* contentSubtitle */])(content);\n var subtitleEl = formattedSubtitle ? SuggestionItem__jsx('span', {}, void 0, formattedSubtitle) : null;\n var userIsBlackedOut = this.isUserBlackedOut();\n\n var status = '';\n var tag = void 0;\n var metaDataClass = void 0;\n var type = content.type;\n\n switch (type) {\n case enums[\"o\" /* ContentType */].LISTING:\n status = content.status;\n tag = SuggestionItem__jsx(common_Tag, {\n content: content,\n pageType: pageType,\n userIsBlackedOut: userIsBlackedOut\n });\n metaDataClass = classnames_default()('collection_item_meta', 'icon-font-before', {\n 'icon-lock-solid-before': content.isLocked\n });\n break;\n case enums[\"o\" /* ContentType */].TERM:\n break;\n case enums[\"o\" /* ContentType */].VOD:\n tag = SuggestionItem__jsx(common_Tag, {\n content: content,\n pageType: pageType\n });\n break;\n default:\n break;\n }\n var liClass = classnames_default()('search_results__item', { focused: isSelected });\n\n return SuggestionItem__jsx('li', {\n value: content.name,\n type: type,\n 'data-status': status,\n id: content.id,\n onClick: !userIsBlackedOut && this.handleSuggestionOnClick,\n onMouseEnter: !userIsBlackedOut && this.handleMouseEnter,\n onMouseLeave: !userIsBlackedOut && handleItemLeave,\n className: liClass,\n style: liStyle\n }, void 0, SuggestionItem__jsx('div', {}, void 0, SuggestionItem__jsx('a', {\n className: 'search_results__link'\n }, void 0, SuggestionItem__jsx('div', {\n className: 'search__results__linkContent'\n }, void 0, SuggestionItem__jsx('span', {\n className: 'search_results__keyword'\n }, void 0, content.name), SuggestionItem__jsx('div', {\n className: metaDataClass\n }, void 0, SuggestionItem__jsx('div', {\n className: 'collection_item_truncate'\n }, void 0, subtitleEl))), tag)));\n }\n }]);\n\n return SuggestionItem;\n}(react[\"Component\"]);\n\n/* harmony default export */ var search_SuggestionItem = (Object(playable[\"a\" /* default */])(SuggestionItem_SuggestionItem));\n// CONCATENATED MODULE: ./app/common/search/SearchSuggestionGroup.js\nvar SearchSuggestionGroup__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\nvar SearchSuggestionGroup_SearchSuggestionGroup = function SearchSuggestionGroup(_ref) {\n var suggestion = _ref.suggestion,\n handleClick = _ref.handleClick,\n pageType = _ref.pageType,\n offset = _ref.offset,\n selectedIndex = _ref.selectedIndex,\n handleItemEnter = _ref.handleItemEnter,\n handleItemLeave = _ref.handleItemLeave,\n enterPressed = _ref.enterPressed;\n var name = suggestion.name,\n type = suggestion.type,\n contents = suggestion.contents;\n\n var suggestionHeader = type !== 'terms' ? SearchSuggestionGroup__jsx('div', {\n className: 'search_results__header'\n }, void 0, name) : null;\n var classNames = type !== 'terms' ? 'search_results__suggestions search_results__suggestions--cat' : 'search_results__autocomplete';\n var suggestionText = contents.map(function (content, index) {\n return SearchSuggestionGroup__jsx(search_SuggestionItem, {\n content: content,\n handleClick: handleClick,\n isSelected: offset + index === selectedIndex,\n handleItemEnter: handleItemEnter,\n handleItemLeave: handleItemLeave,\n index: offset + index,\n pageType: pageType,\n enterPressed: enterPressed\n });\n });\n return SearchSuggestionGroup__jsx('div', {}, void 0, suggestionHeader, SearchSuggestionGroup__jsx('ul', {\n className: classNames\n }, void 0, suggestionText));\n};\n\n/* harmony default export */ var search_SearchSuggestionGroup = (SearchSuggestionGroup_SearchSuggestionGroup);\n// EXTERNAL MODULE: ./app/common/selectors/pageSelector.js\nvar pageSelector = __webpack_require__(13);\n\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./app/lib/omniture/index.js\nvar omniture = __webpack_require__(34);\n\n// CONCATENATED MODULE: ./app/common/search/SearchContainer.js\nvar SearchContainer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar SearchContainer__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction SearchContainer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction SearchContainer__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction SearchContainer__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SearchContainer_SearchComponent = function (_Component) {\n SearchContainer__inherits(SearchComponent, _Component);\n\n function SearchComponent(props) {\n SearchContainer__classCallCheck(this, SearchComponent);\n\n var _this = SearchContainer__possibleConstructorReturn(this, (SearchComponent.__proto__ || Object.getPrototypeOf(SearchComponent)).call(this, props));\n\n _this.handleSearchSubmit = _this.handleSearchSubmit.bind(_this);\n _this.handleSearchTermChange = _this.handleSearchTermChange.bind(_this);\n _this.handleInputOnBlur = _this.handleInputOnBlur.bind(_this);\n _this.handleMouseEnter = _this.handleMouseEnter.bind(_this);\n _this.handleMouseLeave = _this.handleMouseLeave.bind(_this);\n _this.handleArrowKeyDown = _this.handleArrowKeyDown.bind(_this);\n _this.handleSuggestionSelected = _this.handleSuggestionSelected.bind(_this);\n _this.routeToSearchTerm = _this.routeToSearchTerm.bind(_this);\n _this.setStateSearchTerm = _this.setStateSearchTerm.bind(_this);\n _this.handleFooterClick = _this.handleFooterClick.bind(_this);\n _this.handleMouseEnterItem = _this.handleMouseEnterItem.bind(_this);\n _this.handleMouseLeaveItem = _this.handleMouseLeaveItem.bind(_this);\n\n _this.state = {\n searchTerm: '',\n userEnteredText: '',\n suggestionBuckets: [],\n canCollapse: true,\n displaySuggestions: false,\n selectedIndex: -1,\n suggestionCount: 0,\n enterPressed: false,\n showFooter: true\n };\n return _this;\n }\n\n SearchContainer__createClass(SearchComponent, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n document.addEventListener('keydown', this.handleArrowKeyDown);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.handleArrowKeyDown);\n }\n }, {\n key: 'setStateSearchTerm',\n value: function setStateSearchTerm(term) {\n this.setState({ searchTerm: term, suggestionBuckets: [], displaySuggestions: false });\n }\n }, {\n key: 'handleSuggestionSelected',\n value: function handleSuggestionSelected(_ref) {\n var type = _ref.type,\n name = _ref.name,\n status = _ref.status;\n var enterPressed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _props = this.props,\n pageType = _props.pageType,\n entitlementsTracking = _props.entitlementsTracking;\n\n var fromHero = pageType !== enums[\"y\" /* PageType */].SEARCH;\n if (type === enums[\"o\" /* ContentType */].VOD || type === enums[\"o\" /* ContentType */].LISTING && (status === enums[\"n\" /* ContentStatus */].REPLAY || status === enums[\"n\" /* ContentStatus */].LIVE)) {\n var placement = pageType === enums[\"y\" /* PageType */].SEARCH ? 'search-page' : 'search-hero';\n Object(omniture[\"q\" /* trackSearch */])({\n type: type,\n status: status,\n isSuggestion: true,\n fromHero: fromHero,\n searchTerm: name,\n entitlementsTracking: entitlementsTracking\n });\n this.setState({ placement: placement, userInitiated: true, enterPressed: enterPressed });\n return;\n }\n Object(omniture[\"q\" /* trackSearch */])({\n isSuggestion: true,\n fromHero: fromHero,\n searchTerm: name,\n entitlementsTracking: entitlementsTracking\n });\n this.routeToSearchTerm(name);\n }\n }, {\n key: 'handleMouseEnter',\n value: function handleMouseEnter() {\n this.setState({ canCollapse: false });\n }\n }, {\n key: 'handleMouseLeave',\n value: function handleMouseLeave() {\n this.setState({ canCollapse: true });\n }\n }, {\n key: 'handleFooterClick',\n value: function handleFooterClick() {\n var searchTerm = this.state.userEnteredText;\n Object(omniture[\"q\" /* trackSearch */])({\n isSuggestion: true,\n fromHero: this.props.pageType !== enums[\"y\" /* PageType */].SEARCH,\n searchTerm: searchTerm,\n isViewAllResults: true,\n entitlementsTracking: this.props.entitlementsTracking\n });\n this.routeToSearchTerm(searchTerm);\n }\n }, {\n key: 'handleMouseEnterItem',\n value: function handleMouseEnterItem(index) {\n this.setState({ searchTerm: this.state.userEnteredText, selectedIndex: index });\n }\n }, {\n key: 'handleMouseLeaveItem',\n value: function handleMouseLeaveItem() {\n this.setState({ selectedIndex: -1 });\n }\n }, {\n key: 'routeToSearchTerm',\n value: function routeToSearchTerm(term) {\n this.setStateSearchTerm(term);\n if (this.props.pageType === enums[\"y\" /* PageType */].SID) {\n this.props.router.push('/sid/' + encodeURIComponent(term));\n } else {\n this.props.router.push('/search/' + encodeURIComponent(term));\n }\n }\n }, {\n key: 'handleSearchSubmit',\n value: function handleSearchSubmit(event) {\n event.preventDefault();\n if (this.state.selectedIndex !== -1) {\n var contents = this.state.suggestionBuckets.map(function (suggestion) {\n return suggestion.contents;\n }).reduce(function (cur, result) {\n return [].concat(_toConsumableArray(cur), _toConsumableArray(result));\n }, []);\n var content = contents[this.state.selectedIndex];\n this.handleSuggestionSelected(content, true);\n return;\n }\n if (this.state.searchTerm) {\n Object(omniture[\"q\" /* trackSearch */])({\n fromHero: this.props.pageType !== enums[\"y\" /* PageType */].SEARCH,\n searchTerm: this.state.searchTerm,\n entitlementsTracking: this.props.entitlementsTracking\n });\n this.routeToSearchTerm(this.state.searchTerm);\n }\n }\n }, {\n key: 'handleArrowKeyDown',\n value: function handleArrowKeyDown(event) {\n var keyCode = event.keyCode;\n\n if (!this.state.displaySuggestions || keyCode !== 38 && keyCode !== 40) {\n return;\n }\n event.preventDefault();\n var contents = this.state.suggestionBuckets.map(function (suggestion) {\n return suggestion.contents;\n }).reduce(function (cur, result) {\n return [].concat(_toConsumableArray(cur), _toConsumableArray(result));\n }, []);\n // 38 is UP\n if (keyCode === 38) {\n var newIndex = Math.max(this.state.selectedIndex - 1, 0);\n var content = contents[newIndex];\n this.setState({ selectedIndex: newIndex, searchTerm: content.suggestion });\n } else if (keyCode === 40) {\n var _newIndex = Math.min(this.state.suggestionCount - 1, this.state.selectedIndex + 1);\n var _content = contents[_newIndex];\n this.setState({ selectedIndex: _newIndex, searchTerm: _content.suggestion });\n }\n }\n }, {\n key: 'handleSearchTermChange',\n value: function handleSearchTermChange(event) {\n var _this2 = this;\n\n var searchTermQuery = event.target.value;\n // Updating the searchTerm to be used while searching by pressing 'enter' key,\n // and resetting suggestions to 0 for rendering\n // if somebody backspacspaces in the textbox\n this.setState({ userEnteredText: searchTermQuery, searchTerm: searchTermQuery, selectedIndex: -1 });\n\n // Suggestions are only returned when the query is 3 char or more long\n if (this.props.pageType === enums[\"y\" /* PageType */].SID) {\n var typeAhead = this.props.typeAhead;\n var teamSearchQuery = searchTermQuery.toLowerCase();\n var contents = typeAhead.filter(function (term) {\n return term.toLowerCase().indexOf(teamSearchQuery) !== -1;\n }).map(function (term, index) {\n return { name: term, id: index };\n });\n var sugBuckets = [{ name: 'Teams', type: 'terms', contents: contents }];\n this.setState({ suggestionBuckets: sugBuckets, displaySuggestions: true, suggestionCount: typeAhead.length });\n } else if (searchTermQuery.length > 2) {\n var _props2 = this.props,\n dispatch = _props2.dispatch,\n apiEnv = _props2.apiEnv;\n\n dispatch(Object(apiAction[\"i\" /* getSearchResults */])(searchTermQuery, apiEnv, apiAction[\"a\" /* SEARCH_TYPES */].suggest)).then(function (_ref2) {\n var _ref2$page$buckets = _ref2.page.buckets,\n buckets = _ref2$page$buckets === undefined ? [] : _ref2$page$buckets;\n\n var count = buckets.reduce(function (sum, bucket) {\n return sum + bucket.contents.length;\n }, 0);\n _this2.setState({ suggestionBuckets: buckets, displaySuggestions: true, suggestionCount: count });\n }).catch(function () {});\n } else {\n this.setState({ displaySuggestions: false, suggestionBuckets: [] });\n }\n }\n }, {\n key: 'handleInputOnBlur',\n value: function handleInputOnBlur() {\n if (this.state.canCollapse) {\n this.setState({ displaySuggestions: false });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props3 = this.props,\n enabled = _props3.enabled,\n messages = _props3.messages,\n formatMessage = _props3.intl.formatMessage,\n pageType = _props3.pageType;\n\n var searchClasses = classnames_default()('search-section', 'icon-font-before', 'icon-search-solid-before');\n var style = pageType === enums[\"y\" /* PageType */].SEARCH ? { width: '100%', margin: '0 auto 16px' } : { width: '100%', margin: '0 auto' };\n var suggestions = this.state.suggestionBuckets;\n var offset = 0;\n var suggestionElements = suggestions.map(function (suggestion) {\n var element = SearchContainer__jsx(search_SearchSuggestionGroup, {\n offset: offset,\n selectedIndex: _this3.state.selectedIndex,\n suggestion: suggestion,\n handleClick: _this3.handleSuggestionSelected,\n handleItemEnter: _this3.handleMouseEnterItem,\n handleItemLeave: _this3.handleMouseLeaveItem,\n pageType: pageType,\n enterPressed: _this3.state.enterPressed\n }, suggestion.name);\n offset += suggestion.contents.length;\n return element;\n });\n var footer = this.props.showFooter ? SearchContainer__jsx('footer', {}, void 0, SearchContainer__jsx('a', {\n onClick: this.handleFooterClick\n }, void 0, 'View All Results for ', this.state.userEnteredText)) : null;\n var suggestionsNode = this.state.displaySuggestions ? SearchContainer__jsx('div', {\n className: 'search_results search_results--active'\n }, void 0, SearchContainer__jsx('div', {\n className: 'search_results__wrapper'\n }, void 0, suggestionElements), footer) : null;\n\n return enabled ? SearchContainer__jsx('section', {\n style: style,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n className: searchClasses\n }, void 0, SearchContainer__jsx('form', {\n onSubmit: this.handleSearchSubmit\n }, void 0, SearchContainer__jsx('input', {\n type: 'text',\n autoComplete: 'off',\n placeholder: formatMessage(messages['search.placeholder']),\n name: 'search-section',\n value: this.state.searchTerm,\n onChange: this.handleSearchTermChange,\n onBlur: this.handleInputOnBlur\n })), suggestionsNode) : null;\n }\n }]);\n\n return SearchComponent;\n}(react[\"Component\"]);\n\nSearchContainer_SearchComponent.defaultProps = {\n enabled: false,\n typeAhead: [],\n showFooter: true\n};\n\nvar SearchContainer_mapStateToProps = function mapStateToProps(state) {\n return {\n apiEnv: Object(appSelector[\"c\" /* apiEnvSelector */])(state),\n typeAhead: Object(pageSelector[\"b\" /* competitorSelector */])(state)\n };\n};\n\n/* harmony default export */ var SearchContainer = __webpack_exports__[\"a\"] = (Object(lib[\"withRouter\"])(Object(injectIntl[\"a\" /* default */])(Object(es[\"b\" /* connect */])(SearchContainer_mapStateToProps)(SearchContainer_SearchComponent))));\n\n/***/ }),\n/* 155 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./app/common/actions/appActions.js\nvar appActions = __webpack_require__(19);\n\n// EXTERNAL MODULE: ./node_modules/react-modal/lib/index.js\nvar lib = __webpack_require__(363);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./app/webapp/modal/messaging/PopUpBlockerWarning.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar PopupBlockerWarning = function PopupBlockerWarning() {\n return _jsx('div', {}, void 0, _jsx('p', {}, void 0, 'It appears you have a pop-up blocker on that kept the video player from launching.'), _jsx('p', {}, void 0, 'Please allow pop-ups from www.espn.com in your browser settings or contact Customer Care at 888-549-ESPN if you need assistance.'));\n};\n\n/* harmony default export */ var PopUpBlockerWarning = (PopupBlockerWarning);\n// CONCATENATED MODULE: ./app/webapp/modal/messaging/FlashWarning.js\nvar FlashWarning__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar FlashWarning = function FlashWarning() {\n return FlashWarning__jsx('div', {}, void 0, FlashWarning__jsx('h2', {\n style: { color: 'black' }\n }, void 0, 'Insufficient Flash Player Requirements'), FlashWarning__jsx('div', {\n className: 'clr'\n }), FlashWarning__jsx('div', {}, void 0, FlashWarning__jsx('p', {}, void 0, 'Click below to download the latest version of Flash'), FlashWarning__jsx('p', {}, void 0, FlashWarning__jsx('a', {\n target: '_blank',\n rel: 'noopener noreferrer',\n href: 'http://get.adobe.com/flashplayer/'\n }, void 0, FlashWarning__jsx('img', {\n style: { display: 'block', marginLeft: 'auto', marginRight: 'auto', paddingTop: '10px' },\n alt: 'Get Adobe Flash Player',\n src: 'http://a.espncdn.com/espn3/images/watchespn/get_adobe_flash_player.png'\n })))));\n};\n\n/* harmony default export */ var messaging_FlashWarning = (FlashWarning);\n// EXTERNAL MODULE: ./config/index.js\nvar config = __webpack_require__(16);\nvar config_default = /*#__PURE__*/__webpack_require__.n(config);\n\n// CONCATENATED MODULE: ./app/webapp/modal/messaging/BlackoutMap.js\nvar BlackoutMap__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar secureCdnHost = config_default.a.secureCdnHost;\n\n\nvar fallbackUrl = secureCdnHost + '/espn3/images/watchespn/blackout-default-map.png';\n\nvar BlackoutMap = function BlackoutMap(props) {\n var content = props.content;\n var fallbackImgStyle = {\n backgroundImage: 'url(' + fallbackUrl + ')',\n height: '315px',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat'\n };\n var mapUrl = secureCdnHost + '/espn3/images/2010/blackout/' + content.id + '.jpg';\n return BlackoutMap__jsx('div', {}, void 0, BlackoutMap__jsx('div', {\n style: fallbackImgStyle\n }, void 0, BlackoutMap__jsx('img', {\n style: { height: '315px' },\n src: mapUrl,\n alt: 'Blackout map'\n })), BlackoutMap__jsx('div', {}, void 0, content.name, ' - ', content.date), BlackoutMap__jsx('div', {\n id: 'blackout-key'\n }, void 0, BlackoutMap__jsx('div', {\n className: 'channel',\n id: 'espn'\n }, void 0, BlackoutMap__jsx('img', {\n src: secureCdnHost + '/espn3/images/watchespn/key_lin_e3_available.png',\n alt: 'Available on ' + content.source\n }), '\\xA0Available on ', BlackoutMap__jsx('span', {\n id: 'linOnlyChan'\n }, void 0, content.source)), BlackoutMap__jsx('div', {\n className: 'channel',\n id: 'not-available'\n }, void 0, BlackoutMap__jsx('img', {\n src: secureCdnHost + '/espn3/images/watchespn/key_notavailable.png',\n alt: 'Not available'\n }), '\\xA0Not available')));\n};\n\n/* harmony default export */ var messaging_BlackoutMap = (BlackoutMap);\n// EXTERNAL MODULE: ./app/webapp/common/authenticationAware.js\nvar authenticationAware = __webpack_require__(224);\n\n// CONCATENATED MODULE: ./app/webapp/modal/messaging/BroadcastPicker.js\nvar BroadcastPicker__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\nvar BroadcastPicker_BroadcastPicker = function (_Component) {\n _inherits(BroadcastPicker, _Component);\n\n function BroadcastPicker(props) {\n _classCallCheck(this, BroadcastPicker);\n\n var _this = _possibleConstructorReturn(this, (BroadcastPicker.__proto__ || Object.getPrototypeOf(BroadcastPicker)).call(this, props));\n\n _this.getMetadataClass = _this.getMetadataClass.bind(_this);\n _this.renderMetaSource = _this.renderMetaSource.bind(_this);\n _this.renderBlackoutPill = _this.renderBlackoutPill.bind(_this);\n _this.handleClick = _this.handleClick.bind(_this);\n return _this;\n }\n\n _createClass(BroadcastPicker, [{\n key: 'getMetadataClass',\n value: function getMetadataClass() {\n var showLock = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var baseClass = this.props.baseClass;\n\n\n return classnames_default()(baseClass + '__meta', {\n 'icon-font-before icon-lock-solid-before': showLock\n });\n }\n }, {\n key: 'handleClick',\n value: function handleClick(stream, event) {\n event.preventDefault();\n\n var _props = this.props,\n dispatch = _props.dispatch,\n onSelectStreamTracking = _props.onSelectStreamTracking;\n\n // Avoids the `reselected` return logic when clicking the same stream\n\n dispatch(Object(appActions[\"P\" /* streamUnSelect */])());\n // In a multiple modal scenario, we need to dispatch a closeModal prior to stream selection\n dispatch(Object(appActions[\"y\" /* closeModalMessage */])());\n stream.feedSwitch = true;\n dispatch(Object(appActions[\"O\" /* streamSelect */])(stream));\n\n /**\n * onSelectStreamTracking is passed down from authenticationAware HOC component\n * When user selects the stream, onSelectStreamTracking in authenticationAware\n * HOC component got triggered. We need to check onSelectStreamTracking nil\n * value before calling it since if newrelic tracking is turned off in config,\n * onSelectStreamTracking will be passed as null value from HOC component\n */\n if (onSelectStreamTracking !== null) {\n onSelectStreamTracking(stream);\n }\n }\n }, {\n key: 'renderMetaSource',\n value: function renderMetaSource() {\n var stream = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _stream$source = stream.source;\n _stream$source = _stream$source === undefined ? {} : _stream$source;\n var name = _stream$source.name;\n\n\n return name ? BroadcastPicker__jsx('div', {\n className: this.getMetadataClass(stream.isLocked)\n }, void 0, BroadcastPicker__jsx('span', {}, void 0, name)) : null;\n }\n }, {\n key: 'renderBlackoutPill',\n value: function renderBlackoutPill() {\n var stream = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'BLACKOUT';\n // eslint-disable-line class-methods-use-this\n var _stream$blackoutText = stream.blackoutText,\n blackoutText = _stream$blackoutText === undefined ? '' : _stream$blackoutText,\n _stream$status = stream.status,\n status = _stream$status === undefined ? '' : _stream$status;\n\n var className = classnames_default()('media-duration media-duration--blackout', {\n 'media-duration--live': status === 'live'\n });\n\n return blackoutText && blackoutText !== '' ? BroadcastPicker__jsx('div', {\n className: className\n }, void 0, text) : null;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props2 = this.props,\n content = _props2.content,\n baseClass = _props2.baseClass;\n var _content$streams = content.streams,\n streams = _content$streams === undefined ? [] : _content$streams;\n\n\n return streams.length ? BroadcastPicker__jsx('div', {\n className: baseClass + '__wrapper'\n }, void 0, streams.map(function (stream) {\n return BroadcastPicker__jsx('div', {\n className: baseClass + '__item',\n onClick: function onClick(event) {\n return _this2.handleClick(stream, event);\n }\n }, stream.id, BroadcastPicker__jsx('div', {\n className: baseClass + '__item__name'\n }, void 0, BroadcastPicker__jsx('h2', {\n className: baseClass + '__item__text'\n }, void 0, stream.name), _this2.renderBlackoutPill(stream)), _this2.renderMetaSource(stream));\n })) : null;\n }\n }]);\n\n return BroadcastPicker;\n}(react[\"Component\"]);\n\nBroadcastPicker_BroadcastPicker.defaultProps = {\n baseClass: 'watchBroadcast'\n};\n\n/* harmony default export */ var messaging_BroadcastPicker = (Object(authenticationAware[\"a\" /* default */])()(BroadcastPicker_BroadcastPicker));\n// CONCATENATED MODULE: ./app/webapp/modal/activation/IframeAuth.js\nvar IframeAuth__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar IframeAuth = function IframeAuth(_ref) {\n var src = _ref.src,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? '100%' : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? '100%' : _ref$height;\n return IframeAuth__jsx('iframe', {\n src: src,\n style: { width: width, height: height }\n });\n};\n\n/* harmony default export */ var activation_IframeAuth = (IframeAuth);\n// EXTERNAL MODULE: ./app/constants.js\nvar constants = __webpack_require__(8);\n\n// CONCATENATED MODULE: ./app/webapp/modal/messaging/Paywall.js\nvar Paywall__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar Paywall_Paywall = function Paywall(props) {\n var src = props.src;\n\n var content = src && Paywall__jsx('iframe', {\n src: src\n });\n\n return Paywall__jsx('div', {\n id: constants[\"a\" /* BAM_PAYWALL_IFRAME_ID */],\n style: { width: '100%', height: '100%', overflow: 'auto' }\n }, void 0, content);\n};\n\n/* harmony default export */ var messaging_Paywall = (Paywall_Paywall);\n// CONCATENATED MODULE: ./app/webapp/modal/messaging/ModalMessaging.js\nvar ModalMessaging__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\n\n// empty the modal's default styles\nlib_default.a.defaultStyles = {};\n\n// TODO: any way we can sync this with the css value?\nvar HEADER_HEIGHT = 50;\n\nfunction getModalContent(type) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _ref = arguments[2];\n var headerHeight = _ref.headerHeight;\n\n var body = '';\n var title = '';\n var bodyClass = '';\n var modalStyles = {\n height: 500\n };\n var bodyStyles = {\n marginLeft: '5%'\n };\n var titleStyles = {};\n var closeBtnStyles = {};\n var lightboxClass = void 0;\n switch (type) {\n case enums[\"w\" /* ModalType */].POPUP:\n title = 'Pop-up Blocked';\n body = ModalMessaging__jsx(PopUpBlockerWarning, {});\n break;\n case enums[\"w\" /* ModalType */].FLASH:\n title = 'Flash not Enabled';\n body = ModalMessaging__jsx(messaging_FlashWarning, {});\n break;\n case enums[\"w\" /* ModalType */].BLACKOUT_MAP:\n title = 'Blackout Map';\n body = ModalMessaging__jsx(messaging_BlackoutMap, {\n content: data.content\n });\n break;\n case enums[\"w\" /* ModalType */].BROADCAST_PICKER:\n title = 'Choose Broadcast';\n body = ModalMessaging__jsx(messaging_BroadcastPicker, {\n content: data\n });\n bodyClass = 'watchProvider__scroll watchBroadcast__scroll';\n bodyStyles = {};\n lightboxClass = 'watch-broadcast-modal';\n break;\n case enums[\"w\" /* ModalType */].IFRAME_AUTH:\n title = 'Authentication';\n body = ModalMessaging__jsx(activation_IframeAuth, {\n src: data.src\n });\n modalStyles = {\n width: data.width,\n height: data.height + headerHeight,\n marginLeft: -(data.width / 2)\n };\n bodyStyles = {\n width: '100%',\n height: '100%',\n marginTop: -22\n };\n break;\n case enums[\"w\" /* ModalType */].PAYWALL:\n title = 'ESPN+';\n body = ModalMessaging__jsx(messaging_Paywall, {\n src: data.src\n });\n modalStyles = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: '100%',\n height: '100%',\n padding: 0,\n margin: 0,\n background: 'rgba(0, 0, 0, 0.7)',\n borderRadius: 0,\n boxShadow: 'none'\n };\n bodyStyles = {\n width: '100%',\n height: '100%',\n margin: 0,\n padding: 0\n };\n titleStyles = {\n display: 'none'\n };\n closeBtnStyles = {\n right: 20,\n top: 20,\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n WebkitBackdropFilter: 'blur(10px)',\n backdropFilter: 'blur(10px)',\n width: 36,\n height: 36,\n borderRadius: 18\n };\n lightboxClass = 'lightbox-paywall';\n break;\n default:\n break;\n }\n return {\n title: title,\n body: body,\n modalStyles: modalStyles,\n bodyStyles: bodyStyles,\n bodyClass: bodyClass,\n titleStyles: titleStyles,\n closeBtnStyles: closeBtnStyles,\n lightboxClass: lightboxClass\n };\n}\n\nvar ModalMessaging_renderTransparentMask = function renderTransparentMask() {\n var shouldShowModal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var modalType = arguments[1];\n return shouldShowModal && modalType === enums[\"w\" /* ModalType */].BROADCAST_PICKER ? ModalMessaging__jsx('div', {\n className: 'js-feed-item-mask active'\n }) : null;\n};\n\nvar ModalMessaging_ModalMessaging = function ModalMessaging(_ref2) {\n var showModalMessage = _ref2.showModalMessage,\n closeModal = _ref2.closeModal,\n messageType = _ref2.messageType,\n messageData = _ref2.messageData;\n\n var _getModalContent = getModalContent(messageType, messageData, { headerHeight: HEADER_HEIGHT }),\n title = _getModalContent.title,\n body = _getModalContent.body,\n modalStyles = _getModalContent.modalStyles,\n bodyStyles = _getModalContent.bodyStyles,\n bodyClass = _getModalContent.bodyClass,\n titleStyles = _getModalContent.titleStyles,\n closeBtnStyles = _getModalContent.closeBtnStyles,\n lightboxClass = _getModalContent.lightboxClass;\n\n var containerClass = classnames_default()(lightboxClass, 'lightbox-watch', 'watch-provider-modal', 'js-bloomed');\n\n return (\n // emulates the same mask used on .com when lightbox is opened\n ModalMessaging__jsx('div', {}, void 0, ModalMessaging_renderTransparentMask(showModalMessage, messageType), ModalMessaging__jsx(lib_default.a, {\n isOpen: showModalMessage,\n onRequestClose: closeModal,\n overlayClassName: 'lightbox-container'\n }, void 0, ModalMessaging__jsx('article', {\n className: containerClass,\n style: modalStyles\n }, void 0, ModalMessaging__jsx('div', {\n className: 'btn-close icon-font-before icon-close-solid-before',\n style: closeBtnStyles,\n onClick: closeModal\n }), ModalMessaging__jsx('section', {\n className: 'watchProvider--modal'\n }, void 0, ModalMessaging__jsx('h1', {\n className: 'watchProvider__title',\n style: titleStyles\n }, void 0, ModalMessaging__jsx('span', {}, void 0, title)), ModalMessaging__jsx('div', {\n style: bodyStyles,\n className: bodyClass\n }, void 0, body)))))\n );\n};\n\nModalMessaging_ModalMessaging.defaultProps = {\n showModalMessage: false,\n messageData: null\n};\n\n/* harmony default export */ var messaging_ModalMessaging = (ModalMessaging_ModalMessaging);\n// CONCATENATED MODULE: ./app/webapp/modal/messaging/MessagingContainer.js\nvar MessagingContainer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar MessagingContainer__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction MessagingContainer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction MessagingContainer__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction MessagingContainer__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\nvar MessagingContainer_MessagingContainer = function (_Component) {\n MessagingContainer__inherits(MessagingContainer, _Component);\n\n function MessagingContainer(props) {\n MessagingContainer__classCallCheck(this, MessagingContainer);\n\n var _this = MessagingContainer__possibleConstructorReturn(this, (MessagingContainer.__proto__ || Object.getPrototypeOf(MessagingContainer)).call(this, props));\n\n _this.closeModal = _this.closeModal.bind(_this);\n return _this;\n }\n\n MessagingContainer__createClass(MessagingContainer, [{\n key: 'closeModal',\n value: function closeModal() {\n this.props.dispatch(Object(appActions[\"y\" /* closeModalMessage */])());\n }\n }, {\n key: 'render',\n value: function render() {\n return MessagingContainer__jsx(messaging_ModalMessaging, {\n showModalMessage: this.props.showModalMessage,\n closeModal: this.closeModal,\n messageType: this.props.messageType,\n messageData: this.props.messageData\n });\n }\n }]);\n\n return MessagingContainer;\n}(react[\"Component\"]);\n\nvar mapStateToProps = function mapStateToProps(state) {\n var _state$app = state.app,\n _state$app$showModalM = _state$app.showModalMessage,\n showModalMessage = _state$app$showModalM === undefined ? false : _state$app$showModalM,\n _state$app$messageTyp = _state$app.messageType,\n messageType = _state$app$messageTyp === undefined ? '' : _state$app$messageTyp,\n _state$app$messageDat = _state$app.messageData,\n messageData = _state$app$messageDat === undefined ? null : _state$app$messageDat;\n\n\n return {\n showModalMessage: showModalMessage,\n messageType: messageType,\n messageData: messageData\n };\n};\n\n/* harmony default export */ var messaging_MessagingContainer = __webpack_exports__[\"a\"] = (Object(es[\"b\" /* connect */])(mapStateToProps)(MessagingContainer_MessagingContainer));\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {\n\nexports.__esModule = true;\nexports.canUseDOM = exports.slidesOnLeft = exports.slidesOnRight = exports.siblingDirection = exports.getTotalSlides = exports.getPostClones = exports.getPreClones = exports.getTrackLeft = exports.getTrackAnimateCSS = exports.getTrackCSS = exports.checkSpecKeys = exports.getSlideCount = exports.checkNavigable = exports.getNavigableIndexes = exports.swipeEnd = exports.swipeMove = exports.swipeStart = exports.keyHandler = exports.changeSlide = exports.slideHandler = exports.initializedState = exports.extractObject = exports.canGoNext = exports.getSwipeDirection = exports.getHeight = exports.getWidth = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.lazyStartIndex = exports.getRequiredLazySlides = exports.getOnDemandLazySlides = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(81);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getOnDemandLazySlides = exports.getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n return onDemandSlides;\n};\n\n// return list of slides that need to be present\nvar getRequiredLazySlides = exports.getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n return requiredSlides;\n};\n\n// startIndex that needs to be present\nvar lazyStartIndex = exports.lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\nvar lazyEndIndex = exports.lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\nvar lazySlidesOnLeft = exports.lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\nvar lazySlidesOnRight = exports.lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n};\n\n// get width of an element\nvar getWidth = exports.getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\nvar getHeight = exports.getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\nvar getSwipeDirection = exports.getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n};\n\n// whether or not we can go next\nvar canGoNext = exports.canGoNext = function canGoNext(spec) {\n var canGo = true;\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n return canGo;\n};\n\n// given an object and a list of keys, return new object with given keys\nvar extractObject = exports.extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n};\n\n// get initialized state\nvar initializedState = exports.initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react2.default.Children.count(spec.children);\n var listWidth = Math.ceil(getWidth(_reactDom2.default.findDOMNode(spec.listRef)));\n var trackWidth = Math.ceil(getWidth(_reactDom2.default.findDOMNode(spec.trackRef)));\n var slideWidth = void 0;\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n var slideHeight = _reactDom2.default.findDOMNode(spec.listRef) && getHeight(_reactDom2.default.findDOMNode(spec.listRef).querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides({ currentSlide: currentSlide, lazyLoadedList: lazyLoadedList }, spec);\n lazyLoadedList.concat(slidesToLoad);\n\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nvar slideHandler = exports.slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoadedList = spec.lazyLoadedList,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide = void 0,\n animationLeft = void 0,\n finalLeft = void 0;\n var state = {},\n nextState = {};\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList.push(animationSlide);\n }\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList\n };\n nextState = { animating: false };\n } else {\n finalSlide = animationSlide;\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n animationLeft = getTrackLeft(_extends({}, spec, { slideIndex: animationSlide }));\n finalLeft = getTrackLeft(_extends({}, spec, { slideIndex: finalSlide }));\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n lazyLoad && lazyLoadedList.concat(getOnDemandLazySlides(_extends({}, spec, { currentSlide: animationSlide })));\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_extends({}, spec, { left: finalLeft })),\n lazyLoadedList: lazyLoadedList\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_extends({}, spec, { left: animationLeft })),\n lazyLoadedList: lazyLoadedList\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_extends({}, spec, { left: finalLeft })),\n swipeLeft: null\n };\n }\n }\n return { state: state, nextState: nextState };\n};\n\nvar changeSlide = exports.changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n if (targetSlide === options.currentSlide) {\n return null;\n }\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n if (targetSlide === options.currentSlide) {\n return null;\n }\n if (infinite) {\n var direction = siblingDirection(_extends({}, spec, { targetSlide: targetSlide }));\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n if (targetSlide === options.currentSlide) {\n return null;\n }\n }\n return targetSlide;\n};\nvar keyHandler = exports.keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nvar swipeStart = exports.swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && e.preventDefault();\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\nvar swipeMove = exports.swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n\n if (scrolling) return;\n if (animating) return e.preventDefault();\n if (vertical && swipeToSlide && verticalSwiping) e.preventDefault();\n var swipeLeft = void 0,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return { scrolling: true };\n }\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n if (!infinite) {\n if (currentSlide === 0 && swipeDirection === \"right\" || currentSlide + 1 >= dotCount && swipeDirection === \"left\" || !canGoNext(spec) && swipeDirection === \"left\") {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n state = _extends({}, state, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_extends({}, spec, { left: swipeLeft }))\n });\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n e.preventDefault();\n }\n return state;\n};\nvar swipeEnd = exports.swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n currentSlide = spec.currentSlide,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe;\n\n if (!dragging) {\n if (swipe) e.preventDefault();\n return {};\n }\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping);\n // reset the state of touch related state variables.\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n if (scrolling) {\n return state;\n }\n if (!touchObject.swipeLength) {\n return state;\n }\n if (touchObject.swipeLength > minSwipe) {\n e.preventDefault();\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n var slideCount = void 0,\n newSlide = void 0;\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = currentSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n case \"right\":\n case \"down\":\n newSlide = currentSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n default:\n slideCount = currentSlide;\n }\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_extends({}, spec, { left: currentLeft }));\n }\n return state;\n};\nvar getNavigableIndexes = exports.getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n return indexes;\n};\nvar checkNavigable = exports.checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n prevNavigable = navigables[n];\n }\n }\n return index;\n};\nvar getSlideCount = exports.getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n if (spec.swipeToSlide) {\n var swipedSlide = void 0;\n var slickList = _reactDom2.default.findDOMNode(spec.listRef);\n var slides = slickList.querySelectorAll(\".slick-slide\");\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nvar checkSpecKeys = exports.checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nvar getTrackCSS = exports.getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth = void 0,\n trackHeight = void 0;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _extends({}, style, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n if (spec.fade) style = { opacity: 1 };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight;\n\n // Fallback for IE8\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\nvar getTrackAnimateCSS = exports.getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec);\n // useCSS is true by default so it can be undefined\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n return style;\n};\nvar getTrackLeft = exports.getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n\n\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n }\n // shift current slide to center of the frame\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = _reactDom2.default.findDOMNode(trackRef);\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nvar getPreClones = exports.getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nvar getPostClones = exports.getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n return spec.slideCount;\n};\n\nvar getTotalSlides = exports.getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\nvar siblingDirection = exports.siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n return \"left\";\n }\n};\n\nvar slidesOnRight = exports.slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n if (rtl) {\n return 0;\n }\n return slidesToShow - 1;\n};\n\nvar slidesOnLeft = exports.slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n if (rtl) {\n return slidesToShow - 1;\n }\n return 0;\n};\n\nvar canUseDOM = exports.canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, console) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = Object({\"NODE_ENV\":\"production\"}).NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __webpack_require__(382);\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __webpack_require__(383);\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(48), __webpack_require__(2)))\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(79);\n\nvar ReactNoopUpdateQueue = __webpack_require__(159);\n\nvar canDefineProperty = __webpack_require__(226);\nvar emptyObject = __webpack_require__(100);\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? false ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (false) {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar warning = __webpack_require__(6);\n\nfunction warnNoop(publicInstance, callerName) {\n if (false) {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar invariant = __webpack_require__(5);\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? false ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? false ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (false) {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: false ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? false ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (false) {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar ReactErrorUtils = __webpack_require__(162);\n\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (false) {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (false) {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? false ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (false) {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = func.bind(null, a);\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n // $FlowFixMe https://github.com/facebook/flow/issues/2336\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(31);\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMLazyTree = __webpack_require__(84);\nvar Danger = __webpack_require__(412);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactInstrumentation = __webpack_require__(38);\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(168);\nvar setInnerHTML = __webpack_require__(121);\nvar setTextContent = __webpack_require__(238);\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (false) {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (false) {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: { toIndex: update.toIndex, content: update.content.toString() }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals MSApp */\n\n\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar React = __webpack_require__(78);\nvar ReactPropTypesSecret = __webpack_require__(430);\n\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: React.PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n false ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar invariant = __webpack_require__(5);\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? false ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar ReactCurrentOwner = __webpack_require__(49);\nvar ReactInstanceMap = __webpack_require__(104);\nvar ReactInstrumentation = __webpack_require__(38);\nvar ReactUpdates = __webpack_require__(40);\n\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (false) {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (false) {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? false ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar emptyFunction = __webpack_require__(37);\nvar warning = __webpack_require__(6);\n\nvar validateDOMNesting = emptyFunction;\n\nif (false) {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example,
is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n //

tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for , including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n\n case 'pre':\n case 'listing':\n\n case 'table':\n\n case 'hr':\n\n case 'xmp':\n\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = ' Make sure you don\\'t have any extra whitespace between tags on ' + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (false) {\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 = __webpack_require__(474)();\n}\n\n\n/***/ }),\n/* 178 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (immutable) */ __webpack_exports__[\"a\"] = warning;\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (true) {\n module.exports = __webpack_require__(477);\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n\n\n/***/ }),\n/* 180 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/lodash-es/_freeGlobal.js\nvar _freeGlobal = __webpack_require__(478);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_root.js\n\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = _freeGlobal[\"a\" /* default */] || freeSelf || Function('return this')();\n\n/* harmony default export */ var _root = (root);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_Symbol.js\n\n\n/** Built-in value references. */\nvar Symbol = _root.Symbol;\n\n/* harmony default export */ var _Symbol = (Symbol);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getRawTag.js\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _getRawTag_hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = _getRawTag_hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/* harmony default export */ var _getRawTag = (getRawTag);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_objectToString.js\n/** Used for built-in method references. */\nvar _objectToString_objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar _objectToString_nativeObjectToString = _objectToString_objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return _objectToString_nativeObjectToString.call(value);\n}\n\n/* harmony default export */ var _objectToString = (objectToString);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGetTag.js\n\n\n\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar _baseGetTag_symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (_baseGetTag_symToStringTag && _baseGetTag_symToStringTag in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n}\n\n/* harmony default export */ var _baseGetTag = (baseGetTag);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_overArg.js\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/* harmony default export */ var _overArg = (overArg);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getPrototype.js\n\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\n/* harmony default export */ var _getPrototype = (getPrototype);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isObjectLike.js\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/* harmony default export */ var lodash_es_isObjectLike = (isObjectLike);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isPlainObject.js\n\n\n\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n isPlainObject_objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar isPlainObject_hasOwnProperty = isPlainObject_objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!lodash_es_isObjectLike(value) || _baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = isPlainObject_hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/* harmony default export */ var lodash_es_isPlainObject = (isPlainObject);\n\n// EXTERNAL MODULE: ./node_modules/symbol-observable/es/index.js\nvar es = __webpack_require__(479);\n\n// CONCATENATED MODULE: ./node_modules/redux/es/createStore.js\n\n\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar ActionTypes = {\n INIT: '@@redux/INIT'\n};\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} enhancer The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nfunction createStore_createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore_createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!lodash_es_isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/zenparsing/es-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[es[\"a\" /* default */]] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[es[\"a\" /* default */]] = observable, _ref2;\n}\n// EXTERNAL MODULE: ./node_modules/redux/es/utils/warning.js\nvar utils_warning = __webpack_require__(254);\n\n// CONCATENATED MODULE: ./node_modules/redux/es/combineReducers.js\n\n\n\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!lodash_es_isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerSanity(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (false) {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n if (false) {\n var unexpectedKeyCache = {};\n }\n\n var sanityError;\n try {\n assertReducerSanity(finalReducers);\n } catch (e) {\n sanityError = e;\n }\n\n return function combination() {\n var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var action = arguments[1];\n\n if (sanityError) {\n throw sanityError;\n }\n\n if (false) {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var i = 0; i < finalReducerKeys.length; i++) {\n var key = finalReducerKeys[i];\n var reducer = finalReducers[key];\n var previousStateForKey = state[key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(key, action);\n throw new Error(errorMessage);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}\n// CONCATENATED MODULE: ./node_modules/redux/es/bindActionCreators.js\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n// CONCATENATED MODULE: ./node_modules/redux/es/compose.js\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nfunction compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n var last = funcs[funcs.length - 1];\n var rest = funcs.slice(0, -1);\n return function () {\n return rest.reduceRight(function (composed, f) {\n return f(composed);\n }, last.apply(undefined, arguments));\n };\n}\n// CONCATENATED MODULE: ./node_modules/redux/es/applyMiddleware.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n// CONCATENATED MODULE: ./node_modules/redux/es/index.js\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"e\", function() { return createStore_createStore; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"c\", function() { return combineReducers; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"b\", function() { return bindActionCreators; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"a\", function() { return applyMiddleware; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"d\", function() { return compose; });\n\n\n\n\n\n\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (false) {\n warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\n\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.router = exports.routes = exports.route = exports.components = exports.component = exports.location = exports.history = exports.falsy = exports.locationShape = exports.routerShape = undefined;\n\nvar _react = __webpack_require__(0);\n\nvar _deprecateObjectProperties = __webpack_require__(124);\n\nvar _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);\n\nvar _InternalPropTypes = __webpack_require__(66);\n\nvar InternalPropTypes = _interopRequireWildcard(_InternalPropTypes);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar func = _react.PropTypes.func;\nvar object = _react.PropTypes.object;\nvar shape = _react.PropTypes.shape;\nvar string = _react.PropTypes.string;\nvar routerShape = exports.routerShape = shape({\n push: func.isRequired,\n replace: func.isRequired,\n go: func.isRequired,\n goBack: func.isRequired,\n goForward: func.isRequired,\n setRouteLeaveHook: func.isRequired,\n isActive: func.isRequired\n});\n\nvar locationShape = exports.locationShape = shape({\n pathname: string.isRequired,\n search: string.isRequired,\n state: object,\n action: string.isRequired,\n key: string\n});\n\n// Deprecated stuff below:\n\nvar falsy = exports.falsy = InternalPropTypes.falsy;\nvar history = exports.history = InternalPropTypes.history;\nvar location = exports.location = locationShape;\nvar component = exports.component = InternalPropTypes.component;\nvar components = exports.components = InternalPropTypes.components;\nvar route = exports.route = InternalPropTypes.route;\nvar routes = exports.routes = InternalPropTypes.routes;\nvar router = exports.router = routerShape;\n\nif (false) {\n (function () {\n var deprecatePropType = function deprecatePropType(propType, message) {\n return function () {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;\n return propType.apply(undefined, arguments);\n };\n };\n\n var deprecateInternalPropType = function deprecateInternalPropType(propType) {\n return deprecatePropType(propType, 'This prop type is not intended for external use, and was previously exported by mistake. These internal prop types are deprecated for external use, and will be removed in a later version.');\n };\n\n var deprecateRenamedPropType = function deprecateRenamedPropType(propType, name) {\n return deprecatePropType(propType, 'The `' + name + '` prop type is now exported as `' + name + 'Shape` to avoid name conflicts. This export is deprecated and will be removed in a later version.');\n };\n\n exports.falsy = falsy = deprecateInternalPropType(falsy);\n exports.history = history = deprecateInternalPropType(history);\n exports.component = component = deprecateInternalPropType(component);\n exports.components = components = deprecateInternalPropType(components);\n exports.route = route = deprecateInternalPropType(route);\n exports.routes = routes = deprecateInternalPropType(routes);\n\n exports.location = location = deprecateRenamedPropType(location, 'location');\n exports.router = router = deprecateRenamedPropType(router, 'router');\n })();\n}\n\nvar defaultExport = {\n falsy: falsy,\n history: history,\n location: location,\n component: component,\n components: components,\n route: route,\n // For some reason, routes was never here.\n router: router\n};\n\nif (false) {\n defaultExport = (0, _deprecateObjectProperties2.default)(defaultExport, 'The default export from `react-router/lib/PropTypes` is deprecated. Please use the named exports instead.');\n}\n\nexports.default = defaultExport;\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.getHashPath = getHashPath;\nexports.replaceHashPath = replaceHashPath;\nexports.getWindowPath = getWindowPath;\nexports.go = go;\nexports.getUserConfirmation = getUserConfirmation;\nexports.supportsHistory = supportsHistory;\nexports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash;\n\nfunction addEventListener(node, event, listener) {\n if (node.addEventListener) {\n node.addEventListener(event, listener, false);\n } else {\n node.attachEvent('on' + event, listener);\n }\n}\n\nfunction removeEventListener(node, event, listener) {\n if (node.removeEventListener) {\n node.removeEventListener(event, listener, false);\n } else {\n node.detachEvent('on' + event, listener);\n }\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n return window.location.href.split('#')[1] || '';\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(window.location.pathname + window.location.search + '#' + path);\n}\n\nfunction getWindowPath() {\n return window.location.pathname + window.location.search + window.location.hash;\n}\n\nfunction go(n) {\n if (n) window.history.go(n);\n}\n\nfunction getUserConfirmation(message, callback) {\n callback(window.confirm(message));\n}\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n return false;\n }\n return window.history && 'pushState' in window.history;\n}\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n var ua = navigator.userAgent;\n return ua.indexOf('Firefox') === -1;\n}\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*eslint-disable no-empty */\n\n\nexports.__esModule = true;\nexports.saveState = saveState;\nexports.readState = readState;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar KeyPrefix = '@@History/';\nvar QuotaExceededErrors = ['QuotaExceededError', 'QUOTA_EXCEEDED_ERR'];\n\nvar SecurityError = 'SecurityError';\n\nfunction createKey(key) {\n return KeyPrefix + key;\n}\n\nfunction saveState(key, state) {\n try {\n if (state == null) {\n window.sessionStorage.removeItem(createKey(key));\n } else {\n window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n }\n } catch (error) {\n if (error.name === SecurityError) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n false ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined;\n\n return;\n }\n\n if (QuotaExceededErrors.indexOf(error.name) >= 0 && window.sessionStorage.length === 0) {\n // Safari \"private mode\" throws QuotaExceededError.\n false ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined;\n\n return;\n }\n\n throw error;\n }\n}\n\nfunction readState(key) {\n var json = undefined;\n try {\n json = window.sessionStorage.getItem(createKey(key));\n } catch (error) {\n if (error.name === SecurityError) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n false ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined;\n\n return null;\n }\n }\n\n if (json) {\n try {\n return JSON.parse(json);\n } catch (error) {\n // Ignore invalid JSON.\n }\n }\n\n return null;\n}\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar keys = __webpack_require__(258);\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction runTransitionHook(hook, location, callback) {\n var result = hook(location, callback);\n\n if (hook.length < 2) {\n // Assume the hook runs synchronously and automatically\n // call the callback with the return value.\n callback(result);\n } else {\n false ? _warning2['default'](result === undefined, 'You should not \"return\" in a transition hook with a callback argument; call the callback instead') : undefined;\n }\n}\n\nexports['default'] = runTransitionHook;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction deprecate(fn, message) {\n return function () {\n false ? _warning2['default'](false, '[history] ' + message) : undefined;\n return fn.apply(this, arguments);\n };\n}\n\nexports['default'] = deprecate;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = createTransitionManager;\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _computeChangedRoutes2 = __webpack_require__(499);\n\nvar _computeChangedRoutes3 = _interopRequireDefault(_computeChangedRoutes2);\n\nvar _TransitionUtils = __webpack_require__(500);\n\nvar _isActive2 = __webpack_require__(501);\n\nvar _isActive3 = _interopRequireDefault(_isActive2);\n\nvar _getComponents = __webpack_require__(502);\n\nvar _getComponents2 = _interopRequireDefault(_getComponents);\n\nvar _matchRoutes = __webpack_require__(503);\n\nvar _matchRoutes2 = _interopRequireDefault(_matchRoutes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hasAnyProperties(object) {\n for (var p in object) {\n if (Object.prototype.hasOwnProperty.call(object, p)) return true;\n }return false;\n}\n\nfunction createTransitionManager(history, routes) {\n var state = {};\n\n // Signature should be (location, indexOnly), but needs to support (path,\n // query, indexOnly)\n function isActive(location) {\n var indexOnlyOrDeprecatedQuery = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n var deprecatedIndexOnly = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n var indexOnly = void 0;\n if (indexOnlyOrDeprecatedQuery && indexOnlyOrDeprecatedQuery !== true || deprecatedIndexOnly !== null) {\n false ? (0, _routerWarning2.default)(false, '`isActive(pathname, query, indexOnly) is deprecated; use `isActive(location, indexOnly)` with a location descriptor instead. http://tiny.cc/router-isActivedeprecated') : void 0;\n location = { pathname: location, query: indexOnlyOrDeprecatedQuery };\n indexOnly = deprecatedIndexOnly || false;\n } else {\n location = history.createLocation(location);\n indexOnly = indexOnlyOrDeprecatedQuery;\n }\n\n return (0, _isActive3.default)(location, indexOnly, state.location, state.routes, state.params);\n }\n\n var partialNextState = void 0;\n\n function match(location, callback) {\n if (partialNextState && partialNextState.location === location) {\n // Continue from where we left off.\n finishMatch(partialNextState, callback);\n } else {\n (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n if (error) {\n callback(error);\n } else if (nextState) {\n finishMatch(_extends({}, nextState, { location: location }), callback);\n } else {\n callback();\n }\n });\n }\n }\n\n function finishMatch(nextState, callback) {\n var _computeChangedRoutes = (0, _computeChangedRoutes3.default)(state, nextState);\n\n var leaveRoutes = _computeChangedRoutes.leaveRoutes;\n var changeRoutes = _computeChangedRoutes.changeRoutes;\n var enterRoutes = _computeChangedRoutes.enterRoutes;\n\n\n (0, _TransitionUtils.runLeaveHooks)(leaveRoutes, state);\n\n // Tear down confirmation hooks for left routes\n leaveRoutes.filter(function (route) {\n return enterRoutes.indexOf(route) === -1;\n }).forEach(removeListenBeforeHooksForRoute);\n\n // change and enter hooks are run in series\n (0, _TransitionUtils.runChangeHooks)(changeRoutes, state, nextState, function (error, redirectInfo) {\n if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n (0, _TransitionUtils.runEnterHooks)(enterRoutes, nextState, finishEnterHooks);\n });\n\n function finishEnterHooks(error, redirectInfo) {\n if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n // TODO: Fetch components after state is updated.\n (0, _getComponents2.default)(nextState, function (error, components) {\n if (error) {\n callback(error);\n } else {\n // TODO: Make match a pure function and have some other API\n // for \"match and update state\".\n callback(null, null, state = _extends({}, nextState, { components: components }));\n }\n });\n }\n\n function handleErrorOrRedirect(error, redirectInfo) {\n if (error) callback(error);else callback(null, redirectInfo);\n }\n }\n\n var RouteGuid = 1;\n\n function getRouteID(route) {\n var create = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];\n\n return route.__id__ || create && (route.__id__ = RouteGuid++);\n }\n\n var RouteHooks = Object.create(null);\n\n function getRouteHooksForRoutes(routes) {\n return routes.reduce(function (hooks, route) {\n hooks.push.apply(hooks, RouteHooks[getRouteID(route)]);\n return hooks;\n }, []);\n }\n\n function transitionHook(location, callback) {\n (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n if (nextState == null) {\n // TODO: We didn't actually match anything, but hang\n // onto error/nextState so we don't have to matchRoutes\n // again in the listen callback.\n callback();\n return;\n }\n\n // Cache some state here so we don't have to\n // matchRoutes() again in the listen callback.\n partialNextState = _extends({}, nextState, { location: location });\n\n var hooks = getRouteHooksForRoutes((0, _computeChangedRoutes3.default)(state, partialNextState).leaveRoutes);\n\n var result = void 0;\n for (var i = 0, len = hooks.length; result == null && i < len; ++i) {\n // Passing the location arg here indicates to\n // the user that this is a transition hook.\n result = hooks[i](location);\n }\n\n callback(result);\n });\n }\n\n /* istanbul ignore next: untestable with Karma */\n function beforeUnloadHook() {\n // Synchronously check to see if any route hooks want\n // to prevent the current window/tab from closing.\n if (state.routes) {\n var hooks = getRouteHooksForRoutes(state.routes);\n\n var message = void 0;\n for (var i = 0, len = hooks.length; typeof message !== 'string' && i < len; ++i) {\n // Passing no args indicates to the user that this is a\n // beforeunload hook. We don't know the next location.\n message = hooks[i]();\n }\n\n return message;\n }\n }\n\n var unlistenBefore = void 0,\n unlistenBeforeUnload = void 0;\n\n function removeListenBeforeHooksForRoute(route) {\n var routeID = getRouteID(route, false);\n if (!routeID) {\n return;\n }\n\n delete RouteHooks[routeID];\n\n if (!hasAnyProperties(RouteHooks)) {\n // teardown transition & beforeunload hooks\n if (unlistenBefore) {\n unlistenBefore();\n unlistenBefore = null;\n }\n\n if (unlistenBeforeUnload) {\n unlistenBeforeUnload();\n unlistenBeforeUnload = null;\n }\n }\n }\n\n /**\n * Registers the given hook function to run before leaving the given route.\n *\n * During a normal transition, the hook function receives the next location\n * as its only argument and can return either a prompt message (string) to show the user,\n * to make sure they want to leave the page; or `false`, to prevent the transition.\n * Any other return value will have no effect.\n *\n * During the beforeunload event (in browsers) the hook receives no arguments.\n * In this case it must return a prompt message to prevent the transition.\n *\n * Returns a function that may be used to unbind the listener.\n */\n function listenBeforeLeavingRoute(route, hook) {\n // TODO: Warn if they register for a route that isn't currently\n // active. They're probably doing something wrong, like re-creating\n // route objects on every location change.\n var routeID = getRouteID(route);\n var hooks = RouteHooks[routeID];\n\n if (!hooks) {\n var thereWereNoRouteHooks = !hasAnyProperties(RouteHooks);\n\n RouteHooks[routeID] = [hook];\n\n if (thereWereNoRouteHooks) {\n // setup transition & beforeunload hooks\n unlistenBefore = history.listenBefore(transitionHook);\n\n if (history.listenBeforeUnload) unlistenBeforeUnload = history.listenBeforeUnload(beforeUnloadHook);\n }\n } else {\n if (hooks.indexOf(hook) === -1) {\n false ? (0, _routerWarning2.default)(false, 'adding multiple leave hooks for the same route is deprecated; manage multiple confirmations in your own code instead') : void 0;\n\n hooks.push(hook);\n }\n }\n\n return function () {\n var hooks = RouteHooks[routeID];\n\n if (hooks) {\n var newHooks = hooks.filter(function (item) {\n return item !== hook;\n });\n\n if (newHooks.length === 0) {\n removeListenBeforeHooksForRoute(route);\n } else {\n RouteHooks[routeID] = newHooks;\n }\n }\n };\n }\n\n /**\n * This is the API for stateful environments. As the location\n * changes, we update state and call the listener. We can also\n * gracefully handle errors and redirects.\n */\n function listen(listener) {\n // TODO: Only use a single history listener. Otherwise we'll\n // end up with multiple concurrent calls to match.\n return history.listen(function (location) {\n if (state.location === location) {\n listener(null, state);\n } else {\n match(location, function (error, redirectLocation, nextState) {\n if (error) {\n listener(error);\n } else if (redirectLocation) {\n history.replace(redirectLocation);\n } else if (nextState) {\n listener(null, nextState);\n } else {\n false ? (0, _routerWarning2.default)(false, 'Location \"%s\" did not match any routes', location.pathname + location.search + location.hash) : void 0;\n }\n });\n }\n });\n }\n\n return {\n isActive: isActive,\n match: match,\n listenBeforeLeavingRoute: listenBeforeLeavingRoute,\n listen: listen\n };\n}\n\n//export default useRoutes\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.loopAsync = loopAsync;\nexports.mapAsync = mapAsync;\nfunction loopAsync(turns, work, callback) {\n var currentTurn = 0,\n isDone = false;\n var sync = false,\n hasNext = false,\n doneArgs = void 0;\n\n function done() {\n isDone = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n doneArgs = [].concat(Array.prototype.slice.call(arguments));\n return;\n }\n\n callback.apply(this, arguments);\n }\n\n function next() {\n if (isDone) {\n return;\n }\n\n hasNext = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n return;\n }\n\n sync = true;\n\n while (!isDone && currentTurn < turns && hasNext) {\n hasNext = false;\n work.call(this, currentTurn++, next, done);\n }\n\n sync = false;\n\n if (isDone) {\n // This means the loop finished synchronously.\n callback.apply(this, doneArgs);\n return;\n }\n\n if (currentTurn >= turns && hasNext) {\n isDone = true;\n callback();\n }\n }\n\n next();\n}\n\nfunction mapAsync(array, work, callback) {\n var length = array.length;\n var values = [];\n\n if (length === 0) return callback(null, values);\n\n var isDone = false,\n doneCount = 0;\n\n function done(index, error, value) {\n if (isDone) return;\n\n if (error) {\n isDone = true;\n callback(error);\n } else {\n values[index] = value;\n\n isDone = ++doneCount === length;\n\n if (isDone) callback(null, values);\n }\n }\n\n array.forEach(function (item, index) {\n work(item, index, function (error, value) {\n done(index, error, value);\n });\n });\n}\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/***/ }),\n/* 190 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getAccessMethodFromAuthTypes;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\n\n\nfunction getAccessMethodFromAuthTypes() {\n var userAuth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].MVPD) !== -1) {\n return 'Authenticated - ESPN';\n } else if (userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].ISP) !== -1) {\n return 'ISP';\n }\n return 'Not Authenticated';\n};\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process) {// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(48)))\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n root = self;\n} else { // Other environments\n console.warn(\"Using browser-only version of superagent in non-browser environment\");\n root = this;\n}\n\nvar Emitter = __webpack_require__(532);\nvar requestBase = __webpack_require__(533);\nvar isObject = __webpack_require__(275);\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Expose `request`.\n */\n\nvar request = module.exports = __webpack_require__(534).bind(null, Request);\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest\n && (!root.location || 'file:' != root.location.protocol\n || !root.ActiveXObject)) {\n return new XMLHttpRequest;\n } else {\n try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n }\n throw Error(\"Browser-only verison of superagent could not find XHR\");\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n ? function(s) { return s.trim(); }\n : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n var pairs = [];\n for (var key in obj) {\n if (null != obj[key]) {\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n }\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (Array.isArray(val)) {\n return val.forEach(function(v) {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n } else if (isObject(val)) {\n for(var subkey in val) {\n pushEncodedKeyValuePair(pairs, key + '[' + subkey + ']', val[subkey]);\n }\n return;\n }\n pairs.push(encodeURIComponent(key)\n + '=' + encodeURIComponent(val));\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n var obj = {};\n var pairs = str.split('&');\n var pair;\n var pos;\n\n for (var i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n if (pos == -1) {\n obj[decodeURIComponent(pair)] = '';\n } else {\n obj[decodeURIComponent(pair.slice(0, pos))] =\n decodeURIComponent(pair.slice(pos + 1));\n }\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'application/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n 'form': 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\n request.serialize = {\n 'application/x-www-form-urlencoded': serialize,\n 'application/json': JSON.stringify\n };\n\n /**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n var lines = str.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var val;\n\n lines.pop(); // trailing CRLF\n\n for (var i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n return str.split(/ *; */).reduce(function(obj, str){\n var parts = str.split(/ *= */),\n key = parts.shift(),\n val = parts.shift();\n\n if (key && val) obj[key] = val;\n return obj;\n }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n options = options || {};\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n this._setStatusProperties(this.xhr.status);\n this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this._setHeaderProperties(this.header);\n this.body = this.req.method != 'HEAD'\n ? this._parseBody(this.text ? this.text : this.xhr.response)\n : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype._setHeaderProperties = function(header){\n // content-type\n var ct = this.header['content-type'] || '';\n this.type = type(ct);\n\n // params\n var obj = params(ct);\n for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function(str){\n var parse = request.parse[this.type];\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n return parse && str && (str.length || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype._setStatusProperties = function(status){\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n var type = status / 100 | 0;\n\n // status / class\n this.status = this.statusCode = status;\n this.statusType = type;\n\n // basics\n this.info = 1 == type;\n this.ok = 2 == type;\n this.clientError = 4 == type;\n this.serverError = 5 == type;\n this.error = (4 == type || 5 == type)\n ? this.toError()\n : false;\n\n // sugar\n this.accepted = 202 == status;\n this.noContent = 204 == status;\n this.badRequest = 400 == status;\n this.unauthorized = 401 == status;\n this.notAcceptable = 406 == status;\n this.notFound = 404 == status;\n this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n var req = this.req;\n var method = req.method;\n var url = req.url;\n\n var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n var err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n this._header = {}; // coerces header names to lowercase\n this.on('end', function(){\n var err = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch(e) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = e;\n // issue #675: return the raw response if the response parsing fails\n err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n // issue #876: return the http status code if the response parsing fails\n err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null;\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n var new_err;\n try {\n if (res.status < 200 || res.status >= 300) {\n new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n }\n } catch(e) {\n new_err = e; // #985 touching res may cause INVALID_STATE_ERR on old Android\n }\n\n // #1000 don't catch errors from the callback to avoid double calling it\n if (new_err) {\n self.callback(new_err, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n\n/**\n * Mixin `Emitter` and `requestBase`.\n */\n\nEmitter(Request.prototype);\nfor (var key in requestBase) {\n Request.prototype[key] = requestBase[key];\n}\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Set responseType to `val`. Presently valid responseTypes are 'blob' and\n * 'arraybuffer'.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.responseType = function(val){\n this._responseType = val;\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass, options){\n if (!options) {\n options = {\n type: 'basic'\n }\n }\n\n switch (options.type) {\n case 'basic':\n var str = btoa(user + ':' + pass);\n this.set('Authorization', 'Basic ' + str);\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n }\n return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n* request.get('/shoes')\n* .query('size=10')\n* .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n if ('string' != typeof val) val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['<a id=\"a\"><b id=\"b\">hey!</b></a>'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n this._getFormData().append(field, file, filename || file.name);\n return this;\n};\n\nRequest.prototype._getFormData = function(){\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n return this._formData;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n var fn = this._callback;\n this.clearTimeout();\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype._timeoutError = function(){\n var timeout = this._timeout;\n var err = new Error('timeout of ' + timeout + 'ms exceeded');\n err.timeout = timeout;\n this.callback(err);\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\n\nRequest.prototype._appendQueryString = function(){\n var query = this._query.join('&');\n if (query) {\n this.url += ~this.url.indexOf('?')\n ? '&' + query\n : '?' + query;\n }\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n var self = this;\n var xhr = this.xhr = request.getXHR();\n var timeout = this._timeout;\n var data = this._formData || this._data;\n\n // store callback\n this._callback = fn || noop;\n\n // state change\n xhr.onreadystatechange = function(){\n if (4 != xhr.readyState) return;\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n var status;\n try { status = xhr.status } catch(e) { status = 0; }\n\n if (0 == status) {\n if (self.timedout) return self._timeoutError();\n if (self._aborted) return;\n return self.crossDomainError();\n }\n self.emit('end');\n };\n\n // progress\n var handleProgress = function(e){\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n e.direction = 'download';\n self.emit('progress', e);\n };\n if (this.hasListeners('progress')) {\n xhr.onprogress = handleProgress;\n }\n try {\n if (xhr.upload && this.hasListeners('progress')) {\n xhr.upload.onprogress = handleProgress;\n }\n } catch(e) {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n\n // timeout\n if (timeout && !this._timer) {\n this._timer = setTimeout(function(){\n self.timedout = true;\n self.abort();\n }, timeout);\n }\n\n // querystring\n this._appendQueryString();\n\n // initiate request\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !this._isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n var serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (var field in this.header) {\n if (null == this.header[field]) continue;\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data !== 'undefined' ? data : null);\n return this;\n};\n\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n var req = request('GET', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n var req = request('HEAD', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.options = function(url, data, fn){\n var req = request('OPTIONS', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n var req = request('DELETE', url);\n if (fn) req.end(fn);\n return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n var req = request('PATCH', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n var req = request('POST', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n var req = request('PUT', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar castPath = __webpack_require__(128),\n toKey = __webpack_require__(111);\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArray = __webpack_require__(32),\n isSymbol = __webpack_require__(129);\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar mapCacheClear = __webpack_require__(544),\n mapCacheDelete = __webpack_require__(560),\n mapCacheGet = __webpack_require__(562),\n mapCacheHas = __webpack_require__(563),\n mapCacheSet = __webpack_require__(564);\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(71),\n isObject = __webpack_require__(35);\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(72),\n root = __webpack_require__(39);\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototype = __webpack_require__(137),\n nativeKeys = __webpack_require__(579);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DataView = __webpack_require__(580),\n Map = __webpack_require__(197),\n Promise = __webpack_require__(581),\n Set = __webpack_require__(290),\n WeakMap = __webpack_require__(582),\n baseGetTag = __webpack_require__(71),\n toSource = __webpack_require__(281);\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getMinutesUntilStart;\n/* eslint-disable */\n// not using this anymore now that utc has offset from GMT accounted for\nfunction getTimezoneOffsetFromGMT() {\n var offset = new Date().getTimezoneOffset() / 60;\n\n // American locations are east of GMT so default to negative\n var formattedOffset = '-';\n if (offset < 0) {\n formattedOffset = '+';\n }\n\n // pad the offset in the front with 0s if needed\n if (Math.abs(offset) >= 10) {\n return '' + formattedOffset + offset + '00';\n }\n return formattedOffset + '0' + offset + '00';\n}\n/* eslint-enable */\n\nfunction getMinutesUntilStart(_ref) {\n var utc = _ref.utc;\n var targetDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();\n\n var now = targetDate.getTime();\n var eventTime = new Date(utc).getTime();\n\n return Math.floor((eventTime - now) / 1000 / 60);\n};\n\n/***/ }),\n/* 203 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = normalizeQueryString;\n// this function will convert string booleans to boolean types\n// it will also normalize any overloaded query params the app can receive - eg: eventId/gameId\nfunction normalizeQueryString() {\n var queryObj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var convertedQuery = {};\n for (var key in queryObj) {\n if (queryObj.hasOwnProperty(key)) {\n var convertedVal = queryObj[key];\n\n if (convertedVal === 'true') {\n convertedVal = true;\n } else if (convertedVal === 'false') {\n convertedVal = false;\n }\n\n // legacy value support\n if ((key === 'channel' || key === 'network') && convertedVal === 'espn1') {\n convertedVal = 'espn';\n }\n\n if (key === 'eventCalendarId') {\n convertedQuery['eventId'] = convertedVal;\n } else {\n convertedQuery[key] = convertedVal;\n }\n }\n }\n return convertedQuery;\n};\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MapCache = __webpack_require__(195),\n setCacheAdd = __webpack_require__(600),\n setCacheHas = __webpack_require__(601);\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export getListingsByType */\n/* unused harmony export getListingsBySubcategory */\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getEventByQuery;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lib_api__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selectors_appSelector__ = __webpack_require__(3);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\nfunction getListingsByType(type, query) {\n var _this = this;\n\n return function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch, getState) {\n var listings, _appSelector, lang, league, hasLeague, filtered;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return __WEBPACK_IMPORTED_MODULE_0__lib_api__[\"f\" /* WatchAPI */].getListings(_extends({}, query, { types: [type] }));\n\n case 2:\n listings = _context.sent;\n _appSelector = Object(__WEBPACK_IMPORTED_MODULE_1__selectors_appSelector__[\"j\" /* default */])(getState()), lang = _appSelector.lang;\n league = query.league;\n // inherited from the legacy logic\n\n hasLeague = league && league !== 'tennis' && league !== 'golf';\n filtered = hasLeague ? listings.filter(function (listing) {\n return listing.subcategories.filter(function (_ref2) {\n var name = _ref2.name,\n shortName = _ref2.shortName,\n abbreviation = _ref2.abbreviation,\n id = _ref2.id;\n return league === name || league === shortName || league === abbreviation || league === id;\n }).length > 0;\n }) : listings;\n return _context.abrupt('return', __WEBPACK_IMPORTED_MODULE_0__lib_api__[\"f\" /* WatchAPI */].getPrioritizedEventFromListings(filtered, lang));\n\n case 8:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n}\n\nfunction getListingsBySubcategory(type, query) {\n var _this2 = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n var listings;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return __WEBPACK_IMPORTED_MODULE_0__lib_api__[\"f\" /* WatchAPI */].getListingsBySubcategory(_extends({}, query, { types: [type] }));\n\n case 2:\n listings = _context2.sent;\n return _context2.abrupt('return', listings);\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this2);\n }));\n}\n\nfunction getEventByQuery() {\n var _this3 = this;\n\n var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(dispatch) {\n var partner, dates, liveData, upcomingData, replayData, newQuery, _ref5, _ref6;\n\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n partner = query.partner, dates = query.dates;\n liveData = void 0;\n upcomingData = void 0;\n replayData = void 0;\n\n if (!partner) {\n _context3.next = 23;\n break;\n }\n\n newQuery = { subcategory: partner, networks: ['espn3'], dates: dates };\n\n liveData = dispatch(getListingsBySubcategory('live', newQuery));\n upcomingData = dispatch(getListingsBySubcategory('upcoming', newQuery));\n replayData = dispatch(getListingsBySubcategory('replay', newQuery));\n _context3.next = 11;\n return liveData;\n\n case 11:\n _context3.t0 = _context3.sent;\n _context3.next = 14;\n return upcomingData;\n\n case 14:\n _context3.t1 = _context3.sent;\n _context3.next = 17;\n return replayData;\n\n case 17:\n _context3.t2 = _context3.sent;\n _ref5 = [_context3.t0, _context3.t1, _context3.t2];\n liveData = _ref5[0];\n upcomingData = _ref5[1];\n replayData = _ref5[2];\n return _context3.abrupt('return', liveData && liveData[0] || upcomingData && upcomingData[0] || replayData && replayData[0]);\n\n case 23:\n\n liveData = dispatch(getListingsByType('live', query));\n upcomingData = dispatch(getListingsByType('upcoming', query));\n replayData = dispatch(getListingsByType('replay', query));\n _context3.next = 28;\n return liveData;\n\n case 28:\n _context3.t3 = _context3.sent;\n _context3.next = 31;\n return upcomingData;\n\n case 31:\n _context3.t4 = _context3.sent;\n _context3.next = 34;\n return replayData;\n\n case 34:\n _context3.t5 = _context3.sent;\n _ref6 = [_context3.t3, _context3.t4, _context3.t5];\n liveData = _ref6[0];\n upcomingData = _ref6[1];\n replayData = _ref6[2];\n return _context3.abrupt('return', liveData || replayData || upcomingData);\n\n case 40:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this3);\n }));\n\n return function (_x4) {\n return _ref4.apply(this, arguments);\n };\n }();\n}\n\n/***/ }),\n/* 207 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERROR_CODES\", function() { return ERROR_CODES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERROR_PAGE_RESPONSE\", function() { return ERROR_PAGE_RESPONSE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"config\", function() { return config; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getServiceUrl\", function() { return getServiceUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPath\", function() { return getPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPageBaseUrl\", function() { return getPageBaseUrl; });\n/* harmony export (immutable) */ __webpack_exports__[\"getPageApiUrl\"] = getPageApiUrl;\n/* harmony export (immutable) */ __webpack_exports__[\"getPage\"] = getPage;\n/* harmony export (immutable) */ __webpack_exports__[\"getEvent\"] = getEvent;\n/* harmony export (immutable) */ __webpack_exports__[\"getVideo\"] = getVideo;\n/* harmony export (immutable) */ __webpack_exports__[\"getBucketPage\"] = getBucketPage;\n/* harmony export (immutable) */ __webpack_exports__[\"getPageByFullUrl\"] = getPageByFullUrl;\n/* harmony export (immutable) */ __webpack_exports__[\"getPlaybackMeta\"] = getPlaybackMeta;\n/* harmony export (immutable) */ __webpack_exports__[\"getCategories\"] = getCategories;\n/* harmony export (immutable) */ __webpack_exports__[\"getNetworks\"] = getNetworks;\n/* harmony export (immutable) */ __webpack_exports__[\"getPickerStreams\"] = getPickerStreams;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_loglevel__ = __webpack_require__(73);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_loglevel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_loglevel__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__format_queryString__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__url_adapter_toAbsoluteURL__ = __webpack_require__(90);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__cache_requestCache__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__requestProxy__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__config__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10__config__);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ApiEnv = __WEBPACK_IMPORTED_MODULE_9__enums__[\"b\" /* Api */].Env;\n\n\nvar log = __WEBPACK_IMPORTED_MODULE_1_loglevel___default.a.getLogger('PageAPI');\n\nvar pageApiConfig = __WEBPACK_IMPORTED_MODULE_10__config___default.a.pageApi;\n\nvar DEFAULT_EXPIRATION = 60;\nvar DEFAULT_TIMEOUT = 10000;\nvar ONE_HOUR = 3600;\n\n// we can set catalogPageTypes in app config if it is needed to be more manageable. \nvar catalogPageTypes = new Set([\"competitionGroup\", \"compilation\", \"conference\", \"event\", \"film\", \"franchise\", \"institution\", \"league\", \"organizer\", \"other\", \"qualifier\", \"season\", \"series\", \"short\", \"sport\", \"tour\", \"tournament\", \"network\"]);\n\nvar ERROR_CODES = {\n GENERIC_ERROR: 'GENERIC_ERROR',\n PAGE_NOT_CONFIGURED: 'PAGE_NOT_CONFIGURED',\n COUNTRY_NOT_SUPPORTED: 'COUNTRY_NOT_SUPPORTED',\n COUNTRY_AND_EDITION_CONFLICT: 'COUNTRY_AND_EDITION_CONFLICT'\n};\n// TODO: This could be something more elegant, like a bucket for the linear channels\nvar ERROR_PAGE_RESPONSE = {\n page: {\n error: {\n errorCode: ERROR_CODES.GENERIC_ERROR,\n message: 'Page data not found'\n }\n }\n};\n\nvar DEFAULT_CONFIGURATION = {\n paths: {\n base: '/api/product/{version}/watchespn/web',\n home: '/api/product/{version}/watchespn/web/home',\n event: '/api/product/{version}/watchespn/web/event',\n video: '/api/product/{version}/watchespn/web/video'\n }\n};\n\nvar config = _extends({}, DEFAULT_CONFIGURATION, pageApiConfig);\n\nvar getServiceUrl = function getServiceUrl() {\n var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ApiEnv.PROD;\n\n return Object(__WEBPACK_IMPORTED_MODULE_4__url_adapter_toAbsoluteURL__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_2__constants__[\"n\" /* PRODUCT_API_CONFIGURATION */][env].serviceUrl);\n};\n\nvar getPath = function getPath() {\n var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'base';\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'v3';\n\n return '' + config.paths[path].replace('{version}', version);\n};\n\nvar getPageBaseUrl = function getPageBaseUrl() {\n var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ApiEnv.PROD;\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'v3';\n\n return '' + getServiceUrl(env) + getPath('base', version);\n};\n\nfunction getPageApiUrl(params) {\n var name = params.name,\n qs = params.qs,\n apiEnv = params.apiEnv,\n apiVersion = params.apiVersion,\n pathParamsArg = params.pathParamsArg;\n /**\n * Jira ticket: WEWEB-2141\n * Please see comments in refreshBuckets where pageName has been overridden to be correct page name\n * refreshBuckets is called when user is logged in which is triggered down getPage being called.\n * When user logged in to collection page, pageApi url returns \".../collection/5060?...\"\n * and causes 404 from the api. We need to update name from 'collection' to 'bucket' and append \n * bucketId in the url\n */\n\n if (name === 'bucket' && pathParamsArg) {\n return getPageBaseUrl(apiEnv, apiVersion) + '/' + name + qs + '&bucketId=' + pathParamsArg;\n }\n\n var type = name;\n if (catalogPageTypes.has(name)) {\n type = 'catalog';\n }\n var pathParams = pathParamsArg ? '/' + pathParamsArg : '';\n return getPageBaseUrl(apiEnv, apiVersion) + '/' + type + pathParams + qs;\n}\n\nfunction getPage(_ref) {\n var apiEnv = _ref.apiEnv,\n apiVersion = _ref.apiVersion,\n authStates = _ref.authStates,\n authNetworks = _ref.authNetworks,\n entitlements = _ref.entitlements,\n favoriteTeam = _ref.favoriteTeam,\n favoriteSport = _ref.favoriteSport,\n countryCode = _ref.countryCode,\n _ref$deviceType = _ref.deviceType,\n deviceType = _ref$deviceType === undefined ? __WEBPACK_IMPORTED_MODULE_9__enums__[\"q\" /* Device */].DESKTOP : _ref$deviceType,\n zipcode = _ref.zipcode,\n pathParamsArg = _ref.pathParams,\n lang = _ref.lang,\n tz = _ref.tz,\n name = _ref.name,\n packageId = _ref.packageId,\n tier = _ref.tier,\n edition = _ref.edition,\n sessionToken = _ref.sessionToken,\n features = _ref.features;\n\n var isShortStopLive = name === 'shortstoplive';\n var ssBust = isShortStopLive ? Math.floor(Math.random() * 1000) : null;\n var qs = Object(__WEBPACK_IMPORTED_MODULE_3__format_queryString__[\"a\" /* default */])({\n authStates: authStates,\n authNetworks: authNetworks,\n entitlements: entitlements,\n favoriteTeam: favoriteTeam,\n favoriteSport: favoriteSport,\n lang: lang,\n tz: tz,\n deviceType: deviceType,\n ssBust: ssBust,\n countryCode: countryCode,\n zipcode: zipcode,\n packageId: packageId,\n tier: tier,\n edition: edition,\n features: features\n });\n\n var url = getPageApiUrl({ name: name, qs: qs, apiEnv: apiEnv, apiVersion: apiVersion, pathParamsArg: pathParamsArg });\n\n log.debug('getPage: ' + url);\n\n return __WEBPACK_IMPORTED_MODULE_6__cache_requestCache__[\"a\" /* default */].get(url).set('Accept-Language', lang + '-' + countryCode).set('dss-session-token', sessionToken).expiration(isShortStopLive ? 0 : DEFAULT_EXPIRATION).use(__WEBPACK_IMPORTED_MODULE_7__requestProxy__[\"a\" /* default */]).timeout(DEFAULT_TIMEOUT).then(function (_ref2) {\n var body = _ref2.body;\n\n __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n log.error('getPage: ' + url, err.status);\n __WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"b\" /* newRelicEmitter */].emit(__WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n if (err.status >= 400 && err.status < 500) {\n return err.body && err.body.page && err.body.page.error ? err.body : ERROR_PAGE_RESPONSE;\n }\n return __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].get(url).then(function (response) {\n return response || undefined;\n });\n });\n}\n\nfunction getEvent(_ref3) {\n var apiEnv = _ref3.apiEnv,\n apiVersion = _ref3.apiVersion,\n countryCode = _ref3.countryCode,\n authStates = _ref3.authStates,\n authNetworks = _ref3.authNetworks,\n entitlements = _ref3.entitlements,\n favoriteTeam = _ref3.favoriteTeam,\n favoriteSport = _ref3.favoriteSport,\n _ref3$deviceType = _ref3.deviceType,\n deviceType = _ref3$deviceType === undefined ? __WEBPACK_IMPORTED_MODULE_9__enums__[\"q\" /* Device */].DESKTOP : _ref3$deviceType,\n zipcode = _ref3.zipcode,\n lang = _ref3.lang,\n tz = _ref3.tz,\n packageId = _ref3.packageId,\n tier = _ref3.tier,\n _ref3$query = _ref3.query,\n query = _ref3$query === undefined ? {} : _ref3$query,\n features = _ref3.features;\n\n // essentially our schema for event page requests\n var airingId = query.airingId,\n eventId = query.eventId,\n id = query.id,\n network = query.network,\n sourceLang = query.sourceLang,\n status = query.status;\n\n var eventQuery = { airingId: airingId, eventId: eventId, id: id, network: network, sourceLang: sourceLang, status: status };\n\n var qs = Object(__WEBPACK_IMPORTED_MODULE_3__format_queryString__[\"a\" /* default */])(_extends({}, eventQuery, {\n authStates: authStates,\n authNetworks: authNetworks,\n entitlements: entitlements,\n favoriteTeam: favoriteTeam,\n favoriteSport: favoriteSport,\n lang: lang,\n tz: tz,\n deviceType: deviceType,\n countryCode: countryCode,\n zipcode: zipcode,\n packageId: packageId,\n tier: tier,\n features: features\n }));\n var url = '' + getServiceUrl(apiEnv) + getPath('event', apiVersion) + qs;\n\n if (!Object.keys(query || {}).length) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.reject(new Error('No query params to get an event.'));\n }\n\n log.debug('getEvent: ' + url);\n\n return __WEBPACK_IMPORTED_MODULE_6__cache_requestCache__[\"a\" /* default */].get(url).set('Accept-Language', lang + '-' + countryCode).use(__WEBPACK_IMPORTED_MODULE_7__requestProxy__[\"a\" /* default */]).timeout(DEFAULT_TIMEOUT).then(function (_ref4) {\n var body = _ref4.body;\n\n __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n log.error('getEvent: ' + url, err.originalError);\n __WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"b\" /* newRelicEmitter */].emit(__WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n return __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].get(url).then(function (response) {\n return response || undefined;\n });\n });\n}\n\n// video endpoint is slightly different and uses a path param\nfunction getVideo(_ref5) {\n var apiEnv = _ref5.apiEnv,\n apiVersion = _ref5.apiVersion,\n countryCode = _ref5.countryCode,\n _ref5$deviceType = _ref5.deviceType,\n deviceType = _ref5$deviceType === undefined ? __WEBPACK_IMPORTED_MODULE_9__enums__[\"q\" /* Device */].DESKTOP : _ref5$deviceType,\n authStates = _ref5.authStates,\n authNetworks = _ref5.authNetworks,\n entitlements = _ref5.entitlements,\n favoriteTeam = _ref5.favoriteTeam,\n favoriteSport = _ref5.favoriteSport,\n lang = _ref5.lang,\n sourceLang = _ref5.sourceLang,\n tz = _ref5.tz,\n packageId = _ref5.packageId,\n tier = _ref5.tier,\n pathParamsArg = _ref5.pathParams,\n _ref5$query = _ref5.query,\n query = _ref5$query === undefined ? {} : _ref5$query,\n features = _ref5.features;\n\n var qs = Object(__WEBPACK_IMPORTED_MODULE_3__format_queryString__[\"a\" /* default */])(_extends({}, query, {\n authStates: authStates,\n authNetworks: authNetworks,\n entitlements: entitlements,\n favoriteTeam: favoriteTeam,\n favoriteSport: favoriteSport,\n lang: lang,\n sourceLang: sourceLang,\n tz: tz,\n deviceType: deviceType,\n countryCode: countryCode,\n packageId: packageId,\n tier: tier,\n features: features\n }));\n var pathParams = pathParamsArg ? '/' + pathParamsArg : '';\n var url = '' + getServiceUrl(apiEnv) + getPath('video', apiVersion) + pathParams + qs;\n\n if (!pathParamsArg) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.reject(new Error('No params to get a video.'));\n }\n\n log.debug('getVideo: ' + url);\n\n return __WEBPACK_IMPORTED_MODULE_6__cache_requestCache__[\"a\" /* default */].get(url).set('Accept-Language', lang + '-' + countryCode).use(__WEBPACK_IMPORTED_MODULE_7__requestProxy__[\"a\" /* default */]).timeout(DEFAULT_TIMEOUT).then(function (_ref6) {\n var body = _ref6.body;\n\n __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n log.error('getVideo: ' + url, err);\n __WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"b\" /* newRelicEmitter */].emit(__WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n return __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].get(url).then(function (response) {\n return response || undefined;\n });\n });\n}\n\nfunction getBucketPage(_ref7) {\n var apiEnv = _ref7.apiEnv,\n apiVersion = _ref7.apiVersion,\n authStates = _ref7.authStates,\n authNetworks = _ref7.authNetworks,\n entitlements = _ref7.entitlements,\n favoriteTeam = _ref7.favoriteTeam,\n favoriteSport = _ref7.favoriteSport,\n bucketId = _ref7.bucketId,\n countryCode = _ref7.countryCode,\n _ref7$deviceType = _ref7.deviceType,\n deviceType = _ref7$deviceType === undefined ? __WEBPACK_IMPORTED_MODULE_9__enums__[\"q\" /* Device */].DESKTOP : _ref7$deviceType,\n zipcode = _ref7.zipcode,\n groupId = _ref7.groupId,\n ignores = _ref7.ignores,\n lang = _ref7.lang,\n tz = _ref7.tz,\n packageId = _ref7.packageId,\n tier = _ref7.tier,\n sessionToken = _ref7.sessionToken,\n features = _ref7.features;\n\n var qs = Object(__WEBPACK_IMPORTED_MODULE_3__format_queryString__[\"a\" /* default */])({\n authStates: authStates,\n authNetworks: authNetworks,\n entitlements: entitlements,\n favoriteTeam: favoriteTeam,\n favoriteSport: favoriteSport,\n bucketId: bucketId,\n countryCode: countryCode,\n deviceType: deviceType,\n zipcode: zipcode,\n groupId: groupId,\n ignores: ignores,\n lang: lang,\n tz: tz,\n packageId: packageId,\n tier: tier,\n features: features\n });\n\n var url = getPageBaseUrl(apiEnv, apiVersion) + '/bucket' + qs;\n\n log.debug('getBucketPage: ' + url);\n\n return __WEBPACK_IMPORTED_MODULE_6__cache_requestCache__[\"a\" /* default */].get(url).set('Accept-Language', lang + '-' + countryCode).set('dss-session-token', sessionToken).use(__WEBPACK_IMPORTED_MODULE_7__requestProxy__[\"a\" /* default */]).timeout(DEFAULT_TIMEOUT).then(function (_ref8) {\n var body = _ref8.body;\n\n __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n log.error('getBucketPage: ' + url, err.message);\n __WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"b\" /* newRelicEmitter */].emit(__WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n return __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].get(url).then(function (response) {\n return response || undefined;\n });\n });\n}\n\n// #TODO: check the format of the url param and reject if invalid\nfunction getPageByFullUrl(_ref9) {\n var countryCode = _ref9.countryCode,\n _ref9$deviceType = _ref9.deviceType,\n deviceType = _ref9$deviceType === undefined ? __WEBPACK_IMPORTED_MODULE_9__enums__[\"q\" /* Device */].DESKTOP : _ref9$deviceType,\n urlArg = _ref9.url,\n sessionToken = _ref9.sessionToken,\n features = _ref9.features;\n\n var qs = Object(__WEBPACK_IMPORTED_MODULE_3__format_queryString__[\"a\" /* default */])({ deviceType: deviceType, countryCode: countryCode, features: features });\n var url = '' + urlArg + qs;\n\n log.debug('getUrl: ' + url);\n\n if (url) {\n return __WEBPACK_IMPORTED_MODULE_6__cache_requestCache__[\"a\" /* default */].get(url).use(__WEBPACK_IMPORTED_MODULE_7__requestProxy__[\"a\" /* default */]).set('dss-session-token', sessionToken).timeout(DEFAULT_TIMEOUT).then(function (_ref10) {\n var body = _ref10.body;\n\n __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n log.error('getUrl: ' + url, err.status);\n __WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"b\" /* newRelicEmitter */].emit(__WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n if (err.status === 404) {\n return ERROR_PAGE_RESPONSE;\n }\n return __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].get(url).then(function (response) {\n return response || undefined;\n });\n });\n }\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.reject(new Error('No url supplied'));\n}\n\nfunction getPlaybackMeta(urlArg) {\n var url = urlArg;\n // Replacing the playback url with https due to server side making request with http and dehydrated to the client side.\n if (true && url.indexOf('http://') === 0) {\n url = url.replace('http://', 'https://');\n }\n\n log.debug('getPlaybackMeta: ' + url);\n\n return __WEBPACK_IMPORTED_MODULE_6__cache_requestCache__[\"a\" /* default */].get('' + url + (url.indexOf('?') === -1 ? '?' : '&') + 'rand=' + Date.now()).expiration(0).use(__WEBPACK_IMPORTED_MODULE_7__requestProxy__[\"a\" /* default */]).timeout(DEFAULT_TIMEOUT).then(function (_ref11) {\n var body = _ref11.body;\n\n __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n log.error('getPlaybackMeta: ' + url, err.originalError);\n __WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"b\" /* newRelicEmitter */].emit(__WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n return __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].get(url).then(function (response) {\n return response || undefined;\n });\n });\n}\n\nfunction getCategories() {\n var apiEnv = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ApiEnv.PROD;\n var _ref12 = arguments[1];\n var _ref12$countryCode = _ref12.countryCode,\n countryCode = _ref12$countryCode === undefined ? 'US' : _ref12$countryCode,\n _ref12$lang = _ref12.lang,\n lang = _ref12$lang === undefined ? 'en' : _ref12$lang;\n\n var qs = Object(__WEBPACK_IMPORTED_MODULE_3__format_queryString__[\"a\" /* default */])({ countryCode: countryCode, lang: lang });\n var url = getServiceUrl(apiEnv) + '/api/product/v3/watchespn/web/collection/alias/schedule_categories' + qs;\n return Object(__WEBPACK_IMPORTED_MODULE_6__cache_requestCache__[\"a\" /* default */])(url).use(__WEBPACK_IMPORTED_MODULE_7__requestProxy__[\"a\" /* default */]).then(function (response) {\n var categories = response.body.nodes || [];\n __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].set(url, categories);\n return categories;\n }).catch(function (err) {\n log.error('getCategories:', err.originalError);\n return __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].get(url);\n });\n}\n\nfunction getNetworks() {\n var apiEnv = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ApiEnv.PROD;\n var _ref13 = arguments[1];\n var _ref13$countryCode = _ref13.countryCode,\n countryCode = _ref13$countryCode === undefined ? 'US' : _ref13$countryCode,\n _ref13$lang = _ref13.lang,\n lang = _ref13$lang === undefined ? 'en' : _ref13$lang;\n\n var qs = Object(__WEBPACK_IMPORTED_MODULE_3__format_queryString__[\"a\" /* default */])({ countryCode: countryCode, lang: lang });\n var url = getServiceUrl(apiEnv) + '/api/product/v3/watchespn/web/collection/alias/schedule_networks' + qs;\n return Object(__WEBPACK_IMPORTED_MODULE_6__cache_requestCache__[\"a\" /* default */])(url).use(__WEBPACK_IMPORTED_MODULE_7__requestProxy__[\"a\" /* default */]).then(function (response) {\n var networks = response.body.nodes || [];\n __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].set(url, networks);\n return networks;\n }).catch(function (err) {\n log.error('getNetworks:', err.originalError);\n return __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].get(url);\n });\n}\n\nfunction getPickerStreams(url) {\n if (url && typeof url === 'string') {\n if (window.location.protocol === 'https:') {\n url = url.replace('http://', 'https://');\n }\n return __WEBPACK_IMPORTED_MODULE_6__cache_requestCache__[\"a\" /* default */].get(url).use(__WEBPACK_IMPORTED_MODULE_7__requestProxy__[\"a\" /* default */]).timeout(DEFAULT_TIMEOUT).then(function (_ref14) {\n var body = _ref14.body;\n\n __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n log.error('getPicker: ' + url, err.originalError);\n __WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"b\" /* newRelicEmitter */].emit(__WEBPACK_IMPORTED_MODULE_5__metrics_newRelicEventBus__[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n return __WEBPACK_IMPORTED_MODULE_8__cache_fallbackCache__[\"a\" /* default */].get(url).then(function (response) {\n return response || undefined;\n });\n });\n }\n}\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFindIndex = __webpack_require__(299),\n baseIteratee = __webpack_require__(114),\n toInteger = __webpack_require__(316);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(131),\n stackClear = __webpack_require__(637),\n stackDelete = __webpack_require__(638),\n stackGet = __webpack_require__(639),\n stackHas = __webpack_require__(640),\n stackSet = __webpack_require__(641);\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports) {\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable no-unused-vars */\n\n/**\n * Abstract Authenticator class.\n * @class Authenticator\n */\nfunction Authenticator() {\n if (!(this instanceof Authenticator)) {\n return new Authenticator();\n }\n}\n\n/**\n * initializes the Authenticator\n */\nAuthenticator.prototype.initialize = function initialize(callback) {};\n\n/**\n * returns the authentication status\n * @abstract\n * @returns {Boolean}\n */\nAuthenticator.prototype.isAuthenticated = function isAuthenticated() {\n return false;\n};\n\n/**\n * check if the user is authenticated\n * @abstract\n * @param {Authenticator~checkAuthenticationCallback} callback -\n * The callback to be executed when authentication is complete.\n * @returns {Promise.<Boolean>} - A Promise that will be resolved with a Boolean\n * value indicating the authentication status.\n */\nAuthenticator.prototype.checkAuthentication = function checkAuthentication(callback) {\n throw new Error('checkAuthentication is not implemented.');\n};\n\n/**\n * Authenticate the user\n * @abstract\n * @param {Object} identity - The identity to be authenticated.\n * @param {Authenticator~authenticateCallback} callback -\n * The callback to be executed when authentication is complete.\n * @returns {Promise.<Boolean>} - A Promise that will be resolved with a Boolean\n * value indicating the authentication status.\n */\nAuthenticator.prototype.authenticate = function authenticate(identity, callback) {\n throw new Error('authenticate is not implemented.');\n};\n\n/**\n * Deauthenticate the user\n * @abstract\n * @param {Authenticator~deauthenticateCallback} callback -\n * The callback to be executed when deauthentication is complete.\n * @returns {Promise.<Boolean>}\n */\nAuthenticator.prototype.deauthenticate = function deauthenticate(callback) {\n throw new Error('deauthenticate is not implemented.');\n};\n\n/**\n * Retrieve the current authentication information.\n * Response will be null if the identity has not be authenticated.\n * @abstract\n * @param {Authenticator~getAuthenticationInfoCallback} callback -\n * The callback to be executed when the authentication info has been retrieved.\n * @returns {Promise.<Object>}\n */\nAuthenticator.prototype.getAuthenticationInfo = function getAuthenticationInfo(callback) {\n throw new Error('getAuthenticationInfo is not implemented.');\n};\n\nexports.default = Authenticator;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 212 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = scoreAll;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__page_actions__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduleModule_actions__ = __webpack_require__(63);\n\n\n\n\nfunction scoreAll() {\n // eslint-disable-line\n return function (dispatch) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.all([dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__page_actions__[\"n\" /* completePageLoad */])()), dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__scheduleModule_actions__[\"e\" /* scoreScheduleModule */])())]);\n };\n}\n\n/***/ }),\n/* 213 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return PlayerTech; });\nvar PlayerTech = {\n BAM: 'bam',\n BRIGHTCOVE: 'brightcove'\n};\n\n/* unused harmony default export */ var _unused_webpack_default_export = ({\n PlayerTech: PlayerTech\n});\n\n/***/ }),\n/* 214 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_eventemitter3__ = __webpack_require__(680);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_eventemitter3___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_eventemitter3__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_bluebird__);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable class-methods-use-this */\n\n\n\nvar PlayerBase = function (_EventEmitter) {\n _inherits(PlayerBase, _EventEmitter);\n\n function PlayerBase() {\n _classCallCheck(this, PlayerBase);\n\n return _possibleConstructorReturn(this, (PlayerBase.__proto__ || Object.getPrototypeOf(PlayerBase)).apply(this, arguments));\n }\n\n _createClass(PlayerBase, [{\n key: 'create',\n value: function create(options) {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve(options);\n }\n }, {\n key: 'insert',\n value: function insert() {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve();\n }\n }, {\n key: 'delete',\n value: function _delete() {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve();\n }\n }, {\n key: 'play',\n value: function play() {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve();\n }\n }, {\n key: 'pause',\n value: function pause() {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve();\n }\n }, {\n key: 'mute',\n value: function mute() {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve();\n }\n }, {\n key: 'unmute',\n value: function unmute() {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve();\n }\n }, {\n key: 'error',\n value: function error() {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve();\n }\n }, {\n key: 'getPlayerConfigs',\n value: function getPlayerConfigs() {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve();\n }\n }, {\n key: 'updatePlayerConfigs',\n value: function updatePlayerConfigs(newConfigs) {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve(newConfigs);\n }\n }, {\n key: 'getGeoLocation',\n value: function getGeoLocation() {\n return __WEBPACK_IMPORTED_MODULE_1_bluebird___default.a.resolve();\n }\n }]);\n\n return PlayerBase;\n}(__WEBPACK_IMPORTED_MODULE_0_eventemitter3___default.a);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (PlayerBase);\n\n/***/ }),\n/* 215 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/jwt-decode/lib/index.js\nvar lib = __webpack_require__(683);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// CONCATENATED MODULE: ./app/lib/auth/jwtDecodeToken.js\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nfunction jwtDecodeToken() {\n var token = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var res = {};\n try {\n // need replace the Bearer header to avoid Uncaught InvalidTokenError {message: \"Invalid token specified: Cannot read property 'replace' of undefined\"} \n var jwtToken = lib_default()(token.replace('Bearer ', ''));\n if ((typeof jwtToken === 'undefined' ? 'undefined' : _typeof(jwtToken)) === 'object') {\n res = { jwtToken: jwtToken, decodeSuccess: true };\n }\n } catch (e) {\n res = { decodeSuccess: false, decodeErr: e };\n }\n return res;\n};\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./app/lib/auth/hasTDA.js\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = hasTDA;\n\n\n\nfunction hasTDA(bamSessionToken) {\n var res = jwtDecodeToken(bamSessionToken);\n if (res.decodeSuccess) {\n var _ref = res.jwtToken || {},\n _ref$context = _ref.context;\n\n _ref$context = _ref$context === undefined ? {} : _ref$context;\n var _ref$context$subscrip = _ref$context.subscriptions,\n subscriptions = _ref$context$subscrip === undefined ? [] : _ref$context$subscrip;\n\n var _hasTDA = subscriptions.some(function (sub) {\n return sub.entitlements.some(function (val) {\n return val === enums[\"s\" /* Entitlements */].ESPN_TDA;\n });\n });\n if (_hasTDA) {\n return true;\n }\n }\n return false;\n}\n\n/***/ }),\n/* 216 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export START_GET_FAN */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return COMPLETE_GET_FAN; });\n/* unused harmony export startGetFan */\n/* unused harmony export completeGetFan */\n/* unused harmony export getFan */\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = createSmartFanAction;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_watch_fanapi__ = __webpack_require__(686);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_watch_fanapi___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_watch_fanapi__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selectors_fanSelector__ = __webpack_require__(91);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__oneIdActions__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__ = __webpack_require__(75);\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\nvar START_GET_FAN = 'START_GET_FAN';\nvar COMPLETE_GET_FAN = 'COMPLETE_GET_FAN';\n\nvar fanApi = new __WEBPACK_IMPORTED_MODULE_0_watch_fanapi___default.a({ sourceHeader: 'espncom-watch' });\n\nfunction startGetFan() {\n return {\n type: START_GET_FAN,\n startTime: Date.now()\n };\n}\n\nfunction completeGetFan(fan) {\n return {\n type: COMPLETE_GET_FAN,\n completeTime: Date.now(),\n fan: fan\n };\n}\n\nfunction getFan(swid) {\n return function (dispatch) {\n dispatch(startGetFan());\n return fanApi.getFanForId(swid).then(function (fan) {\n dispatch(completeGetFan(fan));\n return fan;\n }).catch(function () {\n dispatch(completeGetFan({}));\n return {};\n });\n };\n}\n\nfunction createSmartFanAction() {\n var _this = this;\n\n return function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch, getState) {\n var fan, _getState, _getState$oneId, isLoggedIn, _getState2, _getState2$oneId, swid;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"a\" /* markStart */]('createSmartFanAction');\n fan = Object(__WEBPACK_IMPORTED_MODULE_1__selectors_fanSelector__[\"a\" /* default */])(getState());\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__lib_util_isEmpty__[\"a\" /* default */])(fan)) {\n _context.next = 17;\n break;\n }\n\n _getState = getState(), _getState$oneId = _getState.oneId;\n _getState$oneId = _getState$oneId === undefined ? {} : _getState$oneId;\n isLoggedIn = _getState$oneId.isLoggedIn;\n\n if (isLoggedIn) {\n _context.next = 10;\n break;\n }\n\n _context.next = 9;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__oneIdActions__[\"h\" /* checkSWIDAuthentication */])());\n\n case 9:\n isLoggedIn = _context.sent;\n\n case 10:\n if (!isLoggedIn) {\n _context.next = 17;\n break;\n }\n\n _getState2 = getState(), _getState2$oneId = _getState2.oneId;\n _getState2$oneId = _getState2$oneId === undefined ? {} : _getState2$oneId;\n swid = _getState2$oneId.swid;\n _context.next = 16;\n return dispatch(getFan(swid));\n\n case 16:\n fan = _context.sent;\n\n case 17:\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"b\" /* measureAndTime */]('createSmartFanAction');\n return _context.abrupt('return', fan);\n\n case 19:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n}\n\n/**\n Update the \"uid\" in the preferences for this fan to test scoring\n */\n// const myFan = {\n// \"id\":\"{AEDB5BCC-173D-49BD-9B0B-77DFD5964C19}\",\n// \"profile\":{\n// \"createDate\":1422286205898,\n// \"lastUpdateDate\":1502446881443,\n// \"lastUpdateSource\":\"fuse-v2-batch\",\n// \"isInsider\":true,\n// \"gender\":\"M\",\n// \"hasNotificationPreferences\":false,\n// \"useSortGlobal\":true,\n// \"age\":30,\n// \"countryCode\":\"US\",\n// \"postalCode\":\"11501\",\n// \"dmaId\":\"501\",\n// \"registrationSource\":\"espn_video\",\n// \"registrationDate\":1271055600000\n// },\n// \"lastAccessDate\":\"2017-08-11T18:56:19Z\",\n// \"createDate\":\"2010-07-21T02:33:45Z\",\n// \"lastUpdateDate\":\"2017-08-11T22:23:27Z\",\n// \"createSource\":null,\n// \"lastUpdateSource\":\"ESPN.com - FAM\",\n// \"lastAccessSource\":\"ESPN.com - FAM\",\n// \"preferences\":[\n// {\n// \"id\": \"14315045-A46A-478F-BEAE-8ACD3F36B8CD\",\n// \"createDate\": 1502490872419,\n// \"createSource\": \"ESPN.com - FAM\",\n// \"metaData\": {\n// \"sportId\": \"54\",\n// \"teamId\": \"251\",\n// \"team\": {\n// \"uid\": \"s:600~l:602\"\n// }\n// },\n// \"sortGlobal\": 109\n// }\n// ]\n// };\n\n/***/ }),\n/* 217 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./app/lib/util/concatAll.js\nfunction concatAll() {\n var theArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var results = [];\n theArray.forEach(function (subArray) {\n subArray.forEach(function (value) {\n results.push(value);\n });\n });\n return results;\n}\n// CONCATENATED MODULE: ./app/webapp/player/util/getContentPlaylistFromBuckets.js\n\n\n// creates an array of arrays of content (only if content exists in that bucket)\n// flattens that array of arrays using \"concatAll\"\n\nfunction getContentPlaylistFromBuckets() {\n var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var buckets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var contentIndex = 0; // this should really never be used, but default to 0\n // if there are no buckets, create a single item playlist of the content\n if (buckets.length === 0) {\n return [{\n id: content.guid,\n headline: content.name,\n poster: content.imageHref\n }];\n }\n return concatAll(buckets.filter(function (bucket) {\n var contains = false;\n bucket.contents.forEach(function (bucketContent, index) {\n if (bucketContent.id === content.id) {\n if (content.bucketName) {\n if (content.bucketName === bucket.name) {\n contains = true;\n contentIndex = index;\n }\n } else {\n contains = true;\n contentIndex = index;\n }\n }\n });\n return contains;\n }).map(function (bucket) {\n return bucket.contents.slice(contentIndex, bucket.contents.length).map(function (bucketContent) {\n var _bucketContent$guid = bucketContent.guid,\n id = _bucketContent$guid === undefined ? null : _bucketContent$guid,\n _bucketContent$name = bucketContent.name,\n headline = _bucketContent$name === undefined ? null : _bucketContent$name,\n _bucketContent$imageH = bucketContent.imageHref,\n poster = _bucketContent$imageH === undefined ? null : _bucketContent$imageH;\n\n if (id && headline && poster) {\n return {\n id: id,\n headline: headline,\n poster: poster\n };\n }\n return {};\n });\n }));\n}\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/constants.js\nvar constants = __webpack_require__(8);\n\n// CONCATENATED MODULE: ./app/webapp/player/util/getAdobeDCRConfig.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n/* harmony default export */ var getAdobeDCRConfig = (function (nielsenTrackingData) {\n var moreCustomMetadata = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var env = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : enums[\"c\" /* AppEnvs */].prod;\n var player = arguments[3];\n var ReportSuite = nielsenTrackingData.ReportSuite;\n\n delete nielsenTrackingData.ReportSuite;\n\n var apid = constants[\"k\" /* NIELSEN_APPID_TVE */];\n if (player === 'bam') {\n apid = constants[\"j\" /* NIELSEN_APPID_EPLUS */];\n }\n\n var isSecureProtocol = window && window.location && window.location.protocol && window.location.protocol.indexOf('https') > -1;\n\n var data = {\n APP_MEASUREMENT: {\n RSID: '' + ReportSuite + (env === enums[\"c\" /* AppEnvs */].prod ? ',wdgespge' : ''),\n TRACKING_SERVER: isSecureProtocol ? 'sw88.espn.com' : 'w88.espn.com',\n TRACKING_SERVER_SECURE: 'sw88.espn.com'\n },\n ESPN_CUSTOM_METADATA: _extends({}, nielsenTrackingData, moreCustomMetadata),\n HEARTBEAT: {\n DEBUG_LOGGING: false\n },\n NIELSEN_DATA: {\n APP_INFO: {\n apid: apid,\n clientId: 'us-600140',\n sfcode: 'dcr',\n DEV: {\n apid: apid,\n clientId: 'us-600140',\n sfcode: 'dcr'\n },\n PROD: {\n apid: apid,\n clientId: 'us-600140',\n sfcode: 'dcr'\n }\n },\n CONTENT_METADATA: {\n segA: nielsenTrackingData.SegA,\n segC: nielsenTrackingData.SegC,\n isfullepisode: nielsenTrackingData.isfullepisode\n }\n }\n };\n return data;\n});\n// EXTERNAL MODULE: ./app/lib/auth/Authenticator.js\nvar Authenticator = __webpack_require__(318);\n\n// EXTERNAL MODULE: ./app/lib/auth/streamHasAuthType.js\nvar streamHasAuthType = __webpack_require__(45);\n\n// EXTERNAL MODULE: ./app/lib/api/PageAPI.js\nvar PageAPI = __webpack_require__(207);\n\n// EXTERNAL MODULE: ./node_modules/cookie-cutter/index.js\nvar cookie_cutter = __webpack_require__(93);\nvar cookie_cutter_default = /*#__PURE__*/__webpack_require__.n(cookie_cutter);\n\n// EXTERNAL MODULE: ./app/lib/util/localStorage.js\nvar localStorage = __webpack_require__(44);\n\n// CONCATENATED MODULE: ./app/webapp/player/util/getPrerollSetting.js\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\n\nfunction initializePrerollHistory() {\n if (!Object(localStorage[\"b\" /* getSessionItem */])('playedItems')) {\n Object(localStorage[\"e\" /* setSessionItem */])('playedItems', []);\n }\n}\n\n/**\n * getPrerollSetting - Returns a boolean flag used to set `opts.preroll` in player options.\n * If `savePrerollHistory` is defined along with the `contentId` parameter,\n * this function will initialize played items session storage to keep track of already played streams.\n * If a stream has been played (stored in storage), it will return false to avoid preroll.\n *\n * @param {object} prerollConfig = {} - Object containing contentType specific preroll properties such\n * as `enablePreroll` and `savePrerollHistory`.\n * @param {string} contentId - contentId of the given stream to be played\n *\n * @return {boolean}\n */\n/* harmony default export */ var getPrerollSetting = (function () {\n var prerollConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var contentId = arguments[1];\n var _prerollConfig$savePr = prerollConfig.savePrerollHistory,\n savePrerollHistory = _prerollConfig$savePr === undefined ? false : _prerollConfig$savePr,\n _prerollConfig$enable = prerollConfig.enablePreroll,\n enablePreroll = _prerollConfig$enable === undefined ? false : _prerollConfig$enable;\n\n\n if (savePrerollHistory && typeof contentId === 'string' && contentId.trim() !== '') {\n initializePrerollHistory();\n var playedItemsInSession = Object(localStorage[\"b\" /* getSessionItem */])('playedItems');\n\n if (playedItemsInSession.indexOf(contentId) === -1) {\n Object(localStorage[\"e\" /* setSessionItem */])('playedItems', [].concat(_toConsumableArray(playedItemsInSession), [contentId]));\n return true;\n }\n\n return false;\n }\n\n return enablePreroll;\n});\n// EXTERNAL MODULE: ./app/lib/util/isEmpty.js\nvar isEmpty = __webpack_require__(12);\n\n// EXTERNAL MODULE: ./app/lib/util/getDeviceTypeFromUA.js\nvar getDeviceTypeFromUA = __webpack_require__(325);\n\n// EXTERNAL MODULE: ./app/lib/util/isSafariBrowser.js\nvar isSafariBrowser = __webpack_require__(326);\n\n// CONCATENATED MODULE: ./app/lib/util/getSiteSectionId.js\n/**\n * getSiteSectionId - Returns a properly formatted string representing the site section id for BrightCove Player\n *\n * @param {string} platformType - String parameter representing the platform (i.e. android, ios, unknown)\n * @param {string} deviceType - String parameter representing the device type (i.e. desktop, tablet, handset)\n * @param {string} contentType - String parameter representing the content type (i.e. clips, vod)\n * @param {string} rootName - Optional string parameter representing the root name assignment for the SSID; defaults to `watchespn`\n *\n * @return {string} - Concatenated string value generated by platform type, device type and content type.\n */\nfunction getSiteSectionId() {\n var platformType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var deviceType = arguments[1];\n var contentType = arguments[2];\n var rootName = arguments[3];\n\n var ssid = typeof rootName === 'string' && rootName !== '' ? rootName : 'watchespn';\n\n // Client side user-agent detection is used for platformType;\n // unknown is the default assignment when no matches are found\n if (platformType !== '' && platformType !== 'unknown') {\n ssid = ssid + ':' + platformType;\n }\n\n if (typeof deviceType === 'string' && deviceType !== '') {\n ssid = ssid + ':' + deviceType;\n }\n\n if (typeof contentType === 'string' && contentType !== '') {\n ssid = ssid + ':' + contentType;\n }\n\n return ssid;\n}\n// EXTERNAL MODULE: ./app/lib/util/getAndroidVersionFromUserAgent.js\nvar getAndroidVersionFromUserAgent = __webpack_require__(327);\n\n// CONCATENATED MODULE: ./app/lib/util/peak.js\nfunction peak() {\n var theArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (theArray.length > 0) {\n return theArray[0];\n }\n return null;\n};\n// EXTERNAL MODULE: ./app/lib/util/getBamAuthConfig.js\nvar getBamAuthConfig = __webpack_require__(144);\n\n// EXTERNAL MODULE: ./app/lib/util/sortByRank.js\nvar sortByRank = __webpack_require__(328);\n\n// EXTERNAL MODULE: ./app/lib/util/getAdsConfigByEdition.js\nvar getAdsConfigByEdition = __webpack_require__(329);\n\n// CONCATENATED MODULE: ./app/lib/util/getUpsellUrlsConfigByEdition.js\n/**\n * getUpsellUrlsConfigByEdition - Returns the proper edition adsConfig object from the external `app-configurations`\n * JSON; defaults to an empty object for easier destructuring.\n *\n * @param {string} edition - Top level app edition obtained from editionMapping\n * @param {object} adsConfig = {} - External adsConfig object supporting multiple editions\n *\n * @return {object} - Config object containing possible properties such as `profile`, `networkId` and `host`\n */\nfunction getUpsellUrlsConfigByEdition(edition) {\n var urlsConfigMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // catches null or undefined\n if (!edition || !urlsConfigMap) {\n return {};\n }\n\n if (urlsConfigMap[edition]) {\n return urlsConfigMap[edition];\n }\n\n if (edition === 'us' && urlsConfigMap.domestic) {\n return urlsConfigMap.domestic;\n }\n\n // no mapping found from external config object\n return {};\n}\n// EXTERNAL MODULE: ./app/lib/util/getPrerollConfigByEdition.js\nvar getPrerollConfigByEdition = __webpack_require__(330);\n\n// EXTERNAL MODULE: ./app/lib/util/getAdsConfigByAdProvider.js\nvar getAdsConfigByAdProvider = __webpack_require__(331);\n\n// EXTERNAL MODULE: ./app/lib/util/hasTier.js\nvar hasTier = __webpack_require__(332);\n\n// EXTERNAL MODULE: ./app/lib/util/hasObj.js\nvar hasObj = __webpack_require__(333);\n\n// CONCATENATED MODULE: ./app/lib/util/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// EXTERNAL MODULE: ./app/webapp/common/video-player/index.js + 1 modules\nvar video_player = __webpack_require__(116);\n\n// CONCATENATED MODULE: ./app/webapp/player/util/getPlayerOptions.js\nvar _this = this;\n\nvar getPlayerOptions__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ApiEnv = enums[\"b\" /* Api */].Env;\n\nvar listing = void 0;\n\nfunction isGoogleAdProvider(providerName) {\n return typeof providerName === 'string' && providerName.toLowerCase().indexOf('google') !== -1;\n}\n\nfunction appendToken(url) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n token = _ref.token,\n tokenType = _ref.tokenType,\n resource = _ref.resource;\n\n var apiKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : constants[\"p\" /* SHIELD_API_KEY */];\n\n var newUrl = url;\n if (token && url && url.indexOf('startSession') === -1) {\n var tokenParam = '&token=' + token;\n var resourceParam = '';\n\n if (tokenType === 'ADOBEPASS') {\n tokenParam = '&adobeToken=' + token;\n resourceParam = '&adobeResource=' + resource;\n }\n\n // TODO: remove once `videoHref` points to `https`\n newUrl = newUrl.replace('http:', 'https:');\n newUrl += (newUrl.indexOf('?') === -1 ? '?' : '&') + 'apikey=' + apiKey + tokenParam + resourceParam;\n }\n\n return newUrl;\n}\n\n/* harmony default export */ var getPlayerOptions = (function (_ref2) {\n var apiEnv = _ref2.apiEnv,\n stream = _ref2.stream,\n _ref2$authorization = _ref2.authorization,\n authorization = _ref2$authorization === undefined ? {} : _ref2$authorization,\n streamlimiter = _ref2.streamlimiter,\n _ref2$nielsenTracking = _ref2.nielsenTrackingData,\n nielsenTrackingData = _ref2$nielsenTracking === undefined ? {} : _ref2$nielsenTracking,\n comscoreTrackingData = _ref2.comscoreTrackingData,\n _ref2$isMobile = _ref2.isMobile,\n isMobile = _ref2$isMobile === undefined ? false : _ref2$isMobile,\n device = _ref2.device,\n _ref2$error = _ref2.error,\n error = _ref2$error === undefined ? null : _ref2$error,\n env = _ref2.env,\n lang = _ref2.lang,\n _ref2$provider = _ref2.provider,\n provider = _ref2$provider === undefined ? {} : _ref2$provider,\n isDomestic = _ref2.isDomestic,\n social = _ref2.social,\n logo = _ref2.logo,\n settingsMenu = _ref2.settingsMenu,\n feedsMenu = _ref2.feedsMenu,\n userInitiated = _ref2.userInitiated,\n playbackMeta = _ref2.playbackMeta,\n prerollConfig = _ref2.prerollConfig,\n adsConfig = _ref2.adsConfig,\n _ref2$userAuth = _ref2.userAuth,\n userAuth = _ref2$userAuth === undefined ? [] : _ref2$userAuth,\n shieldApiKey = _ref2.shieldApiKey;\n var content = stream.content;\n var affiliate = provider.name;\n\n\n var autoplay = 'on';\n // always user initiated on mobile\n // TODO: perhaps Hero should be wrapped in connectPlayer as well as playable\n var wasUserInitiated = isMobile ? true : !!userInitiated;\n var conviva = null;\n\n var playerTech = Object(streamHasAuthType[\"a\" /* default */])(stream, enums[\"e\" /* AuthTypes */].BAM) ? video_player[\"a\" /* default */].PlayerTech.BAM : video_player[\"a\" /* default */].PlayerTech.BRIGHTCOVE;\n var analytics = {\n adobeDCR: getAdobeDCRConfig(nielsenTrackingData, {}, env, playerTech),\n comscore: comscoreTrackingData,\n chartbeat: {\n uid: '22222',\n domain: 'espn.com'\n }\n };\n\n // for easy debugging\n var opts = null;\n var auth = void 0;\n\n var authToken = authorization.token;\n if (authToken) {\n auth = {\n token: authorization.encoded ? authToken : window.btoa(unescape(encodeURIComponent(authToken))),\n resource: window.btoa(unescape(encodeURIComponent(authorization.resourceId || ''))),\n tokenType: authorization.tokenType || 'ADOBEPASS',\n partnerName: authorization.partnerName,\n userAuth: userAuth\n };\n }\n\n if (content.type === enums[\"o\" /* ContentType */].VOD) {\n var moreOptions = {};\n if (stream.playlist && stream.playlist.length > 0) {\n moreOptions.playlist = stream.playlist;\n } else {\n moreOptions.clipId = stream.id;\n }\n\n if (env === enums[\"c\" /* AppEnvs */].prod) {\n conviva = {\n customerKey: 'fc8dbfdc5da519f576628f619306a357f31bd006'\n };\n }\n\n opts = getPlayerOptions__extends({}, moreOptions, {\n affiliate: affiliate,\n language: lang,\n advertising: {\n siteSectionId: getSiteSectionId(Object(getDeviceTypeFromUA[\"a\" /* default */])(), device, 'clips')\n },\n analytics: getPlayerOptions__extends({}, analytics, {\n conviva: conviva\n }),\n auth: auth,\n autoplay: autoplay,\n social: social,\n logo: logo,\n settingsMenu: settingsMenu,\n feedsMenu: feedsMenu,\n endcard: true,\n streamlimiter: streamlimiter,\n wasUserInitiated: wasUserInitiated\n });\n } else if (content.type === enums[\"o\" /* ContentType */].LISTING) {\n var _stream$source = stream.source,\n sourceType = _stream$source.type,\n sourceId = _stream$source.id,\n id = stream.id,\n status = stream.status;\n\n var asset = {\n channelId: sourceId\n };\n if (sourceType === enums[\"E\" /* SourceType */].ONLINE || status === enums[\"n\" /* ContentStatus */].REPLAY) {\n asset.watchId = id;\n }\n\n if (env === enums[\"c\" /* AppEnvs */].prod) {\n conviva = {\n customerKey: '766ee8daa5d5deaeeeab4481239072ea53f6f1cc'\n };\n }\n\n var api = apiEnv === ApiEnv.QA ? {\n WATCH_BASE_URL: '//broadband.espnqa.com/espn360/apis/v1/watch'\n } : {};\n\n opts = getPlayerOptions__extends({\n affiliate: affiliate,\n language: lang,\n autoplay: autoplay,\n social: social,\n logo: logo,\n settingsMenu: settingsMenu,\n feedsMenu: feedsMenu,\n advertising: {\n assetId: stream.id\n },\n analytics: getPlayerOptions__extends({}, analytics, {\n conviva: conviva\n }),\n api: api,\n wasUserInitiated: wasUserInitiated\n }, asset, {\n auth: auth,\n streamlimiter: streamlimiter,\n error: error\n });\n }\n\n if (!Object(isEmpty[\"a\" /* default */])(prerollConfig)) {\n opts.preroll = getPrerollSetting(prerollConfig, content.id);\n }\n\n if (!opts) {\n return opts;\n }\n\n opts.api = opts.api || {};\n opts.api.shieldApiKey = shieldApiKey || constants[\"p\" /* SHIELD_API_KEY */];\n\n var shouldOverrideListings = !error && stream.authTypes && stream.authTypes.length && stream.authTypes.some(function (authType) {\n return [enums[\"e\" /* AuthTypes */].MVPD, enums[\"e\" /* AuthTypes */].OPEN].indexOf(authType) > -1;\n }) && stream.links && stream.links.play;\n\n var initialPlaybackMeta = getPlayerOptions__extends({}, playbackMeta);\n\n var listings = shouldOverrideListings ? function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(callback) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _opts, _opts$auth, tokenType, authenticator, _listing, adobeRSS, origVideoHref, response, token, resource, videoHref, _response, _ref4, playbackState, _adobeRSS, _ref5, _origVideoHref, _videoHref;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _opts = opts, _opts$auth = _opts.auth;\n _opts$auth = _opts$auth === undefined ? {} : _opts$auth;\n tokenType = _opts$auth.tokenType;\n\n if (!(listing && context && tokenType === 'ADOBEPASS')) {\n _context.next = 25;\n break;\n }\n\n // the very initial Authenticator factory call sends the configuration\n authenticator = Authenticator[\"a\" /* default */].adobe();\n _listing = listing, adobeRSS = _listing.adobeRSS, origVideoHref = _listing.origVideoHref;\n\n if (adobeRSS) {\n _context.next = 9;\n break;\n }\n\n callback(null, listing);\n return _context.abrupt('return');\n\n case 9:\n _context.prev = 9;\n _context.next = 12;\n return authenticator.authorize(adobeRSS);\n\n case 12:\n response = _context.sent;\n token = window.btoa(unescape(encodeURIComponent(response.token)));\n resource = window.btoa(unescape(encodeURIComponent(response.resourceId || '')));\n\n opts.auth = { token: token, resource: resource, tokenType: tokenType };\n videoHref = appendToken(origVideoHref, opts.auth, shieldApiKey);\n\n listing = getPlayerOptions__extends({}, listing, { videoHref: videoHref });\n callback(null, listing);\n _context.next = 24;\n break;\n\n case 21:\n _context.prev = 21;\n _context.t0 = _context['catch'](9);\n\n callback(_context.t0);\n\n case 24:\n return _context.abrupt('return');\n\n case 25:\n _context.prev = 25;\n\n if (Object(isEmpty[\"a\" /* default */])(initialPlaybackMeta)) {\n _context.next = 30;\n break;\n }\n\n _context.t1 = initialPlaybackMeta;\n _context.next = 33;\n break;\n\n case 30:\n _context.next = 32;\n return Object(PageAPI[\"getPlaybackMeta\"])(stream.links.play);\n\n case 32:\n _context.t1 = _context.sent;\n\n case 33:\n _response = _context.t1;\n\n // `fallbackCache` returns `null` instead of `undefined`, so can't use default value\n _ref4 = _response || {}, playbackState = _ref4.playbackState, _adobeRSS = _ref4.adobeRSS;\n _ref5 = playbackState || {}, _origVideoHref = _ref5.videoHref;\n\n if (_origVideoHref) {\n _context.next = 39;\n break;\n }\n\n callback('No playback URL found', null); // TODO: localize message or move this check in the player\n return _context.abrupt('return');\n\n case 39:\n _videoHref = appendToken(_origVideoHref, opts.auth, shieldApiKey);\n\n listing = getPlayerOptions__extends({}, playbackState, { origVideoHref: _origVideoHref, videoHref: _videoHref, adobeRSS: _adobeRSS });\n initialPlaybackMeta = null;\n callback(null, listing);\n _context.next = 48;\n break;\n\n case 45:\n _context.prev = 45;\n _context.t2 = _context['catch'](25);\n\n callback(_context.t2);\n\n case 48:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this, [[9, 21], [25, 45]]);\n }));\n\n return function (_x4) {\n return _ref3.apply(this, arguments);\n };\n }() : null;\n\n var programChangePollingInterval = shouldOverrideListings && !isDomestic && stream.source.type === enums[\"E\" /* SourceType */].LINEAR ? 60 * 1000 : null;\n\n // this won't technically happen right now,\n // but remove `playlist` and `clipId` so that `listings` value is respected in the player\n if (listings) {\n opts.playlist = null;\n opts.clipId = null;\n }\n\n // NOTE: The adsConfig is handled by the external app-configuration file via Bootstrap\n // See: https://code.espn.com/connected-devices/app-configurations/blob/master/configurations/watchespn-web-3.0.config.json\n if (!Object(isEmpty[\"a\" /* default */])(adsConfig)) {\n var usPrivacyCookie = cookie_cutter_default.a.get('usprivacy') || '';\n var activeAdProvider = adsConfig.activeAdProvider,\n allowAdSkip = adsConfig.allowAdSkip,\n useNewUI = adsConfig.useNewUI,\n iphoneplaysinline = adsConfig.iphoneplaysinline;\n // NOTE: Sets the Ad Provider for the Player instance\n\n opts.adProviderOrder = activeAdProvider;\n opts.advertising.allowAdSkip = allowAdSkip;\n opts.advertising.useNewUI = useNewUI;\n opts.iphoneplaysinline = iphoneplaysinline;\n\n if (isGoogleAdProvider(activeAdProvider)) {\n var cmsid = adsConfig.cmsid,\n networkCode = adsConfig.networkCode,\n pp = adsConfig.pp,\n adUnit = adsConfig.adUnit;\n\n\n opts.advertising.googleIMA = function (_options) {\n var options = _options || {};\n var imaParams = options.imaParams || {};\n var custParams = imaParams.cust_params || {};\n\n if (cmsid) {\n options.cmsid = cmsid;\n }\n\n // NOTE: `adUnit` and `networkCode` will be used for MOAT tracking\n if (networkCode) {\n options.networkCode = networkCode;\n }\n\n if (adUnit) {\n options.adUnit = adUnit;\n }\n\n // NOTE: INTL editions will have `pp` property from config\n if (pp) {\n options.pp = isMobile ? pp.mobile : pp.desktop;\n }\n\n if (usPrivacyCookie) {\n custParams.d_us_privacy = usPrivacyCookie;\n imaParams.us_privacy = usPrivacyCookie;\n if (usPrivacyCookie === '1YYY') {\n imaParams.rdp = '1';\n }\n imaParams.cust_params = custParams;\n options.imaParams = imaParams;\n }\n\n return options;\n };\n\n if (content.type === enums[\"o\" /* ContentType */].LISTING && opts.auth) {\n opts.auth.adEnv = env === enums[\"c\" /* AppEnvs */].prod ? 'prod' : 'dev';\n opts.auth.adProvider = activeAdProvider;\n }\n }\n }\n\n // Hardcoding to false for now since the config affects both v2 and v3 player\n opts.enableDRM = false; // playerOpts.enableDRM;\n\n return getPlayerOptions__extends({}, opts, {\n listings: listings,\n programChangePollingInterval: programChangePollingInterval,\n newStreamPicker: true\n });\n});\n// EXTERNAL MODULE: ./app/lib/url-adapter/index.js + 4 modules\nvar url_adapter = __webpack_require__(334);\n\n// CONCATENATED MODULE: ./app/webapp/player/util/getPlayerBackgroundStyle.js\n\n\n\n\nfunction getPlayerBackgroundStyle(content) {\n if (!Object(isEmpty[\"a\" /* default */])(content)) {\n var bgUrl = Object(url_adapter[\"a\" /* getImageUrlWithParams */])(Object(url_adapter[\"b\" /* removeDimensions */])(content.imageHref), { cquality: 40 });\n var backgroundImage = 'url(' + bgUrl + ')';\n return { backgroundImage: backgroundImage, backgroundSize: 'cover' };\n }\n return {};\n}\n// CONCATENATED MODULE: ./app/webapp/player/util/index.js\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"a\", function() { return getAdobeDCRConfig; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"b\", function() { return getContentPlaylistFromBuckets; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"d\", function() { return getPlayerOptions; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"c\", function() { return getPlayerBackgroundStyle; });\n/* unused concated harmony import getPrerollSetting */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return getPrerollSetting; });\n\n\n\n\n\n\n\n\n/***/ }),\n/* 218 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_classnames__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__selectors_appSelector__ = __webpack_require__(3);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\nvar AdContainer = function (_Component) {\n _inherits(AdContainer, _Component);\n\n function AdContainer(props) {\n _classCallCheck(this, AdContainer);\n\n // state is maintained by AdManager\n var _this = _possibleConstructorReturn(this, (AdContainer.__proto__ || Object.getPrototypeOf(AdContainer)).call(this, props));\n\n _this.state = {\n refreshed: false\n };\n return _this;\n }\n\n _createClass(AdContainer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (!this.props.disabled && this.context.watchAdManager) {\n this.context.watchAdManager.addInstance(this);\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n if (this.props.ads.id === nextProps.ads.id) {\n return false;\n }\n return true;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (!this.props.disabled) {\n this.context.watchAdManager.removeInstance(this);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n collapseBeforeLoad = _props.collapseBeforeLoad,\n exclude = _props.exclude,\n id = _props.id,\n include = _props.include,\n inView = _props.inView,\n isOutOfPage = _props.isOutOfPage,\n kvps = _props.kvps,\n refreshWhenVisible = _props.refreshWhenVisible,\n slotType = _props.slotType,\n disabled = _props.disabled,\n render = _props.render;\n\n\n var slotKvps = [];\n var adProps = { id: id, key: id };\n\n /* no type no ad */\n if (disabled || slotType === null) {\n return null;\n }\n\n /* default if pos not specified */\n if (typeof kvps.pos === 'undefined') {\n kvps.pos = slotType;\n }\n\n /* build key value pair string */\n Object.keys(kvps).forEach(function (key) {\n if (key !== null && kvps.k !== null) {\n slotKvps.push(key + '=' + kvps[key]);\n }\n });\n\n /* build up the div properties */\n adProps.className = __WEBPACK_IMPORTED_MODULE_2_classnames___default()('react-ad', className, {\n 'ad-slot': !inView\n });\n\n adProps['data-slot-type'] = slotType;\n\n if (isOutOfPage) {\n adProps['data-out-of-page'] = 'true';\n }\n\n if (collapseBeforeLoad) {\n adProps['data-collapse-before-load'] = 'true';\n }\n\n if (include.length > 0) {\n var includeStr = include.join(',');\n adProps['data-include-bp'] = includeStr;\n }\n\n if (exclude.length > 0) {\n var excludeStr = exclude.join(',');\n adProps['data-exclude-bp'] = excludeStr;\n }\n\n if (slotKvps.length > 0) {\n var kvpsStr = slotKvps.join(',');\n adProps['data-slot-kvps'] = kvpsStr;\n }\n\n if (refreshWhenVisible === false) {\n adProps['data-refresh-on-pageload'] = 'true';\n }\n\n return render(__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement('div', _extends({ ref: 'adSlot' }, adProps)));\n }\n }]);\n\n return AdContainer;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\nAdContainer.defaultProps = {\n className: '',\n exclude: [],\n include: [],\n inView: false,\n kvps: {},\n refreshWhenVisible: false,\n slotType: null,\n disabled: false,\n render: function render(children) {\n return children;\n }\n};\n\nAdContainer.contextTypes = {\n watchAdManager: __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].object\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n ads: state.ads,\n disabled: Object(__WEBPACK_IMPORTED_MODULE_3__selectors_appSelector__[\"r\" /* isAdDisabled */])(state)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(AdContainer));\n\n/***/ }),\n/* 219 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar DEFAULT_ICON = 'espn-default';\n\nvar Logo = function Logo(_ref) {\n var className = _ref.className,\n _ref$iconHref = _ref.iconHref,\n iconHref = _ref$iconHref === undefined ? DEFAULT_ICON : _ref$iconHref;\n\n if (iconHref.indexOf('http://') === -1) {\n return _jsx('div', {\n className: className + ' icon-font-before icon-' + (iconHref || DEFAULT_ICON) + '-solid-before'\n });\n }\n return _jsx('div', {\n className: className\n }, void 0, _jsx('img', {\n src: iconHref,\n className: 'imageLoaded',\n alt: 'sport icon'\n }));\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Logo);\n\n/***/ }),\n/* 220 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isContentLocked;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_isEmpty__ = __webpack_require__(346);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_isEmpty___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_isEmpty__);\n\n\n\nfunction isContentLocked(_ref, userAuth) {\n var _ref$streams = _ref.streams,\n streams = _ref$streams === undefined ? [] : _ref$streams;\n var preauthorizedResources = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n if (__WEBPACK_IMPORTED_MODULE_1_lodash_isEmpty___default()(streams) || __WEBPACK_IMPORTED_MODULE_1_lodash_isEmpty___default()(userAuth) || __WEBPACK_IMPORTED_MODULE_1_lodash_isEmpty___default()(preauthorizedResources)) {\n return false;\n }\n\n var isLocked = userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].MVPD) > -1 && streams.some(function (_ref2) {\n var _ref2$authTypes = _ref2.authTypes,\n authTypes = _ref2$authTypes === undefined ? [] : _ref2$authTypes,\n _ref2$adobeRSS = _ref2.adobeRSS,\n adobeRSS = _ref2$adobeRSS === undefined ? '' : _ref2$adobeRSS,\n adobeResourceArg = _ref2.adobeResource;\n\n var adobeResource = adobeResourceArg;\n if (!adobeResource) {\n var result = /<title>([^<]+)<\\/title>/.exec(adobeRSS);\n if (result && result[1]) {\n adobeResource = result[1];\n }\n }\n return adobeResource && authTypes.indexOf(__WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].MVPD) > -1 && preauthorizedResources.indexOf(adobeResource) === -1;\n });\n\n return isLocked;\n}\n\n/***/ }),\n/* 221 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./app/constants.js\nvar constants = __webpack_require__(8);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/common/actions/appActions.js\nvar appActions = __webpack_require__(19);\n\n// EXTERNAL MODULE: ./app/common/actions/authenticationActions.js\nvar authenticationActions = __webpack_require__(22);\n\n// EXTERNAL MODULE: ./app/lib/auth/streamHasAuthType.js\nvar streamHasAuthType = __webpack_require__(45);\n\n// CONCATENATED MODULE: ./app/lib/auth/isStreamStatus.js\n/**\n * isStreamStatus - Returns a boolean flag determined by an exact string match between the\n * stream.status property and the statusType string parameter.\n *\n * @param {object} streamObject - Object containing the status string property\n * @param {string} statusType - Represents the statusType to match\n *\n * @return {boolean} Returns true if the stream.status property matches the statusType; false otherwise.\n */\nfunction isStreamStatus() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n status = _ref.status;\n\n var statusType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n return typeof status === 'string' && status.trim() !== '' && statusType !== '' && statusType === status;\n};\n// CONCATENATED MODULE: ./app/lib/auth/isUserAuthenticated.js\n\n\n/**\n * isUserAuthenticated - Verifies if the current userAuth array matches a given provider.\n * For `ESPN_PLUS`, we rely that the match is not `MVPD` and not `ISP`. If the result of .find returns\n * a non-empty array we assume a match is found.\n *\n * @param {array} userAuth - An array holding the current user authentication state; can have more than one\n * @param {string} provider - A string used to represent the authentication provider (MVPD, BAM or ISP)\n *\n * @return {boolean} Returns a boolean flag based on finding a match between the userAuth array and given provider\n */\nfunction isUserAuthenticated() {\n var userAuth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var provider = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (userAuth.length === 0 || typeof provider !== 'string' || provider.trim() === '') {\n return false;\n }\n\n var userIsAuthenticated = void 0;\n if (provider === enums[\"e\" /* AuthTypes */].BAM) {\n userIsAuthenticated = userAuth.filter(function (auth) {\n return auth.indexOf(enums[\"e\" /* AuthTypes */].MVPD) === -1 && auth.indexOf(enums[\"e\" /* AuthTypes */].ISP) === -1;\n });\n } else {\n userIsAuthenticated = userAuth.filter(function (auth) {\n return auth.indexOf(provider) !== -1;\n });\n }\n\n if (userIsAuthenticated.length) {\n return true;\n }\n\n return false;\n}\n// CONCATENATED MODULE: ./app/lib/auth/getFirstStreamUserAuth.js\n\n\n\n\nfunction getFirstStreamUserAuth(streams, userAuth) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = streams[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var stream = _step.value;\n\n var isTVEAuthenticated = isUserAuthenticated(userAuth, enums[\"e\" /* AuthTypes */].MVPD) || isUserAuthenticated(userAuth, enums[\"e\" /* AuthTypes */].ISP);\n var isBAMAuthenticated = isUserAuthenticated(userAuth, enums[\"e\" /* AuthTypes */].BAM);\n var isBAMStream = Object(streamHasAuthType[\"a\" /* default */])(stream, enums[\"e\" /* AuthTypes */].BAM);\n var isTVEStream = Object(streamHasAuthType[\"a\" /* default */])(stream, enums[\"e\" /* AuthTypes */].MVPD) || Object(streamHasAuthType[\"a\" /* default */])(stream, enums[\"e\" /* AuthTypes */].ISP);\n\n if (isTVEAuthenticated && isTVEStream || isBAMAuthenticated && isBAMStream) {\n return stream;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n}\n// CONCATENATED MODULE: ./app/lib/streamPicker/handleMultipleStreamAuthentication.js\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Multi stream authentication rules\n * 1. stream is upcoming, show DSS paywall\n * 2. show picker if showPicker is set to true\n * 3. select first stream for authentication\n */\nvar handleMultipleStreamAuthentication = function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(args) {\n var nextSelectedContent, dispatch, showPicker, _args$pickerStreams, pickerStreams, _args$authRes, authRes, locationBeforeTransitions, lang, country, _nextSelectedContent$, streams, firstStream, _authRes$userAuth, userAuth, selectedFirstStream;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n nextSelectedContent = args.nextSelectedContent, dispatch = args.dispatch, showPicker = args.showPicker, _args$pickerStreams = args.pickerStreams, pickerStreams = _args$pickerStreams === undefined ? [] : _args$pickerStreams, _args$authRes = args.authRes, authRes = _args$authRes === undefined ? {} : _args$authRes, locationBeforeTransitions = args.locationBeforeTransitions, lang = args.lang, country = args.country;\n _nextSelectedContent$ = nextSelectedContent.streams, streams = _nextSelectedContent$ === undefined ? [] : _nextSelectedContent$;\n firstStream = streams[0] || {};\n\n\n if (isStreamStatus(firstStream, 'upcoming')) {\n dispatch(Object(authenticationActions[\"M\" /* createDTCPaywallAction */])({\n containerId: constants[\"a\" /* BAM_PAYWALL_IFRAME_ID */],\n content: nextSelectedContent,\n stream: firstStream\n }));\n } else if (showPicker) {\n openStreamPicker({\n lang: lang,\n country: country,\n dispatch: dispatch,\n pickerStreams: pickerStreams,\n authRes: authRes,\n content: nextSelectedContent,\n route: { locationBeforeTransitions: locationBeforeTransitions }\n });\n } else {\n /**\n * if showPicker is not true and this is multi streams content, we will first\n * check if user is authenticated any of the streams, getFirstStreamUserAuth will\n * returns first stream user is authenticated. If user is not authenticated any of\n * streams, we will get the first stream (streams[0]) from streams\n */\n _authRes$userAuth = authRes.userAuth, userAuth = _authRes$userAuth === undefined ? [] : _authRes$userAuth;\n selectedFirstStream = getFirstStreamUserAuth(streams, userAuth) || firstStream;\n\n dispatch(Object(appActions[\"z\" /* contentSelect */])(selectedFirstStream));\n }\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function handleMultipleStreamAuthentication(_x) {\n return _ref.apply(this, arguments);\n };\n}();;\n// EXTERNAL MODULE: ./app/lib/util/localStorage.js\nvar localStorage = __webpack_require__(44);\n\n// CONCATENATED MODULE: ./app/lib/streamPicker/handleSingleStreamAuthentication.js\nfunction handleSingleStreamAuthentication__asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\nfunction fetchTVEAuthAction(dispatch, nextSelectedContent, stream) {\n dispatch(Object(authenticationActions[\"D\" /* createAndPerformStartAuthenticationAction */])({\n content: nextSelectedContent,\n stream: stream\n })).then(function (isAuthenticated) {\n if (!isAuthenticated) {\n return dispatch(Object(authenticationActions[\"N\" /* createDisplayProviderDialogAction */])());\n }\n });\n}\n/**\n * Single stream authentication rules\n * 1. if stream is upcoming or stream requires DTC, show DSS paywall\n * 2. if stream requires MVPD or ISP, 'tve is passed in query string, or\n MVPD_PREVIOUS_KEY is set in localStorage\n * 3. if 1 and 2 conditions are not met, show DSS paywall\n *\n * @param {args} object list of requiredAuths, nextSelectedContent, query and dispatch \n requiredAuths - Array containing all authTypes for the stream\n nextSelectedContent - Parent object containing the selected content with streams array\n query - React Router query object containing all possible query params\n dispatch - redux store dispatch\n */\nvar handleSingleStreamAuthentication = function () {\n var _ref = handleSingleStreamAuthentication__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(args) {\n var requiredAuths, nextSelectedContent, _args$query, query, dispatch, stream, chooseTVEAuth, userHasAuthedMVPD;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n requiredAuths = args.requiredAuths, nextSelectedContent = args.nextSelectedContent, _args$query = args.query, query = _args$query === undefined ? {} : _args$query, dispatch = args.dispatch, stream = args.stream;\n chooseTVEAuth = query.auth === 'tve';\n userHasAuthedMVPD = Object(localStorage[\"a\" /* get */])(constants[\"i\" /* MVPD_PREVIOUS_KEY */]);\n\n\n if (requiredAuths.every(function (authType) {\n return authType === enums[\"e\" /* AuthTypes */].BAM;\n }) || isStreamStatus(stream, 'upcoming')) {\n dispatch(Object(authenticationActions[\"M\" /* createDTCPaywallAction */])({\n containerId: constants[\"a\" /* BAM_PAYWALL_IFRAME_ID */],\n content: nextSelectedContent,\n stream: stream\n }));\n } else if (requiredAuths.every(function (authType) {\n return authType === enums[\"e\" /* AuthTypes */].MVPD || authType === enums[\"e\" /* AuthTypes */].ISP;\n }) || chooseTVEAuth || userHasAuthedMVPD) {\n fetchTVEAuthAction(dispatch, nextSelectedContent, stream);\n } else {\n dispatch(Object(authenticationActions[\"M\" /* createDTCPaywallAction */])({\n containerId: constants[\"a\" /* BAM_PAYWALL_IFRAME_ID */],\n content: nextSelectedContent,\n stream: stream\n }));\n }\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function handleSingleStreamAuthentication(_x) {\n return _ref.apply(this, arguments);\n };\n}();;\n// EXTERNAL MODULE: ./app/lib/auth/getContentId.js\nvar getContentId = __webpack_require__(60);\n\n// EXTERNAL MODULE: ./app/lib/format/queryString.js\nvar queryString = __webpack_require__(18);\n\n// CONCATENATED MODULE: ./app/lib/streamPicker/getPlayerUrl.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\nfunction getPlayerUrl(props) {\n var content = props.content,\n _props$toURL = props.toURL,\n toURL = _props$toURL === undefined ? false : _props$toURL,\n _props$onSyndicatedPl = props.onSyndicatedPlayerPage,\n onSyndicatedPlayerPage = _props$onSyndicatedPl === undefined ? false : _props$onSyndicatedPl,\n _props$absoluteUrl = props.absoluteUrl,\n absoluteUrl = _props$absoluteUrl === undefined ? false : _props$absoluteUrl,\n _props$airingId = props.airingId,\n airingId = _props$airingId === undefined ? null : _props$airingId,\n _props$useLocationPat = props.useLocationPathname,\n useLocationPathname = _props$useLocationPat === undefined ? false : _props$useLocationPat,\n _props$isHero = props.isHero,\n isHero = _props$isHero === undefined ? false : _props$isHero,\n bucketId = props.bucketId,\n groupId = props.groupId,\n flags = props.flags,\n routing = props.routing;\n\n\n if (content) {\n var _ref = routing && routing.locationBeforeTransitions || {},\n basename = _ref.basename,\n queryParams = _ref.query,\n pathname = _ref.pathname;\n\n var _ref2 = queryParams || {},\n categoryId = _ref2.categoryId,\n id = _ref2.id;\n\n var contentId = void 0;\n if (isHero && id) {\n contentId = { id: id };\n } else if (airingId) {\n contentId = { id: airingId };\n } else {\n contentId = Object(getContentId[\"a\" /* default */])(content);\n }\n\n var query = _extends({\n bucketId: bucketId,\n groupId: groupId\n }, contentId, flags);\n\n var routePath = onSyndicatedPlayerPage ? '/syndicated/player' : '/player';\n if (useLocationPathname) {\n routePath = pathname;\n }\n\n if (categoryId) {\n query.categoryId = categoryId;\n }\n\n if (toURL) {\n\n if (absoluteUrl) {\n var domain = window && window.location && window.location.hostname;\n if (domain) {\n var port = window.location.port || '';\n if (port !== '') {\n port = ':' + port;\n }\n return 'http://' + domain + port + basename + routePath + Object(queryString[\"a\" /* default */])(query);\n }\n }\n return '' + basename + routePath + Object(queryString[\"a\" /* default */])(query);\n }\n\n return {\n pathname: routePath,\n query: query\n };\n }\n\n return null;\n};\n// EXTERNAL MODULE: ./app/lib/util/hasObj.js\nvar hasObj = __webpack_require__(333);\n\n// EXTERNAL MODULE: ./app/common/selectors/pickerStreamsSelector.js\nvar pickerStreamsSelector = __webpack_require__(149);\n\n// EXTERNAL MODULE: ./app/common/selectors/selectedContentSelector.js\nvar selectedContentSelector = __webpack_require__(46);\n\n// EXTERNAL MODULE: ./app/common/actions/apiAction.js\nvar apiAction = __webpack_require__(55);\n\n// EXTERNAL MODULE: ./app/lib/auth/canPlayStream.js\nvar canPlayStream = __webpack_require__(118);\n\n// EXTERNAL MODULE: ./app/lib/auth/authStateKnown.js\nvar authStateKnown = __webpack_require__(77);\n\n// CONCATENATED MODULE: ./app/lib/streamPicker/openStreamPicker.js\nvar openStreamPicker__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction openStreamPicker__asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar MAX_RETRIES = 5;\nvar RETRY_WAIT_TIME = 1000;\n\nfunction getPickerStreams(content, pickerStreams) {\n var _this = this;\n\n return function () {\n var _ref = openStreamPicker__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch, getState) {\n var state, nextSelectedContent, selectPickerStreams, _nextSelectedContent$, links, eventId, pickerStreamsEventId, pickerApiUrl, nextStreams;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n state = getState();\n nextSelectedContent = Object(selectedContentSelector[\"a\" /* default */])(state);\n selectPickerStreams = pickerStreams;\n // new content is selected\n\n if (nextSelectedContent.id !== content.id) {\n selectPickerStreams = Object(pickerStreamsSelector[\"a\" /* default */])(state);\n }\n _nextSelectedContent$ = nextSelectedContent.links, links = _nextSelectedContent$ === undefined ? {} : _nextSelectedContent$, eventId = nextSelectedContent.eventId;\n pickerStreamsEventId = state.app.pickerStreamsEventId;\n\n // if id is equal to pickerStreamsEventId, than means we had pickerStreams\n\n if (!(selectPickerStreams && selectPickerStreams.length && pickerStreamsEventId === eventId)) {\n _context.next = 8;\n break;\n }\n\n return _context.abrupt('return', {\n nextSelectedContent: nextSelectedContent,\n nextPickerStreams: selectPickerStreams\n });\n\n case 8:\n // otherwise; let's trigger a new picker pageApi call and fetch pickerStreams data \n pickerApiUrl = links.picker;\n\n if (!pickerApiUrl) {\n _context.next = 15;\n break;\n }\n\n dispatch(Object(appActions[\"K\" /* pickerStreamsUnSelect */])());\n _context.next = 13;\n return dispatch(Object(apiAction[\"c\" /* fetchPickerStreams */])(pickerApiUrl, eventId));\n\n case 13:\n nextStreams = Object(pickerStreamsSelector[\"a\" /* default */])(getState());\n return _context.abrupt('return', {\n nextSelectedContent: nextSelectedContent,\n nextPickerStreams: nextStreams\n });\n\n case 15:\n return _context.abrupt('return', {});\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n}\nvar handleSelectedStream = function () {\n var _ref2 = openStreamPicker__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(props) {\n var content, route, urlParams, pickerStreams, airingId, dispatch, _props$authRes$userAu, userAuth, router, rState, _route$locationBefore, locationBeforeTransitions, basename, _locationBeforeTransi, pathname, _locationBeforeTransi2, query, useqa, id, _spHost, eventCalendarId, resQs, qs, _ref3, nextPickerStreams, nextSelectedContent, streamFromPicker, placement, status, onHero, stream, canPlay, useLocationPathname, playerUrl;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n content = props.content, route = props.route, urlParams = props.urlParams, pickerStreams = props.pickerStreams, airingId = props.airingId, dispatch = props.dispatch, _props$authRes$userAu = props.authRes.userAuth, userAuth = _props$authRes$userAu === undefined ? [] : _props$authRes$userAu;\n router = route.router, rState = route.rState, _route$locationBefore = route.locationBeforeTransitions, locationBeforeTransitions = _route$locationBefore === undefined ? {} : _route$locationBefore;\n basename = locationBeforeTransitions.basename, _locationBeforeTransi = locationBeforeTransitions.pathname, pathname = _locationBeforeTransi === undefined ? '' : _locationBeforeTransi, _locationBeforeTransi2 = locationBeforeTransitions.query, query = _locationBeforeTransi2 === undefined ? {} : _locationBeforeTransi2;\n useqa = query.useqa, id = query.id, _spHost = query._spHost, eventCalendarId = query.eventCalendarId, resQs = _objectWithoutProperties(query, ['useqa', 'id', '_spHost', 'eventCalendarId']);\n qs = {};\n\n if (useqa) {\n /**\n * if useqa is passed in the query, we want to keep the rest of query string\n * except _spHost for testing purpose in QA\n */\n qs = openStreamPicker__extends({ useqa: useqa }, resQs);\n }\n _context2.next = 8;\n return dispatch(getPickerStreams(content, pickerStreams));\n\n case 8:\n _ref3 = _context2.sent;\n nextPickerStreams = _ref3.nextPickerStreams;\n nextSelectedContent = _ref3.nextSelectedContent;\n streamFromPicker = filterPickerStreamsById(nextPickerStreams, airingId);\n placement = content.placement, status = content.status;\n onHero = placement === 'inline-hero';\n\n if (streamFromPicker && Array.isArray(streamFromPicker.streams)) {\n // Avoids the `reselected` return logic when clicking the same stream\n stream = streamFromPicker.streams[0];\n canPlay = Object(canPlayStream[\"a\" /* default */])(stream, userAuth, false);\n\n if (!canPlay && (onHero || eventCalendarId && nextSelectedContent.id === eventCalendarId)) {\n /**\n * ticket: https://jira.disney.com/browse/WEWEB-2684\n * When multicast eventCalendarId is passed in the url, user is logged to MVPD,\n * BC player is embed and user is not logged to E+ and select E+ content, or if user is\n * logged to E+, DSS player is embed and user is not logged to MVPD and select TVE content,\n * we need to trigger url update with selected stream id from the picker.\n * Auth flow will be triggered in handleSingleStreamAuthentication (selectStreamForAuthUsers.js)\n */\n qs.id = stream.id;\n window.location.href = '' + basename + pathname + Object(queryString[\"a\" /* default */])(qs);\n } else {\n dispatch(Object(appActions[\"P\" /* streamUnSelect */])());\n stream.feedSwitch = true;\n dispatch(Object(appActions[\"y\" /* closeModalMessage */])());\n dispatch(Object(appActions[\"O\" /* streamSelect */])(stream));\n\n /**\n * urlParams is passed when user clicks on tiles from\n * clickHandler event, file app/webapp/common/playable.js.\n * Before this update, for all multi streams, user didn't give an option to\n * select the streams after they logged it, so we will enforce to open the picker\n * even if user is logged it.\n */\n if (urlParams) {\n useLocationPathname = (onHero || (id || eventCalendarId) && !urlParams) && status !== enums[\"n\" /* ContentStatus */].UPCOMING;\n\n urlParams.content = nextSelectedContent;\n playerUrl = getPlayerUrl(openStreamPicker__extends({ useLocationPathname: useLocationPathname }, urlParams));\n // if playerUrl is set, re-route the page to the playerUrl\n\n if (playerUrl.query) {\n playerUrl.query = openStreamPicker__extends({}, qs, playerUrl.query, {\n airingId: airingId\n });\n }\n router.push(openStreamPicker__extends({}, playerUrl, {\n state: openStreamPicker__extends({ pickerStreams: nextPickerStreams }, rState)\n }));\n }\n }\n } else {\n handleStreamPickerOnError(props);\n }\n\n case 15:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function handleSelectedStream(_x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\nfunction onRowClickCallback(props) {\n // close the picker as soon as use clicks on the row.\n espn_ui.Helpers.streamPicker.closePicker();\n handleSelectedStream(props);\n\n window.jQuery.unsubscribe && window.jQuery.unsubscribe(window.espn_ui.Helpers.streamPicker.evts.ON_ROW_CLICK);\n}\n\nfunction isPickerReady() {\n var hasSubscribe = Object(hasObj[\"a\" /* default */])(window, 'jQuery.subscribe');\n var hasRowClick = Object(hasObj[\"a\" /* default */])(window, 'espn_ui.Helpers.streamPicker.evts.ON_ROW_CLICK');\n var hasOpenPicker = Object(hasObj[\"a\" /* default */])(window, 'espn_ui.Helpers.streamPicker.openPicker');\n return hasSubscribe && hasRowClick && hasOpenPicker;\n}\n\nfunction handleStreamPickerOnError(props) {\n var content = props.content,\n dispatch = props.dispatch,\n urlParams = props.urlParams,\n route = props.route,\n _props$authRes$userAu2 = props.authRes.userAuth,\n userAuth = _props$authRes$userAu2 === undefined ? [] : _props$authRes$userAu2;\n var _content$streams = content.streams,\n streams = _content$streams === undefined ? [] : _content$streams;\n\n var selectedStream = getFirstStreamUserAuth(streams, userAuth) || streams[0];\n if (selectedStream) {\n dispatch(Object(appActions[\"P\" /* streamUnSelect */])());\n selectedStream.feedSwitch = true;\n dispatch(Object(appActions[\"y\" /* closeModalMessage */])());\n dispatch(Object(appActions[\"O\" /* streamSelect */])(selectedStream));\n\n if (urlParams) {\n var router = route.router,\n rState = route.rState;\n\n var playerUrl = getPlayerUrl(openStreamPicker__extends({}, urlParams));\n router.push(openStreamPicker__extends({}, playerUrl, {\n state: openStreamPicker__extends({}, rState)\n }));\n }\n }\n}\n\n// check .com stream picker script functions are available in the dom\nvar waitUntilPickerScriptReady = function () {\n var _ref4 = openStreamPicker__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(isPickerReady, maxReTries, waitTime) {\n var retry;\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n retry = 0;\n _context3.next = 3;\n return new Promise(function (resolve) {\n var reTryOpenPicker = setInterval(function () {\n if (retry < maxReTries) {\n var isReady = isPickerReady();\n if (isReady) {\n resolve(true);\n clearInterval(reTryOpenPicker);\n }\n } else {\n clearInterval(reTryOpenPicker);\n resolve(false);\n }\n retry += 1;\n }, waitTime);\n });\n\n case 3:\n return _context3.abrupt('return', _context3.sent);\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function waitUntilPickerScriptReady(_x4, _x5, _x6) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * @description:\n * Open .com stream picker which is an iframe that uses jQuery pub/sub.\n * We need to check if .com jQuery events are available before calling it.\n * We check every 500ms up to 4 times, total of 3 seconds. If .com jQuery events\n * are available, we call window.espn_ui.Helpers.streamPicker.openPicker and\n * dispatch openPickerSuccess; otherwise, dispatch openPickerError\n * \n * @param {object} content // content.id will be needed for the triggering stream picker\n * @param {object} route // empty object or route state object of { router, playerUrl, rState }\n * @param {object} dispatch // store dispatch\n * @param {object} authRes // empty object or includes userAuth and preauthorizedResources props\n */\nvar openStreamPicker = function () {\n var _ref5 = openStreamPicker__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(props) {\n var content, _props$route, route, dispatch, _props$country, country, _props$lang, lang, _props$pickerStreams, pickerStreams, _props$authRes, _props$authRes$userAu3, userAuth, _props$authRes$preaut, preauthorizedResources, retry, _route$locationBefore2, _route$locationBefore3, pathname, eventCalendarId, darkmode, _content$links, links, eventId, _ref6, nextPickerStreams, pickerScriptReady;\n\n return regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n content = props.content, _props$route = props.route, route = _props$route === undefined ? {} : _props$route, dispatch = props.dispatch, _props$country = props.country, country = _props$country === undefined ? '' : _props$country, _props$lang = props.lang, lang = _props$lang === undefined ? '' : _props$lang, _props$pickerStreams = props.pickerStreams, pickerStreams = _props$pickerStreams === undefined ? [] : _props$pickerStreams, _props$authRes = props.authRes, _props$authRes$userAu3 = _props$authRes.userAuth, userAuth = _props$authRes$userAu3 === undefined ? [] : _props$authRes$userAu3, _props$authRes$preaut = _props$authRes.preauthorizedResources, preauthorizedResources = _props$authRes$preaut === undefined ? [] : _props$authRes$preaut;\n retry = 0;\n\n dispatch(Object(appActions[\"H\" /* pickerStateClear */])()); // clear previous picker state \n\n _route$locationBefore2 = route.locationBeforeTransitions, _route$locationBefore3 = _route$locationBefore2.pathname, pathname = _route$locationBefore3 === undefined ? '' : _route$locationBefore3, eventCalendarId = _route$locationBefore2.query.eventCalendarId;\n darkmode = pathname.indexOf('/player') !== -1;\n\n /**\n * we need to fetch pickerStreams data for in-player stream picker, \n * in case when user closes stream picker without picking a stream on pageload\n */\n\n if (!(eventCalendarId && pickerStreams && !pickerStreams.length)) {\n _context4.next = 13;\n break;\n }\n\n _content$links = content.links, links = _content$links === undefined ? {} : _content$links, eventId = content.eventId;\n // use == not === to compare value only between eventCalendarId and eventId\n\n if (!(eventCalendarId == eventId && links.picker)) {\n _context4.next = 13;\n break;\n }\n\n _context4.next = 10;\n return dispatch(getPickerStreams(content, pickerStreams));\n\n case 10:\n _ref6 = _context4.sent;\n nextPickerStreams = _ref6.nextPickerStreams;\n\n props.pickerStreams = nextPickerStreams;\n\n case 13:\n pickerScriptReady = void 0;\n _context4.next = 16;\n return waitUntilPickerScriptReady(isPickerReady, MAX_RETRIES, RETRY_WAIT_TIME).then(function (res) {\n return pickerScriptReady = res;\n });\n\n case 16:\n\n if (pickerScriptReady) {\n try {\n if (content && content.id) {\n\n window.espn_ui.Helpers.streamPicker.openPicker({\n eventId: content.id,\n triggerEvtOnNav: true,\n entitlements: userAuth,\n tvePreauthResources: preauthorizedResources,\n countryCode: country,\n lang: lang,\n darkmode: darkmode\n }).then(function () {\n window.jQuery.subscribe(window.espn_ui.Helpers.streamPicker.evts.ON_ROW_CLICK, function (res) {\n return onRowClickCallback(openStreamPicker__extends({ airingId: res.airing.id }, props));\n });\n dispatch(Object(appActions[\"G\" /* openPickerSuccess */])({ id: content.id, retryTime: retry }));\n }).catch(function () {\n dispatch(Object(appActions[\"F\" /* openPickerError */])('Open picker error: openPicker failed, retryTime ' + retry));\n window.espn_ui.Helpers.streamPicker.closePicker();\n handleStreamPickerOnError(props);\n });\n }\n } catch (err) {\n dispatch(Object(appActions[\"F\" /* openPickerError */])('Open picker error: ' + err.message));\n }\n } else {\n handleStreamPickerOnError(props);\n }\n\n case 17:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function openStreamPicker(_x7) {\n return _ref5.apply(this, arguments);\n };\n}();\n// EXTERNAL MODULE: ./app/lib/util/isEmpty.js\nvar isEmpty = __webpack_require__(12);\n\n// CONCATENATED MODULE: ./app/lib/streamPicker/selectStreamForAuthUsers.js\nvar selectStreamForAuthUsers__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction selectStreamForAuthUsers__asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\n\n\nvar selectStreamForAuthUsers = function () {\n var _ref = selectStreamForAuthUsers__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(payload) {\n var dispatch, authRes, _payload$pickerStream, pickerStreams, content, _payload$feeds, feeds, _payload$locationBefo, locationBeforeTransitions, _content$streams, streams, _content$placement, placement, isEvent, playerSideBarContent, query, _locationBeforeTransi, id, airingId, _authRes$userAuth, userAuth, contentId, nextPickerStreams, filteredStreams, lastFeeds, lastSelectedStream;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n dispatch = payload.dispatch, authRes = payload.authRes, _payload$pickerStream = payload.pickerStreams, pickerStreams = _payload$pickerStream === undefined ? [] : _payload$pickerStream, content = payload.content, _payload$feeds = payload.feeds, feeds = _payload$feeds === undefined ? {} : _payload$feeds, _payload$locationBefo = payload.locationBeforeTransitions, locationBeforeTransitions = _payload$locationBefo === undefined ? {} : _payload$locationBefo;\n _content$streams = content.streams, streams = _content$streams === undefined ? [] : _content$streams, _content$placement = content.placement, placement = _content$placement === undefined ? '' : _content$placement, isEvent = content.isEvent;\n playerSideBarContent = placement.indexOf('playback-page-recommended') !== -1;\n query = locationBeforeTransitions.query, _locationBeforeTransi = locationBeforeTransitions.query;\n _locationBeforeTransi = _locationBeforeTransi === undefined ? {} : _locationBeforeTransi;\n id = _locationBeforeTransi.id, airingId = _locationBeforeTransi.airingId;\n _authRes$userAuth = authRes.userAuth, userAuth = _authRes$userAuth === undefined ? [] : _authRes$userAuth;\n contentId = airingId || id;\n nextPickerStreams = pickerStreams;\n // playerSideBarContent will be true when user clicks on sidebar content on player page\n\n if (!playerSideBarContent) {\n _context.next = 16;\n break;\n }\n\n contentId = Object(getContentId[\"a\" /* default */])(content);\n dispatch(Object(appActions[\"K\" /* pickerStreamsUnSelect */])());\n\n if (!isEvent) {\n _context.next = 16;\n break;\n }\n\n _context.next = 15;\n return dispatch(getPickerStreams(content, pickerStreams));\n\n case 15:\n nextPickerStreams = _context.sent;\n\n case 16:\n filteredStreams = filterPickerStreamsById(nextPickerStreams, contentId);\n\n if (filteredStreams && Array.isArray(filteredStreams.streams)) {\n filteredStreams = filteredStreams.streams[0];\n }\n // if airing content is not found in pickerStreams, get it from content.streams\n if (!filteredStreams) {\n filteredStreams = streams.filter(function (stream) {\n return stream.id === contentId;\n })[0];\n }\n\n if (!filteredStreams && !Object(isEmpty[\"a\" /* default */])(feeds)) {\n lastFeeds = Object.keys(feeds).map(function (key) {\n return feeds[key];\n });\n lastSelectedStream = streams.filter(function (_ref2) {\n var id = _ref2.id;\n return lastFeeds.indexOf(contentId) > -1;\n })[0];\n\n if (lastSelectedStream) {\n filteredStreams = lastSelectedStream;\n }\n }\n\n // last fallback\n if (!filteredStreams) {\n filteredStreams = getFirstStreamUserAuth(streams, userAuth) || streams[0];\n }\n\n // add missing content props that we need to pass to DSS \n if (filteredStreams && !filteredStreams.content) {\n filteredStreams = selectStreamForAuthUsers__extends({}, filteredStreams, { content: content });\n }\n\n if (Object(canPlayStream[\"a\" /* default */])(filteredStreams, userAuth, false) && filteredStreams.status !== 'upcoming') {\n dispatch(Object(appActions[\"O\" /* streamSelect */])(filteredStreams));\n } else {\n handleSingleStreamAuthentication({\n query: query,\n dispatch: dispatch,\n stream: filteredStreams,\n requiredAuths: filteredStreams.authTypes,\n nextSelectedContent: content\n });\n }\n\n case 23:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function selectStreamForAuthUsers(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n// CONCATENATED MODULE: ./app/lib/streamPicker/filterPickerStreamsById.js\nvar filterPickerStreamsById = function filterPickerStreamsById(pickerStreams, id) {\n if (pickerStreams && pickerStreams.length) {\n var contents = pickerStreams.map(function (streams) {\n return streams.contents;\n });\n var streams = contents.filter(function (content) {\n return content.filter(function (stream) {\n return stream.id === id;\n }).length > 0;\n })[0];\n if (streams && streams.length) {\n return streams.filter(function (stream) {\n return stream.id === id;\n })[0];\n }\n }\n return null;\n};\n// CONCATENATED MODULE: ./app/lib/streamPicker/index.js\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"c\", function() { return handleMultipleStreamAuthentication; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"d\", function() { return handleSingleStreamAuthentication; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"b\", function() { return getPlayerUrl; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"e\", function() { return openStreamPicker; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"f\", function() { return selectStreamForAuthUsers; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"a\", function() { return filterPickerStreamsById; });\n\n\n\n\n\n\n\n/***/ }),\n/* 222 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_url_adapter__ = __webpack_require__(334);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\nvar COMPRESSION_RATE = 40;\n\n/**\n * Generates a single srcSet entry\n * @param {string} url\n * @param {number} width\n */\nfunction getSrcSetEntry(url, width) {\n return url + ' ' + width + 'w';\n}\n\n/**\n * Take an image url and returns full srcSet value\n * @param {string} url - Either an artwork or CDN url\n * @return {array} - array of size numbers\n */\nfunction getSrcSet(url, cquality) {\n var sizes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n return sizes.map(function (width) {\n var sizedUrl = Object(__WEBPACK_IMPORTED_MODULE_2__lib_url_adapter__[\"a\" /* getImageUrlWithParams */])(url, { cquality: cquality, width: width });\n return getSrcSetEntry(sizedUrl, width);\n }).reduce(function (acc, srcSetEntry) {\n return srcSetEntry + ', ' + acc;\n });\n}\n\nvar ResponsiveThumbnail = function ResponsiveThumbnail(_ref) {\n var alt = _ref.alt,\n className = _ref.className,\n style = _ref.style,\n lazyload = _ref.lazyload,\n srcSetWidths = _ref.srcSetWidths,\n srcProp = _ref.src,\n sizes = _ref.sizes,\n cquality = _ref.cquality;\n\n if (!srcProp) {\n return null;\n }\n // compress combiner urls\n var src = Object(__WEBPACK_IMPORTED_MODULE_2__lib_url_adapter__[\"a\" /* getImageUrlWithParams */])(srcProp, { cquality: cquality });\n var srcSet = srcSetWidths.length > 0 ? getSrcSet(srcProp, cquality, srcSetWidths) : null;\n\n var imgProps = {\n src: src,\n srcSet: srcSet,\n className: className,\n style: style\n };\n\n if (lazyload) {\n imgProps = {\n src: __WEBPACK_IMPORTED_MODULE_1__constants__[\"x\" /* secureLoadingImageUrl */],\n 'data-src': src,\n 'data-srcset': srcSet,\n className: className + ' lazyload'\n };\n }\n\n return _jsx('picture', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement('img', _extends({}, imgProps, { sizes: sizes, alt: alt })));\n};\n\nResponsiveThumbnail.defaultProps = {\n src: '',\n srcSetWidths: [],\n sizes: '25vw',\n className: 'media-wrapper_image',\n lazyload: false,\n cquality: COMPRESSION_RATE\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (ResponsiveThumbnail);\n\n/***/ }),\n/* 223 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_hoist_non_react_statics__ = __webpack_require__(105);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_hoist_non_react_statics___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_hoist_non_react_statics__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_selectn__ = __webpack_require__(113);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_selectn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_selectn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_lodash_uniqBy__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_lodash_uniqBy___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_lodash_uniqBy__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_cookie_cutter__ = __webpack_require__(93);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_cookie_cutter___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_cookie_cutter__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__common_video_player__ = __webpack_require__(116);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__FeedsSelector__ = __webpack_require__(734);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__common_PropTypes__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__common_actions_authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__common_actions_oneIdActions__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__common_selectors_bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__common_selectors_analyticsSelectors__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__common_selectors_playerSelector__ = __webpack_require__(153);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__common_selectors_initialEmbedSelector__ = __webpack_require__(736);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__common_selectors_onDeckContentSelector__ = __webpack_require__(737);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__common_selectors_pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__common_selectors_selectedContentSelector__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__common_selectors_selectedStreamSelector__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__common_selectors_playingStreamSelector__ = __webpack_require__(148);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__common_selectors_pickerStreamsSelector__ = __webpack_require__(149);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__common_selectors_providerSelector__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__common_selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__common_selectors_oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__common_selectors_flagsSelector__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__lib_auth_authStateKnown__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__lib_auth_streamHasDTCPackage__ = __webpack_require__(143);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__lib_auth_shallowCheckAuthentication__ = __webpack_require__(146);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__lib_auth_canPlayContent__ = __webpack_require__(117);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__lib_auth_PreAuthZ__ = __webpack_require__(321);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__lib_api_newRelicApi__ = __webpack_require__(352);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__lib_util_getBamAuthConfig__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__lib_format_addQueryToUrl__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__lib_omniture__ = __webpack_require__(34);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__common_injectIntl__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__util__ = __webpack_require__(217);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__actions__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__globalVideoElement__ = __webpack_require__(347);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__lib_util_localStorage__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__lib_streamPicker__ = __webpack_require__(221);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__lib_native_bridge_espnapp__ = __webpack_require__(353);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__common_selectors_apiParamsSelector__ = __webpack_require__(115);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new __WEBPACK_IMPORTED_MODULE_2_bluebird___default.a(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return __WEBPACK_IMPORTED_MODULE_2_bluebird___default.a.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar METADATA = __WEBPACK_IMPORTED_MODULE_11__enums__[\"a\" /* AdobePass */].METADATA;\n\n// Begin Higher Order Component definition\n\nfunction connectPlayer(WrappedComponent) {\n var ESPNPlayer = function (_Component) {\n _inherits(ESPNPlayer, _Component);\n\n function ESPNPlayer(props) {\n _classCallCheck(this, ESPNPlayer);\n\n var _this = _possibleConstructorReturn(this, (ESPNPlayer.__proto__ || Object.getPrototypeOf(ESPNPlayer)).call(this, props));\n\n _this.state = {\n autoEmbedCountDown: _this.props.initialAutoEmbedCountDown,\n deferPlayerInitialization: false, // if we have nothing to play yet\n deferInitialStreamSelect: false,\n initialized: false,\n initializedWithAuthZError: false,\n socialOpened: false,\n showFeedsSelector: false,\n feedsSelectorMessage: ''\n };\n _this.onToggleAutoPlay = _this.onToggleAutoPlay.bind(_this);\n _this.onContentLoaded = _this.onContentLoaded.bind(_this);\n _this.onSocialOpened = _this.onSocialOpened.bind(_this);\n _this.onSocialClosed = _this.onSocialClosed.bind(_this);\n _this.onProgramChange = _this.onProgramChange.bind(_this);\n _this.onPlaybackError = _this.onPlaybackError.bind(_this);\n _this.onDrmError = _this.onDrmError.bind(_this);\n _this.onBAMAuthrizeUser = _this.onBAMAuthrizeUser.bind(_this);\n _this.onBAMFeedChange = _this.onBAMFeedChange.bind(_this);\n _this.onBAMSettingsChanged = _this.onBAMSettingsChanged.bind(_this);\n _this.onBAMMediaLoaded = _this.onBAMMediaLoaded.bind(_this);\n _this.onBAMPlaybackError = _this.onBAMPlaybackError.bind(_this);\n _this.onFeedClick = _this.onFeedClick.bind(_this);\n _this.hasUserFeedSwitchedStream = _this.hasUserFeedSwitchedStream.bind(_this);\n _this.playerReady = _this.playerReady.bind(_this);\n _this.initializePlayer = _this.initializePlayer.bind(_this);\n _this.handleClick = _this.handleClick.bind(_this);\n _this.unregisterEvents = _this.unregisterEvents.bind(_this);\n _this.registerEvents = _this.registerEvents.bind(_this);\n _this.startAutoEmbedTimer = _this.startAutoEmbedTimer.bind(_this);\n _this.unembedPlayer = _this.unembedPlayer.bind(_this);\n _this.embedPlayer = _this.embedPlayer.bind(_this);\n _this.throwError = _this.throwError.bind(_this);\n _this.newRelicTrackingOnPlayer = _this.newRelicTrackingOnPlayer.bind(_this);\n _this.onFeedCloseModal = _this.onFeedCloseModal.bind(_this);\n // reference to the BrightCove player\n _this.player = null;\n // is the component mounted?\n _this._isMounted = false;\n // unmounting if we detect a route chage\n _this._isUnMounting = false;\n // hold a reference to the timer to clear later\n _this._autoEmbedTimer = null;\n _this._isAuthorizing = false;\n return _this;\n }\n\n _createClass(ESPNPlayer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._isMounted = true;\n this.startAutoEmbedTimer();\n /**\n Initialize the player on mount if:\n 1 - It's the player page\n 2 - The player has already been primed\n 3 - It's not a mobile device\n */\n if (this.props.playerPlacement === __WEBPACK_IMPORTED_MODULE_11__enums__[\"B\" /* PlayerPlacement */].PLAYER || __WEBPACK_IMPORTED_MODULE_44__globalVideoElement__[\"a\" /* default */].primed || !this.props.isMobile) {\n this.initializePlayer();\n }\n\n // comment out newrelic tracking until tracking is required for new stream picker\n // const { isNewrelicTrackingOn, selectedStream } = this.props;\n // if (isNewrelicTrackingOn && selectedStream.length) {\n // // send newrelic track for selected stream that is presented to the users\n // this.newRelicTrackingOnPlayer(selectedStream);\n // }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n if (this._isMounted === false || this._isUnMounting === true) {\n return;\n }\n\n var _props = this.props,\n lang = _props.lang,\n country = _props.country,\n dispatch = _props.dispatch,\n selectedContent = _props.selectedContent,\n selectedStream = _props.selectedStream,\n playingStream = _props.playingStream,\n userAuth = _props.userAuth,\n onDeckContent = _props.onDeckContent,\n locationBeforeTransitions = _props.routing.locationBeforeTransitions;\n var nextSelectedContent = nextProps.selectedContent,\n nextPlayingStream = nextProps.playingStream,\n nextUserAuth = nextProps.userAuth,\n nextOnDeckContent = nextProps.onDeckContent,\n nextPickerStreams = nextProps.pickerStreams,\n nextRecommendMobileWeb = nextProps.recommendMobileWeb,\n nextLocationBeforeTransitions = nextProps.routing.locationBeforeTransitions,\n nextLastFeeds = nextProps.lastFeeds,\n nextPreauthorizedResources = nextProps.preauthorizedResources;\n\n // if the user is no longer authd for the playing content, unembed the player\n\n if (Object(__WEBPACK_IMPORTED_MODULE_33__lib_auth_shallowCheckAuthentication__[\"b\" /* default */])(playingStream, userAuth, false) && !Object(__WEBPACK_IMPORTED_MODULE_33__lib_auth_shallowCheckAuthentication__[\"b\" /* default */])(nextPlayingStream, nextUserAuth, false)) {\n this.unembedPlayer();\n return;\n }\n\n if (this.state.feedsSelectorMessage && selectedContent.id === nextSelectedContent.id) {\n return;\n }\n\n // player initialization is deferred if there's no selected content, and page api has not yet returned\n if (this.state.deferPlayerInitialization && nextProps.scoringComplete && !Object(__WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__[\"a\" /* default */])(nextProps.initialEmbedContent)) {\n this.setState({ deferPlayerInitialization: false });\n this.initializePlayer(nextProps);\n }\n\n /*\n * The following logic handles:\n * 1) Verifying a valid authentication state (i.e. 'mvpd')\n * 2) Checking if the call to playerReady() updated the state to deferInitialStreamSelect as a truthy value.\n * Occurs when the page has not fully loaded and will be caught in componentDidMount()\n * 3) If deferInitialStreamSelect is `false`, the logic verifies that the `selectedContent`\n * and `selectedStream` are both empty or both non-empty or the boolean initializedWithAuthZError\n * is `true` and the `selectedStream` is empty then it will proceed to select the preferred stream\n * 4) If content is 'vod', user can play\n */\n var isVod = nextSelectedContent.type === 'vod';\n if ((Object(__WEBPACK_IMPORTED_MODULE_30__lib_auth_authStateKnown__[\"a\" /* default */])(nextUserAuth) || isVod || !nextUserAuth.length) && (this.state.deferInitialStreamSelect || (Object(__WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__[\"a\" /* default */])(selectedContent) && Object(__WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__[\"a\" /* default */])(selectedStream) || !Object(__WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__[\"a\" /* default */])(selectedContent) && !Object(__WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__[\"a\" /* default */])(selectedStream) || Object(__WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__[\"a\" /* default */])(selectedStream) && (this.state.initializedWithAuthZError || isVod || !nextUserAuth.length)) && selectedContent.id !== nextSelectedContent.id // this is for the subsequent content change\n )) {\n if (this.state.deferInitialStreamSelect) {\n this.setState({ deferInitialStreamSelect: false });\n }\n\n /* Verifies that a user can play the selected content by:\n * 1) Ensuring the `selectedContent` status is not `upcoming`\n * 2) Ensuring that there is no program change in progress via `onProgramChange`\n */\n if (Object(__WEBPACK_IMPORTED_MODULE_34__lib_auth_canPlayContent__[\"a\" /* default */])(nextSelectedContent, nextUserAuth, false) && !this.state.programChanging) {\n var _nextSelectedContent$ = nextSelectedContent.links;\n _nextSelectedContent$ = _nextSelectedContent$ === undefined ? {} : _nextSelectedContent$;\n var picker = _nextSelectedContent$.picker,\n isOnTile = nextSelectedContent.isOnTile;\n var _nextLocationBeforeTr = nextLocationBeforeTransitions.query;\n _nextLocationBeforeTr = _nextLocationBeforeTr === undefined ? {} : _nextLocationBeforeTr;\n var eventCalendarId = _nextLocationBeforeTr.eventCalendarId,\n pathname = nextLocationBeforeTransitions.pathname;\n\n var authRes = { userAuth: nextUserAuth, preauthorizedResources: nextPreauthorizedResources };\n\n if (isOnTile && playingStream && pathname.indexOf('/player') === -1) {\n /**\n * when user is logged in and clicks on the tiles, we dispatch contentSelect in playable.js so\n * that the new selected content will be updated and passed to stream picker; If it is on hero\n * component and content is playing, we don't want to trigger new stream select.\n */\n return;\n }\n\n if (eventCalendarId && picker) {\n Object(__WEBPACK_IMPORTED_MODULE_46__lib_streamPicker__[\"e\" /* openStreamPicker */])({\n lang: lang,\n country: country,\n dispatch: dispatch,\n authRes: authRes,\n pickerStreams: nextPickerStreams,\n content: nextSelectedContent,\n route: { locationBeforeTransitions: nextLocationBeforeTransitions }\n });\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_46__lib_streamPicker__[\"f\" /* selectStreamForAuthUsers */])({\n dispatch: dispatch,\n authRes: authRes,\n pickerStreams: nextPickerStreams,\n content: nextSelectedContent,\n feeds: nextLastFeeds,\n locationBeforeTransitions: nextLocationBeforeTransitions\n });\n }\n if (this.state.feedsSelectorMessage) {\n this.setState({ feedsSelectorMessage: '' });\n }\n return;\n }\n }\n\n // if the route has changed, anticipate the component unmounting\n if (locationBeforeTransitions.pathname !== nextLocationBeforeTransitions.pathname) {\n this._isUnMounting = true;\n this.unembedPlayer();\n return;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__[\"a\" /* default */])(nextOnDeckContent) || onDeckContent.id === nextOnDeckContent.id || nextProps.player.embedding === true || this._isAuthorizing === true) {\n return;\n }\n\n // NOTE: The logic below handles 1) embedding the player and commencing playback 2) error scenarios\n // Based on the selectedStream AuthType (BAM, MVPD/TVE, ISP) it will execute embedPlayer() with the\n // correct properties\n if (nextRecommendMobileWeb) {\n this.throwError(nextOnDeckContent, __WEBPACK_IMPORTED_MODULE_11__enums__[\"z\" /* PlayerError */].UNSUPPORTED, 'player.error.recommendMobileWeb', nextProps);\n } else if (nextOnDeckContent.sourceId === 'SHORTSTOPLIVE') {\n this.embedPlayer(nextProps, nextOnDeckContent, { token: 'xbox_watch', tokenType: 'DEVICE' });\n } else if (nextProps.bypassToken) {\n this.embedPlayer(nextProps, nextOnDeckContent, {\n token: decodeURIComponent(nextProps.bypassToken),\n tokenType: 'GATEKEEPER',\n encoded: true\n });\n } else if (!nextOnDeckContent.authTypes || nextOnDeckContent.authTypes.length === 0) {\n this.embedPlayer(nextProps, nextOnDeckContent);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(nextOnDeckContent, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].OPEN)) {\n this.embedPlayer(nextProps, nextOnDeckContent, { token: 'open', tokenType: 'OPEN' });\n } else if (Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(nextOnDeckContent, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].ISP) && nextProps.userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].ISP) !== -1) {\n this.embedPlayer(nextProps, nextOnDeckContent, { token: 'online', tokenType: 'DEVICE' });\n } else if (Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(nextOnDeckContent, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].MVPD)) {\n var adobePassInfo = nextOnDeckContent.adobePassInfo;\n if (adobePassInfo) {\n var messages = nextProps.messages,\n formatMessage = nextProps.intl.formatMessage,\n preauthorizedResources = nextProps.preauthorizedResources;\n\n this._isAuthorizing = true;\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_13__common_actions_authenticationActions__[\"E\" /* createAndPerformStartAuthorizationAction */])(nextOnDeckContent.adobeRSS)).then(function (authorization) {\n if (locationBeforeTransitions && locationBeforeTransitions.query && locationBeforeTransitions.query.prePlayPicker) {\n return __WEBPACK_IMPORTED_MODULE_2_bluebird___default.a.reject(new Error(formatMessage(messages['player.error.unexpectedMessage'])));\n }\n if (authorization.resourceId && authorization.token) {\n // in case preauthz rsource info is incorrect, add the network to the list when\n // the playback is successful\n var _nextOnDeckContent$ad = nextOnDeckContent.adobeRSS,\n adobeRSS = _nextOnDeckContent$ad === undefined ? '' : _nextOnDeckContent$ad;\n\n var result = /<title>([^<]+)<\\/title>/.exec(adobeRSS);\n if (result && result[1]) {\n var adobeResource = result[1];\n if (adobeResource) {\n if (preauthorizedResources && preauthorizedResources.indexOf(adobeResource) === -1) {\n var resources = preauthorizedResources.concat(adobeResource);\n __WEBPACK_IMPORTED_MODULE_35__lib_auth_PreAuthZ__[\"a\" /* default */].setResources(resources, 1);\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_13__common_actions_authenticationActions__[\"L\" /* createCompletePreauthCheckAction */])(resources));\n }\n }\n }\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_13__common_actions_authenticationActions__[\"F\" /* createAsyncGetMetadataAction */])(METADATA.UPSTREAM_USERID)).then(function (accountId) {\n // eslint-disable-line arrow-body-style\n // if accountId doesn't exist, use a random number to avoid stream limiting everyone\n return _this2.embedPlayer(nextProps, nextOnDeckContent, authorization, {\n mvpd: adobePassInfo.abbreviation,\n accountId: accountId\n });\n });\n }\n return __WEBPACK_IMPORTED_MODULE_2_bluebird___default.a.reject(new Error(formatMessage(messages['player.error.unexpectedMessage'])));\n }).catch(function (_ref) {\n var message = _ref.message;\n var _props2 = _this2.props,\n playerPlacement = _props2.playerPlacement,\n _props2$pickerStreams = _props2.pickerStreams,\n pickerStreams = _props2$pickerStreams === undefined ? [] : _props2$pickerStreams;\n // On non-player page (i.e. hero), don't embed the player with an error\n // If the user is on a hero player scenario and selects an additional feed\n // from the feed selector, ensure error handling is in place only after\n // the user has initiated the click event\n\n if (!_this2.state.initializedWithAuthZError && playerPlacement !== __WEBPACK_IMPORTED_MODULE_11__enums__[\"B\" /* PlayerPlacement */].PLAYER && !_this2.hasUserFeedSwitchedStream(nextOnDeckContent)) {\n if (pickerStreams.length) {\n _this2.unregisterEvents();\n _this2.unembedPlayer();\n // TODO: localize message\n _this2.setState({\n showFeedsSelector: true,\n feedsSelectorMessage: message,\n initializedWithAuthZError: true\n });\n } else {\n // if the user clicks on the event, don't do this logic again\n _this2.setState({\n initializedWithAuthZError: true\n });\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"A\" /* contentUnSelect */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"P\" /* streamUnSelect */])());\n }\n return;\n }\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"m\" /* createAuthorizationErrorAction */])(message));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"y\" /* createStreamPlayingAction */])({ stream: nextOnDeckContent, error: true }));\n\n _this2.throwError(nextOnDeckContent, __WEBPACK_IMPORTED_MODULE_11__enums__[\"z\" /* PlayerError */].AUTHORIZATION, message && message !== 'null' ? message : 'player.error.defaultMessage', nextProps);\n // Fixes undhandled promise rejection error in console\n return null; // eslint-disable-line consistent-return\n }).finally(function () {\n _this2._isAuthorizing = false;\n });\n }\n } else if (Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(nextOnDeckContent, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].BAM)) {\n // TODO: DTC - need authorization\n this.embedPlayer(nextProps, nextOnDeckContent);\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n return this._isMounted === true && this._isUnMounting === false;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var dispatch = this.props.dispatch;\n\n this._isMounted = false;\n clearTimeout(this._autoEmbedTimer);\n this.unregisterEvents();\n this.unembedPlayer(true);\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"K\" /* pickerStreamsUnSelect */])());\n }\n }, {\n key: 'onToggleAutoPlay',\n value: function onToggleAutoPlay(event, _ref2) {\n var _ref2$autoplay = _ref2.autoplay,\n autoplay = _ref2$autoplay === undefined ? true : _ref2$autoplay;\n\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"o\" /* createAutoplayUpdatedAction */])(autoplay));\n }\n }, {\n key: 'onContentLoaded',\n value: function onContentLoaded(event) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n id = _ref3.id,\n clipId = _ref3.clipId,\n _ref3$mediainfo = _ref3.mediainfo,\n mediainfo = _ref3$mediainfo === undefined ? {} : _ref3$mediainfo;\n\n if (event.type === __WEBPACK_IMPORTED_MODULE_11__enums__[\"A\" /* PlayerEvents */].ESPN_CONTENT_LOADED) {\n // `clipId` is for domestic and `sourceId=intlvod` is for intl VOD\n if (clipId || mediainfo.sourceId === 'intlvod') {\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"q\" /* createContinuousPlayAction */])(clipId || id));\n } else {\n var _props3 = this.props,\n dispatch = _props3.dispatch,\n selectedStream = _props3.selectedStream;\n\n if (selectedStream.feedSwitch) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"s\" /* createFeedSelectAction */])(id));\n delete selectedStream.feedSwitch;\n }\n }\n // update nielsen tracking info with the new content\n this.videoPlayer.getPlayer(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE).analytics.configure({\n adobeDCR: Object(__WEBPACK_IMPORTED_MODULE_42__util__[\"a\" /* getAdobeDCRConfig */])(this.props.nielsenTrackingData, {}, this.props.env, 'brightcove')\n });\n }\n }\n }, {\n key: 'onSocialOpened',\n value: function onSocialOpened() {\n this.setState({ socialOpened: true });\n if (this.props.onSocialOpened) {\n this.props.onSocialOpened();\n }\n }\n }, {\n key: 'onSocialClosed',\n value: function onSocialClosed() {\n this.setState({ socialOpened: false });\n if (this.props.onSocialClosed) {\n this.props.onSocialClosed();\n }\n }\n }, {\n key: 'onCaptionOpened',\n value: function onCaptionOpened() {\n this.setState({ captionOpened: true });\n if (this.props.onCaptionOpened) {\n this.props.onCaptionOpened();\n }\n }\n }, {\n key: 'onCaptionClosed',\n value: function onCaptionClosed() {\n this.setState({ captionOpened: false });\n if (this.props.onCaptionClosed) {\n this.props.onCaptionClosed();\n }\n }\n }, {\n key: 'onBAMAuthrizeUser',\n value: function onBAMAuthrizeUser(event) {\n // eslint-disable-line\n var success = event.success;\n\n if (!success) {\n console.error('onBAMAuthrizeUser', event);\n var _props4 = this.props,\n dispatch = _props4.dispatch,\n selectedContent = _props4.selectedContent,\n selectedStream = _props4.selectedStream,\n oneIdToken = _props4.oneIdToken;\n // when there is a token and still trigger an auth error, consider it's token expiration\n\n if (oneIdToken.id_token) {\n var retryCount = Object(__WEBPACK_IMPORTED_MODULE_45__lib_util_localStorage__[\"a\" /* get */])(__WEBPACK_IMPORTED_MODULE_7__constants__[\"d\" /* FORCE_REFRESH_TOKEN_RETRY_KEY */]);\n if (retryCount) {\n retryCount = parseInt(retryCount, 10);\n if (retryCount >= 1) {\n Object(__WEBPACK_IMPORTED_MODULE_45__lib_util_localStorage__[\"c\" /* remove */])(__WEBPACK_IMPORTED_MODULE_7__constants__[\"d\" /* FORCE_REFRESH_TOKEN_RETRY_KEY */], retryCount);\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_14__common_actions_oneIdActions__[\"o\" /* logout */])());\n return;\n }\n retryCount += 1;\n } else {\n retryCount = 1;\n }\n Object(__WEBPACK_IMPORTED_MODULE_45__lib_util_localStorage__[\"d\" /* set */])(__WEBPACK_IMPORTED_MODULE_7__constants__[\"d\" /* FORCE_REFRESH_TOKEN_RETRY_KEY */], retryCount);\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_14__common_actions_oneIdActions__[\"k\" /* forceTokenRefresh */])()).then(function () {\n window.location.reload();\n }).catch(function (err) {\n console.error(err);\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_14__common_actions_oneIdActions__[\"o\" /* logout */])());\n });\n return;\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_13__common_actions_authenticationActions__[\"M\" /* createDTCPaywallAction */])({\n containerId: __WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* BAM_PAYWALL_IFRAME_ID */],\n content: selectedContent,\n stream: selectedStream\n }));\n }\n }\n }, {\n key: 'onBAMFeedChange',\n value: function onBAMFeedChange(event) {\n console.log('onBAMFeedChange', event); // eslint-disable-line no-console\n var _event$body = event.body;\n _event$body = _event$body === undefined ? {} : _event$body;\n var stream = _event$body.stream;\n\n if (stream) {\n var _props5 = this.props,\n dispatch = _props5.dispatch,\n selectedContent = _props5.selectedContent;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"z\" /* contentSelect */])(_extends({}, selectedContent, { reEmbed: true })));\n // TODO: set this in the event when BAM player fires successful playback event\n if (Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].BAM)) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"s\" /* createFeedSelectAction */])(stream.id));\n }\n stream.feedSwitch = true;\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"O\" /* streamSelect */])(stream));\n }\n }\n }, {\n key: 'onBAMSettingsChanged',\n value: function onBAMSettingsChanged(event) {\n // eslint-disable-line\n console.log('onBAMSettingsChanged', event); // eslint-disable-line no-console\n // TODO: implement logic to reflect settings change from BAM player to BC player\n }\n }, {\n key: 'onBAMMediaLoaded',\n value: function onBAMMediaLoaded(event) {\n // eslint-disable-line\n console.log('onBAMMediaLoaded', event); // eslint-disable-line no-console\n }\n }, {\n key: 'onBAMPlaybackError',\n value: function onBAMPlaybackError(event) {\n // eslint-disable-line\n console.log('onBAMPlaybackError', event); // eslint-disable-line no-console\n var _event$exception = event.exception;\n _event$exception = _event$exception === undefined ? {} : _event$exception;\n var _event$exception$mess = _event$exception.message,\n message = _event$exception$mess === undefined ? '' : _event$exception$mess;\n var _props6 = this.props,\n dispatch = _props6.dispatch,\n selectedContent = _props6.selectedContent,\n selectedStream = _props6.selectedStream,\n _props6$pickerStreams = _props6.pickerStreams,\n pickerStreams = _props6$pickerStreams === undefined ? [] : _props6$pickerStreams;\n\n if (message === 'NotEntitled') {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_13__common_actions_authenticationActions__[\"M\" /* createDTCPaywallAction */])({\n containerId: __WEBPACK_IMPORTED_MODULE_7__constants__[\"a\" /* BAM_PAYWALL_IFRAME_ID */],\n content: selectedContent,\n stream: selectedStream\n }));\n } else {\n var isBlackout = message.toLowerCase().indexOf('blackout') > -1;\n var isStreamConcurrencyViolation = message.toLowerCase().indexOf('streamconcurrencyviolation') > -1;\n var feedsSelectorMessage = message;\n\n if (isBlackout) {\n selectedStream.blackoutText = 'BLACKOUT';\n feedsSelectorMessage = 'This event has been blacked out in your area.';\n } else if (isStreamConcurrencyViolation) {\n feedsSelectorMessage = 'You have reached your device limit for streaming.\\n To continue viewing on this device, please stop streaming on another device.';\n }\n\n var _selectedContent$stre = selectedContent.streams,\n streams = _selectedContent$stre === undefined ? [] : _selectedContent$stre;\n\n // on first embed, embed with an error\n\n if (streams.length > 1 || pickerStreams.length) {\n this.unregisterEvents();\n this.unembedPlayer();\n // TODO: localize message\n this.setState({\n showFeedsSelector: true,\n feedsSelectorMessage: feedsSelectorMessage\n });\n }\n }\n }\n }, {\n key: 'onProgramChange',\n value: function onProgramChange(event, _ref4) {\n var _this3 = this;\n\n var id = _ref4.id,\n eventId = _ref4.eventId,\n callback = _ref4.callback;\n\n if (event.type === __WEBPACK_IMPORTED_MODULE_11__enums__[\"A\" /* PlayerEvents */].ESPN_PROGRAM_CHANGE) {\n // guard against program change called with the same id\n var _props$playingStream = this.props.playingStream,\n playingStream = _props$playingStream === undefined ? {} : _props$playingStream;\n\n if (playingStream.id === id) {\n return;\n }\n this.setState({ programChanging: true });\n var query = eventId ? { eventId: eventId } : { id: id };\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"w\" /* createProgramChangeAction */])(query, id)).then(function (trackingData) {\n _this3.setState({ programChanging: false });\n // update nielsen tracking info with the new\n _this3.videoPlayer.getPlayer(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE).analytics.configure({\n adobeDCR: Object(__WEBPACK_IMPORTED_MODULE_42__util__[\"a\" /* getAdobeDCRConfig */])(trackingData || _this3.props.nielsenTrackingData, { startType: 'live-show-boundary' }, _this3.props.env, 'brightcove')\n });\n // this actually triggers the analytics call for program changes\n if (callback && typeof callback === 'function') {\n callback();\n }\n });\n }\n }\n }, {\n key: 'onPlaybackError',\n value: function onPlaybackError(event, error) {\n console.log('onPlaybackError', error); // eslint-disable-line no-console\n if (error) {\n var customErrorMessage = void 0;\n var _props7 = this.props,\n selectedStream = _props7.selectedStream,\n _props7$selectedConte = _props7.selectedContent.streams,\n streams = _props7$selectedConte === undefined ? [] : _props7$selectedConte,\n _props7$pickerStreams = _props7.pickerStreams,\n pickerStreams = _props7$pickerStreams === undefined ? [] : _props7$pickerStreams;\n\n if (error.code === 'BLACKOUT' || error.message.indexOf('blacked out') > -1) {\n selectedStream.blackoutText = 'BLACKOUT';\n }\n\n if ((error.code === 403 || error.type && error.type.indexOf('authorization')) && typeof error.message === 'string' && error.message.trim() === '') {\n customErrorMessage = 'You are not authorized to view this event';\n }\n\n // on first embed, embed with an error\n if (streams.length > 1 || pickerStreams.length) {\n this.unregisterEvents();\n this.unembedPlayer();\n this.setState({\n showFeedsSelector: true,\n feedsSelectorMessage: customErrorMessage || error.message\n });\n }\n }\n }\n }, {\n key: 'onDrmError',\n value: function onDrmError(event, error) {\n console.log('onDrmError', error); // eslint-disable-line no-console\n\n var _props8 = this.props,\n selectedStream = _props8.selectedStream,\n appName = _props8.appName,\n hideNav = _props8.hideNav,\n apiEnv = _props8.apiEnv,\n flags = _props8.flags;\n\n var isEditions = (appName === 'watcheditions' || appName === 'webapp') && hideNav;\n var appDrmSupport = flags[__WEBPACK_IMPORTED_MODULE_11__enums__[\"t\" /* Flags */].APP_DRM_SUPPORT];\n var appSupportsDrm = appDrmSupport !== null && appDrmSupport !== undefined;\n\n if (!isEditions || !selectedStream || !appSupportsDrm) {\n return;\n }\n\n // target url is:\n // watchespn-editions://x-callback-url/openBrowser?url=https://www.espn.com/watch/player?id=1d405c1b-481a-4804-9f21-4595a0073a72\n\n var url = 'https://' + window.location.host + '/watch/player?id=' + selectedStream.id + '&roadblock=false';\n if (apiEnv) {\n url = url + '&apienv=' + apiEnv;\n }\n var params = {\n url: encodeURIComponent(url)\n };\n\n var appLink = Object(__WEBPACK_IMPORTED_MODULE_47__lib_native_bridge_espnapp__[\"a\" /* getAppLink */])('openBrowser', params, false);\n appLink = appLink.replace('sportscenter://', 'watchespn-editions://');\n\n window.location = appLink;\n }\n }, {\n key: 'onFeedClick',\n value: function onFeedClick(feed) {\n var _props9 = this.props,\n dispatch = _props9.dispatch,\n selectedContent = _props9.selectedContent;\n var _feed$streams = feed.streams,\n streams = _feed$streams === undefined ? [] : _feed$streams;\n\n var feedStream = feed;\n var feedContent = selectedContent;\n\n if (streams && streams.length) {\n feedStream = streams[0];\n feedContent = feed;\n }\n\n if (feedStream) {\n this.setState({\n feedsSelectorMessage: ''\n });\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"z\" /* contentSelect */])(_extends({}, feedContent, { reEmbed: true })));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"P\" /* streamUnSelect */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"y\" /* closeModalMessage */])());\n feedStream.feedSwitch = true;\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"O\" /* streamSelect */])(feedStream));\n }\n }\n }, {\n key: 'onFeedCloseModal',\n value: function onFeedCloseModal() {\n this.setState({ showFeedsSelector: false });\n }\n }, {\n key: 'getDSSPlayerMutedOnAuthPlay',\n value: function getDSSPlayerMutedOnAuthPlay(mutedQuery, authPlay) {\n if (authPlay === true || authPlay === 'true') {\n var dssPlayerMuted = this.props.dssPlayerMuted;\n\n var muted = dssPlayerMuted;\n if (mutedQuery !== undefined) {\n if (mutedQuery === false || mutedQuery === 'false') {\n muted = false;\n } else if (mutedQuery === true || mutedQuery === 'true') {\n muted = true;\n }\n }\n return muted;\n }\n return null;\n }\n\n /**\n * hasUserFeedSwitchedStream - Handles returning a boolean flag which determines\n if the\n * current stream has been triggered via a feedSwitch (i.e. click from feed selector dialog)\n *\n * @param {Object} currentStream - Stream object containing the feedSwitch property\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasUserFeedSwitchedStream',\n value: function hasUserFeedSwitchedStream(currentStream) {\n // eslint-disable-line class-methods-use-this\n return currentStream && currentStream.feedSwitch ? currentStream.feedSwitch : false;\n }\n\n // fire actions and set state to indicate the player is ready for embed\n\n }, {\n key: 'playerReady',\n value: function playerReady() {\n var initialEmbedContent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var _props10 = this.props,\n disableAuthPrompt = _props10.disableAuthPrompt,\n dispatch = _props10.dispatch,\n placement = _props10.placement,\n bucketId = _props10.bucketId,\n bucketName = _props10.bucketName,\n pageId = _props10.pageId,\n pageName = _props10.pageName,\n playerPlacement = _props10.playerPlacement,\n userAuth = _props10.userAuth,\n lastFeeds = _props10.lastFeeds,\n locationBeforeTransitions = _props10.routing.locationBeforeTransitions;\n\n var _ref5 = locationBeforeTransitions || {},\n _ref5$query = _ref5.query,\n query = _ref5$query === undefined ? {} : _ref5$query,\n pathname = _ref5.pathname;\n\n var playerReadyAction = dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"v\" /* createPlayerReadyAction */])(playerPlacement, initialEmbedContent));\n\n var omnitureQuery = Object(__WEBPACK_IMPORTED_MODULE_40__lib_omniture__[\"c\" /* getOmnitureQuery */])(query);\n\n if (playerReadyAction.autoEmbed === true) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"z\" /* contentSelect */])(_extends({}, initialEmbedContent, {\n disableAuthPrompt: disableAuthPrompt,\n placement: placement,\n bucketId: bucketId,\n bucketName: bucketName,\n pageId: pageId,\n pageName: pageName\n }, omnitureQuery)));\n\n var _props11 = this.props,\n preauthorizedResources = _props11.preauthorizedResources,\n pickerStreams = _props11.pickerStreams;\n\n var authRes = { userAuth: userAuth, preauthorizedResources: preauthorizedResources };\n var isVod = initialEmbedContent && initialEmbedContent.type === 'vod';\n\n if (Object(__WEBPACK_IMPORTED_MODULE_30__lib_auth_authStateKnown__[\"a\" /* default */])(userAuth) || isVod || !userAuth.length) {\n if (Object(__WEBPACK_IMPORTED_MODULE_34__lib_auth_canPlayContent__[\"a\" /* default */])(initialEmbedContent, userAuth, false)) {\n Object(__WEBPACK_IMPORTED_MODULE_46__lib_streamPicker__[\"f\" /* selectStreamForAuthUsers */])({\n dispatch: dispatch,\n authRes: authRes,\n pickerStreams: pickerStreams,\n content: initialEmbedContent,\n feeds: lastFeeds,\n locationBeforeTransitions: locationBeforeTransitions\n });\n }\n } else {\n /**\n * when user is not authenticated. We don't want to trigger auth flow\n * for non-player pages\n */\n if (pathname.indexOf('/player') === -1 && initialEmbedContent.id === query.id) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"z\" /* contentSelect */])(initialEmbedContent));\n }\n this.setState({ deferInitialStreamSelect: true });\n }\n }\n }\n }, {\n key: 'newRelicTrackingOnPlayer',\n value: function () {\n var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(stream) {\n var _props12, env, device, newrelicInsertKey, newrelicAccountId, oneId, id, content, streams, param;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _props12 = this.props, env = _props12.env, device = _props12.device, newrelicInsertKey = _props12.newrelicInsertKey, newrelicAccountId = _props12.newrelicAccountId, oneId = _props12.oneId;\n id = stream.id, content = stream.content, streams = stream.streams;\n param = {\n newrelicInsertKey: newrelicInsertKey,\n newrelicAccountId: newrelicAccountId,\n trackingData: {\n env: env,\n device: device,\n eventId: content ? content.eventId : null,\n action: 'SelectedStreamOnPlayer',\n streams: id,\n streamCount: streams ? streams.length : 1,\n swid: oneId.swid,\n eventType: 'PlaybackFlow',\n devicePlatform: 'watchWeb'\n }\n };\n _context.next = 5;\n return Object(__WEBPACK_IMPORTED_MODULE_36__lib_api_newRelicApi__[\"a\" /* newRelicTrackEvent */])(param);\n\n case 5:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function newRelicTrackingOnPlayer(_x3) {\n return _ref6.apply(this, arguments);\n }\n\n return newRelicTrackingOnPlayer;\n }()\n\n // called on componentDidMount (if autoplay), handleClick, or componentWillReceiveProps for deferred initialization.\n // takes props as a parameter for when called from componentWillReceiveProps, which passes \"nextProps\" in\n\n }, {\n key: 'initializePlayer',\n value: function initializePlayer(nextProps) {\n var props = nextProps || this.props;\n if (this.state.initialized === false) {\n if (this._isMounted === false) {\n return;\n }\n\n var bam = props.bootstrap.bam,\n initialEmbedContent = props.initialEmbedContent,\n scoringComplete = props.scoringComplete,\n playerTech = props.playerTech,\n locationBeforeTransitions = props.routing.locationBeforeTransitions;\n\n var _ref7 = locationBeforeTransitions || {},\n _ref7$query = _ref7.query,\n query = _ref7$query === undefined ? {} : _ref7$query;\n\n // if there is no content yet (no selected event and page request hasn't completed),\n // defer player initialization to componentWillReceiveProps\n\n\n if (!initialEmbedContent || Object(__WEBPACK_IMPORTED_MODULE_37__lib_util_isEmpty__[\"a\" /* default */])(initialEmbedContent) || !scoringComplete) {\n this.setState({ deferPlayerInitialization: true });\n return;\n }\n\n this.videoPlayer = new __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */]({\n bamPlayerOptions: query[__WEBPACK_IMPORTED_MODULE_11__enums__[\"t\" /* Flags */].BAM_ENV] ? _extends({}, bam, { env: query[__WEBPACK_IMPORTED_MODULE_11__enums__[\"t\" /* Flags */].BAM_ENV] }) : bam,\n brightcovePlayerOptions: {\n playerTech: playerTech,\n optimizeLive: true,\n // Enables the Brightcove player to use the native HTML5 video player when set to true\n // The `native` value is passed via query parameter (playertech=native)\n native: playerTech === 'native'\n }\n });\n this.playerReady(initialEmbedContent);\n this.setState({ initialized: true });\n }\n }\n }, {\n key: 'handleClick',\n value: function handleClick(event) {\n event.preventDefault();\n __WEBPACK_IMPORTED_MODULE_44__globalVideoElement__[\"a\" /* default */].prime();\n\n if (this.props.clickHandler) {\n this.props.clickHandler(event);\n }\n\n // only initialize player if it hasn't been already\n if (this.props.player.embedded === false) {\n this.initializePlayer(this.props);\n }\n }\n }, {\n key: 'unregisterEvents',\n value: function unregisterEvents() {\n if (!this.videoPlayer) {\n return;\n }\n // Brightcove Player Events\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_AUTOPLAY_TOGGLED, this.onToggleAutoPlay);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_PROGRAM_CHANGE, this.onProgramChange);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_CONTENT_LOADED, this.onContentLoaded);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_SOCIAL_OPENED, this.onSocialOpened);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_SOCIAL_CLOSED, this.onSocialClosed);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_CAPTION_OPENED, this.onCaptionOpened);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_CAPTION_CLOSED, this.onCaptionClosed);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_ERROR, this.onPlaybackError);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_DRM_ERROR, this.onDrmError);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_ADS_AD_SKIPPED, __WEBPACK_IMPORTED_MODULE_40__lib_omniture__[\"m\" /* trackEspnPlayerOnAdSkipped */]);\n\n // BAM Player Events\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.AUTHORIZE_USER, this.onBAMAuthrizeUser);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.FEED_CHANGE_REQUEST, this.onBAMFeedChange);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.SETTINGS_CHANGED, this.onBAMSettingsChanged);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.MEDIA_LOADED, this.onBAMMediaLoaded);\n this.videoPlayer.off(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.PLAYBACK_ERROR, this.onBAMPlaybackError);\n }\n }, {\n key: 'registerEvents',\n value: function registerEvents() {\n if (!this.videoPlayer) {\n return;\n }\n // Brightcove Player Events\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_AUTOPLAY_TOGGLED, this.onToggleAutoPlay);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_PROGRAM_CHANGE, this.onProgramChange);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_CONTENT_LOADED, this.onContentLoaded);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_SOCIAL_OPENED, this.onSocialOpened);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_SOCIAL_CLOSED, this.onSocialClosed);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_CAPTION_OPENED, this.onCaptionOpened);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_CAPTION_CLOSED, this.onCaptionClosed);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_ERROR, this.onPlaybackError);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_DRM_ERROR, this.onDrmError);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.ESPN_ADS_AD_SKIPPED, __WEBPACK_IMPORTED_MODULE_40__lib_omniture__[\"m\" /* trackEspnPlayerOnAdSkipped */]);\n\n // BAM Player Events\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.AUTHORIZE_USER, this.onBAMAuthrizeUser);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.FEED_CHANGE_REQUEST, this.onBAMFeedChange);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.SETTINGS_CHANGED, this.onBAMSettingsChanged);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.MEDIA_LOADED, this.onBAMMediaLoaded);\n this.videoPlayer.on(__WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].Events.PLAYBACK_ERROR, this.onBAMPlaybackError);\n }\n }, {\n key: 'startAutoEmbedTimer',\n value: function startAutoEmbedTimer() {\n if (this.state.autoEmbedCountDown <= 0) {\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"n\" /* createAutoEmbedTimerCompleteAction */])());\n clearTimeout(this._autoEmbedTimer);\n return;\n }\n if (this._isMounted === true && this.state.autoEmbedCountDown > 0) {\n this.setState({ autoEmbedCountDown: this.state.autoEmbedCountDown - 1 });\n this._autoEmbedTimer = setTimeout(this.startAutoEmbedTimer, 1000);\n }\n }\n\n /**\n * Display an internationalized error message within the player.\n * Embeds with an error if not embedded, otherwise calls error on the player object.\n * @param {object} stream\n * @param {string} type\n * @param {string} messageKey\n * @param {object} props\n */\n\n }, {\n key: 'throwError',\n value: function throwError(stream) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_11__enums__[\"z\" /* PlayerError */].DEFAULT;\n var messageArg = arguments[2];\n var props = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.props;\n var messages = props.messages,\n formatMessage = props.intl.formatMessage,\n player = props.player,\n selectedContent = props.selectedContent,\n locationBeforeTransitions = props.routing.locationBeforeTransitions;\n\n var _ref8 = locationBeforeTransitions || {},\n _ref8$query = _ref8.query,\n query = _ref8$query === undefined ? {} : _ref8$query;\n\n var message = messageArg;\n if (message.indexOf('player.error') === 0) {\n message = formatMessage(messages[message]);\n }\n\n var errorObj = {\n type: type,\n message: message\n };\n var _selectedContent$stre2 = selectedContent.streams,\n streams = _selectedContent$stre2 === undefined ? [] : _selectedContent$stre2;\n // ensure to remove dupes, avoids FeedsSelector component from re-rendering duplicate streams\n\n streams = streams.length && __WEBPACK_IMPORTED_MODULE_5_lodash_uniqBy___default()(streams, 'id');\n\n if (query.prePlayPicker && streams.length === 1) {\n streams.push(_extends({}, streams[0], { tier: 'primary', id: streams[0].id + '1', test: true }));\n streams.push(_extends({}, streams[0], { tier: 'primary', id: streams[0].id + '2', test: true }));\n streams.push(_extends({}, streams[0], { tier: 'secondary', id: streams[0].id + '3', test: true }));\n }\n\n // on first embed, embed with an error\n if (streams.length > 1) {\n this.unregisterEvents();\n this.unembedPlayer();\n this.setState({\n showFeedsSelector: true,\n feedsSelectorMessage: message\n });\n } else if (player.embedded === false) {\n this.embedPlayer(props, stream, {}, {}, errorObj);\n } else {\n this.videoPlayer.error(errorObj);\n }\n }\n }, {\n key: 'unembedPlayer',\n value: function () {\n var _ref9 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(destroy) {\n var dispatch;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n dispatch = this.props.dispatch;\n\n if (!this.videoPlayer) {\n _context2.next = 16;\n break;\n }\n\n // removes flickering of previous thumbnail\n __WEBPACK_IMPORTED_MODULE_44__globalVideoElement__[\"a\" /* default */].poster = '';\n _context2.prev = 3;\n\n if (!destroy) {\n _context2.next = 9;\n break;\n }\n\n _context2.next = 7;\n return this.videoPlayer.destroy();\n\n case 7:\n _context2.next = 11;\n break;\n\n case 9:\n _context2.next = 11;\n return this.videoPlayer.delete();\n\n case 11:\n _context2.next = 16;\n break;\n\n case 13:\n _context2.prev = 13;\n _context2.t0 = _context2['catch'](3);\n\n console.error(_context2.t0);\n\n case 16:\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"y\" /* createStreamPlayingAction */])({ stream: {} }));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"t\" /* createPlayerEmbeddedAction */])(false));\n\n case 18:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[3, 13]]);\n }));\n\n function unembedPlayer(_x6) {\n return _ref9.apply(this, arguments);\n }\n\n return unembedPlayer;\n }()\n }, {\n key: 'createSettingsMenuConfig',\n value: function createSettingsMenuConfig(stream) {\n var _this4 = this;\n\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props;\n var dispatch = props.dispatch,\n isDomestic = props.isDomestic,\n provider = props.provider,\n userAuth = props.userAuth,\n messages = props.messages,\n formatMessage = props.intl.formatMessage;\n\n var menuItems = [];\n\n if (isDomestic && Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].MVPD) && userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].MVPD) > -1 && provider.name) {\n menuItems.push({\n label: formatMessage(messages['player.menu.logout'], { providerName: provider.name }),\n fn: function fn() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_13__common_actions_authenticationActions__[\"C\" /* createAndPerformLogoutAction */])(_this4.props.onDeckContent));\n }\n });\n }\n\n return {\n menuItems: menuItems\n };\n }\n }, {\n key: 'createLogoConfig',\n value: function createLogoConfig(stream) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props;\n var _props$bootstrap$play = props.bootstrap.player;\n _props$bootstrap$play = _props$bootstrap$play === undefined ? {} : _props$bootstrap$play;\n var _props$bootstrap$play2 = _props$bootstrap$play.logos,\n logos = _props$bootstrap$play2 === undefined ? {} : _props$bootstrap$play2,\n isDomestic = props.isDomestic,\n provider = props.provider,\n locationBeforeTransitions = props.routing.locationBeforeTransitions,\n flags = props.flags,\n origin = props.location.origin;\n\n var _ref10 = locationBeforeTransitions || {},\n pathname = _ref10.pathname;\n\n var logo = void 0;\n if (!isDomestic || pathname === '/syndicated/player') {\n // syndicated player has its header to show logo\n return logo;\n }\n if (Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].MVPD) || Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].ISP)) {\n logo = {\n src: __WEBPACK_IMPORTED_MODULE_4_selectn___default()('images.colorWithNegativeBackground.href', provider) || __WEBPACK_IMPORTED_MODULE_4_selectn___default()('images.logo.href', provider),\n href: __WEBPACK_IMPORTED_MODULE_4_selectn___default()('links.web.href', provider)\n };\n } else if (Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].BAM)) {\n if (Object(__WEBPACK_IMPORTED_MODULE_32__lib_auth_streamHasDTCPackage__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_11__enums__[\"s\" /* Entitlements */].ESPN_PLUS_NHL)) {\n logo = logos[__WEBPACK_IMPORTED_MODULE_11__enums__[\"s\" /* Entitlements */].ESPN_PLUS_NHL];\n } else if (Object(__WEBPACK_IMPORTED_MODULE_32__lib_auth_streamHasDTCPackage__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_11__enums__[\"s\" /* Entitlements */].ESPN_PLUS_MLB)) {\n logo = logos[__WEBPACK_IMPORTED_MODULE_11__enums__[\"s\" /* Entitlements */].ESPN_PLUS_MLB];\n } else if (Object(__WEBPACK_IMPORTED_MODULE_32__lib_auth_streamHasDTCPackage__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_11__enums__[\"s\" /* Entitlements */].ESPN_PLUS)) {\n logo = logos[__WEBPACK_IMPORTED_MODULE_11__enums__[\"s\" /* Entitlements */].ESPN_PLUS];\n }\n }\n if (logo && logo.href && logo.href.indexOf('http') !== 0) {\n logo.href = '' + Object(__WEBPACK_IMPORTED_MODULE_39__lib_format_addQueryToUrl__[\"a\" /* default */])('' + origin + logo.href, flags);\n }\n return logo;\n }\n }, {\n key: 'createFeedsMenuConfig',\n value: function createFeedsMenuConfig(stream) {\n var _this5 = this;\n\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props;\n var feedsSelectorMessage = this.state.feedsSelectorMessage;\n var messages = props.messages,\n formatMessage = props.intl.formatMessage,\n pickerStreams = props.pickerStreams;\n\n\n var feeds = pickerStreams.length > 0 && pickerStreams.map(function (streamItem) {\n var streamData = _extends({}, streamItem);\n if (Array.isArray(streamData.contents) && streamData.contents.length > 0) {\n streamData.contents.forEach(function (item) {\n var selected = item && typeof item.id === 'string' && item.id === stream.id;\n\n item.selected = selected;\n item.playbackErrorMessage = selected && feedsSelectorMessage;\n });\n }\n\n return _extends({}, streamData, {\n fn: function fn(feed) {\n _this5.onFeedClick(feed);\n }\n });\n });\n\n var feedsMenu = pickerStreams.length > 0 && {\n title: formatMessage(messages['player.feeds.title']),\n feeds: feeds\n };\n return feedsMenu;\n }\n }, {\n key: 'embedPlayer',\n value: function () {\n var _ref11 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var stream = arguments[1];\n var authorization = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var streamlimiter = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var error = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var callback = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : function () {};\n\n var _ref12, _ref12$wrappedCompone, _ref12$wrappedCompone2, wrappedComponentRefs, playerContainer, apiEnv, env, lang, nielsenTrackingData, comscoreTrackingData, dispatch, isMobile, device, provider, isDomestic, edition, autoPlay, intlApp, oneIdToken, passOneIdToken, selectedContent, userInitiated, location, locationBeforeTransitions, playbackMeta, prerollConfig, playerAdsConfig, userAuth, pickerStreams, shieldApiKey, playerOpts, _ref13, _ref13$query, query, _ref14, locationQueryParams, host, protocol, auth, social, playerTech, currentPlayerTech, player, logo, settingsMenu, feedsMenu, opts, autoplay, isBamPlayer, isBrightCovePlayer, elementId, wrapperEl, playerOptions, streamObj, shareBaseUrl, muted, usPrivacyCookie, activeAdProvider, dssAdsConfig, customProps;\n\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n // the playerContainer is the container in which we embed the player\n // (its DOM is not manipulated by the ESPNVideoPlayer)\n _ref12 = this.refs || {}, _ref12$wrappedCompone = _ref12.wrappedComponent;\n _ref12$wrappedCompone = _ref12$wrappedCompone === undefined ? {} : _ref12$wrappedCompone;\n _ref12$wrappedCompone2 = _ref12$wrappedCompone.refs, wrappedComponentRefs = _ref12$wrappedCompone2 === undefined ? {} : _ref12$wrappedCompone2;\n playerContainer = wrappedComponentRefs.playerContainer;\n\n if (!playerContainer) {\n _context3.next = 70;\n break;\n }\n\n this.setState({\n showFeedsSelector: false,\n feedsSelectorMessage: ''\n });\n\n apiEnv = props.apiEnv, env = props.env, lang = props.lang, nielsenTrackingData = props.nielsenTrackingData, comscoreTrackingData = props.comscoreTrackingData, dispatch = props.dispatch, isMobile = props.isMobile, device = props.device, provider = props.provider, isDomestic = props.isDomestic, edition = props.edition, autoPlay = props.autoPlay, intlApp = props.intlApp, oneIdToken = props.oneIdToken, passOneIdToken = props.passOneIdToken, selectedContent = props.selectedContent, userInitiated = props.userInitiated, location = props.location, locationBeforeTransitions = props.routing.locationBeforeTransitions, playbackMeta = props.playbackMeta, prerollConfig = props.prerollConfig, playerAdsConfig = props.playerAdsConfig, userAuth = props.userAuth, pickerStreams = props.pickerStreams, shieldApiKey = props.shieldApiKey, playerOpts = props.playerOpts;\n _ref13 = locationBeforeTransitions || {}, _ref13$query = _ref13.query, query = _ref13$query === undefined ? {} : _ref13$query;\n _ref14 = location || {}, locationQueryParams = _ref14.query, host = _ref14.host, protocol = _ref14.protocol;\n auth = _extends({}, authorization, {\n partnerName: query[__WEBPACK_IMPORTED_MODULE_11__enums__[\"t\" /* Flags */].PARTNER]\n });\n social = !intlApp ? {\n url: 'http://www.espn.com/watch?id={{ID}}'\n } : false;\n playerTech = Object(__WEBPACK_IMPORTED_MODULE_31__lib_auth_streamHasAuthType__[\"a\" /* default */])(stream, __WEBPACK_IMPORTED_MODULE_11__enums__[\"e\" /* AuthTypes */].BAM) ? __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM : __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE;\n currentPlayerTech = void 0;\n\n\n if (this.videoPlayer) {\n player = this.videoPlayer.getPlayer();\n\n if (player && player.tech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE) {\n currentPlayerTech = __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE;\n } else if (player && player.tech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM) {\n currentPlayerTech = __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM;\n }\n }\n\n _context3.prev = 14;\n\n if (!(currentPlayerTech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE)) {\n _context3.next = 20;\n break;\n }\n\n _context3.next = 18;\n return this.videoPlayer.delete();\n\n case 18:\n _context3.next = 23;\n break;\n\n case 20:\n if (!(currentPlayerTech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM && playerTech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE)) {\n _context3.next = 23;\n break;\n }\n\n _context3.next = 23;\n return this.videoPlayer.delete();\n\n case 23:\n _context3.next = 28;\n break;\n\n case 25:\n _context3.prev = 25;\n _context3.t0 = _context3['catch'](14);\n\n console.error(_context3.t0);\n\n case 28:\n\n // create `logo`\n logo = this.createLogoConfig(stream, props);\n // create `settingsMenu`\n\n settingsMenu = this.createSettingsMenuConfig(stream, props);\n // create `feedsMenu`\n\n feedsMenu = this.createFeedsMenuConfig(stream, props);\n opts = Object(__WEBPACK_IMPORTED_MODULE_42__util__[\"d\" /* getPlayerOptions */])({\n apiEnv: apiEnv,\n stream: stream,\n authorization: auth,\n streamlimiter: streamlimiter,\n nielsenTrackingData: nielsenTrackingData,\n comscoreTrackingData: comscoreTrackingData,\n isMobile: isMobile,\n device: device,\n error: error,\n env: env,\n lang: lang,\n provider: provider,\n isDomestic: isDomestic,\n social: social,\n userInitiated: userInitiated,\n logo: logo,\n settingsMenu: settingsMenu,\n feedsMenu: feedsMenu,\n playbackMeta: playbackMeta,\n prerollConfig: prerollConfig,\n adsConfig: playerAdsConfig,\n edition: edition,\n userAuth: userAuth,\n pickerStreams: pickerStreams,\n shieldApiKey: shieldApiKey,\n playerOpts: playerOpts\n });\n\n console.log('ESPN PLAYER FEEDS MENU:', feedsMenu); // eslint-disable-line\n console.log('ESPN PLAYER OPTIONS:', opts); // eslint-disable-line\n\n // `autoPlay` flag only applies to the initial playback.\n autoplay = autoPlay || !!__WEBPACK_IMPORTED_MODULE_44__globalVideoElement__[\"a\" /* default */].primed;\n isBamPlayer = playerTech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM;\n isBrightCovePlayer = playerTech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE;\n\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"u\" /* createPlayerEmbeddingAction */])(true));\n\n if (isBrightCovePlayer) {\n __WEBPACK_IMPORTED_MODULE_44__globalVideoElement__[\"a\" /* default */].poster = stream.content.imageHref;\n __WEBPACK_IMPORTED_MODULE_44__globalVideoElement__[\"a\" /* default */].className = 'vjs-tech';\n }\n\n elementId = isBrightCovePlayer ? 'watchespn-player' : 'watchespn-bam-player';\n wrapperEl = void 0;\n\n\n if (currentPlayerTech !== __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM || playerTech !== __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM) {\n // create a wrapper element so the video player doesn't manipulate the DOM that is registered with React\n wrapperEl = document.createElement('div');\n wrapperEl.setAttribute('data-vjs-player', '');\n wrapperEl.id = elementId;\n wrapperEl.style.display = 'none'; // to avoid FOUC\n if (playerTech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE) {\n wrapperEl.appendChild(__WEBPACK_IMPORTED_MODULE_44__globalVideoElement__[\"a\" /* default */]);\n }\n\n playerContainer.appendChild(wrapperEl);\n wrapperEl.style.display = 'block';\n }\n\n playerOptions = {\n playerTech: playerTech,\n container: isBamPlayer ? '#' + elementId : __WEBPACK_IMPORTED_MODULE_44__globalVideoElement__[\"a\" /* default */]\n };\n\n\n if (isBamPlayer) {\n // test stream url: `ml=https://qa-espn-edge.bamgrid.com/media/052c5f81-4a57-4b9b-8d51-080c3730fabf/scenarios/{scenario}`\n streamObj = {\n id: stream.id\n };\n // Derive the root url from react-router; default to production base url\n\n shareBaseUrl = host && protocol ? protocol + '//' + host + '/watch/player' : 'http://www.espn.com/watch/player';\n\n streamObj.shareUrl = shareBaseUrl + '?id=' + stream.id;\n\n if (query.ml) {\n // test param\n streamObj.mediaLocation = query.ml;\n }\n\n // Handles query parameter `t` for video startTime\n if (query.t) {\n streamObj.startTime = query.t;\n } else if (locationQueryParams.t) {\n streamObj.startTime = locationQueryParams.t;\n delete locationQueryParams.t; // Prevent `t` from showing up in subsequent media loads\n }\n\n muted = this.getDSSPlayerMutedOnAuthPlay(query[__WEBPACK_IMPORTED_MODULE_11__enums__[\"t\" /* Flags */].MUTED], autoPlay);\n usPrivacyCookie = __WEBPACK_IMPORTED_MODULE_6_cookie_cutter___default.a.get('usprivacy') || '';\n activeAdProvider = playerAdsConfig.activeAdProvider, dssAdsConfig = playerAdsConfig.dssAdsConfig;\n customProps = {\n autoPlay: autoplay,\n muted: muted,\n analytics: opts.analytics,\n poster: stream.content.imageHref,\n logo: logo,\n hudson: true,\n adsConfig: {\n activeAdProvider: activeAdProvider,\n cmsid: dssAdsConfig ? dssAdsConfig.cmsid : '',\n networkCode: dssAdsConfig ? dssAdsConfig.networkCode : ''\n }\n };\n\n\n if (usPrivacyCookie) {\n customProps.adsConfig.usPrivacy = usPrivacyCookie;\n customProps.adsConfig.dUsPrivacy = usPrivacyCookie;\n customProps.adsConfig.rdp = usPrivacyCookie === '1YYY' ? '1' : '0';\n }\n\n if (stream.feedSwitch && currentPlayerTech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM) {\n customProps = _extends({}, customProps, {\n playlistItem: stream\n });\n } else {\n customProps = _extends({}, customProps, {\n pageApiMeta: _extends({}, selectedContent, { pickerStreams: pickerStreams })\n });\n }\n\n playerOptions = _extends({}, playerOptions, Object(__WEBPACK_IMPORTED_MODULE_38__lib_util_getBamAuthConfig__[\"a\" /* default */])(oneIdToken, passOneIdToken, userAuth), {\n language: {\n ui: 'en',\n audio: 'en'\n },\n playlist: [streamObj],\n autoPlay: autoplay,\n customProps: customProps\n });\n } else if (isBrightCovePlayer) {\n playerOptions = _extends({}, playerOptions, {\n options: _extends({}, opts, { autoplay: autoplay })\n });\n }\n\n _context3.prev = 44;\n\n if (!(stream.feedSwitch && currentPlayerTech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM && playerTech === __WEBPACK_IMPORTED_MODULE_8__common_video_player__[\"a\" /* default */].PlayerTech.BAM)) {\n _context3.next = 51;\n break;\n }\n\n delete stream.feedSwitch;\n _context3.next = 49;\n return this.videoPlayer.changeFeed(playerOptions);\n\n case 49:\n _context3.next = 53;\n break;\n\n case 51:\n _context3.next = 53;\n return this.videoPlayer.create(playerOptions);\n\n case 53:\n _context3.next = 58;\n break;\n\n case 55:\n _context3.prev = 55;\n _context3.t1 = _context3['catch'](44);\n\n console.error(_context3.t1);\n\n case 58:\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"u\" /* createPlayerEmbeddingAction */])(false));\n\n if (!(this._isMounted === false || this._isUnMounting === true)) {\n _context3.next = 62;\n break;\n }\n\n this.videoPlayer.delete();\n return _context3.abrupt('return');\n\n case 62:\n\n if (wrapperEl) {\n wrapperEl.style.display = 'block';\n }\n this.unregisterEvents();\n this.registerEvents();\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"t\" /* createPlayerEmbeddedAction */])(true));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_43__actions__[\"y\" /* createStreamPlayingAction */])({ stream: stream, error: !!error }));\n callback();\n // comment out newrelic tracking until tracking is required for new stream picker\n // if (isNewrelicTrackingOn &&\n // (currentPlayerTech === WatchESPNWebPlayer.PlayerTech.BAM ||\n // playerTech === WatchESPNWebPlayer.PlayerTech.BAM)) {\n // // send newrelic track for selected stream that is presented to the users\n // await this.newRelicTrackingOnPlayer(stream);\n // }\n _context3.next = 71;\n break;\n\n case 70:\n console.error('Cannot embed player. ' + WrappedComponent.displayName + ' is missing \"playerElement\" ref'); // eslint-disable-line\n\n case 71:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[14, 25], [44, 55]]);\n }));\n\n function embedPlayer() {\n return _ref11.apply(this, arguments);\n }\n\n return embedPlayer;\n }()\n }, {\n key: 'render',\n value: function render() {\n var showFeedsSelector = this.state.showFeedsSelector;\n // const showFeedsSelector = true;\n\n var _props13 = this.props,\n selectedStream = _props13.selectedStream,\n userAuth = _props13.userAuth;\n\n var feedsMenu = void 0;\n if (showFeedsSelector) {\n feedsMenu = this.createFeedsMenuConfig(selectedStream, this.props, true);\n }\n return _jsx('div', {\n style: { position: 'relative', width: '100%', height: '100%' }\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(WrappedComponent, _extends({\n ref: 'wrappedComponent'\n }, this.props, this.state, {\n clickHandler: this.handleClick\n })), showFeedsSelector && feedsMenu && _jsx(__WEBPACK_IMPORTED_MODULE_9__FeedsSelector__[\"a\" /* default */], {\n title: feedsMenu.title,\n feeds: feedsMenu.feeds,\n userAuth: userAuth,\n onClick: this.onFeedClick,\n onClose: this.onFeedCloseModal\n }));\n }\n }]);\n\n return ESPNPlayer;\n }(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\n ESPNPlayer.defaultProps = {\n disableAuthPrompt: true,\n initialAutoEmbedCountDown: 2,\n initialEmbedContent: {},\n recommendMobileWeb: false,\n userAuth: [],\n oneIdToken: {}\n };\n\n var mapStateToProps = function mapStateToProps(state) {\n var _state$app = state.app,\n _state$app$isMobile = _state$app.isMobile,\n isMobile = _state$app$isMobile === undefined ? false : _state$app$isMobile,\n env = _state$app.env,\n lang = _state$app.lang,\n country = _state$app.country,\n device = _state$app.device,\n openPicker = _state$app.openPicker,\n appName = _state$app.appName,\n player = state.player,\n routing = state.routing;\n\n var page = Object(__WEBPACK_IMPORTED_MODULE_21__common_selectors_pageSelector__[\"c\" /* default */])(state);\n var edition = Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"k\" /* editionSelector */])(state).edition;\n var shieldApiKey = Object(__WEBPACK_IMPORTED_MODULE_48__common_selectors_apiParamsSelector__[\"g\" /* shieldApiKeySelector */])(state, edition);\n var playerOpts = Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"B\" /* playerOptionsSelector */])(state);\n\n return {\n bootstrap: Object(__WEBPACK_IMPORTED_MODULE_15__common_selectors_bootstrapSelector__[\"a\" /* default */])(state),\n apiEnv: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"c\" /* apiEnvSelector */])(state),\n env: env,\n lang: lang,\n country: country,\n initialEmbedContent: Object(__WEBPACK_IMPORTED_MODULE_19__common_selectors_initialEmbedSelector__[\"a\" /* default */])(state),\n isMobile: isMobile,\n device: device,\n openPicker: openPicker,\n nielsenTrackingData: Object(__WEBPACK_IMPORTED_MODULE_16__common_selectors_analyticsSelectors__[\"e\" /* nielsenTrackingSelector */])(state),\n comscoreTrackingData: Object(__WEBPACK_IMPORTED_MODULE_16__common_selectors_analyticsSelectors__[\"b\" /* comscoreTrackingSelector */])(state),\n onDeckContent: Object(__WEBPACK_IMPORTED_MODULE_20__common_selectors_onDeckContentSelector__[\"a\" /* default */])(state),\n player: player,\n playerTech: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"C\" /* playerTechSelector */])(state),\n autoPlay: Object(__WEBPACK_IMPORTED_MODULE_18__common_selectors_playerSelector__[\"a\" /* autoPlaySelector */])(state),\n dssPlayerMuted: Object(__WEBPACK_IMPORTED_MODULE_18__common_selectors_playerSelector__[\"c\" /* dssPlayerMutedSelector */])(state),\n selectedContent: Object(__WEBPACK_IMPORTED_MODULE_22__common_selectors_selectedContentSelector__[\"a\" /* default */])(state),\n selectedStream: Object(__WEBPACK_IMPORTED_MODULE_23__common_selectors_selectedStreamSelector__[\"a\" /* default */])(state),\n playingStream: Object(__WEBPACK_IMPORTED_MODULE_24__common_selectors_playingStreamSelector__[\"a\" /* default */])(state),\n provider: Object(__WEBPACK_IMPORTED_MODULE_26__common_selectors_providerSelector__[\"a\" /* default */])(state),\n routing: routing,\n scoringComplete: page.scored,\n userAuth: Object(__WEBPACK_IMPORTED_MODULE_27__common_selectors_authenticationSelectors__[\"r\" /* userAuthSelector */])(state),\n preauthorizedResources: Object(__WEBPACK_IMPORTED_MODULE_27__common_selectors_authenticationSelectors__[\"o\" /* preauthorizedResourcesSelector */])(state),\n oneIdToken: Object(__WEBPACK_IMPORTED_MODULE_28__common_selectors_oneIdSelector__[\"g\" /* oneIdTokenSelector */])(state),\n passOneIdToken: Object(__WEBPACK_IMPORTED_MODULE_27__common_selectors_authenticationSelectors__[\"n\" /* passOneIdTokenSelector */])(state),\n bypassToken: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"e\" /* bypassTokenSelector */])(state),\n isDomestic: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"s\" /* isDomesticSelector */])(state),\n edition: edition,\n intlApp: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"p\" /* intlAppSelector */])(state),\n recommendMobileWeb: Object(__WEBPACK_IMPORTED_MODULE_18__common_selectors_playerSelector__[\"g\" /* recommendMobileWebSelector */])(state),\n flags: Object(__WEBPACK_IMPORTED_MODULE_29__common_selectors_flagsSelector__[\"a\" /* persistentFlagsSelector */])(state),\n location: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"w\" /* locationSelector */])(state),\n playbackMeta: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"A\" /* playbackMetaSelector */])(state),\n prerollConfig: Object(__WEBPACK_IMPORTED_MODULE_18__common_selectors_playerSelector__[\"f\" /* prerollConfigSelector */])(state),\n lastFeeds: Object(__WEBPACK_IMPORTED_MODULE_18__common_selectors_playerSelector__[\"d\" /* lastFeedsSelector */])(state),\n playerAdsConfig: Object(__WEBPACK_IMPORTED_MODULE_18__common_selectors_playerSelector__[\"e\" /* playerAdsConfigSelector */])(state),\n oneId: state.oneId,\n newrelicInsertKey: state.app.newrelicInsertKey,\n newrelicAccountId: state.app.newrelicAccountId,\n isNewrelicTrackingOn: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"x\" /* newRelicTrackingSelector */])(state),\n pickerStreams: Object(__WEBPACK_IMPORTED_MODULE_25__common_selectors_pickerStreamsSelector__[\"a\" /* default */])(state),\n appName: appName,\n hideNav: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_appSelector__[\"o\" /* hideNavSelector */])(state),\n shieldApiKey: shieldApiKey,\n playerOpts: playerOpts\n };\n };\n\n return Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps, null, null, { withRef: true })(Object(__WEBPACK_IMPORTED_MODULE_41__common_injectIntl__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_3_hoist_non_react_statics___default()(ESPNPlayer, WrappedComponent), { withRef: true }));\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (connectPlayer);\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 224 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = authenticationAware;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_uniq__ = __webpack_require__(94);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_uniq___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_lodash_uniq__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__common_PropTypes__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__lib_api_newRelicApi__ = __webpack_require__(352);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__lib_auth_authStateKnown__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__lib_auth_canPlayContent__ = __webpack_require__(117);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__lib_auth_canPlayStream__ = __webpack_require__(118);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__lib_auth_streamHasAuthType__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__lib_streamPicker__ = __webpack_require__(221);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__common_selectors_selectedContentSelector__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__common_selectors_selectedStreamSelector__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__common_selectors_routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__common_selectors_pickerStreamsSelector__ = __webpack_require__(149);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__common_selectors_oneIdSelector__ = __webpack_require__(27);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// import { newRelicTrackingSelector } from 'common/selectors/appSelector';\n\n\n\nfunction authenticationAware() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n /**\n * Currently options is not being passed from authenticationAware caller.\n * createDisplayProviderDialogAction is just assigned to nonAuthedActionCreator\n * We don't need to do the following assignment if we remove options arg\n */\n var _options$nonAuthedAct = options.nonAuthedActionCreator,\n nonAuthedActionCreator = _options$nonAuthedAct === undefined ? __WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__[\"N\" /* createDisplayProviderDialogAction */] : _options$nonAuthedAct;\n\n\n return function wrap(WrappedComponent) {\n var AuthenticationAware = function (_Component) {\n _inherits(AuthenticationAware, _Component);\n\n function AuthenticationAware(props) {\n _classCallCheck(this, AuthenticationAware);\n\n var _this = _possibleConstructorReturn(this, (AuthenticationAware.__proto__ || Object.getPrototypeOf(AuthenticationAware)).call(this, props));\n\n _this.providerSelect = _this.providerSelect.bind(_this);\n _this.adobePassLogout = _this.adobePassLogout.bind(_this);\n _this.newRelicTrackingOnStreamAuth = _this.newRelicTrackingOnStreamAuth.bind(_this);\n _this.newRelicTrackingOnSelectStream = _this.newRelicTrackingOnSelectStream.bind(_this);\n _this.state = {\n isPaywallRendered: false\n };\n return _this;\n }\n\n _createClass(AuthenticationAware, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(_ref) {\n var _ref$adobePass = _ref.adobePass,\n nextAdobePass = _ref$adobePass === undefined ? {} : _ref$adobePass,\n authenticationEnabled = _ref.authenticationEnabled,\n checkAuthenticationComplete = _ref.checkAuthenticationComplete,\n nextSelectedContent = _ref.selectedContent,\n nextSelectedStream = _ref.selectedStream,\n oneIdToken = _ref.oneIdToken,\n userAuth = _ref.userAuth,\n nextBamSubReady = _ref.bamSubReady;\n var _props = this.props,\n dispatch = _props.dispatch,\n _props$adobePass = _props.adobePass;\n _props$adobePass = _props$adobePass === undefined ? {} : _props$adobePass;\n var _props$adobePass$chec = _props$adobePass.checkAuthentication;\n _props$adobePass$chec = _props$adobePass$chec === undefined ? {} : _props$adobePass$chec;\n var completeTime = _props$adobePass$chec.completeTime,\n selectedContent = _props.selectedContent,\n selectedStream = _props.selectedStream,\n locationBeforeTransitions = _props.routing.locationBeforeTransitions;\n\n var _ref2 = locationBeforeTransitions || {},\n _ref2$query = _ref2.query,\n query = _ref2$query === undefined ? {} : _ref2$query,\n pathname = _ref2.pathname;\n\n var _nextAdobePass$checkA = nextAdobePass.checkAuthentication;\n _nextAdobePass$checkA = _nextAdobePass$checkA === undefined ? {} : _nextAdobePass$checkA;\n var nextCompleteTime = _nextAdobePass$checkA.completeTime;\n var status = nextSelectedContent.status;\n\n var isUpcoming = status === 'upcoming';\n\n if (Object(__WEBPACK_IMPORTED_MODULE_9__lib_util_isEmpty__[\"a\" /* default */])(nextSelectedContent)) {\n return;\n }\n\n var loginWithContentID = query.login_with_content_eventId || query.login_with_content_id;\n // logic for realoding page after OneID login triggered by Paywall(`LOGIN_REQUESTED`)\n // trigger paywall again and updateRoute if following condition is met after user is logged in\n if (loginWithContentID) {\n var authTypes = [__WEBPACK_IMPORTED_MODULE_4__enums__[\"e\" /* AuthTypes */].BAM];\n var packages = query.login_with_pkg && query.login_with_pkg.split(',');\n var streamPlaywableAfterLogin = Object(__WEBPACK_IMPORTED_MODULE_12__lib_auth_canPlayStream__[\"a\" /* default */])({ authTypes: authTypes, packages: packages }, userAuth, false);\n var cannotPlay = isUpcoming || Object(__WEBPACK_IMPORTED_MODULE_10__lib_auth_authStateKnown__[\"a\" /* default */])(userAuth) && !streamPlaywableAfterLogin;\n\n if (cannotPlay || Object(__WEBPACK_IMPORTED_MODULE_10__lib_auth_authStateKnown__[\"a\" /* default */])(userAuth) || nextBamSubReady && !userAuth.length) {\n if (!packages || !packages.length) {\n return;\n }\n\n // trigger paywall if it is upcoming event and if user\n // can't play the content after DSS sub check is complete\n if (!this.state.isPaywallRendered && (cannotPlay || nextBamSubReady && !streamPlaywableAfterLogin)) {\n var contentId = query.login_with_content_eventId || query.login_with_content_id;\n var streamId = query.login_with_id || contentId;\n var stream = streamId && { id: streamId };\n /**\n * https://espnjira.disney.com/browse/WEWEB-2501\n * Fix background image missing in paywallConfig for unpaid E+ user on login\n * pass nextSelectedContent to paywall instead of just contentId,\n * so that DSS can get the background image from paywallConfig\n */\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__[\"M\" /* createDTCPaywallAction */])({\n containerId: __WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* BAM_PAYWALL_IFRAME_ID */],\n content: nextSelectedContent,\n stream: stream\n }));\n this.setState({\n isPaywallRendered: true\n });\n }\n // trigger route change: removing login params.\n var newQuery = _extends({}, query);\n newQuery.login_with_content_eventId = undefined;\n newQuery.login_with_content_id = undefined;\n newQuery.login_with_id = undefined;\n newQuery.login_with_pkg = undefined;\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__[\"Q\" /* updateRoute */])(newQuery));\n return;\n }\n }\n\n var checkAuthenticationStateComplete = completeTime !== nextCompleteTime;\n\n /**\n * ticket: https://jira.disney.com/browse/WEWEB-2745\n * When users right click open on upcoming content on a new tab, we need to check if oneId getGuest\n * event is completed (oneIdToken not undefined). We need to pass oneId token along with auth state to DSS so that\n * they can render the paywall without sign up button on the paywall if users are entitled\n * add isPaywallRendered state check to prevent paywall rendering more than one\n */\n\n if (isUpcoming && !this.state.isPaywallRendered) {\n if (oneIdToken || checkAuthenticationStateComplete && !userAuth.length) {\n checkAuthenticationStateComplete = true;\n this.setState({\n isPaywallRendered: true\n });\n } else {\n checkAuthenticationStateComplete = false;\n }\n }\n\n var newContentSelected = selectedContent !== nextSelectedContent;\n var newStreamSelected = !newContentSelected && !Object(__WEBPACK_IMPORTED_MODULE_9__lib_util_isEmpty__[\"a\" /* default */])(nextSelectedStream) && selectedStream !== nextSelectedStream;\n var chooseTVEAuth = query.auth === 'tve';\n var eventOnHero = query.eventCalendarId && pathname.indexOf('/player') === -1;\n // if check authentication completes and a piece of content was already selected,\n // or if check authentication has completed already and user clicked on content, perform authentication\n // add loginWithContentID check to prevent rendering authentication flow again\n // because of getting entitlement deplay from DSS\n var newContentClick =\n // user clicked playable item(hero, tile, schedule link, etc), or eventCalendarId is passed on non-player page\n (!nextSelectedContent.disableAuthPrompt || chooseTVEAuth || eventOnHero) && !loginWithContentID && !Object(__WEBPACK_IMPORTED_MODULE_11__lib_auth_canPlayContent__[\"a\" /* default */])(nextSelectedContent, userAuth, false) && (checkAuthenticationStateComplete || newContentSelected && checkAuthenticationComplete);\n var newStreamFeedSelect = !Object(__WEBPACK_IMPORTED_MODULE_12__lib_auth_canPlayStream__[\"a\" /* default */])(nextSelectedStream, userAuth, false) && // no streams are playable with user's auth state\n newStreamSelected && checkAuthenticationComplete;\n\n if (authenticationEnabled && ( // authentication is enabled\n newContentClick || newStreamFeedSelect)) {\n if (newStreamFeedSelect) {\n if (Object(__WEBPACK_IMPORTED_MODULE_13__lib_auth_streamHasAuthType__[\"a\" /* default */])(nextSelectedStream, __WEBPACK_IMPORTED_MODULE_4__enums__[\"e\" /* AuthTypes */].MVPD) || Object(__WEBPACK_IMPORTED_MODULE_13__lib_auth_streamHasAuthType__[\"a\" /* default */])(nextSelectedStream, __WEBPACK_IMPORTED_MODULE_4__enums__[\"e\" /* AuthTypes */].ISP)) {\n // TVE-only content\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__[\"D\" /* createAndPerformStartAuthenticationAction */])({\n content: nextSelectedContent,\n stream: nextSelectedStream\n })).then(function (isAuthenticated) {\n if (!isAuthenticated) {\n dispatch(nonAuthedActionCreator());\n }\n });\n } else if (Object(__WEBPACK_IMPORTED_MODULE_13__lib_auth_streamHasAuthType__[\"a\" /* default */])(nextSelectedStream, __WEBPACK_IMPORTED_MODULE_4__enums__[\"e\" /* AuthTypes */].BAM)) {\n if (!this.state.isPaywallRendered) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__[\"M\" /* createDTCPaywallAction */])({\n containerId: __WEBPACK_IMPORTED_MODULE_3__constants__[\"a\" /* BAM_PAYWALL_IFRAME_ID */],\n content: nextSelectedContent,\n stream: nextSelectedStream\n }));\n }\n }\n\n return;\n }\n\n var _nextSelectedContent$ = nextSelectedContent.streams,\n streams = _nextSelectedContent$ === undefined ? [] : _nextSelectedContent$,\n _nextSelectedContent$2 = nextSelectedContent.links;\n _nextSelectedContent$2 = _nextSelectedContent$2 === undefined ? {} : _nextSelectedContent$2;\n var picker = _nextSelectedContent$2.picker;\n\n if (!streams.length) {\n return;\n }\n\n // comment out newrelic tracking until tracking is required for new stream picker\n // const newRelicTrackFields = {\n // eventId,\n // userAuth: userAuth.length ? userAuth.join('|') : userAuth,\n // action: 'MultipleStreamAuth',\n // streams: streams.length ? streams.map(item => item.id).join('|') : '',\n // streamCount: streams.length\n // };\n\n var showPicker = picker !== undefined;\n /*\n * NOTE: Handles multiple streams scenario without `id` query parameter.\n * If the `id` query parameter is defined, we match by single stream\n */\n if (showPicker && !query.id) {\n var _props2 = this.props,\n preauthorizedResources = _props2.preauthorizedResources,\n country = _props2.country,\n lang = _props2.lang,\n pickerStreams = _props2.pickerStreams;\n\n var authRes = { userAuth: userAuth, preauthorizedResources: preauthorizedResources };\n Object(__WEBPACK_IMPORTED_MODULE_14__lib_streamPicker__[\"c\" /* handleMultipleStreamAuthentication */])({\n lang: lang,\n country: country,\n nextSelectedContent: nextSelectedContent,\n dispatch: dispatch,\n showPicker: showPicker,\n pickerStreams: pickerStreams,\n authRes: authRes,\n locationBeforeTransitions: locationBeforeTransitions\n });\n // newRelicTrackFields.action = 'MultipleStreamAuth';\n } else {\n var singleStream = streams;\n if (query.id && streams.length > 1) {\n singleStream = streams.filter(function (item) {\n return item.id === query.id;\n });\n }\n var requiredAuths = __WEBPACK_IMPORTED_MODULE_2_lodash_uniq___default()(singleStream.reduce(function (acc, _ref3) {\n var authTypes = _ref3.authTypes;\n return acc.concat(authTypes);\n }, []));\n\n Object(__WEBPACK_IMPORTED_MODULE_14__lib_streamPicker__[\"d\" /* handleSingleStreamAuthentication */])({\n requiredAuths: requiredAuths,\n nextSelectedContent: nextSelectedContent,\n query: query,\n dispatch: dispatch,\n stream: singleStream[0]\n });\n // newRelicTrackFields.action = 'SingleStreamAuth';\n }\n\n // comment out newrelic tracking until tracking is required for new stream picker\n // if (isNewrelicTrackingOn) {\n // this.newRelicTrackingOnStreamAuth(newRelicTrackFields);\n // }\n }\n }\n }, {\n key: 'providerSelect',\n value: function providerSelect(provider) {\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__[\"U\" /* createSelectProviderAction */])(provider));\n }\n }, {\n key: 'adobePassLogout',\n value: function adobePassLogout() {\n var _props3 = this.props,\n selectedStream = _props3.selectedStream,\n dispatch = _props3.dispatch;\n\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__[\"C\" /* createAndPerformLogoutAction */])(selectedStream));\n }\n }, {\n key: 'newRelicTrackingOnStreamAuth',\n value: function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(data) {\n var _props4, env, device, newrelicInsertKey, newrelicAccountId, oneId, param;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _props4 = this.props, env = _props4.env, device = _props4.device, newrelicInsertKey = _props4.newrelicInsertKey, newrelicAccountId = _props4.newrelicAccountId, oneId = _props4.oneId;\n param = {\n newrelicInsertKey: newrelicInsertKey,\n newrelicAccountId: newrelicAccountId,\n trackingData: _extends({\n env: env,\n device: device\n }, data, {\n swid: oneId.swid,\n eventType: 'PlaybackFlow',\n devicePlatform: 'watchWeb'\n })\n };\n _context.next = 4;\n return Object(__WEBPACK_IMPORTED_MODULE_8__lib_api_newRelicApi__[\"a\" /* newRelicTrackEvent */])(param);\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function newRelicTrackingOnStreamAuth(_x2) {\n return _ref4.apply(this, arguments);\n }\n\n return newRelicTrackingOnStreamAuth;\n }()\n\n // we pass down this method to the child component (BroadcastPicker) via props\n\n }, {\n key: 'newRelicTrackingOnSelectStream',\n value: function () {\n var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(stream) {\n var _props5, env, device, newrelicInsertKey, newrelicAccountId, oneId, id, content, streams, param;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _props5 = this.props, env = _props5.env, device = _props5.device, newrelicInsertKey = _props5.newrelicInsertKey, newrelicAccountId = _props5.newrelicAccountId, oneId = _props5.oneId;\n id = stream.id, content = stream.content, streams = stream.streams;\n param = {\n newrelicInsertKey: newrelicInsertKey,\n newrelicAccountId: newrelicAccountId,\n trackingData: {\n env: env,\n device: device,\n eventId: content ? content.eventId : null,\n action: 'UserSelectedStream',\n streams: id,\n streamCount: streams ? streams.length : 1,\n swid: oneId.swid,\n eventType: 'PlaybackFlow',\n devicePlatform: 'watchWeb'\n }\n };\n _context2.next = 5;\n return Object(__WEBPACK_IMPORTED_MODULE_8__lib_api_newRelicApi__[\"a\" /* newRelicTrackEvent */])(param);\n\n case 5:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function newRelicTrackingOnSelectStream(_x3) {\n return _ref5.apply(this, arguments);\n }\n\n return newRelicTrackingOnSelectStream;\n }()\n }, {\n key: 'render',\n value: function render() {\n var isNewrelicTrackingOn = this.props.isNewrelicTrackingOn;\n\n var onSelectStreamTracking = isNewrelicTrackingOn ? this.newRelicTrackingOnSelectStream : null;\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(WrappedComponent, _extends({}, this.props, {\n providerSelect: this.providerSelect,\n adobePassLogout: this.adobePassLogout,\n onSelectStreamTracking: onSelectStreamTracking\n }));\n }\n }]);\n\n return AuthenticationAware;\n }(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\n AuthenticationAware.defaultProps = {\n selectedContent: {}\n };\n\n var mapStateToProps = function mapStateToProps(state) {\n var _state$app = state.app,\n env = _state$app.env,\n lang = _state$app.lang,\n country = _state$app.country,\n device = _state$app.device,\n newrelicInsertKey = _state$app.newrelicInsertKey,\n newrelicAccountId = _state$app.newrelicAccountId;\n\n return {\n env: env,\n lang: lang,\n country: country,\n device: device,\n newrelicInsertKey: newrelicInsertKey,\n newrelicAccountId: newrelicAccountId,\n adobePass: Object(__WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__[\"f\" /* adobePassSelector */])(state),\n oneIdToken: Object(__WEBPACK_IMPORTED_MODULE_20__common_selectors_oneIdSelector__[\"g\" /* oneIdTokenSelector */])(state),\n authenticationEnabled: Object(__WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__[\"h\" /* authenticationEnabledSelector */])(state),\n checkAuthenticationComplete: Object(__WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__[\"l\" /* checkAuthenticationCompleteSelector */])(state),\n selectedContent: Object(__WEBPACK_IMPORTED_MODULE_16__common_selectors_selectedContentSelector__[\"a\" /* default */])(state),\n selectedStream: Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_selectedStreamSelector__[\"a\" /* default */])(state),\n providerDialog: state.providerDialog,\n userAuth: Object(__WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__[\"r\" /* userAuthSelector */])(state),\n routing: Object(__WEBPACK_IMPORTED_MODULE_18__common_selectors_routingSelector__[\"a\" /* default */])(state),\n oneId: state.oneId,\n // isNewrelicTrackingOn: newRelicTrackingSelector(state),\n preauthorizedResources: Object(__WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__[\"o\" /* preauthorizedResourcesSelector */])(state),\n pickerStreams: Object(__WEBPACK_IMPORTED_MODULE_19__common_selectors_pickerStreamsSelector__[\"a\" /* default */])(state),\n bamSubReady: Object(__WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__[\"k\" /* bamSubReadySelector */])(state)\n };\n };\n\n return Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(AuthenticationAware);\n };\n}\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar objectAssign = __webpack_require__(15);\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = __webpack_require__(157);\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar canDefineProperty = false;\nif (false) {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactPropTypeLocationNames = {};\n\nif (false) {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar invariant = __webpack_require__(5);\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? false ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(31);\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = __webpack_require__(65);\n\nvar invariant = __webpack_require__(5);\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? false ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(31);\nvar escapeTextContentForBrowser = __webpack_require__(122);\nvar setInnerHTML = __webpack_require__(121);\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(82);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactInstrumentation = __webpack_require__(38);\n\nvar quoteAttributeValueForBrowser = __webpack_require__(426);\nvar warning = __webpack_require__(6);\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n false ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (false) {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (false) {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar LinkedValueUtils = __webpack_require__(169);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactUpdates = __webpack_require__(40);\n\nvar warning = __webpack_require__(6);\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n false ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n false ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n false ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (false) {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n false ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7),\n _assign = __webpack_require__(15);\n\nvar ReactCompositeComponent = __webpack_require__(435);\nvar ReactEmptyComponent = __webpack_require__(245);\nvar ReactHostComponent = __webpack_require__(246);\n\nvar getNextDebugID = __webpack_require__(436);\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (false) {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + 'it\\'s defined in.';\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n true ? false ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n true ? false ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (false) {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (false) {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\nmodule.exports = instantiateReactComponent;\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar React = __webpack_require__(78);\n\nvar invariant = __webpack_require__(5);\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n true ? false ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar invariant = __webpack_require__(5);\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? false ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar ReactCurrentOwner = __webpack_require__(49);\nvar REACT_ELEMENT_TYPE = __webpack_require__(437);\n\nvar getIteratorFn = __webpack_require__(438);\nvar invariant = __webpack_require__(5);\nvar KeyEscapeUtils = __webpack_require__(173);\nvar warning = __webpack_require__(6);\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (false) {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (false) {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(79);\n\nvar ReactCurrentOwner = __webpack_require__(49);\n\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty)\n // Strip regex characters so we can use it for regex\n .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n // Remove hasOwnProperty from the template to make it generic\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n false ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? false ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? false ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? false ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? false ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\nvar emptyFunction = __webpack_require__(37);\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (false) {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMSelection = __webpack_require__(450);\n\nvar containsNode = __webpack_require__(452);\nvar focusNode = __webpack_require__(239);\nvar getActiveElement = __webpack_require__(251);\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n/***/ }),\n/* 251 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n/***/ }),\n/* 252 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar DOMLazyTree = __webpack_require__(84);\nvar DOMProperty = __webpack_require__(82);\nvar React = __webpack_require__(78);\nvar ReactBrowserEventEmitter = __webpack_require__(123);\nvar ReactCurrentOwner = __webpack_require__(49);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactDOMContainerInfo = __webpack_require__(467);\nvar ReactDOMFeatureFlags = __webpack_require__(468);\nvar ReactFeatureFlags = __webpack_require__(235);\nvar ReactInstanceMap = __webpack_require__(104);\nvar ReactInstrumentation = __webpack_require__(38);\nvar ReactMarkupChecksum = __webpack_require__(469);\nvar ReactReconciler = __webpack_require__(83);\nvar ReactUpdateQueue = __webpack_require__(174);\nvar ReactUpdates = __webpack_require__(40);\n\nvar emptyObject = __webpack_require__(100);\nvar instantiateReactComponent = __webpack_require__(243);\nvar invariant = __webpack_require__(5);\nvar setInnerHTML = __webpack_require__(121);\nvar shouldUpdateReactComponent = __webpack_require__(172);\nvar warning = __webpack_require__(6);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (false) {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (false) {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (false) {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n false ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? false ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? false ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? false ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n false ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n false ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? false ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? false ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (false) {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (false) {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 253 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactNodeTypes = __webpack_require__(244);\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n/***/ }),\n/* 254 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export default */\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 255 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = __webpack_require__(67);\n\nvar _PathUtils = __webpack_require__(68);\n\nvar _ExecutionEnvironment = __webpack_require__(125);\n\nvar _DOMUtils = __webpack_require__(182);\n\nvar _DOMStateStorage = __webpack_require__(183);\n\nvar _createDOMHistory = __webpack_require__(256);\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\nfunction isAbsolutePath(path) {\n return typeof path === 'string' && path.charAt(0) === '/';\n}\n\nfunction ensureSlash() {\n var path = _DOMUtils.getHashPath();\n\n if (isAbsolutePath(path)) return true;\n\n _DOMUtils.replaceHashPath('/' + path);\n\n return false;\n}\n\nfunction addQueryStringValueToPath(path, key, value) {\n return path + (path.indexOf('?') === -1 ? '?' : '&') + (key + '=' + value);\n}\n\nfunction stripQueryStringValueFromPath(path, key) {\n return path.replace(new RegExp('[?&]?' + key + '=[a-zA-Z0-9]+'), '');\n}\n\nfunction getQueryStringValueFromPath(path, key) {\n var match = path.match(new RegExp('\\\\?.*?\\\\b' + key + '=(.+?)\\\\b'));\n return match && match[1];\n}\n\nvar DefaultQueryKey = '_k';\n\nfunction createHashHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n !_ExecutionEnvironment.canUseDOM ? false ? _invariant2['default'](false, 'Hash history needs a DOM') : _invariant2['default'](false) : undefined;\n\n var queryKey = options.queryKey;\n\n if (queryKey === undefined || !!queryKey) queryKey = typeof queryKey === 'string' ? queryKey : DefaultQueryKey;\n\n function getCurrentLocation() {\n var path = _DOMUtils.getHashPath();\n\n var key = undefined,\n state = undefined;\n if (queryKey) {\n key = getQueryStringValueFromPath(path, queryKey);\n path = stripQueryStringValueFromPath(path, queryKey);\n\n if (key) {\n state = _DOMStateStorage.readState(key);\n } else {\n state = null;\n key = history.createKey();\n _DOMUtils.replaceHashPath(addQueryStringValueToPath(path, queryKey, key));\n }\n } else {\n key = state = null;\n }\n\n var location = _PathUtils.parsePath(path);\n\n return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n }\n\n function startHashChangeListener(_ref) {\n var transitionTo = _ref.transitionTo;\n\n function hashChangeListener() {\n if (!ensureSlash()) return; // Always make sure hashes are preceeded with a /.\n\n transitionTo(getCurrentLocation());\n }\n\n ensureSlash();\n _DOMUtils.addEventListener(window, 'hashchange', hashChangeListener);\n\n return function () {\n _DOMUtils.removeEventListener(window, 'hashchange', hashChangeListener);\n };\n }\n\n function finishTransition(location) {\n var basename = location.basename;\n var pathname = location.pathname;\n var search = location.search;\n var state = location.state;\n var action = location.action;\n var key = location.key;\n\n if (action === _Actions.POP) return; // Nothing to do.\n\n var path = (basename || '') + pathname + search;\n\n if (queryKey) {\n path = addQueryStringValueToPath(path, queryKey, key);\n _DOMStateStorage.saveState(key, state);\n } else {\n // Drop key and state.\n location.key = location.state = null;\n }\n\n var currentHash = _DOMUtils.getHashPath();\n\n if (action === _Actions.PUSH) {\n if (currentHash !== path) {\n window.location.hash = path;\n } else {\n false ? _warning2['default'](false, 'You cannot PUSH the same path using hash history') : undefined;\n }\n } else if (currentHash !== path) {\n // REPLACE\n _DOMUtils.replaceHashPath(path);\n }\n }\n\n var history = _createDOMHistory2['default'](_extends({}, options, {\n getCurrentLocation: getCurrentLocation,\n finishTransition: finishTransition,\n saveState: _DOMStateStorage.saveState\n }));\n\n var listenerCount = 0,\n stopHashChangeListener = undefined;\n\n function listenBefore(listener) {\n if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n var unlisten = history.listenBefore(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopHashChangeListener();\n };\n }\n\n function listen(listener) {\n if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n var unlisten = history.listen(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopHashChangeListener();\n };\n }\n\n function push(location) {\n false ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n history.push(location);\n }\n\n function replace(location) {\n false ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n history.replace(location);\n }\n\n var goIsSupportedWithoutReload = _DOMUtils.supportsGoWithoutReloadUsingHash();\n\n function go(n) {\n false ? _warning2['default'](goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : undefined;\n\n history.go(n);\n }\n\n function createHref(path) {\n return '#' + history.createHref(path);\n }\n\n // deprecated\n function registerTransitionHook(hook) {\n if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n history.registerTransitionHook(hook);\n }\n\n // deprecated\n function unregisterTransitionHook(hook) {\n history.unregisterTransitionHook(hook);\n\n if (--listenerCount === 0) stopHashChangeListener();\n }\n\n // deprecated\n function pushState(state, path) {\n false ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n history.pushState(state, path);\n }\n\n // deprecated\n function replaceState(state, path) {\n false ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n history.replaceState(state, path);\n }\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n go: go,\n createHref: createHref,\n\n registerTransitionHook: registerTransitionHook, // deprecated - warning is in createHistory\n unregisterTransitionHook: unregisterTransitionHook, // deprecated - warning is in createHistory\n pushState: pushState, // deprecated - warning is in createHistory\n replaceState: replaceState // deprecated - warning is in createHistory\n });\n}\n\nexports['default'] = createHashHistory;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 256 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = __webpack_require__(125);\n\nvar _DOMUtils = __webpack_require__(182);\n\nvar _createHistory = __webpack_require__(257);\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createDOMHistory(options) {\n var history = _createHistory2['default'](_extends({\n getUserConfirmation: _DOMUtils.getUserConfirmation\n }, options, {\n go: _DOMUtils.go\n }));\n\n function listen(listener) {\n !_ExecutionEnvironment.canUseDOM ? false ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined;\n\n return history.listen(listener);\n }\n\n return _extends({}, history, {\n listen: listen\n });\n}\n\nexports['default'] = createDOMHistory;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _deepEqual = __webpack_require__(484);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _PathUtils = __webpack_require__(68);\n\nvar _AsyncUtils = __webpack_require__(495);\n\nvar _Actions = __webpack_require__(67);\n\nvar _createLocation2 = __webpack_require__(496);\n\nvar _createLocation3 = _interopRequireDefault(_createLocation2);\n\nvar _runTransitionHook = __webpack_require__(185);\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _deprecate = __webpack_require__(186);\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction createRandomKey(length) {\n return Math.random().toString(36).substr(2, length);\n}\n\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search &&\n //a.action === b.action && // Different action !== location change.\n a.key === b.key && _deepEqual2['default'](a.state, b.state);\n}\n\nvar DefaultKeyLength = 6;\n\nfunction createHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var getCurrentLocation = options.getCurrentLocation;\n var finishTransition = options.finishTransition;\n var saveState = options.saveState;\n var go = options.go;\n var getUserConfirmation = options.getUserConfirmation;\n var keyLength = options.keyLength;\n\n if (typeof keyLength !== 'number') keyLength = DefaultKeyLength;\n\n var transitionHooks = [];\n\n function listenBefore(hook) {\n transitionHooks.push(hook);\n\n return function () {\n transitionHooks = transitionHooks.filter(function (item) {\n return item !== hook;\n });\n };\n }\n\n var allKeys = [];\n var changeListeners = [];\n var location = undefined;\n\n function getCurrent() {\n if (pendingLocation && pendingLocation.action === _Actions.POP) {\n return allKeys.indexOf(pendingLocation.key);\n } else if (location) {\n return allKeys.indexOf(location.key);\n } else {\n return -1;\n }\n }\n\n function updateLocation(newLocation) {\n var current = getCurrent();\n\n location = newLocation;\n\n if (location.action === _Actions.PUSH) {\n allKeys = [].concat(allKeys.slice(0, current + 1), [location.key]);\n } else if (location.action === _Actions.REPLACE) {\n allKeys[current] = location.key;\n }\n\n changeListeners.forEach(function (listener) {\n listener(location);\n });\n }\n\n function listen(listener) {\n changeListeners.push(listener);\n\n if (location) {\n listener(location);\n } else {\n var _location = getCurrentLocation();\n allKeys = [_location.key];\n updateLocation(_location);\n }\n\n return function () {\n changeListeners = changeListeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function confirmTransitionTo(location, callback) {\n _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) {\n _runTransitionHook2['default'](transitionHooks[index], location, function (result) {\n if (result != null) {\n done(result);\n } else {\n next();\n }\n });\n }, function (message) {\n if (getUserConfirmation && typeof message === 'string') {\n getUserConfirmation(message, function (ok) {\n callback(ok !== false);\n });\n } else {\n callback(message !== false);\n }\n });\n }\n\n var pendingLocation = undefined;\n\n function transitionTo(nextLocation) {\n if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do.\n\n pendingLocation = nextLocation;\n\n confirmTransitionTo(nextLocation, function (ok) {\n if (pendingLocation !== nextLocation) return; // Transition was interrupted.\n\n if (ok) {\n // treat PUSH to current path like REPLACE to be consistent with browsers\n if (nextLocation.action === _Actions.PUSH) {\n var prevPath = createPath(location);\n var nextPath = createPath(nextLocation);\n\n if (nextPath === prevPath && _deepEqual2['default'](location.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;\n }\n\n if (finishTransition(nextLocation) !== false) updateLocation(nextLocation);\n } else if (location && nextLocation.action === _Actions.POP) {\n var prevIndex = allKeys.indexOf(location.key);\n var nextIndex = allKeys.indexOf(nextLocation.key);\n\n if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL.\n }\n });\n }\n\n function push(location) {\n transitionTo(createLocation(location, _Actions.PUSH, createKey()));\n }\n\n function replace(location) {\n transitionTo(createLocation(location, _Actions.REPLACE, createKey()));\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function createKey() {\n return createRandomKey(keyLength);\n }\n\n function createPath(location) {\n if (location == null || typeof location === 'string') return location;\n\n var pathname = location.pathname;\n var search = location.search;\n var hash = location.hash;\n\n var result = pathname;\n\n if (search) result += search;\n\n if (hash) result += hash;\n\n return result;\n }\n\n function createHref(location) {\n return createPath(location);\n }\n\n function createLocation(location, action) {\n var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n\n if (typeof action === 'object') {\n false ? _warning2['default'](false, 'The state (2nd) argument to history.createLocation is deprecated; use a ' + 'location descriptor instead') : undefined;\n\n if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n location = _extends({}, location, { state: action });\n\n action = key;\n key = arguments[3] || createKey();\n }\n\n return _createLocation3['default'](location, action, key);\n }\n\n // deprecated\n function setState(state) {\n if (location) {\n updateLocationState(location, state);\n updateLocation(location);\n } else {\n updateLocationState(getCurrentLocation(), state);\n }\n }\n\n function updateLocationState(location, state) {\n location.state = _extends({}, location.state, state);\n saveState(location.key, location.state);\n }\n\n // deprecated\n function registerTransitionHook(hook) {\n if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook);\n }\n\n // deprecated\n function unregisterTransitionHook(hook) {\n transitionHooks = transitionHooks.filter(function (item) {\n return item !== hook;\n });\n }\n\n // deprecated\n function pushState(state, path) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n push(_extends({ state: state }, path));\n }\n\n // deprecated\n function replaceState(state, path) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n replace(_extends({ state: state }, path));\n }\n\n return {\n listenBefore: listenBefore,\n listen: listen,\n transitionTo: transitionTo,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n createKey: createKey,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation,\n\n setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'),\n registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'),\n unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'),\n pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n };\n}\n\nexports['default'] = createHistory;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar slice = Array.prototype.slice;\nvar isArgs = __webpack_require__(259);\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(485);\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar toObject = Object;\nvar TypeErr = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== toObject(this)) {\n\t\tthrow new TypeErr('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(260);\n\nvar supportsDescriptors = __webpack_require__(184).supportsDescriptors;\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar TypeErr = TypeError;\n\nmodule.exports = function getPolyfill() {\n\tif (!supportsDescriptors) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tif (/a/mig.flags === 'gim') {\n\t\tvar descriptor = gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = makeStateWithLocation;\n\nvar _deprecateObjectProperties = __webpack_require__(124);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction makeStateWithLocation(state, location) {\n if (false) {\n var stateWithLocation = _extends({}, state);\n\n // I don't use deprecateObjectProperties here because I want to keep the\n // same code path between development and production, in that we just\n // assign extra properties to the copy of the state object in both cases.\n\n var _loop = function _loop(prop) {\n if (!Object.prototype.hasOwnProperty.call(location, prop)) {\n return 'continue';\n }\n\n Object.defineProperty(stateWithLocation, prop, {\n get: function get() {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'Accessing location properties directly from the first argument to `getComponent`, `getComponents`, `getChildRoutes`, and `getIndexRoute` is deprecated. That argument is now the router state (`nextState` or `partialNextState`) rather than the location. To access the location, use `nextState.location` or `partialNextState.location`.') : void 0;\n return location[prop];\n }\n });\n };\n\n for (var prop in location) {\n var _ret = _loop(prop);\n\n if (_ret === 'continue') continue;\n }\n\n return stateWithLocation;\n }\n\n return _extends({}, state, location);\n}\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.createRouterObject = createRouterObject;\nexports.createRoutingHistory = createRoutingHistory;\n\nvar _deprecateObjectProperties = __webpack_require__(124);\n\nvar _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createRouterObject(history, transitionManager) {\n return _extends({}, history, {\n setRouteLeaveHook: transitionManager.listenBeforeLeavingRoute,\n isActive: transitionManager.isActive\n });\n}\n\n// deprecated\nfunction createRoutingHistory(history, transitionManager) {\n history = _extends({}, history, transitionManager);\n\n if (false) {\n history = (0, _deprecateObjectProperties2.default)(history, '`props.history` and `context.history` are deprecated. Please use `context.router`. http://tiny.cc/router-contextchanges');\n }\n\n return history;\n}\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _PropTypes = __webpack_require__(181);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar bool = _React$PropTypes.bool;\nvar object = _React$PropTypes.object;\nvar string = _React$PropTypes.string;\nvar func = _React$PropTypes.func;\nvar oneOfType = _React$PropTypes.oneOfType;\n\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n// TODO: De-duplicate against hasAnyProperties in createTransitionManager.\nfunction isEmptyObject(object) {\n for (var p in object) {\n if (Object.prototype.hasOwnProperty.call(object, p)) return false;\n }return true;\n}\n\nfunction createLocationDescriptor(to, _ref) {\n var query = _ref.query;\n var hash = _ref.hash;\n var state = _ref.state;\n\n if (query || hash || state) {\n return { pathname: to, query: query, hash: hash, state: state };\n }\n\n return to;\n}\n\n/**\n * A <Link> is used to create an <a> element that links to a route.\n * When that route is active, the link gets the value of its\n * activeClassName prop.\n *\n * For example, assuming you have the following route:\n *\n * <Route path=\"/posts/:postID\" component={Post} />\n *\n * You could use the following component to link to that route:\n *\n * <Link to={`/posts/${post.id}`} />\n *\n * Links may pass along location state and/or query string parameters\n * in the state/query props, respectively.\n *\n * <Link ... query={{ show: true }} state={{ the: 'state' }} />\n */\nvar Link = _react2.default.createClass({\n displayName: 'Link',\n\n\n contextTypes: {\n router: _PropTypes.routerShape\n },\n\n propTypes: {\n to: oneOfType([string, object]),\n query: object,\n hash: string,\n state: object,\n activeStyle: object,\n activeClassName: string,\n onlyActiveOnIndex: bool.isRequired,\n onClick: func,\n target: string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onlyActiveOnIndex: false,\n style: {}\n };\n },\n handleClick: function handleClick(event) {\n if (this.props.onClick) this.props.onClick(event);\n\n if (event.defaultPrevented) return;\n\n !this.context.router ? false ? (0, _invariant2.default)(false, '<Link>s rendered outside of a router context cannot navigate.') : (0, _invariant2.default)(false) : void 0;\n\n if (isModifiedEvent(event) || !isLeftClickEvent(event)) return;\n\n // If target prop is set (e.g. to \"_blank\"), let browser handle link.\n /* istanbul ignore if: untestable with Karma */\n if (this.props.target) return;\n\n event.preventDefault();\n\n var _props = this.props;\n var to = _props.to;\n var query = _props.query;\n var hash = _props.hash;\n var state = _props.state;\n\n var location = createLocationDescriptor(to, { query: query, hash: hash, state: state });\n\n this.context.router.push(location);\n },\n render: function render() {\n var _props2 = this.props;\n var to = _props2.to;\n var query = _props2.query;\n var hash = _props2.hash;\n var state = _props2.state;\n var activeClassName = _props2.activeClassName;\n var activeStyle = _props2.activeStyle;\n var onlyActiveOnIndex = _props2.onlyActiveOnIndex;\n\n var props = _objectWithoutProperties(_props2, ['to', 'query', 'hash', 'state', 'activeClassName', 'activeStyle', 'onlyActiveOnIndex']);\n\n false ? (0, _routerWarning2.default)(!(query || hash || state), 'the `query`, `hash`, and `state` props on `<Link>` are deprecated, use `<Link to={{ pathname, query, hash, state }}/>. http://tiny.cc/router-isActivedeprecated') : void 0;\n\n // Ignore if rendered outside the context of router, simplifies unit testing.\n var router = this.context.router;\n\n\n if (router) {\n // If user does not specify a `to` prop, return an empty anchor tag.\n if (to == null) {\n return _react2.default.createElement('a', props);\n }\n\n var location = createLocationDescriptor(to, { query: query, hash: hash, state: state });\n props.href = router.createHref(location);\n\n if (activeClassName || activeStyle != null && !isEmptyObject(activeStyle)) {\n if (router.isActive(location, onlyActiveOnIndex)) {\n if (activeClassName) {\n if (props.className) {\n props.className += ' ' + activeClassName;\n } else {\n props.className = activeClassName;\n }\n }\n\n if (activeStyle) props.style = _extends({}, props.style, activeStyle);\n }\n }\n }\n\n return _react2.default.createElement('a', _extends({}, props, { onClick: this.handleClick }));\n }\n});\n\nexports.default = Link;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = __webpack_require__(58);\n\nvar _PatternUtils = __webpack_require__(86);\n\nvar _InternalPropTypes = __webpack_require__(66);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar string = _React$PropTypes.string;\nvar object = _React$PropTypes.object;\n\n/**\n * A <Redirect> is used to declare another URL path a client should\n * be sent to when they request a given URL.\n *\n * Redirects are placed alongside routes in the route configuration\n * and are traversed in the same manner.\n */\n\nvar Redirect = _react2.default.createClass({\n displayName: 'Redirect',\n\n\n statics: {\n createRouteFromReactElement: function createRouteFromReactElement(element) {\n var route = (0, _RouteUtils.createRouteFromReactElement)(element);\n\n if (route.from) route.path = route.from;\n\n route.onEnter = function (nextState, replace) {\n var location = nextState.location;\n var params = nextState.params;\n\n\n var pathname = void 0;\n if (route.to.charAt(0) === '/') {\n pathname = (0, _PatternUtils.formatPattern)(route.to, params);\n } else if (!route.to) {\n pathname = location.pathname;\n } else {\n var routeIndex = nextState.routes.indexOf(route);\n var parentPattern = Redirect.getRoutePattern(nextState.routes, routeIndex - 1);\n var pattern = parentPattern.replace(/\\/*$/, '/') + route.to;\n pathname = (0, _PatternUtils.formatPattern)(pattern, params);\n }\n\n replace({\n pathname: pathname,\n query: route.query || location.query,\n state: route.state || location.state\n });\n };\n\n return route;\n },\n getRoutePattern: function getRoutePattern(routes, routeIndex) {\n var parentPattern = '';\n\n for (var i = routeIndex; i >= 0; i--) {\n var route = routes[i];\n var pattern = route.path || '';\n\n parentPattern = pattern.replace(/\\/*$/, '/') + parentPattern;\n\n if (pattern.indexOf('/') === 0) break;\n }\n\n return '/' + parentPattern;\n }\n },\n\n propTypes: {\n path: string,\n from: string, // Alias for path\n to: string.isRequired,\n query: object,\n state: object,\n onEnter: _InternalPropTypes.falsy,\n children: _InternalPropTypes.falsy\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n true ? false ? (0, _invariant2.default)(false, '<Redirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = Redirect;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = createMemoryHistory;\n\nvar _useQueries = __webpack_require__(126);\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _useBasename = __webpack_require__(267);\n\nvar _useBasename2 = _interopRequireDefault(_useBasename);\n\nvar _createMemoryHistory = __webpack_require__(516);\n\nvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createMemoryHistory(options) {\n // signatures and type checking differ between `useRoutes` and\n // `createMemoryHistory`, have to create `memoryHistory` first because\n // `useQueries` doesn't understand the signature\n var memoryHistory = (0, _createMemoryHistory2.default)(options);\n var createHistory = function createHistory() {\n return memoryHistory;\n };\n var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n history.__v2_compatible__ = true;\n return history;\n}\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _ExecutionEnvironment = __webpack_require__(125);\n\nvar _PathUtils = __webpack_require__(68);\n\nvar _runTransitionHook = __webpack_require__(185);\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _deprecate = __webpack_require__(186);\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction useBasename(createHistory) {\n return function () {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var history = createHistory(options);\n\n var basename = options.basename;\n\n var checkedBaseHref = false;\n\n function checkBaseHref() {\n if (checkedBaseHref) {\n return;\n }\n\n // Automatically use the value of <base href> in HTML\n // documents as basename if it's not explicitly given.\n if (basename == null && _ExecutionEnvironment.canUseDOM) {\n var base = document.getElementsByTagName('base')[0];\n var baseHref = base && base.getAttribute('href');\n\n if (baseHref != null) {\n basename = baseHref;\n\n false ? _warning2['default'](false, 'Automatically setting basename using <base href> is deprecated and will ' + 'be removed in the next major release. The semantics of <base href> are ' + 'subtly different from basename. Please pass the basename explicitly in ' + 'the options to createHistory') : undefined;\n }\n }\n\n checkedBaseHref = true;\n }\n\n function addBasename(location) {\n checkBaseHref();\n\n if (basename && location.basename == null) {\n if (location.pathname.indexOf(basename) === 0) {\n location.pathname = location.pathname.substring(basename.length);\n location.basename = basename;\n\n if (location.pathname === '') location.pathname = '/';\n } else {\n location.basename = '';\n }\n }\n\n return location;\n }\n\n function prependBasename(location) {\n checkBaseHref();\n\n if (!basename) return location;\n\n if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n var pname = location.pathname;\n var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';\n var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;\n var pathname = normalizedBasename + normalizedPathname;\n\n return _extends({}, location, {\n pathname: pathname\n });\n }\n\n // Override all read methods with basename-aware versions.\n function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n _runTransitionHook2['default'](hook, addBasename(location), callback);\n });\n }\n\n function listen(listener) {\n return history.listen(function (location) {\n listener(addBasename(location));\n });\n }\n\n // Override all write methods with basename-aware versions.\n function push(location) {\n history.push(prependBasename(location));\n }\n\n function replace(location) {\n history.replace(prependBasename(location));\n }\n\n function createPath(location) {\n return history.createPath(prependBasename(location));\n }\n\n function createHref(location) {\n return history.createHref(prependBasename(location));\n }\n\n function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));\n }\n\n // deprecated\n function pushState(state, path) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n push(_extends({ state: state }, path));\n }\n\n // deprecated\n function replaceState(state, path) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n replace(_extends({ state: state }, path));\n }\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation,\n\n pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n });\n };\n}\n\nexports['default'] = useBasename;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = useRouterHistory;\n\nvar _useQueries = __webpack_require__(126);\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _useBasename = __webpack_require__(267);\n\nvar _useBasename2 = _interopRequireDefault(_useBasename);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction useRouterHistory(createHistory) {\n return function (options) {\n var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n history.__v2_compatible__ = true;\n return history;\n };\n}\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nexports.default = function (createHistory) {\n var history = void 0;\n if (canUseDOM) history = (0, _useRouterHistory2.default)(createHistory)();\n return history;\n};\n\nvar _useRouterHistory = __webpack_require__(268);\n\nvar _useRouterHistory2 = _interopRequireDefault(_useRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n};\n\n/***/ }),\n/* 271 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export getVideoTypeFromContent */\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = getVideoTypeFromStream;\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = getOmniturePageName;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = getOmniturePageData;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getOmnitureAuthData;\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = getOmnitureUserTrackingData;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = getOmnitureEntitlementsData;\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = getOmnitureQuery;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__auth_getAccessMethodFromAuthTypes__ = __webpack_require__(190);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n/**\n * Utility functions to format tracking data\n */\n\nfunction isCollectionsPage(_ref) {\n var _ref$id = _ref.id,\n pageId = _ref$id === undefined ? '' : _ref$id,\n _ref$name = _ref.name,\n pageName = _ref$name === undefined ? '' : _ref$name;\n\n return pageId !== 'espnplus' && pageId !== pageName.toLowerCase();\n}\n\nfunction getVideoTypeFromContent() {\n var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (content.status) {\n // if the status of the event is over, it's linear, and the previous event was selected, so actually live\n if (content.status === __WEBPACK_IMPORTED_MODULE_0__enums__[\"n\" /* ContentStatus */].OVER) {\n return __WEBPACK_IMPORTED_MODULE_0__enums__[\"n\" /* ContentStatus */].LIVE;\n }\n return content.status;\n }\n return __WEBPACK_IMPORTED_MODULE_0__enums__[\"o\" /* ContentType */].VOD;\n}\n\nfunction getVideoTypeFromStream() {\n var stream = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (stream.status) {\n // if the status of the event is over, it's linear, and the previous event was selected, so actually live\n if (stream.status === __WEBPACK_IMPORTED_MODULE_0__enums__[\"n\" /* ContentStatus */].OVER) {\n return __WEBPACK_IMPORTED_MODULE_0__enums__[\"n\" /* ContentStatus */].LIVE;\n }\n return stream.status;\n }\n return __WEBPACK_IMPORTED_MODULE_0__enums__[\"o\" /* ContentType */].VOD;\n}\n\nfunction getOmniturePageName(page) {\n var _page$id = page.id,\n pageId = _page$id === undefined ? '' : _page$id,\n _page$name = page.name,\n pageName = _page$name === undefined ? '' : _page$name;\n\n var formattedPageName = pageName.toLowerCase();\n var formattedPageId = pageId.toLowerCase();\n return !isCollectionsPage(page) ? formattedPageId : formattedPageId + ':' + formattedPageName;\n}\n\nfunction getOmniturePageData(page) {\n var _page$name2 = page.name,\n pageName = _page$name2 === undefined ? '' : _page$name2;\n\n var formattedPageName = pageName.toLowerCase();\n\n var omniturePageName = getOmniturePageName(page);\n // if collections page, add prop35\n var collectionsPageData = {};\n if (isCollectionsPage(page)) {\n collectionsPageData.prop35 = formattedPageName;\n }\n\n var pageData = {\n pageName: omniturePageName,\n sections: omniturePageName,\n section: omniturePageName,\n // only the schedule page has a different contentType... just do as we're told\n contentType: formattedPageName === 'schedule' ? 'schedule' : 'index'\n };\n\n return _extends({}, pageData, collectionsPageData);\n}\n\nfunction getOmnitureAuthData() {\n var userAuth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var provider = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var isDomestic = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var authenticated = userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].MVPD) !== -1 || userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].ISP) !== -1;\n var authenticationStatus = Object(__WEBPACK_IMPORTED_MODULE_1__auth_getAccessMethodFromAuthTypes__[\"a\" /* default */])(userAuth);\n var pathname = window && window.location && window.location.pathname;\n var notOnSyndicatedPlayerPage = pathname.indexOf('/syndicated/player') === -1;\n var providerName = 'not authenticated';\n var providerPackageName = 'not authenticated';\n\n if (authenticated === true) {\n // Only assign once authenticated and the `provider` object contains the `name` property\n if (provider.name) {\n providerName = provider.name;\n }\n\n // NOTE: Domestic Providers use the `abbreviation` property, it should never be `unavailable`\n if (isDomestic) {\n if (provider.abbreviation) {\n providerPackageName = provider.abbreviation;\n }\n } else {\n var _provider$package = provider.package,\n providerPackage = _provider$package === undefined ? {} : _provider$package;\n // NOTE: The only instance `providerPackageName` will be `unavailable` is if there is no match found\n // via a mismatch with the `consumerKey` property in the packages array and the Adobe `packageId`.\n // See: `authenticationActions.js - createSmartAdobePassInitializeAction` function.\n\n providerPackageName = providerPackage.packageName || providerPackage.name || 'unavailable';\n }\n }\n\n var authnData = {\n eVar17: providerName,\n prop42: providerName,\n prop43: providerPackageName,\n eVar68: authenticationStatus\n };\n\n if (notOnSyndicatedPlayerPage) {\n authnData.eVar32 = providerPackageName;\n }\n\n return authnData;\n}\n\nfunction getOmnitureUserTrackingData(isLoggedIn, userTracking) {\n var _ref2 = userTracking || {},\n _ref2$sessionId = _ref2.sessionId,\n sessionId = _ref2$sessionId === undefined ? 'No Device ID' : _ref2$sessionId,\n _ref2$deviceId = _ref2.deviceId,\n deviceId = _ref2$deviceId === undefined ? 'No Session ID' : _ref2$deviceId,\n _ref2$accountId = _ref2.accountId,\n accountId = _ref2$accountId === undefined ? 'No Account ID' : _ref2$accountId;\n\n var eVar102 = '';\n if (isLoggedIn) {\n eVar102 = deviceId + ',' + sessionId + ',' + accountId;\n } else {\n eVar102 = deviceId + ',' + sessionId;\n }\n return eVar102;\n}\n\nfunction getOmnitureEntitlementsData(payload) {\n var _ref3 = payload || {},\n purchaseMethod = _ref3.purchaseMethod,\n subscriberType = _ref3.subscriberType,\n entitlements = _ref3.entitlements,\n oneIdLoggedIn = _ref3.oneIdLoggedIn,\n userTracking = _ref3.userTracking,\n hasSupderSundle = _ref3.hasSupderSundle;\n // get eVar102 user tracking string\n\n\n var eVar102 = getOmnitureUserTrackingData(oneIdLoggedIn, userTracking);\n if (!entitlements) {\n return {\n eVar102: eVar102\n };\n }\n\n var eVar104 = hasSupderSundle ? 'Yes' : 'No';\n var data = {\n eVar104: eVar104,\n eVar102: eVar102,\n eVar87: subscriberType,\n list1: entitlements,\n list2: purchaseMethod\n };\n return data;\n}\n\nfunction getOmnitureQuery() {\n var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var omnitureQuery = Object.keys(query).filter(function (key) {\n return key.indexOf('om-') === 0;\n }).reduce(function (acc, key) {\n acc[key] = query[key];\n return acc;\n }, {});\n\n return omnitureQuery;\n}\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.routerReducer = routerReducer;\n/**\n * This action type will be dispatched when your history\n * receives a location change.\n */\nvar LOCATION_CHANGE = exports.LOCATION_CHANGE = '@@router/LOCATION_CHANGE';\n\nvar initialState = {\n locationBeforeTransitions: null\n};\n\n/**\n * This reducer will update the state with the most recent location history\n * has transitioned to. This may not be in sync with the router, particularly\n * if you have asynchronously-loaded routes, so reading from and relying on\n * this state is discouraged.\n */\nfunction routerReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n type = _ref.type,\n payload = _ref.payload;\n\n if (type === LOCATION_CHANGE) {\n return _extends({}, state, { locationBeforeTransitions: payload });\n }\n\n return state;\n}\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * This action type will be dispatched by the history actions below.\n * If you're writing a middleware to watch for navigation events, be sure to\n * look for actions of this type.\n */\nvar CALL_HISTORY_METHOD = exports.CALL_HISTORY_METHOD = '@@router/CALL_HISTORY_METHOD';\n\nfunction updateLocation(method) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return {\n type: CALL_HISTORY_METHOD,\n payload: { method: method, args: args }\n };\n };\n}\n\n/**\n * These actions correspond to the history API.\n * The associated routerMiddleware will capture these events before they get to\n * your reducer and reissue them as the matching function on your history.\n */\nvar push = exports.push = updateLocation('push');\nvar replace = exports.replace = updateLocation('replace');\nvar go = exports.go = updateLocation('go');\nvar goBack = exports.goBack = updateLocation('goBack');\nvar goForward = exports.goForward = updateLocation('goForward');\n\nvar routerActions = exports.routerActions = { push: push, replace: replace, go: go, goBack: goBack, goForward: goForward };\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// From https://gist.github.com/epeli/11209665\n\nvar Promise = __webpack_require__(11);\n\n// So you can `var request = require(\"superagent-bluebird-promise\")`\nvar superagent = module.exports = __webpack_require__(192);\nvar Request = superagent.Request;\n\nPromise.config({\n // Enable cancellation.\n cancellation: true\n});\n// Create custom error type.\n// Create a new object, that prototypally inherits from the Error constructor.\nvar SuperagentPromiseError = function(message, originalError) {\n var stack;\n this.message = message;\n this.name = 'SuperagentPromiseError';\n this.originalError = originalError;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n stack = this.stack;\n }\n else {\n stack = (new Error(message)).stack;\n }\n\n if (Object.defineProperty) {\n Object.defineProperty(this, 'stack', {\n get: function() {\n if (this.originalError) {\n return stack + '\\nCaused by: ' + this.originalError.stack;\n }\n\n return stack;\n }\n });\n }\n};\n\nSuperagentPromiseError.prototype = new Error();\nSuperagentPromiseError.prototype.constructor = SuperagentPromiseError;\nsuperagent.SuperagentPromiseError = SuperagentPromiseError;\n\n/**\n * @namespace utils\n * @class Superagent\n */\n\n/**\n *\n * Add promise support for superagent/supertest\n *\n * Call .promise() to return promise for the request\n *\n * @method then\n * @return {Bluebird.Promise}\n */\nRequest.prototype.promise = function() {\n var req = this;\n var error;\n\n return new Promise(function(resolve, reject, onCancel) {\n req.end(function(err, res) {\n if (typeof res !== \"undefined\" && res.status >= 400) {\n var msg = 'cannot ' + req.method + ' ' + req.url + ' (' + res.status + ')';\n error = new SuperagentPromiseError(msg);\n error.status = res.status;\n error.body = res.body;\n error.res = res;\n reject(error);\n } else if (err) {\n reject(new SuperagentPromiseError('Bad request', err));\n } else {\n resolve(res);\n }\n });\n onCancel(function() {\n req.abort();\n });\n\n });\n};\n\n/**\n *\n * Make superagent requests Promises/A+ conformant\n *\n * Call .then([onFulfilled], [onRejected]) to register callbacks\n *\n * @method then\n * @param {function} [onFulfilled]\n * @param {function} [onRejected]\n * @return {Bluebird.Promise}\n */\nRequest.prototype.then = function() {\n var promise = this.promise();\n return promise.then.apply(promise, arguments);\n};\n\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports) {\n\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return null !== obj && 'object' === typeof obj;\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 276 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = removeQueryFromUrl;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0____ = __webpack_require__(277);\n\n\nfunction removeQueryFromUrl() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var params = arguments[1];\n\n var finalQuery = {};\n var pathAndQuery = url.split('?');\n if (pathAndQuery.length > 1) {\n finalQuery = Object(__WEBPACK_IMPORTED_MODULE_0____[\"a\" /* convertQueryStringToObject */])(pathAndQuery[1]);\n }\n\n params.split(',').forEach(function (param) {\n if (finalQuery[param]) {\n delete finalQuery[param];\n }\n });\n return '' + pathAndQuery[0] + Object(__WEBPACK_IMPORTED_MODULE_0____[\"b\" /* queryString */])(finalQuery);\n};\n\n/***/ }),\n/* 277 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./app/lib/format/addQueryToUrl.js\nvar addQueryToUrl = __webpack_require__(70);\n\n// EXTERNAL MODULE: ./app/lib/format/apiDateFormatter.js\nvar apiDateFormatter = __webpack_require__(106);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./app/lib/format/streamSubtitle.js\n\n\nfunction streamSubtitle(_ref) {\n var _ref$authTypes = _ref.authTypes,\n authTypes = _ref$authTypes === undefined ? [] : _ref$authTypes,\n _ref$content = _ref.content,\n type = _ref$content.type,\n _ref$content$subtitle = _ref$content.subtitle,\n subtitle = _ref$content$subtitle === undefined ? '' : _ref$content$subtitle;\n\n // no subtitle with non-auth vod\n if (type === enums[\"o\" /* ContentType */].VOD && authTypes.length === 0) {\n return null;\n }\n\n return subtitle;\n};\n// EXTERNAL MODULE: ./app/lib/format/convertQueryStringToObject.js\nvar convertQueryStringToObject = __webpack_require__(278);\n\n// EXTERNAL MODULE: ./app/lib/format/convertObjectToQueryString.js\nvar convertObjectToQueryString = __webpack_require__(279);\n\n// EXTERNAL MODULE: ./app/lib/format/dateFormat.js\nvar dateFormat = __webpack_require__(33);\n\n// EXTERNAL MODULE: ./app/lib/format/getContentFromListing.js\nvar getContentFromListing = __webpack_require__(293);\n\n// EXTERNAL MODULE: ./app/lib/format/getMinutesUntilStart.js\nvar getMinutesUntilStart = __webpack_require__(202);\n\n// EXTERNAL MODULE: ./app/lib/format/getSiteUrlForPath.js\nvar getSiteUrlForPath = __webpack_require__(294);\n\n// EXTERNAL MODULE: ./app/lib/format/getI18nInclude.js\nvar getI18nInclude = __webpack_require__(295);\n\n// EXTERNAL MODULE: ./app/lib/format/getMobileGameCastUrlForContent.js\nvar getMobileGameCastUrlForContent = __webpack_require__(296);\n\n// CONCATENATED MODULE: ./app/lib/format/normalizeCountry.js\n\nvar usTerritories = ['GU', 'PR', 'VI'];\n\n/**\n * This function determines if a country is part of the US and returns US if so\n * @param {string} country\n */\nfunction normalizeCountry(country) {\n return usTerritories.indexOf(country) === -1 ? country : 'US';\n}\n// EXTERNAL MODULE: ./app/lib/format/normalizeQueryString.js\nvar normalizeQueryString = __webpack_require__(203);\n\n// EXTERNAL MODULE: ./app/lib/format/queryString.js\nvar queryString = __webpack_require__(18);\n\n// CONCATENATED MODULE: ./app/lib/format/getQueryParamsFromString.js\n/**\n * getQueryParamsFromString - Given a url containing query parameters,\n * it will return only the query parameters as a string. Optionally takes an includeOnlyList array\n * that will only return matchingQueryParams or a default empty string\n *\n * @param {string} url - url to extract query parameters from\n * @param {array} includeOnlyList - optional array parameter used to filter query params included in the array\n * @return {string} - properly formatted query parameters or defaults to an empty string\n */\n\nfunction getQueryParamsFromString(url, includeOnlyList) {\n if (typeof url === 'string' && url.split('?').length > 1) {\n var queryParams = url.split('?')[1];\n\n if (!queryParams || queryParams.trim() === '') {\n return '';\n }\n\n // Handle the optional includeOnlyList array\n if (includeOnlyList && Array.isArray(includeOnlyList) && includeOnlyList.length) {\n var matchingQueryParams = [];\n var sanitizedQueryParams = '';\n includeOnlyList.forEach(function (item, index) {\n var queryParamName = item.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regex = new RegExp('[\\\\?&]' + queryParamName + '=([^&#]*)');\n var result = regex.exec(queryParams);\n\n if (result && Array.isArray(result) && result[0]) {\n matchingQueryParams.push(result[0].replace('&', '')); // remove prepended `&`\n }\n });\n\n if (matchingQueryParams.length === 1) {\n sanitizedQueryParams += matchingQueryParams.join('');\n } else if (matchingQueryParams.length > 1) {\n sanitizedQueryParams += matchingQueryParams.join('&');\n }\n\n return sanitizedQueryParams;\n }\n\n return queryParams;\n }\n\n return '';\n};\n// EXTERNAL MODULE: ./app/lib/format/removeQueryFromUrl.js\nvar removeQueryFromUrl = __webpack_require__(276);\n\n// CONCATENATED MODULE: ./app/lib/format/convertV1ToV3.js\n\n\nfunction convertV1ToV3(content) {\n var v3Content = void 0;\n if (content.type === 'event') {\n v3Content = {\n id: '' + content.id,\n status: content.status,\n type: enums[\"o\" /* ContentType */].LISTING,\n name: content.name,\n description: content.description,\n imageHref: content.imageHref,\n subtitle: content.subtitle,\n date: content.date,\n shortDate: content.shortDate,\n utc: content.rawDate,\n time: content.time,\n streams: [{\n id: '' + content.id,\n name: content.name,\n status: content.status,\n duration: content.duration,\n source: {\n id: content.sourceId,\n name: content.source,\n type: content.sourceType\n },\n score: content.score,\n authTypes: content.authTypes,\n adobeRSS: content.adobeRSS,\n links: content.links\n }],\n iconHref: content.iconHref\n };\n } else if (content.type === 'video') {\n v3Content = {\n id: '' + content.id,\n guid: content.guid,\n type: enums[\"o\" /* ContentType */].VOD,\n name: content.name,\n description: content.description,\n imageHref: content.imageHref,\n subtitle: content.subtitle,\n streams: [{\n id: '' + content.id,\n name: content.name,\n duration: content.duration,\n source: {\n name: content.source\n },\n links: content.links\n }]\n };\n }\n return v3Content;\n}\n// CONCATENATED MODULE: ./app/lib/format/getStreamForContent.js\n/**\n * getStreamForContent\n * @description return stream which `id` matches with content's `id`, otherwise return the first stream item\n * @param content\n * @returns {Stream}\n */\nfunction getStreamForContent(content) {\n var id = content.id,\n _content$streams = content.streams,\n streams = _content$streams === undefined ? [] : _content$streams;\n\n var stream = streams.filter(function (streamItem) {\n return streamItem.id === id;\n })[0];\n if (!streams) {\n stream = streams[0];\n }\n return stream;\n}\n// CONCATENATED MODULE: ./app/lib/format/convertV3ToV1.js\n\n\n\n\nfunction convertV3ToV1(content) {\n var stream = getStreamForContent(content);\n var contentId = isNaN(parseInt(content.id, 10)) ? content.id : parseInt(content.id, 10);\n var v1Content = void 0;\n if (content.type === enums[\"o\" /* ContentType */].LISTING) {\n v1Content = {\n id: contentId,\n status: content.status,\n type: 'event',\n name: content.name,\n description: content.description,\n imageHref: content.imageHref,\n duration: stream.duration,\n subtitle: content.subtitle,\n date: content.date,\n shortDate: content.shortDate,\n rawDate: content.utc,\n time: content.time,\n authTypes: stream.authTypes,\n airings: [{}],\n source: stream.source.name,\n sourceId: stream.source.id,\n sourceType: stream.source.type,\n adobeRSS: stream.adobeRSS,\n links: stream.links,\n tracking: {\n // TODO: check if ESPN App uses this\n },\n iconHref: content.iconHref\n };\n } else if (content.type === enums[\"o\" /* ContentType */].VOD) {\n v1Content = {\n id: contentId,\n guid: content.guid,\n type: 'video',\n name: content.name,\n description: content.description,\n imageHref: content.imageHref,\n duration: stream.duration,\n subtitle: content.subtitle,\n airings: [{\n airingId: content.id\n }],\n source: stream.source.name,\n links: stream.links,\n tracking: {\n // TODO: check if ESPN App uses this\n }\n };\n }\n return v1Content;\n}\n// EXTERNAL MODULE: ./app/lib/format/getAdobePassRedirectUrl.js\nvar getAdobePassRedirectUrl = __webpack_require__(297);\n\n// CONCATENATED MODULE: ./app/lib/format/index.js\n/* unused concated harmony import addQueryToUrl */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return addQueryToUrl[\"a\" /* default */]; });\n/* unused concated harmony import apiDateFormatter */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return apiDateFormatter[\"a\" /* default */]; });\n/* unused concated harmony import streamSubtitle */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return streamSubtitle; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"a\", function() { return convertQueryStringToObject[\"a\" /* default */]; });\n/* unused concated harmony import convertObjectToQueryString */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return convertObjectToQueryString[\"a\" /* default */]; });\n/* unused concated harmony import dateFormat */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return dateFormat[\"a\" /* default */]; });\n/* unused concated harmony import getContentFromListing */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return getContentFromListing[\"a\" /* default */]; });\n/* unused concated harmony import getMinutesUntilStart */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return getMinutesUntilStart[\"a\" /* default */]; });\n/* unused concated harmony import getSiteUrlForPath */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return getSiteUrlForPath[\"a\" /* default */]; });\n/* unused concated harmony import getI18nInclude */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return getI18nInclude[\"a\" /* default */]; });\n/* unused concated harmony import getMobileGameCastUrlForContent */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return getMobileGameCastUrlForContent[\"a\" /* default */]; });\n/* unused concated harmony import normalizeCountry */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return normalizeCountry; });\n/* unused concated harmony import normalizeQueryString */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return normalizeQueryString[\"a\" /* default */]; });\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, \"b\", function() { return queryString[\"a\" /* default */]; });\n/* unused concated harmony import getQueryParamsFromString */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return getQueryParamsFromString; });\n/* unused concated harmony import removeQueryFromUrl */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return removeQueryFromUrl[\"a\" /* default */]; });\n/* unused concated harmony import convertV1ToV3 */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return convertV1ToV3; });\n/* unused concated harmony import convertV3ToV1 */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return convertV3ToV1; });\n/* unused concated harmony import getStreamForContent */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return getStreamForContent; });\n/* unused concated harmony import getAdobePassRedirectUrl */\n/* concated harmony reexport */__webpack_require__.d(__webpack_exports__, false, function() { return getAdobePassRedirectUrl[\"a\" /* default */]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n/* 278 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = convertQueryStringToObject;\nfunction convertQueryStringToObject() {\n var queryString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var queryParams = queryString.split('&');\n return queryParams.reduce(function (acc, next) {\n var keyAndValue = next.split('=');\n if (keyAndValue.length > 0) {\n var key = keyAndValue[0];\n acc[key] = keyAndValue[1];\n }\n return acc;\n }, {});\n}\n\n/***/ }),\n/* 279 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = convertObjectToQueryString;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_pick__ = __webpack_require__(536);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_pick___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash_pick__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_size__ = __webpack_require__(578);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_size___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_size__);\n\n\n\n/**\n * convertObjectToQueryString - Converts a given object with matching keys (keysArray) as a query formatted string.\n *\n * @param {object} object - object containing N amount of properties to be matched by the keysArray\n * @param {array} keysArray - array containing keys that should match the passed object\n * @return {string} - returns a properly formatted query string (i.e. id=123&lang=pt...); defaults to an empty string\n */\nfunction convertObjectToQueryString(object, keysArray) {\n if (!object || !keysArray || Array.isArray(keysArray) === false || keysArray.length < 1) {\n return '';\n }\n\n var convertedString = '';\n var matchingObject = __WEBPACK_IMPORTED_MODULE_0_lodash_pick___default()(object, keysArray);\n\n if (matchingObject) {\n var currentObjectCount = 0;\n var lengthOfMatchingObject = __WEBPACK_IMPORTED_MODULE_1_lodash_size___default()(matchingObject);\n\n Object.keys(matchingObject).forEach(function (key) {\n var value = matchingObject[key];\n currentObjectCount++;\n convertedString += key + '=' + value;\n\n if (currentObjectCount !== lengthOfMatchingObject) {\n convertedString += '&';\n }\n });\n }\n\n return convertedString;\n}\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(135),\n eq = __webpack_require__(110);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(72);\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n/***/ }),\n/* 284 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseHasIn = __webpack_require__(568),\n hasPath = __webpack_require__(569);\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n/***/ }),\n/* 285 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayPush = __webpack_require__(286),\n isFlattenable = __webpack_require__(573);\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n\n/***/ }),\n/* 286 */\n/***/ (function(module, exports) {\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n\n/***/ }),\n/* 287 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = __webpack_require__(574);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n\n\n/***/ }),\n/* 288 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseSetToString = __webpack_require__(575),\n shortOut = __webpack_require__(577);\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n\n\n/***/ }),\n/* 289 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n/***/ }),\n/* 290 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(72),\n root = __webpack_require__(39);\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n/***/ }),\n/* 291 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n\n/***/ }),\n/* 292 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console, module) {var require;//! moment.js\n\n;(function (global, factory) {\n true ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate (y) {\n var date;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays (ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays :\n this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n : (m) ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n !(function webpackMissingModule() { var e = new Error(\"Cannot find module \\\"./locale\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e; }());\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month': return months;\n case 'quarter': return months / 3;\n case 'year': return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.24.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2), __webpack_require__(108)(module)))\n\n/***/ }),\n/* 293 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getContentFromListing;\n/* unused harmony export getV1ContentFromListing */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\n\n\nfunction getAuthTypesFromBroadcasts() {\n var broadcasts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var authTypes = [];\n if (broadcasts.length > 0) {\n if (['espn_dtc', 'bam_dtc', 'espn_ppv'].indexOf(broadcasts[0].adobeResource) !== -1) {\n authTypes.push(__WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].BAM);\n } else {\n authTypes.push(__WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].MVPD);\n }\n if (broadcasts[0].ipAuth === true) {\n authTypes.push(__WEBPACK_IMPORTED_MODULE_0__enums__[\"e\" /* AuthTypes */].ISP);\n }\n }\n return authTypes;\n}\n\nfunction getPackagesFromBroadcasts() {\n var broadcasts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var packages = [];\n if (broadcasts.length > 0 && broadcasts[0].packages) {\n packages = broadcasts[0].packages;\n }\n return packages;\n}\n\nfunction getSourceTypeFromBroadcasts() {\n var broadcasts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var sourceType = void 0;\n if (broadcasts.length > 0) {\n sourceType = broadcasts[0].type;\n }\n return sourceType;\n}\n\nfunction getSourceIdFromBroadcasts() {\n var broadcasts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var sourceId = void 0;\n if (broadcasts.length > 0) {\n sourceId = broadcasts[0].code;\n }\n return sourceId;\n}\n\nfunction getSourceFromBroadcasts() {\n var broadcasts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var source = void 0;\n if (broadcasts.length > 0) {\n source = broadcasts[0].shortName;\n }\n return source;\n}\n\nfunction getAdobeResourceFromBroadcasts() {\n var broadcasts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var adobeResource = void 0;\n if (broadcasts.length > 0) {\n adobeResource = broadcasts[0].adobeResource;\n }\n return adobeResource;\n}\n\nfunction getImageHrefFromBroadcasts() {\n var thumbnails = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var imageHref = void 0;\n if (thumbnails.large) {\n imageHref = thumbnails.large.href;\n }\n return imageHref;\n}\n\n/**\n * Takes a listing from the v1 api and converts it to a content item\n */\n// TODO: DTC - make sure this works for both 5.x and 6.x app\nfunction getContentFromListing() {\n var listing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return {\n id: listing.id.toString(),\n type: __WEBPACK_IMPORTED_MODULE_0__enums__[\"o\" /* ContentType */].LISTING,\n name: listing.name,\n status: listing.type,\n imageHref: getImageHrefFromBroadcasts(listing.thumbnails),\n backgroundImageHref: listing.backgroundImageHref,\n streams: [{\n id: listing.id.toString(),\n status: listing.type,\n name: listing.name,\n source: {\n id: getSourceIdFromBroadcasts(listing.broadcasts),\n name: getSourceFromBroadcasts(listing.broadcasts),\n type: getSourceTypeFromBroadcasts(listing.broadcasts)\n },\n authTypes: getAuthTypesFromBroadcasts(listing.broadcasts),\n adobeResource: getAdobeResourceFromBroadcasts(listing.broadcasts),\n packages: getPackagesFromBroadcasts(listing.broadcasts)\n }]\n };\n};\n\nfunction getV1ContentFromListing() {\n var listing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return {\n id: listing.id,\n type: __WEBPACK_IMPORTED_MODULE_0__enums__[\"o\" /* ContentType */].EVENT,\n name: listing.name,\n status: listing.type,\n source: getSourceFromBroadcasts(listing.broadcasts),\n sourceId: getSourceIdFromBroadcasts(listing.broadcasts),\n sourceType: getSourceTypeFromBroadcasts(listing.broadcasts),\n authTypes: getAuthTypesFromBroadcasts(listing.broadcasts),\n packages: getPackagesFromBroadcasts(listing.broadcasts),\n imageHref: getImageHrefFromBroadcasts(listing.thumbnails)\n };\n};\n\n/***/ }),\n/* 294 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getSiteUrlForPath;\n/**\n * Returns the fully qualified site base url\n */\n\nvar ROOT = '/watch';\n\nfunction getSiteUrlForPath() {\n var pathArg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n // prepend a slash if the path doesn't have it\n var path = pathArg.indexOf('/') === 0 ? pathArg : '/' + pathArg;\n var url = path;\n if (window) {\n var _window = window,\n _window$location = _window.location,\n hostname = _window$location.hostname,\n port = _window$location.port,\n protocol = _window$location.protocol;\n\n url = protocol + '//' + hostname + (port ? ':' + port : port) + ROOT + path;\n }\n return url;\n}\n\n/***/ }),\n/* 295 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getI18nInclude;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__queryString__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__config__);\n\n\n\nvar baseUrl = 'https://secure.espn.com/core/format/modules/head/i18n';\n\nfunction getI18nInclude() {\n var query = {\n 'edition-host': 'espn.com',\n lang: 'en',\n region: 'us',\n site: 'espn',\n 'site=type': 'full',\n type: 'ext',\n build: '0.362.4.1',\n 'edition-view': 'espn-en-us',\n edition: 'espn-en-us'\n };\n return '' + baseUrl + Object(__WEBPACK_IMPORTED_MODULE_0__queryString__[\"a\" /* default */])(query);\n};\n\n/***/ }),\n/* 296 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getMobileGameCastUrlForContent;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__auth_getContentId__ = __webpack_require__(60);\n\n/**\n * Generates a gamecast url for a given content object\n * @param {object} content - Destructured an eventId from content\n */\n\nvar scoresHost = \"http://scores.espn.com\";\nvar mobileHost = \"http://m.espn.com\";\n\nvar leagueCodePathMap = {\n ncaam: 'ncb',\n nba: 'nba',\n nfl: 'nfl',\n ncaaf: 'ncaaf'\n};\n\nfunction getMobileGameCastUrlForContent(content) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n leagueCode = _ref.leagueCode;\n\n var _getContentId = Object(__WEBPACK_IMPORTED_MODULE_0__auth_getContentId__[\"a\" /* default */])(content),\n eventId = _getContentId.eventId;\n\n if (eventId && leagueCode) {\n var lowerLeagueCode = leagueCode.toLowerCase();\n if (lowerLeagueCode === 'mlb') {\n return mobileHost + \"/mlb/gamecast?eventId=\" + eventId;\n } else if (leagueCodePathMap[lowerLeagueCode]) {\n return scoresHost + \"/\" + leagueCodePathMap[lowerLeagueCode] + \"/gamecast?version=mobile&gameId=\" + eventId;\n }\n }\n return null;\n}\n\n/***/ }),\n/* 297 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* unused harmony export getId */\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getAdobePassRedirectUrl;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__queryString__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__auth_getContentId__ = __webpack_require__(60);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__omniture__ = __webpack_require__(34);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\nfunction getId(content, stream, query) {\n var contentId = void 0;\n var id = query.id,\n airingId = query.airingId;\n\n if (airingId && airingId === id) {\n contentId = { id: airingId };\n } else {\n contentId = stream ? { id: stream.id } : Object(__WEBPACK_IMPORTED_MODULE_1__auth_getContentId__[\"a\" /* default */])(content);\n }\n return contentId;\n}\n\nfunction getAdobePassRedirectUrl(_ref) {\n var content = _ref.content,\n stream = _ref.stream,\n _ref$flags = _ref.flags,\n flags = _ref$flags === undefined ? {} : _ref$flags,\n _ref$query = _ref.query,\n query = _ref$query === undefined ? {} : _ref$query,\n _ref$pathname = _ref.pathname,\n pathname = _ref$pathname === undefined ? '' : _ref$pathname;\n\n if (content == null || global.location.pathname === '/watch/syndicated/player') {\n return '';\n }\n var bucketId = content.bucketId,\n groupId = content.groupId,\n network = content.network,\n _content$placement = content.placement,\n placement = _content$placement === undefined ? '' : _content$placement;\n\n var contentId = getId(content, stream, query);\n\n var omnitureQuery = Object(__WEBPACK_IMPORTED_MODULE_2__omniture__[\"c\" /* getOmnitureQuery */])(query);\n\n var qs = Object(__WEBPACK_IMPORTED_MODULE_0__queryString__[\"a\" /* default */])(_extends({\n bucketId: bucketId,\n groupId: groupId,\n network: network\n }, contentId, flags, omnitureQuery));\n // if it should play in hero, don't re-route to player page\n var id = query.id;\n\n var playInHero = content.isHero || placement === 'inline-hero' || id === content.id && pathname !== '/player';\n // if entering via SEO friendly parameter URL, chop all the path params off and use straight query params for redirectUrl\n var path = playInHero ? global.location.pathname.replace(/\\/_\\/?.+/, '') : '/watch/player';\n var port = global.location.port !== '' ? ':' + global.location.port : '';\n return global.location.protocol + '//' + global.location.hostname + port + path + qs;\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(24)))\n\n/***/ }),\n/* 298 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIndexOf = __webpack_require__(602);\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n\n\n/***/ }),\n/* 299 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n\n\n/***/ }),\n/* 300 */\n/***/ (function(module, exports) {\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n\n\n/***/ }),\n/* 301 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n/***/ }),\n/* 302 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar identity = __webpack_require__(199),\n overRest = __webpack_require__(287),\n setToString = __webpack_require__(288);\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n\n\n/***/ }),\n/* 303 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArrayLike = __webpack_require__(51),\n isObjectLike = __webpack_require__(59);\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n\n\n/***/ }),\n/* 304 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__config__);\n\nvar cacheModuleConfig = { verbose: false, defaultExpiration: 30, memcached: __WEBPACK_IMPORTED_MODULE_0__config__[\"cache\"] || {} };\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ((function () {\n if (true) {\n var CacheService = __webpack_require__(612);\n return new CacheService({ defaultExpiration: 30 });\n }\n return __webpack_require__(613)(cacheModuleConfig);\n})());\n\n/***/ }),\n/* 305 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\n\nvar base64 = __webpack_require__(616)\nvar ieee754 = __webpack_require__(617)\nvar isArray = __webpack_require__(618)\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 306 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar createHash = __webpack_require__(89).createHash\n , toString = Object.prototype.toString;\n\nexports.validateArg = function validateArg (args, config) {\n var err;\n\n args.validate.forEach(function (tokens) {\n var key = tokens[0]\n , value = args[key];\n\n switch(tokens[1]){\n case Number:\n if (toString.call(value) !== '[object Number]') {\n err = 'Argument \"' + key + '\" is not a valid Number.';\n }\n\n break;\n\n case Boolean:\n if (toString.call(value) !== '[object Boolean]') {\n err = 'Argument \"' + key + '\" is not a valid Boolean.';\n }\n\n break;\n\n case Array:\n if (toString.call(value) !== '[object Array]') {\n err = 'Argument \"' + key + '\" is not a valid Array.';\n }\n if (!err && key === 'key') {\n for (var vKey=0; vKey<value.length; vKey++) {\n var vValue = value[vKey];\n var result = validateKeySize(config, vKey, vValue);\n if (result.err) {\n err = result.err;\n } else {\n args.command = args.command.replace(vValue, result['value']);\n }\n }\n }\n break;\n\n case Object:\n if (toString.call(value) !== '[object Object]') {\n err = 'Argument \"' + key + '\" is not a valid Object.';\n }\n\n break;\n\n case Function:\n if (toString.call(value) !== '[object Function]') {\n err = 'Argument \"' + key + '\" is not a valid Function.';\n }\n\n break;\n\n case String:\n if (toString.call(value) !== '[object String]') {\n err = 'Argument \"' + key + '\" is not a valid String.';\n }\n\n if (!err && key === 'key') {\n var result = validateKeySize(config, key, value);\n if (result.err) {\n err = result.err;\n } else {\n args.command = reallocString(args.command).replace(value, result['value']);\n }\n }\n break;\n\n default:\n if (toString.call(value) === '[object global]' && !tokens[2]) {\n err = 'Argument \"' + key + '\" is not defined.';\n }\n }\n });\n\n if (err){\n if (args.callback) args.callback(new Error(err));\n return false;\n }\n\n return true;\n};\n\nvar validateKeySize = function validateKeySize(config, key, value) {\n if (value.length > config.maxKeySize) {\n if (config.keyCompression){\n return { err: false, value: createHash('md5').update(value).digest('hex') };\n } else {\n return { err: 'Argument \"' + key + '\" is longer than the maximum allowed length of ' + config.maxKeySize };\n }\n } else if (/[\\s\\n\\r]/.test(value)) {\n return { err: 'The key should not contain any whitespace or new lines' };\n } else {\n return { err: false, value: value };\n }\n};\n\n// a small util to use an object for eventEmitter\nexports.fuse = function fuse (target, handlers) {\n for (var i in handlers)\n if (handlers.hasOwnProperty(i)){\n target.on(i, handlers[i]);\n }\n};\n\n// merges a object's proppertys / values with a other object\nexports.merge = function merge (target, obj) {\n for (var i in obj) {\n target[i] = obj[i];\n }\n\n return target;\n};\n\n// curry/bind functions\nexports.curry = function curry (context, fn) {\n var copy = Array.prototype.slice\n , args = copy.call(arguments, 2);\n\n return function bowlofcurry () {\n return fn.apply(context || this, args.concat(copy.call(arguments)));\n };\n};\n\n// a small items iterator\nexports.Iterator = function iterator (collection, callback) {\n var arr = Array.isArray(collection)\n , keys = !arr ? Object.keys(collection) : false\n , index = 0\n , maximum = arr ? collection.length : keys.length\n , self = this;\n\n // returns next item\n this.next = function next () {\n var obj = arr ? collection[index] : { key: keys[index], value: collection[keys[index]] };\n callback(obj, index++, collection, self);\n };\n\n // check if we have more items\n this.hasNext = function hasNext () {\n return index < maximum;\n };\n};\n\n//Escapes values by putting backslashes before line breaks\nexports.escapeValue = function(value) {\n return value.replace(/(\\r|\\n)/g, '\\\\$1');\n};\n\n//Unescapes escaped values by removing backslashes before line breaks\nexports.unescapeValue = function(value) {\n return value.replace(/\\\\(\\r|\\n)/g, '$1');\n};\n\nvar reallocString = exports.reallocString = function(value) {\n // Reallocate string to fix slow string operations in node 0.10\n // see https://code.google.com/p/v8/issues/detail?id=2869 for details\n return (' ' + value).substr(1);\n};\n\n\n/***/ }),\n/* 307 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/reselect/lib/index.js\nvar lib = __webpack_require__(9);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// EXTERNAL MODULE: ./app/common/selectors/fanSelector.js\nvar fanSelector = __webpack_require__(91);\n\n// CONCATENATED MODULE: ./app/lib/whitelist/index.js\nvar whitelistedSwids = ['{AEDB5BCC-173D-49BD-9B0B-77DFD5964C19}', // rob wong\n'{CAF029A0-42FD-4A72-A3B4-225A523BB6F8}', // alex murp\n'{41806771-14BA-4372-8067-7114BA137205}', // paul ferrug\n'{83557C90-D1C1-48E5-BD25-C180CF1A843C}', // takashi aoki\n'{3D4B6DA0-89C1-4061-93BE-4DF366407219}', // mike andrews\n'{64BFB324-993C-11D2-94D2-00A0C9E596A0}', // aaron laberge\n'{DC6D6CAB-31D6-47A9-B570-E388A23E82DE}', // john racz\n'{340CE85D-75A3-4266-B2EA-20442C0C9DCB}', // jesse pringle\n'{83CA9BE6-3078-460B-9104-BD7F202524E6}' // mike kidd\n];\n\nfunction isSwidInWhitelist(swid) {\n if (swid) {\n return whitelistedSwids.indexOf(swid) !== -1;\n }\n return false;\n}\n// CONCATENATED MODULE: ./app/common/selectors/whitelistSelector.js\n\n\n\n\n/* harmony default export */ var whitelistSelector = __webpack_exports__[\"a\"] = (Object(lib[\"createSelector\"])(fanSelector[\"a\" /* default */], function (_ref) {\n var id = _ref.id;\n return isSwidInWhitelist(id);\n}));\n\n/***/ }),\n/* 308 */\n/***/ (function(module, exports) {\n\n/**\n * Each app results in a separate bundle\n */\nmodule.exports = {\n WEBAPP: 'webapp',\n ESPNAPP: 'espnapp'\n};\n\n/***/ }),\n/* 309 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return adSiteSelector; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__appSelector__ = __webpack_require__(3);\n\n\n\nvar adsSelector = function adsSelector(_ref) {\n var _ref$ads = _ref.ads,\n ads = _ref$ads === undefined ? {} : _ref$ads;\n return ads;\n};\n\n/* unused harmony default export */ var _unused_webpack_default_export = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(adsSelector, function (ads) {\n return ads;\n}));\n\nvar adSiteSelector = Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_1__appSelector__[\"k\" /* editionSelector */], __WEBPACK_IMPORTED_MODULE_1__appSelector__[\"p\" /* intlAppSelector */], function (_ref2, intlApp) {\n var ad = _ref2.ad;\n return intlApp ? 'm.app.espnplay' : ad.site;\n});\n\n/***/ }),\n/* 310 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsEqualDeep = __webpack_require__(642),\n isObjectLike = __webpack_require__(59);\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n/***/ }),\n/* 311 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar SetCache = __webpack_require__(204),\n arraySome = __webpack_require__(643),\n cacheHas = __webpack_require__(205);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n\n/***/ }),\n/* 312 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(39);\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n/***/ }),\n/* 313 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseTimes = __webpack_require__(652),\n isArguments = __webpack_require__(112),\n isArray = __webpack_require__(32),\n isBuffer = __webpack_require__(141),\n isIndex = __webpack_require__(136),\n isTypedArray = __webpack_require__(142);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n/***/ }),\n/* 314 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(35);\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n/***/ }),\n/* 315 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n\n\n/***/ }),\n/* 316 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toFinite = __webpack_require__(661);\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n\n\n/***/ }),\n/* 317 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(35),\n isSymbol = __webpack_require__(129);\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n/***/ }),\n/* 318 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export adobe */\n/* unused harmony export ip */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_watch_authenticators__ = __webpack_require__(662);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_watch_authenticators___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_watch_authenticators__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__enums__ = __webpack_require__(1);\n\n\n\nvar AdobePassEnv = __WEBPACK_IMPORTED_MODULE_1__enums__[\"a\" /* AdobePass */].Env;\n\n\nvar ipAuthenticator = void 0;\nvar adobePassAuthenticator = void 0;\n\nvar adobe = function adobe(opts) {\n if (adobePassAuthenticator) {\n return adobePassAuthenticator;\n }\n\n if (!opts) {\n throw new Error(\"Must specify opts the first time Adobe Authenticator is retrieved\");\n }\n\n adobePassAuthenticator = new __WEBPACK_IMPORTED_MODULE_0_watch_authenticators__[\"AdobePassAuthenticator\"](opts);\n return adobePassAuthenticator;\n};\n\nvar ip = function ip() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { partner: 'watchespn', platform: 'web' };\n\n if (ipAuthenticator) {\n return ipAuthenticator;\n }\n\n if (!opts) {\n throw new Error(\"Must specify opts the first time IP Authenticator is retrieved\");\n }\n\n ipAuthenticator = new __WEBPACK_IMPORTED_MODULE_0_watch_authenticators__[\"IpAuthenticator\"](opts);\n return ipAuthenticator;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n adobe: adobe,\n ip: ip\n});\n\n/***/ }),\n/* 319 */\n/***/ (function(module, exports) {\n\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = assign;\n\n\n/***/ }),\n/* 320 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n nullTag = '[object Null]',\n proxyTag = '[object Proxy]',\n undefinedTag = '[object Undefined]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isFunction;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 321 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export PREAUTH_MAX_LENGTH */\n/* unused harmony export getResources */\n/* unused harmony export setResources */\n/* unused harmony export clear */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_localStorage__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(8);\n\n\n\nvar PREAUTH_MAX_LENGTH = 5;\n\nfunction getResources() {\n var resources = Object(__WEBPACK_IMPORTED_MODULE_0__util_localStorage__[\"a\" /* get */])(__WEBPACK_IMPORTED_MODULE_1__constants__[\"m\" /* PREAUTH_LOCALSTORAGE_KEY */]);\n return resources;\n}\n\n// expiration in days\nfunction setResources(resources) {\n var expiration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n Object(__WEBPACK_IMPORTED_MODULE_0__util_localStorage__[\"d\" /* set */])(__WEBPACK_IMPORTED_MODULE_1__constants__[\"m\" /* PREAUTH_LOCALSTORAGE_KEY */], resources, expiration * 60 * 60 * 24);\n}\n\nfunction clear() {\n Object(__WEBPACK_IMPORTED_MODULE_0__util_localStorage__[\"c\" /* remove */])(__WEBPACK_IMPORTED_MODULE_1__constants__[\"m\" /* PREAUTH_LOCALSTORAGE_KEY */]);\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n PREAUTH_MAX_LENGTH: PREAUTH_MAX_LENGTH,\n getResources: getResources,\n setResources: setResources,\n clear: clear\n});\n\n/***/ }),\n/* 322 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar SetCache = __webpack_require__(204),\n arrayIncludes = __webpack_require__(298),\n arrayIncludesWith = __webpack_require__(300),\n cacheHas = __webpack_require__(205),\n createSet = __webpack_require__(669),\n setToArray = __webpack_require__(210);\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n\n\n/***/ }),\n/* 323 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eq = __webpack_require__(110),\n isArrayLike = __webpack_require__(51),\n isIndex = __webpack_require__(136),\n isObject = __webpack_require__(35);\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n/***/ }),\n/* 324 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AccountSelectorComponent; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_helmet__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_oneId__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__lib_auth_streamHasDTCPackage__ = __webpack_require__(143);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__lib_auth_shallowCheckAuthentication__ = __webpack_require__(146);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__lib_format_addQueryToUrl__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__actions_oneIdActions__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__actions__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__selectors_oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__selectors_authenticationSelectors__ = __webpack_require__(10);\nvar _AccountSelectorCompo, _AccountSelectorCompo2;\n\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar OneIdJs = __WEBPACK_IMPORTED_MODULE_4__lib_oneId__[\"b\" /* OneIdJs */];\n\n\nvar AccountSelectorComponent = function (_PureComponent) {\n _inherits(AccountSelectorComponent, _PureComponent);\n\n function AccountSelectorComponent(props) {\n _classCallCheck(this, AccountSelectorComponent);\n\n var _this = _possibleConstructorReturn(this, (AccountSelectorComponent.__proto__ || Object.getPrototypeOf(AccountSelectorComponent)).call(this, props));\n\n _this.state = {\n purchaseFlow: false,\n mode: AccountSelectorComponent.MODE.UNKNOWN\n };\n _this.getGuest = _this.getGuest.bind(_this);\n _this.clearGuest = _this.clearGuest.bind(_this);\n _this.onTVEClick = _this.onTVEClick.bind(_this);\n _this.onPurchaseClick = _this.onPurchaseClick.bind(_this);\n _this.onLogin = _this.onLogin.bind(_this);\n _this.onCancelClick = _this.onCancelClick.bind(_this);\n _this.processRedirect = _this.processRedirect.bind(_this);\n _this.processRedirectBySkip = _this.processRedirectBySkip.bind(_this);\n _this.navigateToESPNPlus = _this.navigateToESPNPlus.bind(_this);\n return _this;\n }\n\n _createClass(AccountSelectorComponent, [{\n key: 'componentDidMount',\n value: function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var _props, dispatch, id, _ref2, isLoggedIn, airing;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _props = this.props, dispatch = _props.dispatch, id = _props.location.query.id;\n\n __WEBPACK_IMPORTED_MODULE_4__lib_oneId__[\"k\" /* on */]('login', this.getGuest);\n __WEBPACK_IMPORTED_MODULE_4__lib_oneId__[\"k\" /* on */]('logout', this.clearGuest);\n _context.next = 5;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_oneIdActions__[\"g\" /* checkOneIDAuthentication */])());\n\n case 5:\n _ref2 = _context.sent;\n isLoggedIn = _ref2.isLoggedIn;\n\n if (!id) {\n _context.next = 19;\n break;\n }\n\n _context.prev = 8;\n _context.next = 11;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_9__actions__[\"u\" /* getAiring */])({ id: id }));\n\n case 11:\n airing = _context.sent;\n\n this.setContent(airing);\n _context.next = 18;\n break;\n\n case 15:\n _context.prev = 15;\n _context.t0 = _context['catch'](8);\n\n console.error(_context.t0);\n\n case 18:\n\n if (!isLoggedIn) {\n this.onLogin();\n }\n\n case 19:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[8, 15]]);\n }));\n\n function componentDidMount() {\n return _ref.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var packages = this.state.packages;\n\n var notEntitledForContent = this.isNotEntitledForContent();\n var nextNotEntitledForContent = this.isNotEntitledForContent(nextProps);\n if (packages && notEntitledForContent && !nextNotEntitledForContent) {\n this.processRedirect();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, _ref3) {\n var prevPackages = _ref3.packages;\n var packages = this.state.packages;\n\n if (!prevPackages && packages) {\n var notEntitledForContent = this.isNotEntitledForContent();\n if (!notEntitledForContent) {\n this.processRedirect();\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n __WEBPACK_IMPORTED_MODULE_4__lib_oneId__[\"j\" /* off */]('login', this.getGuest);\n __WEBPACK_IMPORTED_MODULE_4__lib_oneId__[\"j\" /* off */]('logout', this.clearGuest);\n }\n }, {\n key: 'onTVEClick',\n value: function onTVEClick() {\n var _props$location$query = this.props.location.query;\n _props$location$query = _props$location$query === undefined ? {} : _props$location$query;\n var redirectUrl = _props$location$query.redirectUrl;\n\n if (redirectUrl) {\n var win = window.parent !== window.self ? window.parent : window;\n win.location.href = '' + redirectUrl + (redirectUrl.indexOf('?') > -1 ? '&' : '?') + 'auth=tve';\n }\n }\n }, {\n key: 'onLogin',\n value: function onLogin() {\n var _props2 = this.props,\n dispatch = _props2.dispatch,\n isLoggedIn = _props2.isLoggedIn;\n\n if (isLoggedIn) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_oneIdActions__[\"n\" /* launchReauth */])());\n return;\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_oneIdActions__[\"m\" /* launchLogin */])());\n }\n }, {\n key: 'onPurchaseClick',\n value: function onPurchaseClick() {\n // eslint-disable-line\n alert('Purchase flow'); // eslint-disable-line no-alert\n }\n }, {\n key: 'onCancelClick',\n value: function onCancelClick() {\n this.navigateToESPNPlus();\n }\n }, {\n key: 'setContent',\n value: function setContent() {\n var airing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var packages = airing.packages && airing.packages.map(function (_ref4) {\n var name = _ref4.name;\n return name;\n });\n if (!packages) {\n return;\n }\n console.log('ariging', airing); // eslint-disable-line no-console\n this.setState({ packages: packages });\n }\n }, {\n key: 'getMode',\n value: function getMode() {\n var mode = AccountSelectorComponent.MODE.UNKNOWN;\n var packages = this.state.packages;\n var _props3 = this.props,\n _props3$location$quer = _props3.location.query,\n modeArg = _props3$location$quer.mode,\n isMatchup = _props3$location$quer.matchup,\n entitlements = _props3.entitlements;\n\n if (modeArg !== undefined) {\n // override\n mode = parseInt(modeArg, 10);\n } else if (packages) {\n var hasMLB = Object(__WEBPACK_IMPORTED_MODULE_5__lib_auth_streamHasDTCPackage__[\"a\" /* default */])({ packages: packages }, __WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_PLUS_MLB);\n var isVertical = hasMLB || Object(__WEBPACK_IMPORTED_MODULE_5__lib_auth_streamHasDTCPackage__[\"a\" /* default */])({ packages: packages }, __WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_PLUS_NHL);\n var hasESPNPlusBase = entitlements && entitlements.indexOf(__WEBPACK_IMPORTED_MODULE_3__enums__[\"s\" /* Entitlements */].ESPN_PLUS) > -1;\n\n if (!isVertical) {\n if (isMatchup) {\n // TODO: how do we know from graphql response that the steream is matchup?\n mode = AccountSelectorComponent.MODE.PURCHASE_BASE_MATCHUP;\n } else {\n mode = AccountSelectorComponent.MODE.PURCHASE_BASE;\n }\n } else if (!hasMLB) {\n mode = AccountSelectorComponent.MODE.PURCHASE_NHL;\n } else if (hasESPNPlusBase) {\n mode = AccountSelectorComponent.MODE.PURCHASE_MLB_ADDON;\n } else {\n mode = AccountSelectorComponent.MODE.PURCHASE_MLB_BUNDLE;\n }\n }\n\n return mode;\n }\n }, {\n key: 'getGuest',\n value: function getGuest() {\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_oneIdActions__[\"g\" /* checkOneIDAuthentication */])());\n }\n }, {\n key: 'clearGuest',\n value: function clearGuest() {\n return this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_oneIdActions__[\"i\" /* clearGuest */])());\n }\n }, {\n key: 'processRedirect',\n value: function processRedirect() {\n var isSkip = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var _props$location$query2 = this.props.location.query;\n _props$location$query2 = _props$location$query2 === undefined ? {} : _props$location$query2;\n var redirectUrl = _props$location$query2.redirectUrl;\n\n if (redirectUrl) {\n var win = window.parent !== window.self ? window.parent : window;\n win.location.href = '' + redirectUrl + (isSkip ? '&bypassAuth=true' : '');\n }\n }\n }, {\n key: 'processRedirectBySkip',\n value: function processRedirectBySkip() {\n // this.processRedirect(true);\n this.navigateToESPNPlus();\n }\n }, {\n key: 'navigateToESPNPlus',\n value: function navigateToESPNPlus() {\n var _props$location$query3 = this.props.location.query,\n query = _props$location$query3 === undefined ? {} : _props$location$query3;\n\n var newQuery = {};\n if (query[__WEBPACK_IMPORTED_MODULE_3__enums__[\"t\" /* Flags */].ONEID_ENV] === __WEBPACK_IMPORTED_MODULE_3__enums__[\"x\" /* OneIdEnv */].STAGING) {\n newQuery.debug = true;\n newQuery.disneyid = 'stg';\n }\n var win = window.parent !== window.self ? window.parent : window;\n win.location.href = Object(__WEBPACK_IMPORTED_MODULE_7__lib_format_addQueryToUrl__[\"a\" /* default */])(window.location.origin + '/watch/espnplus', newQuery);\n }\n }, {\n key: 'isNotEntitledForContent',\n value: function isNotEntitledForContent() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var packages = this.state.packages;\n var userAuth = props.userAuth;\n\n\n var authTypes = [__WEBPACK_IMPORTED_MODULE_3__enums__[\"e\" /* AuthTypes */].BAM];\n if (!packages) {\n return true;\n }\n var ESPNPlusAuthentication = Object(__WEBPACK_IMPORTED_MODULE_6__lib_auth_shallowCheckAuthentication__[\"a\" /* checkESPNPlusAuthentication */])({ authTypes: authTypes, packages: packages }, userAuth);\n\n return !ESPNPlusAuthentication;\n }\n }, {\n key: 'render',\n value: function render() {\n var _props4 = this.props,\n oneIdEnv = _props4.oneIdEnv,\n isLoggedIn = _props4.isLoggedIn,\n oneIdData = _props4.oneIdData,\n entitlements = _props4.entitlements;\n\n\n var mode = this.getMode();\n var notEntitledForContent = this.isNotEntitledForContent();\n var modeKnown = mode !== AccountSelectorComponent.MODE.UNKNOWN;\n var title = AccountSelectorComponent.TITLE[mode];\n var label = AccountSelectorComponent.LABEL[mode];\n var entitlementsInfo = entitlements && entitlements.length ? '(' + entitlements.join(',') + ')' : '(No entitlements)';\n var loginLabel = isLoggedIn ? _jsx('span', {\n className: 'login-label'\n }, void 0, 'Hi, ', _jsx('a', {\n className: 'login-btn',\n onClick: this.onLogin\n }, void 0, oneIdData.profile.firstName), entitlementsInfo) : _jsx('span', {\n className: 'login-label'\n }, void 0, _jsx('a', {\n className: 'login-btn',\n onClick: this.onLogin\n }, void 0, 'Log In'));\n\n return _jsx('div', {}, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_2_react_helmet___default.a, {\n meta: [{ name: 'robots', content: 'noindex, nofollow' }],\n script: [{\n src: OneIdJs[oneIdEnv]\n }],\n style: [{\n cssText: '\\n body {\\n background: url(https://secure.espncdn.com/redesign/assets/img/dtc/auth-bg-1280x728.png) no-repeat;\\n background-attachment: fixed;\\n background-size: cover;\\n min-height: 100vh;\\n margin: 0;\\n color: #fff;\\n font-family: SFProText, sans-serif;\\n text-align: center;\\n }\\n\\n .account-selector {\\n margin: 0 auto;\\n padding: 0 0 0 50px;\\n }\\n .selection-wrap {\\n margin: 0 auto;\\n }\\n .account-selector .title {\\n font-size: 48px;\\n }\\n .account-selector button {\\n display: inline-block;\\n padding: 10px 20px;\\n border: none;\\n font-size: 16px;\\n color: #fff;\\n text-align: center;\\n text-shadow: 0 1px 0 rgba(198, 132, 6, 0.5);\\n width: 250px;\\n height: 48px;\\n border-radius: 100px;\\n background-image: linear-gradient(to top, #cc8804, #eba114 46%, #f9b300);\\n margin: 0 5px 20px 5px;\\n cursor: pointer;\\n }\\n .account-selector button.tve-btn {\\n display: block;\\n margin: 0 auto 10px auto;\\n background-image: linear-gradient(to bottom, #0f73d7, #0066cc 47%, #045cb4);\\n }\\n .account-selector button.eplus-btn {\\n display: block;\\n margin: 0 auto 10px auto;\\n }\\n .account-selector a {\\n color: #f9b300;\\n cursor: pointer;\\n margin-right: 20px;\\n }\\n .account-selector .head-section {\\n height: 50px;\\n padding-top: 28px;\\n }\\n\\n .account-selector .head-section .logo {\\n float: left;\\n width: 100px;\\n height: auto;\\n }\\n .account-selector .head-section .login-label {\\n float: right;\\n margin-right: 20px;\\n }\\n .account-selector .head-section .login-btn {\\n margin-right: 0;\\n }\\n .account-selector .head-section .login-btn:hover {\\n text-decoration: underline;\\n }\\n '\n }]\n }), modeKnown && _jsx('div', {\n className: 'account-selector'\n }, void 0, _jsx('section', {\n className: 'head-section'\n }, void 0, _jsx('a', {\n onClick: this.navigateToESPNPlus\n }, void 0, _jsx('img', {\n className: 'logo',\n src: 'https://secure.espncdn.com/espn360/images/affiliates/svg/ESPN_PLUS/ESPN-PLUS_CLR-NEG.svg',\n alt: 'ESPN+'\n })), loginLabel), _jsx('h1', {\n className: 'title'\n }, void 0, title), _jsx('section', {\n className: 'selection-wrap'\n }, void 0, mode === AccountSelectorComponent.MODE.ACCOUNT_SELECTOR && _jsx('div', {}, void 0, _jsx('button', {\n className: 'tve-btn',\n onClick: this.onTVEClick\n }, void 0, 'Log In with TV Provider'), _jsx('button', {\n className: 'eplus-btn',\n onClick: this.onLogin\n }, void 0, 'Log In to ESPN Account'), _jsx('button', {\n className: 'eplus-btn',\n onClick: this.onPurchaseClick\n }, void 0, label)), notEntitledForContent && _jsx('div', {}, void 0, _jsx('button', {\n onClick: this.onPurchaseClick\n }, void 0, label), _jsx('a', {\n onClick: this.processRedirectBySkip,\n style: { marginLeft: 20 }\n }, void 0, 'Skip Purchase')))));\n }\n }]);\n\n return AccountSelectorComponent;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"PureComponent\"]);\n\nAccountSelectorComponent.MODE = {\n UNKNOWN: -1,\n ACCOUNT_SELECTOR: 0,\n PURCHASE_NHL: 1,\n PURCHASE_MLB_BUNDLE: 2,\n PURCHASE_MLB_ADDON: 3,\n PURCHASE_BASE: 4,\n PURCHASE_BASE_MATCHUP: 5\n};\n\nAccountSelectorComponent.TITLE = (_AccountSelectorCompo = {}, _defineProperty(_AccountSelectorCompo, AccountSelectorComponent.MODE.UNKNOWN, ''), _defineProperty(_AccountSelectorCompo, AccountSelectorComponent.MODE.ACCOUNT_SELECTOR, 'Account Selector'), _defineProperty(_AccountSelectorCompo, AccountSelectorComponent.MODE.PURCHASE_NHL, 'Add NHL.TV to ESPN+'), _defineProperty(_AccountSelectorCompo, AccountSelectorComponent.MODE.PURCHASE_MLB_BUNDLE, 'MLB.TV & ESPN+'), _defineProperty(_AccountSelectorCompo, AccountSelectorComponent.MODE.PURCHASE_MLB_ADDON, 'Add MLB.TV to ESPN+'), _defineProperty(_AccountSelectorCompo, AccountSelectorComponent.MODE.PURCHASE_BASE, 'More Sports. More Leagues.'), _defineProperty(_AccountSelectorCompo, AccountSelectorComponent.MODE.PURCHASE_BASE_MATCHUP, 'Matchup Paywall'), _AccountSelectorCompo);\n\nAccountSelectorComponent.LABEL = (_AccountSelectorCompo2 = {}, _defineProperty(_AccountSelectorCompo2, AccountSelectorComponent.MODE.UNKNOWN, ''), _defineProperty(_AccountSelectorCompo2, AccountSelectorComponent.MODE.ACCOUNT_SELECTOR, 'Start My 7 Day Trial'), _defineProperty(_AccountSelectorCompo2, AccountSelectorComponent.MODE.PURCHASE_NHL, '$24.99/monthly'), _defineProperty(_AccountSelectorCompo2, AccountSelectorComponent.MODE.PURCHASE_MLB_BUNDLE, '$29.98/monthly'), _defineProperty(_AccountSelectorCompo2, AccountSelectorComponent.MODE.PURCHASE_MLB_ADDON, '$29.98/monthly'), _defineProperty(_AccountSelectorCompo2, AccountSelectorComponent.MODE.PURCHASE_BASE, '$4.99/monthly'), _defineProperty(_AccountSelectorCompo2, AccountSelectorComponent.MODE.PURCHASE_BASE_MATCHUP, 'Start My 7 Day Trial'), _AccountSelectorCompo2);\n\nvar mapStateToProps = function mapStateToProps(state) {\n var oneIdState = Object(__WEBPACK_IMPORTED_MODULE_11__selectors_oneIdSelector__[\"a\" /* default */])(state);\n return {\n oneIdEnv: Object(__WEBPACK_IMPORTED_MODULE_10__selectors_appSelector__[\"y\" /* oneIdEnvSelector */])(state),\n isLoggedIn: Object(__WEBPACK_IMPORTED_MODULE_11__selectors_oneIdSelector__[\"f\" /* oneIdLoggedInSelector */])(state),\n entitlements: Object(__WEBPACK_IMPORTED_MODULE_11__selectors_oneIdSelector__[\"d\" /* oneIdEntitlementsSelector */])(state),\n oneIdData: oneIdState && oneIdState.data,\n userAuth: Object(__WEBPACK_IMPORTED_MODULE_12__selectors_authenticationSelectors__[\"r\" /* userAuthSelector */])(state)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"b\"] = (Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(AccountSelectorComponent));\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 325 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getDeviceTypeFromUA;\nfunction getDeviceTypeFromUA() {\n var device = null;\n if (typeof window !== 'undefined') {\n var _window = window,\n navigator = _window.navigator;\n\n if (typeof navigator !== 'undefined') {\n var _navigator$userAgent = navigator.userAgent,\n userAgent = _navigator$userAgent === undefined ? '' : _navigator$userAgent;\n\n var lowerUa = userAgent.toLowerCase();\n\n device = 'unknown';\n if (lowerUa.match(/windows phone/) || lowerUa.match(/windows/) && lowerUa.match(/tablet/)) {\n device = 'windowsphone';\n } else if (userAgent.match(/iPad/i) || userAgent.match(/iP(od|hone)/i)) {\n device = 'ios';\n } else if (userAgent.match(/Android/i)) {\n device = \"android\";\n }\n }\n }\n return device;\n}\n\n/***/ }),\n/* 326 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isSafariBrowser;\nfunction isSafariBrowser() {\n var isSafari = false;\n if (typeof window !== 'undefined' && window.navigator) {\n var _window = window,\n navigator = _window.navigator;\n\n isSafari = navigator.vendor && navigator.vendor.indexOf('Apple') > -1 && navigator.userAgent && navigator.userAgent.indexOf('CriOS') == -1 && navigator.userAgent.indexOf('FxiOS') == -1;\n }\n\n return isSafari;\n}\n\n/***/ }),\n/* 327 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getAndroidVersionFromUserAgent;\nfunction getAndroidVersionFromUserAgent() {\n var androidVersion = void 0;\n if (typeof window !== 'undefined') {\n var userAgent = window.navigator.userAgent;\n\n if (userAgent.indexOf(\"Android\") >= 0) {\n androidVersion = parseFloat(userAgent.slice(userAgent.indexOf(\"Android\") + 8));\n }\n }\n return androidVersion;\n};\n\n/***/ }),\n/* 328 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sortByRank;\n/**\n * sortByRank - Utilizes the rank object property to sort in ascending order.\n *\n * @param {Object} firstElement - First object to compare via rank property\n * @param {Object} secondElement - Second object to compare via rank property\n *\n * @return {Integer} - Returns the proper integer value to sort elements.\n */\nfunction sortByRank(firstElement, secondElement) {\n var firstRank = firstElement.rank;\n var secondRank = secondElement.rank;\n\n return firstRank === secondRank ? 0 : firstRank < secondRank ? -1 : 1; // eslint-disable-line no-nested-ternary\n}\n\n/***/ }),\n/* 329 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getAdsConfigByEdition;\n/**\n * getAdsConfigByEdition - Returns the proper edition adsConfig object from the external `app-configurations`\n * JSON; defaults to an empty object for easier destructuring.\n *\n * @param {string} edition - Top level app edition obtained from editionMapping\n * @param {object} adsConfig = {} - External adsConfig object supporting multiple editions\n *\n * @return {object} - Config object mapped to `edition`\n */\nfunction getAdsConfigByEdition(edition) {\n var adsConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // catches null or undefined\n if (!edition || !adsConfig) {\n return {};\n }\n\n if (adsConfig[edition]) {\n return adsConfig[edition];\n }\n\n if (edition === 'us' && adsConfig.domestic) {\n return adsConfig.domestic;\n }\n\n // no mapping found from external config object\n return {};\n}\n\n/***/ }),\n/* 330 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getPrerollConfigByEdition;\n/**\n * getPrerollConfigByEdition - Returns the proper edition prerollConfig object from the external `app-configurations`\n * JSON; defaults to an empty object for easier destructuring.\n *\n * @param {string} edition - edition obtained from editionSelector()\n * @param {object} prerollConfig = {} - External app-configurations prerollConfig object supporting\n * multiple editions\n *\n * @return {object} - Config object containing contentType rules (`intervals`, `savePrerollHistory`)\n */\nfunction getPrerollConfigByEdition(edition) {\n var prerollConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // catches null or undefined\n if (!edition || !prerollConfig) {\n return {};\n }\n\n if (prerollConfig && prerollConfig[edition] && prerollConfig[edition].contentTypeRules) {\n return prerollConfig[edition].contentTypeRules;\n }\n\n return {};\n}\n\n/***/ }),\n/* 331 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getAdsConfigByAdProvider;\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n/**\n * getAdsConfigByAdProvider - Returns the proper adsConfig object from the external `app-configurations`\n * JSON containing Ad Provider specific properties; defaults to an empty object for easier destructuring.\n *\n * @param {string} provider - Video Ads Provider either `freewheel` or `google`\n * @param {object} adsConfig - External adsConfig object supporting multiple editions\n *\n * @return {object} - Config object containing client specific properties for `freewheel` or `google`\n */\nfunction getAdsConfigByAdProvider(provider, adsConfig) {\n var activeAdProvider = provider || adsConfig && adsConfig.activeAdProvider;\n var config = adsConfig || {};\n var defaultProvider = 'google';\n\n if (activeAdProvider && config[activeAdProvider]) {\n return _extends({\n activeAdProvider: activeAdProvider\n }, config, config[activeAdProvider]);\n }\n\n // Safety to ensure we return `freewheel` as the default\n if (config[defaultProvider]) {\n return _extends({\n activeAdProvider: defaultProvider\n }, config, config[defaultProvider]);\n }\n\n return {};\n}\n\n/***/ }),\n/* 332 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = hasTier;\nfunction hasTier() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n tier = _ref.tier;\n\n var tierType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n return typeof tier === 'string' && tierType !== '' && tier.trim().toLowerCase() === tierType;\n}\n\n/***/ }),\n/* 333 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = hasObj;\nfunction hasObj(obj, strProps) {\n var props = strProps.split('.');\n for (var i = 0, l = props.length; i < l; i++) {\n if (!obj || !obj.hasOwnProperty(props[i])) {\n return false;\n }\n obj = obj[props[i]];\n }\n return true;\n}\n\n/***/ }),\n/* 334 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./app/lib/url-adapter/isStitcherUrl.js\nfunction isStitcherUrl() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n return url.indexOf('/stitcher/') !== -1;\n}\n// CONCATENATED MODULE: ./app/lib/url-adapter/isArtworkUrl.js\n\n\nfunction isArtworkUrl() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n return url.indexOf('artwork.') !== -1 && !isStitcherUrl(url);\n}\n// CONCATENATED MODULE: ./app/lib/url-adapter/isCombinerUrl.js\n\n\nfunction isCombinerUrl() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n return url.indexOf('/combiner/') !== -1 && !isStitcherUrl(url);\n}\n// CONCATENATED MODULE: ./app/lib/url-adapter/canUseCombiner.js\nfunction canUseCombiner() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n return url.indexOf('espncdn.com') !== -1;\n}\n// EXTERNAL MODULE: ./app/lib/format/queryString.js\nvar queryString = __webpack_require__(18);\n\n// CONCATENATED MODULE: ./app/lib/url-adapter/index.js\n/* unused harmony export toSecureCombinerUrl */\n/* unused harmony export convertToCombinerUrl */\n/* unused harmony export convertToCombinerQueryString */\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = removeDimensions;\n/* unused harmony export removeParam */\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getImageUrlWithParams;\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n\n\n\n\n\n\n// This is the threshold in which we shouldn't request a resized image, but the natural one instead\n\nvar NATURAL_THRESHOLD = 1800;\n\nfunction toSecureCombinerUrl(url) {\n if (isCombinerUrl(url)) {\n return url.replace('http://a.espncdn.com', 'https://secure.espncdn.com');\n }\n return url;\n}\n\n/**\n * Converts an eligible url to a combiner url\n * @param {string} url\n */\nfunction convertToCombinerUrl(url) {\n if (url && !isCombinerUrl(url) && !isStitcherUrl(url)) {\n return url.replace(/(http:\\/\\/a\\.espncdn\\.com|https:\\/\\/secure\\.espncdn\\.com)/, 'https://secure.espncdn.com/combiner/i?img=');\n }\n // TODO: remove once page api starts to return secure combiner url\n return toSecureCombinerUrl(url);\n}\n\n/**\n * For now, the only params to replace are width and height. If more params are needed, a more algorithmic\n * approach should be used\n * @param {string} query - Query string\n */\nfunction convertToCombinerQueryString(query) {\n return query.replace('width=', 'w=').replace('height=', 'h=');\n}\n\n/**\n * Removes all sizing dimension parameters from an image\n * @param {string} url\n */\nfunction removeDimensions(url) {\n if (url && typeof url === 'string') {\n return url.replace(/(?:width|height|[wh])=\\d*&?/g, '');\n }\n return url;\n}\n\n/**\n * Removes a given parameter from the url\n * @param {string} url\n * @param {string} param\n */\nfunction removeParam() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var param = arguments[1];\n\n if (param) {\n var paramRegex = new RegExp(param + '=[a-zA-Z0-9_]*', 'g');\n return url.replace(paramRegex, '');\n }\n return url;\n}\n\n/**\n * This function will replace/remove dimensions of an image if specified in params.\n * It will also add any other params specified.\n * Note: This will add any parameters that are not height/width dimensions\n * @param {string} urlArg\n * @param {object} params - Supports { width, cquality, height }\n */\nfunction getImageUrlWithParams(urlArg) {\n var paramsArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!isArtworkUrl(urlArg) && !canUseCombiner(urlArg)) {\n return urlArg;\n }\n var url = !isArtworkUrl(urlArg) ? convertToCombinerUrl(urlArg) : urlArg;\n\n var params = paramsArg;\n var _params = params,\n width = _params.width,\n height = _params.height;\n\n // if the dimensions are altered, remove all existing dimension params\n\n if (width || height) {\n url = removeDimensions(url);\n\n // if the width of the image is larger than a defined threshold, just use the natural image\n if (isCombinerUrl(url) && width >= NATURAL_THRESHOLD) {\n // remove width by destructure and spread\n var _params2 = params,\n omittedWidth = _params2.width,\n cleansedParams = _objectWithoutProperties(_params2, ['width']);\n\n params = cleansedParams;\n }\n }\n\n var qs = Object(queryString[\"a\" /* default */])(params, false, url.indexOf('?') > -1);\n if (isCombinerUrl(url)) {\n qs = convertToCombinerQueryString(qs);\n }\n return '' + url + qs;\n}\n\n/***/ }),\n/* 335 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* jshint node:true */\n\n\n\nvar IntlMessageFormat = __webpack_require__(692)['default'];\n\n// Add all locale data to `IntlMessageFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\n__webpack_require__(699);\n\n// Re-export `IntlMessageFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlMessageFormat;\nexports['default'] = exports;\n\n\n/***/ }),\n/* 336 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\nexports.extend = extend;\nvar hop = Object.prototype.hasOwnProperty;\n\nfunction extend(obj) {\n var sources = Array.prototype.slice.call(arguments, 1),\n i, len, source, key;\n\n for (i = 0, len = sources.length; i < len; i += 1) {\n source = sources[i];\n if (!source) { continue; }\n\n for (key in source) {\n if (hop.call(source, key)) {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\nexports.hop = hop;\n\n//# sourceMappingURL=utils.js.map\n\n/***/ }),\n/* 337 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./app/webapp/page/buckets/BucketHeaderContainer.js + 1 modules\nvar BucketHeaderContainer = __webpack_require__(338);\n\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// EXTERNAL MODULE: ./app/common/selectors/bootstrapSelector.js\nvar bootstrapSelector = __webpack_require__(29);\n\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./app/common/selectors/pageSelector.js\nvar pageSelector = __webpack_require__(13);\n\n// EXTERNAL MODULE: ./app/common/selectors/heroSelector.js\nvar heroSelector = __webpack_require__(56);\n\n// EXTERNAL MODULE: ./app/common/selectors/analyticsSelectors.js\nvar analyticsSelectors = __webpack_require__(54);\n\n// EXTERNAL MODULE: ./node_modules/reselect/lib/index.js\nvar lib = __webpack_require__(9);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// CONCATENATED MODULE: ./app/common/selectors/scheduleModuleBucketsSelector.js\n\n\nvar scheduleModuleSelector = function scheduleModuleSelector(_ref) {\n var _ref$scheduleModule = _ref.scheduleModule,\n scheduleModule = _ref$scheduleModule === undefined ? {} : _ref$scheduleModule;\n return scheduleModule;\n};\n\n/* harmony default export */ var scheduleModuleBucketsSelector = (Object(lib[\"createSelector\"])(scheduleModuleSelector, function (_ref2) {\n var _ref2$buckets = _ref2.buckets,\n buckets = _ref2$buckets === undefined ? [] : _ref2$buckets;\n return buckets;\n}));\n\nvar scheduleModuleNameSelector = Object(lib[\"createSelector\"])(scheduleModuleSelector, function (_ref3) {\n var _ref3$name = _ref3.name,\n name = _ref3$name === undefined ? 'scheduleModule' : _ref3$name;\n return name;\n});\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/common/Logo.js\nvar Logo = __webpack_require__(219);\n\n// EXTERNAL MODULE: ./app/lib/omniture/index.js\nvar omniture = __webpack_require__(34);\n\n// CONCATENATED MODULE: ./app/common/selectors/appBaseUrlSelector.js\n\n\n\n/* harmony default export */ var appBaseUrlSelector = (Object(lib[\"createSelector\"])(appSelector[\"j\" /* default */], function (_ref) {\n var _ref$location = _ref.location,\n location = _ref$location === undefined ? {} : _ref$location;\n var host = location.host,\n protocol = location.protocol,\n baseUrl = location.baseUrl;\n\n return protocol + '://' + host + baseUrl;\n}));\n// EXTERNAL MODULE: ./app/lib/format/queryString.js\nvar queryString = __webpack_require__(18);\n\n// EXTERNAL MODULE: ./app/common/selectors/routingSelector.js\nvar routingSelector = __webpack_require__(23);\n\n// CONCATENATED MODULE: ./app/common/selectors/currentUrlSelector.js\n\n\n\n\n\n/* harmony default export */ var currentUrlSelector = (Object(lib[\"createSelector\"])(appSelector[\"j\" /* default */], routingSelector[\"a\" /* default */], function (_ref, _ref2) {\n var _ref$location = _ref.location,\n location = _ref$location === undefined ? {} : _ref$location;\n var _ref2$locationBeforeT = _ref2.locationBeforeTransitions,\n locationBeforeTransitions = _ref2$locationBeforeT === undefined ? {} : _ref2$locationBeforeT;\n var host = location.host,\n protocol = location.protocol,\n baseUrl = location.baseUrl,\n origQuery = location.query;\n\n var _ref3 = locationBeforeTransitions || {},\n _ref3$basename = _ref3.basename,\n basename = _ref3$basename === undefined ? baseUrl : _ref3$basename,\n _ref3$pathname = _ref3.pathname,\n pathname = _ref3$pathname === undefined ? '/' : _ref3$pathname,\n _ref3$query = _ref3.query,\n query = _ref3$query === undefined ? origQuery : _ref3$query;\n\n return protocol + '://' + host + basename + pathname + Object(queryString[\"a\" /* default */])(query);\n}));\n// EXTERNAL MODULE: ./app/common/selectors/providerSelector.js\nvar providerSelector = __webpack_require__(53);\n\n// EXTERNAL MODULE: ./app/common/selectors/authenticationSelectors.js\nvar authenticationSelectors = __webpack_require__(10);\n\n// CONCATENATED MODULE: ./app/common/social/EmailShare.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\nvar shareBaseUrl = 'mailto:';\n\nvar EmailShare_EmailShare = function EmailShare(_ref) {\n var appBaseUrl = _ref.appBaseUrl,\n content = _ref.content;\n var id = content.id,\n subject = content.name;\n\n var query = Object(queryString[\"a\" /* default */])({\n body: appBaseUrl + '?id=' + id,\n subject: subject\n }, true);\n var shareUrl = '' + shareBaseUrl + query;\n\n return _jsx('a', {\n className: 'btn-social sm icon-font-before icon-email-solid-before',\n 'data-notrack': 'true',\n 'data-route': 'false',\n href: shareUrl\n });\n};\n\n/* harmony default export */ var social_EmailShare = (EmailShare_EmailShare);\n// CONCATENATED MODULE: ./app/common/social/FacebookShare.js\nvar FacebookShare__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\nvar FacebookShare_shareBaseUrl = 'https://www.facebook.com/sharer/sharer.php';\n\nvar FacebookShare_FacebookShare = function FacebookShare(_ref) {\n var appBaseUrl = _ref.appBaseUrl,\n content = _ref.content,\n lang = _ref.lang,\n country = _ref.country;\n var id = content.id,\n title = content.name;\n\n var langParam = lang && lang !== '' ? '&lang=' + lang : '';\n var countryParam = country && country !== '' ? '&country=' + country.toLowerCase() : '';\n var query = Object(queryString[\"a\" /* default */])({\n title: title,\n u: appBaseUrl + '?id=' + id + langParam + countryParam\n }, true);\n var shareUrl = '' + FacebookShare_shareBaseUrl + query;\n\n return FacebookShare__jsx('a', {\n className: 'btn-social sm icon-font-before icon-facebook-solid-before',\n 'data-notrack': 'true',\n 'data-route': 'false',\n href: shareUrl\n });\n};\n\n/* harmony default export */ var social_FacebookShare = (FacebookShare_FacebookShare);\n// CONCATENATED MODULE: ./app/common/social/TwitterShare.js\nvar TwitterShare__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\nvar TwitterShare_shareBaseUrl = 'https://twitter.com/intent/tweet';\n\nvar TwitterShare_TwitterShare = function TwitterShare(_ref) {\n var appBaseUrl = _ref.appBaseUrl,\n content = _ref.content,\n currentUrl = _ref.currentUrl;\n var id = content.id,\n text = content.name;\n\n var query = Object(queryString[\"a\" /* default */])({\n lang: 'en',\n original_referer: currentUrl,\n text: text,\n url: appBaseUrl + '?id=' + id\n }, true);\n var shareUrl = '' + TwitterShare_shareBaseUrl + query;\n\n return TwitterShare__jsx('a', {\n className: 'btn-social sm icon-font-before icon-twitter-solid-before',\n 'data-notrack': 'true',\n 'data-route': 'false',\n href: shareUrl\n });\n};\n\n/* harmony default export */ var social_TwitterShare = (TwitterShare_TwitterShare);\n// CONCATENATED MODULE: ./app/common/social/SharePalette.js\nvar SharePalette__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint react/no-unused-prop-types: 0 */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar shareOutlets = [{ key: 'email', Component: social_EmailShare }, { key: 'facebook', Component: social_FacebookShare }, { key: 'twitter', Component: social_TwitterShare }];\n\n// curry the tracking to bind to presentational click handlers\nvar SharePalette_generateClickHandler = function generateClickHandler(content, page, provider, socialPlatform, userAuth, entitlementsTracking, isDomestic) {\n return function (event) {\n if (event.preventDefault) {\n event.preventDefault();\n }\n\n Object(omniture[\"r\" /* trackSocialShareClick */])(content, page, provider, socialPlatform, userAuth, entitlementsTracking, isDomestic);\n };\n};\n\n/**\n * The pageShell provided JS provides share functionality, by binding click handlers to the rendered DOM of this components.\n * The implementation of share functionality pprevents React Synthetic Events from firing. As a result, we are maintaining\n * event listeners on the references to the DOM elements.\n *\n * Here is the external JavaScript from the pageShell: https://code.espn.com/webdev/score/blob/develop/static/js/helpers/social_clicks.js\n */\n\nvar SharePalette_SharePalette = function (_Component) {\n _inherits(SharePalette, _Component);\n\n function SharePalette(props) {\n _classCallCheck(this, SharePalette);\n\n var _this = _possibleConstructorReturn(this, (SharePalette.__proto__ || Object.getPrototypeOf(SharePalette)).call(this, props));\n\n _this.clickHandlers = {}; // reference to click handlers so we may unbind\n _this.removeClickHandlers = _this.removeClickHandlers.bind(_this);\n _this.setupClickHandlers = _this.setupClickHandlers.bind(_this);\n return _this;\n }\n\n _createClass(SharePalette, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setupClickHandlers();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n // update event listeners with latest data from store\n this.removeClickHandlers();\n this.setupClickHandlers(nextProps);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.removeClickHandlers();\n }\n }, {\n key: 'setupClickHandlers',\n value: function setupClickHandlers() {\n var _this2 = this;\n\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var content = props.content,\n page = props.page,\n provider = props.provider,\n userAuth = props.userAuth,\n entitlementsTracking = props.entitlementsTracking,\n isDomestic = props.isDomestic;\n\n shareOutlets.forEach(function (outlet) {\n _this2.clickHandlers[outlet.key] = SharePalette_generateClickHandler(content, page, provider, outlet.key, userAuth, entitlementsTracking, isDomestic);\n _this2.refs[outlet.key].addEventListener('click', _this2.clickHandlers[outlet.key]);\n });\n }\n }, {\n key: 'removeClickHandlers',\n value: function removeClickHandlers() {\n var _this3 = this;\n\n Object.keys(this.clickHandlers).forEach(function (key) {\n _this3.refs[key].removeEventListener('click', _this3.clickHandlers[key]);\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n return SharePalette__jsx('div', {\n className: 'shareMenu',\n style: { display: this.props.intlApp ? 'none' : 'block' }\n }, void 0, SharePalette__jsx('span', {\n className: 'shareMenu__toggle icon-font-after icon-share-solid-after'\n }), SharePalette__jsx('ul', {\n className: 'shareMenu__list'\n }, void 0, shareOutlets.map(function (outlet) {\n return react_default.a.createElement(\n 'li',\n { ref: outlet.key, key: 'social-share-' + outlet.key },\n react_default.a.createElement(outlet.Component, _this4.props)\n );\n })));\n }\n }]);\n\n return SharePalette;\n}(react[\"Component\"]);\n\nvar SharePalette_mapStateToProps = function mapStateToProps(state) {\n return {\n appBaseUrl: appBaseUrlSelector(state),\n currentUrl: currentUrlSelector(state),\n country: Object(appSelector[\"h\" /* countrySelector */])(state),\n page: Object(pageSelector[\"c\" /* default */])(state),\n provider: Object(providerSelector[\"a\" /* default */])(state),\n userAuth: Object(authenticationSelectors[\"r\" /* userAuthSelector */])(state),\n entitlementsTracking: Object(analyticsSelectors[\"c\" /* entitlementsTrackingSelector */])(state),\n intlApp: Object(appSelector[\"p\" /* intlAppSelector */])(state),\n lang: Object(appSelector[\"q\" /* intlSelector */])(state).lang,\n isDomestic: Object(appSelector[\"s\" /* isDomesticSelector */])(state)\n };\n};\n\n/* harmony default export */ var social_SharePalette = (Object(es[\"b\" /* connect */])(SharePalette_mapStateToProps)(SharePalette_SharePalette));\n// EXTERNAL MODULE: ./app/webapp/alert/UpcomingAlert.js + 1 modules\nvar UpcomingAlert = __webpack_require__(339);\n\n// EXTERNAL MODULE: ./app/webapp/common/playable.js + 2 modules\nvar playable = __webpack_require__(64);\n\n// EXTERNAL MODULE: ./app/lib/format/getMinutesUntilStart.js\nvar getMinutesUntilStart = __webpack_require__(202);\n\n// EXTERNAL MODULE: ./app/lib/format/dateFormat.js\nvar dateFormat = __webpack_require__(33);\n\n// CONCATENATED MODULE: ./app/webapp/scheduleModule/ScheduleEventCard.js\nvar ScheduleEventCard__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar ScheduleEventCard__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction ScheduleEventCard__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ScheduleEventCard__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction ScheduleEventCard__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\nvar DEFAULT_DISPLAY_ALERT_UNTIL = 30; // minutes prior to the event startTime\nvar IS_BLACKED_OUT_MESSAGE = 'Not available in your area';\n\nvar ScheduleEventCard_ScheduleEventCard = function (_Component) {\n ScheduleEventCard__inherits(ScheduleEventCard, _Component);\n\n function ScheduleEventCard(props) {\n ScheduleEventCard__classCallCheck(this, ScheduleEventCard);\n\n var _this = ScheduleEventCard__possibleConstructorReturn(this, (ScheduleEventCard.__proto__ || Object.getPrototypeOf(ScheduleEventCard)).call(this, props));\n\n _this.state = {\n displayAlert: false\n };\n _this.toggleAlert = _this.toggleAlert.bind(_this);\n return _this;\n }\n\n ScheduleEventCard__createClass(ScheduleEventCard, [{\n key: 'getAlertEl',\n value: function getAlertEl(displayTime) {\n var content = this.props.content;\n\n if (this.state.displayAlert) {\n return ScheduleEventCard__jsx(UpcomingAlert[\"a\" /* default */], {\n align: 'center',\n animation: 'slide',\n content: content,\n displayTime: displayTime,\n onClick: this.toggleAlert,\n onClose: this.toggleAlert\n });\n }\n return null;\n }\n }, {\n key: 'getDisplayTime',\n value: function getDisplayTime() {\n var _props = this.props,\n utc = _props.content.utc,\n dateFormatStr = _props.dateFormat,\n userLocation = _props.userLocation,\n nextDayString = _props.nextDayString;\n\n var timeZone = userLocation && userLocation.timeZone;\n\n return dateFormat[\"a\" /* default */].getDateTimeString(utc, dateFormatStr, timeZone, 'schedule-event', nextDayString);\n }\n }, {\n key: 'shouldAlertOnClick',\n value: function shouldAlertOnClick() {\n var _props2 = this.props,\n content = _props2.content,\n alertThreshold = _props2.alertThreshold;\n\n if (content.status === enums[\"n\" /* ContentStatus */].UPCOMING) {\n var minUntilStart = Object(getMinutesUntilStart[\"a\" /* default */])(content);\n return minUntilStart <= 0 || minUntilStart >= alertThreshold;\n }\n return false;\n }\n }, {\n key: 'toggleAlert',\n value: function toggleAlert(event) {\n event.preventDefault();\n this.setState({ displayAlert: !this.state.displayAlert });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props3 = this.props,\n content = _props3.content,\n clickHandler = _props3.clickHandler,\n userIsBlackedOut = _props3.userIsBlackedOut,\n showLock = _props3.showLock;\n var id = content.id,\n name = content.name,\n sourceArg = content.source,\n subtitleArg = content.subtitle;\n\n var source = sourceArg;\n var subtitle = subtitleArg;\n if (!source && subtitle) {\n var tmpArr = subtitle.split(' • ');\n source = tmpArr.shift();\n subtitle = tmpArr.join(' • ');\n }\n\n var footerText = subtitle;\n var subtitleClickHandler = null;\n\n if (userIsBlackedOut) {\n footerText = IS_BLACKED_OUT_MESSAGE;\n // it wasn't working before and not sure if the blackout map will always work, so disabled\n // subtitleClickHandler = blackoutClickHandler;\n }\n\n var keyClass = showLock ? ' icon-lock-solid-before' : '';\n var displayTime = this.getDisplayTime();\n // don't use the injected clickHandler if we should alert instead\n var handleClick = this.shouldAlertOnClick() ? this.toggleAlert : clickHandler;\n\n return ScheduleEventCard__jsx('article', {\n className: 'contentItem contentItem--module contentItem--hasAlert',\n 'data-id': id\n }, void 0, this.getAlertEl(displayTime), ScheduleEventCard__jsx('header', {\n className: 'contentItem__header contentItem__header--module'\n }, void 0, ScheduleEventCard__jsx('div', {\n href: '#',\n className: 'contentItem__header__wrapper'\n }, void 0, ScheduleEventCard__jsx(Logo[\"a\" /* default */], {\n iconHref: content.iconHref,\n className: 'contentItem__logo'\n }))), ScheduleEventCard__jsx('a', {\n onClick: handleClick\n }, void 0, ScheduleEventCard__jsx('section', {\n className: 'contentItem__content contentItem__content--module'\n }, void 0, ScheduleEventCard__jsx('div', {\n className: 'collection_item_meta icon-font-before' + keyClass\n }, void 0, ScheduleEventCard__jsx('div', {\n className: 'collection_item_truncate'\n }, void 0, ScheduleEventCard__jsx('span', {}, void 0, displayTime), ScheduleEventCard__jsx('span', {}, void 0, source))), ScheduleEventCard__jsx('h1', {\n className: 'contentItem__title'\n }, void 0, name))), ScheduleEventCard__jsx('footer', {\n className: 'contentItem__footer contentItem__footer--module'\n }, void 0, ScheduleEventCard__jsx('div', {\n onClick: subtitleClickHandler,\n className: 'metaData'\n }, void 0, ScheduleEventCard__jsx('span', {}, void 0, footerText)), ScheduleEventCard__jsx(social_SharePalette, {\n content: content\n })));\n }\n }]);\n\n return ScheduleEventCard;\n}(react[\"Component\"]);\n\nScheduleEventCard_ScheduleEventCard.defaultProps = {\n alertThreshold: DEFAULT_DISPLAY_ALERT_UNTIL\n};\n\n\n/* harmony default export */ var scheduleModule_ScheduleEventCard = (Object(playable[\"a\" /* default */])(ScheduleEventCard_ScheduleEventCard));\n// CONCATENATED MODULE: ./app/webapp/scheduleModule/ScheduleModuleContainer.js\n/* unused harmony export ScheduleModule */\nvar ScheduleModuleContainer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar CONTENT_LIMIT = 4;\n\nvar ScheduleModuleContainer_ScheduleModule = function ScheduleModule(_ref) {\n var buckets = _ref.buckets,\n scheduleModuleName = _ref.scheduleModuleName,\n _ref$contentLimit = _ref.contentLimit,\n contentLimit = _ref$contentLimit === undefined ? CONTENT_LIMIT : _ref$contentLimit,\n _ref$bootstrap$schedu = _ref.bootstrap.scheduleModule,\n scheduleModule = _ref$bootstrap$schedu === undefined ? {} : _ref$bootstrap$schedu,\n page = _ref.page,\n hero = _ref.hero,\n placementPrefix = _ref.placementPrefix,\n messages = _ref.messages,\n formatMessage = _ref.intl.formatMessage,\n intlDateFormat = _ref.intlDateFormat;\n var noHero = page.noHero;\n\n var classes = 'contentCollection contentCollection--watchSchedule sub-module';\n var headerTitle = formatMessage(messages['schedule.module.header.live']); // should never actually use this default\n var logo = void 0;\n var alertThreshold = void 0;\n var schedPageHref = 'schedule';\n var placement = placementPrefix; // nielsen placement\n var targetBucket = void 0;\n var unSortedContents = [];\n\n if (buckets.length === 1) {\n var bucket = buckets[0];\n var _bucket$tags = bucket.tags,\n origTags = _bucket$tags === undefined ? [] : _bucket$tags;\n\n var tags = [].concat(_toConsumableArray(origTags));\n var upcomingTagIndex = tags.indexOf(enums[\"l\" /* BucketStatus */].WEB_UPCOMING);\n var liveTagIndex = tags.indexOf(enums[\"l\" /* BucketStatus */].WEB_LIVE);\n if (upcomingTagIndex !== -1) {\n headerTitle = formatMessage(messages['schedule.module.header.upcoming.on']);\n tags.splice(upcomingTagIndex, 1);\n } else if (liveTagIndex !== -1) {\n headerTitle = formatMessage(messages['schedule.module.header.live']);\n tags.splice(liveTagIndex, 1);\n }\n\n var pageName = tags.pop();\n var scheduleModuleConfig = scheduleModule[scheduleModuleName];\n var channel = '';\n if (scheduleModuleConfig) {\n channel = scheduleModuleConfig.channel;\n logo = {\n src: scheduleModuleConfig.logo,\n alt: pageName\n };\n }\n alertThreshold = 0;\n placement += 'upcoming';\n schedPageHref += '?type=upcoming' + (channel ? '&channel=' + channel : '');\n targetBucket = bucket;\n }\n\n // page specific schedule module not found, now find the default live or upcoming schedule module feed\n if (!targetBucket) {\n buckets.some(function (bucket) {\n var _bucket$tags2 = bucket.tags,\n tags = _bucket$tags2 === undefined ? [] : _bucket$tags2;\n\n if ((noHero || hero && (hero.type === enums[\"o\" /* ContentType */].VOD || hero.status === enums[\"n\" /* ContentStatus */].REPLAY)) && tags.indexOf(enums[\"l\" /* BucketStatus */].WEB_LIVE) !== -1) {\n headerTitle = formatMessage(messages['schedule.module.header.live']);\n placement += 'top-live';\n classes += ' live';\n targetBucket = bucket;\n return true;\n } else if ((noHero || hero && hero.type === enums[\"o\" /* ContentType */].LISTING && hero.status !== enums[\"n\" /* ContentStatus */].REPLAY) && tags.indexOf(enums[\"l\" /* BucketStatus */].WEB_UPCOMING) !== -1) {\n headerTitle = formatMessage(messages['schedule.module.header.upcoming']);\n placement += 'upcoming';\n schedPageHref += '?type=upcoming';\n targetBucket = bucket;\n return true;\n }\n return false;\n });\n }\n\n if (targetBucket) {\n unSortedContents = targetBucket.contents;\n }\n\n var eventDateNextDayString = formatMessage(messages['schedule.module.eventDate.tomorrow']);\n\n var contents = unSortedContents.slice(0, contentLimit).sort(function (contentA, contentB) {\n var aDate = new Date(contentA.utc || contentA.time);\n var bDate = new Date(contentB.utc || contentB.time);\n return aDate.getTime() - bDate.getTime();\n });\n\n var cards = contents.map(function (content) {\n return ScheduleModuleContainer__jsx(scheduleModule_ScheduleEventCard, {\n content: content,\n placement: placement,\n dateFormat: intlDateFormat,\n alertThreshold: alertThreshold,\n formatMessage: formatMessage,\n messages: messages,\n nextDayString: eventDateNextDayString\n }, 'eventcard-' + content.name);\n });\n\n return contents.length > 0 ? ScheduleModuleContainer__jsx('section', {\n style: { zIndex: 300 },\n className: classes\n }, void 0, ScheduleModuleContainer__jsx(BucketHeaderContainer[\"a\" /* default */], {\n appPageTitle: 'Schedule',\n name: headerTitle,\n logo: logo,\n link: schedPageHref\n }), cards) : null;\n};\n\nvar ScheduleModuleContainer_mapStateToProps = function mapStateToProps(state) {\n return {\n buckets: scheduleModuleBucketsSelector(state),\n scheduleModuleName: scheduleModuleNameSelector(state),\n bootstrap: Object(bootstrapSelector[\"a\" /* default */])(state),\n page: Object(pageSelector[\"c\" /* default */])(state),\n hero: Object(heroSelector[\"a\" /* default */])(state),\n placementPrefix: Object(analyticsSelectors[\"g\" /* placementPrefixSelector */])(state),\n intlDateFormat: Object(appSelector[\"i\" /* dateFormatSelector */])(state)\n };\n};\n\n/* harmony default export */ var ScheduleModuleContainer = __webpack_exports__[\"a\"] = (Object(es[\"b\" /* connect */])(ScheduleModuleContainer_mapStateToProps)(Object(injectIntl[\"a\" /* default */])(ScheduleModuleContainer_ScheduleModule)));\n\n/***/ }),\n/* 338 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// CONCATENATED MODULE: ./app/common/BucketHeader.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar BucketHeader = function BucketHeader(_ref) {\n var title = _ref.title,\n _ref$logo = _ref.logo;\n _ref$logo = _ref$logo === undefined ? {} : _ref$logo;\n var src = _ref$logo.src,\n alt = _ref$logo.alt,\n seeAllText = _ref.seeAllText;\n return _jsx(\"div\", {\n className: \"collection__headerWrap\"\n }, void 0, _jsx(\"h1\", {}, void 0, title, src && _jsx(\"img\", {\n className: \"collection__headerWrap__logo\",\n src: src,\n alt: alt\n })), _jsx(\"span\", {\n className: \"see-all\"\n }, void 0, seeAllText));\n};\n\n/* harmony default export */ var common_BucketHeader = (BucketHeader);\n// EXTERNAL MODULE: ./app/common/LinkWithFlags.js\nvar LinkWithFlags = __webpack_require__(147);\n\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// CONCATENATED MODULE: ./app/webapp/page/buckets/BucketHeaderContainer.js\nvar BucketHeaderContainer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\nvar BucketHeaderContainer_BucketHeaderContainer = function BucketHeaderContainer(_ref) {\n var className = _ref.className,\n displaySize = _ref.displaySize,\n formatMessage = _ref.intl.formatMessage,\n name = _ref.name,\n logo = _ref.logo,\n link = _ref.link,\n messages = _ref.messages,\n size = _ref.size;\n\n var title = '' + name + (displaySize && size ? ' (' + size + ')' : '');\n return BucketHeaderContainer__jsx('header', {\n className: className\n }, void 0, link ? BucketHeaderContainer__jsx(LinkWithFlags[\"a\" /* default */], {\n to: link,\n className: 'collection_title_link',\n 'data-route': 'false'\n }, void 0, BucketHeaderContainer__jsx(common_BucketHeader, {\n title: title,\n logo: logo,\n seeAllText: formatMessage(messages['page.bucket.header.seeAll'])\n })) : BucketHeaderContainer__jsx('span', {}, void 0, BucketHeaderContainer__jsx(common_BucketHeader, {\n title: title,\n logo: logo,\n seeAllText: ''\n })));\n};\n\n/* harmony default export */ var buckets_BucketHeaderContainer = __webpack_exports__[\"a\"] = (Object(injectIntl[\"a\" /* default */])(BucketHeaderContainer_BucketHeaderContainer));\n\n/***/ }),\n/* 339 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-intl/lib/index.es.js + 1 modules\nvar index_es = __webpack_require__(95);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// EXTERNAL MODULE: ./app/common/PropTypes.js\nvar PropTypes = __webpack_require__(28);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// CONCATENATED MODULE: ./app/common/alert/Alert.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar classModifiers = {\n center: 'alert--center',\n fade: 'alert__animateFadeIn alert__animateFadeIn--run',\n slide: 'alert__animateSlideIn alert__animateSlideIn--run'\n};\n\n/**\n * Generic alert UI component\n */\nvar Alert_Alert = function Alert(_ref) {\n var align = _ref.align,\n animation = _ref.animation,\n className = _ref.className,\n message = _ref.message,\n style = _ref.style,\n onClose = _ref.onClose;\n\n var finalClassName = classnames_default()('alert', classModifiers[align], classModifiers[animation], className);\n return _jsx('div', {\n className: 'alert__isOverlay',\n style: style\n }, void 0, _jsx('div', {\n className: finalClassName\n }, void 0, message, _jsx('a', {\n onClick: onClose,\n className: 'alert_button--close icon-font-after icon-close-solid-after'\n })));\n};\n\n/* harmony default export */ var alert_Alert = (Alert_Alert);\n// EXTERNAL MODULE: ./app/lib/format/dateFormat.js\nvar dateFormat = __webpack_require__(33);\n\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./app/common/selectors/authenticationSelectors.js\nvar authenticationSelectors = __webpack_require__(10);\n\n// CONCATENATED MODULE: ./app/webapp/alert/UpcomingAlert.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar UpcomingAlert__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Upcoming Alert UI component\n */\nvar UpcomingAlert_UpcomingAlert = function UpcomingAlert(_ref) {\n var align = _ref.align,\n animation = _ref.animation,\n className = _ref.className,\n content = _ref.content,\n displayTime = _ref.displayTime,\n dateFormatStr = _ref.dateFormatStr,\n messages = _ref.messages,\n moreText = _ref.moreText,\n onClose = _ref.onClose,\n style = _ref.style,\n userLocation = _ref.userLocation;\n var name = content.name,\n utc = content.utc,\n sourceArg = content.source,\n subtitle = content.subtitle;\n\n var timeZone = userLocation && userLocation.timeZone;\n var startTime = displayTime || dateFormat[\"a\" /* default */].getDateTimeString(utc, dateFormatStr, timeZone);\n var source = sourceArg;\n if (!source && subtitle.indexOf(' • ') > -1) {\n var tmpArr = subtitle.split(' • ');\n source = tmpArr.shift();\n }\n var message = react_default.a.createElement(index_es[\"a\" /* FormattedMessage */], _extends({}, messages['schedule.module.alert.upcoming'], {\n tagName: 'p',\n values: {\n name: name,\n startTime: UpcomingAlert__jsx('span', {}, void 0, startTime),\n source: source,\n moreText: moreText\n }\n }));\n return UpcomingAlert__jsx(alert_Alert, {\n align: align,\n animation: animation,\n className: className,\n message: message,\n style: style,\n onClose: onClose\n });\n};\n\nUpcomingAlert_UpcomingAlert.defaultProps = {\n content: {},\n moreText: ''\n};\n\nvar UpcomingAlert_mapStateToProps = function mapStateToProps(state) {\n return {\n dateFormatStr: Object(appSelector[\"i\" /* dateFormatSelector */])(state),\n userLocation: Object(authenticationSelectors[\"s\" /* userLocationSelector */])(state)\n };\n};\n\n/* harmony default export */ var alert_UpcomingAlert = __webpack_exports__[\"a\"] = (Object(es[\"b\" /* connect */])(UpcomingAlert_mapStateToProps)(Object(injectIntl[\"a\" /* default */])(UpcomingAlert_UpcomingAlert)));\n\n/***/ }),\n/* 340 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseForOwn = __webpack_require__(714),\n createBaseEach = __webpack_require__(716);\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n\n/***/ }),\n/* 341 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createBaseFor = __webpack_require__(715);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n/***/ }),\n/* 342 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(135),\n eq = __webpack_require__(110);\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n\n\n/***/ }),\n/* 343 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar overArg = __webpack_require__(289);\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n\n/***/ }),\n/* 344 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n\n\n/***/ }),\n/* 345 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeKeys = __webpack_require__(313),\n baseKeysIn = __webpack_require__(731),\n isArrayLike = __webpack_require__(51);\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n\n\n/***/ }),\n/* 346 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseKeys = __webpack_require__(200),\n getTag = __webpack_require__(201),\n isArguments = __webpack_require__(112),\n isArray = __webpack_require__(32),\n isArrayLike = __webpack_require__(51),\n isBuffer = __webpack_require__(141),\n isPrototype = __webpack_require__(137),\n isTypedArray = __webpack_require__(142);\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n\n\n/***/ }),\n/* 347 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lib_util_canUseDOM__ = __webpack_require__(61);\n\n\nvar globalVideoElement = __WEBPACK_IMPORTED_MODULE_0__lib_util_canUseDOM__[\"a\" /* default */] ? document.createElement('video') : null;\n\n// click handlers will \"prime\" the video element to allow for \"one-click play\" by calling \"load\"\n// we only want to do this once\nif (__WEBPACK_IMPORTED_MODULE_0__lib_util_canUseDOM__[\"a\" /* default */]) {\n globalVideoElement.prime = function () {\n if (!globalVideoElement.primed) {\n globalVideoElement.load();\n globalVideoElement.primed = true;\n }\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (globalVideoElement);\n\n/***/ }),\n/* 348 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-helmet/lib/Helmet.js\nvar Helmet = __webpack_require__(30);\nvar Helmet_default = /*#__PURE__*/__webpack_require__.n(Helmet);\n\n// EXTERNAL MODULE: ./app/common/ads/InContentAd.js\nvar InContentAd = __webpack_require__(150);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/common/PropTypes.js\nvar PropTypes = __webpack_require__(28);\n\n// EXTERNAL MODULE: ./app/common/Logo.js\nvar Logo = __webpack_require__(219);\n\n// CONCATENATED MODULE: ./app/common/page/search/SearchBucketsHeader.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar SearchBucketsHeader_SearchBucketsHeader = function SearchBucketsHeader(props) {\n if (props.logoUrl) {\n return _jsx('header', {\n className: 'section-header'\n }, void 0, _jsx(Logo[\"a\" /* default */], {\n logoUrl: props.logoUrl,\n tags: props.tags,\n className: 'section-header_logo'\n }), _jsx('h1', {\n className: 'section-header_title'\n }, void 0, props.name));\n }\n\n return _jsx('header', {\n className: 'section-header'\n }, void 0, _jsx('h1', {\n className: 'section-header_title'\n }, void 0, props.name));\n};\n\n/* harmony default export */ var search_SearchBucketsHeader = (SearchBucketsHeader_SearchBucketsHeader);\n// EXTERNAL MODULE: ./app/webapp/page/buckets/BucketHeaderContainer.js + 1 modules\nvar BucketHeaderContainer = __webpack_require__(338);\n\n// CONCATENATED MODULE: ./app/common/page/buckets/CollectionBucketHeader.js\nvar CollectionBucketHeader__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar CollectionBucketHeader_CollectionBucketHeader = function CollectionBucketHeader(_ref) {\n var iconHref = _ref.iconHref,\n name = _ref.name;\n return CollectionBucketHeader__jsx('header', {\n className: 'section-header'\n }, void 0, iconHref ? CollectionBucketHeader__jsx(Logo[\"a\" /* default */], {\n iconHref: iconHref,\n className: 'section-header_logo'\n }) : null, CollectionBucketHeader__jsx('h1', {\n className: 'section-header_title'\n }, void 0, name));\n};\n\n/* harmony default export */ var buckets_CollectionBucketHeader = (CollectionBucketHeader_CollectionBucketHeader);\n// EXTERNAL MODULE: ./app/common/page/buckets/Tile.js + 1 modules\nvar Tile = __webpack_require__(349);\n\n// CONCATENATED MODULE: ./app/common/page/buckets/Bucket.js\n/* unused harmony export getBucketDimension */\n/* unused harmony export generateBucketCss */\nvar Bucket__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _collectionRowClassMa, _ratioBreakPointMap;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\nvar Bucket_getExpandableThresholds = function getExpandableThresholds() {\n var _ref;\n\n var maxToDisplay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;\n return _ref = {}, _defineProperty(_ref, enums[\"i\" /* BucketLayout */].DEFAULT_EXPANDABLE, [4, maxToDisplay]), _defineProperty(_ref, enums[\"i\" /* BucketLayout */].LARGE_EXPANDABLE, [8, maxToDisplay]), _ref;\n};\n\nvar collectionRowClassMap = (_collectionRowClassMa = {}, _defineProperty(_collectionRowClassMa, enums[\"i\" /* BucketLayout */].FiveTwo, 'dtc-watch__row--promos'), _defineProperty(_collectionRowClassMa, enums[\"i\" /* BucketLayout */].TwoThree, 'dtc-watch__row--films'), _defineProperty(_collectionRowClassMa, enums[\"i\" /* BucketLayout */].FourThree, 'dtc-watch__row--shows'), _collectionRowClassMa);\n\nvar dtcItemLayouts = [enums[\"i\" /* BucketLayout */].FiveTwo, enums[\"i\" /* BucketLayout */].TwoThree, enums[\"i\" /* BucketLayout */].FourThree];\n\nvar featureLayouts = [enums[\"i\" /* BucketLayout */]['feature-left'], enums[\"i\" /* BucketLayout */]['feature-right'], enums[\"i\" /* BucketLayout */].TAPESTRY_LEFT, enums[\"i\" /* BucketLayout */].TAPESTRY_RIGHT];\n\nvar featureLeftLayout = [enums[\"i\" /* BucketLayout */]['feature-left'], enums[\"i\" /* BucketLayout */].TAPESTRY_LEFT];\n\nvar featureRightLayout = [enums[\"i\" /* BucketLayout */]['feature-right'], enums[\"i\" /* BucketLayout */].TAPESTRY_RIGHT];\n\nvar breakPointMqMap = {\n mobile: '@media screen and (max-width: 597px)',\n 'mobile-lg': '@media screen and (min-width: 598px) and (max-width: 767px)',\n tablet: '@media screen and (min-width: 768px) and (max-width: 1023px)',\n desktop: '@media screen and (min-width: 1024px) and (max-width: 1259px)',\n 'desktop-lg': '@media screen and (min-width: 1260px)'\n};\n\nvar ratioBreakPointMap = (_ratioBreakPointMap = {}, _defineProperty(_ratioBreakPointMap, enums[\"j\" /* BucketRatio */].SixteenNine, ['tablet', 'desktop', 'desktop-lg']), _defineProperty(_ratioBreakPointMap, enums[\"j\" /* BucketRatio */].FourThree, ['mobile', 'mobile-lg', 'tablet', 'desktop', 'desktop-lg']), _defineProperty(_ratioBreakPointMap, enums[\"j\" /* BucketRatio */].FiveTwo, ['tablet', 'desktop', 'desktop-lg']), _defineProperty(_ratioBreakPointMap, enums[\"j\" /* BucketRatio */].TwoThree, ['mobile', 'mobile-lg', 'tablet', 'desktop', 'desktop-lg']), _ratioBreakPointMap);\n\n/**\n * Calculates the dimension of bucket\n *\n * @param {string} ratio - tile ratio\n * @param {string} mq - media query break point\n * @param {number} contentLength - number of contents in bucket\n * @param {boolean} calculateRows - a flag to indicate whether we retrieve the maximum rows to display\n * @return {object} - dimension of bucket\n */\nfunction getBucketDimension() {\n var ratio = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : enums[\"j\" /* BucketRatio */].SixteenNine;\n var mq = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : enums[\"h\" /* BreakPoints */].DESKTOP_LARGE;\n var contentLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var calculateRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var columns = enums[\"k\" /* BucketRatioCols */][mq][ratio];\n var rows = void 0;\n if (columns) {\n if (calculateRows) {\n rows = Math.max(1, Math.floor(contentLength / columns));\n } else {\n rows = contentLength >= 2 * columns ? 2 : 1;\n }\n }\n return { rows: rows, columns: columns };\n}\n\nfunction generateBucketCss(row) {\n var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : enums[\"j\" /* BucketRatio */].SixteenNine;\n var pageType = arguments[2];\n\n // NOTE: For catalog template pages (i.e. /watch/series) we do not want to hide tiles via css\n // This prevents the bucketCssCache from saving upon client side route transitions.\n if (pageType === enums[\"y\" /* PageType */].CATALOG) {\n return '';\n }\n\n var breakPoints = ratioBreakPointMap[ratio];\n var css = '';\n /* eslint-disable max-len */\n breakPoints.forEach(function (key) {\n var mediaFeatures = breakPointMqMap[key];\n if (!mediaFeatures) {\n return;\n }\n\n var col = enums[\"k\" /* BucketRatioCols */][key][ratio];\n if (ratio === enums[\"j\" /* BucketRatio */].SixteenNine) {\n css += '\\n ' + mediaFeatures + ' {\\n .watch-home .collection--watch .collection_row--' + row + ' article.collection_item--one:nth-of-type(1n+' + (col * row + 1) + '){\\n display:none;\\n }\\n }\\n ';\n } else {\n var layoutKey = Object.keys(enums[\"j\" /* BucketRatio */]).filter(function (ratioKey) {\n return enums[\"j\" /* BucketRatio */][ratioKey] === ratio;\n })[0];\n var layoutType = enums[\"i\" /* BucketLayout */][layoutKey];\n css += '\\n ' + mediaFeatures + ' {\\n .watch-home .' + collectionRowClassMap[layoutType] + '.dtc-watch__row--' + row + ' .dtc-watch__item:nth-of-type(1n+' + (col * row + 1) + '){\\n display:none;\\n }\\n }\\n ';\n }\n });\n\n return css;\n}\n\nvar Bucket_Bucket = function (_Component) {\n _inherits(Bucket, _Component);\n\n function Bucket(props) {\n _classCallCheck(this, Bucket);\n\n var _this = _possibleConstructorReturn(this, (Bucket.__proto__ || Object.getPrototypeOf(Bucket)).call(this, props));\n\n _this.getImageFormat = _this.getImageFormat.bind(_this);\n _this.getLayoutType = _this.getLayoutType.bind(_this);\n _this.getBucketLink = _this.getBucketLink.bind(_this);\n _this.isTileFeatured = _this.isTileFeatured.bind(_this);\n _this.isPagePreview = _this.isPagePreview.bind(_this);\n _this.shouldShowAllTiles = _this.shouldShowAllTiles.bind(_this);\n _this.showMoreClickHandler = _this.showMoreClickHandler.bind(_this);\n _this.state = {\n expanded: false\n };\n return _this;\n }\n\n /**\n * getImageFormat - Returns the proper image format that depends on the medata. Secondary\n * fallback value is derived from the contents.imageFormat. Final fallback is '16x9'\n *\n * @return {String}\n */\n\n\n _createClass(Bucket, [{\n key: 'getImageFormat',\n value: function getImageFormat() {\n var _props = this.props,\n contents = _props.contents,\n imageFormatBucket = _props.metadata.imageFormat;\n\n var _ref2 = contents[0] || {},\n imageFormatContent = _ref2.imageFormat;\n\n return imageFormatBucket || imageFormatContent || enums[\"j\" /* BucketRatio */].SixteenNine;\n }\n\n /**\n * getLayoutType - Returns the type of layout to be used for the bucket. Utilizes the pageType\n * and imageFormat to obtain the proper value. It can be overwritten by the prop.layoutType.\n *\n * @param {string} pageType\n * @param {string} imageFormat\n *\n * @return {string}\n */\n\n }, {\n key: 'getLayoutType',\n value: function getLayoutType(pageType) {\n var imageFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var _props2 = this.props,\n layoutOverride = _props2.layoutOverride,\n layout = _props2.layout;\n\n var apiLayout = layout || '';\n var finalLayout = void 0;\n\n if (apiLayout !== '' && enums[\"i\" /* BucketLayout */][apiLayout]) {\n // API match found (i.e. feature-left, feature-right)\n finalLayout = enums[\"i\" /* BucketLayout */][apiLayout];\n } else if (imageFormat === enums[\"j\" /* BucketRatio */].TwoThree) {\n finalLayout = enums[\"i\" /* BucketLayout */].TwoThree;\n } else if (imageFormat === enums[\"j\" /* BucketRatio */].FourThree) {\n finalLayout = enums[\"i\" /* BucketLayout */].FourThree;\n } else if (imageFormat === enums[\"j\" /* BucketRatio */].FiveTwo) {\n finalLayout = enums[\"i\" /* BucketLayout */].FiveTwo;\n } else if (imageFormat === enums[\"j\" /* BucketRatio */].SixteenNine) {\n finalLayout = enums[\"i\" /* BucketLayout */].SixteenNine;\n } else {\n finalLayout = pageType === enums[\"y\" /* PageType */].COLLECTION ? enums[\"i\" /* BucketLayout */].COLLECTION : enums[\"i\" /* BucketLayout */].DEFAULT;\n }\n\n // Override all predefined layouts; dependent on `this.props.layoutOverride`\n if (layoutOverride) {\n finalLayout = layoutOverride;\n }\n\n return finalLayout;\n }\n\n /**\n * getBucketLink - Returns the proper bucket link to be used based on the following conditions:\n * 1) If the page is on preview mode, it uses the props.name to generate the bucket link.\n * 2) If the props.link is defined and shouldShowAllTiles() is false, it uses the props.link value\n * @return {string} - Bucket URL\n */\n\n }, {\n key: 'getBucketLink',\n value: function getBucketLink() {\n var _props3 = this.props,\n link = _props3.link,\n name = _props3.name;\n\n var bucketLink = void 0;\n // TODO: Fix this when the correct url is coming back from the page api.\n // Also note the condition in !this.shouldShowAllTiles() below\n if (this.isPagePreview()) {\n bucketLink = '/' + name.toLowerCase();\n } else if (link && !this.shouldShowAllTiles()) {\n bucketLink = link;\n }\n\n return bucketLink;\n }\n\n /**\n * isPagePreview - Returns a boolean flag value that determine if the page is a preview page\n * based on the existence of `page_preview` in the tags prop.\n *\n * @return {boolean}\n */\n\n }, {\n key: 'isPagePreview',\n value: function isPagePreview() {\n var tags = this.props.tags;\n\n return tags && tags.indexOf('page_preview') !== -1;\n }\n\n /**\n * isTileFeatured - Returns a boolean flag value that verifies the existence of the contents\n * in addition to matching the index and layoutType.\n *\n * @param {number} index - current index of the array for the given tile\n * @param {string} layoutType - the type of layout to determine if the tile should be featured\n *\n * @return {boolean}\n */\n\n }, {\n key: 'isTileFeatured',\n value: function isTileFeatured(index, layoutType) {\n var featureLayoutsList = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var contents = this.props.contents;\n\n\n return contents && index === 0 && featureLayoutsList.indexOf(layoutType) !== -1;\n }\n\n /**\n * shouldShowAllTiles - Returns a boolean flag that only returns true if the pageType is `COLLECTION`\n * or if the layoutType is 1) TwoThree or 2) FourThree and the hideHeaderLink boolean is true.\n *\n * @return {boolean}\n */\n\n }, {\n key: 'shouldShowAllTiles',\n value: function shouldShowAllTiles() {\n var _props4 = this.props,\n hideHeaderLink = _props4.hideHeaderLink,\n pageType = _props4.pageType;\n\n var layoutType = this.getLayoutType(pageType, this.getImageFormat());\n\n return pageType === enums[\"y\" /* PageType */].COLLECTION || (layoutType === enums[\"i\" /* BucketLayout */].TwoThree || layoutType === enums[\"i\" /* BucketLayout */].FourThree) && hideHeaderLink;\n }\n }, {\n key: 'showMoreClickHandler',\n value: function showMoreClickHandler() {\n this.setState({ expanded: !this.state.expanded });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props5 = this.props,\n bucketId = _props5.bucketId,\n contents = _props5.contents,\n groupId = _props5.groupId,\n iconHref = _props5.iconHref,\n _props5$metadata = _props5.metadata,\n totalCount = _props5$metadata.totalCount,\n displayCount = _props5$metadata.displayCount,\n name = _props5.name,\n pageType = _props5.pageType,\n tags = _props5.tags,\n tier = _props5.tier;\n\n var imageFormat = this.getImageFormat();\n var layoutType = this.getLayoutType(pageType, imageFormat);\n var layoutTypeHasDefinedShreshhold = {}.hasOwnProperty.call(enums[\"u\" /* LayoutThresholds */], layoutType);\n var bucketLink = this.getBucketLink();\n var isFeaturedLeftLayout = featureLeftLayout.indexOf(layoutType) !== -1;\n var isFeaturedRightLayout = featureRightLayout.indexOf(layoutType) !== -1;\n // There are 2 reasons to distinguish between the legacy layout and ones introduced for DTC\n // 1. tiles in DTC layout is not playable, but navigable (5x2, 4x3 and 2x3)\n // 2. css class works differently\n var layoutVariant = dtcItemLayouts.indexOf(layoutType) !== -1 ? enums[\"v\" /* LayoutVariant */].DTC : enums[\"v\" /* LayoutVariant */].COLLECTION;\n var isDTCLayout = layoutVariant === enums[\"v\" /* LayoutVariant */].DTC;\n var isTileNavigable = isDTCLayout;\n var displaySize = !this.isPagePreview() && !isTileNavigable;\n var layoutThreshold = void 0;\n var rows = void 0;\n\n if (layoutTypeHasDefinedShreshhold) {\n // use the static threshold for the `layoutType` when defined\n layoutThreshold = enums[\"u\" /* LayoutThresholds */][layoutType];\n } else {\n // by default, `displayCount` matches with `totalCount` when not entered or\n // set larger than `totalCount` in admin console, use the default layout logic which is 1 row and\n // 2 when tiles are enough to fill 2 rows on non show/film pages.\n // Otherwise, calculate maximum rows that can fill up with tiles.\n var calculateRows = displayCount < totalCount;\n // retrieve the maximum `layoutThreshold` using the largest break point, then hide tiles accordingly with css\n // for the smaller break point, that's more performant than re-rendering the exact tiles per break points.\n\n var _getBucketDimension = getBucketDimension(imageFormat, 'desktop-lg', contents.length, calculateRows),\n bucketRows = _getBucketDimension.rows,\n columns = _getBucketDimension.columns;\n\n if (bucketRows && !this.shouldShowAllTiles()) {\n rows = bucketRows;\n // For catalog template pages such as show/film pages we want to show all content only when the `see all` link\n // is not defined. Threshold should be calculated for all other page types\n if (pageType === enums[\"y\" /* PageType */].CATALOG) {\n layoutThreshold = bucketLink ? bucketRows * columns : undefined;\n } else {\n layoutThreshold = bucketRows * columns;\n }\n }\n }\n\n // Applying `*--showAll` class overrides the tile css to always appear on all break points\n var collectionRowClassName = classnames_default()(collectionRowClassMap[layoutType], layoutType === enums[\"i\" /* BucketLayout */].SixteenNine && rows && 'collection_row--' + rows, isDTCLayout && rows && 'dtc-watch__row--' + rows, {\n collection_row: !isDTCLayout,\n 'dtc-watch__row': isDTCLayout,\n 'dtc-watch__row--showAll': isDTCLayout && this.shouldShowAllTiles(),\n 'collection_row--collections': pageType === enums[\"y\" /* PageType */].COLLECTION,\n 'collection_row--showAll': pageType === enums[\"y\" /* PageType */].COLLECTION\n });\n\n // Add classes based on the layoutType\n var collectionClassName = classnames_default()('collection', {\n 'collection--watch': featureLayouts.indexOf(layoutType) === -1 && !isDTCLayout,\n 'collection--featured-left': isFeaturedLeftLayout,\n 'collection--featured-right': isFeaturedRightLayout\n });\n\n // Check tags to determine if bucket should be expandable\n var footer = void 0;\n var expandThresholds = Bucket_getExpandableThresholds(contents.length);\n var layoutTags = tags.filter(function (tag) {\n return Object.keys(expandThresholds).indexOf(tag) !== -1;\n });\n\n if (layoutTags.length > 0) {\n var expanded = this.state.expanded;\n\n var layoutTag = layoutTags[0];\n var minimumToDisplay = expandThresholds[layoutTag][0];\n var maximumToDisplay = expandThresholds[layoutTag][1];\n layoutThreshold = expanded ? maximumToDisplay : minimumToDisplay;\n\n if (contents.length > minimumToDisplay) {\n var text = expanded ? 'Show Fewer' : 'Show More';\n var footerClass = classnames_default()('showMore__link', 'icon-font-before', { active: expanded });\n footer = Bucket__jsx('footer', {\n className: 'showMore'\n }, void 0, Bucket__jsx('a', {\n onClick: this.showMoreClickHandler,\n className: footerClass\n }, void 0, Bucket__jsx('span', {}, void 0, text)));\n }\n }\n\n // `placement` is used for `playable` HOC\n var placement = 'home-' + name + '-grid';\n var header = Bucket__jsx(BucketHeaderContainer[\"a\" /* default */], {\n className: 'collection_header',\n name: name,\n placement: placement,\n tier: tier,\n size: totalCount,\n link: bucketLink,\n displaySize: displaySize,\n isDTCLayout: isDTCLayout\n });\n\n switch (pageType) {\n case enums[\"y\" /* PageType */].COLLECTION:\n header = Bucket__jsx(buckets_CollectionBucketHeader, {\n name: name,\n iconHref: iconHref,\n tags: tags\n });\n placement = 'collections-' + name + '-grid';\n break;\n case enums[\"y\" /* PageType */].FEATURES:\n placement = 'features-' + name + '-grid';\n break;\n case enums[\"y\" /* PageType */].SEARCH:\n placement = 'search-' + this.props.name + '-grid';\n header = Bucket__jsx(search_SearchBucketsHeader, {\n name: this.props.name,\n logoUrl: this.props.logoUrl,\n tags: this.props.tags\n });\n break;\n default:\n break;\n }\n\n var collectionContents = layoutThreshold ? contents.slice(0, layoutThreshold) : contents;\n /* eslint-disable */\n var collectionRowChildren = collectionContents.map(function (content, index) {\n return Bucket__jsx(Tile[\"a\" /* default */], {\n bucketId: bucketId,\n content: content,\n groupId: groupId,\n featured: _this2.isTileFeatured(index, layoutType, featureLayouts),\n layoutType: layoutType,\n isNavigable: isTileNavigable,\n placement: placement,\n bucketName: name,\n tier: tier\n }, 'tile-' + bucketId + '-' + index + ':' + content.id + ':');\n });\n /* eslint-enable */\n\n // TODO: is there a better way to do this?\n if (pageType === enums[\"y\" /* PageType */].COLLECTION) {\n collectionRowChildren.splice(6, 0, Bucket__jsx(InContentAd[\"a\" /* default */], {\n include: ['s'],\n adClassName: 'ad-slot-incontent2',\n refreshWhenVisible: true\n }, 'collection_row_in_content_ad'));\n }\n\n var bucket = null;\n if (collectionRowChildren && collectionRowChildren.length > 0) {\n // creates media query css for given ratio(layout) and # of rows on demand\n var bucketCss = imageFormat && rows && generateBucketCss(rows, imageFormat, pageType);\n bucket = Bucket__jsx('div', {\n className: collectionClassName\n }, void 0, bucketCss && Bucket__jsx(Helmet_default.a, {\n style: [{\n cssText: bucketCss\n }]\n }), header, Bucket__jsx('div', {\n className: collectionRowClassName\n }, void 0, collectionRowChildren), footer);\n }\n\n return bucket;\n }\n }]);\n\n return Bucket;\n}(react[\"Component\"]);\n\nBucket_Bucket.defaultProps = {\n contents: [],\n metadata: {},\n name: '',\n tags: []\n};\n\n/* harmony default export */ var buckets_Bucket = __webpack_exports__[\"a\"] = (Bucket_Bucket);\n\n/***/ }),\n/* 349 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: ./app/common/PropTypes.js\nvar PropTypes = __webpack_require__(28);\n\n// EXTERNAL MODULE: ./app/webapp/common/Stamp.js\nvar Stamp = __webpack_require__(350);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./app/common/selectors/flagsSelector.js\nvar flagsSelector = __webpack_require__(47);\n\n// EXTERNAL MODULE: ./app/lib/format/addQueryToUrl.js\nvar addQueryToUrl = __webpack_require__(70);\n\n// CONCATENATED MODULE: ./app/common/AnchorWithFlags.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\nvar AnchorWithFlags_AnchorWithFlags = function AnchorWithFlags(props) {\n var ownProps = props.ownProps,\n flags = props.flags,\n href = props.href;\n\n if (!href) {\n return react_default.a.createElement('span', ownProps);\n }\n var newProps = _extends({}, ownProps, {\n href: Object(addQueryToUrl[\"a\" /* default */])(href, flags)\n });\n return react_default.a.createElement('a', newProps);\n};\n\nvar AnchorWithFlags_mapStateToProps = function mapStateToProps(state, ownProps) {\n return {\n ownProps: ownProps,\n flags: Object(flagsSelector[\"a\" /* persistentFlagsSelector */])(state)\n };\n};\n\n/* harmony default export */ var common_AnchorWithFlags = (Object(es[\"b\" /* connect */])(AnchorWithFlags_mapStateToProps)(AnchorWithFlags_AnchorWithFlags));\n// EXTERNAL MODULE: ./app/common/ResponsiveThumbnail.js\nvar ResponsiveThumbnail = __webpack_require__(222);\n\n// EXTERNAL MODULE: ./app/webapp/common/playable.js + 2 modules\nvar playable = __webpack_require__(64);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/webapp/lib/format/index.js\nvar format = __webpack_require__(151);\n\n// CONCATENATED MODULE: ./app/common/page/buckets/Tile.js\n/* unused harmony export BaseTile */\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\nvar FEATURED_IMAGE_WIDTHS = [640, 900, 1200];\nvar IMAGE_WIDTHS = [280, 640, 1200];\n\nvar collectionItemOneLayouts = [enums[\"i\" /* BucketLayout */].DEFAULT, enums[\"i\" /* BucketLayout */].DEFAULT_UNLIMITED, enums[\"i\" /* BucketLayout */]['feature-left'], enums[\"i\" /* BucketLayout */]['feature-right'], enums[\"i\" /* BucketLayout */].TAPESTRY_LEFT, // NOTE: will be deprecated\nenums[\"i\" /* BucketLayout */].TAPESTRY_RIGHT, // NOTE: will be deprecated\nenums[\"i\" /* BucketLayout */].SixteenNine];\n\nvar Tile_Tile = function Tile(_ref) {\n var clickHandler = _ref.clickHandler,\n content = _ref.content,\n featured = _ref.featured,\n playerHref = _ref.playerHref,\n layoutType = _ref.layoutType,\n isNavigable = _ref.isNavigable,\n userIsBlackedOut = _ref.userIsBlackedOut,\n selected = _ref.selected,\n showLock = _ref.showLock,\n userLocation = _ref.userLocation,\n tileClassNames = _ref.tileClassNames;\n var id = content.id,\n description = content.description,\n imageHref = content.imageHref,\n name = content.name,\n score = content.score,\n status = content.status;\n\n var formattedSubtitle = Object(format[\"a\" /* contentSubtitle */])(content);\n var isContentUpcoming = status === enums[\"n\" /* ContentStatus */].UPCOMING;\n var isContentLive = status === enums[\"n\" /* ContentStatus */].LIVE;\n var isContentClickable = !isNavigable;\n\n var tileClassName = classnames_default()(tileClassNames, {\n collection_item: !isNavigable,\n 'dtc-watch__item': isNavigable,\n 'collection_item--one': collectionItemOneLayouts.indexOf(layoutType) !== -1 && !featured,\n 'collection_item--three': layoutType === enums[\"i\" /* BucketLayout */].COLLECTION,\n 'collection_item--featured': featured\n });\n\n var metaDataClass = classnames_default()('collection_item_meta', 'icon-font-before', {\n 'icon-lock-solid-before': showLock\n });\n\n var playButtonClass = classnames_default()({\n 'button-play button-play--video': isContentClickable,\n 'button-play--live': isContentClickable && isContentLive\n });\n\n var activeClass = classnames_default()('collection__link', {\n 'collection__link--active': selected,\n 'collection__link--upcoming': !isContentClickable && isContentUpcoming\n });\n\n // TODO: the \"isNew\" property doesn't actually exist yet\n var newStamp = content.isNew ? _jsx('div', {\n className: 'new'\n }, void 0, 'NEW') : '';\n var descriptionEl = featured && description ? _jsx('p', {\n className: 'collection_item_desc'\n }, void 0, description) : '';\n var href = void 0;\n var tileClickHandler = void 0;\n\n if (isContentClickable || isNavigable) {\n tileClickHandler = clickHandler;\n href = playerHref;\n }\n\n var subtitleEl = formattedSubtitle ? _jsx('span', {}, void 0, formattedSubtitle) : null;\n var timeZone = userLocation && userLocation.timeZone;\n return isNavigable ? _jsx(common_AnchorWithFlags, {\n 'data-route': 'false',\n 'data-id': id,\n 'data-score': score,\n className: tileClassName,\n href: href,\n onClick: tileClickHandler\n }, void 0, _jsx('div', {\n className: 'dtc-watch__item__content'\n }, void 0, _jsx('img', {\n className: 'dtc-watch__film__image',\n src: imageHref,\n alt: name\n }))) : _jsx('article', {\n onClick: tileClickHandler,\n className: tileClassName,\n 'data-id': id,\n 'data-score': score\n }, void 0, _jsx(common_AnchorWithFlags, {\n 'data-route': 'false',\n className: activeClass,\n href: href\n }, void 0, _jsx('figure', {\n className: 'collection_item_media'\n }, void 0, newStamp, _jsx('div', {\n className: 'media-wrapper media-wrapper--16x9'\n }, void 0, _jsx(ResponsiveThumbnail[\"a\" /* default */], {\n src: imageHref,\n srcSetWidths: featured ? FEATURED_IMAGE_WIDTHS : IMAGE_WIDTHS,\n sizes: '33vw',\n alt: name\n }), _jsx('div', {\n className: playButtonClass\n }), _jsx(Stamp[\"a\" /* default */], {\n timeZone: timeZone,\n content: content,\n userIsBlackedOut: userIsBlackedOut,\n isTile: true\n })), _jsx('figcaption', {}, void 0, _jsx('h1', {\n className: 'collection_item_title'\n }, void 0, name), _jsx('div', {\n className: metaDataClass\n }, void 0, _jsx('div', {\n className: 'collection_item_truncate'\n }, void 0, subtitleEl)), descriptionEl))));\n};\n\n/* harmony default export */ var buckets_Tile = __webpack_exports__[\"a\"] = (Object(playable[\"a\" /* default */])(Tile_Tile));\n\n\n/***/ }),\n/* 350 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_classnames__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_PropTypes__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__common_injectIntl__ = __webpack_require__(20);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\nvar Stamp = function Stamp(_ref) {\n var isTile = _ref.isTile,\n content = _ref.content,\n formatMessage = _ref.intl.formatMessage,\n messages = _ref.messages,\n userIsBlackedOut = _ref.userIsBlackedOut;\n var type = content.type,\n status = content.status,\n duration = content.duration,\n shortDate = content.shortDate;\n\n var stampClass = __WEBPACK_IMPORTED_MODULE_1_classnames___default()('media-duration', {\n 'media-duration--item': isTile, // gotta pass in the parent doing the embedding because of this class, not cool\n 'media-duration--live': status === __WEBPACK_IMPORTED_MODULE_2__enums__[\"n\" /* ContentStatus */].LIVE,\n 'media-duration--blackout': userIsBlackedOut\n });\n\n var stampContent = null;\n if (userIsBlackedOut) {\n stampContent = formatMessage(messages.blackout);\n } else if (type === __WEBPACK_IMPORTED_MODULE_2__enums__[\"o\" /* ContentType */].VOD) {\n // TODO: DTC - remove fallback once `content` has `duration` for VOD\n stampContent = duration || content.streams[0].duration;\n } else {\n switch (status) {\n case __WEBPACK_IMPORTED_MODULE_2__enums__[\"n\" /* ContentStatus */].LIVE:\n stampContent = formatMessage(messages.live);\n break;\n case __WEBPACK_IMPORTED_MODULE_2__enums__[\"n\" /* ContentStatus */].UPCOMING:\n {\n stampContent = shortDate;\n break;\n }\n case __WEBPACK_IMPORTED_MODULE_2__enums__[\"n\" /* ContentStatus */].REPLAY:\n // TODO: DTC - remove fallback once `content` has `duration` for VOD\n stampContent = duration || content.streams[0].duration;\n break;\n default:\n stampContent = duration || null;\n }\n }\n\n if (stampContent) {\n return _jsx('div', {\n className: stampClass\n }, void 0, stampContent);\n }\n return null;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_4__common_injectIntl__[\"a\" /* default */])(Stamp));\n\n/***/ }),\n/* 351 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = contentSubtitle;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\n\n\nfunction contentSubtitle(_ref) {\n var type = _ref.type,\n _ref$subtitle = _ref.subtitle,\n subtitle = _ref$subtitle === undefined ? '' : _ref$subtitle,\n _ref$streams = _ref.streams,\n streams = _ref$streams === undefined ? [] : _ref$streams;\n\n // no subtitle with non-auth vod\n if (type === __WEBPACK_IMPORTED_MODULE_0__enums__[\"o\" /* ContentType */].VOD && streams[0] && !streams[0].authTypes) {\n return null;\n }\n\n return subtitle;\n}\n\n/***/ }),\n/* 352 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = newRelicTrackEvent;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cache_requestCache__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__requestProxy__ = __webpack_require__(43);\n\n\n\nfunction newRelicTrackEvent(payload) {\n var newrelicInsertKey = payload.newrelicInsertKey,\n newrelicAccountId = payload.newrelicAccountId,\n trackingData = payload.trackingData;\n\n var url = 'https://insights-collector.newrelic.com/v1/accounts/' + newrelicAccountId + '/events';\n\n return __WEBPACK_IMPORTED_MODULE_0__cache_requestCache__[\"a\" /* default */].post(url).send(trackingData).set('X-Insert-Key', newrelicInsertKey).set('Accept', 'application/json').use(__WEBPACK_IMPORTED_MODULE_1__requestProxy__[\"a\" /* default */]).then(function (res) {\n return JSON.stringify(res.body);\n }).catch(function (err) {\n return {\n \"success\": false,\n \"err\": err\n };\n });\n}\n\n/***/ }),\n/* 353 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getAppLink;\n/* unused harmony export appReady */\n/* unused harmony export sendLoadVideosMessage */\n/* unused harmony export showWatchStreamByCmsId */\n/* unused harmony export showWatchStreamByChannel */\n/* unused harmony export navigateToPage */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(738);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__format_getSiteUrlForPath__ = __webpack_require__(294);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__format_queryString__ = __webpack_require__(18);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n/**\n * This library uses the native-bridge library to formulate ESPN App specific link language calls\n */\n\nvar nativeBridge = Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"a\" /* default */])();\n\nvar PROTOCOL = 'sportscenter://';\nvar DIRECTIVE = 'x-callback-url';\nvar BASE_URL = '' + PROTOCOL + DIRECTIVE;\n\nfunction sendTakeActionMessage(action, urlParams) {\n if (nativeBridge && action && urlParams) {\n nativeBridge.sendMessage('takeAction', {\n url: escape(getAppLink(action, urlParams))\n });\n }\n}\n\nfunction getAppLink(action) {\n var urlParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var useProtocolOnly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var appLink = void 0;\n\n // NOTE: Only redirect with PROTOCOL -- `sportscenter://`\n // SEE: https://espnjira.disney.com/browse/WEWEB-2071\n if (useProtocolOnly) {\n return PROTOCOL;\n }\n\n if (action && urlParams) {\n var actionPath = '' + action + Object(__WEBPACK_IMPORTED_MODULE_2__format_queryString__[\"a\" /* default */])(urlParams, true);\n appLink = BASE_URL + '/' + actionPath;\n }\n\n return appLink;\n}\n\nfunction appReady() {\n nativeBridge && nativeBridge.sendMessage('onLoadComplete');\n}\n\nfunction sendLoadVideosMessage() {\n var videos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var tracking = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (nativeBridge && videos.length > 0) {\n nativeBridge.sendMessage('loadVideos', { videos: videos, tracking: tracking });\n }\n}\n\nvar showWatchStreamByCmsId = function showWatchStreamByCmsId(playID) {\n var tracking = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var imageHref = arguments[2];\n var name = arguments[3];\n var network = arguments[4];\n\n if (playID) {\n sendTakeActionMessage('showWatchStream', _extends({}, tracking, { playID: playID, imageHref: imageHref, name: name, network: network }));\n }\n};\n\nvar showWatchStreamByChannel = function showWatchStreamByChannel(playChannel) {\n var tracking = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var imageHref = arguments[2];\n var name = arguments[3];\n var network = arguments[4];\n\n if (playChannel) {\n sendTakeActionMessage('showWatchStream', _extends({}, tracking, { playChannel: playChannel.toLowerCase(), imageHref: imageHref, name: name, network: network }));\n }\n};\n\nvar navigateToPage = function navigateToPage(path, title) {\n var tracking = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (path) {\n // app teams request we pass a full URL\n var url = Object(__WEBPACK_IMPORTED_MODULE_1__format_getSiteUrlForPath__[\"a\" /* default */])(path);\n sendTakeActionMessage('navigateToPage', _extends({}, tracking, { title: title, url: url }));\n }\n};\n\n/***/ }),\n/* 354 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__alias_Stamp__ = __webpack_require__(350);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_classnames__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__PropTypes__ = __webpack_require__(28);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n// The description has the exact html for the Hero and Playback items, but different classnames\nvar HtmlClassMap = {\n HERO: {\n figcaption: 'hero_detail',\n wrapper: 'hero_detail-wrap',\n title: 'hero_title',\n meta: 'hero_meta',\n truncate: 'hero_truncate',\n network: 'hero_network',\n event: 'hero_event'\n },\n PLAYBACK: {\n figcaption: 'playback__figcaption',\n wrapper: 'playback__wrapper',\n title: 'playback__title',\n meta: 'playback__meta',\n truncate: 'playback_truncate',\n network: '',\n event: ''\n }\n};\n\nvar ContentMetadataLarge = function ContentMetadataLarge(_ref) {\n var blurredImage = _ref.blurredImage,\n title = _ref.title,\n subtitle = _ref.subtitle,\n content = _ref.content,\n isHero = _ref.isHero,\n showLock = _ref.showLock,\n userIsBlackedOut = _ref.userIsBlackedOut;\n\n var context = isHero ? 'HERO' : 'PLAYBACK';\n var metaDataClass = __WEBPACK_IMPORTED_MODULE_2_classnames___default()(HtmlClassMap[context].meta, 'icon-font-before', {\n 'icon-lock-solid-before': showLock\n });\n\n return _jsx('figcaption', {\n className: HtmlClassMap[context].figcaption\n }, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_1__alias_Stamp__[\"a\" /* default */], {\n content: content,\n userIsBlackedOut: userIsBlackedOut\n }), blurredImage, _jsx('div', {\n className: HtmlClassMap[context].wrapper\n }, void 0, _jsx('div', {\n className: HtmlClassMap[context].title\n }, void 0, title), _jsx('div', {\n className: metaDataClass\n }, void 0, _jsx('div', {\n className: HtmlClassMap[context].truncate\n }, void 0, subtitle && _jsx('span', {}, void 0, subtitle)))));\n};\n\nContentMetadataLarge.defaultProps = {\n blurredImage: null,\n title: '',\n subtitle: ''\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (ContentMetadataLarge);\n\n/***/ }),\n/* 355 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__selectors_pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__search_SearchResultAsList__ = __webpack_require__(739);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_intl__ = __webpack_require__(95);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__buckets_Bucket__ = __webpack_require__(348);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__injectIntl__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__DownloadLink__ = __webpack_require__(740);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__actions_apiAction__ = __webpack_require__(55);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar overflowStyle = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n};\n\nvar SearchResultsContainer = function (_Component) {\n _inherits(SearchResultsContainer, _Component);\n\n function SearchResultsContainer(props) {\n _classCallCheck(this, SearchResultsContainer);\n\n var _this = _possibleConstructorReturn(this, (SearchResultsContainer.__proto__ || Object.getPrototypeOf(SearchResultsContainer)).call(this, props));\n\n _this.appendScore = _this.appendScore.bind(_this);\n _this.fillBuckets = _this.fillBuckets.bind(_this);\n _this.changeSortOrder = _this.changeSortOrder.bind(_this);\n _this.state = { buckets: [] };\n return _this;\n }\n\n _createClass(SearchResultsContainer, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (nextProps.scored && !this.props.scored || nextProps.searchTerm !== this.props.searchTerm) {\n var searchType = __WEBPACK_IMPORTED_MODULE_10__actions_apiAction__[\"a\" /* SEARCH_TYPES */].search;\n if (__WEBPACK_IMPORTED_MODULE_5__enums__[\"y\" /* PageType */].SID === nextProps.pageType) {\n searchType = __WEBPACK_IMPORTED_MODULE_10__actions_apiAction__[\"a\" /* SEARCH_TYPES */].listingsByCompetitor;\n }\n this.fillBuckets(nextProps.searchTerm, searchType);\n }\n }\n }, {\n key: 'getContainerHeader',\n value: function getContainerHeader() {\n var _props = this.props,\n messages = _props.messages,\n searchTerm = _props.searchTerm,\n pageType = _props.pageType;\n\n var downloadLink = void 0;\n\n if (pageType === __WEBPACK_IMPORTED_MODULE_5__enums__[\"y\" /* PageType */].SID && searchTerm.length > 0) {\n var fileName = this.state.pageName + '-Schedule.csv';\n downloadLink = _jsx(__WEBPACK_IMPORTED_MODULE_9__DownloadLink__[\"a\" /* default */], {\n buckets: this.state.buckets,\n text: 'Download Schedule',\n fileName: fileName,\n mimeType: 'text/csv'\n });\n }\n\n return _jsx('div', {\n className: 'search-results-header',\n style: { textAlign: 'center', padding: '16px' }\n }, void 0, _jsx('h1', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_6_react_intl__[\"a\" /* FormattedMessage */], _extends({}, messages['search.results.message'], {\n values: {\n query: _jsx('strong', {\n style: overflowStyle\n }, void 0, searchTerm)\n }\n }))), downloadLink, _jsx('hr', {\n width: '98%'\n }));\n }\n }, {\n key: 'appendScore',\n value: function appendScore(contents) {\n if (this.props.apiEnv !== __WEBPACK_IMPORTED_MODULE_5__enums__[\"b\" /* Api */].Env.DEV) {\n return contents;\n }\n return contents.map(function (content) {\n if (content.name) {\n if (!content.name.match(/\\(\\d*\\)/g)) {\n content.name = '(' + content.score + ') - ' + content.name;\n }\n }\n return content;\n });\n }\n }, {\n key: 'fillBuckets',\n value: function fillBuckets(query) {\n var queryType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_10__actions_apiAction__[\"a\" /* SEARCH_TYPES */].search;\n\n var _this2 = this;\n\n var sortBy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'startTime';\n var sortOrder = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : __WEBPACK_IMPORTED_MODULE_5__enums__[\"D\" /* SortOrder */].DESC;\n var _props2 = this.props,\n dispatch = _props2.dispatch,\n apiEnv = _props2.apiEnv;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_apiAction__[\"i\" /* getSearchResults */])(query, apiEnv, queryType, sortBy, sortOrder)).then(function (_ref) {\n var _ref$page = _ref.page,\n _ref$page$buckets = _ref$page.buckets,\n buckets = _ref$page$buckets === undefined ? [] : _ref$page$buckets,\n pageName = _ref$page.name;\n return _this2.setState({ buckets: buckets, pageName: pageName });\n }).catch(function (err) {\n return console.warn(err);\n });\n }\n }, {\n key: 'changeSortOrder',\n value: function changeSortOrder(sortBy, sortOrder) {\n var searchTerm = this.props.searchTerm;\n\n this.fillBuckets(searchTerm, __WEBPACK_IMPORTED_MODULE_10__actions_apiAction__[\"a\" /* SEARCH_TYPES */].listingsByCompetitor, sortBy, sortOrder);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n if (!this.props.enableSearch) {\n return null;\n }\n var pageType = this.props.pageType;\n\n var containerHeader = this.getContainerHeader();\n\n var bucketResults = void 0;\n var buckets = this.state.buckets || [];\n if (buckets.length > 0 && pageType !== __WEBPACK_IMPORTED_MODULE_5__enums__[\"y\" /* PageType */].SID) {\n bucketResults = buckets.map(function (bucket, index) {\n var id = bucket.id,\n name = bucket.name,\n metadata = bucket.metadata,\n _bucket$contents = bucket.contents,\n contents = _bucket$contents === undefined ? [] : _bucket$contents,\n _bucket$tags = bucket.tags,\n tags = _bucket$tags === undefined ? [] : _bucket$tags;\n\n var tag = name === 'Videos' ? __WEBPACK_IMPORTED_MODULE_5__enums__[\"i\" /* BucketLayout */].LARGE_EXPANDABLE : __WEBPACK_IMPORTED_MODULE_5__enums__[\"i\" /* BucketLayout */].DEFAULT_EXPANDABLE;\n return _jsx(__WEBPACK_IMPORTED_MODULE_7__buckets_Bucket__[\"a\" /* default */], {\n contents: _this3.appendScore(contents),\n index: index,\n layoutType: __WEBPACK_IMPORTED_MODULE_5__enums__[\"i\" /* BucketLayout */].DEFAULT_UNLIMITED,\n metadata: metadata,\n name: name,\n pageType: pageType,\n tags: [tag].concat(_toConsumableArray(tags))\n }, id + '-' + name);\n });\n } else if (pageType === __WEBPACK_IMPORTED_MODULE_5__enums__[\"y\" /* PageType */].SID) {\n bucketResults = buckets.map(function (bucket) {\n var _bucket$contents2 = bucket.contents,\n contents = _bucket$contents2 === undefined ? [] : _bucket$contents2;\n\n return _jsx(__WEBPACK_IMPORTED_MODULE_4__search_SearchResultAsList__[\"a\" /* default */], {\n contents: contents,\n sortContents: _this3.changeSortOrder\n });\n });\n }\n return _jsx('div', {\n className: 'search-result-container',\n style: { backgroundColor: 'white' }\n }, void 0, containerHeader, bucketResults);\n }\n }]);\n\n return SearchResultsContainer;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n apiEnv: Object(__WEBPACK_IMPORTED_MODULE_2__selectors_appSelector__[\"c\" /* apiEnvSelector */])(state),\n enableSearch: Object(__WEBPACK_IMPORTED_MODULE_2__selectors_appSelector__[\"l\" /* enableSearchSelector */])(state),\n scored: Object(__WEBPACK_IMPORTED_MODULE_3__selectors_pageSelector__[\"c\" /* default */])(state).scored\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_8__injectIntl__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(SearchResultsContainer)));\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 356 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/lib/util/isEmpty.js\nvar isEmpty = __webpack_require__(12);\n\n// EXTERNAL MODULE: ./app/common/actions/authenticationActions.js\nvar authenticationActions = __webpack_require__(22);\n\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./app/common/selectors/pageSelector.js\nvar pageSelector = __webpack_require__(13);\n\n// EXTERNAL MODULE: ./app/common/selectors/providerSelector.js\nvar providerSelector = __webpack_require__(53);\n\n// EXTERNAL MODULE: ./node_modules/selectn/index.js\nvar selectn = __webpack_require__(113);\nvar selectn_default = /*#__PURE__*/__webpack_require__.n(selectn);\n\n// CONCATENATED MODULE: ./app/lib/ui/isChromeOrSafari.js\nfunction isChromeOrSafari() {\n if (typeof window !== 'undefined') {\n var isSafari = /safari|applewebkit/i.test(navigator.userAgent);\n var isChrome = !!window.chrome && !!window.chrome.webstore;\n return isSafari || isChrome;\n }\n return false;\n}\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// CONCATENATED MODULE: ./app/webapp/branding/Logout.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar logoutStyle = {\n boxShadow: '0 0 6px rgba(0,0,0,0.2)'\n};\n\nvar Logout = function Logout(_ref) {\n var handleLogout = _ref.handleLogout,\n message = _ref.message,\n buttonLabel = _ref.buttonLabel;\n return _jsx('div', {\n className: 'playback__logout',\n style: logoutStyle\n }, void 0, _jsx('h2', {}, void 0, message), _jsx('a', {\n className: 'button med stand-alone',\n onClick: handleLogout\n }, void 0, buttonLabel));\n};\n\n/* harmony default export */ var branding_Logout = (Logout);\n// CONCATENATED MODULE: ./app/webapp/branding/ProviderSettings.js\nvar ProviderSettings__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\nvar ProviderSettings_ProviderSettings = function ProviderSettings(_ref) {\n var displayLogout = _ref.displayLogout,\n handleLogin = _ref.handleLogin,\n handleLogout = _ref.handleLogout,\n providerInfo = _ref.providerInfo,\n messages = _ref.messages,\n formatMessage = _ref.intl.formatMessage;\n\n var logoutEl = displayLogout ? ProviderSettings__jsx(branding_Logout, {\n handleLogout: handleLogout,\n message: formatMessage(messages['signout.message'], { providerName: providerInfo.name }),\n buttonLabel: formatMessage(messages['signout.label'])\n }) : null;\n var logoutClass = displayLogout === true ? 'playback__settingsLink icon-font-before icon-caret-down-solid-before' : 'playback__settingsLink icon-font-before';\n\n return ProviderSettings__jsx('div', {\n className: 'playback__settings playback__settings--active'\n }, void 0, ProviderSettings__jsx('a', {\n className: logoutClass,\n onClick: handleLogin\n }, void 0, ProviderSettings__jsx('span', {\n className: 'playback__settingsText'\n }, void 0, formatMessage(messages['provider.dialog.title']))), logoutEl);\n};\n\nProviderSettings_ProviderSettings.defaultProps = {\n providerInfo: {}\n};\n\n/* harmony default export */ var branding_ProviderSettings = (Object(injectIntl[\"a\" /* default */])(ProviderSettings_ProviderSettings));\n// CONCATENATED MODULE: ./app/webapp/branding/ProviderLogo.js\nvar ProviderLogo__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\nfunction BrandingElement(props) {\n if (!props.branding) {\n return null;\n }\n var _props$branding = props.branding,\n brandingName = _props$branding.name,\n brandingLogoUrl = _props$branding.logoUrl;\n\n return ProviderLogo__jsx('div', {}, void 0, ProviderLogo__jsx('a', {\n className: 'sportbrand__watch',\n onClick: function onClick(event) {\n event.preventDefault();\n window.location = '/watch/';\n }\n }, void 0, ProviderLogo__jsx('img', {\n src: brandingLogoUrl,\n className: 'imageLoaded',\n alt: brandingName\n })));\n}\n\n\nvar ProviderLogo_ProviderLogo = function ProviderLogo(_ref) {\n var displayLogout = _ref.displayLogout,\n handleLogout = _ref.handleLogout,\n providerInfo = _ref.providerInfo,\n branding = _ref.branding;\n\n var imgSrc = selectn_default()('images.colorWithPositiveBackground.href', providerInfo) || selectn_default()('images.logo.href', providerInfo) || '';\n var webLink = selectn_default()('links.web.href', providerInfo) || '/watch';\n var target = '';\n var imgStyle = {\n borderLeftWidth: 0\n };\n // hack for browser inconsistencies of rendering svgs in images\n if (isChromeOrSafari()) {\n imgStyle.width = 'auto';\n }\n var providerImg = imgSrc ? ProviderLogo__jsx('img', {\n src: imgSrc,\n className: 'imageLoaded',\n style: imgStyle,\n alt: 'Provider'\n }) : null;\n if (providerImg !== null) {\n target = '_blank';\n }\n var loggedInClass = 'playback__header--loggedIn';\n return ProviderLogo__jsx('div', {\n className: 'sportbrand ' + loggedInClass\n }, void 0, ProviderLogo__jsx(BrandingElement, {\n branding: branding\n }), ProviderLogo__jsx('a', {\n className: 'playback__provider sportbrand__provider',\n target: target,\n href: webLink\n }, void 0, providerImg), ProviderLogo__jsx(branding_ProviderSettings, {\n displayLogout: displayLogout,\n handleLogout: handleLogout,\n providerInfo: providerInfo,\n providerName: providerInfo.name\n }));\n};\n\nProviderLogo_ProviderLogo.defaultProps = {\n providerInfo: {}\n};\n\n/* harmony default export */ var branding_ProviderLogo = (ProviderLogo_ProviderLogo);\n// EXTERNAL MODULE: ./app/common/LinkWithFlags.js\nvar LinkWithFlags = __webpack_require__(147);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// CONCATENATED MODULE: ./app/webapp/branding/ProviderLogoPlayback.js\nvar ProviderLogoPlayback__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\nfunction ProviderLogoPlayback_BrandingElement(props) {\n if (!props.branding) {\n var backArrowStyle = {\n fontSize: '16px',\n color: '#FFFFFF'\n };\n\n var backTextStyle = {\n font: 'SF UI Text Regular',\n fontSize: '14px',\n color: '#FFFFFF'\n };\n\n var backStyle = {\n marginBottom: '10px'\n };\n return ProviderLogoPlayback__jsx('a', {\n style: backStyle,\n onClick: function onClick() {\n return window.history.back();\n }\n }, void 0, ProviderLogoPlayback__jsx('span', {\n className: 'icon-font-before icon-caret-left-solid-before',\n style: backArrowStyle\n }), ProviderLogoPlayback__jsx('span', {\n style: backTextStyle\n }, void 0, 'Back'));\n }\n var _props$branding = props.branding,\n brandingName = _props$branding.name,\n brandingLogoUrl = _props$branding.logoUrl;\n\n return ProviderLogoPlayback__jsx('div', {\n className: 'playback__logo'\n }, void 0, ProviderLogoPlayback__jsx(LinkWithFlags[\"a\" /* default */], {\n 'data-route': 'false',\n className: 'playback__logo__link',\n to: '/'\n }, void 0, ProviderLogoPlayback__jsx('picture', {}, void 0, ProviderLogoPlayback__jsx('img', {\n src: brandingLogoUrl,\n className: 'imageLoaded',\n alt: brandingName,\n style: { width: 'auto', maxWidth: 150 }\n }))));\n}\n\n\nvar ProviderLogoPlayback_ProviderLogoPlayback = function ProviderLogoPlayback(_ref) {\n var displayLogout = _ref.displayLogout,\n handleLogin = _ref.handleLogin,\n handleLogout = _ref.handleLogout,\n hideProviderLogo = _ref.hideProviderLogo,\n loggedIn = _ref.loggedIn,\n providerInfo = _ref.providerInfo,\n branding = _ref.branding;\n\n var headerClass = classnames_default()('playback__header', {\n 'playback__header--loggedIn': loggedIn\n });\n var imgSrc = selectn_default()('images.colorWithNegativeBackground.href', providerInfo) || selectn_default()('images.logo.href', providerInfo) || '';\n var webLink = selectn_default()('links.web.href', providerInfo) || '/watch';\n var target = '';\n var providerLogoEl = null;\n var providerSettingsEl = null;\n var providerImg = imgSrc !== '' ? ProviderLogoPlayback__jsx('img', {\n src: imgSrc,\n className: 'imageLoaded',\n style: { verticalAlign: '2px' },\n alt: 'Provider'\n }) : null;\n\n if (providerImg !== null) {\n target = '_blank';\n }\n\n if (!hideProviderLogo) {\n // PageShell CSS enforces a `display: none` rule on provider logos.\n // To avoid clashes with PageShell CSS, we overwrite styles here via JS inline styles\n providerLogoEl = ProviderLogoPlayback__jsx('div', {\n className: 'playback__provider',\n style: { display: 'inline-block' }\n }, void 0, ProviderLogoPlayback__jsx('a', {\n className: 'playback__logo__link',\n target: target,\n href: webLink\n }, void 0, ProviderLogoPlayback__jsx('picture', {}, void 0, providerImg)));\n\n providerSettingsEl = ProviderLogoPlayback__jsx(branding_ProviderSettings, {\n displayLogout: displayLogout,\n handleLogin: handleLogin,\n handleLogout: handleLogout,\n providerInfo: providerInfo\n });\n }\n\n return ProviderLogoPlayback__jsx('header', {\n className: headerClass\n }, void 0, ProviderLogoPlayback__jsx(ProviderLogoPlayback_BrandingElement, {\n branding: branding\n }), providerLogoEl, providerSettingsEl);\n};\n\nProviderLogoPlayback_ProviderLogoPlayback.defaultProps = {\n providerInfo: {}\n};\n\n/* harmony default export */ var branding_ProviderLogoPlayback = (ProviderLogoPlayback_ProviderLogoPlayback);\n// CONCATENATED MODULE: ./app/webapp/branding/BrandingContainer.js\nvar BrandingContainer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar BrandingContainer_BrandingContainer = function (_Component) {\n _inherits(BrandingContainer, _Component);\n\n function BrandingContainer(props, context) {\n _classCallCheck(this, BrandingContainer);\n\n var _this = _possibleConstructorReturn(this, (BrandingContainer.__proto__ || Object.getPrototypeOf(BrandingContainer)).call(this, props, context));\n\n _this.handleLogout = _this.handleLogout.bind(_this);\n _this.handleLogoutFromPlaybackPage = _this.handleLogoutFromPlaybackPage.bind(_this);\n _this.handleLogin = _this.handleLogin.bind(_this);\n return _this;\n }\n\n // for homepage, after user logs out, refresh page to avoid DOM maintainance (since player bundle manipulates DOM directly)\n\n\n _createClass(BrandingContainer, [{\n key: 'handleLogout',\n value: function handleLogout(event) {\n event.preventDefault();\n var _props = this.props,\n stream = _props.stream,\n dispatch = _props.dispatch;\n\n dispatch(Object(authenticationActions[\"C\" /* createAndPerformLogoutAction */])(stream)).finally(function () {\n window.location = window.location;\n });\n }\n\n // from the playback page, we're able to logout without refreshing\n\n }, {\n key: 'handleLogoutFromPlaybackPage',\n value: function handleLogoutFromPlaybackPage(event) {\n event.preventDefault();\n var _props2 = this.props,\n stream = _props2.stream,\n dispatch = _props2.dispatch;\n\n dispatch(Object(authenticationActions[\"C\" /* createAndPerformLogoutAction */])(stream));\n }\n }, {\n key: 'handleLogin',\n value: function handleLogin(event) {\n var _this2 = this;\n\n event.preventDefault();\n this.props.dispatch(Object(authenticationActions[\"D\" /* createAndPerformStartAuthenticationAction */])(null)).then(function (isAuthenticated) {\n if (isAuthenticated === false) {\n _this2.props.dispatch(Object(authenticationActions[\"N\" /* createDisplayProviderDialogAction */])());\n }\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props3 = this.props,\n branding = _props3.branding,\n isDomestic = _props3.isDomestic,\n isMobile = _props3.isMobile,\n location = _props3.location,\n providerInfo = _props3.providerInfo,\n roadblock = _props3.roadblock,\n userAuth = _props3.userAuth;\n\n var loggedIn = userAuth.indexOf(enums[\"e\" /* AuthTypes */].MVPD) !== -1 || userAuth.indexOf(enums[\"e\" /* AuthTypes */].ISP) !== -1;\n var displayLogout = !Object(isEmpty[\"a\" /* default */])(providerInfo) && userAuth.indexOf(enums[\"e\" /* AuthTypes */].MVPD) !== -1;\n var isPlayerPage = location && location.pathname === '/player';\n var hideProviderLogo = isDomestic && isPlayerPage || roadblock && isMobile;\n // different logo for player page, watch logo also visible while authd\n if (isPlayerPage) {\n return BrandingContainer__jsx(branding_ProviderLogoPlayback, {\n displayLogout: displayLogout,\n handleLogin: this.handleLogin,\n handleLogout: this.handleLogoutFromPlaybackPage,\n hideProviderLogo: hideProviderLogo,\n loggedIn: loggedIn,\n providerInfo: providerInfo,\n userAuth: userAuth,\n branding: isDomestic ? null : branding\n });\n }\n\n if (hideProviderLogo) {\n return null;\n }\n\n return BrandingContainer__jsx(branding_ProviderLogo, {\n displayLogout: displayLogout,\n handleLogout: this.handleLogout,\n providerInfo: providerInfo,\n userAuth: userAuth,\n branding: isDomestic ? null : branding\n });\n }\n }]);\n\n return BrandingContainer;\n}(react[\"Component\"]);\n\nBrandingContainer_BrandingContainer.defaultProps = {\n userAuth: [],\n providerInfo: {}\n};\n\nvar BrandingContainer_mapStateToProps = function mapStateToProps(state) {\n var _state$app = state.app;\n _state$app = _state$app === undefined ? {} : _state$app;\n var _state$app$isMobile = _state$app.isMobile,\n isMobile = _state$app$isMobile === undefined ? false : _state$app$isMobile;\n var userAuth = state.authentication.authTypes;\n\n return {\n branding: Object(pageSelector[\"a\" /* brandingSelector */])(state),\n isDomestic: Object(appSelector[\"s\" /* isDomesticSelector */])(state),\n isMobile: isMobile,\n providerInfo: Object(providerSelector[\"a\" /* default */])(state),\n roadblock: Object(appSelector[\"D\" /* roadblockSelector */])(state),\n userAuth: userAuth\n };\n};\n\n/* harmony default export */ var branding_BrandingContainer = __webpack_exports__[\"a\"] = (Object(es[\"b\" /* connect */])(BrandingContainer_mapStateToProps)(BrandingContainer_BrandingContainer));\n\n/***/ }),\n/* 357 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./node_modules/react-router-redux/lib/index.js\nvar lib = __webpack_require__(69);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// EXTERNAL MODULE: ./app/lib/format/apiDateFormatter.js\nvar apiDateFormatter = __webpack_require__(106);\n\n// EXTERNAL MODULE: ./app/lib/format/dateFormat.js\nvar dateFormat = __webpack_require__(33);\n\n// EXTERNAL MODULE: ./app/common/schedule/actions/index.js\nvar actions = __webpack_require__(96);\n\n// EXTERNAL MODULE: ./app/common/Select.js\nvar Select = __webpack_require__(358);\n\n// EXTERNAL MODULE: ./node_modules/lodash/findIndex.js\nvar findIndex = __webpack_require__(208);\nvar findIndex_default = /*#__PURE__*/__webpack_require__.n(findIndex);\n\n// EXTERNAL MODULE: ./app/common/schedule/DateSlider.js\nvar DateSlider = __webpack_require__(744);\n\n// EXTERNAL MODULE: ./app/common/schedule/StatusFilter.js\nvar StatusFilter = __webpack_require__(97);\n\n// CONCATENATED MODULE: ./app/common/schedule/FilterGroup.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\n\n\n\n\n\n\n\n\nvar FilterGroup_FilterGroup = function FilterGroup(_ref) {\n var _labels;\n\n var isIntl = _ref.isIntl,\n location = _ref.location,\n isResponsive = _ref.isResponsive,\n categories = _ref.categories,\n channels = _ref.channels,\n onDateSelectorChange = _ref.onDateSelectorChange,\n onStatusFilterChange = _ref.onStatusFilterChange,\n onSportsFilterChange = _ref.onSportsFilterChange,\n onNetworkFilterChange = _ref.onNetworkFilterChange,\n showSportOptions = _ref.showSportOptions,\n showNetworkOptions = _ref.showNetworkOptions,\n messages = _ref.messages,\n formatMessage = _ref.intl.formatMessage;\n\n var query = location.query;\n var statusDefaultSelection = query.type || StatusFilter[\"a\" /* default */].Options.LIVE;\n var watchRegion = query.watchRegion;\n var sportOptions = showSportOptions ? [{ label: formatMessage(messages['schedule.allSports']), value: undefined, type: 'category' }].concat(categories.map(function (cat) {\n return { label: cat.name || cat.guid, value: cat.guid, type: cat.type, id: cat.id };\n })) : null;\n\n var networkOptions = showNetworkOptions ? [{ label: formatMessage(messages['schedule.allNetworks']), value: '' }].concat([].concat(_toConsumableArray(channels)).map(function (channel) {\n return {\n label: channel.name,\n value: channel.guid,\n id: channel.guid\n };\n })) : null;\n var sportDefaultSelection = sportOptions && findIndex_default()(sportOptions, function (option) {\n return option.value === query.categoryId;\n });\n var networkDefaultSelection = networkOptions && findIndex_default()(networkOptions, function (option) {\n return option.value === query.channel;\n });\n\n var hasDatesParam = query.dates && /^\\d{8}/.test(query.dates); // This is meant to be for syndicated player\n var startDateStr = query.startDate;\n var sliderDateStr = void 0;\n var maxDaysInFuture = void 0;\n if (hasDatesParam) {\n var _query$dates$split = query.dates.split('-'),\n _query$dates$split2 = _slicedToArray(_query$dates$split, 2),\n start = _query$dates$split2[0],\n end = _query$dates$split2[1];\n\n var today = dateFormat[\"a\" /* default */].dateToKey(new Date());\n startDateStr = today < start ? start : today;\n if (end && end > startDateStr) {\n var endDateStr = end;\n maxDaysInFuture = parseInt(endDateStr, 10) - parseInt(startDateStr, 10) + 1;\n }\n sliderDateStr = startDateStr;\n }\n var sliderDate = dateFormat[\"a\" /* default */].paramToDate(sliderDateStr) || new Date();\n var dateSelector = statusDefaultSelection === StatusFilter[\"a\" /* default */].Options.UPCOMING ? _jsx(DateSlider[\"a\" /* default */], {\n date: sliderDate,\n onDateSelected: onDateSelectorChange,\n maxDaysInFuture: maxDaysInFuture,\n isResponsive: isResponsive,\n isIntl: isIntl,\n messages: messages,\n formatMessage: formatMessage,\n watchRegion: watchRegion\n }) : null;\n var replayDateSelector = null;\n if (statusDefaultSelection === StatusFilter[\"a\" /* default */].Options.REPLAY) {\n var isReplaySlider = true;\n replayDateSelector = _jsx(DateSlider[\"a\" /* default */], {\n date: sliderDate,\n onDateSelected: onDateSelectorChange,\n maxDaysInFuture: 0,\n maxDaysInPast: 30,\n isResponsive: isResponsive,\n isReplaySlider: isReplaySlider,\n isIntl: isIntl,\n messages: messages,\n formatMessage: formatMessage,\n watchRegion: watchRegion\n });\n }\n\n var needSeparator = sportOptions || networkOptions || replayDateSelector;\n\n return _jsx('div', {\n className: 'filter-group-wrap'\n }, void 0, _jsx(StatusFilter[\"a\" /* default */], {\n selected: statusDefaultSelection,\n handleClick: onStatusFilterChange,\n labels: (_labels = {}, _defineProperty(_labels, StatusFilter[\"a\" /* default */].Options.LIVE, formatMessage(messages['schedule.live'])), _defineProperty(_labels, StatusFilter[\"a\" /* default */].Options.UPCOMING, formatMessage(messages['schedule.upcoming'])), _defineProperty(_labels, StatusFilter[\"a\" /* default */].Options.REPLAY, formatMessage(messages['schedule.replay'])), _labels)\n }), _jsx('div', {\n className: needSeparator ? 'filters' : ''\n }, void 0, sportOptions ? _jsx(Select[\"a\" /* default */], {\n defaultSelection: sportDefaultSelection,\n options: sportOptions,\n onChange: onSportsFilterChange\n }) : null, networkOptions ? _jsx(Select[\"a\" /* default */], {\n defaultSelection: networkDefaultSelection,\n options: networkOptions,\n onChange: onNetworkFilterChange\n }) : null), _jsx('div', {\n className: 'replaydate-wrap'\n }, void 0, replayDateSelector), _jsx('div', {\n className: 'datepicker-wrap'\n }, void 0, dateSelector));\n};\n\nFilterGroup_FilterGroup.defaultProps = {\n categories: [],\n channels: [],\n showSportOptions: true,\n showNetworkOptions: true\n};\n\n/* harmony default export */ var schedule_FilterGroup = (FilterGroup_FilterGroup);\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./app/common/selectors/flagsSelector.js\nvar flagsSelector = __webpack_require__(47);\n\n// EXTERNAL MODULE: ./app/common/selectors/routingSelector.js\nvar routingSelector = __webpack_require__(23);\n\n// CONCATENATED MODULE: ./app/common/schedule/FilterGroupContainer.js\n/* unused harmony export updateQuery */\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n// eslint-disable-next-line no-unused-vars\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction updateQuery(dispatch, ownProps, newQuery) {\n var flags = ownProps.flags,\n location = ownProps.location,\n fetchAction = ownProps.fetchAction;\n var _location$query = location.query,\n query = _location$query === undefined ? {} : _location$query;\n\n query = _extends({}, query, newQuery, flags);\n dispatch(Object(lib[\"replace\"])(_extends({}, location, { query: query })));\n dispatch(fetchAction(query));\n}\n\nvar FilterGroupContainer_mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n onSportsFilterChange: function onSportsFilterChange(option) {\n updateQuery(dispatch, ownProps, {\n categoryId: option.value ? option.value : undefined\n });\n },\n onReplayDateSelectorChange: function onReplayDateSelectorChange(option) {\n var startDate = new Date();\n var date = startDate.getDate();\n startDate.setDate(date - option.value);\n var endDate = new Date();\n\n updateQuery(dispatch, ownProps, {\n startDate: Object(apiDateFormatter[\"a\" /* default */])(startDate),\n endDate: Object(apiDateFormatter[\"a\" /* default */])(endDate)\n });\n },\n onNetworkFilterChange: function onNetworkFilterChange(option) {\n updateQuery(dispatch, ownProps, {\n channel: option.value || undefined\n });\n },\n onDateSelectorChange: function onDateSelectorChange(date) {\n updateQuery(dispatch, ownProps, {\n startDate: Object(apiDateFormatter[\"a\" /* default */])(date)\n });\n },\n onStatusFilterChange: function onStatusFilterChange(status) {\n dispatch(Object(actions[\"l\" /* setStatusFilter */])(status));\n\n var _ownProps$location$qu = ownProps.location.query;\n _ownProps$location$qu = _ownProps$location$qu === undefined ? {} : _ownProps$location$qu;\n var dates = _ownProps$location$qu.dates;\n\n var hasDatesParam = dates && /^\\d{8}/.test(dates);\n var startDate = void 0;\n var endDate = void 0;\n if (status === 'upcoming' && hasDatesParam) {\n // for syndicated player\n var start = dates.split('-')[0];\n var today = dateFormat[\"a\" /* default */].dateToKey(new Date());\n startDate = start > today ? start : today;\n }\n\n updateQuery(dispatch, ownProps, {\n type: status,\n startDate: startDate,\n endDate: endDate\n });\n }\n };\n};\n\nvar FilterGroupContainer_mapStateToProps = function mapStateToProps(state) {\n var _routingSelector = Object(routingSelector[\"a\" /* default */])(state),\n locationBeforeTransitions = _routingSelector.locationBeforeTransitions;\n\n var _ref = locationBeforeTransitions || {},\n _ref$pathname = _ref.pathname,\n pathname = _ref$pathname === undefined ? '' : _ref$pathname;\n\n var isResponsive = pathname !== '/syndicated/player';\n return {\n isIntl: Object(appSelector[\"u\" /* isIntlSelector */])(state),\n flags: Object(flagsSelector[\"a\" /* persistentFlagsSelector */])(state),\n isResponsive: isResponsive\n };\n};\n\nvar FilterGroupContainer = Object(es[\"b\" /* connect */])(FilterGroupContainer_mapStateToProps, FilterGroupContainer_mapDispatchToProps)(Object(injectIntl[\"a\" /* default */])(schedule_FilterGroup));\n\nFilterGroupContainer.defaultProps = {\n fetchAction: actions[\"j\" /* fetchSchedule */]\n};\n\nFilterGroupContainer.propTypes = {\n fetchAction: react[\"PropTypes\"].func\n};\n\n/* harmony default export */ var schedule_FilterGroupContainer = __webpack_exports__[\"a\"] = (FilterGroupContainer);\n\n/***/ }),\n/* 358 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_classnames__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_classnames__);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\nvar Select = function (_Component) {\n _inherits(Select, _Component);\n\n function Select(props) {\n _classCallCheck(this, Select);\n\n var _this = _possibleConstructorReturn(this, (Select.__proto__ || Object.getPrototypeOf(Select)).call(this, props));\n\n _this.handleClick = _this.handleClick.bind(_this);\n _this.handleChange = _this.handleChange.bind(_this);\n _this.state = { selected: _this.getDefaultSelection() };\n return _this;\n }\n\n /**\n * componentWillReceiveProps has been deprecate since React 16.3.\n * It needs to be replaced with getDerivedStateFromProps if we update\n * to React 16.3+\n */\n\n\n _createClass(Select, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (nextProps.defaultSelection !== this.props.defaultSelection) {\n this.setState({ selected: nextProps.defaultSelection });\n }\n }\n }, {\n key: 'getDefaultSelection',\n value: function getDefaultSelection() {\n var defaultSelection = this.props.defaultSelection;\n\n return defaultSelection >= 0 ? defaultSelection : 0;\n }\n }, {\n key: 'handleClick',\n value: function handleClick(index, option, event) {\n this.setState({ selected: index });\n this.props.onChange(option);\n event.preventDefault();\n event.stopPropagation();\n }\n }, {\n key: 'handleChange',\n value: function handleChange(event) {\n var index = null;\n var eventValue = event.target.value;\n\n var selectedValue = eventValue && eventValue.toString();\n var _props = this.props,\n options = _props.options,\n onChange = _props.onChange;\n\n index = options.map(function (_ref) {\n var value = _ref.value,\n label = _ref.label;\n return value || label;\n }).indexOf(selectedValue);\n\n if (index !== null) {\n /**\n * first option value in the dropdown is -1, option[-1] returns undefined,\n * so we need to reset it to 0 to avoid array out of bounds exception.\n * We can't setState selected to 0 directly, since setState({selected: -1}) will trigger\n * companonent rerender, in app/espnapp/schedule/ScheduleCategorySection.js which is\n * what we expected\n */\n var option = index > 0 ? options[index] : options[0];\n this.setState({ selected: index });\n onChange(option);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props2 = this.props,\n _props2$options = _props2.options,\n options = _props2$options === undefined ? [] : _props2$options,\n menuSizeClass = _props2.menuSizeClass,\n name = _props2.name;\n var selected = this.state.selected;\n\n var menuClassName = __WEBPACK_IMPORTED_MODULE_1_classnames___default()('dropdown-menu', menuSizeClass);\n var selectedOption = selected > 0 ? options[selected] : options[0];\n\n return _jsx('span', {\n className: 'dropdown-wrapper-container'\n }, void 0, _jsx('div', {\n className: 'dropdown-wrapper display-desktop hoverable',\n 'data-behavior': 'button_dropdown'\n }, void 0, _jsx('button', {\n type: 'button',\n className: 'button-filter med dropdown-toggle'\n }, void 0, selectedOption.label), _jsx('ul', {\n className: menuClassName,\n role: 'menu'\n }, void 0, options.map(function (option, index) {\n return _jsx('li', {}, 'select-' + option.label + '-' + option.id, _jsx('a', {\n onClick: function onClick(event) {\n _this2.handleClick(index, option, event);\n }\n }, void 0, option.label));\n }))), _jsx('div', {\n className: 'dropdown-wrapper display-mobile mobile-dropdown'\n }, void 0, _jsx('span', {\n className: 'mobile-arrow'\n }), _jsx('select', {\n onChange: this.handleChange,\n value: selectedOption.value,\n name: name\n }, void 0, options.map(function (opt) {\n return _jsx('option', {\n value: opt.value || opt.label\n }, 'selectmobile-' + opt.label + '-' + opt.id, opt.label);\n }))));\n }\n }]);\n\n return Select;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\nSelect.defaultProps = {\n onChange: function onChange() {},\n menuSizeClass: 'med',\n defaultSelection: 0\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Select);\n\n/***/ }),\n/* 359 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isPacRimOrCarib;\nfunction isPacRimOrCarib(regionCode) {\n return regionCode === 'pacrim' || regionCode === 'caribbean';\n}\n\n/***/ }),\n/* 360 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_intl__ = __webpack_require__(95);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_groupBy__ = __webpack_require__(361);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_groupBy___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_lodash_groupBy__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__lib_format_apiDateFormatter__ = __webpack_require__(106);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__lib_format_dateFormat__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__injectIntl__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__selectors_darkThemeSelector__ = __webpack_require__(362);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__alias_ScheduleCategorySection__ = __webpack_require__(748);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__StatusFilter__ = __webpack_require__(97);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__isPacRimOrCarib__ = __webpack_require__(359);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar compareObjectsByName = function compareObjectsByName(noCategoryMapping) {\n return function (objA, objB) {\n var aName = objA.name.trim().toLowerCase();\n var bName = objB.name.trim().toLowerCase();\n\n if (aName === noCategoryMapping) {\n return 1;\n }\n if (bName === noCategoryMapping) {\n return -1;\n }\n if (aName > bName) {\n return 1;\n } else if (aName < bName) {\n return -1;\n }\n return 0;\n };\n};\n\nvar getTranslatedTab = function getTranslatedTab(messages, formatMessageFn) {\n return function () {\n var selectedTab = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var key = 'schedule.' + selectedTab.toLowerCase();\n if (type === 'selectedTabError') {\n key = key + '.selectedTabError';\n }\n\n var translatedSelectedTab = formatMessageFn(messages[key]) || '';\n\n if (translatedSelectedTab === '') {\n return selectedTab;\n }\n\n return translatedSelectedTab;\n };\n};\n\nvar getTranslatedDate = function getTranslatedDate(date, formatMessage, messages, lang) {\n if (lang === 'en') {\n return date;\n }\n try {\n var arr = date.split(' ');\n var weekDay = arr[0].replace(',', '');\n weekDay = formatMessage(messages['schedule.calendar.day.' + weekDay]);\n var month = formatMessage(messages['schedule.calendar.month.' + arr[3]]);\n return weekDay + ' ' + arr[1] + ' ' + arr[2] + ' ' + month;\n } catch (err) {\n console.error(err.messages);\n return date;\n }\n};\n\nvar ScheduleCategoryContainer = function ScheduleCategoryContainer(_ref) {\n var listings = _ref.listings,\n preauthorizedResources = _ref.preauthorizedResources,\n selectedTab = _ref.selectedTab,\n startDateValue = _ref.startDateValue,\n userAuth = _ref.userAuth,\n showSectionCaption = _ref.showSectionCaption,\n darkTheme = _ref.darkTheme,\n formatMessage = _ref.intl.formatMessage,\n messages = _ref.messages,\n intlDateFormat = _ref.intlDateFormat,\n upcomingDateFormat = _ref.upcomingDateFormat,\n bucketName = _ref.bucketName,\n _ref$lang = _ref.lang,\n lang = _ref$lang === undefined ? 'en' : _ref$lang,\n watchRegion = _ref.watchRegion;\n\n if (listings.length === 0) {\n // Utility function used to tranlate specific tab by type\n var translateTab = getTranslatedTab(messages, formatMessage);\n var translatedSelectedTab = translateTab(selectedTab, 'selectedTabError');\n var otherTabs = [__WEBPACK_IMPORTED_MODULE_13__StatusFilter__[\"a\" /* default */].Options.LIVE, __WEBPACK_IMPORTED_MODULE_13__StatusFilter__[\"a\" /* default */].Options.UPCOMING, __WEBPACK_IMPORTED_MODULE_13__StatusFilter__[\"a\" /* default */].Options.REPLAY].filter(function (tab) {\n return tab !== selectedTab;\n });\n\n return _jsx('p', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_2_react_intl__[\"a\" /* FormattedMessage */], _extends({}, messages['schedule.message.empty'], {\n values: {\n br: _jsx('br', {}),\n selectedTab: translatedSelectedTab,\n otherTabs1: translateTab(otherTabs[0]).toLocaleLowerCase(),\n otherTabs2: translateTab(otherTabs[1]).toLocaleLowerCase()\n }\n })));\n }\n\n var renderTableCaption = function renderTableCaption(dateValue, formatOfDate) {\n var showCaption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n /**\n * For isIntl, formatOfDate value is 'date15' as 'Weekday, number de month',\n * and formatOfDate default value is 'date10' as 'dddd, MMMM Do' for US.\n * We will check if watchRegion is PacRim or caribbean, and if it is true,\n * use 'date16' date formate as 'dddd, Do MMMM'\n */\n var date = void 0;\n if (Object(__WEBPACK_IMPORTED_MODULE_14__isPacRimOrCarib__[\"a\" /* default */])(watchRegion)) {\n date = __WEBPACK_IMPORTED_MODULE_7__lib_format_dateFormat__[\"a\" /* default */].dateFormat(dateValue, 'date16');\n } else {\n var isNLEdition = lang && lang.toLowerCase() === 'nl';\n date = __WEBPACK_IMPORTED_MODULE_7__lib_format_dateFormat__[\"a\" /* default */].dateFormat(dateValue, formatOfDate);\n date = getTranslatedDate(date, formatMessage, messages, lang);\n if (isNLEdition) {\n date = date.replace('de', '').toLocaleLowerCase();\n }\n }\n // Handles the removal of `text-transform: capitalize` enforced by pageShell.css for Brazil\n var dateStyles = formatOfDate === 'date15' ? { textTransform: 'none' } : {};\n\n return showCaption === true && _jsx('h2', {\n style: dateStyles,\n className: 'table-caption'\n }, void 0, date);\n };\n\n // TODO: roll back to use `id` as key once category id is populated for E+ content from graphql\n var categories = __WEBPACK_IMPORTED_MODULE_4_lodash_uniqBy___default()(listings.map(function (listing) {\n return listing.categories[0];\n }), 'name').sort(compareObjectsByName(__WEBPACK_IMPORTED_MODULE_5__constants__[\"l\" /* NO_CATEGORY_ID_MAPPINGS */][lang]));\n var listingsGroupedByCategory = __WEBPACK_IMPORTED_MODULE_3_lodash_groupBy___default()(listings, function (listing) {\n return listing.categories[0].name;\n });\n var sections = categories.map(function (category) {\n var categoryListings = listingsGroupedByCategory[category.name];\n return _jsx(__WEBPACK_IMPORTED_MODULE_12__alias_ScheduleCategorySection__[\"a\" /* default */], {\n category: category,\n listings: categoryListings,\n userAuth: userAuth,\n selectedTab: selectedTab,\n preauthorizedResources: preauthorizedResources,\n defaultLabel: formatMessage(messages['schedule.allLeagues']),\n blackoutMessage: formatMessage(messages['schedule.blackout']),\n dateFormat: intlDateFormat,\n showSectionCaption: showSectionCaption,\n darkTheme: darkTheme,\n bucketName: bucketName\n }, 'sched-category-' + category.name);\n });\n\n return _jsx('div', {}, void 0, renderTableCaption(startDateValue, upcomingDateFormat, selectedTab === __WEBPACK_IMPORTED_MODULE_13__StatusFilter__[\"a\" /* default */].Options.UPCOMING), _jsx('div', {}, void 0, sections));\n};\n\nScheduleCategoryContainer.defaultProps = {\n selectedTab: __WEBPACK_IMPORTED_MODULE_13__StatusFilter__[\"a\" /* default */].Options.LIVE,\n preauthorizedResources: [],\n startDateValue: Object(__WEBPACK_IMPORTED_MODULE_6__lib_format_apiDateFormatter__[\"a\" /* default */])(new Date())\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n preauthorizedResources: Object(__WEBPACK_IMPORTED_MODULE_10__selectors_authenticationSelectors__[\"o\" /* preauthorizedResourcesSelector */])(state),\n intlDateFormat: Object(__WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__[\"i\" /* dateFormatSelector */])(state),\n upcomingDateFormat: Object(__WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__[\"I\" /* upcomingScheduleDateFormatSelector */])(state),\n darkTheme: Object(__WEBPACK_IMPORTED_MODULE_11__selectors_darkThemeSelector__[\"a\" /* default */])(state),\n lang: Object(__WEBPACK_IMPORTED_MODULE_9__selectors_appSelector__[\"q\" /* intlSelector */])(state).lang\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(Object(__WEBPACK_IMPORTED_MODULE_8__injectIntl__[\"a\" /* default */])(ScheduleCategoryContainer)));\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 361 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(135),\n createAggregator = __webpack_require__(745);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n\n\n/***/ }),\n/* 362 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__routingSelector__ = __webpack_require__(23);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_1__routingSelector__[\"a\" /* default */], function (_ref) {\n var darkmode = _ref.locationBeforeTransitions.query.darkmode;\n return darkmode === 'true';\n}));\n\n/***/ }),\n/* 363 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(749);\n\n\n\n/***/ }),\n/* 364 */\n/***/ (function(module, exports) {\n\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n return (/input|select|textarea|button|object/.test(nodeName) ?\n !element.disabled :\n \"a\" === nodeName ?\n element.href || isTabIndexNotNaN :\n isTabIndexNotNaN) && visible(element);\n}\n\nfunction hidden(el) {\n return (el.offsetWidth <= 0 && el.offsetHeight <= 0) ||\n el.style.display === 'none';\n}\n\nfunction visible(element) {\n while (element) {\n if (element === document.body) break;\n if (hidden(element)) return false;\n element = element.parentNode;\n }\n return true;\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute('tabindex');\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n return [].slice.call(element.querySelectorAll('*'), 0).filter(function(el) {\n return tabbable(el);\n });\n}\n\nmodule.exports = findTabbableDescendants;\n\n\n\n/***/ }),\n/* 365 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * lodash 3.2.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar baseAssign = __webpack_require__(754),\n createAssigner = __webpack_require__(759),\n keys = __webpack_require__(366);\n\n/**\n * A specialized version of `_.assign` for customizing assigned values without\n * support for argument juggling, multiple sources, and `this` binding `customizer`\n * functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n */\nfunction assignWith(object, source, customizer) {\n var index = -1,\n props = keys(source),\n length = props.length;\n\n while (++index < length) {\n var key = props[index],\n value = object[key],\n result = customizer(value, source[key], key, object, source);\n\n if ((result === result ? (result !== value) : (value === value)) ||\n (value === undefined && !(key in object))) {\n object[key] = result;\n }\n }\n return object;\n}\n\n/**\n * Assigns own enumerable properties of source object(s) to the destination\n * object. Subsequent sources overwrite property assignments of previous sources.\n * If `customizer` is provided it is invoked to produce the assigned values.\n * The `customizer` is bound to `thisArg` and invoked with five arguments:\n * (objectValue, sourceValue, key, object, source).\n *\n * **Note:** This method mutates `object` and is based on\n * [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).\n *\n * @static\n * @memberOf _\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });\n * // => { 'user': 'fred', 'age': 40 }\n *\n * // using a customizer callback\n * var defaults = _.partialRight(_.assign, function(value, other) {\n * return _.isUndefined(value) ? other : value;\n * });\n *\n * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\nvar assign = createAssigner(function(object, source, customizer) {\n return customizer\n ? assignWith(object, source, customizer)\n : baseAssign(object, source);\n});\n\nmodule.exports = assign;\n\n\n/***/ }),\n/* 366 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * lodash 3.1.2 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar getNative = __webpack_require__(756),\n isArguments = __webpack_require__(757),\n isArray = __webpack_require__(758);\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object != 'function' && isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n isProto = typeof Ctor == 'function' && Ctor.prototype === object,\n result = Array(length),\n skipIndexes = length > 0;\n\n while (++index < length) {\n result[index] = (index + '');\n }\n for (var key in object) {\n if (!(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n\n/***/ }),\n/* 367 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// CONCATENATED MODULE: ./app/common/search/SearchFilter.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar SearchFilter = function SearchFilter(_ref) {\n var placeholder = _ref.placeholder,\n handleChange = _ref.handleChange,\n handleInputFocus = _ref.handleInputFocus;\n return _jsx(\"section\", {\n className: \"search-section icon-font-before icon-search-solid-before search-section--provider\"\n }, void 0, _jsx(\"input\", {\n name: \"search-section\",\n type: \"text\",\n autoComplete: \"off\",\n placeholder: placeholder,\n onChange: handleChange,\n onFocus: handleInputFocus\n }));\n};\n\n/* harmony default export */ var search_SearchFilter = (SearchFilter);\n// CONCATENATED MODULE: ./app/common/chooseProvider/Provider.js\nvar Provider__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar Provider = function Provider(_ref) {\n var provider = _ref.provider,\n providerSelect = _ref.providerSelect;\n var id = provider.id,\n name = provider.name,\n appLink = provider.appLink;\n\n var clickHandler = void 0;\n var href = appLink;\n if (providerSelect) {\n clickHandler = function clickHandler(event) {\n event.preventDefault();return providerSelect(provider);\n };\n href = null;\n }\n return Provider__jsx('li', {}, id, Provider__jsx('a', {\n href: href,\n onClick: clickHandler\n }, void 0, name));\n};\n\n/* harmony default export */ var chooseProvider_Provider = (Provider);\n// CONCATENATED MODULE: ./app/common/chooseProvider/ProviderList.js\nvar ProviderList__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar headerStyle = {\n cursor: 'default',\n fontSize: '13px'\n};\n\nvar ProviderList_ProviderList = function ProviderList(_ref) {\n var filter = _ref.filter,\n providers = _ref.providers,\n providerSelect = _ref.providerSelect,\n header = _ref.header;\n\n var listHeader = header && !filter ? ProviderList__jsx('li', {\n className: 'watchProvider__list-header'\n }, void 0, ProviderList__jsx('a', {\n style: headerStyle\n }, void 0, header)) : null;\n return ProviderList__jsx('ul', {\n className: 'watchProvider__list-items'\n }, void 0, listHeader, providers.filter(function (provider) {\n return provider.name.toLowerCase().indexOf(filter.toLowerCase()) >= 0;\n }).map(function (provider) {\n return ProviderList__jsx(chooseProvider_Provider, {\n provider: provider,\n providerSelect: providerSelect\n }, provider.id);\n }));\n};\n\nProviderList_ProviderList.defaultProps = {\n providers: []\n};\n\n/* harmony default export */ var chooseProvider_ProviderList = (ProviderList_ProviderList);\n// CONCATENATED MODULE: ./app/common/chooseProvider/Tier1Provider.js\nvar Tier1Provider__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar intlImgStyle = {\n maxWidth: '65%',\n maxHeight: '55%',\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n};\n\nvar intlAnchorStyle = {\n height: '50px',\n display: 'block'\n};\n\nvar Tier1Provider = function Tier1Provider(_ref) {\n var isIntl = _ref.isIntl,\n provider = _ref.provider,\n providerSelect = _ref.providerSelect;\n var _provider$images$pick = provider.images.picker.href,\n providerImageUrl = _provider$images$pick === undefined ? '' : _provider$images$pick,\n appLink = provider.appLink;\n\n var clickHandler = void 0;\n var href = appLink;\n var anchorStyle = void 0;\n var imgStyle = void 0;\n if (providerSelect) {\n clickHandler = function clickHandler(event) {\n event.preventDefault();return providerSelect(provider);\n };\n href = null;\n }\n // Override style for intl tier one providers\n if (isIntl) {\n anchorStyle = intlAnchorStyle;\n imgStyle = intlImgStyle;\n }\n\n return Tier1Provider__jsx('li', {\n onClick: clickHandler\n }, void 0, Tier1Provider__jsx('a', {\n style: anchorStyle,\n href: href\n }, void 0, Tier1Provider__jsx('img', {\n style: imgStyle,\n src: providerImageUrl,\n alt: provider.name\n })));\n};\n\n/* harmony default export */ var chooseProvider_Tier1Provider = (Tier1Provider);\n// CONCATENATED MODULE: ./app/common/chooseProvider/Tier1ProviderGrid.js\nvar Tier1ProviderGrid__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar Tier1ProviderGrid_Tier1ProviderGrid = function Tier1ProviderGrid(_ref) {\n var isIntl = _ref.isIntl,\n providers = _ref.providers,\n providerSelect = _ref.providerSelect;\n return Tier1ProviderGrid__jsx('ul', {\n className: 'watchProvider__list-items--is-premier'\n }, void 0, providers.map(function (provider) {\n return Tier1ProviderGrid__jsx(chooseProvider_Tier1Provider, {\n isIntl: isIntl,\n provider: provider,\n providerSelect: providerSelect\n }, 'tier1provider' + provider.name);\n }));\n};\n\n/* harmony default export */ var chooseProvider_Tier1ProviderGrid = (Tier1ProviderGrid_Tier1ProviderGrid);\n// CONCATENATED MODULE: ./app/common/chooseProvider/DMVPDButton.js\nvar DMVPDButton__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar DMVPDButton = function DMVPDButton(_ref) {\n var text = _ref.text,\n _ref$link = _ref.link,\n link = _ref$link === undefined ? 'http://www.espninstantaccess.com' : _ref$link;\n return DMVPDButton__jsx('section', {\n className: 'watchProvider__btn'\n }, void 0, DMVPDButton__jsx('a', {\n className: 'button-alt full-width lg',\n target: '_blank',\n rel: 'noopener noreferrer',\n href: link\n }, void 0, DMVPDButton__jsx('span', {}, void 0, text)));\n};\n\n/* harmony default export */ var chooseProvider_DMVPDButton = (DMVPDButton);\n// EXTERNAL MODULE: ./app/lib/util/sortByRank.js\nvar sortByRank = __webpack_require__(328);\n\n// EXTERNAL MODULE: ./app/common/selectors/providerSelector.js\nvar providerSelector = __webpack_require__(53);\n\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// CONCATENATED MODULE: ./app/common/chooseProvider/ProviderDialog.js\nvar ProviderDialog__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable react/no-danger */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * getTier1Providers - Returns a list of filtered providers whose tier property is 1.\n * For international providers, the list is sorted by rank.\n *\n * @param {Array} providers - Array of provider objects to be filtered\n * @param {boolean} isIntl = false - Flag to determine if app is international\n *\n * @return {Array} - Array of filtered/sorted providers\n */\nfunction getTier1Providers(providers) {\n var isIntl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var tierOneProviders = providers.filter(function (provider) {\n return provider.tier === 1;\n });\n // Tier 1 Providers will only be sorted if 1) isInternational 2) the `rank` property is defined\n return isIntl === true ? tierOneProviders.sort(sortByRank[\"a\" /* default */]) : tierOneProviders;\n}\n\nvar ProviderDialog_ProviderDialog = function (_Component) {\n _inherits(ProviderDialog, _Component);\n\n function ProviderDialog(props) {\n _classCallCheck(this, ProviderDialog);\n\n var _this = _possibleConstructorReturn(this, (ProviderDialog.__proto__ || Object.getPrototypeOf(ProviderDialog)).call(this, props));\n\n _this.state = { searchFilter: '', showTierOne: true };\n _this.onFilterInputChange = _this.onFilterInputChange.bind(_this);\n _this.onFilterInputFocus = _this.onFilterInputFocus.bind(_this);\n return _this;\n }\n\n _createClass(ProviderDialog, [{\n key: 'onFilterInputChange',\n value: function onFilterInputChange(event) {\n var searchFilter = event.target.value;\n var isESPNApp = this.props.isESPNApp;\n // Show tier one if is web picker or if user has backspaced and search filter is empty\n\n var showTierOne = !isESPNApp || searchFilter === '';\n this.setState({ searchFilter: searchFilter, showTierOne: showTierOne });\n }\n }, {\n key: 'onFilterInputFocus',\n value: function onFilterInputFocus() {\n if (this.props.isESPNApp) {\n this.setState({ showTierOne: false, searchFilter: 'zzzzz' });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n messages = _props.messages,\n faqUrl = _props.faqUrl,\n upsellUrl = _props.upsellUrl,\n formatMessage = _props.intl.formatMessage,\n providers = _props.providers,\n providerSelect = _props.providerSelect,\n showDMVPDUpsell = _props.showDMVPDUpsell,\n showTierOneProviders = _props.showTierOneProviders,\n isESPNApp = _props.isESPNApp,\n isIntl = _props.isIntl,\n providerStyle = _props.providerStyle,\n providerClass = _props.providerClass;\n\n // FIXME: Supposed to use `FormattedMessage` from `react-intl` but can't use it because of css `>span`\n\n var description = formatMessage(messages['provider.dialog.description'], {\n noCost: '<span>' + formatMessage(messages['provider.dialog.description.noCost']) + '</span>',\n faq: '<a target=\"_blank\" href=\"' + faqUrl + '\" class=\"watchProvider__link\">\\n ' + formatMessage(messages['provider.dialog.faq.label']) + '</a>',\n help: '<a target=\"_blank\" href=\"' + formatMessage(messages['provider.dialog.help.link']) + '\" class=\"watchProvider__link\">\\n ' + formatMessage(messages['provider.dialog.help.label']) + '</a>'\n });\n var tier1Providers = getTier1Providers(providers, isIntl);\n var tier1Grid = showTierOneProviders && tier1Providers.length > 0 ? ProviderDialog__jsx('div', {}, void 0, ProviderDialog__jsx(chooseProvider_Tier1ProviderGrid, {\n isIntl: isIntl,\n providers: tier1Providers,\n providerSelect: providerSelect\n })) : null;\n\n var preSearch = void 0;\n var postSearch = void 0;\n var modalTitle = void 0;\n var tierOne = void 0;\n var subtitle = void 0;\n var searchFilter = ProviderDialog__jsx(search_SearchFilter, {\n handleChange: this.onFilterInputChange,\n handleInputFocus: this.onFilterInputFocus,\n placeholder: formatMessage(messages['search.filter.placeholder'])\n });\n\n if (isESPNApp) {\n preSearch = searchFilter;\n subtitle = formatMessage(messages['provider.dialog.subtitle']);\n } else {\n modalTitle = ProviderDialog__jsx('h1', {\n className: 'watchProvider__title'\n }, void 0, ProviderDialog__jsx('span', {}, void 0, formatMessage(messages['provider.dialog.title'])));\n postSearch = searchFilter;\n }\n\n var dmvpdButton = showDMVPDUpsell ? ProviderDialog__jsx(chooseProvider_DMVPDButton, {\n text: formatMessage(messages['provider.dialog.button.text']),\n link: upsellUrl\n }) : null;\n\n if (this.state.showTierOne) {\n tierOne = ProviderDialog__jsx('div', {}, void 0, ProviderDialog__jsx('p', {\n className: 'watchProvider__desc',\n dangerouslySetInnerHTML: { __html: description }\n }), tier1Grid, dmvpdButton);\n }\n\n return ProviderDialog__jsx('div', {}, void 0, modalTitle, ProviderDialog__jsx('div', {\n style: providerStyle,\n className: providerClass\n }, void 0, preSearch, tierOne, postSearch, ProviderDialog__jsx(chooseProvider_ProviderList, {\n filter: this.state.searchFilter,\n header: subtitle,\n providers: providers,\n providerSelect: providerSelect\n })));\n }\n }]);\n\n return ProviderDialog;\n}(react[\"Component\"]);\n\nProviderDialog_ProviderDialog.defaultProps = {\n providers: [],\n showProviderDialog: false,\n isESPNApp: false,\n isIntl: false,\n showTierOneProviders: true\n};\n\nvar ProviderDialog_mapStateToProps = function mapStateToProps(state) {\n return {\n providers: Object(providerSelector[\"c\" /* providersSelector */])(state),\n isESPNApp: Object(appSelector[\"t\" /* isESPNAppSelector */])(state),\n isIntl: Object(appSelector[\"u\" /* isIntlSelector */])(state),\n showDMVPDUpsell: Object(appSelector[\"E\" /* showDMVPDUpsellSelector */])(state),\n upsellUrl: Object(appSelector[\"J\" /* upsellUrlSelector */])(state),\n faqUrl: Object(appSelector[\"m\" /* faqUrlSelector */])(state)\n };\n};\n\n/* harmony default export */ var chooseProvider_ProviderDialog = __webpack_exports__[\"a\"] = (Object(es[\"b\" /* connect */])(ProviderDialog_mapStateToProps)(Object(injectIntl[\"a\" /* default */])(ProviderDialog_ProviderDialog)));\n\n/***/ }),\n/* 368 */\n/***/ (function(module, exports) {\n\n/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n\n\n/***/ }),\n/* 369 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = domainCheck;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = updateAdobeAuthentication;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_actions_authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__common_selectors_selectedContentSelector__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_selectors_selectedStreamSelector__ = __webpack_require__(62);\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n/* eslint-disable import/prefer-default-export */\n\n\n\n\n\nfunction domainCheck(key) {\n // client only action\n return function () {\n return new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) {\n var script = document.createElement('script');\n script.src = 'https://broadband.espn.com/espn3/auth/watchespn/userData?format=json&product=syndicated&rand=' + Date.now() + '&key=' + key;\n script.async = true;\n script.onload = function () {\n resolve(window.ud || {});\n };\n script.onerror = function (err) {\n reject(err);\n };\n document.body.appendChild(script);\n });\n };\n}\n\nfunction updateAdobeAuthentication() {\n var _this = this;\n\n return function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch, getState) {\n var state, content, stream, isAuthenticated, info, providersFromApi, providerInfo;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n state = getState();\n content = Object(__WEBPACK_IMPORTED_MODULE_2__common_selectors_selectedContentSelector__[\"a\" /* default */])(state);\n stream = Object(__WEBPACK_IMPORTED_MODULE_3__common_selectors_selectedStreamSelector__[\"a\" /* default */])(state);\n _context.next = 5;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__common_actions_authenticationActions__[\"D\" /* createAndPerformStartAuthenticationAction */])({ content: content, stream: stream }));\n\n case 5:\n isAuthenticated = _context.sent;\n\n if (!isAuthenticated) {\n _context.next = 13;\n break;\n }\n\n _context.next = 9;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__common_actions_authenticationActions__[\"Y\" /* getAdobePassAuthenticationInfo */])());\n\n case 9:\n info = _context.sent;\n providersFromApi = state.providerDialog.providers;\n providerInfo = providersFromApi.filter(function (_ref2) {\n var abbreviation = _ref2.abbreviation;\n return abbreviation === info.mvpd;\n }).shift();\n\n if (providerInfo) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__common_actions_authenticationActions__[\"O\" /* createGetAuthenticationInfoAction */])(providerInfo));\n }\n\n case 13:\n return _context.abrupt('return', isAuthenticated);\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n}\n\n/***/ }),\n/* 370 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return domainAuthStatus; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_classnames__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_PropTypes__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_auth_authStateKnown__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__common_ResponsiveThumbnail__ = __webpack_require__(222);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__common_authenticationAware__ = __webpack_require__(224);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__common_actions_appActions__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__player_actions__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__common_actions_authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__ProviderDialog__ = __webpack_require__(782);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__ConnectedPlayer__ = __webpack_require__(783);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__style__ = __webpack_require__(786);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__alias_Playable__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__SyndicatedPlayerAPIProxy__ = __webpack_require__(372);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SELF = __WEBPACK_IMPORTED_MODULE_2__enums__[\"G\" /* SyndicatedPlayerLoginOptions */].SELF,\n NEW_WINDOW = __WEBPACK_IMPORTED_MODULE_2__enums__[\"G\" /* SyndicatedPlayerLoginOptions */].NEW_WINDOW,\n NEW_WINDOW_MANAGED = __WEBPACK_IMPORTED_MODULE_2__enums__[\"G\" /* SyndicatedPlayerLoginOptions */].NEW_WINDOW_MANAGED;\n\nvar IMAGE_WIDTHS = [400, 640, 1200, 1800];\n\nvar domainAuthStatus = {\n UNKNOWN: 0,\n NOT_ALLOWED: 1,\n ALLOWED: 2\n};\n\nvar SyndicatedPlayer = function (_PureComponent) {\n _inherits(SyndicatedPlayer, _PureComponent);\n\n function SyndicatedPlayer(props) {\n _classCallCheck(this, SyndicatedPlayer);\n\n var _this = _possibleConstructorReturn(this, (SyndicatedPlayer.__proto__ || Object.getPrototypeOf(SyndicatedPlayer)).call(this, props));\n\n _this.onContinueClick = _this.onContinueClick.bind(_this);\n _this.onReloadClick = _this.onReloadClick.bind(_this);\n _this.state = {\n isAuthenticated: false,\n authRetry: props.authRetry,\n xdomainBlocked: props.xdomainBlocked\n };\n return _this;\n }\n\n _createClass(SyndicatedPlayer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.apiProxy = new __WEBPACK_IMPORTED_MODULE_15__SyndicatedPlayerAPIProxy__[\"a\" /* default */](this);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.apiProxy.componentWillReceiveProps(nextProps);\n var nextCanPlayContent = nextProps.canPlayContent,\n nextUserAuth = nextProps.userAuth,\n nextErrorMessage = nextProps.errorMessage;\n var _props = this.props,\n dispatch = _props.dispatch,\n canPlayContent = _props.canPlayContent,\n userAuth = _props.userAuth,\n query = _props.location.query;\n\n if (query[__WEBPACK_IMPORTED_MODULE_2__enums__[\"t\" /* Flags */].AUTO_DISPLAY_PROVIDER_DIALOG] === 'true' && !nextErrorMessage && !Object(__WEBPACK_IMPORTED_MODULE_4__lib_auth_authStateKnown__[\"a\" /* default */])(userAuth) && Object(__WEBPACK_IMPORTED_MODULE_4__lib_auth_authStateKnown__[\"a\" /* default */])(nextUserAuth) && nextUserAuth.indexOf('mvpd') === -1) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__common_actions_authenticationActions__[\"N\" /* createDisplayProviderDialogAction */])());\n }\n if (!nextCanPlayContent && canPlayContent) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__common_actions_appActions__[\"A\" /* contentUnSelect */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_9__player_actions__[\"p\" /* createClearPlayingStreamAction */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_9__player_actions__[\"x\" /* createResetPlayerAction */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__common_actions_authenticationActions__[\"H\" /* createCloseProviderDialogAction */])(false));\n if (this.state.isAuthenticated || this.state.authRetry) {\n this.setState({ isAuthenticated: false, authRetry: false });\n }\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(_ref) {\n var prevContent = _ref.content;\n var _props2 = this.props,\n canPlayContent = _props2.canPlayContent,\n content = _props2.content,\n clickHandler = _props2.clickHandler,\n embedded = _props2.player.embedded;\n\n if (canPlayContent && embedded && prevContent.id !== content.id) {\n clickHandler();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.apiProxy.destroy();\n }\n }, {\n key: 'onContinueClick',\n value: function onContinueClick(event, providerInfo) {\n var _props3 = this.props,\n loginOption = _props3.loginOption,\n providerSelect = _props3.providerSelect;\n\n\n if (loginOption === NEW_WINDOW) {\n return;\n }\n\n event.preventDefault();\n\n this.providerInfo = providerInfo;\n\n if (loginOption === SELF) {\n providerSelect(providerInfo);\n } else if (loginOption === NEW_WINDOW_MANAGED) {\n var loginWindow = window.open(event.currentTarget.href, 'AdobePassProxyLogin');\n if (!loginWindow) {\n console.warn('login proxy page blocked');\n return;\n }\n this.loginWindow = loginWindow;\n }\n }\n }, {\n key: 'onReloadClick',\n value: function onReloadClick() {\n this.recheckAccess();\n }\n }, {\n key: 'onAuthSuccess',\n value: function onAuthSuccess() {\n this.setState({\n isAuthenticated: true,\n authRetry: false,\n xdomainBlocked: false\n });\n }\n }, {\n key: 'onLoginClose',\n value: function onLoginClose() {\n this.loginWindow = null;\n }\n }, {\n key: 'onXDomainCheckFail',\n value: function onXDomainCheckFail() {\n this.props.providerSelect(this.providerInfo);\n }\n }, {\n key: 'parentHost',\n value: function parentHost(host) {\n var onParentHost = this.props.onParentHost;\n\n if (onParentHost) {\n onParentHost(host);\n }\n }\n }, {\n key: 'recheckAccess',\n value: function recheckAccess() {\n // eslint-disable-line class-methods-use-this\n this.apiProxy.reload();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _state = this.state,\n isAuthenticated = _state.isAuthenticated,\n authRetry = _state.authRetry,\n xdomainBlocked = _state.xdomainBlocked;\n var _props4 = this.props,\n _props4$providerDialo = _props4.providerDialog,\n providers = _props4$providerDialo.providers,\n display = _props4$providerDialo.display,\n _props4$content = _props4.content,\n name = _props4$content.name,\n status = _props4$content.status,\n imageHref = _props4$content.imageHref,\n playingStream = _props4.playingStream,\n branding = _props4.branding,\n location = _props4.location,\n embedded = _props4.player.embedded,\n canPlayContent = _props4.canPlayContent,\n domainAuth = _props4.domainAuth,\n errorMessage = _props4.errorMessage,\n adobePassLogout = _props4.adobePassLogout,\n clickHandler = _props4.clickHandler,\n onSocialOpened = _props4.onSocialOpened,\n onSocialClosed = _props4.onSocialClosed,\n onCaptionOpened = _props4.onCaptionOpened,\n onCaptionClosed = _props4.onCaptionClosed,\n providerSelect = _props4.providerSelect;\n\n var showProviderDialog = display || authRetry;\n if (domainAuth === domainAuthStatus.UNKNOWN) {\n return null;\n }\n\n var playButtonClasses = __WEBPACK_IMPORTED_MODULE_1_classnames___default()('button-play', 'button-play--video', {\n 'button-play--live': status === __WEBPACK_IMPORTED_MODULE_2__enums__[\"n\" /* ContentStatus */].LIVE\n });\n var dialogViewItem = [];\n // `canPlayContent` will never be `true` when domain is not whitelisted\n // since it doesn't perform `createSmartAdobePassInitializeAction`\n if (!canPlayContent || !embedded || Object(__WEBPACK_IMPORTED_MODULE_5__lib_util_isEmpty__[\"a\" /* default */])(playingStream)) {\n dialogViewItem.push(_jsx(__WEBPACK_IMPORTED_MODULE_6__common_ResponsiveThumbnail__[\"a\" /* default */], {\n className: 'hero_img',\n style: showProviderDialog ? { position: 'absolute', opacity: 0.2 } : {},\n src: imageHref,\n srcSetWidths: IMAGE_WIDTHS,\n sizes: '100vw',\n alt: name,\n cquality: 95\n }));\n }\n var el = void 0;\n if (errorMessage) {\n el = _jsx('div', {\n style: __WEBPACK_IMPORTED_MODULE_13__style__[\"a\" /* default */].message\n }, void 0, errorMessage);\n } else if (showProviderDialog) {\n el = _jsx(__WEBPACK_IMPORTED_MODULE_11__ProviderDialog__[\"a\" /* default */], {\n providers: providers,\n branding: branding,\n isAuthenticated: isAuthenticated,\n onContinueClick: this.onContinueClick,\n onReloadClick: this.onReloadClick,\n providerSelect: providerSelect,\n authRetry: authRetry,\n xdomainBlocked: xdomainBlocked\n });\n } else {\n el = _jsx('div', {\n className: playButtonClasses\n });\n }\n dialogViewItem.push(el);\n\n var needPlayer = canPlayContent && !errorMessage;\n var isAuthenticatableScreen = !errorMessage && !showProviderDialog && !embedded;\n\n var dialogView = _jsx('div', {\n style: __WEBPACK_IMPORTED_MODULE_13__style__[\"a\" /* default */].dialogContainer\n }, void 0, dialogViewItem, needPlayer && __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_12__ConnectedPlayer__[\"a\" /* default */], {\n ref: function ref(player) {\n _this2.connectedPlayer = player;\n },\n playerPlacement: __WEBPACK_IMPORTED_MODULE_2__enums__[\"B\" /* PlayerPlacement */].HERO,\n branding: branding,\n location: location,\n render: embedded,\n handleLogout: adobePassLogout,\n onSocialOpened: onSocialOpened,\n onSocialClosed: onSocialClosed,\n onCaptionOpened: onCaptionOpened,\n onCaptionClosed: onCaptionClosed\n }));\n\n return _jsx('div', {\n className: 'playback-container hero_wrapper',\n style: __WEBPACK_IMPORTED_MODULE_13__style__[\"a\" /* default */].container,\n onClick: isAuthenticatableScreen && clickHandler\n }, void 0, dialogView);\n }\n }]);\n\n return SyndicatedPlayer;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"PureComponent\"]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_7__common_authenticationAware__[\"a\" /* default */])()(Object(__WEBPACK_IMPORTED_MODULE_14__alias_Playable__[\"a\" /* default */])(SyndicatedPlayer)));\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 371 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(35),\n now = __webpack_require__(785),\n toNumber = __webpack_require__(317);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n\n\n/***/ }),\n/* 372 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lib_format_normalizeQueryString__ = __webpack_require__(203);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_page_actions__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__actions__ = __webpack_require__(369);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__common_actions_listingsActions__ = __webpack_require__(206);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__common_actions_appActions__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__player_actions__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__common_page_AdobePassProxyLogin__ = __webpack_require__(373);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__SyndicatedPlayer__ = __webpack_require__(370);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__common_video_player__ = __webpack_require__(116);\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PARTNER = 'watchespn';\nvar DOMAIN = 'syndicated-api';\n\nvar AdobePassEnv = __WEBPACK_IMPORTED_MODULE_0__enums__[\"a\" /* AdobePass */].Env;\n\nvar SyndicatedPlayerAPIProxy = function () {\n function SyndicatedPlayerAPIProxy(component) {\n _classCallCheck(this, SyndicatedPlayerAPIProxy);\n\n var props = component.props;\n var adobePassLogout = props.adobePassLogout,\n _props$location$query = props.location.query;\n _props$location$query = _props$location$query === undefined ? {} : _props$location$query;\n var referrerQuery = _props$location$query.referrer;\n\n\n this.targetWindow = window.parent;\n var _document = document,\n _document$referrer = _document.referrer,\n referrer = _document$referrer === undefined ? '' : _document$referrer;\n // `referrerQuery` is for when it's self-reload and lose the original `document.referrer`.\n\n var originResult = /https?:\\/\\/[^\\/]+/.exec(referrerQuery || referrer);\n // try to specify the target origin, but you won't be able to know the parent location in old IE.\n this.targetOrigin = originResult && originResult[0] || '*';\n this.component = component;\n var _component$props$loca = this.component.props.location.query.instanceId,\n instanceId = _component$props$loca === undefined ? '' : _component$props$loca;\n\n this.instanceId = instanceId;\n this.adobePassLogout = adobePassLogout.bind(this);\n this._onPostMessage = this._onPostMessage.bind(this);\n this._onPlaying = this._onPlaying.bind(this);\n this._onPlay = this._onPlay.bind(this);\n this._onPause = this._onPause.bind(this);\n this._onAdPodStarted = this._onAdPodStarted.bind(this);\n this._onAdPodEnded = this._onAdPodEnded.bind(this);\n this._onAdStarted = this._onAdStarted.bind(this);\n this._onAdEnded = this._onAdEnded.bind(this);\n this._onProgramChange = this._onProgramChange.bind(this);\n this._onContentLoaded = this._onContentLoaded.bind(this);\n this._onContentEnded = this._onContentEnded.bind(this);\n this._onError = this._onError.bind(this);\n this._unsubscribe = this._subscribeMessage();\n this._publish(SyndicatedPlayerAPIProxy.Events.BRIDGE_READY);\n }\n\n _createClass(SyndicatedPlayerAPIProxy, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var nextDomainAuth = nextProps.domainAuth,\n nextProviderInfo = nextProps.providerInfo,\n nextDisplay = nextProps.providerDialog.display,\n nextEmbedded = nextProps.player.embedded,\n nextQuery = nextProps.query,\n nextContent = nextProps.content;\n var _component$props = this.component.props,\n query = _component$props.query,\n domainAuth = _component$props.domainAuth,\n providerInfo = _component$props.providerInfo,\n display = _component$props.providerDialog.display,\n embedded = _component$props.player.embedded;\n\n if (domainAuth === __WEBPACK_IMPORTED_MODULE_9__SyndicatedPlayer__[\"b\" /* domainAuthStatus */].UNKNOWN && nextDomainAuth !== domainAuth) {\n this._publish(SyndicatedPlayerAPIProxy.Events.READY, { blocked: nextDomainAuth === __WEBPACK_IMPORTED_MODULE_9__SyndicatedPlayer__[\"b\" /* domainAuthStatus */].NOT_ALLOWED });\n }\n if (Object(__WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__[\"a\" /* default */])(providerInfo) && !Object(__WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__[\"a\" /* default */])(nextProviderInfo)) {\n this._publish(SyndicatedPlayerAPIProxy.Events.PROVIDER_SELECTED, { provider: this.getSelectedProvider(nextProps) });\n } else if (!Object(__WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__[\"a\" /* default */])(providerInfo) && Object(__WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__[\"a\" /* default */])(nextProviderInfo)) {\n this._publish(SyndicatedPlayerAPIProxy.Events.PROVIDER_LOGOUT);\n }\n if (nextDisplay && !display) {\n this._publish(SyndicatedPlayerAPIProxy.Events.PROVIDER_SCREEN_SHOWN);\n }\n if (nextEmbedded && !embedded && !this._playerUnsubscribe) {\n this._addPlayerListeners();\n } else if (!nextEmbedded && embedded && this._playerUnsubscribe) {\n this._removePlayerListeners();\n }\n // This should only be triggered when the `id` URL query is updated by schedule link click\n // When content is switched through API, content changes first followed by URL query update,\n // so it doesn't hit this condition\n if (!this._selecting && nextQuery.id && nextQuery.id !== query.id) {\n this.selectEventById(nextQuery.id);\n this._selecting = true;\n } else if (this._selecting && nextQuery.id && nextContent.id && nextQuery.id === '' + nextContent.id && nextQuery.id === query.id) {\n this._selecting = false;\n }\n }\n }, {\n key: 'parentHost',\n value: function parentHost(host) {\n // this is called from the parent window in response to `BRIDGE_READY` event from the player,\n // when this is called, we assume the parent is handling the postMessage the player is sending\n // so it can also handle reloading the iframe when the mvpd login completes.\n this.hasBridgedParent = true;\n this.component.parentHost(host);\n }\n }, {\n key: '_addPlayerListeners',\n value: function _addPlayerListeners() {\n var _this = this;\n\n if (!this.videoPlayer) {\n return;\n }\n var player = this.videoPlayer.player;\n if (player) {\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_PLAYING, this._onPlaying);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_PLAY, this._onPlay);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_PAUSE, this._onPause);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_AD_POD_STARTED, this._onAdPodStarted);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_AD_POD_ENDED, this._onAdPodEnded);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_AD_STARTED, this._onAdStarted);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_AD_ENDED, this._onAdEnded);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_PROGRAM_CHANGE, this._onProgramChange);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_CONTENT_LOADED, this._onContentLoaded);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_CONTENT_ENDED, this._onContentEnded);\n player.on(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_ERROR, this._onError);\n }\n this._playerUnsubscribe = function () {\n if (!_this.videoPlayer) {\n return;\n }\n player = _this.videoPlayer.player;\n if (player) {\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_PLAYING, _this._onPlaying);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_PLAY, _this._onPlay);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_PAUSE, _this._onPause);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_AD_POD_STARTED, _this._onAdPodStarted);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_AD_POD_ENDED, _this._onAdPodEnded);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_AD_STARTED, _this._onAdStarted);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_AD_ENDED, _this._onAdEnded);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_PROGRAM_CHANGE, _this._onProgramChange);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_CONTENT_LOADED, _this._onContentLoaded);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_CONTENT_ENDED, _this._onContentEnded);\n player.off(__WEBPACK_IMPORTED_MODULE_0__enums__[\"A\" /* PlayerEvents */].ESPN_ERROR, _this._onError);\n }\n };\n }\n }, {\n key: '_removePlayerListeners',\n value: function _removePlayerListeners() {\n if (this._playerUnsubscribe) {\n this._playerUnsubscribe();\n this._playerUnsubscribe = null;\n }\n }\n }, {\n key: '_updateHeroByQuery',\n value: function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(queryArg, autoplayArg, thumbnail) {\n var query, _component$props2, dispatch, _component$props2$pag, pageId, pageName, embedded, autoStart, content, payload, _ref2, _ref2$page, edition, heroContent, connectedPlayer, autoplay, hasAutoplay;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n query = Object(__WEBPACK_IMPORTED_MODULE_1__lib_format_normalizeQueryString__[\"a\" /* default */])(queryArg);\n _component$props2 = this.component.props, dispatch = _component$props2.dispatch, _component$props2$pag = _component$props2.page, pageId = _component$props2$pag.id, pageName = _component$props2$pag.name, embedded = _component$props2.player.embedded, autoStart = _component$props2.query.autoStart, content = _component$props2.content;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__common_page_actions__[\"r\" /* createRequestPageAction */])(pageId));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__common_page_actions__[\"n\" /* completePageLoad */])());\n _context.next = 6;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__common_page_actions__[\"t\" /* fetchEventOrVideoByQuery */])(query));\n\n case 6:\n payload = _context.sent;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_appActions__[\"A\" /* contentUnSelect */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_appActions__[\"P\" /* streamUnSelect */])());\n _ref2 = payload || {}, _ref2$page = _ref2.page;\n _ref2$page = _ref2$page === undefined ? {} : _ref2$page;\n edition = _ref2$page.edition, heroContent = _ref2$page.contents;\n\n if (thumbnail) {\n heroContent.imageHref = thumbnail;\n }\n\n if (heroContent && content && heroContent.id !== content.id) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_appActions__[\"z\" /* contentSelect */])(heroContent));\n }\n\n if (!(embedded && autoplayArg === false)) {\n _context.next = 19;\n break;\n }\n\n connectedPlayer = this.connectedPlayer;\n\n if (!connectedPlayer) {\n _context.next = 19;\n break;\n }\n\n _context.next = 19;\n return connectedPlayer.unembedPlayer();\n\n case 19:\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__common_page_actions__[\"q\" /* createReceivePageAction */])({\n id: pageId,\n name: pageName,\n edition: edition,\n heroContent: heroContent,\n isFinal: true\n }));\n\n autoplay = autoplayArg;\n\n if (autoplay == null) {\n if (embedded) {\n autoplay = true;\n } else if (autoStart === 'false') {\n autoplay = false;\n }\n }\n hasAutoplay = autoplay != null;\n\n if (hasAutoplay) {\n // TODO: clarify the difference between `autoEmbed` and `autoplay`\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__player_actions__[\"o\" /* createAutoplayUpdatedAction */])(autoplay));\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_appActions__[\"Q\" /* updateRoute */])(hasAutoplay ? _extends({}, query, { autoStart: autoplay }) : query));\n\n case 25:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _updateHeroByQuery(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return _updateHeroByQuery;\n }()\n }, {\n key: 'playVideo',\n value: function playVideo() {\n if (!this.videoPlayer) {\n return;\n }\n this.videoPlayer.play();\n }\n }, {\n key: 'pauseVideo',\n value: function pauseVideo() {\n if (!this.videoPlayer) {\n return;\n }\n this.videoPlayer.pause();\n }\n }, {\n key: 'muteStream',\n value: function muteStream() {\n if (!this.videoPlayer || !this.videoPlayer.mute) {\n return;\n }\n this.videoPlayer.mute();\n }\n }, {\n key: 'unMuteStream',\n value: function unMuteStream() {\n if (!this.videoPlayer || !this.videoPlayer.unmute) {\n return;\n }\n this.videoPlayer.unmute();\n }\n }, {\n key: 'selectById',\n value: function selectById(id, autoplay) {\n var thumbnail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (!id) {\n return;\n }\n this._updateHeroByQuery({ id: id }, autoplay, thumbnail);\n }\n }, {\n key: 'selectByEventId',\n value: function selectByEventId(eventId, autoplay) {\n var thumbnail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (!eventId) {\n return;\n }\n this._updateHeroByQuery({ eventId: eventId }, autoplay, thumbnail);\n }\n }, {\n key: 'selectEventByNetworkName',\n value: function selectEventByNetworkName(network) {\n var thumbnail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (!network) {\n return;\n }\n this._updateHeroByQuery({ network: network }, undefined, thumbnail);\n }\n\n /*\n selectByAiringId(\n token,\n tokenType,\n sessionId,\n viewContentReference,\n airingId,\n pricePlanId,\n errorCode = null, errorMessage = null, degradation = null, autoplay = false, thumbnail = '') {\n // TODO: figure out if we need it or not\n }\n */\n\n }, {\n key: 'selectEventById',\n value: function selectEventById(id) {\n var thumbnail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n this.selectById(id, undefined, thumbnail);\n }\n }, {\n key: 'selectEventByGameIdLeague',\n value: function selectEventByGameIdLeague(gameId) {\n var _this2 = this;\n\n var league = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var thumbnail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var dispatch = this.component.props.dispatch;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__common_actions_listingsActions__[\"a\" /* getEventByQuery */])({ eventId: gameId, league: league })).then(function (content) {\n if (!content) {\n return;\n }\n _this2.selectById(content.id, true, thumbnail);\n });\n }\n }, {\n key: 'selectEventByExternalId',\n value: function selectEventByExternalId(gameId, sport, leagueName) {\n this.selectEventByGameIdLeague(gameId, leagueName);\n }\n }, {\n key: 'setVideoPosition',\n value: function setVideoPosition(positionInSec) {\n if (!this.videoPlayer || !this.videoPlayer.currentTime) {\n return;\n }\n this.videoPlayer.currentTime(positionInSec);\n }\n }, {\n key: 'getVideoPosition',\n value: function getVideoPosition() {\n if (!this.videoPlayer || !this.videoPlayer.currentTime) {\n return 0;\n }\n return this.videoPlayer.currentTime() || 0;\n }\n\n /*\n getFeedById(id) {\n // TODO: figure out if we need it or not\n }\n */\n\n }, {\n key: 'enterFullScreen',\n value: function enterFullScreen() {\n if (!this.videoPlayer || !this.videoPlayer.requestFullscreen) {\n return;\n }\n this.videoPlayer.requestFullscreen();\n }\n }, {\n key: 'exitFullScreen',\n value: function exitFullScreen() {\n if (!this.videoPlayer || !this.videoPlayer.exitFullscreen) {\n return;\n }\n this.videoPlayer.exitFullscreen();\n }\n\n /*\n sendMetric(metric) {\n // TODO: figure out if we need it or not\n }\n */\n\n /*\n getMetadataById(key) {\n // TODO: figure out if we need it or not\n }\n */\n\n }, {\n key: 'getAffiliate',\n value: function getAffiliate() {\n var _component$props$prov = this.component.props.providerInfo,\n providerInfo = _component$props$prov === undefined ? {} : _component$props$prov;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__[\"a\" /* default */])(providerInfo)) {\n return null;\n }\n return {\n id: providerInfo.abbreviation,\n name: providerInfo.name,\n websiteUrl: providerInfo.links.web.href,\n imageUrl: providerInfo.images.logo.href\n };\n }\n }, {\n key: 'getSelectedProvider',\n value: function getSelectedProvider() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.component.props;\n\n // TODO: `espn3Only` prop is returned from http://broadband.espn.com/espn3/auth/watchespn/userData\n var _props$providerInfo = props.providerInfo,\n providerInfo = _props$providerInfo === undefined ? {} : _props$providerInfo;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__lib_util_isEmpty__[\"a\" /* default */])(providerInfo)) {\n return null;\n }\n return {\n adobePassProviderId: providerInfo.abbreviation,\n displayName: providerInfo.name,\n providerHomepageUrl: providerInfo.links.web.href,\n providerLogoUrl: providerInfo.images.logo.href,\n name: providerInfo.abbreviation\n };\n }\n }, {\n key: 'getAuthenticationStatus',\n value: function getAuthenticationStatus() {\n var _component$props3 = this.component.props,\n authStatus = _component$props3.authStatus,\n _component$props3$pro = _component$props3.providerInfo,\n providerInfo = _component$props3$pro === undefined ? {} : _component$props3$pro;\n\n if (authStatus === 'not authenticated') {\n return {\n name: 'invalid',\n type: 'none'\n };\n }\n\n return {\n name: providerInfo.name,\n type: authStatus === 'authenticated' ? 'tve' : 'ip'\n };\n }\n }, {\n key: 'recheckAccess',\n value: function recheckAccess() {\n if (this.targetWindow && this.targetWindow !== window) {\n this._publish(SyndicatedPlayerAPIProxy.Events.RECHECK_ACCESS, { href: window.location.href });\n } else {\n this.component.recheckAccess();\n }\n }\n\n /*\n getPlayingEvents() {\n // TODO: figure out if we need it or not\n }\n */\n\n }, {\n key: '_onPlaying',\n value: function _onPlaying() {\n this._publish(SyndicatedPlayerAPIProxy.Events.PLAYING);\n }\n }, {\n key: '_onPlay',\n value: function _onPlay() {\n this._publish(SyndicatedPlayerAPIProxy.Events.PLAY);\n }\n }, {\n key: '_onPause',\n value: function _onPause() {\n this._publish(SyndicatedPlayerAPIProxy.Events.PAUSE);\n }\n }, {\n key: '_onAdPodStarted',\n value: function _onAdPodStarted(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.AD_POD_STARTED, payload);\n }\n }, {\n key: '_onAdPodEnded',\n value: function _onAdPodEnded(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.AD_POD_ENDED, payload);\n }\n }, {\n key: '_onAdStarted',\n value: function _onAdStarted(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.AD_STARTED, payload);\n }\n }, {\n key: '_onAdEnded',\n value: function _onAdEnded(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.AD_ENDED, payload);\n }\n }, {\n key: '_onProgramChange',\n value: function _onProgramChange(_, mediainfo) {\n // guard against program change called with the same id\n // `playingStream` is passed by `playable` HOC\n var _component$props$play = this.component.props.playingStream,\n playingStream = _component$props$play === undefined ? {} : _component$props$play;\n\n if (playingStream.id === mediainfo.id) {\n return;\n }\n this._publish(SyndicatedPlayerAPIProxy.Events.PROGRAM_CHANGE, mediainfo);\n }\n }, {\n key: '_onContentLoaded',\n value: function _onContentLoaded(_) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$mediainfo = _ref3.mediainfo,\n mediainfo = _ref3$mediainfo === undefined ? {} : _ref3$mediainfo;\n\n this._publish(SyndicatedPlayerAPIProxy.Events.CONTENT_LOADED, mediainfo);\n }\n }, {\n key: '_onContentEnded',\n value: function _onContentEnded() {\n this._publish(SyndicatedPlayerAPIProxy.Events.CONTENT_ENDED);\n }\n }, {\n key: '_onError',\n value: function _onError(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.ERROR, payload);\n }\n }, {\n key: '_onPostMessage',\n value: function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(event) {\n var _this3 = this;\n\n var data, _data, type, tId, status, params, entitlementToken, _type$split, _type$split2, partner, domain, apiName, args, payload, val, _component$props4, dispatch, _component$props4$ado, adobePassEnv, isAuthenticated;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(typeof event.data !== 'string')) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 2:\n data = void 0;\n\n try {\n data = JSON.parse(event.data);\n } catch (err) {\n data = {};\n }\n\n _data = data, type = _data.type, tId = _data.tId, status = _data.status, params = _data.params, entitlementToken = _data.entitlementToken;\n\n if (type) {\n _context2.next = 7;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 7:\n _type$split = type.split(':'), _type$split2 = _slicedToArray(_type$split, 3), partner = _type$split2[0], domain = _type$split2[1], apiName = _type$split2[2];\n\n if (!(partner !== 'watchespn')) {\n _context2.next = 10;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 10:\n if (!(domain === 'syndicated-api')) {\n _context2.next = 14;\n break;\n }\n\n if (this[apiName]) {\n args = Array.isArray(data.payload) ? data.payload : [data.payload];\n payload = this[apiName].apply(this, _toConsumableArray(args));\n\n if (SyndicatedPlayerAPIProxy.Getter.indexOf(apiName) !== -1) {\n if (payload && typeof payload.then === 'function') {\n payload.then(function (value) {\n _this3._publish(type, value, tId);\n });\n } else {\n this._publish(type, payload, tId);\n }\n }\n }\n _context2.next = 35;\n break;\n\n case 14:\n if (!(domain === 'adobepass-login' && type === __WEBPACK_IMPORTED_MODULE_8__common_page_AdobePassProxyLogin__[\"a\" /* AdobePassProxyLoginComponent */].EVENT_LOADED)) {\n _context2.next = 19;\n break;\n }\n\n val = window.localStorage.getItem(__WEBPACK_IMPORTED_MODULE_8__common_page_AdobePassProxyLogin__[\"a\" /* AdobePassProxyLoginComponent */].XD_LOCALSTORAGE_KEY);\n\n if (val !== __WEBPACK_IMPORTED_MODULE_8__common_page_AdobePassProxyLogin__[\"a\" /* AdobePassProxyLoginComponent */].XD_LOCALSTORAGE_VAL) {\n // enable this to auto-kick off self window login flow when xdomain storage failure is detected\n /*\n if (!this.component.loginWindow) {\n return;\n }\n const origin = `${window.location.protocol}//${window.location.host}`;\n this.component.loginWindow.postMessage(JSON.stringify({\n type: AdobePassProxyLoginComponent.EVENT_CLOSE_REQUEST,\n params: -1\n }), origin);\n */\n this._xdomainBlocked = true;\n }\n _context2.next = 35;\n break;\n\n case 19:\n if (!(domain === 'adobepass-login' && type === __WEBPACK_IMPORTED_MODULE_8__common_page_AdobePassProxyLogin__[\"a\" /* AdobePassProxyLoginComponent */].EVENT_CLOSED)) {\n _context2.next = 24;\n break;\n }\n\n this.component.onLoginClose();\n // when the login screen is closed as a result of the request made due to xdomain storage failure is detected,\n // kick off the login flow using the self window\n if (params === -1) {\n this.component.onXDomainCheckFail();\n }\n _context2.next = 35;\n break;\n\n case 24:\n if (!(domain === 'adobepass-login' && type === __WEBPACK_IMPORTED_MODULE_8__common_page_AdobePassProxyLogin__[\"a\" /* AdobePassProxyLoginComponent */].EVENT_AUTHENTICATE && status === 'success')) {\n _context2.next = 35;\n break;\n }\n\n _component$props4 = this.component.props, dispatch = _component$props4.dispatch, _component$props4$ado = _component$props4.adobePassEnv, adobePassEnv = _component$props4$ado === undefined ? AdobePassEnv.PROD : _component$props4$ado;\n\n\n this.authSuccess = true;\n\n if (entitlementToken && this._xdomainBlocked) {\n try {\n // update `entitlementToken` in the player window\n window.localStorage.setItem('entitlementToken', entitlementToken);\n // update `entitlementToken` in the AccessEnabler Proxy window, which is the source of truth\n // FIXME: this is a hack to get around cross domain localStorage restriction in Safari\n if (window.accessEnablerProxy && window.accessEnablerProxy.contentWindow) {\n window.accessEnablerProxy.contentWindow.postMessage({\n id: 'c.a.p.pm.s.espn',\n operation: 'setItem',\n params: ['entitlementToken', entitlementToken]\n }, adobePassEnv === AdobePassEnv.STAGING ? 'https://sp.auth-staging.adobe.com' : 'https://sp.auth.adobe.com');\n }\n } catch (err) {\n console.error(err);\n }\n }\n\n // This needs to be executed before publishing `AUTHENTICATION_SUCCESS` event\n // Xfinity/Comcast will redirect the page to their login complete page when this(full authentication) is executed\n _context2.next = 30;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_4__actions__[\"b\" /* updateAdobeAuthentication */])());\n\n case 30:\n isAuthenticated = _context2.sent;\n\n\n if (this.targetWindow && this.targetWindow !== window) {\n // TODO: remove reload logic from `watchespn-syndicated-player` module\n // so that `authRetry` message logic can be executed\n this._publish(SyndicatedPlayerAPIProxy.Events.AUTHENTICATION_SUCCESS, {\n href: window.location.href,\n provider: this.getSelectedProvider(),\n authenticationStatus: this.getAuthenticationStatus()\n });\n }\n\n this.component.onLoginClose();\n\n if (isAuthenticated) {\n this.component.onAuthSuccess();\n }\n\n if (this._xdomainBlocked) {\n // This can happen when `Cookie and website data` setting is set anything other than `Always Allow` in Safari\n this.reload(true, this._xdomainBlocked);\n }\n\n case 35:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _onPostMessage(_x12) {\n return _ref4.apply(this, arguments);\n }\n\n return _onPostMessage;\n }()\n }, {\n key: 'reload',\n value: function reload() {\n var authFailed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var xdomainBlocked = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // eslint-disable-line class-methods-use-this\n // not recommended to use as this can cause other services which uses `postMessage`\n // to error out when they don't check the referrer origin change\n // currently reload button triggers this as a fallback when the automatic playback doesn't happen after login\n var qs = '';\n if (window.location.search.indexOf('referrer') === -1) {\n qs = (window.location.search.indexOf('?') === -1 ? '?' : '&') + 'referrer=' + encodeURIComponent(document.referrer);\n }\n if (authFailed && window.location.search.indexOf(__WEBPACK_IMPORTED_MODULE_0__enums__[\"t\" /* Flags */].AUTH_RETRY) === -1) {\n qs += '&' + __WEBPACK_IMPORTED_MODULE_0__enums__[\"t\" /* Flags */].AUTH_RETRY + '=true';\n }\n if (xdomainBlocked && window.location.search.indexOf(__WEBPACK_IMPORTED_MODULE_0__enums__[\"t\" /* Flags */].XDOMAIN_BLOCKED) === -1) {\n qs += '&' + __WEBPACK_IMPORTED_MODULE_0__enums__[\"t\" /* Flags */].XDOMAIN_BLOCKED + '=true';\n }\n var reloadUrl = '' + window.location.href + qs;\n window.location.href = reloadUrl;\n }\n }, {\n key: '_publish',\n value: function _publish(type, payload, tId) {\n if (!this.targetWindow || this.targetWindow === window) {\n return;\n }\n var event = {\n type: type,\n tId: tId,\n payload: payload\n };\n try {\n this.targetWindow.postMessage(PARTNER + ':' + DOMAIN + ':' + this.instanceId + JSON.stringify(event), this.targetOrigin);\n } catch (err) {\n console.error(err);\n }\n }\n }, {\n key: '_subscribeMessage',\n value: function _subscribeMessage() {\n window.addEventListener('message', this._onPostMessage);\n return function _unsubscribe() {\n window.removeEventListener('message', this._onPostMessage);\n };\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n if (this._unsubscribe) {\n this._unsubscribe();\n }\n }\n }, {\n key: 'connectedPlayer',\n get: function get() {\n var connectedPlayerWrapper = this.component.connectedPlayer;\n\n var player = void 0;\n if (connectedPlayerWrapper) {\n // we assume `ConnectedPlayer` always use `connectPlayer` HoC which uses redux `connect`.\n var connectedPlayer = connectedPlayerWrapper.getWrappedInstance();\n if (connectedPlayer) {\n // get the instance from injectIntl HoC or maybe not using HoC any more\n player = connectedPlayer.getWrappedInstance() || connectedPlayer;\n }\n }\n return player;\n }\n }, {\n key: 'videoPlayer',\n get: function get() {\n var playerBundleInstance = void 0;\n if (this.connectedPlayer) {\n playerBundleInstance = this.connectedPlayer.videoPlayer && this.connectedPlayer.videoPlayer.getPlayer(__WEBPACK_IMPORTED_MODULE_10__common_video_player__[\"a\" /* default */].PlayerTech.BRIGHTCOVE);\n }\n return playerBundleInstance;\n }\n }]);\n\n return SyndicatedPlayerAPIProxy;\n}();\n\nvar API = {\n PLAY: 'playVideo',\n PAUSE: 'pauseVideo',\n MUTE: 'muteStream',\n UNMUTE: 'unMuteStream',\n SET_CURRENT_TIME: 'setVideoPosition',\n GET_CURRENT_TIME: 'getVideoPosition',\n ENTER_FULLSCREEN: 'enterFullScreen',\n EXIT_FULLSCREEN: 'exitFullScreen',\n SELECT_BY_ID: 'selectById',\n SELECT_BY_EVENT_ID: 'selectByEventId',\n SELECT_EVENT_BY_ID: 'selectEventById',\n SELECT_EVENT_BY_NETWORK_NAME: 'selectEventByNetworkName',\n SELECT_EVENT_BY_GAME_ID: 'selectEventByGameIdLeague',\n SELECT_EVENT_BY_EXTERNAL_ID: 'selectEventByExternalId',\n RECHECK_ACCESS: 'recheckAccess',\n ADOBE_PASS_LOGOUT: 'adobePassLogout',\n PARENT_HOST: 'parentHost',\n GET_AFFILIATE: 'getAffiliate',\n GET_SELECTED_PROVIDER: 'getSelectedProvider',\n GET_AUTH_STATUS: 'getAuthenticationStatus'\n};\n\nvar Events = {\n BRIDGE_READY: 'bridgeReady',\n READY: 'ready',\n PROVIDER_SELECTED: 'providerSelected',\n PROVIDER_LOGOUT: 'providerLogout',\n PROVIDER_SCREEN_SHOWN: 'providerScreenShown',\n AUTHENTICATION_SUCCESS: 'authenticationSuccessful',\n RECHECK_ACCESS: 'recheckAccess',\n PLAYING: 'playing',\n PLAY: 'play',\n PAUSE: 'pause',\n AD_POD_STARTED: 'adPodStarted',\n AD_POD_ENDED: 'adPodEnded',\n AD_STARTED: 'adStarted',\n AD_ENDED: 'adEnded',\n PROGRAM_CHANGE: 'programChange',\n CONTENT_LOADED: 'contentLoaded',\n CONTENT_ENDED: 'contentEnded',\n ERROR: 'error'\n};\n\nSyndicatedPlayerAPIProxy.PARTNER = PARTNER;\nSyndicatedPlayerAPIProxy.DOMAIN = DOMAIN;\n\nObject.keys(API).forEach(function (key) {\n SyndicatedPlayerAPIProxy[key] = PARTNER + ':' + DOMAIN + ':' + API[key];\n});\n\nSyndicatedPlayerAPIProxy.Events = {};\nObject.keys(Events).forEach(function (key) {\n SyndicatedPlayerAPIProxy.Events[key] = PARTNER + ':' + DOMAIN + ':' + Events[key];\n});\n\nSyndicatedPlayerAPIProxy.Getter = [API.GET_CURRENT_TIME, API.GET_AFFILIATE, API.GET_SELECTED_PROVIDER, API.GET_AUTH_STATUS];\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (SyndicatedPlayerAPIProxy);\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 373 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export getRedirectUrl */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AdobePassProxyLoginComponent; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_helmet__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__actions_authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__lib_format_queryString__ = __webpack_require__(18);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\nfunction sendMessage(data) {\n if (!window.opener) {\n return;\n }\n var origin = window.location.protocol + '//' + window.location.host;\n window.opener.postMessage(JSON.stringify(data), origin);\n}\n\nfunction getRedirectUrl() {\n var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var redirectUrl = arguments[1];\n var syndicated = arguments[2];\n var id = query.id,\n network = query.network;\n\n if (!redirectUrl && !syndicated) {\n // If the `id` or `network` query parameters are defined, go directly to the /player route to play the asset via `id`\n if (id || network) {\n return 'http://' + window.location.host + '/watch/player' + Object(__WEBPACK_IMPORTED_MODULE_6__lib_format_queryString__[\"a\" /* default */])(query);\n }\n // NOTE: We might not have an `id` coming from an 3rd party provider.\n // In this case, we want to redirect users to the main /watch homepage\n // SEE: https://espnjira.disney.com/browse/WEWEB-2333\n return 'http://' + window.location.host + '/watch' + Object(__WEBPACK_IMPORTED_MODULE_6__lib_format_queryString__[\"a\" /* default */])(query);\n }\n\n return redirectUrl;\n}\n\nvar AdobePassProxyLoginComponent = function (_PureComponent) {\n _inherits(AdobePassProxyLoginComponent, _PureComponent);\n\n function AdobePassProxyLoginComponent() {\n _classCallCheck(this, AdobePassProxyLoginComponent);\n\n return _possibleConstructorReturn(this, (AdobePassProxyLoginComponent.__proto__ || Object.getPrototypeOf(AdobePassProxyLoginComponent)).apply(this, arguments));\n }\n\n _createClass(AdobePassProxyLoginComponent, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n window.addEventListener('message', this._onPostMessage);\n\n try {\n window.localStorage.setItem(AdobePassProxyLoginComponent.XD_LOCALSTORAGE_KEY, AdobePassProxyLoginComponent.XD_LOCALSTORAGE_VAL);\n } catch (err) {\n console.error(err);\n }\n\n sendMessage({\n type: AdobePassProxyLoginComponent.EVENT_LOADED\n });\n\n var _props = this.props,\n dispatch = _props.dispatch,\n _props$location$query = _props.location.query,\n channel = _props$location$query.channel,\n id = _props$location$query.id,\n mvpd = _props$location$query.mvpd,\n networkQuery = _props$location$query.network,\n redirectUrlQuery = _props$location$query.redirectUrl,\n syndicated = _props$location$query.syndicated;\n\n\n var network = networkQuery || channel;\n var redirectUrl = getRedirectUrl({ id: id, network: network }, redirectUrlQuery, syndicated);\n var authenticator = dispatch(Object(__WEBPACK_IMPORTED_MODULE_4__actions_authenticationActions__[\"G\" /* createAuthenticator */])(__WEBPACK_IMPORTED_MODULE_5__enums__[\"f\" /* AuthenticatorType */].ADOBE));\n\n authenticator.initialize().then(function () {\n return authenticator.authenticate();\n }).then(function (isAuthenticated) {\n if (!isAuthenticated) {\n return __WEBPACK_IMPORTED_MODULE_3_bluebird___default.a.resolve({});\n }\n return authenticator.getAuthenticationInfo();\n }).then(function (_ref) {\n var currentMvpd = _ref.mvpd;\n\n // User is not authenticated, initialize the Auth flow for the provider via `mvpd`\n if (!currentMvpd) {\n return authenticator.selectProvider({\n ID: mvpd\n });\n }\n\n // Attempting to auth with a different provider than currently authd as\n if (currentMvpd !== mvpd) {\n return authenticator.deauthenticate().then(function () {\n window.location.href = window.location.href;\n });\n }\n\n // if a redirectUrl exists, this indicates we are being linked to by an external site\n if (redirectUrl && !syndicated) {\n window.location.href = redirectUrl;\n return null;\n }\n\n // user is authd successfully for syndicated player. message parent window and close self\n var entitlementToken = void 0;\n try {\n entitlementToken = window.localStorage.getItem('entitlementToken');\n } catch (err) {\n console.error(err);\n }\n\n sendMessage({\n type: AdobePassProxyLoginComponent.EVENT_AUTHENTICATE,\n entitlementToken: entitlementToken,\n status: 'success'\n });\n\n window.close();\n return null;\n });\n }\n }, {\n key: '_onPostMessage',\n value: function _onPostMessage(event) {\n // eslint-disable-line class-methods-use-this\n if (typeof event.data !== 'string') {\n return;\n }\n\n var data = void 0;\n try {\n data = JSON.parse(event.data);\n } catch (err) {\n data = {};\n }\n\n var _data = data,\n type = _data.type,\n params = _data.params;\n\n if (type === AdobePassProxyLoginComponent.EVENT_CLOSE_REQUEST) {\n sendMessage({\n type: AdobePassProxyLoginComponent.EVENT_CLOSED,\n params: params\n });\n window.close();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _jsx(__WEBPACK_IMPORTED_MODULE_2_react_helmet___default.a, {\n meta: [{ name: 'robots', content: 'noindex, nofollow' }]\n });\n }\n }]);\n\n return AdobePassProxyLoginComponent;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"PureComponent\"]);\n\nAdobePassProxyLoginComponent.XD_LOCALSTORAGE_KEY = '@watch/XD';\nAdobePassProxyLoginComponent.XD_LOCALSTORAGE_VAL = 'xdomain';\nAdobePassProxyLoginComponent.EVENT_LOADED = 'watchespn:adobepass-login:loaded';\nAdobePassProxyLoginComponent.EVENT_AUTHENTICATE = 'watchespn:adobepass-login:authentication';\nAdobePassProxyLoginComponent.EVENT_CLOSED = 'watchespn:adobepass-login:closed';\nAdobePassProxyLoginComponent.EVENT_CLOSE_REQUEST = 'watchespn:adobepass-login:closeRequest';\n\n/* harmony default export */ __webpack_exports__[\"b\"] = (Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])()(AdobePassProxyLoginComponent));\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 374 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = subscribeToStore;\n/* unused harmony export unsubscribeFromStore */\nfunction subscribeToStore(store) {\n var observers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var unsubscribes = [];\n observers.forEach(function (observer) {\n unsubscribes.push(observer(store));\n });\n\n return function () {\n return unsubscribeFromStore(unsubscribes);\n };\n}\n\nfunction unsubscribeFromStore() {\n var unsubscribes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n unsubscribes.map(function (unsubscribe) {\n return unsubscribe();\n });\n}\n\n/***/ }),\n/* 375 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./app/lib/omniture/index.js\nvar omniture = __webpack_require__(34);\n\n// EXTERNAL MODULE: ./app/common/selectors/analyticsSelectors.js\nvar analyticsSelectors = __webpack_require__(54);\n\n// EXTERNAL MODULE: ./app/lib/auth/authStateKnown.js\nvar authStateKnown = __webpack_require__(77);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./app/lib/auth/providerInfoKnown.js\n\n\nfunction providerInfoKnown(userAuth, adobePassInfo, ipInfo) {\n if (userAuth.length === 0 || userAuth.indexOf(enums[\"e\" /* AuthTypes */].MVPD) === -1 && userAuth.indexOf(enums[\"e\" /* AuthTypes */].ISP) === -1) {\n return true;\n } else if (userAuth.indexOf(enums[\"e\" /* AuthTypes */].MVPD) !== -1) {\n return !!adobePassInfo;\n } else if (userAuth.indexOf(enums[\"e\" /* AuthTypes */].ISP) !== -1) {\n return !!ipInfo;\n }\n return false;\n};\n// EXTERNAL MODULE: ./app/lib/util/isEmpty.js\nvar isEmpty = __webpack_require__(12);\n\n// EXTERNAL MODULE: ./app/lib/observe/observeStore.js\nvar observeStore = __webpack_require__(376);\n\n// CONCATENATED MODULE: ./app/lib/observe/trackingObserver.js\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = trackingObserver;\n\n\n\n\n\n\n\n\nvar initialPageTracked = false;\nfunction trackingObserver(store) {\n return Object(observeStore[\"a\" /* default */])(store, analyticsSelectors[\"f\" /* pageTrackingSelector */], function () {\n var currentTracking = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { page: {} };\n var nextTracking = arguments[1];\n var isDomestic = nextTracking.isDomestic,\n adobePassInfo = nextTracking.adobePassInfo,\n analytics = nextTracking.analytics,\n app = nextTracking.app,\n ipInfo = nextTracking.ipInfo,\n page = nextTracking.page,\n userAuth = nextTracking.userAuth,\n subscriptions = nextTracking.subscriptions,\n oneIdLoggedIn = nextTracking.oneIdLoggedIn,\n entitlementsTracking = nextTracking.entitlementsTracking,\n promoTracking = nextTracking.promoTracking,\n adobePassMetadata = nextTracking.adobePassMetadata;\n\n // this one makes sure we don't track the same page twice\n\n if (initialPageTracked && currentTracking.page.name === page.name) {\n return;\n }\n\n if (analytics && (Object(authStateKnown[\"a\" /* default */])(userAuth) || !userAuth.length) && page.name && providerInfoKnown(userAuth, adobePassInfo, ipInfo) && (!isDomestic || (subscriptions || !oneIdLoggedIn) && !Object(isEmpty[\"a\" /* default */])(entitlementsTracking)) || page.autoPageViewTrack) {\n var provider = adobePassInfo || ipInfo || {};\n Object(omniture[\"o\" /* trackPage */])({ app: app, page: page, provider: provider, userAuth: userAuth, entitlementsTracking: entitlementsTracking, promoTracking: promoTracking, adobePassMetadata: adobePassMetadata, isDomestic: isDomestic });\n initialPageTracked = true;\n }\n });\n};\n\n/***/ }),\n/* 376 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = observeStore;\nfunction observeStore(store, select, onChange) {\n var getState = store.getState,\n dispatch = store.dispatch;\n\n var currentState = void 0;\n\n function handleChange() {\n var nextState = select(getState());\n if (nextState !== currentState) {\n onChange(currentState, nextState, dispatch);\n currentState = nextState;\n }\n }\n\n var unsubscribe = store.subscribe(handleChange);\n handleChange();\n return unsubscribe;\n};\n\n/***/ }),\n/* 377 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export loadingClassName */\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = uiLoadingStart;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = uiLoadingComplete;\n/* unused harmony export disableUserInteraction */\n/* unused harmony export enableUserInteraction */\nvar disableUserInteractionHandler = function disableUserInteractionHandler(event) {\n event.stopPropagation();\n event.preventDefault();\n};\n\nvar loadingClassName = 'watch-loading';\n\nfunction uiLoadingStart() {\n if (true) {\n var _ref = document || {},\n _ref$body = _ref.body;\n\n _ref$body = _ref$body === undefined ? {} : _ref$body;\n var className = _ref$body.className;\n\n document.body.className = className.replace(loadingClassName, '') + ' ' + loadingClassName;\n }\n}\n\nfunction uiLoadingComplete() {\n if (true) {\n var _ref2 = document || {},\n _ref2$body = _ref2.body;\n\n _ref2$body = _ref2$body === undefined ? {} : _ref2$body;\n var className = _ref2$body.className;\n\n document.body.className = className.replace(loadingClassName, '');\n enableUserInteraction();\n }\n}\n\nfunction disableUserInteraction() {\n if (true) {\n ['click', 'touchstart'].forEach(function (eventName) {\n document.body.addEventListener(eventName, disableUserInteractionHandler);\n });\n }\n}\n\nfunction enableUserInteraction() {\n if (true) {\n ['click', 'touchstart'].forEach(function (eventName) {\n document.body.removeEventListener(eventName, disableUserInteractionHandler);\n });\n }\n}\n\n/***/ }),\n/* 378 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./node_modules/react-intl/lib/index.es.js + 1 modules\nvar index_es = __webpack_require__(95);\n\n// CONCATENATED MODULE: ./app/lib/i18n/en-us.js\nvar messages = {\n // branding\n 'branding.name': 'WatchESPN',\n // meta\n 'meta.keywords': 'watchespn, watch espn, watchespn mobile, watchespn xbox live, live sports, watch live sports, ' + 'watch espn online, watch espn on xbox, watch espn on mobile phone, espn, espn2, espn3, espnu',\n 'meta.title.home': 'WatchESPN: Live Sports, Game Replays, Video Highlights',\n 'meta.description.home': 'Stream live sports, watch game replays, get video highlights, and access featured ESPN ' + 'content on your computer, mobile device, and TV on ESPN.com and the ESPN app.',\n 'meta.title.schedule': 'Schedule: Live, Upcoming, Replays - WatchESPN',\n 'meta.description.schedule': 'Get live, upcoming, and replay schedule information for your favorite sports and shows ' + 'across every ESPN network on WatchESPN.',\n 'meta.title.features': 'Featured Videos - WatchESPN',\n 'meta.description.features': 'Watch featured news clips, game highlights, and special ESPN programming on WatchESPN.',\n 'meta.title.collection': '{name} - WatchESPN',\n 'meta.description.collection': 'Watch videos from the {name} collection on WatchESPN.',\n 'meta.title.player': '{name} - WatchESPN',\n 'meta.description.player.vod': 'Watch the {name} video on WatchESPN.',\n 'meta.description.player.listing': 'Watch {name} on WatchESPN.',\n 'meta.title.activate': 'Activate - WatchESPN',\n 'meta.description.activate': 'Activate your device',\n 'meta.title.subscribe': 'Subscribe - WatchESPN',\n 'meta.description.subscribe': 'Subscribe your device',\n 'meta.title.feedback': 'Provide Feedback - WatchESPN',\n 'meta.description.feedback': 'Provide feedback on WatchESPN, the service that provides full access on your computer, mobile devices and Xbox Live to all live sports events, replays and programs on the ESPN networks.',\n // page\n 'page.bucket.header.seeAll': \"See All\",\n // schedule\n 'schedule.header': 'Schedule',\n 'schedule.live': 'Live Now',\n 'schedule.live.selectedTabError': 'live',\n 'schedule.upcoming': 'Upcoming',\n 'schedule.upcoming.selectedTabError': 'upcoming',\n 'schedule.replay': 'Replay',\n 'schedule.replay.selectedTabError': 'replay',\n 'schedule.allSports': 'All Sports',\n 'schedule.allNetworks': 'All Networks',\n 'schedule.allLeagues': 'All Leagues',\n 'schedule.replay.all': 'All',\n 'schedule.replay.today': 'Today',\n 'schedule.replay.last7Days': 'Last 7 days',\n 'schedule.replay.last14Days': 'Last 14 days',\n 'schedule.replay.last30Days': 'Last 30 days',\n 'schedule.blackout': 'Subject to blackout',\n 'schedule.message.empty': 'There are currently no {selectedTab} events for this selection.{br}Please check {otherTabs1} or {otherTabs2} or clear all filters.',\n // schedule module\n 'schedule.module.header.live': 'Top Live',\n 'schedule.module.header.upcoming': 'Upcoming',\n 'schedule.module.header.upcoming.on': 'Upcoming on',\n 'schedule.module.alert.upcoming': '{name} is scheduled to begin at {startTime} on {source}. {moreText}',\n 'schedule.module.alert.moreText': 'Please enjoy {name} while you wait.',\n 'schedule.module.eventDate.tomorrow': 'Tomorrow',\n // calendar months\n 'schedule.calendar.month.January': 'January',\n 'schedule.calendar.month.February': 'February',\n 'schedule.calendar.month.March': 'March',\n 'schedule.calendar.month.April': 'April',\n 'schedule.calendar.month.May': 'May',\n 'schedule.calendar.month.June': 'June',\n 'schedule.calendar.month.July': 'July',\n 'schedule.calendar.month.August': 'August',\n 'schedule.calendar.month.September': 'September',\n 'schedule.calendar.month.October': 'October',\n 'schedule.calendar.month.November': 'November',\n 'schedule.calendar.month.December': 'December',\n // calendar short days\n 'schedule.calendar.day.Mon': 'MON',\n 'schedule.calendar.day.Tue': 'TUE',\n 'schedule.calendar.day.Wed': 'WED',\n 'schedule.calendar.day.Thu': 'THU',\n 'schedule.calendar.day.Fri': 'FRI',\n 'schedule.calendar.day.Sat': 'SAT',\n 'schedule.calendar.day.Sun': 'SUN',\n // calendar long days\n 'schedule.calendar.day.Monday': 'Monday',\n 'schedule.calendar.day.Tuesday': 'Tuesday',\n 'schedule.calendar.day.Wednesday': 'Wednesday',\n 'schedule.calendar.day.Thursday': 'Thursday',\n 'schedule.calendar.day.Friday': 'Friday',\n 'schedule.calendar.day.Saturday': 'Saturday',\n 'schedule.calendar.day.Sunday': 'Sunday',\n // search\n 'search.placeholder': 'Find your team, event, or show...',\n 'search.results.message': 'Search results for {query}',\n // player\n 'player.error.defaultMessage': 'This network is not included in your current television subscription. Please contact your provider to upgrade.',\n 'player.error.recommendMobileWeb': 'The device is unable to play this video within the app. Please try visiting espn.com/watch with the latest version of your browser on this device.',\n 'player.error.unexpectedMessage': 'An unexpected error occurred during authorization. Please refresh the page to try again.',\n 'player.menu.logout': 'Log Out of {providerName}',\n 'player.feeds.title': 'Choose Broadcast',\n // provider dialog\n 'search.filter.placeholder': 'Search All Providers',\n 'provider.dialog.title': 'Choose Provider',\n 'provider.dialog.subtitle': 'All Providers (A-Z):',\n 'provider.dialog.description': 'Stream ESPN now by signing in with your TV provider. Having trouble? Check {faq} or {help}.',\n 'provider.dialog.description.noCost': 'no additional cost',\n 'provider.dialog.button.text': 'Get A TV Provider',\n 'provider.dialog.faq.label': 'FAQs',\n 'provider.dialog.help.link': 'http://www.espninstantaccess.com/',\n 'provider.dialog.help.label': 'Get Help',\n 'provider.dialog.call': '888-549-ESPN',\n // sign out\n 'signout.message': 'Do you want to sign out of your {providerName} account?',\n 'signout.label': 'Sign Out',\n // feedback\n 'feedback.title': 'Don\\'t want to chat? Submit feedback via email.',\n 'feedback.caption': 'Provide your e-mail address if you\\'d like us to follow up with you directly.',\n 'feedback.category': 'Choose Category',\n 'feedback.category.select': 'Select a category',\n 'feedback.category.userExperience': 'User Experience',\n 'feedback.category.videoPerformance': 'Video Performance',\n 'feedback.category.programming': 'Programming',\n 'feedback.category.other': 'Other',\n 'feedback.email': 'E-mail',\n 'feedback.provider': 'Cable / Internet Providers',\n 'feedback.provider.default': 'Choose Provider',\n 'feedback.platform': 'Platform',\n 'feedback.desktoplaptop': 'Desktop/laptop',\n 'feedback.iphone': 'iPhone',\n 'feedback.ipad': 'iPad',\n 'feedback.androidphone': 'Android Phone',\n 'feedback.androidtablet': 'Android Tablet',\n 'feedback.xbox': 'Xbox One',\n 'feedback.playstation': 'PlayStation',\n 'feedback.appletv': 'Apple TV',\n 'feedback.androidtv': 'Android TV',\n 'feedback.amazonfiretv': 'Amazon FireTV',\n 'feedback.chromecast': 'Chromecast',\n 'feedback.roku': 'Roku',\n 'feedback.comments': 'Comments',\n 'feedback.send': 'Send feedback',\n 'feedback.thankYou': 'Thank you for posting your feedback.',\n 'feedback.error.category': 'Please select a type of issue.',\n 'feedback.error.email': 'Please enter your e-mail address.',\n 'feedback.error.comments': 'Please enter your comment.',\n // misc\n 'live': 'LIVE',\n 'blackout': 'Blackout',\n // espnapp\n 'espnapp.systemAlert.upcoming': 'This event has not started yet. Tune in at {time} to watch.',\n // syndicated player\n 'syndicated.player.dialog': 'Live programming on WatchESPN is available for no additional cost from selected television and broadcast providers. Please choose your provider from the list below to sign in and see the ESPN networks you can watch:',\n 'syndicated.player.dialog.label.continute': 'Continue',\n 'syndicated.player.dialog.label.recheck': 'Recheck access',\n 'syndicated.player.dialog.message.auth-success': 'You are logged in, playback will start shortly.',\n 'syndicated.player.dialog.message.auth-retry': 'If playback does not begin in 5 seconds, please refresh your browser. This may take up to a minute.',\n 'syndicated.player.dialog.message.xdomain': 'Your browser appears to block storing data that\\'s required for the playback, change your browser setting to allow storing 3rd party data.',\n 'syndicated.player.branding.tooltip': 'View this video on {brandingName}',\n 'syndicated.player.domain.error': 'You are not allowed to access WatchESPN from this website. Please visit WatchESPN.com to see if you have access to this game.',\n 'syndicated.player.message.upcoming': 'This event has not started yet. Please check back once the event has begun.',\n 'syndicated.player.message.no-events': 'No events available.',\n 'syndicated.player.message.geo': 'This video is not currently available to view in your location.',\n // unsupported error due to possible COUNTRY_AND_EDITION_CONFLICT Page API Error\n 'unsupported.error.message': 'This content is not available in this country.'\n};\n\n/* harmony default export */ var en_us = (messages);\n// CONCATENATED MODULE: ./app/lib/i18n/es.js\nvar es_messages = {\n // branding\n 'branding.name': 'ESPN Play',\n // meta\n 'meta.keywords': 'spn, espn3, espn 3, espnplay, espn play, partidos, eventos, programas, shows, en vivo, tv online, ' + 'en directo, ver online, on demand, pc, computadora, computador, móvil, celular, smartphone, iphone, android, ' + 'tablet, ipad, abierto de australia, australian open, x games, nba, liga de españa, liga bbva, futbol de España, ' + 'ncaa, seria a italia, premier league, champions league, liga de campeones, UEFA, 6 naciones rugby',\n 'meta.title.home': 'ESPN Play: Deportes en Vivo, Repeticiones, Highlights',\n 'meta.description.home': 'Mira eventos en vivo, repeticiones, highlights y ten acceso a todo el contenido de ESPN ' + 'desde tu PC, dispositivo móvil y SmartTV a través de ESPN.com y la ESPN App',\n 'meta.title.schedule': 'Agenda: en Vivo, Próximamente, Repeticiones – ESPN Play',\n 'meta.description.schedule': 'Recibe notificaciones cuando tus eventos y shows favoritos estén próximos a comenzar o en vivo',\n 'meta.title.features': 'Videos Destacados – ESPN Play',\n 'meta.description.features': 'Disfruta clips sobre noticias destacadas, highlights de partidos y programación especial de ESPN en ESPN Play',\n 'meta.title.collection': '{name} - ESPN Play',\n 'meta.description.collection': 'Mira videos de la colección {name} en ESPN Play',\n 'meta.title.player': '{name} - ESPN Play',\n 'meta.description.player.vod': 'Mira el video {name} en ESPN Play',\n 'meta.description.player.listing': 'Mira {name} en ESPN Play',\n 'meta.title.activate': 'Activar – ESPN Play',\n 'meta.description.activate': 'Activa tu dispositivo',\n 'meta.title.subscribe': 'Suscríbete – ESPN Play',\n 'meta.description.subscribe': 'Activa tu dispositivo',\n 'meta.title.feedback': 'Envíanos tu feedback - ESPN Play',\n 'meta.description.feedback': 'Envíanos tu feedback sobre ESPN Play, el servicio que permite disfrutar desde tu PC y dispositivo móvil de tus deportes y programas de ESPN favoritos.',\n // page\n 'page.bucket.header.seeAll': \"Ver todos\",\n // schedule\n 'schedule.header': 'Programación',\n 'schedule.live': 'En Vivo',\n 'schedule.live.selectedTabError': 'en vivo',\n 'schedule.upcoming': 'Próximamente',\n 'schedule.upcoming.selectedTabError': 'Próximos',\n 'schedule.replay': 'Repeticiones',\n 'schedule.replay.selectedTabError': 'en Repeticiones',\n 'schedule.allSports': 'Deportes',\n 'schedule.allNetworks': 'Señales de TV',\n 'schedule.allLeagues': 'Ligas',\n 'schedule.replay.all': 'Todo',\n 'schedule.replay.today': 'Hoy',\n 'schedule.replay.last7Days': 'Últimos 7 días',\n 'schedule.replay.last14Days': 'Últimos 14 días',\n 'schedule.replay.last30Days': 'Últimos 30 días',\n 'schedule.blackout': 'Subject to blackout', // TODO: Get Translation if needed\n 'schedule.message.empty': 'Actualmente no hay eventos {selectedTab} disponibles para su selección.{br}Por favor revise {otherTabs1} o {otherTabs2} o elimine todos los filtros.',\n // schedule module\n 'schedule.module.header.live': 'Destacados en Vivo',\n 'schedule.module.header.upcoming': 'Próximamente',\n 'schedule.module.header.upcoming.on': 'Próximamente',\n 'schedule.module.alert.upcoming': '{name} comenzará a las {startTime} por {source}.',\n 'schedule.module.alert.moreText': ' ',\n 'schedule.module.eventDate.tomorrow': 'Mañana',\n // calendar months\n 'schedule.calendar.month.January': 'Enero',\n 'schedule.calendar.month.February': 'Febrero',\n 'schedule.calendar.month.March': 'Marzo',\n 'schedule.calendar.month.April': 'Abril',\n 'schedule.calendar.month.May': 'Mayo',\n 'schedule.calendar.month.June': 'Junio',\n 'schedule.calendar.month.July': 'Julio',\n 'schedule.calendar.month.August': 'Agosto',\n 'schedule.calendar.month.September': 'Septiembre',\n 'schedule.calendar.month.October': 'Octubre',\n 'schedule.calendar.month.November': 'Noviembre',\n 'schedule.calendar.month.December': 'Diciembre',\n // calendar short days\n 'schedule.calendar.day.Mon': 'LUN',\n 'schedule.calendar.day.Tue': 'MAR',\n 'schedule.calendar.day.Wed': 'MIÉ',\n 'schedule.calendar.day.Thu': 'JUE',\n 'schedule.calendar.day.Fri': 'VIE',\n 'schedule.calendar.day.Sat': 'SÁB',\n 'schedule.calendar.day.Sun': 'DOM',\n // calendar long days\n 'schedule.calendar.day.Monday': 'Lunes',\n 'schedule.calendar.day.Tuesday': 'Martes',\n 'schedule.calendar.day.Wednesday': 'Miércoles',\n 'schedule.calendar.day.Thursday': 'Jueves',\n 'schedule.calendar.day.Friday': 'Viernes',\n 'schedule.calendar.day.Saturday': 'Sábado',\n 'schedule.calendar.day.Sunday': 'Domingo',\n // search\n 'search.placeholder': 'Buscar: encuentra tus equipos, eventos o shows favoritos',\n 'search.results.message': 'Resultados de búsqueda para {query}',\n // player\n 'player.error.defaultMessage': 'Esta señal no es parte del paquete de TV al que estás suscrito. Contacta a tu operador de cable.',\n 'player.error.recommendMobileWeb': 'Esta aplicación no es compatible con tu dispositivo actualmente. Por favor ingresa a espn.com/watch y disfruta de todo nuestro contenido.',\n 'player.error.unexpectedMessage': 'Ha ocurrido un error inesperado durante el login. Por favor actualiza la página y prueba nuevamente.',\n 'player.menu.logout': 'Log Out of {providerName}',\n 'player.feeds.title': 'Elige tu transmisión',\n // provider dialog\n 'search.filter.placeholder': 'Buscar',\n 'provider.dialog.title': 'Elige tu proveedor de cable',\n 'provider.dialog.subtitle': 'Todos los proveedores (A-Z):',\n 'provider.dialog.description': 'ESPN Play está disponible para los usuarios de los siguientes operadores de cable. ¿Necesitas ayuda? Ir a {faq}',\n 'provider.dialog.description.noCost': 'Sin costo adicional',\n 'provider.dialog.button.text': 'Elige un proveedor de cable',\n 'provider.dialog.faq.label': 'preguntas frecuentes',\n 'provider.dialog.help.link': '/watch/feedback', // Deprecated as of 04/26/20; removed from dialog.description\n 'provider.dialog.help.label': 'contáctenos',\n 'provider.dialog.call': '888-549-ESPN',\n // sign out\n 'signout.message': '¿Quieres cerrar tu sesión?',\n 'signout.label': 'desconectarse',\n // feedback\n 'feedback.title': 'Envía tus comentarios vía e-mail.',\n 'feedback.caption': 'Déjanos tu dirección de e-mail si quieres que te contactemos directamente.',\n 'feedback.category': 'Elige una categoría',\n 'feedback.category.select': 'Elige una categoría',\n 'feedback.category.userExperience': 'Experiencia del usuario',\n 'feedback.category.videoPerformance': 'Performance de videos',\n 'feedback.category.programming': 'Programación',\n 'feedback.category.other': 'Otros',\n 'feedback.email': 'E-mail',\n 'feedback.provider': 'Cableoperador / Proveedor de internet',\n 'feedback.provider.default': 'Elige tu proveedor',\n 'feedback.platform': 'Plataforma',\n 'feedback.desktoplaptop': 'Computador/portatil',\n 'feedback.iphone': 'iPhone',\n 'feedback.ipad': 'iPad',\n 'feedback.androidphone': 'Android Móvil',\n 'feedback.androidtablet': 'Android Tablet',\n 'feedback.xbox': 'Xbox One',\n 'feedback.playstation': 'PlayStation',\n 'feedback.appletv': 'Apple TV',\n 'feedback.androidtv': 'Android TV',\n 'feedback.amazonfiretv': 'Amazon FireTV',\n 'feedback.chromecast': 'Chromecast',\n 'feedback.roku': 'Roku',\n 'feedback.comments': 'Comentarios',\n 'feedback.send': 'Enviar comentarios',\n 'feedback.thankYou': 'Gracias por tu dejarnos tu feedback.',\n 'feedback.error.category': 'Selecciona el tipo de inconveniente.',\n 'feedback.error.email': 'Ingresa tu dirección de e-mail.',\n 'feedback.error.comments': 'Escribe tu comentario.',\n // misc\n 'live': 'EN VIVO',\n 'blackout': 'Blackout',\n // espnapp\n 'espnapp.systemAlert.upcoming': 'This event has not started yet. Tune in at {time} to watch.',\n // syndicated player\n 'syndicated.player.dialog': 'Live programming on WatchESPN is available for no additional cost from selected television and broadcast providers. Please choose your provider from the list below to sign in and see the ESPN networks you can watch:',\n 'syndicated.player.dialog.label.continute': 'Continue',\n 'syndicated.player.dialog.label.recheck': 'Recheck access',\n 'syndicated.player.dialog.message.auth-success': 'You are logged in, playback will start shortly.',\n 'syndicated.player.dialog.message.auth-retry': 'If playback does not begin in 5 seconds, please refresh your browser. This may take up to a minute.',\n 'syndicated.player.dialog.message.xdomain': 'Your browser appears to block storing data that\\'s required for the playback, change your browser setting to allow storing 3rd party data.',\n 'syndicated.player.branding.tooltip': 'View this video on {brandingName}',\n 'syndicated.player.domain.error': 'No tienes acceso a ESPN Play desde este sitio. Por favor visita ESPNPlay.com para verificar tu acceso a este partido.',\n 'syndicated.player.message.upcoming': 'This event has not started yet. Please check back once the event has begun.',\n 'syndicated.player.message.no-events': 'No events available.',\n 'syndicated.player.message.geo': 'El vídeo no está disponible en tu país.',\n // unsupported error due to possible COUNTRY_AND_EDITION_CONFLICT Page API Error\n 'unsupported.error.message': 'Este contenido no está disponible en el país donde se encuentra actualmente.'\n};\n\n/* harmony default export */ var i18n_es = (es_messages);\n// CONCATENATED MODULE: ./app/lib/i18n/pt.js\nvar pt_messages = {\n // branding\n 'branding.name': 'WatchESPN',\n // meta\n 'meta.keywords': 'watchespn, watch espn, watchespn mobile, watchespn xbox live, live sports, watch live sports, ' + 'watch espn online, watch espn on xbox, watch espn on mobile phone, espn, espn2, espn3, espnu',\n 'meta.title.home': 'WatchESPN: Esportes ao vivo, Reprise dos jogos, Destaques em vídeo',\n 'meta.description.home': 'Assista eventos esportivos, reprises, destaques dos melhores jogos acessando o conteúdo ESPN seu computador, celular, TV no ESPN.com e no ESPN App.',\n 'meta.title.schedule': 'Agenda: Ao vivo, Próximos, Reprises - WatchESPN',\n 'meta.description.schedule': 'Obtenha informações e datas do seus esportes e programas favoritos, ao vivo, próximos eventos e reprises' + 'através todos os canais ESPN pelo WatchESPN.',\n 'meta.title.features': 'Vídeos em destaque - WatchESPN',\n 'meta.description.features': 'Assista novos vídeos em destaque, melhores momentos dos jogos e uma programação especial da ESPN pelo WatchESPN.',\n 'meta.title.collection': '{name} - WatchESPN',\n 'meta.description.collection': 'Assista vídeos da categoria {name} no WatchESPN.',\n 'meta.title.player': '{name} - WatchESPN',\n 'meta.description.player.vod': 'Assista ao vídeo {name} no WatchESPN.',\n 'meta.description.player.listing': 'Assista {name} no WatchESPN.',\n 'meta.title.activate': 'Ativar - WatchESPN',\n 'meta.description.activate': 'Ativar seu aparelho',\n 'meta.title.subscribe': 'Ativar - WatchESPN',\n 'meta.description.subscribe': 'Ativar seu aparelho',\n 'meta.title.feedback': 'Envie o seu feedback - WatchESPN',\n 'meta.description.feedback': 'Envie o seu feedback para o WatchESPN, o serviço que permite acesso completo aos eventos ao vivo de esportes, reprises e programas da ESPN no seu computador e smartphones.',\n // page\n 'page.bucket.header.seeAll': \"Ver mais\",\n // schedule\n 'schedule.header': 'Agenda',\n 'schedule.live': 'Agora',\n 'schedule.live.selectedTabError': 'Agora',\n 'schedule.upcoming': 'Próximos',\n 'schedule.upcoming.selectedTabError': 'Próximos',\n 'schedule.replay': 'Reprise',\n 'schedule.replay.selectedTabError': 'Reprise',\n 'schedule.allSports': 'Todos os esportes',\n 'schedule.allNetworks': 'Todos os canais',\n 'schedule.allLeagues': 'Todas as ligas',\n 'schedule.replay.all': 'Tudo',\n 'schedule.replay.today': 'Hoje',\n 'schedule.replay.last7Days': 'Últimos 7 dias',\n 'schedule.replay.last14Days': 'Últimos 14 dias',\n 'schedule.replay.last30Days': 'Últimos 30 dias',\n 'schedule.blackout': 'Subject to blackout', // TODO: Get Translation if needed\n 'schedule.message.empty': 'Não existe nenhuma evento {selectedTab} para essa seleção.{br}Por favor cheque {otherTabs1} ou {otherTabs2} ou limpe todos os filtros.',\n // schedule module\n 'schedule.module.header.live': 'Destaques ao vivo',\n 'schedule.module.header.upcoming': 'Próximos',\n 'schedule.module.header.upcoming.on': 'Próximos',\n 'schedule.module.alert.upcoming': '{name} está programado para começar às {startTime} no {source}.',\n 'schedule.module.alert.moreText': ' ',\n 'schedule.module.eventDate.tomorrow': 'Amanhã',\n // calendar months\n 'schedule.calendar.month.January': 'Janeiro',\n 'schedule.calendar.month.February': 'Fevereiro',\n 'schedule.calendar.month.March': 'Março',\n 'schedule.calendar.month.April': 'Abril',\n 'schedule.calendar.month.May': 'Maio',\n 'schedule.calendar.month.June': 'Junho',\n 'schedule.calendar.month.July': 'Julho',\n 'schedule.calendar.month.August': 'Agosto',\n 'schedule.calendar.month.September': 'Setembro',\n 'schedule.calendar.month.October': 'Outubro',\n 'schedule.calendar.month.November': 'Novembro',\n 'schedule.calendar.month.December': 'Dezembro',\n // calendar short days\n 'schedule.calendar.day.Mon': 'SEG',\n 'schedule.calendar.day.Tue': 'TER',\n 'schedule.calendar.day.Wed': 'QUA',\n 'schedule.calendar.day.Thu': 'QUI',\n 'schedule.calendar.day.Fri': 'SEX',\n 'schedule.calendar.day.Sat': 'SÁB',\n 'schedule.calendar.day.Sun': 'DOM',\n // calendar long days\n 'schedule.calendar.day.Monday': 'Segunda-feira',\n 'schedule.calendar.day.Tuesday': 'Terça-feira',\n 'schedule.calendar.day.Wednesday': 'Quarta-feira',\n 'schedule.calendar.day.Thursday': 'Quinta-feira',\n 'schedule.calendar.day.Friday': 'Sexta-feira',\n 'schedule.calendar.day.Saturday': 'Sábado',\n 'schedule.calendar.day.Sunday': 'Domingo',\n // search\n 'search.placeholder': 'Busca: Encontre seu time, evento ou programa...',\n 'search.results.message': 'Resultados da busca por {query}',\n // player\n 'player.error.defaultMessage': 'Esse canal não está incluído no seu pacote atual de assinatura. Por favor entre em contato com o seu provedor para atualizar.',\n 'player.error.recommendMobileWeb': 'Esse aplicativo não é suportado nesse aparelho. Se você abrir o seu navegador e ir para espn.com/watch você poderá acessar o conteúdo normalmente.',\n 'player.error.unexpectedMessage': 'Um erro inesperado aconteceu durante a autorização. Por favor recarregue a página para tentar novamente.',\n 'player.menu.logout': 'Log Out of {providerName}',\n 'player.feeds.title': 'Escolha o Canal',\n // provider dialog\n 'search.filter.placeholder': 'Buscar',\n 'provider.dialog.title': 'Escolha o seu provedor',\n 'provider.dialog.subtitle': 'Todos os provedores (A-Z):',\n 'provider.dialog.description': 'Aqui você assiste eventos e programas AO VIVO, filmes, séries, documentários e conteúdos exclusivos no seu computador, tablet ou smartphone. ' + 'Precisa de ajuda? Veja {faq}.',\n 'provider.dialog.description.noCost': 'sem custo adicional', // Deprecated as of 09/2018; description was updated WI-545\n 'provider.dialog.button.text': 'Ainda não tem ESPN? Clique aqui!',\n 'provider.dialog.faq.label': 'perguntas frequentes',\n 'provider.dialog.help.link': '/watch/feedback', // Deprecated as of 07/05/18; removed from dialog.description\n 'provider.dialog.help.label': 'contato', // Deprecated as of 07/05/18; removed from dialog.description\n 'provider.dialog.call': '888-549-ESPN',\n // sign out\n 'signout.message': 'Você deseja sair da sua conta {providerName}?',\n 'signout.label': 'Sair',\n // feedback\n 'feedback.title': 'Envie o seu comentário por email.',\n 'feedback.caption': 'Forneça o seu email se você quiser que a ESPN entre em contato diretamente.',\n 'feedback.category': 'Escolha uma categoria',\n 'feedback.category.select': 'Selecione uma categoria',\n 'feedback.category.userExperience': 'Experiencia do usuario',\n 'feedback.category.videoPerformance': 'Performance nos vídeos',\n 'feedback.category.programming': 'Programação',\n 'feedback.category.other': 'Outros',\n 'feedback.email': 'E-mail',\n 'feedback.provider': 'TV a cabo / Provedores de internet',\n 'feedback.provider.default': 'Escolher provedor de acesso',\n 'feedback.platform': 'Plataforma',\n 'feedback.desktoplaptop': 'Desktop/notebook',\n 'feedback.iphone': 'iPhone',\n 'feedback.ipad': 'iPad',\n 'feedback.androidphone': 'Telefone Android',\n 'feedback.androidtablet': 'Tablet Android',\n 'feedback.xbox': 'Xbox One',\n 'feedback.playstation': 'PlayStation',\n 'feedback.appletv': 'Apple TV',\n 'feedback.androidtv': 'Android TV',\n 'feedback.amazonfiretv': 'Amazon FireTV',\n 'feedback.chromecast': 'Chromecast',\n 'feedback.roku': 'Roku',\n 'feedback.comments': 'Comentários',\n 'feedback.send': 'Enviar comentários',\n 'feedback.thankYou': 'Obrigado pelo seu feedback',\n 'feedback.error.category': 'Por favor selecione o tipo do assunto',\n 'feedback.error.email': 'Por favor preencha o seu e-mail',\n 'feedback.error.comments': 'Por favor preencha o seu comentário',\n // misc\n 'live': 'NO AR',\n 'blackout': 'Blackout',\n // espnapp\n 'espnapp.systemAlert.upcoming': 'This event has not started yet. Tune in at {time} to watch.',\n // syndicated player\n 'syndicated.player.dialog': 'Live programming on WatchESPN is available for no additional cost from selected television and broadcast providers. Please choose your provider from the list below to sign in and see the ESPN networks you can watch:',\n 'syndicated.player.dialog.label.continute': 'Continue',\n 'syndicated.player.dialog.label.recheck': 'Recheck access',\n 'syndicated.player.dialog.message.auth-success': 'You are logged in, playback will start shortly.',\n 'syndicated.player.dialog.message.auth-retry': 'If playback does not begin in 5 seconds, please refresh your browser. This may take up to a minute.',\n 'syndicated.player.dialog.message.xdomain': 'Your browser appears to block storing data that\\'s required for the playback, change your browser setting to allow storing 3rd party data.',\n 'syndicated.player.branding.tooltip': 'View this video on {brandingName}',\n 'syndicated.player.domain.error': 'You are not allowed to access WatchESPN from this website. Please visit WatchESPN.com to see if you have access to this game.',\n 'syndicated.player.message.upcoming': 'This event has not started yet. Please check back once the event has begun.',\n 'syndicated.player.message.no-events': 'No events available.',\n 'syndicated.player.message.geo': 'Vídeo não está disponível no seu país.',\n // unsupported error due to possible COUNTRY_AND_EDITION_CONFLICT Page API Error\n 'unsupported.error.message': 'Este conteúdo não está disponível no país em que você está atualmente.'\n};\n\n/* harmony default export */ var pt = (pt_messages);\n// CONCATENATED MODULE: ./app/lib/i18n/nl.js\nvar nl_messages = {\n // branding\n 'branding.name': 'WatchESPN',\n // meta\n 'meta.keywords': 'watchespn, watch espn, watchespn mobile, watchespn xbox live, live sports, kijk live sport, ' + 'kijk espn online, kijk espn on xbox, kijk espn op je smartphone, espn, espn2, espn3, espnu',\n 'meta.title.home': 'WatchESPN: Live Sport, herhalingen, Samenvattingen',\n 'meta.description.home': 'Stream live sport, bekijk wedstrijd herhalingen, ontvang samenvattingen en toegang tot de ' + 'ESPN programmering op jouw computer, mobiele telefoon, en TV met WatchESPN.',\n 'meta.title.schedule': 'Schema: Live, Volgende, Herhalingen - WatchESPN',\n 'meta.description.schedule': 'Ontvang het schema voor live, komende, en herhalingen van jouw favoriete sporten en shows op elk ESPN netwerk op WatchESPN.',\n 'meta.title.features': 'Aanbevolen Video\\'s - WatchESPN',\n 'meta.description.features': 'Bekijk uitgelichte nieuwsclips, samenvattingen en speciale ESPN programmering op WatchESPN.',\n 'meta.title.collection': '{name} - WatchESPN',\n 'meta.description.collection': 'Bekijk video\\'s van de {name} collectie op WatchESPN.',\n 'meta.title.player': '{name} - WatchESPN',\n 'meta.description.player.vod': 'Bekijk de {name} video op WatchESPN.',\n 'meta.description.player.listing': 'Bekijk {name} op WatchESPN.',\n 'meta.title.activate': 'Activeer - Watch ESPN',\n 'meta.description.activate': 'Activeer jouw device',\n 'meta.title.subscribe': 'Abonneer - WatchESPN',\n 'meta.description.subscribe': 'Abonneer jouw device',\n 'meta.title.feedback': 'Geef Feedback - WatchESPN',\n 'meta.description.feedback': 'Geef feedback op WatchESPN; de service die je toegang geeft op jouw PC, mobiele apparaten en Xbox Live voor alle live sport events, herhalingen en programma\\'s op ESPN',\n // page\n 'page.bucket.header.seeAll': 'Toon Alles',\n // schedule\n 'schedule.header': 'Programma',\n 'schedule.live': 'Live',\n 'schedule.live.selectedTabError': 'Live',\n 'schedule.upcoming': 'Straks',\n 'schedule.upcoming.selectedTabError': 'aanstaande',\n 'schedule.replay': 'Herhalingen',\n 'schedule.replay.selectedTabError': 'herhalingen',\n 'schedule.allSports': 'Alle Sporten',\n 'schedule.allNetworks': 'Alle Kanalen',\n 'schedule.allLeagues': 'Alle Competities',\n 'schedule.replay.all': 'Alles',\n 'schedule.replay.today': 'Vandaag',\n 'schedule.replay.last7Days': 'Laatste 7 dagen',\n 'schedule.replay.last14Days': 'Laatste 14 dagen',\n 'schedule.replay.last30Days': 'Laatste 30 dagen',\n 'schedule.blackout': 'Onder voorbehoud van black-out',\n 'schedule.message.empty': 'Er zijn op dit moment geen {selectedTab} programma\\'s voor deze selectie. Controleer {otherTabs1} of {otherTabs2} of verwijder alle filters.',\n // schedule module\n 'schedule.module.header.live': 'Top Live',\n 'schedule.module.header.upcoming': 'Straks',\n 'schedule.module.header.upcoming.on': 'Straks op',\n 'schedule.module.alert.upcoming': '{name} staat gepland om te beginnen om {startTime} op {source}. {moreText}',\n 'schedule.module.alert.moreText': 'Geniet van {name} terwijl je wacht.',\n 'schedule.module.eventDate.tomorrow': 'Morgen',\n // calendar months\n 'schedule.calendar.month.January': 'Januari',\n 'schedule.calendar.month.February': 'Februari',\n 'schedule.calendar.month.March': 'Maart',\n 'schedule.calendar.month.April': 'April',\n 'schedule.calendar.month.May': 'Mei',\n 'schedule.calendar.month.June': 'Juni',\n 'schedule.calendar.month.July': 'Juli',\n 'schedule.calendar.month.August': 'Augustus',\n 'schedule.calendar.month.September': 'September',\n 'schedule.calendar.month.October': 'Oktober',\n 'schedule.calendar.month.November': 'November',\n 'schedule.calendar.month.December': 'December',\n // calendar short days\n 'schedule.calendar.day.Mon': 'Maa',\n 'schedule.calendar.day.Tue': 'Din',\n 'schedule.calendar.day.Wed': 'Woe',\n 'schedule.calendar.day.Thu': 'Don',\n 'schedule.calendar.day.Fri': 'Vrij',\n 'schedule.calendar.day.Sat': 'Zat',\n 'schedule.calendar.day.Sun': 'Zon',\n // calendar long days\n 'schedule.calendar.day.Monday': 'Maandag',\n 'schedule.calendar.day.Tuesday': 'Dinsdag',\n 'schedule.calendar.day.Wednesday': 'Woensdag',\n 'schedule.calendar.day.Thursday': 'Donderdag',\n 'schedule.calendar.day.Friday': 'Vrijdag',\n 'schedule.calendar.day.Saturday': 'Zaterdag',\n 'schedule.calendar.day.Sunday': 'Zondag',\n // search\n 'search.placeholder': 'Vind jouw team, evenement of programma...',\n 'search.results.message': 'Zoek uitslagen voor {query}',\n // player\n 'player.error.defaultMessage': 'Dit netwerk valt niet onder jouw huidige televisie abonnement. Neem contact op met je provider voor een upgrade.',\n 'player.error.recommendMobileWeb': 'Dit device kan deze video niet afspelen in de app. Bezoek espn.com/watch met de laatste versie van je browser op dit device.',\n 'player.error.unexpectedMessage': 'Er is een onverwachte fout opgetreden, Ververs de pagina en probeer opnieuw.',\n 'player.menu.logout': 'Log Uit op {providerName}',\n 'player.feeds.title': 'Kies een Uitzending',\n // provider dialog\n 'search.filter.placeholder': 'Zoek Alle Providers',\n 'provider.dialog.title': 'Kies een Provider',\n 'provider.dialog.subtitle': 'Alle Providers (A-Z):',\n 'provider.dialog.description': 'Stream ESPN nu door je aan te melden bij jouw TV provider. Problemen? Ga naar {faq} of {help}.',\n 'provider.dialog.description.noCost': 'Geen extra kosten',\n 'provider.dialog.button.text': 'Selecteer Een TV Provider',\n 'provider.dialog.faq.label': 'FAQs',\n 'provider.dialog.help.link': ' /watch/feedback', // Deprecated as of 04/26/20; removed from dialog.description\n 'provider.dialog.help.label': 'Ontvang Hulp',\n 'provider.dialog.call': '888-549-ESPN',\n // sign out\n 'signout.message': 'Wil je uitloggen op jouw {providerName} account?',\n 'signout.label': 'Log Uit',\n // feedback\n 'feedback.title': 'Geen zin om te chatten? stuur je feedback via de mail.',\n 'feedback.caption': 'Lever je email adres als je wilt dat we direct contact met je opnemen.',\n 'feedback.category': 'Kies een Categorie',\n 'feedback.category.select': 'Selecteer een Categorie',\n 'feedback.category.userExperience': 'Gebruikerservaring',\n 'feedback.category.videoPerformance': 'Video Prestaties',\n 'feedback.category.programming': 'Programmering',\n 'feedback.category.other': 'Anders',\n 'feedback.email': 'E-mail',\n 'feedback.provider': 'Kabel / Internet Providers',\n 'feedback.provider.default': 'Kies een Provider',\n 'feedback.platform': 'Platform',\n 'feedback.desktoplaptop': 'Desktop/laptop',\n 'feedback.iphone': 'iPhone',\n 'feedback.ipad': 'iPad',\n 'feedback.androidphone': 'Android Telefoon',\n 'feedback.androidtablet': 'Android Tablet',\n 'feedback.xbox': 'Xbox One',\n 'feedback.playstation': 'PlayStation',\n 'feedback.appletv': 'Apple TV',\n 'feedback.androidtv': 'Android TV',\n 'feedback.amazonfiretv': 'Amazon FireTV',\n 'feedback.chromecast': 'Chromecast',\n 'feedback.roku': 'Roku',\n 'feedback.comments': 'Opmerkingen',\n 'feedback.send': 'Verstuur Feedback',\n 'feedback.thankYou': 'Bedankt voor het plaatsen van je feedback.',\n 'feedback.error.category': 'Selecteer een bepaald type probleem.',\n 'feedback.error.email': 'Vul hier je emailadres in.',\n 'feedback.error.comments': 'Vul hier je opmerking in.',\n // misc\n live: 'LIVE',\n blackout: 'Blackout',\n // espnapp\n 'espnapp.systemAlert.upcoming': 'Dit evenement is nog niet begonnen. Kom terug om {time} om dit te bekijken.',\n // syndicated player\n 'syndicated.player.dialog': 'Live programmering op WatchESPN is beschikbaar zonder additionele kosten voor geselecteerde TV providers. Selecteer alsjeblieft jouw provider om in te loggen en te zien welke ESPN netwerken je kan kijken:',\n 'syndicated.player.dialog.label.continute': 'Doorgaan',\n 'syndicated.player.dialog.label.recheck': 'Controleer toegang',\n 'syndicated.player.dialog.message.auth-success': 'Je bent ingelogd, je video begint zo snel mogelijk.',\n 'syndicated.player.dialog.message.auth-retry': 'Als de video niet in 5 seconden begint, refresh je browser. Het kan maximaal een minuut duren.',\n 'syndicated.player.dialog.message.xdomain': 'Je browser lijkt het opslaan van data te blokkeren wat nodig is om de video af te spelen. Pas je browser-instellingen aan om 3rd party data toe te staan.',\n 'syndicated.player.branding.tooltip': 'Bekijk deze video op {brandingName}',\n 'syndicated.player.domain.error': 'Het is voor jou niet toegestaan om WatchESPN vanaf deze website te bezoeken. Bezoek WatchESPN.com om te kijken of je toegang hebt tot deze wedstrijd.',\n 'syndicated.player.message.upcoming': 'Dit evenement is nog niet begonnen. Kom terug wanneer dit evenement begonnen is.',\n 'syndicated.player.message.no-events': 'Geen evenementen beschikbaar.',\n 'syndicated.player.message.geo': 'deze video is niet meer beschikbaar om te bekijken vanaf jouw locatie.',\n // unsupported error due to possible COUNTRY_AND_EDITION_CONFLICT Page API Error\n 'unsupported.error.message': 'Deze inhoud is niet beschikbaar in dit land.'\n};\n\n/* harmony default export */ var nl = (nl_messages);\n// CONCATENATED MODULE: ./app/lib/i18n/index.js\n\n\n\n\n\nvar langMap = {\n 'en-us': en_us,\n en: en_us,\n es: i18n_es,\n pt: pt,\n nl: nl\n};\n\nvar i18n_messages = Object.keys(en_us).reduce(function (acc, id) {\n acc[id] = {\n id: id,\n description: id,\n defaultMessage: en_us[id]\n };\n return acc;\n}, {});\n\nvar langs = function langs(locale) {\n return langMap[locale] || langMap['en'];\n};\n\nfunction isLangSupported(locale) {\n return supportedLangs().indexOf(locale) !== -1;\n}\n\nfunction supportedLangs() {\n return Object.keys(langMap);\n}\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./node_modules/moment/moment.js\nvar moment = __webpack_require__(107);\nvar moment_default = /*#__PURE__*/__webpack_require__.n(moment);\n\n// EXTERNAL MODULE: ./node_modules/moment/locale/es.js\nvar locale_es = __webpack_require__(796);\nvar es_default = /*#__PURE__*/__webpack_require__.n(locale_es);\n\n// EXTERNAL MODULE: ./node_modules/moment/locale/pt-br.js\nvar pt_br = __webpack_require__(797);\nvar pt_br_default = /*#__PURE__*/__webpack_require__.n(pt_br);\n\n// CONCATENATED MODULE: ./app/common/IntlProvider.js\n/* unused harmony export ConnectedIntlProvider */\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n// override default locale config\nmoment_default.a.updateLocale('es', {\n ordinal: function ordinal(number) {\n return number === 1 ? number + '\\xBA' : '' + number;\n }\n});\n\nvar IntlProvider_ConnectedIntlProvider = function (_Component) {\n _inherits(ConnectedIntlProvider, _Component);\n\n function ConnectedIntlProvider(props) {\n _classCallCheck(this, ConnectedIntlProvider);\n\n // set locale globally\n // we explicitly bundle only `pt-br` locale\n var _this = _possibleConstructorReturn(this, (ConnectedIntlProvider.__proto__ || Object.getPrototypeOf(ConnectedIntlProvider)).call(this, props));\n\n var locale = props.lang === 'pt' ? 'pt-br' : props.lang;\n moment_default.a.locale(locale);\n return _this;\n }\n\n _createClass(ConnectedIntlProvider, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n messages: _extends({}, i18n_messages)\n };\n }\n }, {\n key: 'render',\n value: function render() {\n return react_default.a.createElement(index_es[\"b\" /* IntlProvider */], _extends({}, this.props, { locale: this.props.lang }));\n }\n }]);\n\n return ConnectedIntlProvider;\n}(react[\"Component\"]);\n\nIntlProvider_ConnectedIntlProvider.contextTypes = {\n messages: react[\"PropTypes\"].object\n};\n\nIntlProvider_ConnectedIntlProvider.childContextTypes = {\n messages: react[\"PropTypes\"].object.isRequired\n};\n\nvar IntlProvider_mapStateToProps = function mapStateToProps(state) {\n var intl = Object(appSelector[\"q\" /* intlSelector */])(state);\n return _extends({}, intl, {\n key: intl.lang\n });\n};\n\n/* harmony default export */ var IntlProvider = __webpack_exports__[\"a\"] = (Object(es[\"b\" /* connect */])(IntlProvider_mapStateToProps)(IntlProvider_ConnectedIntlProvider));\n\n/***/ }),\n/* 379 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(380);\nmodule.exports = __webpack_require__(381);\n\n\n/***/ }),\n/* 380 */\n/***/ (function(module, exports) {\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\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 var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\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 runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\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 prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.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 runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\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 runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\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 Promise.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 Promise.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. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.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 runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.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 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 Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.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 runtime.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 // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n\n\n/***/ }),\n/* 381 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ./node_modules/bluebird/js/browser/bluebird.js\nvar bluebird = __webpack_require__(11);\nvar bluebird_default = /*#__PURE__*/__webpack_require__.n(bluebird);\n\n// CONCATENATED MODULE: ./app/polyfills.js\n\n\nbluebird_default.a.config({\n warnings: 'production' !== 'production'\n});\n\nif (!window.Promise) {\n window.Promise = bluebird_default.a;\n}\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-dom/index.js\nvar react_dom = __webpack_require__(81);\nvar react_dom_default = /*#__PURE__*/__webpack_require__.n(react_dom);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./node_modules/react-router/lib/index.js\nvar lib = __webpack_require__(85);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// EXTERNAL MODULE: ./node_modules/react-router-scroll/lib/index.js\nvar react_router_scroll_lib = __webpack_require__(521);\nvar react_router_scroll_lib_default = /*#__PURE__*/__webpack_require__.n(react_router_scroll_lib);\n\n// EXTERNAL MODULE: ./app/lib/omniture/index.js\nvar omniture = __webpack_require__(34);\n\n// EXTERNAL MODULE: ./app/common/selectors/routingSelector.js\nvar routingSelector = __webpack_require__(23);\n\n// EXTERNAL MODULE: ./node_modules/react-router-redux/lib/index.js\nvar react_router_redux_lib = __webpack_require__(69);\nvar react_router_redux_lib_default = /*#__PURE__*/__webpack_require__.n(react_router_redux_lib);\n\n// EXTERNAL MODULE: ./node_modules/superagent-bluebird-promise/index.js\nvar superagent_bluebird_promise = __webpack_require__(274);\nvar superagent_bluebird_promise_default = /*#__PURE__*/__webpack_require__.n(superagent_bluebird_promise);\n\n// CONCATENATED MODULE: ./app/lib/api/request.js\n\n\n/* harmony default export */ var request = (superagent_bluebird_promise_default.a);\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./app/lib/api/AdobeClientlessAPI.js\nvar _ENVIRONMENT_CONFIGUR;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nvar AdobePassEnv = enums[\"a\" /* AdobePass */].Env;\n\n\nvar REQUESTOR_ID = 'ESPN';\n\nvar ENVIRONMENT_CONFIGURATION = (_ENVIRONMENT_CONFIGUR = {}, _defineProperty(_ENVIRONMENT_CONFIGUR, AdobePassEnv.STAGING, {\n baseUrl: 'https://api.auth-staging.adobe.com'\n}), _defineProperty(_ENVIRONMENT_CONFIGUR, AdobePassEnv.PROD, {\n baseUrl: 'https://api.auth.adobe.com'\n}), _ENVIRONMENT_CONFIGUR);\n\nvar SERVICE_PATH = {\n reggie: '/reggie/v1',\n sp: '/api/v1'\n};\n\nvar ENDPOINTS = {\n config: '/config',\n checkRegCode: '/regcode',\n checkAuthN: '/checkauthn',\n authenticate: '/authenticate'\n};\n\nfunction getBaseUrl() {\n var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : AdobePassEnv.PROD;\n\n // In the event the query parameter `passenv` value does not match the ENVIRONMENT_CONFIGURATION\n // object, we want to default to the `production` baseUrl\n var defaultEnv = AdobePassEnv.PROD;\n return ENVIRONMENT_CONFIGURATION[env].baseUrl || ENVIRONMENT_CONFIGURATION[defaultEnv].baseUrl;\n}\n\nfunction getSpUrl(env) {\n return '' + getBaseUrl(env) + SERVICE_PATH.sp;\n}\n\nfunction getReggieUrl(env) {\n return '' + getBaseUrl(env) + SERVICE_PATH.reggie;\n}\n\nfunction getConfig() {\n var url = '' + getSpUrl() + ENDPOINTS.config + '/' + REQUESTOR_ID;\n return request.get(url).set('Accept', 'application/json').then(function (_ref) {\n var body = _ref.body;\n return body;\n }).catch(function (err) {\n return err;\n });\n}\n\nfunction checkRegCode(regCode, env) {\n var url = getReggieUrl(env) + '/' + REQUESTOR_ID + ENDPOINTS.checkRegCode + '/' + regCode;\n return request.get(url).set('Accept', 'application/json').then(function (_ref2) {\n var body = _ref2.body;\n return body;\n }).catch(function (err) {\n return err;\n });\n}\n\n// Not currently used although recommended by Adobe to call before success page\n// http://tve.helpdocsonline.com/clientless-api-reference$$check_authn_token\nfunction checkAuthN(regCode) {\n var url = '' + getSpUrl() + ENDPOINTS.checkAuthN + '/' + regCode + '?requestor=' + REQUESTOR_ID;\n return request.get(url).set('Accept', 'application/json').then(function (_ref3) {\n var status = _ref3.status;\n return status === 200;\n }).catch(function () {\n return false;\n });\n}\n\nfunction getAuthSuccessUrl(_ref4) {\n var mvpd = _ref4.mvpd,\n deviceType = _ref4.deviceType,\n _ref4$baseUrl = _ref4.baseUrl,\n baseUrl = _ref4$baseUrl === undefined ? window.location.href : _ref4$baseUrl;\n\n return '' + baseUrl + (baseUrl.indexOf('?') === -1 ? '?' : '&') + 'mvpd=' + mvpd + '&authSystem=adobepass&deviceType=' + deviceType + '&authSuccess=true';\n}\n\nfunction getAuthErrorUrl(_ref5) {\n var _ref5$baseUrl = _ref5.baseUrl,\n baseUrl = _ref5$baseUrl === undefined ? window.location.href : _ref5$baseUrl;\n\n return '' + baseUrl + (baseUrl.indexOf('?') === -1 ? '?' : '&') + 'error=true';\n}\n\nfunction getAuthenticateUrl(_ref6) {\n var regCode = _ref6.regCode,\n mvpd = _ref6.mvpd,\n deviceType = _ref6.deviceType,\n _ref6$baseUrl = _ref6.baseUrl,\n baseUrl = _ref6$baseUrl === undefined ? window.location.href : _ref6$baseUrl,\n adobePassEnv = _ref6.adobePassEnv;\n\n var redirectUrl = getAuthSuccessUrl({ mvpd: mvpd, deviceType: deviceType, baseUrl: baseUrl });\n var qs = 'reg_code=' + regCode + '&noflash=true&mso_id=' + mvpd + '&requestor_id=' + REQUESTOR_ID + '&domain_name=adobe.com&redirect_url=' + encodeURIComponent(redirectUrl);\n var url = '' + getSpUrl(adobePassEnv) + ENDPOINTS.authenticate + '?' + qs;\n\n return url;\n}\n// EXTERNAL MODULE: ./app/lib/format/removeQueryFromUrl.js\nvar removeQueryFromUrl = __webpack_require__(276);\n\n// EXTERNAL MODULE: ./app/common/actions/appActions.js\nvar appActions = __webpack_require__(19);\n\n// EXTERNAL MODULE: ./app/lib/oneId/index.js\nvar oneId = __webpack_require__(52);\n\n// CONCATENATED MODULE: ./app/webapp/page/Activate/constants.js\nvar constants_deviceName = {\n androidtv: 'Android TV',\n appletv: 'Apple TV',\n tvOS: 'Apple TV',\n firetv: 'Fire TV',\n roku: 'Roku',\n ps3: 'PS3',\n ps4: 'PS4',\n xbox: 'Xbox',\n xboxone: 'Xbox One'\n};\n\nvar INVALID_MESSAGE = 'Invalid activate code!';\nvar DEFAULT_VALUE = 'initialValue'; // empty value might hit the affilites w/o abbreviation in the console\n\nvar WEB_STAGE_ONE_ID_API_PATH = 'https://stg.registerdisney.go.com/jgc/v6/client/ESPN-ONESITE.WEB-STAGE';\nvar WEB_PROD_ONE_ID_API_PATH = 'https://registerdisney.go.com/jgc/v6/client/ESPN-ONESITE.WEB-PROD';\nvar WEB_ESPN_PLUS_PURCHASE_PATH_QA = 'https://qa-secure.web.plus.espn.com/billing/purchase';\nvar WEB_ESPN_PLUS_PURCHASE_PATH_PROD = 'https://secure.web.plus.espn.com/billing/purchase';\n\n/* harmony default export */ var constants = (constants_deviceName);\n// CONCATENATED MODULE: ./app/webapp/page/Activate/util/getSuccessText.js\n\n\n/* harmony default export */ var getSuccessText = (function (authSystem, deviceType) {\n var device = constants[deviceType] || 'device';\n if (authSystem === 'adobepass') {\n return 'Your ' + device + ' is Activated';\n }\n return 'Your ' + device + ' has been connected to your ESPN account';\n});\n// CONCATENATED MODULE: ./app/webapp/page/Activate/util/isAdobeRegCode.js\n/**\n * Returns true if the code is an Adobe Reg code (has alpha chars, and is of length 7)\n * @param {string} code - Either a OneID or Adobe Reg Code\n */\n/* harmony default export */ var isAdobeRegCode = (function () {\n var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return (/[A-Za-z]/.test(code) && code.length === 7\n );\n});\n// CONCATENATED MODULE: ./app/webapp/page/Activate/util/isOneIdRegCode.js\n/**\n * Returns true if the code is alphanumeric and of length 6\n * @param {string} code - Either a OneID or Adobe Reg Code\n */\n/* harmony default export */ var isOneIdRegCode = (function () {\n var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return (/^[a-z0-9]+$/i.test(code) && code.length === 6\n );\n});\n// EXTERNAL MODULE: ./app/webapp/page/Activate/util/generateCommerceFlowUrl.js\nvar generateCommerceFlowUrl = __webpack_require__(690);\n\n// CONCATENATED MODULE: ./app/webapp/page/Activate/util/isSubscribeInEntitlementPath.js\n/**\n * isSubscribeInEntitlementPath - Returns a boolean value if the path is an exact subscribe math\n *\n * @param {string} path - String representing the entitlementPath\n *\n * @return {boolean} - Returns true or false\n */\n/* harmony default export */ var isSubscribeInEntitlementPath = (function () {\n var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return typeof path === 'string' && path.trim().toLowerCase() === 'subscribe';\n});\n// CONCATENATED MODULE: ./app/webapp/page/Activate/util/getMarkettingOptInStatus.js\nfunction getMarkettingOptInStatus() {\n var oneIdData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _oneIdData$marketing = oneIdData.marketing,\n marketing = _oneIdData$marketing === undefined ? [] : _oneIdData$marketing,\n _oneIdData$token = oneIdData.token;\n _oneIdData$token = _oneIdData$token === undefined ? {} : _oneIdData$token;\n var swid = _oneIdData$token.swid,\n accessToken = _oneIdData$token.access_token;\n\n if (marketing.length) {\n var ePlusMarketingOptIns = marketing.filter(function (opt) {\n return opt.code === 'ESPN+_L' && opt.status !== 'declined' && opt.status !== 'accepted';\n });\n if (swid && accessToken && ePlusMarketingOptIns.length) {\n return {\n swid: swid,\n accessToken: accessToken,\n shouldUpdateOptIns: true\n };\n }\n }\n return { shouldUpdateOptIns: false };\n}\n// CONCATENATED MODULE: ./app/webapp/page/Activate/util/index.js\n\n\n\n\n\n\n// EXTERNAL MODULE: ./app/lib/api/cache/requestCache.js\nvar requestCache = __webpack_require__(42);\n\n// EXTERNAL MODULE: ./app/lib/api/requestProxy.js\nvar requestProxy = __webpack_require__(43);\n\n// CONCATENATED MODULE: ./app/lib/api/oneIdApi.js\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\nfunction getOneIdApiKey(oneIdClientUrl) {\n var url = oneIdClientUrl + '/api-key';\n return requestCache[\"a\" /* default */].post(url).use(requestProxy[\"a\" /* default */]).then(function (res) {\n var oneIdApiKey = void 0;\n if (res.status === 200) {\n var error = res.body.error,\n _res$headers = res.headers,\n headers = _res$headers === undefined ? {} : _res$headers;\n /**\n * if getApiKey successfully, oneId api return body as follow\n * {\n \"data\": null,\n \"error\": null\n }\n */\n\n if (error === null && headers[\"api-key\"] !== null && headers[\"api-key\"] !== undefined) {\n oneIdApiKey = headers[\"api-key\"];\n }\n }\n return oneIdApiKey;\n }).catch(function (err) {\n return undefined;\n });\n}\n\n// oneId getGuess info doesn't return email for privacy reason, so we need to retrieve it for optIns update\nfunction getOneIdEmail(oneIdClientUrl, swid, accessToken) {\n var url = oneIdClientUrl + '/guest/' + swid;\n return Object(requestCache[\"a\" /* default */])(url).set('Authorization', 'BEARER ' + accessToken).set('Accept', 'application/json').use(requestProxy[\"a\" /* default */]).then(function (res) {\n if (res && res.status === 200) {\n var _res$body = res.body;\n _res$body = _res$body === undefined ? {} : _res$body;\n var _res$body$data = _res$body.data;\n _res$body$data = _res$body$data === undefined ? {} : _res$body$data;\n var _res$body$data$profil = _res$body$data.profile;\n _res$body$data$profil = _res$body$data$profil === undefined ? {} : _res$body$data$profil;\n var email = _res$body$data$profil.email;\n\n if (email) {\n return {\n email: email,\n isSuccess: true\n };\n }\n }\n return { isSuccess: false };\n }).catch(function (err) {\n return { isSuccess: false };\n });\n}\n\nvar updateOneIdMarkettingOptIn = function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(oneIdClientUrl, oneIdApiKey, email) {\n var url, payload;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n url = oneIdClientUrl + '/marketing/options';\n payload = {\n \"email\": email,\n \"source\": \"ESPN watch web opt-in\",\n \"options\": {\n \"ESPN+_L\": true\n },\n \"textIDsMap\": {\n \"ESPN+_L\": \"\"\n }\n };\n return _context.abrupt('return', requestCache[\"a\" /* default */].post(url).send(payload).set('Authorization', 'APIKEY ' + oneIdApiKey).set('Content-Type', 'application/json').set('Accept', 'application/json').use(requestProxy[\"a\" /* default */]).then(function (res) {\n var _ref2 = res || {},\n _ref2$body = _ref2.body;\n\n _ref2$body = _ref2$body === undefined ? {} : _ref2$body;\n var error = _ref2$body.error,\n status = _ref2.status;\n\n if (status === 200) {\n\n if (error === null) {\n return { isSuccess: true, err: null };\n }\n }\n return {\n isSuccess: false,\n err: 'status code: ' + res.status + ' errMsg: ' + error\n };\n }).catch(function (err) {\n return {\n \"isSuccess\": false,\n err: \"updateOneIdMarkettingOptIn failed on catch\"\n };\n }));\n\n case 3:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function updateOneIdMarkettingOptIn(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n}();\n// CONCATENATED MODULE: ./app/webapp/page/Activate/actions.js\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction actions__asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new bluebird_default.a(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return bluebird_default.a.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar GET_CONFIG = 'GET_CONFIG';\nvar REG_CODE_UPDATE = 'REG_CODE_UPDATE';\nvar AUTHENTICATE = 'AUTHENTICATE';\nvar GENERIC_ERROR = 'GENERIC_ERROR';\nvar INVALID_ERROR = 'INVALID_ERROR';\nvar START_SUBMIT = 'START_SUBMIT';\nvar COMPLETE_SUBMIT = 'COMPLETE_SUBMIT';\nvar EPLUS_MARKETTING_OPT_IN_UPDATE = 'EPLUS_MARKETTING_OPT_IN_UPDATE';\n\nfunction createGetConfigAction(mvpd, message) {\n return {\n type: GET_CONFIG,\n mvpd: mvpd,\n message: message\n };\n}\n\nfunction createAuthenticateAction(authUrl, authSuccessUrl, authErrorUrl, useIframe) {\n return {\n type: AUTHENTICATE,\n authUrl: authUrl,\n authSuccessUrl: authSuccessUrl,\n authErrorUrl: authErrorUrl,\n useIframe: useIframe\n };\n}\n\nfunction createGenericErrorAction(message, providerId) {\n return {\n type: GENERIC_ERROR,\n message: message,\n providerId: providerId\n };\n}\n\nfunction createInvalidErrorAction(message, providerId) {\n return {\n type: INVALID_ERROR,\n message: message,\n providerId: providerId\n };\n}\n\n// Actions\nfunction regCodeUpdate(code) {\n return {\n type: REG_CODE_UPDATE,\n code: code\n };\n}\n\nfunction startSubmit() {\n return {\n type: START_SUBMIT\n };\n}\n\nfunction completeSubmit() {\n return {\n type: COMPLETE_SUBMIT\n };\n}\n\nfunction updateOneIdMarkettingOptInAction(payload) {\n return {\n type: EPLUS_MARKETTING_OPT_IN_UPDATE,\n payload: payload\n };\n}\n\nfunction getClientlessConfig() {\n return function (dispatch) {\n return getConfig().then(function (response) {\n var _response$requestor = response.requestor;\n _response$requestor = _response$requestor === undefined ? {} : _response$requestor;\n var _response$requestor$m = _response$requestor.mvpds;\n _response$requestor$m = _response$requestor$m === undefined ? {} : _response$requestor$m;\n var _response$requestor$m2 = _response$requestor$m.mvpd,\n mvpd = _response$requestor$m2 === undefined ? [] : _response$requestor$m2,\n message = response.message;\n\n return dispatch(createGetConfigAction(mvpd, message));\n });\n };\n}\n\nfunction checkAdobeRegCode(regCode, env) {\n var _this = this;\n\n return function () {\n var _ref = actions__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch) {\n var _ref2, _ref2$info, deviceType, message;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return checkRegCode(regCode, env);\n\n case 2:\n _ref2 = _context.sent;\n _ref2$info = _ref2.info;\n _ref2$info = _ref2$info === undefined ? {} : _ref2$info;\n deviceType = _ref2$info.deviceType, message = _ref2.message;\n\n if (!message) {\n _context.next = 8;\n break;\n }\n\n throw new Error(message);\n\n case 8:\n dispatch(Object(react_router_redux_lib[\"push\"])({\n pathname: '/activate',\n query: {\n deviceType: deviceType,\n regCode: regCode,\n chooseProvider: true\n }\n }));\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n}\n\nfunction launchLicensePlateOnSuccess(oneIdClientUrl, swid, accessToken) {\n var _this2 = this;\n\n return function () {\n var _ref3 = actions__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(dispatch) {\n var oneIdApiKey, _ref4, isSuccess, email, res;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return getOneIdApiKey(oneIdClientUrl);\n\n case 3:\n oneIdApiKey = _context2.sent;\n\n if (!oneIdApiKey) {\n _context2.next = 15;\n break;\n }\n\n _context2.next = 7;\n return getOneIdEmail(oneIdClientUrl, swid, accessToken);\n\n case 7:\n _ref4 = _context2.sent;\n isSuccess = _ref4.isSuccess;\n email = _ref4.email;\n\n if (!isSuccess) {\n _context2.next = 15;\n break;\n }\n\n _context2.next = 13;\n return updateOneIdMarkettingOptIn(oneIdClientUrl, oneIdApiKey, email);\n\n case 13:\n res = _context2.sent;\n\n dispatch(updateOneIdMarkettingOptInAction({\n isSuccess: res.isSuccess,\n err: res.err\n }));\n\n case 15:\n _context2.next = 20;\n break;\n\n case 17:\n _context2.prev = 17;\n _context2.t0 = _context2['catch'](0);\n\n dispatch(updateOneIdMarkettingOptInAction({\n err: _context2.t0,\n isSuccess: false\n }));\n\n case 20:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this2, [[0, 17]]);\n }));\n\n return function (_x2) {\n return _ref3.apply(this, arguments);\n };\n }();\n}\n\nfunction checkOneIdRegCode(deviceType, pairingCode, commerceUrlsConfig, qs) {\n var _this3 = this;\n\n return function () {\n var _ref5 = actions__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(dispatch, getState) {\n var _getState, _getState$app$env, env, lang, country, urls, dataBag, entitlementPath, correlationId, packages, entitlements, dataBagDevice, commercePath, deviceName, commerceBase, commerceUrl, packagesList, generateCommerceUrl, isSubscribePath;\n\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _getState = getState(), _getState$app$env = _getState.app.env, env = _getState$app$env === undefined ? '' : _getState$app$env;\n lang = commerceUrlsConfig.lang, country = commerceUrlsConfig.country, urls = commerceUrlsConfig.urls;\n _context3.next = 5;\n return oneId[\"e\" /* getLicensePlateDataBag */]({ pairingCode: pairingCode });\n\n case 5:\n _context3.t0 = _context3.sent;\n\n if (_context3.t0) {\n _context3.next = 8;\n break;\n }\n\n _context3.t0 = {};\n\n case 8:\n dataBag = _context3.t0;\n entitlementPath = dataBag.entitlementPath, correlationId = dataBag.correlationId, packages = dataBag.packages, entitlements = dataBag.entitlements, dataBagDevice = dataBag.deviceType, commercePath = dataBag.commercePath;\n deviceName = dataBagDevice || deviceType;\n _context3.next = 13;\n return oneId[\"f\" /* launchLicensePlate */]({\n deviceName: deviceName,\n authenticationFlow: entitlementPath,\n correlationId: correlationId,\n pairingCode: pairingCode\n });\n\n case 13:\n\n // when it reaches here, that means activation code (License Plate) was submitted successfully.\n commerceBase = env !== enums[\"c\" /* AppEnvs */].prod ? WEB_ESPN_PLUS_PURCHASE_PATH_QA : WEB_ESPN_PLUS_PURCHASE_PATH_PROD;\n commerceUrl = commercePath ? commerceBase + '/' + commercePath + '?start=login' : null;\n\n // if commerceUrl is empty, generate commerceUrl from urls mapping that is set in app-configurations\n\n if (!commerceUrl) {\n packagesList = packages || entitlements;\n generateCommerceUrl = Object(generateCommerceFlowUrl[\"a\" /* default */])(urls, packagesList, deviceName, lang, country);\n isSubscribePath = isSubscribeInEntitlementPath(entitlementPath);\n\n // If `subscribe` is in the entitlementPath property and\n // generateCommerceUrl is not empty, set commerceUrl.\n\n if (isSubscribePath && generateCommerceUrl !== '') {\n commerceUrl = generateCommerceUrl;\n }\n }\n\n // from the external config file; redirect only if window.location is available\n if (commerceUrl && window && window.location && window.location.href) {\n window.location.href = commerceUrl;\n } else {\n dispatch(Object(react_router_redux_lib[\"push\"])({\n pathname: '/activate',\n query: _extends({}, qs, {\n authSuccess: true,\n deviceType: deviceName\n })\n }));\n }\n _context3.next = 22;\n break;\n\n case 19:\n _context3.prev = 19;\n _context3.t1 = _context3['catch'](0);\n throw _context3.t1;\n\n case 22:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this3, [[0, 19]]);\n }));\n\n return function (_x3, _x4) {\n return _ref5.apply(this, arguments);\n };\n }();\n}\n\nfunction clientlessAuthenticate(_ref6) {\n var regCode = _ref6.regCode,\n mvpd = _ref6.mvpd,\n deviceType = _ref6.deviceType,\n provider = _ref6.provider,\n _ref6$baseUrl = _ref6.baseUrl,\n origBaseUrl = _ref6$baseUrl === undefined ? window.location.href : _ref6$baseUrl,\n adobePassEnv = _ref6.adobePassEnv;\n\n return function (dispatch) {\n var baseUrl = Object(removeQueryFromUrl[\"a\" /* default */])(origBaseUrl, 'chooseProvider,deviceType,regCode');\n var authUrl = getAuthenticateUrl({ regCode: regCode, mvpd: mvpd, deviceType: deviceType, baseUrl: baseUrl, adobePassEnv: adobePassEnv });\n var authSuccessUrl = getAuthSuccessUrl({ mvpd: mvpd, deviceType: deviceType, baseUrl: baseUrl });\n var authErrorUrl = getAuthErrorUrl({ baseUrl: baseUrl });\n var useIframe = provider.iFrameRequired && provider.iFrameRequired.value && window.innerWidth > 500;\n\n dispatch(createAuthenticateAction(authUrl, authSuccessUrl, authErrorUrl, useIframe));\n\n try {\n if (useIframe) {\n // open url in an iframe (use modal)\n dispatch(Object(appActions[\"C\" /* displayModalMessage */])(enums[\"w\" /* ModalType */].IFRAME_AUTH, {\n src: authUrl,\n width: provider.iFrameWidth && provider.iFrameWidth.value || 500,\n height: provider.iFrameHeight && provider.iFrameHeight.value || 500\n }));\n } else {\n window.location.href = authUrl;\n }\n } catch (err) {\n return bluebird_default.a.reject(err);\n }\n\n return bluebird_default.a.resolve(authUrl);\n };\n}\n// CONCATENATED MODULE: ./app/common/middlewares/trackingMiddleware.js\n/**\n * This middleware sends tracking calls based on actions being dispatched\n */\n\n\n\n\n\n/* harmony default export */ var trackingMiddleware = (function (store) {\n return function (next) {\n return function (action) {\n var state = store.getState();\n var _state$providerDialog = state.providerDialog;\n _state$providerDialog = _state$providerDialog === undefined ? {} : _state$providerDialog;\n var _state$providerDialog2 = _state$providerDialog.providers,\n providers = _state$providerDialog2 === undefined ? [] : _state$providerDialog2;\n\n var _routingSelector = Object(routingSelector[\"a\" /* default */])(state),\n _routingSelector$loca = _routingSelector.locationBeforeTransitions.query,\n device = _routingSelector$loca.device,\n deviceType = _routingSelector$loca.deviceType;\n\n var type = action.type,\n providerId = action.providerId;\n\n var trackingDevice = device || deviceType;\n var trackingProvider = providers.filter(function (provider) {\n return provider.abbreviation === providerId;\n }).shift();\n\n if (type === GENERIC_ERROR || type === INVALID_ERROR) {\n Object(omniture[\"g\" /* trackActivateCodeInvalid */])(trackingDevice, trackingProvider);\n }\n\n return next(action);\n };\n };\n});\n// EXTERNAL MODULE: ./node_modules/react-intl/lib/index.es.js + 1 modules\nvar index_es = __webpack_require__(95);\n\n// EXTERNAL MODULE: ./config/index.js\nvar config = __webpack_require__(16);\nvar config_default = /*#__PURE__*/__webpack_require__.n(config);\n\n// EXTERNAL MODULE: ./app/lib/ui/docReady.js\nvar docReady = __webpack_require__(708);\n\n// EXTERNAL MODULE: ./node_modules/redux/es/index.js + 14 modules\nvar redux_es = __webpack_require__(180);\n\n// EXTERNAL MODULE: ./node_modules/redux-thunk/lib/index.js\nvar redux_thunk_lib = __webpack_require__(709);\nvar redux_thunk_lib_default = /*#__PURE__*/__webpack_require__.n(redux_thunk_lib);\n\n// CONCATENATED MODULE: ./app/webapp/page/Activate/reducer.js\nvar reducer__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar reducer_initialState = {\n config: {},\n regCode: {},\n authenticate: {},\n genericError: '',\n invalidError: '',\n optInUpdate: {}\n};\n\nfunction activationReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : reducer_initialState;\n var action = arguments[1];\n\n switch (action.type) {\n case GET_CONFIG:\n return reducer__extends({}, state, {\n config: {\n mvpd: action.mvpd,\n message: action.message\n }\n });\n case AUTHENTICATE:\n return reducer__extends({}, state, {\n authenticate: {\n authUrl: action.authUrl,\n authSuccessUrl: action.authSuccessUrl,\n authErrorUrl: action.authErrorUrl,\n useIframe: action.useIframe\n }\n });\n case GENERIC_ERROR:\n return reducer__extends({}, state, {\n genericError: action.message\n });\n case INVALID_ERROR:\n return reducer__extends({}, state, {\n invalidError: action.message\n });\n case REG_CODE_UPDATE:\n return reducer__extends({}, state, {\n invalidError: null,\n genericError: null,\n regCode: reducer__extends({}, state.regCode, {\n code: action.code\n })\n });\n case START_SUBMIT:\n return reducer__extends({}, state, {\n submitting: true\n });\n case COMPLETE_SUBMIT:\n return reducer__extends({}, state, {\n submitting: false\n });\n case EPLUS_MARKETTING_OPT_IN_UPDATE:\n return reducer__extends({}, state, {\n optInUpdate: {\n isSuccess: action.payload.isSuccess,\n err: action.payload.err\n }\n });\n default:\n return state;\n }\n}\n// EXTERNAL MODULE: ./app/common/page/actions/index.js\nvar page_actions = __webpack_require__(17);\n\n// EXTERNAL MODULE: ./app/common/schedule/actions/index.js\nvar schedule_actions = __webpack_require__(96);\n\n// EXTERNAL MODULE: ./app/common/ads/actions/index.js\nvar ads_actions = __webpack_require__(92);\n\n// CONCATENATED MODULE: ./app/common/ads/reducers/index.js\nvar reducers__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\nfunction adsReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { configured: false, initialized: false };\n var action = arguments[1];\n\n switch (action.type) {\n case ads_actions[\"a\" /* ADS_CONFIG */]:\n return reducers__extends({}, state, { id: action.id, config: action.config, configured: true, initialized: false });\n\n case ads_actions[\"b\" /* ADS_CONFIG_INVALIDATED */]:\n return reducers__extends({}, state, { id: null, configured: false, initialized: false });\n\n case ads_actions[\"c\" /* ADS_INITIALIZED */]:\n return reducers__extends({}, state, { initialized: true });\n\n case page_actions[\"j\" /* REQUEST_PAGE */]:\n return reducers__extends({}, state, { id: null, configured: false, initialized: false });\n\n case page_actions[\"f\" /* RECEIVE_PAGE */]:\n return reducers__extends({}, state, { id: action.id });\n\n case schedule_actions[\"f\" /* SET_SPORTS_FILTER */]:\n return reducers__extends({}, state, {\n config: reducers__extends({}, state.config, { kvps: reducers__extends({}, state.config.kvps, { sp: action.label.toLowerCase() }) }),\n refresh: true\n });\n\n case ads_actions[\"d\" /* ADS_REFRESHED */]:\n return reducers__extends({}, state, { refresh: false });\n\n default:\n return state;\n }\n}\n// CONCATENATED MODULE: ./app/common/page/reducers/index.js\nvar page_reducers__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\n\n\nfunction getHero(state, _ref) {\n var _ref$buckets = _ref.buckets,\n buckets = _ref$buckets === undefined ? [] : _ref$buckets,\n heroContent = _ref.heroContent,\n noHero = _ref.noHero;\n\n // Use the \"concrete\" hero if it already exists (this is if the id was passed in directly to the page)\n // If the new hero content also has the `concrete` flag, replace the hero\n if (state.hero && state.hero.concrete && (!heroContent || !heroContent.concrete)) {\n return state.hero;\n }\n\n // If the hero content was retrieved as part of the page load action, use it.\n if (heroContent) {\n return heroContent;\n }\n\n // If there's no buckets, there's no content to make the hero.\n if (buckets.length === 0 || noHero) {\n return undefined;\n }\n\n // Find the bucket index that contains the top scored item.\n var playableBuckets = buckets.filter(function (bucket) {\n var bucketContents = bucket.contents;\n return bucketContents.length > 0 && (bucketContents[0].type === enums[\"o\" /* ContentType */].LISTING || bucketContents[0].type === enums[\"o\" /* ContentType */].VOD);\n });\n var topBucketIndex = playableBuckets.map(function (bucket, index) {\n return { score: bucket.contents[0].score || 0, index: index };\n }).sort(function (itemA, itemB) {\n return itemB.score - itemA.score;\n }).map(function (object) {\n return object.index;\n }).shift();\n // If no top bucket index was found, then there's no hero.\n // This could happen if the buckets array exists, but the contents were all empty.\n if (topBucketIndex === undefined || !playableBuckets[topBucketIndex]) {\n return undefined;\n }\n\n // Build and return the hero bucket.\n return playableBuckets[topBucketIndex].contents[0];\n}\n\nfunction reinsertBuckets(state, buckets) {\n return buckets.reduce(function (prev, bucket) {\n var index = state.buckets.map(function (buck) {\n return buck.id;\n }).indexOf(bucket.id);\n return [].concat(_toConsumableArray(prev.slice(0, index)), [bucket], _toConsumableArray(prev.slice(index + 1)));\n }, state.buckets);\n}\n\nfunction replaceBuckets(state, replacementBuckets) {\n // calling state.buckets.map throws error when state.buckets is empty. We need to do the check before mapping\n if (state.buckets && state.buckets.length) {\n return state.buckets.map(function (bucket) {\n var newBucket = bucket;\n replacementBuckets.forEach(function (replacementBucket) {\n if (bucket.id === replacementBucket.id) {\n newBucket = replacementBucket;\n }\n });\n // the __replaced property is used when we first get to the player page from a bucket\n // delete it when we replace buckets so that TabContainer doesn't use it to select a tab\n // #TODO: we can probably accomplish the initial replacement without this flag\n delete newBucket.__replaced;\n return newBucket;\n });\n }\n return state.buckets;\n}\n\nfunction completeScoring(state, action) {\n var buckets = action.buckets || [];\n if (buckets.length === 0) {\n return page_reducers__extends({}, state, { scored: true });\n }\n\n var scoredBuckets = reinsertBuckets(state, buckets);\n var hero = getHero(state, { buckets: scoredBuckets, heroContent: action.heroContent, noHero: state.noHero });\n return page_reducers__extends({}, state, { scoredBuckets: scoredBuckets, hero: hero, scored: true });\n}\n\nfunction reducers_page() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case page_actions[\"a\" /* CLEAR_PAGE */]:\n return {};\n\n case page_actions[\"d\" /* INVALIDATE_PAGE */]:\n return page_reducers__extends({}, state, { didInvalidate: true });\n\n case page_actions[\"g\" /* REFRESH_BUCKETS */]:\n return page_reducers__extends({}, state, {\n buckets: replaceBuckets(state, action.buckets)\n });\n\n case page_actions[\"h\" /* REPLACE_BUCKETS */]:\n return page_reducers__extends({}, state, {\n buckets: action.buckets\n });\n\n case page_actions[\"j\" /* REQUEST_PAGE */]:\n return page_reducers__extends({}, state, {\n id: action.id,\n isFetching: true,\n didInvalidate: false,\n requestedTime: action.requestedTime,\n scored: false,\n isFinal: false\n });\n\n case page_actions[\"f\" /* RECEIVE_PAGE */]:\n // ignore the payload that's from the different routes\n if (state.id !== action.id) {\n return state;\n }\n return page_reducers__extends({}, state, {\n id: action.id,\n name: action.name,\n image: action.image,\n icon: action.icon,\n description: action.description,\n header: action.header,\n edition: action.edition,\n lang: action.lang,\n isFetching: false,\n didInvalidate: false,\n buckets: action.buckets,\n receivedTime: action.receivedTime,\n tracking: action.tracking,\n hero: getHero(state, action),\n carouselBucket: action.carouselBucket,\n error: action.error,\n isFinal: action.isFinal,\n noHero: action.noHero\n });\n\n case page_actions[\"i\" /* REPLACE_HERO */]:\n return page_reducers__extends({}, state, {\n hero: action.content || state.hero\n });\n\n case page_actions[\"c\" /* COMPLETE_PAGE_LOAD */]:\n return completeScoring(state, action);\n\n case page_actions[\"l\" /* START_GET_COMPETITORS */]:\n return page_reducers__extends({}, state, { loading: true });\n\n case page_actions[\"b\" /* COMPLETE_GET_COMPETITORS */]:\n return page_reducers__extends({}, state, { competitors: action.competitors, loading: false });\n\n case page_actions[\"e\" /* PAGE_INFO_SET */]:\n return page_reducers__extends({}, state, {\n name: action.name,\n id: action.id,\n isFinal: action.isFinal,\n autoPageViewTrack: action.autoPageViewTrack\n });\n\n case page_actions[\"k\" /* SET_STATE */]:\n return page_reducers__extends({}, state, {\n isFinal: action.isFinal\n });\n\n default:\n return state;\n }\n}\n// EXTERNAL MODULE: ./app/webapp/player/actions/index.js + 2 modules\nvar player_actions = __webpack_require__(98);\n\n// CONCATENATED MODULE: ./app/webapp/player/reducers/index.js\nvar player_reducers__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction reducers__defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nfunction player_reducers_page() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n autoEmbedTimerComplete: false,\n embedding: false,\n embedded: false,\n ready: false,\n error: false,\n feeds: {}\n };\n var action = arguments[1];\n\n switch (action.type) {\n case player_actions[\"a\" /* AUTHORIZATION_ERROR */]:\n return player_reducers__extends({}, state, { error: true, message: action.message });\n case player_actions[\"b\" /* AUTOEMBED_TIMER_COMPLETE */]:\n return player_reducers__extends({}, state, { autoEmbedTimerComplete: true });\n case player_actions[\"c\" /* AUTOPLAY_UPDATED */]:\n return player_reducers__extends({}, state, { autoEmbed: action.autoplay });\n case player_actions[\"l\" /* STREAM_PLAYING */]:\n return player_reducers__extends({}, state, { error: action.error });\n case player_actions[\"i\" /* PLAYER_READY */]:\n return player_reducers__extends({}, state, { autoEmbed: action.autoEmbed, ready: action.ready });\n case player_actions[\"h\" /* PLAYER_EMBEDDING */]:\n return player_reducers__extends({}, state, { embedding: action.embedding });\n case player_actions[\"g\" /* PLAYER_EMBEDDED */]:\n return player_reducers__extends({}, state, { embedded: action.embedded });\n case player_actions[\"j\" /* REGISTER_PLAYER */]:\n return player_reducers__extends({}, state, { ready: action.ready });\n case player_actions[\"k\" /* RESET_PLAYER */]:\n return player_reducers__extends({}, state, {\n autoEmbedTimerComplete: false,\n embedding: false,\n embedded: false,\n ready: false,\n error: false\n });\n case player_actions[\"f\" /* FEED_SELECT */]:\n if (!action.content || !action.content.id) {\n return state;\n }\n return player_reducers__extends({}, state, {\n feeds: player_reducers__extends({}, state.feeds, reducers__defineProperty({}, action.content.id, action.streamId))\n });\n case player_actions[\"e\" /* FEED_RESET */]:\n return player_reducers__extends({}, state, { feeds: {} });\n default:\n return state;\n }\n}\n// EXTERNAL MODULE: ./app/lib/api/index.js + 9 modules\nvar api = __webpack_require__(88);\n\n// EXTERNAL MODULE: ./app/common/selectors/appSelector.js + 1 modules\nvar appSelector = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./app/common/selectors/apiParamsSelector.js\nvar apiParamsSelector = __webpack_require__(115);\n\n// CONCATENATED MODULE: ./app/common/actions/clientActions.js\n\n\n\n\nvar START_GET_NETWORKS = 'START_GET_NETWORKS';\nvar COMPLETE_GET_NETWORKS = 'COMPLETE_GET_NETWORKS';\n\nfunction startGetNetworks() {\n return {\n type: START_GET_NETWORKS,\n startTime: Date.now()\n };\n}\n\nfunction completeGetNetworks(networks) {\n return {\n type: COMPLETE_GET_NETWORKS,\n completeTime: Date.now(),\n networks: networks\n };\n}\n\nfunction fetchNetworks() {\n return function (dispatch, getState) {\n var state = getState();\n var apiEnv = Object(appSelector[\"c\" /* apiEnvSelector */])(state);\n var params = Object(apiParamsSelector[\"a\" /* collectionParamsSelector */])(state);\n dispatch(startGetNetworks());\n return api[\"d\" /* PageAPI */].getNetworks(apiEnv, params).then(function (networks) {\n dispatch(completeGetNetworks(networks || []));\n return networks;\n });\n };\n}\n// EXTERNAL MODULE: ./app/common/schedule/StatusFilter.js\nvar StatusFilter = __webpack_require__(97);\n\n// CONCATENATED MODULE: ./app/common/schedule/reducers/index.js\nvar schedule_reducers__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\nvar today = new Date();\n\nfunction scheduleReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n statusFilterValue: StatusFilter[\"a\" /* default */].Options.LIVE,\n dateFilterEndValue: today,\n dateFilterStartValue: today,\n sportsFilterValue: '',\n sportsFilterType: 'category',\n networkFilter: ''\n };\n var action = arguments[1];\n\n switch (action.type) {\n\n case COMPLETE_GET_NETWORKS:\n return schedule_reducers__extends({}, state, { channels: action.networks });\n\n case schedule_actions[\"a\" /* COMPLETE_GET_CATEGORIES */]:\n return schedule_reducers__extends({}, state, { categories: action.categories });\n\n case schedule_actions[\"h\" /* START_GET_SCHEDULE */]:\n return schedule_reducers__extends({}, state, { loading: true });\n\n case schedule_actions[\"b\" /* COMPLETE_GET_SCHEDULE */]:\n return schedule_reducers__extends({}, state, { listings: action.listings, loading: false });\n\n case schedule_actions[\"g\" /* SET_STATUS_FILTER */]:\n return schedule_reducers__extends({}, state, { statusFilterValue: action.status });\n\n case schedule_actions[\"d\" /* SET_NETWORK_FILTER */]:\n return schedule_reducers__extends({}, state, { networkFilter: action.value, networkFilterLabel: action.label });\n\n case schedule_actions[\"f\" /* SET_SPORTS_FILTER */]:\n return schedule_reducers__extends({}, state, {\n sportsFilterValue: action.value,\n sportsFilterType: action.filterType,\n sportsFilterLabel: action.label\n });\n\n case schedule_actions[\"c\" /* SET_DATE_FILTER */]:\n return schedule_reducers__extends({}, state, { dateFilterStartValue: action.date, dateFilterEndValue: action.date });\n\n case schedule_actions[\"e\" /* SET_REPLAY_DATE_FILTER */]:\n return schedule_reducers__extends({}, state, { dateFilterStartValue: action.startDate, dateFilterEndValue: action.endDate });\n\n default:\n return state;\n }\n}\n// EXTERNAL MODULE: ./app/common/scheduleModule/actions/index.js\nvar scheduleModule_actions = __webpack_require__(63);\n\n// CONCATENATED MODULE: ./app/common/scheduleModule/reducers/index.js\nvar scheduleModule_reducers__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nfunction reducers_completeScoring(state, action) {\n var buckets = action.buckets || [];\n if (buckets.length === 0) {\n return scheduleModule_reducers__extends({}, state, { scored: true });\n }\n return scheduleModule_reducers__extends({}, state, { buckets: buckets, scored: true });\n}\n\nfunction scheduleModuleReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case scheduleModule_actions[\"c\" /* SCORE_SCHEDULE_MODULE_DATA */]:\n return reducers_completeScoring(state, action);\n case scheduleModule_actions[\"a\" /* RECEIVE_SCHEDULE_MODULE_DATA */]:\n return scheduleModule_reducers__extends({}, state, {\n name: action.name,\n buckets: action.buckets,\n receivedTime: action.receivedTime\n });\n case scheduleModule_actions[\"b\" /* REQUEST_SCHEDULE_MODULE_DATA */]:\n return scheduleModule_reducers__extends({}, state, {\n lang: action.lang,\n query: action.query,\n requestedTime: action.requestedTime,\n scored: false\n });\n default:\n return state;\n }\n}\n// CONCATENATED MODULE: ./app/common/reducers/appReducer.js\nvar appReducer__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\nfunction appReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n isMobile: false,\n selectedContent: {},\n selectedStream: {},\n playingStream: {},\n previousContent: {},\n bootstrap: {},\n selectedAiringId: undefined,\n pickerStreams: []\n };\n var action = arguments[1];\n\n switch (action.type) {\n case appActions[\"b\" /* APP_RENDERED */]:\n return appReducer__extends({}, state, { rendered: true });\n case appActions[\"a\" /* ANALYTICS_READY */]:\n return appReducer__extends({}, state, { analytics: action.initData });\n case player_actions[\"d\" /* CLEAR_PLAYING_STREAM */]:\n return appReducer__extends({}, state, { playingStream: {} });\n case appActions[\"c\" /* CLOSE_MODAL_MESSAGE */]:\n return appReducer__extends({}, state, {\n showModalMessage: false,\n messageType: '',\n messageData: undefined,\n lastMessageType: state.messageType,\n lastMessageData: state.messageData\n });\n case appActions[\"d\" /* CONTENT_SELECT */]:\n return appReducer__extends({}, state, { previousContent: state.selectedContent, selectedContent: action.content });\n case appActions[\"e\" /* CONTENT_UNSELECT */]:\n return appReducer__extends({}, state, { selectedContent: {} });\n case appActions[\"u\" /* STREAM_SELECTING */]:\n return appReducer__extends({}, state, { selectingStream: action.stream });\n case appActions[\"t\" /* STREAM_SELECT */]:\n return appReducer__extends({}, state, { selectingStream: undefined, selectedStream: action.stream, playbackMeta: action.playbackMeta });\n case appActions[\"v\" /* STREAM_UNSELECT */]:\n return appReducer__extends({}, state, { selectingStream: undefined, selectedStream: {}, playbackMeta: undefined });\n case player_actions[\"l\" /* STREAM_PLAYING */]:\n return appReducer__extends({}, state, { playingStream: action.stream });\n case appActions[\"f\" /* DISPLAY_MODAL_MESSAGE */]:\n return appReducer__extends({}, state, { showModalMessage: true, messageType: action.messageType, messageData: action.messageData });\n case appActions[\"h\" /* FETCH_EXTERNAL_CONFIG */]:\n return appReducer__extends({}, state, { bootstrap: action.bootstrap });\n case appActions[\"g\" /* FETCH_EMBEDDED_OPTIONS */]:\n return appReducer__extends({}, state, { options: action.options });\n case appActions[\"i\" /* INIT_APP_DATA */]:\n return appReducer__extends({}, state, {\n appName: action.appName,\n adobePassEnv: action.adobePassEnv,\n apiEnv: action.apiEnv,\n configEnv: action.configEnv,\n country: action.country,\n device: action.device,\n env: action.env,\n isMobile: action.isMobile,\n lang: action.lang,\n sourceLang: action.sourceLang,\n location: action.location,\n messages: action.messages,\n enableSearch: action.enableSearch,\n packageId: action.packageId,\n tier: action.tier,\n edition: action.edition,\n webview: action.webview,\n renderTemplateType: action.renderTemplateType,\n newrelicInsertKey: action.newrelicInsertKey,\n newrelicAccountId: action.newrelicAccountId\n });\n case appActions[\"j\" /* MEDIA_QUERY */]:\n return appReducer__extends({}, state, { mq: action.mq });\n case appActions[\"m\" /* PACKAGE_ID */]:\n return appReducer__extends({}, state, { packageId: action.packageId });\n case appActions[\"n\" /* PACKAGE_TIER */]:\n return appReducer__extends({}, state, { tier: action.tier });\n case appActions[\"q\" /* PICKER_STREAMS_SELECT */]:\n return appReducer__extends({}, state, { pickerStreams: action.pickerStreams, pickerStreamsEventId: action.pickerStreamsEventId });\n case appActions[\"s\" /* PICKER_STREAMS_UNSELECT */]:\n return appReducer__extends({}, state, { pickerStreams: [], pickerStreamsEventId: undefined });\n case appActions[\"r\" /* PICKER_STREAMS_SELECT_ERROR */]:\n return appReducer__extends({}, state, { pickerStreamsError: action.error });\n case appActions[\"l\" /* OPEN_PICKER_SUCCESS */]:\n return appReducer__extends({}, state, {\n openPicker: {\n isSuccess: true,\n id: action.payload.id,\n retryTime: action.payload.retryTime\n }\n });\n case appActions[\"k\" /* OPEN_PICKER_ERROR */]:\n return appReducer__extends({}, state, { openPicker: { isSuccess: false, error: action.error } });\n case appActions[\"o\" /* PICKER_AUTO_SELECT */]:\n return appReducer__extends({}, state, { pickerAutoSelectStream: action.stream });\n case appActions[\"p\" /* PICKER_STATE_CLEAR */]:\n {\n return appReducer__extends({}, state, { openPicker: {}, pickerAutoSelectStream: {} });\n }\n default:\n return state;\n }\n}\n// EXTERNAL MODULE: ./app/constants.js\nvar app_constants = __webpack_require__(8);\n\n// EXTERNAL MODULE: ./app/lib/util/localStorage.js\nvar localStorage = __webpack_require__(44);\n\n// EXTERNAL MODULE: ./app/common/actions/authenticationActions.js\nvar authenticationActions = __webpack_require__(22);\n\n// EXTERNAL MODULE: ./app/common/actions/oneIdActions.js\nvar oneIdActions = __webpack_require__(36);\n\n// CONCATENATED MODULE: ./app/common/reducers/authenticationReducer.js\nvar authenticationReducer__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction authenticationReducer__defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction authenticationReducer__toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\n\n\n\n\n\nfunction addAuthType(authTypes, authType) {\n // don't add multiple authtypes\n if (authTypes.indexOf(authType) !== -1) {\n return [].concat(authenticationReducer__toConsumableArray(authTypes));\n }\n\n return [].concat(authenticationReducer__toConsumableArray(authTypes), [authType]);\n}\n\nfunction removeAuthType(authTypes, authType) {\n var index = authTypes.indexOf(authType);\n if (index === -1) {\n return [].concat(authenticationReducer__toConsumableArray(authTypes));\n }\n return [].concat(authenticationReducer__toConsumableArray(authTypes.slice(0, index)), authenticationReducer__toConsumableArray(authTypes.slice(index + 1)));\n}\n\nfunction authTypesReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var action = arguments[1];\n\n var authTypes = state;\n if (action.authType === enums[\"e\" /* AuthTypes */].BAM) {\n Object.keys(enums[\"s\" /* Entitlements */]).forEach(function (entitlement) {\n authTypes = removeAuthType(authTypes, 'unknown_' + entitlement);\n });\n\n if (action.directive === 'add') {\n var _action$entitlements = action.entitlements,\n entitlements = _action$entitlements === undefined ? [] : _action$entitlements,\n hasTDAEntitlement = action.hasTDAEntitlement;\n\n if (entitlements.length) {\n entitlements.forEach(function (entitlement) {\n authTypes = addAuthType(authTypes, entitlement);\n });\n }\n if (hasTDAEntitlement) {\n authTypes = addAuthType(authTypes, enums[\"s\" /* Entitlements */].ESPN_TDA);\n }\n } else {\n Object.keys(enums[\"s\" /* Entitlements */]).forEach(function (entitlement) {\n authTypes = removeAuthType(authTypes, entitlement);\n });\n }\n\n return authTypes;\n }\n\n authTypes = removeAuthType(authTypes, 'unknown_' + action.authType);\n\n if (action.directive === 'add') {\n authTypes = addAuthType(authTypes, action.authType);\n } else {\n authTypes = removeAuthType(authTypes, action.authType);\n }\n\n return authTypes;\n}\n\nfunction bamReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case authenticationActions[\"z\" /* START_CHECK_BAM_AUTHENTICATION */]:\n return authenticationReducer__extends({}, state, {\n initialization: {\n initializing: true,\n startTime: action.startTime\n }\n });\n case authenticationActions[\"g\" /* COMPLETE_CHECK_BAM_AUTHENTICATION */]:\n return authenticationReducer__extends({}, state, {\n initialization: {\n initializing: false,\n completeTime: action.completeTime\n }\n });\n case authenticationActions[\"m\" /* GET_BAM_AUTHENTICATION_INFO */]:\n return authenticationReducer__extends({}, state, {\n subscriptions: action.subscriptions\n });\n case authenticationActions[\"n\" /* GET_BAM_SESSION_TOKEN */]:\n return authenticationReducer__extends({}, state, {\n session: action.session\n });\n case authenticationActions[\"o\" /* GET_GEOLOCATION */]:\n if (!Object(localStorage[\"a\" /* get */])(app_constants[\"e\" /* GEO_LOCATION_KEY */]) && action.geo) {\n Object(localStorage[\"d\" /* set */])(app_constants[\"e\" /* GEO_LOCATION_KEY */], action.geo, 24 * 60 * 60);\n }\n return authenticationReducer__extends({}, state, {\n geo: action.geo\n });\n case authenticationActions[\"s\" /* GET_USER_TRACKING */]:\n return authenticationReducer__extends({}, state, {\n userTracking: action.userTracking\n });\n default:\n return state;\n }\n}\n\nfunction ipReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case authenticationActions[\"A\" /* START_CHECK_IP_AUTHENTICATION */]:\n return authenticationReducer__extends({}, state, {\n initialization: {\n initializing: true,\n startTime: action.startTime\n }\n });\n case authenticationActions[\"h\" /* COMPLETE_CHECK_IP_AUTHENTICATION */]:\n return authenticationReducer__extends({}, state, {\n initialization: {\n initializing: false,\n completeTime: action.completeTime\n }\n });\n case authenticationActions[\"p\" /* GET_IP_AUTHENTICATION_INFO */]:\n return authenticationReducer__extends({}, state, {\n info: action.info\n });\n case authenticationActions[\"q\" /* GET_LOCATION */]:\n return authenticationReducer__extends({}, state, {\n location: action.location\n });\n default:\n return state;\n }\n}\n\nfunction adobePassReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case authenticationActions[\"v\" /* START_ADOBEPASS_INITIALIZE */]:\n return authenticationReducer__extends({}, state, {\n initialization: {\n initializing: true,\n startTime: action.startTime\n }\n });\n case authenticationActions[\"c\" /* COMPLETE_ADOBEPASS_INITIALIZE */]:\n return authenticationReducer__extends({}, state, {\n initialization: {\n initializing: false,\n completeTime: action.completeTime\n }\n });\n case authenticationActions[\"y\" /* START_CHECK_AUTHENTICATION */]:\n return authenticationReducer__extends({}, state, {\n checkAuthentication: {\n checkingAuthentication: true,\n startTime: action.startTime\n }\n });\n case authenticationActions[\"f\" /* COMPLETE_CHECK_AUTHENTICATION */]:\n return authenticationReducer__extends({}, state, {\n checkAuthentication: {\n checkingAuthentication: false,\n mvpd: action.mvpd,\n completeTime: action.completeTime\n },\n isAuthenticated: action.isAuthenticated\n });\n case authenticationActions[\"w\" /* START_AUTHENTICATION */]:\n return authenticationReducer__extends({}, state, {\n authentication: authenticationReducer__extends({}, state.authentication, {\n authenticating: true,\n startTime: action.startTime\n })\n });\n case authenticationActions[\"d\" /* COMPLETE_AUTHENTICATION */]:\n return authenticationReducer__extends({}, state, {\n authentication: authenticationReducer__extends({}, state.authentication, {\n authenticating: false,\n mvpd: action.mvpd,\n completeTime: action.completeTime\n }),\n isAuthenticated: action.isAuthenticated\n });\n case authenticationActions[\"x\" /* START_AUTHORIZATION */]:\n return authenticationReducer__extends({}, state, {\n authorization: {\n authorizing: true,\n resourceId: action.resourceId,\n startTime: action.startTime\n }\n });\n case authenticationActions[\"e\" /* COMPLETE_AUTHORIZATION */]:\n return authenticationReducer__extends({}, state, {\n authorization: {\n authorizing: false,\n resourceId: action.resourceId,\n token: action.token,\n completeTime: action.completeTime\n },\n isAuthorized: action.token && action.token.length > 0 && action.resourceId && action.resourceId.length > 0 || false\n });\n case authenticationActions[\"i\" /* COMPLETE_LOGOUT */]:\n return authenticationReducer__extends({}, state, {\n info: {},\n isAuthenticated: false\n });\n case authenticationActions[\"l\" /* GET_AUTHENTICATION_INFO */]:\n if (action.info && action.info.abbreviation) {\n Object(localStorage[\"d\" /* set */])(app_constants[\"i\" /* MVPD_PREVIOUS_KEY */], action.info.abbreviation);\n }\n return authenticationReducer__extends({}, state, {\n info: action.info\n });\n case authenticationActions[\"r\" /* GET_METADATA */]:\n {\n var newMetaData = {};\n if (typeof action.key === 'string') {\n newMetaData[action.key] = action.value;\n }\n return authenticationReducer__extends({}, state, {\n metadata: authenticationReducer__extends({}, state.metadata, authenticationReducer__defineProperty({}, action.key, action.value))\n });\n }\n case authenticationActions[\"j\" /* COMPLETE_PREAUTH_CHECK */]:\n {\n return authenticationReducer__extends({}, state, {\n preauthorizedResources: action.resources\n });\n }\n case authenticationActions[\"a\" /* ADOBEPASS_ERROR_EVENT */]:\n {\n return authenticationReducer__extends({}, state, {\n error: action.error\n });\n }\n default:\n return state;\n }\n}\n\nfunction authenticationReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { authTypes: app_constants[\"z\" /* unknownAuthStates */] };\n var action = arguments[1];\n\n switch (action.type) {\n case authenticationActions[\"z\" /* START_CHECK_BAM_AUTHENTICATION */]:\n case authenticationActions[\"g\" /* COMPLETE_CHECK_BAM_AUTHENTICATION */]:\n case authenticationActions[\"n\" /* GET_BAM_SESSION_TOKEN */]:\n case authenticationActions[\"o\" /* GET_GEOLOCATION */]:\n case authenticationActions[\"s\" /* GET_USER_TRACKING */]:\n case authenticationActions[\"m\" /* GET_BAM_AUTHENTICATION_INFO */]:\n return authenticationReducer__extends({}, state, {\n bam: bamReducer(state.bam, action)\n });\n case authenticationActions[\"A\" /* START_CHECK_IP_AUTHENTICATION */]:\n case authenticationActions[\"q\" /* GET_LOCATION */]:\n case authenticationActions[\"p\" /* GET_IP_AUTHENTICATION_INFO */]:\n return authenticationReducer__extends({}, state, {\n ip: ipReducer(state.ip, action)\n });\n case authenticationActions[\"h\" /* COMPLETE_CHECK_IP_AUTHENTICATION */]:\n return authenticationReducer__extends({}, state, {\n ip: ipReducer(state.ip, action),\n authTypes: authTypesReducer(state.authTypes, action)\n });\n case authenticationActions[\"v\" /* START_ADOBEPASS_INITIALIZE */]:\n case authenticationActions[\"c\" /* COMPLETE_ADOBEPASS_INITIALIZE */]:\n case authenticationActions[\"y\" /* START_CHECK_AUTHENTICATION */]:\n case authenticationActions[\"w\" /* START_AUTHENTICATION */]:\n case authenticationActions[\"x\" /* START_AUTHORIZATION */]:\n case authenticationActions[\"e\" /* COMPLETE_AUTHORIZATION */]:\n case authenticationActions[\"l\" /* GET_AUTHENTICATION_INFO */]:\n case authenticationActions[\"r\" /* GET_METADATA */]:\n case authenticationActions[\"j\" /* COMPLETE_PREAUTH_CHECK */]:\n case authenticationActions[\"a\" /* ADOBEPASS_ERROR_EVENT */]:\n return authenticationReducer__extends({}, state, {\n adobePass: adobePassReducer(state.adobePass, action)\n });\n case authenticationActions[\"f\" /* COMPLETE_CHECK_AUTHENTICATION */]:\n case authenticationActions[\"d\" /* COMPLETE_AUTHENTICATION */]:\n case authenticationActions[\"i\" /* COMPLETE_LOGOUT */]:\n return authenticationReducer__extends({}, state, {\n adobePass: adobePassReducer(state.adobePass, action),\n authTypes: authTypesReducer(state.authTypes, action)\n });\n case oneIdActions[\"b\" /* COMPLETE_CHECK_ONEID_AUTHENTICATION */]:\n case oneIdActions[\"a\" /* CLEAR_GUEST */]:\n return authenticationReducer__extends({}, state, {\n bamSubReady: action.bamSubReady,\n hasSuperBundle: action.hasSuperBundle,\n authTypes: authTypesReducer(state.authTypes, action)\n });\n default:\n return state;\n }\n}\n// EXTERNAL MODULE: ./app/common/actions/fanActions.js\nvar fanActions = __webpack_require__(216);\n\n// CONCATENATED MODULE: ./app/common/reducers/fanReducer.js\nvar fanReducer__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nfunction fanReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case fanActions[\"a\" /* COMPLETE_GET_FAN */]:\n return fanReducer__extends({}, state, action.fan);\n default:\n return state;\n }\n}\n// EXTERNAL MODULE: ./app/common/actions/networkActions.js\nvar networkActions = __webpack_require__(710);\n\n// CONCATENATED MODULE: ./app/common/reducers/networksReducer.js\nvar networksReducer__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nfunction networksReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case networkActions[\"a\" /* COMPLETE_GET_NETWORKS */]:\n return networksReducer__extends({}, state, {\n data: action.networks,\n completeTime: action.completeTime\n });\n default:\n return state;\n }\n}\n// CONCATENATED MODULE: ./app/common/reducers/lastActionReducer.js\nfunction lastAction() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var action = arguments[1];\n\n return action;\n}\n// CONCATENATED MODULE: ./app/common/reducers/oneIdReducer.js\nvar oneIdReducer__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nfunction oneIdReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case oneIdActions[\"c\" /* COMPLETE_CHECK_SWID_AUTHENTICATION */]:\n return oneIdReducer__extends({}, state, {\n swid: action.swid,\n isLoggedIn: action.isAuthenticated\n });\n case oneIdActions[\"d\" /* GET_GUEST */]:\n return oneIdReducer__extends({}, state, {\n data: action.data,\n completeTime: action.completeTime\n });\n case oneIdActions[\"a\" /* CLEAR_GUEST */]:\n return oneIdReducer__extends({}, state, {\n data: {},\n completeTime: undefined\n });\n case oneIdActions[\"f\" /* LOGIN_START */]:\n return oneIdReducer__extends({}, state, {\n loginParams: action.params\n });\n case oneIdActions[\"e\" /* LOGIN_CLOSED */]:\n case oneIdActions[\"b\" /* COMPLETE_CHECK_ONEID_AUTHENTICATION */]:\n return oneIdReducer__extends({}, state, {\n loginParams: undefined\n });\n default:\n return state;\n }\n}\n// CONCATENATED MODULE: ./app/common/reducers/providerDialogReducer.js\nvar providerDialogReducer__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar defaultState = {\n providers: [],\n display: false\n};\n\nfunction providerDialogReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments[1];\n\n switch (action.type) {\n case authenticationActions[\"u\" /* REQUEST_PROVIDERS */]:\n return providerDialogReducer__extends({}, state, { reqStartTime: action.startTime });\n case authenticationActions[\"t\" /* RECEIVE_PROVIDERS */]:\n return providerDialogReducer__extends({}, state, {\n providers: action.providers,\n reqCompleteTime: action.completeTime\n });\n case authenticationActions[\"k\" /* DISPLAY_PROVIDER_DIALOG */]:\n return providerDialogReducer__extends({}, state, { display: true });\n case authenticationActions[\"b\" /* CLOSE_PROVIDER_DIALOG */]:\n return providerDialogReducer__extends({}, state, { display: false });\n default:\n return state;\n }\n}\n// EXTERNAL MODULE: ./node_modules/loglevel/lib/loglevel.js\nvar loglevel = __webpack_require__(73);\nvar loglevel_default = /*#__PURE__*/__webpack_require__.n(loglevel);\n\n// EXTERNAL MODULE: ./app/lib/metrics/newRelicEventBus.js\nvar newRelicEventBus = __webpack_require__(138);\n\n// EXTERNAL MODULE: ./app/lib/api/cache/fallbackCache.js\nvar fallbackCache = __webpack_require__(74);\n\n// CONCATENATED MODULE: ./app/lib/api/NetworkImageData.js\n\n\n\n\n\n\n\nvar log = loglevel_default.a.getLogger('NetworkImageData');\n\nvar DEFAULT_EXPIRATION = 600; // 10 minutes\nvar DEFAULT_TIMEOUT = 5000;\nvar NETWORK_IMAGE_DATA_URL = config[\"secureCdnHost\"] + '/connected-devices/images/data.json';\n\nfunction getUrl() {\n var url = NETWORK_IMAGE_DATA_URL;\n if (false) {\n // use non ssl domain for server side\n url = url.replace(secureCdnHost, 'http://proxy.espn.com');\n }\n return url;\n}\n\nfunction get() {\n var url = getUrl();\n return requestCache[\"a\" /* default */].get(url).expiration(DEFAULT_EXPIRATION).use(requestProxy[\"a\" /* default */]).timeout(DEFAULT_TIMEOUT).then(function (_ref) {\n var body = _ref.body;\n\n fallbackCache[\"a\" /* default */].set(url, body);\n return body;\n }).catch(function (err) {\n log.error('load network image data: ' + url, err.originalError);\n newRelicEventBus[\"b\" /* newRelicEmitter */].emit(newRelicEventBus[\"a\" /* UNFULFILLED_PROMISE_EVENT */], err);\n return fallbackCache[\"a\" /* default */].get(url).then(function (networkImageData) {\n if (!networkImageData) {\n return networkImageData;\n }\n return {};\n });\n });\n}\n// CONCATENATED MODULE: ./app/common/NetworkLogo/actions.js\n\n\nvar LOAD_NETWORK_IMAGE_DATA = 'LOAD_NETWORK_IMAGE_DATA';\n\nfunction loadNetworkImageData() {\n return function (dispatch) {\n return get().then(function (networkImageData) {\n dispatch({\n type: LOAD_NETWORK_IMAGE_DATA,\n payload: networkImageData\n });\n });\n };\n}\n// CONCATENATED MODULE: ./app/common/NetworkLogo/reducers/index.js\nvar NetworkLogo_reducers__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nfunction networkImageData() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case LOAD_NETWORK_IMAGE_DATA:\n return NetworkLogo_reducers__extends({}, state, {\n payload: action.payload\n });\n default:\n return NetworkLogo_reducers__extends({}, state);\n }\n}\n// CONCATENATED MODULE: ./app/common/reducers/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar rootReducer = Object(redux_es[\"c\" /* combineReducers */])({\n ads: adsReducer,\n app: appReducer,\n authentication: authenticationReducer,\n fan: fanReducer,\n lastAction: lastAction,\n oneId: oneIdReducer,\n page: reducers_page,\n player: player_reducers_page,\n providerDialog: providerDialogReducer,\n routing: react_router_redux_lib[\"routerReducer\"],\n schedule: scheduleReducer,\n scheduleModule: scheduleModuleReducer,\n networks: networksReducer,\n activation: activationReducer,\n networkImageData: networkImageData\n});\n\n/* harmony default export */ var reducers = (rootReducer);\n// CONCATENATED MODULE: ./app/store.js\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction store__toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\n\n\n\n\n\nfunction configureStore() {\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { app: {} };\n var history = arguments[1];\n var customMiddleware = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n var middleware = [redux_thunk_lib_default.a, Object(react_router_redux_lib[\"routerMiddleware\"])(history)].concat(customMiddleware);\n if (false) {\n // turn this off by default\n // const createLogger = require('redux-logger');\n // middleware.push(createLogger());\n }\n\n var store = Object(redux_es[\"e\" /* createStore */])(reducers, initialState, Object(redux_es[\"d\" /* compose */])(redux_es[\"a\" /* applyMiddleware */].apply(undefined, store__toConsumableArray(middleware)), (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && typeof window.devToolsExtension !== 'undefined' && initialState.app.env !== enums[\"c\" /* AppEnvs */].PROD ? window.devToolsExtension() : function (func) {\n return func;\n }));\n\n if (false) {\n // Enable Webpack hot module replacement for reducers\n module.hot.accept('common/reducers', function () {\n var nextReducer = require('./common/reducers');\n store.replaceReducer(nextReducer);\n });\n }\n\n return store;\n}\n\n/* harmony default export */ var app_store = (configureStore);\n// EXTERNAL MODULE: ./app/common/ads/BannerAd.js\nvar BannerAd = __webpack_require__(76);\n\n// EXTERNAL MODULE: ./app/common/page/buckets/BucketListContainer.js\nvar BucketListContainer = __webpack_require__(99);\n\n// EXTERNAL MODULE: ./app/common/page/common/MainContainer.js\nvar MainContainer = __webpack_require__(57);\n\n// EXTERNAL MODULE: ./app/common/page/common/TopLayoutContainer.js + 2 modules\nvar TopLayoutContainer = __webpack_require__(152);\n\n// CONCATENATED MODULE: ./app/common/page/Features.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\nvar Features_Features = function Features() {\n var bannerAd = [_jsx(BannerAd[\"a\" /* default */], {}, 'banner_ad')];\n return _jsx(MainContainer[\"a\" /* default */], {\n className: 'watch-home',\n pre: bannerAd\n }, void 0, _jsx(TopLayoutContainer[\"a\" /* default */], {}), _jsx('div', {\n className: 'layout-full layout-full--watch'\n }, void 0, _jsx('section', {\n className: 'col-a'\n }, void 0, _jsx(BucketListContainer[\"a\" /* default */], {\n pageType: enums[\"y\" /* PageType */].FEATURES\n }, 'bucket_list_container'))));\n};\n\nFeatures_Features.loadActions = [function (params, query, lang) {\n return Object(page_actions[\"o\" /* createFetchPageAction */])(params.pageName, params, query, lang);\n}, function (params, query, lang) {\n return Object(scheduleModule_actions[\"d\" /* fetchScheduleModule */])(lang);\n}];\n\n/* harmony default export */ var page_Features = (Features_Features);\n// EXTERNAL MODULE: ./app/common/selectors/analyticsSelectors.js\nvar analyticsSelectors = __webpack_require__(54);\n\n// EXTERNAL MODULE: ./app/common/page/search/SearchResultsContainer.js\nvar SearchResultsContainer = __webpack_require__(355);\n\n// EXTERNAL MODULE: ./app/common/search/SearchContainer.js + 3 modules\nvar SearchContainer = __webpack_require__(154);\n\n// CONCATENATED MODULE: ./app/common/page/Search.js\nvar Search__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\n\nvar Search_bannerAd = [Search__jsx(BannerAd[\"a\" /* default */], {}, 'banner_ad')];\n\nvar Search_Search = function Search(_ref) {\n var _ref$params$searchTer = _ref.params.searchTerm,\n searchTerm = _ref$params$searchTer === undefined ? '' : _ref$params$searchTer,\n entitlementsTracking = _ref.entitlementsTracking;\n return Search__jsx(MainContainer[\"a\" /* default */], {\n pre: Search_bannerAd\n }, void 0, Search__jsx('section', {\n className: 'layout-full'\n }, void 0, Search__jsx(SearchContainer[\"a\" /* default */], {\n entitlementsTracking: entitlementsTracking,\n pageType: enums[\"y\" /* PageType */].SEARCH,\n enabled: true\n })), Search__jsx('section', {\n className: 'layout-bc layout-bc--watch'\n }, void 0, Search__jsx(SearchResultsContainer[\"a\" /* default */], {\n searchTerm: searchTerm\n })));\n};\n\nSearch_Search.loadActions = [function (params, query) {\n return Object(ads_actions[\"g\" /* initAdsConfig */])('search', null, {}, query);\n}, function () {\n return Object(page_actions[\"y\" /* setPageInfo */])('search', 'Search', false);\n}];\n\nvar Search_mapStateToProps = function mapStateToProps(state) {\n return {\n entitlementsTracking: Object(analyticsSelectors[\"c\" /* entitlementsTrackingSelector */])(state)\n };\n};\n\n/* harmony default export */ var page_Search = (Object(es[\"b\" /* connect */])(Search_mapStateToProps)(Search_Search));\n// CONCATENATED MODULE: ./app/webapp/page/Sid.js\nvar Sid__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\nvar Sid_Sid = function Sid(_ref) {\n var _ref$params$team = _ref.params.team,\n team = _ref$params$team === undefined ? '' : _ref$params$team,\n apiEnv = _ref.apiEnv;\n return Sid__jsx(MainContainer[\"a\" /* default */], {}, void 0, Sid__jsx('section', {\n className: 'layout-full'\n }, void 0, Sid__jsx(SearchContainer[\"a\" /* default */], {\n apiEnv: apiEnv,\n pageType: enums[\"y\" /* PageType */].SID,\n showFooter: false,\n enabled: true\n })), Sid__jsx('section', {\n className: 'layout-bc layout-bc--watch'\n }, void 0, Sid__jsx(SearchResultsContainer[\"a\" /* default */], {\n searchTerm: team,\n pageType: enums[\"y\" /* PageType */].SID\n })));\n};\n\nSid_Sid.loadActions = [function () {\n return Object(page_actions[\"s\" /* fetchAllCompetitors */])();\n}, function () {\n return Object(page_actions[\"y\" /* setPageInfo */])('sid', 'SID', false);\n}];\n\nvar Sid_mapStateToProps = function mapStateToProps(state) {\n return {\n apiEnv: Object(appSelector[\"c\" /* apiEnvSelector */])(state)\n };\n};\n\n/* harmony default export */ var page_Sid = (Object(es[\"b\" /* connect */])(Sid_mapStateToProps)(Sid_Sid));\n// EXTERNAL MODULE: ./node_modules/hoist-non-react-statics/index.js\nvar hoist_non_react_statics = __webpack_require__(105);\nvar hoist_non_react_statics_default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics);\n\n// CONCATENATED MODULE: ./app/common/refreshable.js\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n/**\n * This HoC allows the WrappedComponent to specify refreshInterval, and refresh callback\n * as static properties of the Component, it can also receive these values as props.\n * It uses lifecycle methods to set up and tear down refresh logic which will execute the\n * \"onRefresh\" callback\n */\n/* harmony default export */ var refreshable = (function (WrappedComponent) {\n var Refreshable = function (_Component) {\n _inherits(Refreshable, _Component);\n\n function Refreshable(props) {\n _classCallCheck(this, Refreshable);\n\n var _this = _possibleConstructorReturn(this, (Refreshable.__proto__ || Object.getPrototypeOf(Refreshable)).call(this, props));\n\n _this.refreshId = null;\n\n _this.interval = WrappedComponent.refreshInterval;\n _this.onRefresh = WrappedComponent.onRefresh;\n return _this;\n }\n\n _createClass(Refreshable, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var _props = this.props,\n _props$interval = _props.interval,\n interval = _props$interval === undefined ? this.interval : _props$interval,\n _props$onRefresh = _props.onRefresh,\n onRefresh = _props$onRefresh === undefined ? this.onRefresh : _props$onRefresh;\n\n\n if (interval) {\n this.refreshId = setInterval(function () {\n if (onRefresh) {\n onRefresh(_this2.props);\n }\n }, interval * 1000);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.refreshId) {\n clearInterval(this.refreshId);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return react_default.a.createElement(WrappedComponent, this.props);\n }\n }]);\n\n return Refreshable;\n }(react[\"Component\"]);\n\n var mapStateToProps = function mapStateToProps(_ref) {\n var lang = _ref.app.lang;\n return {\n lang: lang\n };\n };\n\n return Object(es[\"b\" /* connect */])(mapStateToProps)(hoist_non_react_statics_default()(Refreshable, WrappedComponent));\n});\n// EXTERNAL MODULE: ./app/common/selectors/pageSelector.js\nvar pageSelector = __webpack_require__(13);\n\n// EXTERNAL MODULE: ./app/common/selectors/authenticationSelectors.js\nvar authenticationSelectors = __webpack_require__(10);\n\n// EXTERNAL MODULE: ./app/common/page/buckets/Tile.js + 1 modules\nvar Tile = __webpack_require__(349);\n\n// EXTERNAL MODULE: ./app/common/ads/InContentAd.js\nvar InContentAd = __webpack_require__(150);\n\n// CONCATENATED MODULE: ./app/webapp/drawer/TabPane.js\nvar TabPane__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\nvar placementPrefix = 'playback-page-recommended-';\n\nvar TabPane_TabPane = function TabPane(_ref) {\n var active = _ref.active,\n bucketId = _ref.bucketId,\n contents = _ref.contents,\n name = _ref.name,\n showAds = _ref.showAds,\n tabIndex = _ref.tabIndex;\n\n var ad = showAds ? TabPane__jsx(InContentAd[\"a\" /* default */], {\n exclude: ['m'],\n refreshWhenVisible: true\n }, 'ad_incontent') : null;\n var items = contents.map(function (content) {\n return TabPane__jsx(Tile[\"a\" /* default */], {\n content: content,\n bucketId: bucketId,\n placement: '' + placementPrefix + name,\n bucketName: name\n }, 'tabPane' + tabIndex + ':' + content.id + ':' + content.name);\n });\n if (ad) {\n items.splice(3, 0, ad);\n }\n return TabPane__jsx('div', {\n className: 'tab-pane ' + (active ? 'active' : '')\n }, void 0, TabPane__jsx('div', {\n className: 'collection collection--watch'\n }, void 0, TabPane__jsx('div', {\n className: 'collection_row'\n }, void 0, items)));\n};\n\nTabPane_TabPane.defaultProps = {\n active: false,\n contents: [],\n name: 'unknown',\n showAds: false\n};\n\n/* harmony default export */ var drawer_TabPane = (TabPane_TabPane);\n// CONCATENATED MODULE: ./app/webapp/drawer/TabContainer.js\nvar TabContainer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar TabContainer__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction TabContainer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction TabContainer__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction TabContainer__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\nvar TabContainer_TabContainer = function (_Component) {\n TabContainer__inherits(TabContainer, _Component);\n\n function TabContainer(props) {\n TabContainer__classCallCheck(this, TabContainer);\n\n var _this = TabContainer__possibleConstructorReturn(this, (TabContainer.__proto__ || Object.getPrototypeOf(TabContainer)).call(this, props));\n\n _this.state = { activeTab: 0 };\n _this.onTabSelect = _this.onTabSelect.bind(_this);\n _this.inferSelectedBucket = _this.inferSelectedBucket.bind(_this);\n return _this;\n }\n\n TabContainer__createClass(TabContainer, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.inferSelectedBucket(this.props.buckets);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.props.buckets !== nextProps.buckets) {\n this.inferSelectedBucket(nextProps.buckets);\n }\n }\n }, {\n key: 'onTabSelect',\n value: function onTabSelect(tabIndex) {\n this.setState({ activeTab: tabIndex });\n }\n }, {\n key: 'inferSelectedBucket',\n value: function inferSelectedBucket() {\n var buckets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var index = buckets.map(function (bucket) {\n return bucket.__replaced;\n }).indexOf(true);\n if (index > 0) {\n this.setState({ activeTab: index });\n }\n }\n }, {\n key: 'isLoggedInProvider',\n value: function isLoggedInProvider() {\n var authTypes = this.props.authTypes;\n\n return Array.isArray(authTypes) && authTypes.indexOf('mvpd') !== -1;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var tabControls = [];\n var tabPanes = [];\n var showAds = this.props.isIntl && this.isLoggedInProvider();\n\n this.props.buckets.filter(function (bucket) {\n return bucket.type !== 'hero';\n }).forEach(function (bucket, tabIndex) {\n var active = _this2.state.activeTab === tabIndex;\n var tabControl = TabContainer__jsx('li', {\n onClick: function onClick() {\n return _this2.onTabSelect(tabIndex);\n },\n className: active ? 'active' : ''\n }, 'tabControl-' + bucket.id, TabContainer__jsx('span', {}, void 0, bucket.name));\n\n tabControls.push(tabControl);\n if (active) {\n tabPanes.push(TabContainer__jsx(drawer_TabPane, {\n active: active,\n name: bucket.name,\n bucketId: bucket.id,\n contents: bucket.contents,\n tabIndex: tabIndex,\n showAds: showAds\n }, 'tabPane-' + bucket.id));\n }\n });\n\n return TabContainer__jsx('div', {\n className: 'playback__content'\n }, void 0, TabContainer__jsx('div', {\n className: 'tab-wrap'\n }, void 0, TabContainer__jsx('ul', {\n className: 'tabs alt',\n 'data-behavior': 'tabs_transform'\n }, void 0, tabControls)), TabContainer__jsx('div', {\n className: 'tab-content'\n }, void 0, tabPanes));\n }\n }]);\n\n return TabContainer;\n}(react[\"Component\"]);\n\nTabContainer_TabContainer.defaultProps = {\n buckets: [],\n authTypes: []\n};\n\nvar TabContainer_mapStateToProps = function mapStateToProps(state) {\n var page = Object(pageSelector[\"c\" /* default */])(state) || {};\n\n var _authenticationSelect = Object(authenticationSelectors[\"i\" /* authenticationSelector */])(state),\n _authenticationSelect2 = _authenticationSelect.authTypes,\n authTypes = _authenticationSelect2 === undefined ? [] : _authenticationSelect2;\n\n return {\n buckets: page.buckets,\n isIntl: Object(appSelector[\"u\" /* isIntlSelector */])(state),\n authTypes: authTypes\n };\n};\n\n/* harmony default export */ var drawer_TabContainer = (Object(es[\"b\" /* connect */])(TabContainer_mapStateToProps)(TabContainer_TabContainer));\n// CONCATENATED MODULE: ./app/webapp/drawer/Drawer.js\nvar Drawer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar Drawer_Drawer = function Drawer() {\n return Drawer__jsx('div', {\n className: 'playback__columnB nocontent'\n }, void 0, Drawer__jsx('section', {\n className: 'playback__container'\n }, void 0, Drawer__jsx('input', {\n type: 'checkbox',\n id: 'playback__toggle',\n role: 'button'\n }), Drawer__jsx('label', {\n htmlFor: 'playback__toggle',\n className: 'playback__toggle icon-font-after icon-font-after'\n }), Drawer__jsx(drawer_TabContainer, {})));\n};\n\n/* harmony default export */ var drawer_Drawer = (Drawer_Drawer);\n// EXTERNAL MODULE: ./app/common/PropTypes.js\nvar PropTypes = __webpack_require__(28);\n\n// EXTERNAL MODULE: ./app/lib/auth/isContentLocked.js\nvar isContentLocked = __webpack_require__(220);\n\n// EXTERNAL MODULE: ./app/lib/util/isEmpty.js\nvar isEmpty = __webpack_require__(12);\n\n// EXTERNAL MODULE: ./app/common/selectors/heroSelector.js\nvar heroSelector = __webpack_require__(56);\n\n// EXTERNAL MODULE: ./app/common/selectors/selectedStreamSelector.js\nvar selectedStreamSelector = __webpack_require__(62);\n\n// EXTERNAL MODULE: ./app/common/selectors/playingStreamSelector.js\nvar playingStreamSelector = __webpack_require__(148);\n\n// EXTERNAL MODULE: ./app/webapp/branding/BrandingContainer.js + 5 modules\nvar BrandingContainer = __webpack_require__(356);\n\n// EXTERNAL MODULE: ./app/common/page/hero/ContentMetadataLarge.js\nvar ContentMetadataLarge = __webpack_require__(354);\n\n// EXTERNAL MODULE: ./app/webapp/player/connectPlayer.js\nvar connectPlayer = __webpack_require__(223);\n\n// EXTERNAL MODULE: ./app/webapp/alert/UpcomingAlert.js + 1 modules\nvar UpcomingAlert = __webpack_require__(339);\n\n// EXTERNAL MODULE: ./app/webapp/player/util/index.js + 10 modules\nvar util = __webpack_require__(217);\n\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// CONCATENATED MODULE: ./app/webapp/page/hero/HeroPlaybackPage.js\nvar HeroPlaybackPage__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar HeroPlaybackPage__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction HeroPlaybackPage__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction HeroPlaybackPage__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction HeroPlaybackPage__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n/**\n * This UI component has a player connected to it.\n * Due to the fact that the connectPlayer function expects a component with a \"ref\" to \"playerElement\",\n * the \"alertable\" HOC can not be used to manage the UpcomingAlert's state.\n */\n\nvar HeroPlaybackPage_HeroPlaybackPage = function (_Component) {\n HeroPlaybackPage__inherits(HeroPlaybackPage, _Component);\n\n function HeroPlaybackPage(props) {\n HeroPlaybackPage__classCallCheck(this, HeroPlaybackPage);\n\n var _this = HeroPlaybackPage__possibleConstructorReturn(this, (HeroPlaybackPage.__proto__ || Object.getPrototypeOf(HeroPlaybackPage)).call(this, props));\n\n _this.state = {\n displayAlert: false\n };\n _this.onClose = _this.onClose.bind(_this);\n _this.getAlertEl = _this.getAlertEl.bind(_this);\n return _this;\n }\n\n HeroPlaybackPage__createClass(HeroPlaybackPage, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n if (this.showAlertOnMount()) {\n this.setState({ displayAlert: true });\n }\n }\n }, {\n key: 'onClose',\n value: function onClose() {\n this.setState({ displayAlert: false });\n }\n }, {\n key: 'getAlertEl',\n value: function getAlertEl() {\n var _props = this.props,\n alertContent = _props.alertContent,\n selectedStream = _props.selectedStream,\n playingStream = _props.playingStream,\n messages = _props.messages,\n formatMessage = _props.intl.formatMessage;\n\n var stream = playingStream || selectedStream;\n if (this.state.displayAlert) {\n var moreText = !Object(isEmpty[\"a\" /* default */])(stream) ? formatMessage(messages['schedule.module.alert.moreText'], { name: stream.name }) : '';\n return HeroPlaybackPage__jsx(UpcomingAlert[\"a\" /* default */], {\n animate: 'fade',\n content: alertContent,\n moreText: moreText,\n style: { position: 'absolute', top: '0px', zIndex: 1000050 },\n onClose: this.onClose\n });\n }\n return null;\n }\n }, {\n key: 'showAlertOnMount',\n value: function showAlertOnMount() {\n var alertContent = this.props.alertContent;\n\n if (!Object(isEmpty[\"a\" /* default */])(alertContent)) {\n return true;\n }\n return false;\n }\n }, {\n key: 'render',\n value: function render() {\n return HeroPlaybackPage__jsx('div', {\n className: 'media-wrapper media-wrapper--embed espnplayerwrapper',\n style: Object(util[\"c\" /* getPlayerBackgroundStyle */])(this.props.selectedContent)\n }, void 0, this.getAlertEl(), HeroPlaybackPage__jsx('div', {}, void 0, react_default.a.createElement(\n 'div',\n { ref: 'playerContainer', id: 'watchespn-player-container' },\n '\\xA0'\n )));\n }\n }]);\n\n return HeroPlaybackPage;\n}(react[\"Component\"]);\n\n/* harmony default export */ var hero_HeroPlaybackPage = (Object(connectPlayer[\"a\" /* default */])(HeroPlaybackPage_HeroPlaybackPage));\n\n// EXTERNAL MODULE: ./app/webapp/lib/format/index.js\nvar format = __webpack_require__(151);\n\n// CONCATENATED MODULE: ./app/webapp/page/hero/HeroPlaybackPageContainer.js\nvar HeroPlaybackPageContainer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar formatVideoTitle = function formatVideoTitle(currentContent, currentStream) {\n var title = currentContent.name;\n\n if (currentContent && currentStream) {\n if (currentContent.isEvent) {\n if (currentContent.streams && currentContent.streams.length > 1) {\n if (currentStream.authTypes && currentStream.authTypes.indexOf('direct') !== -1) {\n title = currentContent.name;\n } else {\n title = currentStream.name !== currentContent.name ? currentStream.name : currentContent.name;\n }\n } else {\n // Single event stream\n title = currentContent.name;\n }\n }\n }\n\n return title;\n};\n\nvar HeroPlaybackPageContainer_HeroPlaybackPageContainer = function HeroPlaybackPageContainer(_ref) {\n var alertContent = _ref.alertContent,\n content = _ref.content,\n stream = _ref.stream,\n location = _ref.location,\n placement = _ref.placement,\n bucketId = _ref.bucketId,\n bucketName = _ref.bucketName,\n pageId = _ref.pageId,\n pageName = _ref.pageName,\n userInitiated = _ref.userInitiated,\n showLock = _ref.showLock,\n userLocation = _ref.userLocation,\n isIntl = _ref.isIntl,\n intlDateFormat = _ref.intlDateFormat;\n var description = content.description;\n\n var title = formatVideoTitle(content, stream);\n var streamSubtitle = stream && stream.content && stream.content.subtitle;\n // Use the current stream content and sanitize the text; default to the content subtitle\n var formattedSubtitle = streamSubtitle || Object(format[\"a\" /* contentSubtitle */])(content);\n var subtitle = formattedSubtitle; // for VOD, this will be null and render nothing\n if (formattedSubtitle && description) {\n subtitle = formattedSubtitle + ' - ' + description;\n }\n var bannerAd = isIntl ? HeroPlaybackPageContainer__jsx(BannerAd[\"a\" /* default */], {\n exclude: ['l', 'xl']\n }) : null;\n\n return HeroPlaybackPageContainer__jsx('div', {\n className: 'playback__columnA'\n }, void 0, HeroPlaybackPageContainer__jsx('figure', {\n className: 'playback__media'\n }, void 0, HeroPlaybackPageContainer__jsx(BrandingContainer[\"a\" /* default */], {\n location: location,\n stream: stream\n }), HeroPlaybackPageContainer__jsx(hero_HeroPlaybackPage, {\n alertContent: alertContent,\n disableAuthPrompt: false,\n initialAutoEmbedCountDown: 0,\n location: location,\n playerPlacement: enums[\"B\" /* PlayerPlacement */].PLAYER,\n placement: placement,\n bucketId: bucketId,\n bucketName: bucketName,\n pageId: pageId,\n pageName: pageName,\n userInitiated: userInitiated,\n userLocation: userLocation,\n dateFormat: intlDateFormat\n }), HeroPlaybackPageContainer__jsx(ContentMetadataLarge[\"a\" /* default */], {\n showLock: showLock,\n title: title,\n subtitle: subtitle,\n content: content\n })), bannerAd);\n};\n\nHeroPlaybackPageContainer_HeroPlaybackPageContainer.defaultProps = {\n adobePass: {},\n content: {}\n};\n\nvar HeroPlaybackPageContainer_mapStateToProps = function mapStateToProps(state) {\n var userAuth = Object(authenticationSelectors[\"r\" /* userAuthSelector */])(state);\n var preauthorizedResources = Object(authenticationSelectors[\"o\" /* preauthorizedResourcesSelector */])(state);\n var selectedStream = Object(selectedStreamSelector[\"a\" /* default */])(state);\n var playingStream = Object(playingStreamSelector[\"a\" /* default */])(state);\n var stream = !Object(isEmpty[\"a\" /* default */])(playingStream) ? playingStream : selectedStream;\n // TODO: DTC - use `stream.content` once `content` has `duration` for VOD\n // so that content metadata doesn't change every time when a new content is selected when user is not authed\n var content = /* stream ? stream.content : */Object(heroSelector[\"a\" /* default */])(state);\n return {\n content: content,\n stream: stream,\n isIntl: Object(appSelector[\"u\" /* isIntlSelector */])(state),\n intlDateFormat: Object(appSelector[\"i\" /* dateFormatSelector */])(state),\n userAuth: userAuth,\n userLocation: Object(authenticationSelectors[\"s\" /* userLocationSelector */])(state),\n showLock: Object(isContentLocked[\"a\" /* default */])(content, userAuth, preauthorizedResources)\n };\n};\n\n/* harmony default export */ var hero_HeroPlaybackPageContainer = (Object(es[\"b\" /* connect */])(HeroPlaybackPageContainer_mapStateToProps)(HeroPlaybackPageContainer_HeroPlaybackPageContainer));\n// CONCATENATED MODULE: ./app/webapp/page/Player.js\nvar Player__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\nvar Player_Player = function Player(_ref) {\n var _ref$location = _ref.location,\n location = _ref$location === undefined ? {} : _ref$location,\n isMobile = _ref.isMobile;\n\n // if the player was routed to with an alert, pass it on down\n var _ref2 = location.state || {},\n alertContent = _ref2.alertContent,\n placement = _ref2.placement,\n bucketId = _ref2.bucketId,\n bucketName = _ref2.bucketName,\n pageId = _ref2.pageId,\n pageName = _ref2.pageName,\n userInitiated = _ref2.userInitiated;\n\n // Some styles of the playback page depend on a 'no-touch' parent class. This assumed\n\n\n var mobileClass = isMobile === false ? 'no-touch' : '';\n return Player__jsx('section', {\n id: 'playback',\n className: mobileClass\n }, void 0, Player__jsx(hero_HeroPlaybackPageContainer, {\n alertContent: alertContent,\n location: location,\n placement: placement,\n bucketId: bucketId,\n bucketName: bucketName,\n pageId: pageId,\n pageName: pageName,\n userInitiated: userInitiated\n }), Player__jsx(drawer_Drawer, {}));\n};\n\nPlayer_Player.loadActions = [function (pathParams, query, lang) {\n return Object(page_actions[\"o\" /* createFetchPageAction */])('player', pathParams, query, lang);\n}];\n\nPlayer_Player.refreshInterval = 300; // 5 mins\nPlayer_Player.onRefresh = function (_ref3) {\n var dispatch = _ref3.dispatch;\n\n dispatch(Object(page_actions[\"v\" /* refreshBuckets */])('player'));\n};\n\nvar Player_mapStateToProps = function mapStateToProps(state) {\n return {\n isMobile: state.app.isMobile || false\n };\n};\n\n/* harmony default export */ var page_Player = (Object(es[\"b\" /* connect */])(Player_mapStateToProps)(refreshable(Player_Player)));\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// CONCATENATED MODULE: ./app/common/schedule/SectionHeader.js\nvar SectionHeader__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar SectionHeader_SectionHeader = function SectionHeader(_ref) {\n var title = _ref.title,\n mq = _ref.mq,\n isMobile = _ref.isMobile;\n\n var searchContainerEl = mq !== 'mobile' && !isMobile ? SectionHeader__jsx(SearchContainer[\"a\" /* default */], {}) : null;\n return SectionHeader__jsx('header', {\n className: 'section-header'\n }, void 0, SectionHeader__jsx('h1', {\n className: 'section-header_title'\n }, void 0, title), searchContainerEl);\n};\n\n/* harmony default export */ var schedule_SectionHeader = (SectionHeader_SectionHeader);\n// EXTERNAL MODULE: ./app/common/schedule/FilterGroupContainer.js + 1 modules\nvar FilterGroupContainer = __webpack_require__(357);\n\n// EXTERNAL MODULE: ./app/common/schedule/ScheduleCategoryContainer.js\nvar ScheduleCategoryContainer = __webpack_require__(360);\n\n// EXTERNAL MODULE: ./config/appNames.js\nvar appNames = __webpack_require__(308);\nvar appNames_default = /*#__PURE__*/__webpack_require__.n(appNames);\n\n// EXTERNAL MODULE: ./app/common/selectors/darkThemeSelector.js\nvar darkThemeSelector = __webpack_require__(362);\n\n// CONCATENATED MODULE: ./app/common/page/Schedule.js\nvar Schedule__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Schedule_Schedule = function Schedule(props) {\n var appName = props.appName,\n categories = props.categories,\n channels = props.channels,\n isMobile = props.isMobile,\n location = props.location,\n listings = props.listings,\n loading = props.loading,\n mq = props.mq,\n selectedTab = props.selectedTab,\n userAuth = props.userAuth,\n messages = props.messages,\n formatMessage = props.intl.formatMessage,\n darkTheme = props.darkTheme;\n\n var bannerAd = [Schedule__jsx(BannerAd[\"a\" /* default */], {}, 'banner_ad')];\n var tabClassname = classnames_default()('watch-tab', { loading: loading });\n\n // Make schedule go full width for ESPN App since there is no ad, and remove redundant title\n var colBStyle = {};\n var sectionHeaderTitle = formatMessage(messages['schedule.header']);\n if (appName === appNames_default.a.ESPNAPP) {\n colBStyle = { width: '100%' };\n sectionHeaderTitle = '';\n }\n\n var appearance = darkTheme ? 'dark' : 'light';\n\n return Schedule__jsx(MainContainer[\"a\" /* default */], {\n pre: bannerAd\n }, void 0, Schedule__jsx('section', {\n 'data-appearance': appearance,\n className: 'layout-bc layout-bc--watch'\n }, void 0, Schedule__jsx('section', {\n className: 'col-b',\n style: colBStyle\n }, void 0, Schedule__jsx('article', {\n className: 'watch-schedule'\n }, void 0, Schedule__jsx(schedule_SectionHeader, {\n title: sectionHeaderTitle,\n mq: mq,\n isMobile: isMobile\n }, 'section_header'), Schedule__jsx(FilterGroupContainer[\"a\" /* default */], {\n channels: channels,\n categories: categories,\n location: location\n }), Schedule__jsx('div', {\n className: 'content'\n }, void 0, Schedule__jsx('div', {\n id: 'tabLive',\n className: tabClassname,\n style: { display: 'block' }\n }, void 0, Schedule__jsx(ScheduleCategoryContainer[\"a\" /* default */], {\n listings: listings,\n userAuth: userAuth,\n selectedTab: selectedTab,\n isMobile: isMobile,\n startDateValue: location.query.startDate,\n bucketName: location.query.type || 'live',\n watchRegion: location.query.watchRegion\n })))), Schedule__jsx(InContentAd[\"a\" /* default */], {\n include: ['s'],\n adClassName: 'ad-slot-incontent2',\n refreshWhenVisible: true\n })), Schedule__jsx('section', {\n className: 'col-c'\n }, void 0, Schedule__jsx(InContentAd[\"a\" /* default */], {\n exclude: ['s', 'm']\n }))));\n};\n\nSchedule_Schedule.defaultProps = {\n selectedTab: StatusFilter[\"a\" /* default */].Options.LIVE,\n isMobile: false\n};\n\nSchedule_Schedule.loadActions = [function () {\n return Object(schedule_actions[\"i\" /* fetchCategories */])();\n}, fetchNetworks, function (params, _ref) {\n var _ref$type = _ref.type,\n type = _ref$type === undefined ? StatusFilter[\"a\" /* default */].Options.LIVE : _ref$type;\n return Object(schedule_actions[\"l\" /* setStatusFilter */])(type);\n}, function (params, _ref2) {\n var _ref2$type = _ref2.type,\n type = _ref2$type === undefined ? StatusFilter[\"a\" /* default */].Options.LIVE : _ref2$type,\n categoryId = _ref2.categoryId,\n channel = _ref2.channel,\n startDate = _ref2.startDate,\n endDate = _ref2.endDate;\n return Object(schedule_actions[\"j\" /* fetchSchedule */])({ type: type, categoryId: categoryId, channel: channel, startDate: startDate, endDate: endDate });\n}, function (params, query) {\n return Object(ads_actions[\"g\" /* initAdsConfig */])('schedule', null, {}, query);\n}, function () {\n return Object(page_actions[\"y\" /* setPageInfo */])('schedule', 'Schedule', false);\n}];\n\nvar Schedule_mapStateToProps = function mapStateToProps(state) {\n var app = state.app,\n schedule = state.schedule;\n\n return {\n appName: app.appName,\n categories: schedule.categories || [],\n channels: schedule.channels || [],\n listings: schedule.listings || [],\n userAuth: Object(authenticationSelectors[\"r\" /* userAuthSelector */])(state),\n loading: schedule.loading,\n mq: app.mq,\n selectedTab: schedule.statusFilterValue,\n isMobile: app.isMobile,\n darkTheme: Object(darkThemeSelector[\"a\" /* default */])(state)\n };\n};\n\n/* harmony default export */ var page_Schedule = (Object(es[\"b\" /* connect */])(Schedule_mapStateToProps)(Object(injectIntl[\"a\" /* default */])(Schedule_Schedule)));\n// CONCATENATED MODULE: ./app/webapp/page/ShortStopLive.js\nvar ShortStopLive__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\nvar ShortStopLive_ShortStopLive = function ShortStopLive() {\n return ShortStopLive__jsx(MainContainer[\"a\" /* default */], {\n className: 'watch-home'\n }, void 0, ShortStopLive__jsx(TopLayoutContainer[\"a\" /* default */], {}), ShortStopLive__jsx('div', {\n className: 'layout-full layout-full--watch'\n }, void 0, ShortStopLive__jsx('section', {\n className: 'col-a'\n }, void 0, ShortStopLive__jsx(BucketListContainer[\"a\" /* default */], {\n pageType: enums[\"y\" /* PageType */].HOME\n }))));\n};\n\nShortStopLive_ShortStopLive.loadActions = [function (params, query, lang) {\n return Object(page_actions[\"o\" /* createFetchPageAction */])('shortstoplive', params, query, lang);\n}, function (params, query, lang) {\n return Object(scheduleModule_actions[\"d\" /* fetchScheduleModule */])(lang);\n}];\n\n/* harmony default export */ var page_ShortStopLive = (ShortStopLive_ShortStopLive);\n// EXTERNAL MODULE: ./node_modules/react-helmet/lib/Helmet.js\nvar Helmet = __webpack_require__(30);\nvar Helmet_default = /*#__PURE__*/__webpack_require__.n(Helmet);\n\n// CONCATENATED MODULE: ./app/webapp/page/Activate/Success.js\nvar Success__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar Success_Success = function Success(_ref) {\n var authSystem = _ref.authSystem,\n deviceType = _ref.deviceType;\n return Success__jsx('div', {}, void 0, Success__jsx('header', {\n className: 'dtc-auth__header',\n id: 'page-title'\n }, void 0, Success__jsx('h1', {\n className: 'dtc-auth__header__title'\n }, void 0, 'Success!')), Success__jsx('section', {\n className: 'dtc-auth__section dtc-auth__section--success',\n id: 'enter-code'\n }, void 0, Success__jsx('svg', {\n className: 'dtc-checkmark',\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 52 52'\n }, void 0, Success__jsx('circle', {\n className: 'dtc-checkmark__circle',\n cx: '26',\n cy: '26',\n r: '25',\n fill: 'none'\n }), Success__jsx('path', {\n className: 'dtc-checkmark__check',\n fill: 'none',\n d: 'M14.1 27.2l7.1 7.2 16.7-16.8'\n })), Success__jsx('p', {}, void 0, getSuccessText(authSystem, deviceType))));\n};\n\n/* harmony default export */ var Activate_Success = (Success_Success);\n// CONCATENATED MODULE: ./app/webapp/page/Activate/Error.js\nvar Error__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar Error_Error = function Error() {\n return Error__jsx(\"div\", {}, void 0, Error__jsx(\"header\", {\n className: \"section error\",\n id: \"page-title\"\n }, void 0, Error__jsx(\"h1\", {}, void 0, \"Activation Error\")), Error__jsx(\"section\", {\n className: \"section error\",\n id: \"enter-code\"\n }, void 0, Error__jsx(\"h2\", {}, void 0, \"Your device could not be activated!\"), Error__jsx(\"p\", {}, void 0, \"Please verify the code you entered matches the code on your device and try again.\"), Error__jsx(\"p\", {}, void 0, \"If you continue to receive this message please try generating a new code on the device.\")));\n};\n\n/* harmony default export */ var Activate_Error = (Error_Error);\n// CONCATENATED MODULE: ./app/webapp/page/Activate/Activation.js\nvar Activation__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar Activation__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar Activation__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction Activation__asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction Activation__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Activation__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction Activation__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\nvar Activation_ActivationComponent = function (_Component) {\n Activation__inherits(ActivationComponent, _Component);\n\n function ActivationComponent(props) {\n Activation__classCallCheck(this, ActivationComponent);\n\n var _this = Activation__possibleConstructorReturn(this, (ActivationComponent.__proto__ || Object.getPrototypeOf(ActivationComponent)).call(this, props));\n\n _this.state = {\n isAdobeRegCode: false,\n regCode: _this.props.regCode.toUpperCase(),\n regCodeError: false\n };\n _this.onCodeChange = _this.onCodeChange.bind(_this);\n _this.onCodeKeyUp = _this.onCodeKeyUp.bind(_this);\n _this.onSubmit = _this.onSubmit.bind(_this);\n _this.renderHeading = _this.renderHeading.bind(_this);\n return _this;\n }\n\n Activation__createClass(ActivationComponent, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var regCode = this.state.regCode;\n\n\n if (regCode) {\n this.onSubmit();\n }\n }\n }, {\n key: 'onCodeChange',\n value: function onCodeChange(event) {\n var regCode = event.target.value.toUpperCase();\n this.props.dispatch(regCodeUpdate(regCode));\n this.setState({\n regCode: regCode,\n regCodeError: false\n });\n }\n }, {\n key: 'onCodeKeyUp',\n value: function onCodeKeyUp(event) {\n if (event.which === 13) {\n this.onSubmit();\n }\n }\n }, {\n key: 'onSubmit',\n value: function () {\n var _ref = Activation__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var regCode, _props, adobePassEnv, deviceType, dispatch, submitting, commerceUrlsConfig, query, regCodeError;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n regCode = this.state.regCode;\n _props = this.props, adobePassEnv = _props.adobePassEnv, deviceType = _props.deviceType, dispatch = _props.dispatch, submitting = _props.submitting, commerceUrlsConfig = _props.commerceUrlsConfig, query = _props.query;\n\n if (!submitting) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt('return');\n\n case 4:\n regCodeError = !regCode;\n\n if (!regCodeError) {\n _context.next = 8;\n break;\n }\n\n this.setState({ regCodeError: regCodeError });\n return _context.abrupt('return');\n\n case 8:\n\n dispatch(startSubmit());\n _context.prev = 9;\n\n if (!isAdobeRegCode(regCode)) {\n _context.next = 15;\n break;\n }\n\n _context.next = 13;\n return dispatch(checkAdobeRegCode(regCode, adobePassEnv));\n\n case 13:\n _context.next = 21;\n break;\n\n case 15:\n if (!isOneIdRegCode(regCode)) {\n _context.next = 20;\n break;\n }\n\n _context.next = 18;\n return dispatch(checkOneIdRegCode(deviceType, regCode, commerceUrlsConfig, query));\n\n case 18:\n _context.next = 21;\n break;\n\n case 20:\n dispatch(createInvalidErrorAction(INVALID_MESSAGE));\n\n case 21:\n _context.next = 26;\n break;\n\n case 23:\n _context.prev = 23;\n _context.t0 = _context['catch'](9);\n\n if (oneId[\"a\" /* Error */].CANCEL_BY_USER !== _context.t0) {\n if (oneId[\"a\" /* Error */].UNKNOWN_ERROR === _context.t0) {\n dispatch(createGenericErrorAction(_context.t0));\n } else {\n dispatch(createInvalidErrorAction(_context.t0.message || INVALID_MESSAGE));\n }\n }\n\n case 26:\n dispatch(completeSubmit());\n\n case 27:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[9, 23]]);\n }));\n\n function onSubmit() {\n return _ref.apply(this, arguments);\n }\n\n return onSubmit;\n }()\n }, {\n key: 'renderHeading',\n value: function renderHeading() {\n var activatePageType = this.props.activatePageType;\n\n var text = activatePageType === 'subscribe' ? 'Complete Your Subscription' : 'Activate Device';\n return Activation__jsx('h1', {\n className: 'dtc-auth__header__title'\n }, void 0, text);\n }\n }, {\n key: 'renderErrorMessage',\n value: function renderErrorMessage(hasError) {\n if (!hasError) {\n return null;\n }\n var _props2 = this.props,\n genericError = _props2.genericError,\n invalidError = _props2.invalidError;\n var regCodeError = this.state.regCodeError;\n\n\n if (genericError) {\n return Activation__jsx('div', {\n id: 'generic-error',\n className: 'dtc-form__error'\n }, void 0, Activation__jsx('p', {}, void 0, 'An error occurred. Please try again later.'));\n } else if (!genericError && invalidError) {\n return Activation__jsx('div', {\n id: 'invalid-activation-code',\n className: 'dtc-form__error'\n }, void 0, Activation__jsx('p', {}, void 0, 'Invalid activation code!'));\n } else if (!genericError && regCodeError) {\n return Activation__jsx('div', {\n id: 'no-activation-code',\n className: 'dtc-form__error'\n }, void 0, Activation__jsx('p', {}, void 0, 'Please enter an activation code.'));\n }\n return null;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props3 = this.props,\n genericError = _props3.genericError,\n invalidError = _props3.invalidError,\n activatePageType = _props3.activatePageType;\n var _state = this.state,\n regCode = _state.regCode,\n regCodeError = _state.regCodeError;\n\n\n var errorClassName = '';\n\n var isDisabled = regCode ? '' : 'dtc-btn--disabled';\n var isSubscribeActivation = activatePageType === 'subscribe';\n var hasError = genericError || invalidError || regCodeError;\n if (hasError) {\n errorClassName = 'dtc-form__control--error';\n }\n\n var buttonClasses = classnames_default()({\n 'dtc-btn': !isSubscribeActivation,\n 'dtc-btn--disabled': !regCode,\n 'btn btn-primary': isSubscribeActivation\n });\n\n return Activation__jsx('div', {}, void 0, Activation__jsx('header', {\n className: 'dtc-auth__header',\n id: 'page-title'\n }, void 0, this.renderHeading()), Activation__jsx('section', {\n className: 'dtc-auth__section',\n id: 'enter-code'\n }, void 0, Activation__jsx('h2', {\n className: 'dtc-auth__section__title'\n }, void 0, 'Enter the code displayed on your TV screen.'), react_default.a.createElement('input', {\n className: 'dtc-form__control ' + errorClassName,\n ref: function ref(input) {\n _this2.txtRegCode = input;\n },\n id: 'txtRegCode',\n name: 'txtRegCode',\n type: 'text',\n maxLength: '7',\n placeholder: 'Enter Activation Code',\n value: this.state.regCode,\n onChange: this.onCodeChange,\n onKeyUp: this.onCodeKeyUp\n }), this.renderErrorMessage(hasError)), Activation__jsx('section', {\n className: 'section',\n id: 'authenticate'\n }, void 0, Activation__jsx('button', {\n id: 'cont-btn',\n name: 'submit',\n type: 'submit',\n className: buttonClasses,\n onClick: this.onSubmit,\n disabled: isDisabled\n }, void 0, 'Continue')));\n }\n }]);\n\n return ActivationComponent;\n}(react[\"Component\"]);\n\nActivation_ActivationComponent.defaultProps = {\n providers: [],\n regCode: ''\n};\n\nvar Activation_mapStateToProps = function mapStateToProps(state) {\n var _state$providerDialog = state.providerDialog;\n _state$providerDialog = _state$providerDialog === undefined ? {} : _state$providerDialog;\n var _state$providerDialog2 = _state$providerDialog.providers,\n providers = _state$providerDialog2 === undefined ? [] : _state$providerDialog2,\n _state$activation = state.activation,\n _state$activation$gen = _state$activation.genericError,\n genericError = _state$activation$gen === undefined ? {} : _state$activation$gen,\n invalidError = _state$activation.invalidError,\n submitting = _state$activation.submitting,\n _state$app = state.app,\n app = _state$app === undefined ? {} : _state$app;\n var country = app.country,\n lang = app.lang,\n _app$location = app.location;\n _app$location = _app$location === undefined ? {} : _app$location;\n var _app$location$query = _app$location.query,\n query = _app$location$query === undefined ? {} : _app$location$query,\n _app$bootstrap = app.bootstrap;\n _app$bootstrap = _app$bootstrap === undefined ? {} : _app$bootstrap;\n var _app$bootstrap$bam = _app$bootstrap.bam;\n _app$bootstrap$bam = _app$bootstrap$bam === undefined ? {} : _app$bootstrap$bam;\n var commerceUrls = _app$bootstrap$bam.commerceUrls;\n\n\n return {\n genericError: genericError,\n invalidError: invalidError,\n providers: providers,\n submitting: submitting,\n query: query,\n commerceUrlsConfig: Activation__extends({ urls: commerceUrls }, { lang: lang, country: country })\n };\n};\n\n/* harmony default export */ var Activation = (Object(es[\"b\" /* connect */])(Activation_mapStateToProps)(Activation_ActivationComponent));\n// EXTERNAL MODULE: ./app/webapp/modal/messaging/MessagingContainer.js + 7 modules\nvar MessagingContainer = __webpack_require__(155);\n\n// EXTERNAL MODULE: ./app/common/chooseProvider/ProviderDialog.js + 6 modules\nvar ProviderDialog = __webpack_require__(367);\n\n// EXTERNAL MODULE: ./app/common/selectors/oneIdSelector.js\nvar oneIdSelector = __webpack_require__(27);\n\n// CONCATENATED MODULE: ./app/webapp/page/Activate/index.js\nvar Activate__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar Activate__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction Activate__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Activate__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction Activate__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar shellVersion = config_default.a.shellVersion,\n Activate_secureCdnHost = config_default.a.secureCdnHost;\nvar OneIdJs = oneId[\"b\" /* OneIdJs */];\n\n\nvar HELP_LINK = 'https://es.pn/2X3h2Cu';\nvar HELP_LINK_TARGET = '_blank';\nvar HELP_ADDITIONAL_SUPPORT_LINK = 'https://es.pn/344OwSk';\nvar CUSTOMER_CARE_LINK = 'https://support.espn.com/hc/';\n\nvar Activate_ActivateComponent = function (_Component) {\n Activate__inherits(ActivateComponent, _Component);\n\n function ActivateComponent(props) {\n Activate__classCallCheck(this, ActivateComponent);\n\n var _this = Activate__possibleConstructorReturn(this, (ActivateComponent.__proto__ || Object.getPrototypeOf(ActivateComponent)).call(this, props));\n\n _this.state = {\n isAuthSuccess: false,\n isOptInChecked: false\n };\n _this.renderBrandingLogo = _this.renderBrandingLogo.bind(_this);\n _this.pageName = _this.getPageName();\n return _this;\n }\n\n Activate__createClass(ActivateComponent, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n _props$app$lang = _props.app.lang,\n lang = _props$app$lang === undefined ? '' : _props$app$lang,\n _props$location$query = _props.location.query,\n authSuccess = _props$location$query.authSuccess,\n device = _props$location$query.device,\n deviceType = _props$location$query.deviceType,\n mvpd = _props$location$query.mvpd,\n providers = _props.providers,\n dispatch = _props.dispatch;\n\n\n var trackingDevice = device || deviceType;\n if (authSuccess) {\n var trackingProvider = providers.filter(function (provider) {\n return provider.abbreviation === mvpd;\n })[0];\n Object(omniture[\"i\" /* trackActivateSuccess */])(trackingDevice, trackingProvider);\n } else {\n Object(omniture[\"h\" /* trackActivatePage */])(lang, trackingDevice);\n }\n\n oneId[\"k\" /* on */]('login', dispatch(Object(oneIdActions[\"l\" /* getGuest */])()));\n oneId[\"k\" /* on */]('logout', dispatch(Object(oneIdActions[\"i\" /* clearGuest */])()));\n dispatch(Object(page_actions[\"y\" /* setPageInfo */])(this.pageName, 'Device Activation', false));\n }\n\n /**\n * componentWillReceiveProps has been deprecate since React 16.3.\n * It needs to be replaced with getDerivedStateFromProps if we update\n * to React 16.3+. Currently watch web is using React version 15.4.2.\n * We haven't updated to the newest version since watch web is being redesigned.\n */\n\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _nextProps$location$q = nextProps.location.query;\n _nextProps$location$q = _nextProps$location$q === undefined ? {} : _nextProps$location$q;\n var authSuccess = _nextProps$location$q.authSuccess,\n oneidenv = _nextProps$location$q.oneidenv,\n data = nextProps.oneId.data;\n var dispatch = this.props.dispatch;\n\n\n if (!Object(isEmpty[\"a\" /* default */])(data) && !this.state.isOptInChecked) {\n var optInStatus = getMarkettingOptInStatus(data);\n var shouldUpdateOptIns = optInStatus.shouldUpdateOptIns,\n swid = optInStatus.swid,\n accessToken = optInStatus.accessToken;\n\n if (shouldUpdateOptIns) {\n var oneIdClientUrl = oneidenv === 'staging' ? WEB_STAGE_ONE_ID_API_PATH : WEB_PROD_ONE_ID_API_PATH;\n // dispatch action to update marketing opt-ins\n dispatch(launchLicensePlateOnSuccess(oneIdClientUrl, swid, accessToken));\n }\n this.setState({ isOptInChecked: true });\n }\n\n if (authSuccess && !this.state.isAuthSuccess) {\n this.setState({ isAuthSuccess: true });\n // get guest info that will be needed for launchLicensePlateOnSuccess action\n dispatch(Object(oneIdActions[\"l\" /* getGuest */])());\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var dispatch = this.props.dispatch;\n\n oneId[\"j\" /* off */]('login', dispatch(Object(oneIdActions[\"l\" /* getGuest */])()));\n oneId[\"j\" /* off */]('logout', dispatch(Object(oneIdActions[\"i\" /* clearGuest */])()));\n }\n }, {\n key: 'getPageName',\n value: function getPageName() {\n var _props$location$pathn = this.props.location.pathname,\n pathname = _props$location$pathn === undefined ? 'activate' : _props$location$pathn;\n\n return pathname.substr(pathname.lastIndexOf('/') + 1);\n }\n }, {\n key: 'getStyleAssets',\n value: function getStyleAssets() {\n var pageName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // eslint-disable-line\n var styleList = [{ id: 'font-link', rel: 'stylesheet', href: Activate_secureCdnHost + '/redesign/fonts/base64-benton-woff.css' }, { rel: 'stylesheet', href: Activate_secureCdnHost + '/redesign/' + shellVersion + '/css/secure/shell-desktop.css' }, { rel: 'stylesheet', href: Activate_secureCdnHost + '/redesign/' + shellVersion + '/css/secure/page-shell.css' }, { rel: 'stylesheet', href: Activate_secureCdnHost + '/redesign/' + shellVersion + '/css/secure/watch.css' }, { rel: 'stylesheet', href: Activate_secureCdnHost + '/redesign/' + shellVersion + '/css/secure/watch-provider.css' }];\n\n // Only add OneId styles for /subscribe\n if (pageName === 'subscribe') {\n styleList.push({\n rel: 'stylesheet', href: 'https://static.web.plus.espn.com/disneyid/styles/oneid-web.min.css'\n });\n }\n\n return styleList;\n }\n }, {\n key: 'renderBrandingLogo',\n value: function renderBrandingLogo() {\n var pageName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // eslint-disable-line\n var src = pageName === 'subscribe' ? 'https://secure.espncdn.com/espn360/images/affiliates/svg/ESPN_PLUS/ESPN-PLUS_CLR-POS.svg' : 'https://a.espncdn.com/redesign/assets/img/espn-logo-gray.svg';\n return Activate__jsx('img', {\n src: src,\n alt: '',\n className: 'dtc-auth__logo'\n });\n }\n }, {\n key: 'renderContent',\n value: function renderContent() {\n var _props2 = this.props,\n dispatch = _props2.dispatch,\n _props2$location = _props2.location;\n _props2$location = _props2$location === undefined ? {} : _props2$location;\n var _props2$location$quer = _props2$location.query;\n _props2$location$quer = _props2$location$quer === undefined ? {} : _props2$location$quer;\n var activationCode = _props2$location$quer.activationCode,\n authSuccess = _props2$location$quer.authSuccess,\n authSystem = _props2$location$quer.authSystem,\n chooseProvider = _props2$location$quer.chooseProvider,\n deviceParam = _props2$location$quer.device,\n deviceType = _props2$location$quer.deviceType,\n error = _props2$location$quer.error,\n regCode = _props2$location$quer.regCode,\n adobePassEnv = _props2.adobePassEnv;\n\n var device = deviceParam || deviceType;\n var regOrActivationCode = regCode || activationCode;\n\n var content = null;\n if (error === 'true') {\n content = Activate__jsx(Activate_Error, {});\n } else if (authSuccess === 'true') {\n content = Activate__jsx(Activate_Success, {\n authSystem: authSystem,\n deviceType: device\n });\n } else if (chooseProvider) {\n content = Activate__jsx('section', {\n className: 'watchProvider--modal',\n style: { minHeight: '800px' }\n }, void 0, Activate__jsx(ProviderDialog[\"a\" /* default */], {\n providerSelect: function providerSelect(provider) {\n dispatch(clientlessAuthenticate({\n regCode: regCode,\n mvpd: provider.abbreviation,\n deviceType: deviceType,\n provider: provider,\n baseUrl: window.location.href,\n adobePassEnv: adobePassEnv\n }));\n }\n }));\n } else {\n content = Activate__jsx(Activation, {\n adobePassEnv: adobePassEnv,\n activatePageType: this.pageName,\n deviceType: device,\n regCode: regOrActivationCode\n });\n }\n return content;\n }\n }, {\n key: 'render',\n value: function render() {\n var _props3 = this.props,\n _props3$location = _props3.location;\n _props3$location = _props3$location === undefined ? {} : _props3$location;\n var _props3$location$quer = _props3$location.query;\n _props3$location$quer = _props3$location$quer === undefined ? {} : _props3$location$quer;\n var chooseProvider = _props3$location$quer.chooseProvider,\n authSystem = _props3$location$quer.authSystem,\n oneIdEnv = _props3.oneIdEnv,\n showHelpModule = _props3.showHelpModule;\n\n var containerClass = chooseProvider ? 'dtc-auth__container--providerDialog' : 'dtc-auth__container--activation';\n var content = this.renderContent();\n\n /**\n * Avoid putting the module on the TVE auth success page.\n * if authSystem equals to 'adobepass', that means success page is for TVE screen,\n * then we don't show help module\n */\n var renderHelpModule = showHelpModule && !chooseProvider && authSystem !== 'adobepass';\n\n return Activate__jsx('div', {}, void 0, Activate__jsx(Helmet_default.a, {\n script: [{\n src: OneIdJs[oneIdEnv]\n }],\n link: this.getStyleAssets(this.pageName),\n style: [{\n cssText: '\\n body {\\n background: #edeef0;\\n font: normal 12px/18px helvetica, arial, sans-serif;\\n min-width: 100%;\\n }\\n @media screen and (max-width: 767px) {\\n #content.container {\\n width: 290px;\\n }\\n }\\n '\n }]\n }), Activate__jsx(MessagingContainer[\"a\" /* default */], {}), Activate__jsx('div', {\n id: 'dtc-auth__container',\n className: 'dtc-auth__container ' + containerClass\n }, void 0, this.renderBrandingLogo(this.pageName), Activate__jsx('div', {\n id: 'dtc-auth__content',\n className: 'dtc-auth__content'\n }, void 0, content, renderHelpModule && Activate__jsx('div', {\n className: 'dtc-auth-help'\n }, void 0, Activate__jsx('div', {\n className: 'dtc-auth-help__content'\n }, void 0, Activate__jsx('img', {\n className: 'dtc-auth-help__espn-plus-logo',\n alt: 'ESPN+',\n src: 'https://secure.espncdn.com/espn360/images/affiliates/svg/ESPN_PLUS/ESPN-PLUS_CLR-POS.svg'\n }), Activate__jsx('p', {\n className: 'dtc-auth-help__purchased'\n }, void 0, 'Purchased on phone & need help?'), Activate__jsx('a', {\n href: HELP_LINK,\n target: HELP_LINK_TARGET\n }, void 0, 'Learn how to access your ESPN+ subscription on your TV.'), Activate__jsx('p', {\n className: 'dtc-auth-help__additional-support'\n }, void 0, 'For additional support:', Activate__jsx('a', {\n href: HELP_ADDITIONAL_SUPPORT_LINK,\n target: HELP_LINK_TARGET\n }, void 0, 'ESPN+ FAQ')))), Activate__jsx('div', {\n id: 'footer',\n className: 'dtc-auth__footer'\n }, void 0, Activate__jsx('a', {\n className: 'dtc-auth__footer__link',\n href: 'https://www.espn.com'\n }, void 0, 'ESPN.com'), Activate__jsx('a', {\n className: 'dtc-auth__footer__link',\n href: CUSTOMER_CARE_LINK,\n target: HELP_LINK_TARGET\n }, void 0, 'Customer Care')))));\n }\n }]);\n\n return ActivateComponent;\n}(react[\"Component\"]);\n\nActivate_ActivateComponent.defaultProps = {\n providers: []\n};\n\nActivate_ActivateComponent.loadActions = [appActions[\"D\" /* fetchExternalConfig */], function (_, query) {\n return Object(authenticationActions[\"Z\" /* getProviders */])({ country: 'US', platform: query.device });\n}];\n\nvar Activate_mapStateToProps = function mapStateToProps(state) {\n var _state$providerDialog = state.providerDialog;\n _state$providerDialog = _state$providerDialog === undefined ? {} : _state$providerDialog;\n var _state$providerDialog2 = _state$providerDialog.providers,\n providers = _state$providerDialog2 === undefined ? [] : _state$providerDialog2;\n\n\n return {\n providers: providers,\n app: Object(appSelector[\"j\" /* default */])(state),\n oneIdEnv: Object(appSelector[\"y\" /* oneIdEnvSelector */])(state),\n showHelpModule: Object(appSelector[\"F\" /* showHelpModuleSelector */])(state),\n adobePassEnv: Object(appSelector[\"b\" /* adobePassEnvSelector */])(state),\n oneId: Object(oneIdSelector[\"a\" /* default */])(state)\n };\n};\n\n/* harmony default export */ var Activate = (Object(es[\"b\" /* connect */])(Activate_mapStateToProps)(Activate_ActivateComponent));\n// EXTERNAL MODULE: ./app/lib/format/dateFormat.js\nvar dateFormat = __webpack_require__(33);\n\n// EXTERNAL MODULE: ./app/lib/util/canUseDOM.js\nvar canUseDOM = __webpack_require__(61);\n\n// CONCATENATED MODULE: ./app/webapp/page/Feedback.js\nvar Feedback__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar Feedback__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar Feedback__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction Feedback__defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction Feedback__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Feedback__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction Feedback__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable no-alert */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = {\n container: {\n padding: 20,\n color: '#ddd',\n fontFamily: 'Arial',\n fontSize: 14\n },\n title: {\n display: 'block',\n marginBottom: 10,\n fontWeight: 'bold'\n },\n caption: {\n display: 'block',\n marginBottom: 20\n },\n alignRight: {\n textAlign: 'right'\n },\n requiredInput: {\n background: '#ffffcc',\n width: 290,\n height: 20,\n margin: 0,\n padding: 3,\n border: 'none'\n }\n};\n\nvar Feedback_Feedback = function (_PureComponent) {\n Feedback__inherits(Feedback, _PureComponent);\n\n function Feedback(props) {\n Feedback__classCallCheck(this, Feedback);\n\n var _this = Feedback__possibleConstructorReturn(this, (Feedback.__proto__ || Object.getPrototypeOf(Feedback)).call(this, props));\n\n _this.state = {\n commentType: '',\n email: '',\n commentBody: '',\n platform: '',\n submitted: false\n };\n _this.onFormChange = _this.onFormChange.bind(_this);\n _this.onSubmit = _this.onSubmit.bind(_this);\n return _this;\n }\n\n Feedback__createClass(Feedback, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var dispatch = this.props.dispatch;\n\n dispatch(Object(oneIdActions[\"h\" /* checkSWIDAuthentication */])());\n dispatch(Object(authenticationActions[\"S\" /* createGetLocationFromUserDataAction */])());\n }\n }, {\n key: 'onFormChange',\n value: function onFormChange(event) {\n var state = event.target.getAttribute('data-state');\n this.setState(Feedback__defineProperty({}, state, event.target.value));\n }\n }, {\n key: 'onSubmit',\n value: function onSubmit(event) {\n var _props = this.props,\n messages = _props.messages,\n formatMessage = _props.intl.formatMessage;\n\n var validationError = this.validationError;\n if (validationError) {\n event.preventDefault();\n var message = formatMessage(messages['feedback.error.' + validationError]);\n alert(message);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _state = this.state,\n commentType = _state.commentType,\n email = _state.email,\n commentBody = _state.commentBody,\n platform = _state.platform,\n submitted = _state.submitted;\n var _props2 = this.props,\n _props2$currentLocati = _props2.currentLocation,\n origin = _props2$currentLocati.origin,\n pathname = _props2$currentLocati.pathname,\n search = _props2$currentLocati.search,\n hash = _props2$currentLocati.hash,\n query = _props2$currentLocati.query,\n _props2$swid = _props2.swid,\n swid = _props2$swid === undefined ? '{}' : _props2$swid,\n _props2$userLocation = _props2.userLocation,\n userLocation = _props2$userLocation === undefined ? {} : _props2$userLocation,\n providers = _props2.providers,\n isDomestic = _props2.isDomestic,\n messages = _props2.messages,\n formatMessage = _props2.intl.formatMessage;\n var _userLocation$country = userLocation.country,\n country = _userLocation$country === undefined ? '' : _userLocation$country,\n _userLocation$city = userLocation.city,\n city = _userLocation$city === undefined ? '' : _userLocation$city,\n _userLocation$ip = userLocation.ip,\n ip = _userLocation$ip === undefined ? '' : _userLocation$ip;\n\n var inputs = [];\n if (canUseDOM[\"a\" /* default */]) {\n var date = dateFormat[\"a\" /* default */].getDateTimeString(new Date(), 'dateTime4', 'America/New_York');\n var affIP = 'invalid';\n var channel = 'N/A';\n var userAgent = navigator.userAgent;\n var comment = 'Comment type: ' + commentType + '\\n Email: ' + email + '\\n Date: ' + date + '\\n Feedback source: watchespn\\n JavaScript: on\\n Cookies: ' + (document.cookie.length > 0 ? 'on' : 'off') + '\\n Screen: ' + screen.width + 'x' + screen.height + '\\n IP: ' + ip + '\\n Affiliate ' + affIP + '\\n MVPD/Authentication:\\n Country: ' + country + '\\n City: ' + city + '\\n User agent: ' + userAgent + '\\n Platform: ' + platform + '\\n SWID: ' + swid + '\\n\\n Comment: ' + commentBody;\n\n inputs = [Feedback__jsx('input', {\n type: 'hidden',\n name: 'orgid',\n value: '00D4000000080H6'\n }), Feedback__jsx('input', {\n type: 'hidden',\n name: 'retURL',\n value: '' + origin + pathname + search + (search ? '&' : '?') + 'submitted=true' + hash\n }), Feedback__jsx('input', {\n id: '00N40000001cOWA',\n name: '00N40000001cOWA',\n type: 'hidden',\n value: affIP,\n maxLength: '100'\n }), Feedback__jsx('input', {\n id: '00N40000002GQZZ',\n name: '00N40000002GQZZ',\n type: 'hidden',\n value: channel,\n maxLength: '30'\n }), Feedback__jsx('input', {\n id: '00N40000001cOWK',\n name: '00N40000001cOWK',\n type: 'hidden',\n value: userAgent,\n maxLength: '100'\n }), Feedback__jsx('input', {\n id: '00N40000001Tm8o',\n name: '00N40000001Tm8o',\n type: 'hidden',\n value: 'Desktop WatchESPN'\n }), Feedback__jsx('input', {\n id: '00N40000001thXQ',\n name: '00N40000001thXQ',\n type: 'hidden',\n value: comment\n }), Feedback__jsx('input', {\n id: '00N40000001vpue',\n name: '00N40000001vpue',\n type: 'hidden',\n value: swid\n }), Feedback__jsx('input', {\n id: 'type',\n name: 'type',\n type: 'hidden',\n value: 'Desktop WatchESPN'\n }), Feedback__jsx('input', {\n id: 'subject',\n name: 'subject',\n type: 'hidden',\n value: 'WatchESPN Desktop Feedback'\n })];\n }\n\n var providerOptions = providers.map(function (_ref) {\n var name = _ref.name,\n abbreviation = _ref.abbreviation;\n return Feedback__jsx('option', {\n value: abbreviation\n }, void 0, name);\n });\n providerOptions.unshift(Feedback__jsx('option', {\n value: 'default'\n }, void 0, '----- ' + formatMessage(messages['feedback.provider.default']) + ' -----'));\n return Feedback__jsx('div', {\n style: styles.container\n }, void 0, Feedback__jsx(Helmet_default.a, {\n meta: [{ name: 'robots', content: 'noindex, nofollow' }],\n style: [{\n cssText: '\\n body {\\n margin: 0;\\n padding: 0;\\n background: #000;\\n }\\n '\n }],\n script: isDomestic ? [{ innerHTML: '\\n (function() {\\n function onZopimLoad() {\\n if ($zopim) {\\n $zopim.livechat.window.onShow(function() {\\n $zopim.livechat.window.hide();\\n $zopim.livechat.window.openPopout();\\n });\\n }\\n }\\n\\n window.$zopim || (function(d, s) {\\n var z = $zopim = function(c) {\\n z._.push(c)\\n },\\n $ = z.s = d.createElement(s),\\n e = d.getElementsByTagName(s)[0];\\n z.set = function(o) {\\n z.set._.push(o)\\n };\\n z._ = [];\\n z.set._ = [];\\n $.async = !0;\\n $.setAttribute(\"charset\", \"utf-8\");\\n $.src = \"//v2.zopim.com/?3X1YqOhMC21Mp5TuhBplWWY473rBk06l\";\\n z.t = +new Date;\\n $.type = \"text/javascript\";\\n $.onload = onZopimLoad;\\n e.parentNode.insertBefore($, e)\\n })(document, \"script\");\\n })();\\n ' }] : []\n }), submitted || query.submitted ? Feedback__jsx('div', {}, void 0, Feedback__jsx('span', {\n style: styles.caption\n }, void 0, formatMessage(messages['feedback.thankYou']))) : Feedback__jsx('div', {}, void 0, Feedback__jsx('span', {\n style: styles.title\n }, void 0, formatMessage(messages['feedback.title'])), Feedback__jsx('span', {\n style: styles.caption\n }, void 0, formatMessage(messages['feedback.caption'])), Feedback__jsx('form', {\n name: 'postFeedback',\n action: 'https://www.salesforce.com/servlet/servlet.WebToCase?encoding=UTF-8',\n method: 'post',\n onSubmit: this.onSubmit\n }, void 0, inputs, Feedback__jsx('table', {\n cellPadding: '4',\n cellSpacing: '0'\n }, void 0, Feedback__jsx('tbody', {}, void 0, Feedback__jsx('tr', {}, void 0, Feedback__jsx('td', {\n style: styles.alignRight\n }, void 0, formatMessage(messages['feedback.category']), ':'), Feedback__jsx('td', {}, void 0, react_default.a.createElement(\n 'select',\n {\n ref: function ref(select) {\n _this2.categorySelect = select;\n },\n id: '00N400000034PSb',\n name: '00N400000034PSb',\n size: '1',\n style: styles.requiredInput,\n defaultValue: '',\n 'data-state': 'commentType',\n onChange: this.onFormChange\n },\n Feedback__jsx('option', {\n value: ''\n }, void 0, formatMessage(messages['feedback.category.select'])),\n Feedback__jsx('option', {\n value: '0001'\n }, void 0, formatMessage(messages['feedback.category.userExperience'])),\n Feedback__jsx('option', {\n value: '0002'\n }, void 0, formatMessage(messages['feedback.category.videoPerformance'])),\n Feedback__jsx('option', {\n value: '0003'\n }, void 0, formatMessage(messages['feedback.category.programming'])),\n Feedback__jsx('option', {\n value: '0004'\n }, void 0, formatMessage(messages['feedback.category.other']))\n ))), Feedback__jsx('tr', {}, void 0, Feedback__jsx('td', {\n style: styles.alignRight\n }, void 0, formatMessage(messages['feedback.email']), ':'), Feedback__jsx('td', {}, void 0, react_default.a.createElement('input', {\n ref: function ref(input) {\n _this2.emailInput = input;\n },\n type: 'text',\n style: styles.requiredInput,\n id: 'email',\n name: 'email',\n size: '30',\n maxLength: '40',\n value: email,\n 'data-state': 'email',\n onChange: this.onFormChange\n }))), Feedback__jsx('tr', {}, void 0, Feedback__jsx('td', {\n style: styles.alignRight\n }, void 0, formatMessage(messages['feedback.provider']), ':'), Feedback__jsx('td', {}, void 0, Feedback__jsx('select', {\n id: '00N40000002G61X',\n name: '00N40000002G61X',\n size: '1',\n defaultValue: 'default'\n }, void 0, providerOptions))), Feedback__jsx('tr', {}, void 0, Feedback__jsx('td', {\n style: styles.alignRight\n }, void 0, formatMessage(messages['feedback.platform']), ':'), Feedback__jsx('td', {}, void 0, Feedback__jsx('select', {\n size: '1',\n defaultValue: 'Desktop/laptop',\n 'data-state': 'platform',\n onChange: this.onFormChange\n }, void 0, Feedback__jsx('option', {\n value: 'Desktop/laptop'\n }, void 0, formatMessage(messages['feedback.desktoplaptop'])), Feedback__jsx('option', {\n value: 'iPhone'\n }, void 0, formatMessage(messages['feedback.iphone'])), Feedback__jsx('option', {\n value: 'iPad'\n }, void 0, formatMessage(messages['feedback.ipad'])), Feedback__jsx('option', {\n value: 'Android Phone'\n }, void 0, formatMessage(messages['feedback.androidphone'])), Feedback__jsx('option', {\n value: 'Android Tablet'\n }, void 0, formatMessage(messages['feedback.androidtablet'])), Feedback__jsx('option', {\n value: 'Xbox One'\n }, void 0, formatMessage(messages['feedback.xbox'])), Feedback__jsx('option', {\n value: 'PlayStation'\n }, void 0, formatMessage(messages['feedback.playstation'])), Feedback__jsx('option', {\n value: 'Apple TV'\n }, void 0, formatMessage(messages['feedback.appletv'])), Feedback__jsx('option', {\n value: 'Android TV'\n }, void 0, formatMessage(messages['feedback.androidtv'])), Feedback__jsx('option', {\n value: 'Amazon FireTV'\n }, void 0, formatMessage(messages['feedback.amazonfiretv'])), Feedback__jsx('option', {\n value: 'Chromecast'\n }, void 0, formatMessage(messages['feedback.chromecast'])), Feedback__jsx('option', {\n value: 'Roku'\n }, void 0, formatMessage(messages['feedback.roku']))))), Feedback__jsx('tr', {}, void 0, Feedback__jsx('td', {\n style: Feedback__extends({}, styles.alignRight, { verticalAlign: 'top' })\n }, void 0, formatMessage(messages['feedback.comments']), ':'), Feedback__jsx('td', {}, void 0, react_default.a.createElement('textarea', {\n ref: function ref(input) {\n _this2.commentText = input;\n },\n id: 'description',\n name: 'description',\n style: Feedback__extends({}, styles.requiredInput, { height: 60 }),\n cols: '28',\n rows: '3',\n wrap: 'virtual',\n value: commentBody,\n 'data-state': 'commentBody',\n onChange: this.onFormChange\n }))), Feedback__jsx('tr', {}, void 0, Feedback__jsx('td', {}), Feedback__jsx('td', {}, void 0, Feedback__jsx('input', {\n type: 'submit',\n value: formatMessage(messages['feedback.send'])\n }))))))));\n }\n }, {\n key: 'validationError',\n get: function get() {\n if (!this.categorySelect.value) {\n return 'category';\n }\n if (!/^.+@.+\\..+$/.test(this.emailInput.value)) {\n return 'email';\n }\n if (!this.commentText.value) {\n return 'comments';\n }\n return false;\n }\n }]);\n\n return Feedback;\n}(react[\"PureComponent\"]);\n\nFeedback_Feedback.loadActions = [function () {\n return Object(authenticationActions[\"Z\" /* getProviders */])();\n}, function () {\n return Object(page_actions[\"y\" /* setPageInfo */])('feedback', 'Feedback');\n}];\n\nvar Feedback_mapStateToProps = function mapStateToProps(state) {\n var _state$oneId = state.oneId;\n _state$oneId = _state$oneId === undefined ? {} : _state$oneId;\n var swid = _state$oneId.swid;\n\n var userLocation = Object(authenticationSelectors[\"s\" /* userLocationSelector */])(state);\n var _state$providerDialog = state.providerDialog;\n _state$providerDialog = _state$providerDialog === undefined ? {} : _state$providerDialog;\n var _state$providerDialog2 = _state$providerDialog.providers,\n providers = _state$providerDialog2 === undefined ? [] : _state$providerDialog2;\n\n var currentLocation = Object(appSelector[\"w\" /* locationSelector */])(state);\n var isDomestic = Object(appSelector[\"s\" /* isDomesticSelector */])(state);\n return {\n currentLocation: currentLocation,\n swid: swid,\n userLocation: userLocation,\n providers: providers,\n isDomestic: isDomestic\n };\n};\n\n/* harmony default export */ var page_Feedback = (Object(es[\"b\" /* connect */])(Feedback_mapStateToProps)(Object(injectIntl[\"a\" /* default */])(Feedback_Feedback)));\n// EXTERNAL MODULE: ./node_modules/lodash/uniq.js\nvar uniq = __webpack_require__(94);\nvar uniq_default = /*#__PURE__*/__webpack_require__.n(uniq);\n\n// EXTERNAL MODULE: ./app/webapp/lib/format/contentSubtitle.js\nvar contentSubtitle = __webpack_require__(351);\n\n// CONCATENATED MODULE: ./app/lib/ui/openFeedbackPage.js\nfunction openFeedbackPage() {\n window.open('http://broadband.espn.com/espn360/watchespn/feedback', 'feedback', 'status=no,height=450,width=525,scrollbars=yes');\n}\n// EXTERNAL MODULE: ./app/lib/util/getDeviceTypeFromUA.js\nvar getDeviceTypeFromUA = __webpack_require__(325);\n\n// EXTERNAL MODULE: ./app/lib/util/isSafariBrowser.js\nvar isSafariBrowser = __webpack_require__(326);\n\n// EXTERNAL MODULE: ./app/lib/auth/authStateKnown.js\nvar authStateKnown = __webpack_require__(77);\n\n// EXTERNAL MODULE: ./app/lib/auth/canPlayStream.js\nvar canPlayStream = __webpack_require__(118);\n\n// EXTERNAL MODULE: ./app/lib/auth/streamHasAuthType.js\nvar streamHasAuthType = __webpack_require__(45);\n\n// EXTERNAL MODULE: ./app/lib/auth/streamHasDTCPackage.js\nvar streamHasDTCPackage = __webpack_require__(143);\n\n// EXTERNAL MODULE: ./app/lib/auth/getContentId.js\nvar getContentId = __webpack_require__(60);\n\n// EXTERNAL MODULE: ./app/lib/format/queryString.js\nvar queryString = __webpack_require__(18);\n\n// EXTERNAL MODULE: ./app/lib/format/getMobileGameCastUrlForContent.js\nvar getMobileGameCastUrlForContent = __webpack_require__(296);\n\n// EXTERNAL MODULE: ./app/lib/native-bridge/espnapp.js\nvar espnapp = __webpack_require__(353);\n\n// CONCATENATED MODULE: ./app/webapp/page/Roadblock.js\nvar Roadblock__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar Roadblock__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar Roadblock__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction Roadblock__defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction Roadblock__asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction Roadblock__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Roadblock__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction Roadblock__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Roadblock_OneIdJs = oneId[\"b\" /* OneIdJs */];\nvar Roadblock_shellVersion = config_default.a.shellVersion,\n Roadblock_secureCdnHost = config_default.a.secureCdnHost,\n devStyles = config_default.a.devStyles;\n\n\nvar STYLE_HREF = Roadblock_secureCdnHost + '/redesign/' + Roadblock_shellVersion + '/css';\nif (devStyles) {\n STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nvar appStore = {\n ios: {\n link: 'https://itunes.apple.com/us/app/espn-live-sports-scores/id317469184?mt=8',\n iconHref: Roadblock_secureCdnHost + '/watchespn/images/roadblock/app_store_button.png'\n },\n android: {\n link: 'https://play.google.com/store/apps/details?id=com.espn.score_center&hl=en',\n iconHref: Roadblock_secureCdnHost + '/watchespn/images/roadblock/android_app_store_button.png'\n }\n};\n\nvar classes = {\n container: 'watch__roadblock',\n logo: 'watch__roadblock-logo',\n pageTitle: 'watch__roadblock_page-title',\n roadblockText: 'watch__roadblock-text',\n mainFeature: 'watch__roadblock-main-feature',\n inner: 'watch__roadblock-inner',\n eventName: 'watch__roadblock-event-name',\n eventTitle: 'watch__roadblock-event-title',\n eventMeta: 'watch__roadblock-event-meta',\n main: 'watch__roadblock-main',\n fullSite: 'watch__roadblock-full-site',\n footer: 'watch__roadblock-footer',\n footerA: 'watch__roadblock-footer-a',\n submitButton: 'watch__roadblock-submit-btn',\n windowsphone: 'watch__roadblock-windowsphone'\n};\n\nvar Roadblock_Roadblock = function (_Component) {\n Roadblock__inherits(Roadblock, _Component);\n\n function Roadblock(props) {\n Roadblock__classCallCheck(this, Roadblock);\n\n var _this = Roadblock__possibleConstructorReturn(this, (Roadblock.__proto__ || Object.getPrototypeOf(Roadblock)).call(this, props));\n\n _this.state = {\n initialModal: false\n };\n _this.handleLaunchClick = _this.handleLaunchClick.bind(_this);\n return _this;\n }\n\n Roadblock__createClass(Roadblock, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.setState({\n deviceType: Object(getDeviceTypeFromUA[\"a\" /* default */])(),\n isSafari: Object(isSafariBrowser[\"a\" /* default */])()\n });\n }\n }, {\n key: 'componentDidMount',\n value: function () {\n var _ref = Roadblock__asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var dispatch;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n dispatch = this.props.dispatch;\n _context.next = 3;\n return dispatch(Object(oneIdActions[\"g\" /* checkOneIDAuthentication */])());\n\n case 3:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function componentDidMount() {\n return _ref.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var initialModal = this.state.initialModal;\n\n if (!initialModal) {\n var actionTriggered = this.createDTCPaywallAction(nextProps);\n if (actionTriggered) {\n this.setState({ initialModal: true });\n }\n }\n }\n }, {\n key: 'createDTCPaywallAction',\n value: function createDTCPaywallAction() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var dispatch = props.dispatch,\n hero = props.hero,\n oneIdInitialized = props.oneIdInitialized,\n userAuth = props.userAuth;\n var _hero$streams = hero.streams,\n streams = _hero$streams === undefined ? [] : _hero$streams;\n\n if (oneIdInitialized && (Object(authStateKnown[\"a\" /* default */])(userAuth) || !userAuth.length)) {\n var requiredAuths = uniq_default()(streams.reduce(function (acc, _ref2) {\n var authTypes = _ref2.authTypes;\n return acc.concat(authTypes);\n }, []));\n if (requiredAuths.every(function (authType) {\n return authType === enums[\"e\" /* AuthTypes */].BAM;\n })) {\n // DTC-only content\n var stream = streams[0];\n if (!Object(canPlayStream[\"a\" /* default */])(stream, userAuth, false)) {\n dispatch(Object(authenticationActions[\"M\" /* createDTCPaywallAction */])({\n containerId: app_constants[\"a\" /* BAM_PAYWALL_IFRAME_ID */],\n content: hero,\n stream: stream\n }));\n return true;\n }\n }\n }\n return false;\n }\n }, {\n key: 'handleLaunchClick',\n value: function handleLaunchClick() {\n var actionTriggered = this.createDTCPaywallAction();\n if (actionTriggered) {\n return;\n }\n\n var _props = this.props,\n hero = _props.hero,\n locationBeforeTransitions = _props.routing.locationBeforeTransitions;\n\n var _ref3 = locationBeforeTransitions || {},\n _ref3$query = _ref3.query,\n query = _ref3$query === undefined ? {} : _ref3$query;\n\n var imageHref = hero.imageHref,\n name = hero.name,\n _hero$streams2 = hero.streams,\n streams = _hero$streams2 === undefined ? [] : _hero$streams2,\n status = hero.status;\n\n var contentId = Object(getContentId[\"a\" /* default */])(hero);\n\n var _ref4 = streams[0] || {},\n _ref4$source = _ref4.source;\n\n _ref4$source = _ref4$source === undefined ? {} : _ref4$source;\n var sourceId = _ref4$source.id,\n sourceType = _ref4$source.type,\n sourceName = _ref4$source.name;\n var isSafari = this.state.isSafari;\n\n var isBranchLinkInParams = false;\n var updateAppLink = false;\n var deviceType = this.state.deviceType;\n\n var params = {\n imageHref: imageHref,\n name: name,\n network: sourceName\n };\n if (query.deviceType) {\n deviceType = query.deviceType;\n }\n // See: https://espnjira.disney.com/browse/WEWEB-2071\n if (query._branch_match_id && query._branch_match_id !== '') {\n isBranchLinkInParams = true;\n }\n // See: https://espnjira.disney.com/browse/WEWEB-2500\n if (deviceType === 'android' && query['om-navmethod'] && query['om-navmethod'] === 'espn:ufc:gamehq') {\n updateAppLink = true;\n }\n\n // https://confluence.espn.com/pages/viewpage.action?title=ESPN+App+Deep+Linking&spaceKey=CD#ESPNAppDeepLinking-PlayWatchESPNVideos(LiveandReplay)\n if (sourceId && status !== enums[\"n\" /* ContentStatus */].REPLAY && sourceType === enums[\"E\" /* SourceType */].LINEAR) {\n // linear content (that is not instant turnaround) - play by channel so stale content doesn't error\n params = Roadblock__extends({}, params, {\n playChannel: sourceId.toLowerCase()\n });\n } else if (contentId.eventId) {\n params = Roadblock__extends({}, params, {\n playGameID: contentId.eventId\n });\n } else {\n // replays - play by cmsId\n params = Roadblock__extends({}, params, {\n playID: contentId.id\n });\n }\n\n var isIosDevice = typeof deviceType === 'string' && deviceType === 'ios';\n var shouldUseProtocolOnly = isIosDevice && isSafari && isBranchLinkInParams;\n var url = Object(espnapp[\"a\" /* getAppLink */])('showWatchStream', params, shouldUseProtocolOnly);\n if (updateAppLink) {\n url = 'android-app://com.espn.score_center/' + url;\n }\n\n window.location = url;\n }\n }, {\n key: 'renderRoadblockLinks',\n value: function renderRoadblockLinks() {\n var deviceType = this.state.deviceType;\n var locationBeforeTransitions = this.props.routing.locationBeforeTransitions;\n\n var _ref5 = locationBeforeTransitions || {},\n _ref5$query = _ref5.query,\n query = _ref5$query === undefined ? {} : _ref5$query;\n\n if (query.deviceType) {\n // override default detection\n deviceType = query.deviceType;\n }\n\n if (!deviceType) {\n return null;\n }\n\n var storeProps = appStore[deviceType];\n return storeProps ? Roadblock__jsx('div', {}, void 0, Roadblock__jsx('span', {\n className: 'strong ' + classes.roadblockText\n }, void 0, 'Download the ESPN App'), Roadblock__jsx('div', {}, void 0, Roadblock__jsx('p', {\n className: deviceType === 'windowsphone' ? classes.windowsphone : ''\n }, void 0, Roadblock__jsx('a', {\n className: 'storeLink',\n href: storeProps.link\n }, void 0, Roadblock__jsx('img', {\n width: '150',\n src: storeProps.iconHref,\n alt: 'App Store Badge'\n })))), Roadblock__jsx('span', {\n className: classes.roadblockText\n }, void 0, 'Already have the ESPN App?'), Roadblock__jsx('p', {}, void 0, Roadblock__jsx('a', {\n className: 'blue ' + classes.submitButton,\n onClick: this.handleLaunchClick\n }, void 0, 'Launch App'))) : Roadblock__jsx('span', {\n className: classes.roadblockText\n }, void 0, 'The ESPN App is not available on your device.');\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n hero = _props2.hero,\n _props2$playbackMeta = _props2.playbackMeta;\n _props2$playbackMeta = _props2$playbackMeta === undefined ? {} : _props2$playbackMeta;\n var tracking = _props2$playbackMeta.tracking,\n locationBeforeTransitions = _props2.routing.locationBeforeTransitions,\n oneIdEnvArg = _props2.oneIdEnv;\n\n var _ref6 = locationBeforeTransitions || {},\n _ref6$query = _ref6.query,\n query = _ref6$query === undefined ? {} : _ref6$query;\n\n var imageHref = hero.imageHref,\n name = hero.name,\n _hero$streams3 = hero.streams,\n streams = _hero$streams3 === undefined ? [] : _hero$streams3;\n\n var stream = streams[0] || {};\n var formattedSubtitle = Object(contentSubtitle[\"a\" /* default */])(hero);\n var qs = Object(queryString[\"a\" /* default */])(Roadblock__extends({}, query, Roadblock__defineProperty({}, enums[\"t\" /* Flags */].FROM_ROADBLOCK, true)));\n var fullSiteLink = '/watch' + qs;\n var mobileGameCastUrl = Object(getMobileGameCastUrlForContent[\"a\" /* default */])(hero, tracking);\n var oneIdEnv = oneIdEnvArg;\n if (query[enums[\"t\" /* Flags */].DISNEY_ENV] === 'stg') {\n oneIdEnv = enums[\"x\" /* OneIdEnv */].STAGING;\n }\n\n var logo = Roadblock__jsx('img', {\n alt: 'ESPN',\n width: '200',\n src: Roadblock_secureCdnHost + '/watchespn/images/roadblock/espn@2x.png'\n });\n if (Object(streamHasAuthType[\"a\" /* default */])(stream, enums[\"e\" /* AuthTypes */].BAM)) {\n if (Object(streamHasDTCPackage[\"a\" /* default */])(stream, enums[\"s\" /* Entitlements */].ESPN_PLUS_MLB)) {\n logo = Roadblock__jsx('img', {\n alt: 'MLB.TV',\n width: '250',\n height: '18',\n src: Roadblock_secureCdnHost + '/watchespn/images/roadblock/mlb@2x.png'\n });\n } else if (Object(streamHasDTCPackage[\"a\" /* default */])(stream, enums[\"s\" /* Entitlements */].ESPN_PLUS_NHL)) {\n logo = Roadblock__jsx('img', {\n alt: 'NHL.TV',\n width: '250',\n src: Roadblock_secureCdnHost + '/watchespn/images/roadblock/nhl@2x.png'\n });\n } else {\n logo = Roadblock__jsx('img', {\n alt: 'ESPN+',\n width: '200',\n src: Roadblock_secureCdnHost + '/watchespn/images/roadblock/espn-plus@2x.png'\n });\n }\n }\n\n return Roadblock__jsx('div', {\n className: classes.container\n }, void 0, Roadblock__jsx(Helmet_default.a, {\n meta: [{\n name: 'viewport',\n content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'\n }],\n link: [{ rel: 'stylesheet', href: STYLE_HREF + '/page-shell.css' }, { rel: 'stylesheet', href: STYLE_HREF + '/watch-provider.css' }],\n style: [{\n cssText: '\\n body {\\n margin: 0;\\n background: #fff !important;\\n font: normal 12px/18px BentonSans, helvetica, arial, sans-serif;\\n min-width: 100%;\\n }\\n #' + app_constants[\"a\" /* BAM_PAYWALL_IFRAME_ID */] + ' iframe {\\n width: 100%;\\n height: 100%;\\n border: none;\\n }\\n .' + classes.eventName + ' {\\n padding-left: 5px;\\n }\\n .' + classes.logo + ' {\\n text-align: center;\\n }\\n .' + classes.logo + ' img { margin: 20px auto; }\\n .' + classes.pageTitle + ' {\\n margin-bottom: 20px;\\n }\\n .' + classes.roadblockText + ' {\\n display: block;\\n color: #262626 !important;\\n font-size: 16px;\\n }\\n .' + classes.container + ' {\\n width: 295px !important;\\n background: #fff !important;\\n margin: 0 auto;\\n border-radius: 12px;\\n text-align: center;\\n -moz-border-radius: 0 !important;\\n -webkit-border-radius: 0 !important;\\n box-shadow: none !important;\\n -webkit-box-shadow: none !important;\\n }\\n .' + classes.submitButton + ' {\\n display: block;\\n position: relative;\\n width: 80% !important;\\n margin: 0 auto;\\n background: #2d66eb;\\n border: 1px solid white;\\n border-radius: 40px;\\n box-shadow: none;\\n line-height: 45px;\\n color: #eee;\\n cursor: pointer;\\n text-align: center;\\n text-transform: none;\\n text-shadow: none;\\n text-decoration: none;\\n font-family: BentonSansMedium, helvetica, sans-serif;\\n font-size: 18px;\\n font-weight: 600;\\n height: 45px;\\n }\\n\\n .' + classes.submitButton + '.blue {\\n border: 1px solid #2D66EB !important;\\n background: #fff;\\n color: #2D66EB;\\n }\\n .' + classes.submitButton + ':hover {text-decoration: none !important;}\\n\\n .' + classes.main + ' a {\\n cursor: pointer;\\n }\\n .' + classes.main + ' a:hover {text-decoration: underline;}\\n\\n .' + classes.main + ' p {\\n text-align: center;\\n margin: 10px 0 25px 0;\\n }\\n .' + classes.main + ' .' + classes.fullSite + ' {\\n color: #2d66eb;\\n font-size: 14px;\\n font-family: BentonSans, helvetica, arial, sans-serif;\\n text-decoration: none;\\n }\\n .' + classes.footer + ' {\\n display: flex;\\n justify-content: space-between;\\n }\\n\\n .' + classes.footer + ' a {\\n color: #0066CC !important;\\n flex-grow: 1;\\n padding: 4px 0;\\n }\\n\\n .' + classes.footer + ' a:first-child{\\n font-weight: 600;\\n }\\n\\n .' + classes.footer + ' a + a{\\n border-left: 1px #dcdddf solid;\\n }\\n\\n .' + classes.mainFeature + ' {\\n position: relative;\\n overflow: visible;\\n width: 100%;\\n left: 0;\\n margin-bottom: 30px;\\n }\\n\\n .' + classes.mainFeature + ' figure {\\n border: none !important;\\n }\\n\\n .' + classes.mainFeature + ' figure img{\\n max-width: 100%;\\n border-radius: 10px;\\n box-shadow: 0 4px 24px rgba(0,0,0,0.16);\\n margin-bottom: 12px;\\n overflow: hidden;\\n }\\n\\n .' + classes.mainFeature + ' figure figcaption {\\n bottom: auto;\\n display: block;\\n font-size: 12px;\\n left: auto;\\n line-height: 1.2;\\n position: relative;\\n text-align: left;\\n }\\n\\n .' + classes.eventTitle + ' {\\n color: #151617;\\n font-weight: 600;\\n }\\n .' + classes.eventMeta + ' {\\n border-bottom: 1px #DCDDDF dotted;\\n color: #a5a6a7;\\n margin-top: 4px;\\n padding-bottom: 12px;\\n }\\n .' + classes.eventMeta + ' span + span{\\n margin-left: 4px;\\n }\\n .' + classes.eventMeta + ' span + span:before{\\n color: #cbccce;\\n content: \\'\\u2022\\';\\n margin-right: 4px;\\n }\\n\\n\\n .' + classes.inner + ' {\\n width: 100%;\\n display: table;\\n text-align: left;\\n background: rgba(0, 0, 0, 0.6) no-repeat;\\n min-height: 25px;\\n }\\n .' + classes.inner + ' span {\\n display: table-cell;\\n vertical-align: middle;\\n margin-left: 10px;\\n padding: 10px;\\n font-size: 1.2em;\\n line-height: 1.2em;\\n color: #fff;\\n }\\n .' + classes.windowsphone + ' {\\n width: 200px;\\n height: 63px;\\n margin: 10px auto 25px auto !important;\\n padding-top: 10px;\\n border: solid 1pt #515151;\\n background: #000;\\n }\\n\\n .strong{\\n font-weight: 600;\\n }\\n\\n .lightbox-container .lightbox-watch.watch-provider-modal.lightbox-paywall .btn-close {\\n padding: 0;\\n }\\n .lightbox-container .lightbox-watch.watch-provider-modal.lightbox-paywall .btn-close:before {\\n color: #fff;\\n line-height: 36px;\\n }\\n '\n }],\n script: [{\n src: Roadblock_OneIdJs[oneIdEnv]\n }]\n }), Roadblock__jsx('div', {\n className: classes.logo\n }, void 0, logo), Roadblock__jsx('header', {\n className: 'strong ' + classes.roadblockText + ' ' + classes.pageTitle\n }, void 0, 'To stream this event on your phone,', Roadblock__jsx('br', {}), 'you need the ESPN App.'), Roadblock__jsx('section', {\n className: classes.mainFeature\n }, void 0, Roadblock__jsx('figure', {}, void 0, Roadblock__jsx('img', {\n src: imageHref,\n alt: name\n }), Roadblock__jsx('figcaption', {}, void 0, Roadblock__jsx('div', {\n className: classes.eventTitle\n }, void 0, name), Roadblock__jsx('div', {\n className: classes.eventMeta\n }, void 0, Roadblock__jsx('span', {}, void 0, formattedSubtitle))))), Roadblock__jsx('section', {\n className: 'section ' + classes.main\n }, void 0, this.renderRoadblockLinks(), mobileGameCastUrl ? Roadblock__jsx('p', {}, void 0, Roadblock__jsx('a', {\n className: classes.fullSite,\n href: mobileGameCastUrl\n }, void 0, 'Follow on GameCast \\xBB')) : null, Roadblock__jsx('p', {\n style: { display: 'none' }\n }, void 0, Roadblock__jsx('a', {\n className: classes.fullSite,\n href: fullSiteLink\n }, void 0, 'View Full Site'))), Roadblock__jsx('div', {\n className: classes.footer\n }, void 0, Roadblock__jsx('a', {\n href: 'http://www.espn.com'\n }, void 0, 'ESPN.com'), Roadblock__jsx('a', {\n className: classes.footerA,\n href: '/watch/schedule'\n }, void 0, 'Schedule'), Roadblock__jsx('a', {\n className: classes.footerA,\n href: '//support.espn.com/hc/en-us/categories/115000435812-Streaming-on-ESPN',\n rel: 'nofollow'\n }, void 0, 'FAQs'), Roadblock__jsx('a', {\n className: classes.footerA,\n onClick: openFeedbackPage\n }, void 0, 'Customer Care')), Roadblock__jsx(MessagingContainer[\"a\" /* default */], {}));\n }\n }]);\n\n return Roadblock;\n}(react[\"Component\"]);\n\nRoadblock_Roadblock.loadActions = [appActions[\"D\" /* fetchExternalConfig */], function (pathParams, query) {\n return function (dispatch) {\n var id = 'roadblock';\n var name = 'Roadblock';\n dispatch(Object(authenticationActions[\"K\" /* createCompleteCheckIpAuthenticationAction */])(false));\n dispatch(Object(authenticationActions[\"I\" /* createCompleteCheckAuthenticationAction */])(false));\n return dispatch(Object(page_actions[\"A\" /* singleEventPage */])(id, name, query));\n };\n}];\n\nvar Roadblock_mapStateToProps = function mapStateToProps(state) {\n return {\n hero: Object(heroSelector[\"a\" /* default */])(state),\n playbackMeta: Object(appSelector[\"A\" /* playbackMetaSelector */])(state),\n routing: Object(routingSelector[\"a\" /* default */])(state),\n userAuth: Object(authenticationSelectors[\"r\" /* userAuthSelector */])(state),\n oneIdEnv: Object(appSelector[\"y\" /* oneIdEnvSelector */])(state),\n oneIdInitialized: Object(oneIdSelector[\"e\" /* oneIdInitializedSelector */])(state)\n };\n};\n\n/* harmony default export */ var page_Roadblock = (Object(es[\"b\" /* connect */])(Roadblock_mapStateToProps)(Roadblock_Roadblock));\n// CONCATENATED MODULE: ./app/webapp/page/UnsupportedPage.js\nvar UnsupportedPage__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar UnsupportedPage__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction UnsupportedPage__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction UnsupportedPage__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction UnsupportedPage__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\nvar UnsupportedPage_shellVersion = config_default.a.shellVersion,\n UnsupportedPage_secureCdnHost = config_default.a.secureCdnHost,\n UnsupportedPage_devStyles = config_default.a.devStyles;\n\n\nvar UnsupportedPage_STYLE_HREF = UnsupportedPage_secureCdnHost + '/redesign/' + UnsupportedPage_shellVersion + '/css';\nif (UnsupportedPage_devStyles) {\n UnsupportedPage_STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nvar UnsupportedPage_classes = {\n container: 'watch__roadblock',\n logo: 'watch__roadblock-logo',\n pageTitle: 'watch__roadblock_page-title',\n roadblockText: 'watch__roadblock-text',\n main: 'watch__roadblock-main',\n fullSite: 'watch__roadblock-full-site',\n footer: 'watch__roadblock-footer',\n footerA: 'watch__roadblock-footer-a'\n};\n\nvar UnsupportedPage_UnsupportedPage = function (_PureComponent) {\n UnsupportedPage__inherits(UnsupportedPage, _PureComponent);\n\n function UnsupportedPage(props) {\n UnsupportedPage__classCallCheck(this, UnsupportedPage);\n\n var _this = UnsupportedPage__possibleConstructorReturn(this, (UnsupportedPage.__proto__ || Object.getPrototypeOf(UnsupportedPage)).call(this, props));\n\n _this.state = {};\n return _this;\n }\n\n UnsupportedPage__createClass(UnsupportedPage, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n messages = _props.messages,\n formatMessage = _props.intl.formatMessage;\n\n\n var logo = UnsupportedPage__jsx('img', {\n alt: 'ESPN',\n width: '200',\n src: UnsupportedPage_secureCdnHost + '/watchespn/images/roadblock/espn@2x.png'\n });\n\n return UnsupportedPage__jsx('div', {\n className: UnsupportedPage_classes.container\n }, void 0, UnsupportedPage__jsx(Helmet_default.a, {\n meta: [{\n name: 'viewport',\n content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'\n }],\n link: [{ rel: 'stylesheet', href: UnsupportedPage_STYLE_HREF + '/page-shell.css' }, { rel: 'stylesheet', href: UnsupportedPage_STYLE_HREF + '/watch-provider.css' }],\n style: [{\n cssText: '\\n body {\\n margin: 0;\\n background: #fff !important;\\n font: normal 12px/18px BentonSans, helvetica, arial, sans-serif;\\n min-width: 100%;\\n }\\n .' + UnsupportedPage_classes.logo + ' {\\n text-align: center;\\n }\\n .' + UnsupportedPage_classes.logo + ' img { margin: 20px auto; }\\n .' + UnsupportedPage_classes.pageTitle + ' {\\n margin-bottom: 20px;\\n }\\n .' + UnsupportedPage_classes.roadblockText + ' {\\n display: block;\\n color: #262626 !important;\\n font-size: 16px;\\n }\\n .' + UnsupportedPage_classes.container + ' {\\n width: 295px !important;\\n background: #fff !important;\\n margin: 0 auto;\\n border-radius: 12px;\\n text-align: center;\\n -moz-border-radius: 0 !important;\\n -webkit-border-radius: 0 !important;\\n box-shadow: none !important;\\n -webkit-box-shadow: none !important;\\n }\\n .' + UnsupportedPage_classes.main + ' a {\\n cursor: pointer;\\n }\\n .' + UnsupportedPage_classes.main + ' a:hover {text-decoration: underline;}\\n\\n .' + UnsupportedPage_classes.main + ' p {\\n text-align: center;\\n margin: 10px 0 25px 0;\\n }\\n .' + UnsupportedPage_classes.main + ' .' + UnsupportedPage_classes.fullSite + ' {\\n color: #2d66eb;\\n font-size: 14px;\\n font-family: BentonSans, helvetica, arial, sans-serif;\\n text-decoration: none;\\n }\\n .' + UnsupportedPage_classes.footer + ' {\\n display: flex;\\n justify-content: space-between;\\n }\\n .' + UnsupportedPage_classes.footer + ' a {\\n color: #0066CC !important;\\n flex-grow: 1;\\n padding: 4px 0;\\n }\\n .' + UnsupportedPage_classes.footer + ' a:first-child{\\n font-weight: 600;\\n }\\n .' + UnsupportedPage_classes.footer + ' a + a{\\n border-left: 1px #dcdddf solid;\\n }\\n .strong{\\n font-weight: 600;\\n }\\n '\n }]\n }), UnsupportedPage__jsx('div', {\n className: UnsupportedPage_classes.logo\n }, void 0, logo), UnsupportedPage__jsx('header', {\n className: 'strong ' + UnsupportedPage_classes.roadblockText + ' ' + UnsupportedPage_classes.pageTitle\n }, void 0, formatMessage(messages['unsupported.error.message'])), UnsupportedPage__jsx('div', {\n className: UnsupportedPage_classes.footer\n }, void 0, UnsupportedPage__jsx('a', {\n href: 'http://www.espn.com'\n }, void 0, 'ESPN.com'), UnsupportedPage__jsx('a', {\n className: UnsupportedPage_classes.footerA,\n href: '/watch/schedule'\n }, void 0, 'Schedule'), UnsupportedPage__jsx('a', {\n className: UnsupportedPage_classes.footerA,\n href: '//support.espn.com/en_US/WatchESPN',\n rel: 'nofollow'\n }, void 0, 'FAQs'), UnsupportedPage__jsx('a', {\n className: UnsupportedPage_classes.footerA,\n onClick: openFeedbackPage\n }, void 0, 'Customer Care')));\n }\n }]);\n\n return UnsupportedPage;\n}(react[\"PureComponent\"]);\n\nUnsupportedPage_UnsupportedPage.loadActions = [function () {\n return Object(page_actions[\"y\" /* setPageInfo */])('unsupported', 'Unsupported');\n}];\n\n/* harmony default export */ var page_UnsupportedPage = (Object(injectIntl[\"a\" /* default */])(UnsupportedPage_UnsupportedPage));\n// EXTERNAL MODULE: ./node_modules/reselect/lib/index.js\nvar reselect_lib = __webpack_require__(9);\nvar reselect_lib_default = /*#__PURE__*/__webpack_require__.n(reselect_lib);\n\n// CONCATENATED MODULE: ./app/common/selectors/carouselSelector.js\n\n\n\n/* harmony default export */ var carouselSelector = (Object(reselect_lib[\"createSelector\"])(pageSelector[\"c\" /* default */], function (_ref) {\n var _ref$carouselBucket = _ref.carouselBucket,\n carouselBucket = _ref$carouselBucket === undefined ? {} : _ref$carouselBucket;\n return carouselBucket;\n}));\n// EXTERNAL MODULE: ./app/common/selectors/flagsSelector.js\nvar flagsSelector = __webpack_require__(47);\n\n// EXTERNAL MODULE: ./node_modules/react-slick/lib/index.js\nvar react_slick_lib = __webpack_require__(765);\nvar react_slick_lib_default = /*#__PURE__*/__webpack_require__.n(react_slick_lib);\n\n// CONCATENATED MODULE: ./app/common/page/carousel/NextNavButton.js\nvar NextNavButton__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar NextNavButton = function NextNavButton(_ref) {\n var key = _ref.key,\n style = _ref.style,\n onClick = _ref.onClick;\n return NextNavButton__jsx(\"a\", {\n className: \"dtc-watch__carouselNext icon-font-before icon-caret-right-solid-before\",\n style: style,\n onClick: onClick\n }, key);\n};\n\n/* harmony default export */ var carousel_NextNavButton = (NextNavButton);\n// CONCATENATED MODULE: ./app/common/page/carousel/PrevNavButton.js\nvar PrevNavButton__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar PrevNavButton = function PrevNavButton(_ref) {\n var key = _ref.key,\n style = _ref.style,\n onClick = _ref.onClick;\n return PrevNavButton__jsx(\"a\", {\n className: \"dtc-watch__carouselPrev icon-font-before icon-caret-left-solid-before\",\n style: style,\n onClick: onClick\n }, key);\n};\n\n/* harmony default export */ var carousel_PrevNavButton = (PrevNavButton);\n// CONCATENATED MODULE: ./app/common/page/carousel/Carousel.js\nvar Carousel__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar Carousel__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction Carousel__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Carousel__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction Carousel__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\nvar Carousel_Carousel = function (_PureComponent) {\n Carousel__inherits(Carousel, _PureComponent);\n\n function Carousel(props) {\n Carousel__classCallCheck(this, Carousel);\n\n var _this = Carousel__possibleConstructorReturn(this, (Carousel.__proto__ || Object.getPrototypeOf(Carousel)).call(this, props));\n\n _this.state = {\n initialized: false\n };\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n Carousel__createClass(Carousel, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setInitialized();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.setInitialized();\n }\n }, {\n key: 'onClick',\n value: function onClick(event) {\n if (event) {\n event.preventDefault();\n }\n var _props = this.props,\n contents = _props.contents,\n onClick = _props.onClick;\n\n var contentId = event.currentTarget.getAttribute('data-id');\n var content = contents.filter(function (_ref) {\n var id = _ref.id;\n return id === contentId;\n })[0];\n if (onClick) {\n onClick(content);\n }\n }\n }, {\n key: 'setInitialized',\n value: function setInitialized() {\n if (!this.sliderContainer) {\n return;\n }\n this.sliderContainer.classList.remove('carousel-loading');\n // a little hack to trigger `update` function on `react-slick` to calculate `sliderWidth`\n // right after the carousel gets visible\n if (!this.state.initialized) {\n this.setState({ // eslint-disable-line react/no-did-mount-set-state\n initialized: true\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var contents = this.props.contents;\n\n if (!contents.length) {\n return null;\n }\n var isSingleItem = contents.length === 1;\n var settings = {\n autoplay: true,\n autoplaySpeed: 6000,\n pauseOnFocus: true,\n pauseOnHover: true,\n speed: 400,\n swipe: true,\n pauseOnDotsHover: true,\n arrows: !isSingleItem,\n dots: !isSingleItem,\n className: classnames_default()('dtc-watch__carousel', { 'dtc-watch__carousel--single': isSingleItem }),\n dotsClass: 'dtc_carousel__dots',\n prevArrow: Carousel__jsx(carousel_PrevNavButton, {}),\n nextArrow: Carousel__jsx(carousel_NextNavButton, {}),\n responsive: [{\n breakpoint: 768,\n settings: {\n arrows: false\n }\n }]\n };\n\n var items = contents.map(function (_ref2) {\n var id = _ref2.id,\n name = _ref2.name,\n imageHref = _ref2.imageHref;\n return Carousel__jsx('div', {\n className: 'dtc-watch__carousel__item'\n }, imageHref, Carousel__jsx('a', {\n 'data-id': id,\n onClick: _this2.onClick\n }, void 0, Carousel__jsx('img', {\n src: imageHref,\n alt: name\n })));\n });\n\n return react_default.a.createElement(\n 'div',\n {\n ref: function ref(ele) {\n _this2.sliderContainer = ele;\n },\n className: 'dtc-watch__carousel--container carousel-loading'\n },\n react_default.a.createElement(\n react_slick_lib_default.a,\n settings,\n items\n )\n );\n }\n }]);\n\n return Carousel;\n}(react[\"PureComponent\"]);\n\nCarousel_Carousel.defaultProps = {\n contents: []\n};\n\n/* harmony default export */ var carousel_Carousel = (Carousel_Carousel);\n// EXTERNAL MODULE: ./app/lib/format/convertQueryStringToObject.js\nvar convertQueryStringToObject = __webpack_require__(278);\n\n// CONCATENATED MODULE: ./app/common/page/Originals.js\nvar Originals__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar Originals__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar Originals__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction Originals__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Originals__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction Originals__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Originals_Originals = function (_PureComponent) {\n Originals__inherits(Originals, _PureComponent);\n\n function Originals(props) {\n Originals__classCallCheck(this, Originals);\n\n var _this = Originals__possibleConstructorReturn(this, (Originals.__proto__ || Object.getPrototypeOf(Originals)).call(this, props));\n\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n Originals__createClass(Originals, [{\n key: 'onClick',\n value: function onClick() {\n var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _content$links = content.links;\n _content$links = _content$links === undefined ? {} : _content$links;\n var _content$links$web = _content$links.web,\n web = _content$links$web === undefined ? '' : _content$links$web;\n\n var result = /https?:\\/\\/[^\\/]+\\/watch([^\\?]+)(.*)$/.exec(web);\n if (!result || !result[1]) {\n return;\n }\n var pathname = result[1];\n var qs = result[2];\n if (qs) {\n qs = Object(convertQueryStringToObject[\"a\" /* default */])(qs.substr(1));\n }\n var _props = this.props,\n flags = _props.flags,\n router = _props.router;\n\n\n var query = Originals__extends({}, qs, flags);\n\n router.push({\n pathname: pathname,\n query: query\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props$carousel = this.props.carousel;\n _props$carousel = _props$carousel === undefined ? {} : _props$carousel;\n var contents = _props$carousel.contents;\n\n var bannerAd = [Originals__jsx(BannerAd[\"a\" /* default */], {}, 'banner_ad')];\n return Originals__jsx(MainContainer[\"a\" /* default */], {\n className: 'watch-home',\n pre: bannerAd\n }, void 0, Originals__jsx('div', {\n className: 'layout-full layout-full--watch'\n }, void 0, Originals__jsx('section', {\n className: 'col-a'\n }, void 0, Originals__jsx(carousel_Carousel, {\n contents: contents,\n onClick: this.onClick\n }), Originals__jsx(BucketListContainer[\"a\" /* default */], {\n pageType: enums[\"y\" /* PageType */].ORIGINALS\n }, 'bucket_list_container'))));\n }\n }]);\n\n return Originals;\n}(react[\"PureComponent\"]);\n\nOriginals_Originals.loadActions = [function (params, query, lang) {\n return Object(page_actions[\"o\" /* createFetchPageAction */])('originals', params, query, lang);\n}];\n\nvar Originals_mapStateToProps = function mapStateToProps(state) {\n return {\n carousel: carouselSelector(state),\n flags: Object(flagsSelector[\"a\" /* persistentFlagsSelector */])(state)\n };\n};\n\n/* harmony default export */ var page_Originals = (Object(lib[\"withRouter\"])(Object(es[\"b\" /* connect */])(Originals_mapStateToProps)(Originals_Originals)));\n// CONCATENATED MODULE: ./app/common/page/hero/SuperHero/index.js\nvar SuperHero__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\nvar SuperHero_SuperHero = function SuperHero(_ref) {\n var name = _ref.name,\n description = _ref.description,\n director = _ref.director,\n image = _ref.image,\n logoImage = _ref.logoImage,\n subtitle = _ref.subtitle,\n content = _ref.content,\n clickHandlerArg = _ref.clickHandler;\n\n // TODO: DTC - Temp solution. Fields shouldn't come without escaped values from the PageAPI\n var heroEvent = subtitle ? subtitle.replace(/\\\\u2022/g, '•') : '';\n var clickHandler = !Object(isEmpty[\"a\" /* default */])(content) && clickHandlerArg;\n var playButtonClasses = classnames_default()('button-play', 'button-play--video', {\n 'button-play--live': !Object(isEmpty[\"a\" /* default */])(content) && content.status === enums[\"n\" /* ContentStatus */].LIVE\n });\n return SuperHero__jsx('article', {\n className: 'hero--super hero--dtc'\n }, void 0, SuperHero__jsx('figure', {\n className: 'hero_wrapper'\n }, void 0, clickHandler ? SuperHero__jsx('a', {\n className: 'col-a',\n onClick: clickHandler\n }, void 0, SuperHero__jsx('picture', {}, void 0, SuperHero__jsx('img', {\n className: 'hero_img',\n src: image,\n alt: name\n })), SuperHero__jsx('div', {\n className: playButtonClasses\n })) : SuperHero__jsx('span', {\n className: 'col-a'\n }, void 0, SuperHero__jsx('picture', {}, void 0, SuperHero__jsx('img', {\n className: 'hero_img',\n src: image,\n alt: name\n })))), SuperHero__jsx('figcaption', {\n className: 'dtc_hero__detail'\n }, void 0, logoImage && SuperHero__jsx('div', {\n className: 'dtc_hero__logo'\n }, void 0, SuperHero__jsx('img', {\n className: 'dtc_hero__logo__img',\n src: logoImage,\n alt: name\n })), SuperHero__jsx('div', {\n className: 'dtc_hero__meta'\n }, void 0, SuperHero__jsx('div', {\n className: 'dtc_hero__truncate'\n }, void 0, SuperHero__jsx('span', {\n className: 'dtc_hero__event'\n }, void 0, heroEvent))), SuperHero__jsx('div', {\n className: 'dtc_hero__title'\n }, void 0, name), SuperHero__jsx('div', {\n className: 'dtc_hero__description'\n }, void 0, description), SuperHero__jsx('div', {\n className: 'dtc_hero__author'\n }, void 0, director)));\n};\n\n/* harmony default export */ var hero_SuperHero = (SuperHero_SuperHero);\n// EXTERNAL MODULE: ./app/webapp/common/playable.js + 2 modules\nvar playable = __webpack_require__(64);\n\n// CONCATENATED MODULE: ./app/common/page/Catalog.js\nvar Catalog__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PlayableSuperHero = Object(playable[\"a\" /* default */])(hero_SuperHero);\n\nvar Catalog_Catalog = function Catalog(_ref) {\n var page = _ref.page,\n hero = _ref.hero;\n var _page$header = page.header;\n _page$header = _page$header === undefined ? {} : _page$header;\n var _page$header$name = _page$header.name,\n name = _page$header$name === undefined ? '' : _page$header$name,\n _page$header$descript = _page$header.description,\n description = _page$header$descript === undefined ? '' : _page$header$descript,\n _page$header$subtitle = _page$header.subtitle,\n subtitle = _page$header$subtitle === undefined ? '' : _page$header$subtitle,\n _page$header$subtitle2 = _page$header.subtitleTwo,\n subtitleTwo = _page$header$subtitle2 === undefined ? '' : _page$header$subtitle2,\n _page$header$backgrou = _page$header.backgroundImage,\n backgroundImage = _page$header$backgrou === undefined ? {} : _page$header$backgrou,\n _page$header$image = _page$header.image,\n image = _page$header$image === undefined ? {} : _page$header$image,\n _page$header$logoImag = _page$header.logoImage,\n logoImage = _page$header$logoImag === undefined ? {} : _page$header$logoImag,\n _page$buckets = page.buckets,\n buckets = _page$buckets === undefined ? [] : _page$buckets;\n\n var bannerAd = null; // [<BannerAd key=\"banner_ad\" />];\n var bucket = buckets[0] || {};\n var bucketId = bucket.metadata && bucket.metadata.bucketId || bucket.id;\n var bucketName = bucket.name;\n var superHero = !Object(isEmpty[\"a\" /* default */])(hero) && hero.streams && hero.streams.length ? Catalog__jsx(PlayableSuperHero, {\n name: name,\n description: description,\n subtitle: subtitle,\n director: subtitleTwo,\n image: backgroundImage.href,\n content: hero,\n bucketId: bucketId,\n bucketName: bucketName\n }) : Catalog__jsx(hero_SuperHero, {\n name: name,\n description: description,\n subtitle: subtitle,\n director: subtitleTwo,\n image: backgroundImage.href,\n icon: image.href,\n logoImage: logoImage.href\n });\n return Catalog__jsx(MainContainer[\"a\" /* default */], {\n className: 'watch-home',\n pre: bannerAd\n }, void 0, Catalog__jsx('div', {\n className: 'layout-full layout-full--watch'\n }, void 0, Catalog__jsx('section', {\n className: 'col-a'\n }, void 0, superHero, Catalog__jsx(BucketListContainer[\"a\" /* default */], {\n renderHeroInBucket: true,\n hideHeaderLink: true,\n pageType: enums[\"y\" /* PageType */].CATALOG\n }, 'bucket_list_container'))));\n};\n\nvar Catalog_mapStateToProps = function mapStateToProps(state) {\n return {\n page: Object(pageSelector[\"c\" /* default */])(state),\n hero: Object(heroSelector[\"a\" /* default */])(state)\n };\n};\n\nCatalog_Catalog.loadActions = [function (params, query, lang) {\n var pageName = params.pageName,\n restOfParams = _objectWithoutProperties(params, ['pageName']);\n\n return Object(page_actions[\"o\" /* createFetchPageAction */])(pageName, restOfParams, query, lang);\n}];\n\n/* harmony default export */ var page_Catalog = (Object(es[\"b\" /* connect */])(Catalog_mapStateToProps)(Catalog_Catalog));\n// EXTERNAL MODULE: ./app/webapp/page/SyndicatedPlayerPage.js\nvar SyndicatedPlayerPage = __webpack_require__(781);\n\n// EXTERNAL MODULE: ./app/webapp/page/SyndicatedPlayerExample.js\nvar SyndicatedPlayerExample = __webpack_require__(788);\n\n// EXTERNAL MODULE: ./app/common/selectors/providerSelector.js\nvar providerSelector = __webpack_require__(53);\n\n// EXTERNAL MODULE: ./app/common/LinkWithFlags.js\nvar LinkWithFlags = __webpack_require__(147);\n\n// CONCATENATED MODULE: ./app/webapp/page/AffiliatePageExample.js\nvar AffiliatePageExample__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar AffiliatePageExample__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction AffiliatePageExample__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction AffiliatePageExample__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction AffiliatePageExample__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\nvar AffiliatePageExample_shellVersion = config_default.a.shellVersion,\n cdnHost = config_default.a.cdnHost,\n AffiliatePageExample_devStyles = config_default.a.devStyles;\n\n\nvar BASE_HREF = cdnHost + '/redesign/' + AffiliatePageExample_shellVersion;\nvar AffiliatePageExample_STYLE_HREF = BASE_HREF + '/css';\nif (AffiliatePageExample_devStyles) {\n AffiliatePageExample_STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nvar containerStyle = {\n padding: 20\n};\n\nvar DEF_PROVIDER_VALUE = 'default';\n\nvar AffiliatePageExample_AffiliatePageExample = function (_PureComponent) {\n AffiliatePageExample__inherits(AffiliatePageExample, _PureComponent);\n\n function AffiliatePageExample(props) {\n AffiliatePageExample__classCallCheck(this, AffiliatePageExample);\n\n var _this = AffiliatePageExample__possibleConstructorReturn(this, (AffiliatePageExample.__proto__ || Object.getPrototypeOf(AffiliatePageExample)).call(this, props));\n\n _this.state = {\n mvpd: DEF_PROVIDER_VALUE,\n network: ''\n };\n _this.onProviderChange = _this.onProviderChange.bind(_this);\n _this.onNetworkChange = _this.onNetworkChange.bind(_this);\n _this.onLinkClick = _this.onLinkClick.bind(_this);\n _this.selectByNetwork = _this.selectByNetwork.bind(_this);\n return _this;\n }\n\n AffiliatePageExample__createClass(AffiliatePageExample, [{\n key: 'onProviderChange',\n value: function onProviderChange(event) {\n this.setState({\n mvpd: event.target.value\n });\n }\n }, {\n key: 'onNetworkChange',\n value: function onNetworkChange(event) {\n this.setState({\n network: event.target.value\n });\n }\n }, {\n key: 'onLinkClick',\n value: function onLinkClick(event) {\n if (this.state.mvpd === DEF_PROVIDER_VALUE) {\n event.preventDefault();\n this.warn();\n }\n }\n }, {\n key: 'warn',\n value: function warn() {\n // eslint-disable-line class-methods-use-this\n alert('Select a provider'); // eslint-disable-line no-alert\n }\n }, {\n key: 'selectByNetwork',\n value: function selectByNetwork() {\n var _state = this.state,\n mvpd = _state.mvpd,\n network = _state.network;\n\n if (mvpd === DEF_PROVIDER_VALUE) {\n this.warn();\n return;\n }\n\n window.open('/watch/mvpd/login?mvpd=' + mvpd + '&network=' + network);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _state2 = this.state,\n mvpd = _state2.mvpd,\n network = _state2.network;\n\n var _props = this.props,\n _props$page$buckets = _slicedToArray(_props.page.buckets, 1),\n _props$page$buckets$ = _props$page$buckets[0],\n bucket = _props$page$buckets$ === undefined ? {} : _props$page$buckets$,\n providers = _props.providers;\n\n var _bucket$contents = bucket.contents,\n contents = _bucket$contents === undefined ? [] : _bucket$contents;\n\n\n var providerOptions = providers.map(function (_ref) {\n var name = _ref.name,\n abbreviation = _ref.abbreviation;\n return AffiliatePageExample__jsx('option', {\n value: abbreviation\n }, void 0, name);\n });\n providerOptions.unshift(AffiliatePageExample__jsx('option', {\n value: DEF_PROVIDER_VALUE\n }, void 0, '----- Choose Provider -----'));\n\n return AffiliatePageExample__jsx('div', {\n style: containerStyle\n }, void 0, AffiliatePageExample__jsx(Helmet_default.a, {\n meta: [{ name: 'robots', content: 'noindex, nofollow' }],\n link: [{ rel: 'stylesheet', href: AffiliatePageExample_STYLE_HREF + '/page.css' }],\n style: [{\n cssText: '\\n body {\\n font-family: sans-serif;\\n }\\n h1 { font-size: 24px; }\\n h2 { font-size: 20px; }\\n h3 { font-size: 18px; }\\n '\n }]\n }), AffiliatePageExample__jsx('h1', {}, void 0, 'Affiliate Page Test'), AffiliatePageExample__jsx('div', {\n style: { marginTop: 20 }\n }, void 0, AffiliatePageExample__jsx('select', {\n id: 'providerList',\n defaultValue: mvpd,\n style: { width: 200 },\n onChange: this.onProviderChange\n }, void 0, providerOptions)), AffiliatePageExample__jsx('div', {\n style: { marginTop: 20 }\n }, void 0, AffiliatePageExample__jsx('button', {\n onClick: this.selectByNetwork\n }, void 0, 'Network'), AffiliatePageExample__jsx('input', {\n type: 'text',\n value: network,\n onChange: this.onNetworkChange\n })), AffiliatePageExample__jsx('div', {\n style: containerStyle\n }, void 0, AffiliatePageExample__jsx('ul', {}, void 0, contents.map(function (_ref2) {\n var id = _ref2.id,\n name = _ref2.name;\n return AffiliatePageExample__jsx('li', {\n 'data-id': id,\n style: { listStyleType: 'circle' }\n }, id, AffiliatePageExample__jsx(LinkWithFlags[\"a\" /* default */], {\n to: { pathname: '/mvpd/login', query: { id: id, mvpd: mvpd } },\n target: '_blank',\n onClick: _this2.onLinkClick\n }, void 0, name));\n }))));\n }\n }]);\n\n return AffiliatePageExample;\n}(react[\"PureComponent\"]);\n\nAffiliatePageExample_AffiliatePageExample.defaultProps = {\n providers: []\n};\n\nAffiliatePageExample_AffiliatePageExample.loadActions = [function (params, query, lang) {\n return Object(page_actions[\"o\" /* createFetchPageAction */])('home', params, query, lang);\n}, function (_, query) {\n return Object(authenticationActions[\"Z\" /* getProviders */])({ platform: query.device });\n}];\n\nvar AffiliatePageExample_mapStateToProps = function mapStateToProps(state) {\n return {\n page: Object(pageSelector[\"c\" /* default */])(state),\n providers: Object(providerSelector[\"c\" /* providersSelector */])(state)\n };\n};\n\n/* harmony default export */ var page_AffiliatePageExample = (Object(es[\"b\" /* connect */])(AffiliatePageExample_mapStateToProps)(AffiliatePageExample_AffiliatePageExample));\n// EXTERNAL MODULE: ./app/common/page/AdobePassProxyLogin.js\nvar AdobePassProxyLogin = __webpack_require__(373);\n\n// EXTERNAL MODULE: ./app/common/page/AccountSelector.js\nvar AccountSelector = __webpack_require__(324);\n\n// CONCATENATED MODULE: ./app/common/RootApplicationShell.js\nvar RootApplicationShell__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\nvar RootApplicationShell_secureCdnHost = config_default.a.secureCdnHost,\n RootApplicationShell_cdnHost = config_default.a.cdnHost;\n\n\nvar RootApplicationShell_RootApplicationShell = function RootApplicationShell(_ref) {\n var children = _ref.children,\n _ref$meta = _ref.meta;\n _ref$meta = _ref$meta === undefined ? {} : _ref$meta;\n var title = _ref$meta.title,\n description = _ref$meta.description,\n keywords = _ref$meta.keywords,\n canonicalUrl = _ref$meta.canonicalUrl,\n socialDescription = _ref$meta.socialDescription,\n socialTitle = _ref$meta.socialTitle,\n socialUrl = _ref$meta.socialUrl,\n socialImageUrl = _ref$meta.socialImageUrl,\n noIndex = _ref$meta.noIndex;\n\n var metaTag = [{ 'http-equiv': 'content-type', content: 'text/html; charset=UTF-8' }, { 'http-equiv': 'x-ua-compatible', content: 'IE=edge,chrome=1' }, { name: 'viewport', content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' }, { name: 'title', content: title }, { name: 'description', content: description }, { name: 'news_keywords', content: keywords }, { name: 'keywords', content: keywords }, { name: 'medium', content: 'index' }, { property: 'fb:app_id', content: '116656161708917' }, { property: 'og:site_name', content: 'ESPN.com' }, { property: 'og:url', content: socialUrl }, { property: 'og:title', content: socialTitle }, { property: 'og:description', content: socialDescription }, { property: 'og:image', content: socialImageUrl }, { property: 'og:type', content: 'website' }, { name: 'twitter:site', content: 'espn' }, { name: 'twitter:url', content: socialUrl }, { name: 'twitter:title', content: socialTitle }, { name: 'twitter:description', content: socialDescription }, { name: 'twitter:image', content: socialImageUrl }, { name: 'twitter:card', content: 'summary' }, { name: 'twitter:app:name:iphone', content: 'ESPN' }, { name: 'twitter:app:id:iphone', content: '317469184' }, { name: 'twitter:app:name:googleplay', content: 'ESPN' }, { name: 'twitter:app:id:googleplay', content: 'com.espn.score_center' }];\n\n if (noIndex) {\n metaTag.unshift({ name: 'robots', content: 'noindex, nofollow' });\n }\n\n return RootApplicationShell__jsx('div', {\n className: 'watch-root'\n }, void 0, RootApplicationShell__jsx(Helmet_default.a, {\n title: title,\n link: [{ rel: 'canonical', href: canonicalUrl }, { rel: 'mask-icon', href: RootApplicationShell_secureCdnHost + '/prod/assets/icons/E.svg', color: '#990000', sizes: 'any' }, { rel: 'shortcut icon', href: RootApplicationShell_secureCdnHost + '/favicon.ico' }, { rel: 'dns-prefetch', href: RootApplicationShell_cdnHost }, { rel: 'dns-prefetch', href: RootApplicationShell_secureCdnHost }, { rel: 'preconnect', href: RootApplicationShell_cdnHost, crossorigin: '' }, { rel: 'preconnect', href: RootApplicationShell_secureCdnHost, crossorigin: '' }, {\n rel: 'apple-touch-icon',\n href: RootApplicationShell_secureCdnHost + '/wireless/mw5/r1/images/bookmark-icons/espn_icon-57x57.min.png'\n }, {\n rel: 'apple-touch-icon-precomposed',\n href: RootApplicationShell_secureCdnHost + '/wireless/mw5/r1/images/bookmark-icons/espn_icon-57x57.min.png'\n }, {\n rel: 'apple-touch-icon-precomposed',\n sizes: '72x72',\n href: RootApplicationShell_secureCdnHost + '/wireless/mw5/r1/images/bookmark-icons/espn_icon-72x72.min.png'\n }, {\n rel: 'apple-touch-icon-precomposed',\n sizes: '114x114',\n href: RootApplicationShell_secureCdnHost + '/wireless/mw5/r1/images/bookmark-icons/espn_icon-114x114.min.png'\n }, {\n rel: 'apple-touch-icon-precomposed',\n sizes: '152x152',\n href: RootApplicationShell_secureCdnHost + '/wireless/mw5/r1/images/bookmark-icons/espn_icon-152x152.min.png'\n }],\n meta: metaTag,\n script: [{\n type: 'application/ld+json',\n innerHTML: '{\\n \"@context\": \"http://schema.org\",\\n \"@type\": \"WebSite\",\\n \"name\": \"ESPN\",\\n \"url\": \"http://www.espn.com/\"\\n }'\n }]\n }), children);\n};\n\nvar RootApplicationShell_mapStateToProps = function mapStateToProps(state, props) {\n return {\n meta: Object(pageSelector[\"e\" /* metaSelector */])(state, props)\n };\n};\n\n/* harmony default export */ var common_RootApplicationShell = (Object(injectIntl[\"a\" /* default */])(Object(es[\"b\" /* connect */])(RootApplicationShell_mapStateToProps)(RootApplicationShell_RootApplicationShell)));\n// EXTERNAL MODULE: ./app/lib/observe/index.js\nvar observe = __webpack_require__(374);\n\n// EXTERNAL MODULE: ./app/lib/observe/trackingObserver.js + 1 modules\nvar trackingObserver = __webpack_require__(375);\n\n// EXTERNAL MODULE: ./app/lib/format/getI18nInclude.js\nvar getI18nInclude = __webpack_require__(295);\n\n// CONCATENATED MODULE: ./server/templates/dotComAnalyticsStub.js\n\n\n/* harmony default export */ var dotComAnalyticsStub = ({\n omniture: {\n countryRegion: 'en-us',\n hier1: 'watch:index',\n section: 'watch',\n pageName: 'watch:index',\n sections: 'watch:index',\n site: 'espn',\n premium: 'premium-no',\n convrSport: 'watch',\n pageURL: 'www.espn.com/watch/index',\n lang: 'en_us',\n contentType: 'index',\n sport: 'watch',\n account: 'wdgespcom',\n siteType: 'full',\n prop58: 'isIndex=true'\n },\n chartbeat: {\n loadPubJS: false,\n path: '/watch/index',\n zone: 'www.espn.com.us.watch',\n domain: 'www.espn.com',\n loadVidJS: true,\n title: 'WatchESPN: Live Sports, Game Replays, Video Highlights',\n sections: 'watch',\n authors: 'index'\n },\n nielsen: app_constants[\"t\" /* dotComNielsenData */],\n ABTest: {\n isOptimizied: true,\n environment: 'prod',\n tScript: 'http://a.espncdn.com/prod/scripts/analytics/target.20.r2.js',\n abtestUser: 0,\n oScript: 'http://cdn.optimizely.com/js/310987714.js',\n targetURLs: [{\n regexp: '(/)',\n site: 'espn.co.uk',\n flag: false\n }, {\n regexp: '(/.*)',\n site: 'www.espn.com',\n flag: false\n }],\n domain: 'www.espn.com',\n host: 'espn.com',\n raw: '{\\'fastcast\\':{\\'placements\\':{\\'/nba/index\\':\\'true\\',\\'^/.+$\\':\\'false\\',\\'/ncf/index\\':\\'true\\'},\\'enabled\\':false,\\'script\\':\\'http://a.espncdn.com/combiner/c?js=analytics/espn.fastcastTracking.4.js\\'},\\'optimizely\\':{\\'oldscript\\':\\'http://a.espncdn.com/sports/optimizely.js\\',\\'placements\\':[{\\'regexp\\':\\'(/)\\',\\'site\\':\\'espn.co.uk\\',\\'flag\\':true},{\\'regexp\\':\\'(/.*)\\',\\'site\\':\\'www.espn.com\\',\\'flag\\':true},{\\'regexp\\':\\'(/.*)\\',\\'site\\':\\'www.espnqa.com\\',\\'flag\\':true}],\\'enabled\\':true,\\'script\\':\\'http://cdn.optimizely.com/js/310987714.js\\'},\\'target\\':{\\'placements\\':[{\\'regexp\\':\\'(/)\\',\\'site\\':\\'espn.co.uk\\',\\'flag\\':false},{\\'regexp\\':\\'(/.*)\\',\\'site\\':\\'www.espn.com\\',\\'flag\\':false}],\\'enabled\\':false,\\'script\\':\\'http://a.espncdn.com/prod/scripts/analytics/target.20.r2.js\\'}}',\n optimizely: true,\n target: false,\n optimizelyURLs: [{\n regexp: '(/)',\n site: 'espn.co.uk',\n flag: true\n }, {\n regexp: '(/.*)',\n site: 'www.espn.com',\n flag: true\n }, {\n regexp: '(/.*)',\n site: 'www.espnqa.com',\n flag: true\n }]\n },\n isFeaturePhone: false,\n device: 'desktop',\n cto: true\n});\n// CONCATENATED MODULE: ./app/webapp/subShell/BasicShell.js\nvar BasicShell__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar BasicShell__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction BasicShell__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction BasicShell__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction BasicShell__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar BasicShell_shellVersion = config_default.a.shellVersion,\n BasicShell_secureCdnHost = config_default.a.secureCdnHost;\n\nvar BasicShell_BASE_HREF = BasicShell_secureCdnHost + '/redesign/' + BasicShell_shellVersion;\n\nvar BasicShell_BasicShell = function (_PureComponent) {\n BasicShell__inherits(BasicShell, _PureComponent);\n\n function BasicShell() {\n BasicShell__classCallCheck(this, BasicShell);\n\n return BasicShell__possibleConstructorReturn(this, (BasicShell.__proto__ || Object.getPrototypeOf(BasicShell)).apply(this, arguments));\n }\n\n BasicShell__createClass(BasicShell, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var store = this.context.store;\n\n this.unsubscribeFromStore = Object(observe[\"a\" /* subscribeToStore */])(store, [trackingObserver[\"a\" /* default */]]);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.unsubscribeFromStore) {\n this.unsubscribeFromStore();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props$app = this.props.app,\n device = _props$app.device,\n isMobile = _props$app.isMobile;\n\n return BasicShell__jsx('div', {}, void 0, BasicShell__jsx(Helmet_default.a, {\n script: [{\n src: BasicShell_BASE_HREF + '/js/espn-head.js'\n }, {\n innerHTML: '\\n var espn = espn || {};\\n espn.build = \\'' + BasicShell_shellVersion + '\\';\\n var espn_ui = window.espn_ui || {};\\n espn_ui.deviceType = \"' + device + '\";\\n espn_ui.device = {\\n isMobile: ' + isMobile + '\\n };\\n espn.track = espn.track || {};\\n espn.track.data = ' + JSON.stringify(dotComAnalyticsStub) + ';\\n '\n }, {\n src: Object(getI18nInclude[\"a\" /* default */])()\n }]\n }), react_default.a.Children.only(this.props.children), BasicShell__jsx('script', {\n src: BasicShell_BASE_HREF + '/js/espn-critical.js'\n }), BasicShell__jsx('script', {\n src: BasicShell_BASE_HREF + '/js/espn-analytics.js'\n }));\n }\n }]);\n\n return BasicShell;\n}(react[\"PureComponent\"]);\n\nBasicShell_BasicShell.contextTypes = {\n store: react[\"PropTypes\"].object\n};\n\nBasicShell_BasicShell.renderTemplate = enums[\"C\" /* RenderTemplateTypes */].BASIC;\n\nvar BasicShell_mapStateToProps = function mapStateToProps(state) {\n return {\n app: Object(appSelector[\"j\" /* default */])(state)\n };\n};\n\n/* harmony default export */ var subShell_BasicShell = (Object(es[\"b\" /* connect */])(BasicShell_mapStateToProps)(BasicShell_BasicShell));\n// EXTERNAL MODULE: ./app/webapp/subShell/PageShell.js\nvar PageShell = __webpack_require__(789);\n\n// EXTERNAL MODULE: ./app/common/ads/AdContainer.js\nvar AdContainer = __webpack_require__(218);\n\n// CONCATENATED MODULE: ./app/common/ads/OverlayAd.js\nvar OverlayAd__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\nvar OverlayAd_OverlayAd = function OverlayAd(props) {\n return react_default.a.createElement(AdContainer[\"a\" /* default */], OverlayAd__extends({\n className: 'ad-wrapper',\n kvps: { pos: 'outofpage' },\n slotType: 'outofpage',\n isOutOfPage: true\n }, props));\n};\n\nOverlayAd_OverlayAd.defaultProps = {\n refreshOnLoad: false\n};\n\n/* harmony default export */ var ads_OverlayAd = (OverlayAd_OverlayAd);\n// CONCATENATED MODULE: ./app/common/createLandingPage.js\nvar createLandingPage__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// create landing page(e.g. home, espnplus, product)\nfunction createLandingPage() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$pageName = options.pageName,\n pageName = _options$pageName === undefined ? 'home' : _options$pageName;\n\n\n var LandingPage = function LandingPage(_ref) {\n var isIntl = _ref.isIntl,\n showOneIdLogin = _ref.showOneIdLogin,\n isLoggedIn = _ref.isLoggedIn;\n\n var showLogin = !isLoggedIn && showOneIdLogin;\n // NOTE: Display Overlay Ads on `home`, `espnplus` pages generated by createLandingPage\n var bannerAd = isIntl ? [createLandingPage__jsx(BannerAd[\"a\" /* default */], {}, 'banner_ad')] : [createLandingPage__jsx(ads_OverlayAd, {}, 'overlay_ad')];\n return createLandingPage__jsx(MainContainer[\"a\" /* default */], {\n className: 'watch-home',\n pre: bannerAd,\n showLogin: showLogin\n }, void 0, createLandingPage__jsx(TopLayoutContainer[\"a\" /* default */], {}), createLandingPage__jsx('div', {\n className: 'layout-full layout-full--watch'\n }, void 0, createLandingPage__jsx('section', {\n className: 'col-a'\n }, void 0, createLandingPage__jsx(BucketListContainer[\"a\" /* default */], {\n pageType: enums[\"y\" /* PageType */].HOME\n }))));\n };\n\n LandingPage.loadActions = [function (params, query, lang) {\n return Object(page_actions[\"o\" /* createFetchPageAction */])(pageName, params, query, lang);\n }, function (params, query, lang) {\n return Object(scheduleModule_actions[\"d\" /* fetchScheduleModule */])(lang);\n }];\n\n LandingPage.refreshInterval = 65; // 1 min and 5 seconds\n\n LandingPage.onRefresh = function (_ref2) {\n var dispatch = _ref2.dispatch,\n routeParams = _ref2.routeParams,\n lang = _ref2.lang,\n _ref2$location$query = _ref2.location.query,\n query = _ref2$location$query === undefined ? {} : _ref2$location$query;\n\n dispatch(Object(page_actions[\"o\" /* createFetchPageAction */])(pageName, routeParams, query, lang)).then(function () {\n dispatch(Object(page_actions[\"scorePage\"])());\n });\n dispatch(Object(scheduleModule_actions[\"d\" /* fetchScheduleModule */])(lang)).then(function () {\n dispatch(Object(scheduleModule_actions[\"e\" /* scoreScheduleModule */])());\n });\n };\n\n var mapStateToProps = function mapStateToProps(state) {\n return {\n isIntl: Object(appSelector[\"u\" /* isIntlSelector */])(state),\n showOneIdLogin: Object(appSelector[\"G\" /* showOneIdLoginSelector */])(state),\n isLoggedIn: Object(oneIdSelector[\"f\" /* oneIdLoggedInSelector */])(state)\n };\n };\n\n return Object(es[\"b\" /* connect */])(mapStateToProps)(LandingPage);\n}\n// EXTERNAL MODULE: ./app/common/createCollection.js\nvar createCollection = __webpack_require__(798);\n\n// CONCATENATED MODULE: ./app/webapp/routes.js\nvar routes__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction createRoutes() {\n return [routes__jsx(lib[\"Route\"], {\n path: '/',\n component: common_RootApplicationShell\n }, void 0, routes__jsx(lib[\"Route\"], {\n component: subShell_BasicShell\n }, 'route_0', routes__jsx(lib[\"Route\"], {\n path: 'activate',\n component: Activate\n }), routes__jsx(lib[\"Route\"], {\n path: 'subscribe',\n component: Activate\n }), routes__jsx(lib[\"Route\"], {\n path: 'feedback',\n component: page_Feedback\n }), routes__jsx(lib[\"Route\"], {\n path: 'roadblock',\n component: page_Roadblock\n }), routes__jsx(lib[\"Route\"], {\n path: 'unsupported',\n component: page_UnsupportedPage\n }), routes__jsx(lib[\"Route\"], {\n path: 'syndicated/player',\n component: SyndicatedPlayerPage[\"a\" /* default */]\n }), routes__jsx(lib[\"Route\"], {\n path: 'syndicated/player/example',\n component: SyndicatedPlayerExample[\"a\" /* default */]\n }), routes__jsx(lib[\"Route\"], {\n path: 'affiliate/example',\n component: page_AffiliatePageExample\n }), routes__jsx(lib[\"Route\"], {\n path: 'mvpd/login',\n component: AdobePassProxyLogin[\"b\" /* default */]\n }), routes__jsx(lib[\"Route\"], {\n path: 'account-selector',\n component: AccountSelector[\"b\" /* default */]\n })), routes__jsx(lib[\"Route\"], {\n component: PageShell[\"a\" /* default */]\n }, 'route_1', routes__jsx(lib[\"IndexRoute\"], {\n component: createLandingPage({ pageName: 'home' })\n }), routes__jsx(lib[\"Route\"], {\n path: '_/*',\n component: createLandingPage({ pageName: 'home' })\n }), routes__jsx(lib[\"Route\"], {\n path: 'collections/:id(/g/:groupId)(/:junk)',\n component: Object(createCollection[\"a\" /* default */])()\n }), routes__jsx(lib[\"Route\"], {\n path: 'originals',\n component: page_Originals\n }), routes__jsx(lib[\"Route\"], {\n path: 'espnplus',\n component: createLandingPage({ pageName: 'espnplus' })\n }), routes__jsx(lib[\"Route\"], {\n path: 'product/:id(/g/:groupId)(/:junk)',\n component: Object(createCollection[\"a\" /* default */])({ pageName: 'product' })\n }), routes__jsx(lib[\"Route\"], {\n path: 'program/:id(/g/:groupId)(/:junk)',\n component: Object(createCollection[\"a\" /* default */])({ pageName: 'program' })\n }), routes__jsx(lib[\"Route\"], {\n path: 'schedule',\n component: page_Schedule\n }), routes__jsx(lib[\"Route\"], {\n path: 'player',\n component: page_Player\n }), routes__jsx(lib[\"Route\"], {\n path: 'shortstoplive',\n component: page_ShortStopLive\n }), routes__jsx(lib[\"Route\"], {\n path: 'search(/:searchTerm)',\n component: page_Search\n }), routes__jsx(lib[\"Route\"], {\n path: 'sid(/:team)',\n component: page_Sid\n }), routes__jsx(lib[\"Route\"], {\n path: ':pageName/:id(/:junk)',\n component: page_Catalog\n }), routes__jsx(lib[\"Route\"], {\n path: ':pageName',\n component: page_Features\n })))];\n}\n\n/* harmony default export */ var webapp_routes = (createRoutes);\n// CONCATENATED MODULE: ./server/fetchComponentData.js\n\n\n\n/**\n * This function fire offs redux actions when a route component is initially mounted or updated. This generally retrieves\n * the initial data needed for the page.\n * @param {function} dispatch - Redux dispatch method to fire off actions\n * @param {array} components - The components initially rendered by the router. Typically PageShell and a child component based\n * on the route (Home, Features, Schedule or Collection)\n * @param {object} [pathParams] - Optional path parameters extracted by react-router\n * @param {objeect} [query] - Optional url query parameters\n * @param {string} [lang] - Optional lang originating from client and passed into the PageAPI\n * @param {array} [actions] - Optional array of ancillary actions to be fired\n * @param {string} [preActions] - Optional array of actions that should occur before all other actions are fired\n */\n\n/* harmony default export */ var fetchComponentData = (function (dispatch) {\n var components = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var pathParams = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var query = arguments[3];\n var lang = arguments[4];\n var actions = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n var preActionsArg = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : [];\n\n var loadActions = components.reduce(function (prev, current) {\n return prev.concat(current && current.loadActions || []);\n }, actions);\n var preActions = components.reduce(function (prev, current) {\n return prev.concat(current && current.preActions || []);\n }, preActionsArg);\n\n preActions = uniq_default()(preActions);\n loadActions = uniq_default()(loadActions);\n var prePromises = preActions.map(function (preAction) {\n return dispatch(preAction());\n });\n return bluebird_default.a.all(prePromises).finally(function () {\n var promises = loadActions.map(function (action) {\n return dispatch(action(pathParams, query, lang));\n });\n return bluebird_default.a.all(promises);\n });\n});\n// EXTERNAL MODULE: ./app/lib/format/normalizeQueryString.js\nvar normalizeQueryString = __webpack_require__(203);\n\n// CONCATENATED MODULE: ./app/common/ComponentDataContainer.js\nvar ComponentDataContainer__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction ComponentDataContainer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ComponentDataContainer__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction ComponentDataContainer__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// eslint-disable-next-line no-unused-vars\n\n\n\n\nvar ComponentDataContainer_ComponentDataContainer = function (_Component) {\n ComponentDataContainer__inherits(ComponentDataContainer, _Component);\n\n function ComponentDataContainer() {\n ComponentDataContainer__classCallCheck(this, ComponentDataContainer);\n\n return ComponentDataContainer__possibleConstructorReturn(this, (ComponentDataContainer.__proto__ || Object.getPrototypeOf(ComponentDataContainer)).apply(this, arguments));\n }\n\n ComponentDataContainer__createClass(ComponentDataContainer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var routerProps = this.props.routerProps;\n\n this.onUpdate(routerProps);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var routerProps = this.props.routerProps;\n\n var prevRouterProps = prevProps.routerProps;\n this.onUpdate(routerProps, prevRouterProps);\n }\n }, {\n key: 'onUpdate',\n value: function onUpdate(routerProps) {\n var prevRouterProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (window.__INITIAL_STATE__ !== null && routerProps.ssr) {\n window.__INITIAL_STATE__ = null;\n return;\n }\n\n // don't update if the route hasn't changed\n if (prevRouterProps.location && prevRouterProps.location.pathname === routerProps.location.pathname) {\n return;\n }\n\n // this `dispatch is passed from client.js\n var _props = this.props,\n dispatch = _props.dispatch,\n onDefLoadStart = _props.onLoadStart,\n onDefComplete = _props.onComplete;\n var _routerProps$componen = routerProps.components,\n components = _routerProps$componen === undefined ? [] : _routerProps$componen,\n _routerProps$params = routerProps.params,\n params = _routerProps$params === undefined ? {} : _routerProps$params,\n _routerProps$location = routerProps.location;\n _routerProps$location = _routerProps$location === undefined ? {} : _routerProps$location;\n var _routerProps$location2 = _routerProps$location.query,\n query = _routerProps$location2 === undefined ? {} : _routerProps$location2,\n lang = routerProps.lang;\n // grab the ones that's defined in the deepest child\n\n var _components$reduce = components.reduce(function (acc, current) {\n if (current.onLoadStart) {\n acc.onLoadStart = current.onLoadStart;\n }\n if (current.onComplete) {\n acc.onComplete = current.onComplete;\n }\n return acc;\n }, { onLoadStart: onDefLoadStart, onComplete: onDefComplete }),\n onLoadStart = _components$reduce.onLoadStart,\n onComplete = _components$reduce.onComplete;\n\n onLoadStart(dispatch);\n fetchComponentData(dispatch, components, params, Object(normalizeQueryString[\"a\" /* default */])(query), lang).then(function () {\n return onComplete(dispatch);\n });\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return ComponentDataContainer;\n}(react[\"Component\"]);\n\nComponentDataContainer_ComponentDataContainer.defaultProps = {\n onLoadStart: function onLoadStart() {},\n onComplete: function onComplete() {}\n};\n\n/* harmony default export */ var common_ComponentDataContainer = (ComponentDataContainer_ComponentDataContainer);\n// EXTERNAL MODULE: ./app/common/IntlProvider.js + 5 modules\nvar IntlProvider = __webpack_require__(378);\n\n// CONCATENATED MODULE: ./app/webapp/client.js\nvar client__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar client__extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nif (false) {\n var _require = require('why-did-you-update'),\n whyDidYouUpdate = _require.whyDidYouUpdate;\n\n whyDidYouUpdate(React);\n}\n\n// since we are using the same bundle for qa and prod, we need to define the \"publicPath\"\n// for webpack at runtime. The alternative is building a bundle for each environment\n// http://webpack.github.io/docs/configuration.html#output-publicpath\n/* eslint-disable */\nif (window.watchGlobals) {\n __webpack_require__.p = (window.location.protocol === 'https:' ? window.watchGlobals.secureCdnPath : window.watchGlobals.cdnPath) + '/';\n}\n/* eslint-enable */\n\nvar client_initialState = window && window.__INITIAL_STATE__;\nvar localeData = window && window.ReactIntlLocaleData;\nvar enhancedBrowserHistory = Object(lib[\"useRouterHistory\"])(function () {\n return lib[\"browserHistory\"];\n})({\n basename: '/watch'\n});\n\nvar client_store = app_store(client_initialState, enhancedBrowserHistory, [trackingMiddleware]);\nvar client_history = Object(react_router_redux_lib[\"syncHistoryWithStore\"])(enhancedBrowserHistory, client_store);\nvar client_dispatch = client_store.dispatch;\n\n\nfunction loadActionsRouterMiddleware() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return {\n renderRouterContext: function renderRouterContext(child, routerProps) {\n return react_default.a.createElement(\n common_ComponentDataContainer,\n client__extends({ routerProps: routerProps }, props),\n child\n );\n }\n };\n}\n\nfunction renderApp() {\n var renderWithMiddleware = Object(lib[\"applyRouterMiddleware\"])(react_router_scroll_lib_default()(), loadActionsRouterMiddleware({\n dispatch: client_dispatch\n }));\n var routes = webapp_routes();\n var appContainer = document.getElementById(config_default.a.uid);\n var state = client_store.getState();\n var lang = state.app.lang;\n\n var ssr = Object(appSelector[\"H\" /* ssrSelector */])(state);\n var analyticsConstants = Object(analyticsSelectors[\"a\" /* analyticsConstantsSelector */])(state);\n\n if (localeData && localeData[lang]) {\n Object(index_es[\"c\" /* addLocaleData */])(localeData[lang]);\n }\n\n Object(omniture[\"f\" /* init */])(analyticsConstants);\n\n if (appContainer) {\n Object(react_dom[\"render\"])(client__jsx(es[\"a\" /* Provider */], {\n store: client_store\n }, void 0, client__jsx(IntlProvider[\"a\" /* default */], {}, void 0, client__jsx(lib[\"Router\"], {\n history: client_history,\n render: renderWithMiddleware,\n lang: lang,\n ssr: ssr\n }, void 0, routes))), appContainer, function () {\n client_dispatch(Object(appActions[\"x\" /* appRendered */])());\n });\n }\n}\n\nwindow._reactInMem = true;\n// Overwriting from espn-head.js to enable error logging for Beta period\nif (window.newrelic && config_default.a.isBeta) {\n window.newrelic.setErrorHandler(function () {\n return false;\n });\n}\n\nObject(docReady[\"a\" /* default */])(function () {\n if (!window.Intl) {\n __webpack_require__.e/* import() */(0).then(__webpack_require__.bind(null, 802)).then(renderApp).catch(function () {\n // console.error(err);\n renderApp();\n });\n } else {\n renderApp();\n }\n});\n\nwindow.debug = window.debug || {};\nwindow.debug.setLevel = function () {};\n\n/***/ }),\n/* 382 */\n/***/ (function(module, exports) {\n\nmodule.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n/***/ }),\n/* 383 */\n/***/ (function(module, exports) {\n\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n/***/ }),\n/* 384 */\n/***/ (function(module, exports) {\n\nmodule.exports = now\n\nfunction now() {\n return new Date().getTime()\n}\n\n\n/***/ }),\n/* 385 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(386);\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 386 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24), __webpack_require__(48)))\n\n/***/ }),\n/* 387 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar PooledClass = __webpack_require__(388);\nvar ReactElement = __webpack_require__(80);\n\nvar emptyFunction = __webpack_require__(37);\nvar traverseAllChildren = __webpack_require__(389);\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n/***/ }),\n/* 388 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(79);\n\nvar invariant = __webpack_require__(5);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n/***/ }),\n/* 389 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(79);\n\nvar ReactCurrentOwner = __webpack_require__(49);\nvar REACT_ELEMENT_TYPE = __webpack_require__(227);\n\nvar getIteratorFn = __webpack_require__(228);\nvar invariant = __webpack_require__(5);\nvar KeyEscapeUtils = __webpack_require__(390);\nvar warning = __webpack_require__(6);\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (false) {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (false) {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n/***/ }),\n/* 390 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n/***/ }),\n/* 391 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar ReactComponent = __webpack_require__(158);\nvar ReactNoopUpdateQueue = __webpack_require__(159);\n\nvar emptyObject = __webpack_require__(100);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = ReactPureComponent;\n\n/***/ }),\n/* 392 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(79),\n _assign = __webpack_require__(15);\n\nvar ReactComponent = __webpack_require__(158);\nvar ReactElement = __webpack_require__(80);\nvar ReactPropTypeLocationNames = __webpack_require__(229);\nvar ReactNoopUpdateQueue = __webpack_require__(159);\n\nvar emptyObject = __webpack_require__(100);\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function (Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function (Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function (Constructor, childContextTypes) {\n if (false) {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);\n },\n contextTypes: function (Constructor, contextTypes) {\n if (false) {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function (Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function (Constructor, propTypes) {\n if (false) {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function (Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function () {} };\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but only in __DEV__\n false ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n }\n }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n !(specPolicy === 'OVERRIDE_BASE') ? false ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? false ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (false) {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;\n }\n\n return;\n }\n\n !(typeof spec !== 'function') ? false ? invariant(false, 'ReactClass: You\\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;\n !!ReactElement.isValidElement(spec) ? false ? invariant(false, 'ReactClass: You\\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? false ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (false) {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n !!isReserved ? false ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0;\n\n var isInherited = name in Constructor;\n !!isInherited ? false ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n !(one && two && typeof one === 'object' && typeof two === 'object') ? false ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n !(one[key] === undefined) ? false ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0;\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (false) {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function (newThis) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n } else if (!args.length) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n}\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function (newState, callback) {\n this.updater.enqueueReplaceState(this, newState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'replaceState');\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function () {\n return this.updater.isMounted(this);\n }\n};\n\nvar ReactClassComponent = function () {};\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function (spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function (props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (initialState === undefined && this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (false) {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n !Constructor.prototype.render ? false ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function (mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n/***/ }),\n/* 393 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactElement = __webpack_require__(80);\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (false) {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n/***/ }),\n/* 394 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactElement = __webpack_require__(80);\nvar ReactPropTypeLocationNames = __webpack_require__(229);\nvar ReactPropTypesSecret = __webpack_require__(395);\n\nvar emptyFunction = __webpack_require__(37);\nvar getIteratorFn = __webpack_require__(228);\nvar warning = __webpack_require__(6);\n\n/**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\nvar ANONYMOUS = '<<anonymous>>';\n\nvar ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n};\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n/*eslint-disable no-self-compare*/\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n/*eslint-enable no-self-compare*/\n\n/**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\nfunction PropTypeError(message) {\n this.message = message;\n this.stack = '';\n}\n// Make `instanceof Error` still work for returned errors.\nPropTypeError.prototype = Error.prototype;\n\nfunction createChainableTypeChecker(validate) {\n if (false) {\n var manualPropTypeCallCache = {};\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (false) {\n if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') {\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will not work in production with the next major version. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName) : void 0;\n manualPropTypeCallCache[cacheKey] = true;\n }\n }\n }\n if (props[propName] == null) {\n var locationName = ReactPropTypeLocationNames[location];\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n var locationName = ReactPropTypeLocationNames[location];\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturns(null));\n}\n\nfunction createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactElement.isValidElement(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var locationName = ReactPropTypeLocationNames[location];\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n false ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n false ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || ReactElement.isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n}\n\nfunction isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n}\n\n// Equivalent of `typeof` but with special handling for array and regexp.\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n}\n\n// This handles more types than `getPropType`. Only used for error messages.\n// See `createPrimitiveTypeChecker`.\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n}\n\n// Returns class name of the object, if any.\nfunction getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n}\n\nmodule.exports = ReactPropTypes;\n\n/***/ }),\n/* 395 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 396 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nmodule.exports = '15.4.2';\n\n/***/ }),\n/* 397 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\nvar _prodInvariant = __webpack_require__(79);\n\nvar ReactElement = __webpack_require__(80);\n\nvar invariant = __webpack_require__(5);\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? false ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n/***/ }),\n/* 398 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n\n\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactDefaultInjection = __webpack_require__(399);\nvar ReactMount = __webpack_require__(252);\nvar ReactReconciler = __webpack_require__(83);\nvar ReactUpdates = __webpack_require__(40);\nvar ReactVersion = __webpack_require__(471);\n\nvar findDOMNode = __webpack_require__(472);\nvar getHostComponentFromComposite = __webpack_require__(253);\nvar renderSubtreeIntoContainer = __webpack_require__(473);\nvar warning = __webpack_require__(6);\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (false) {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (false) {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n/***/ }),\n/* 399 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ARIADOMPropertyConfig = __webpack_require__(400);\nvar BeforeInputEventPlugin = __webpack_require__(401);\nvar ChangeEventPlugin = __webpack_require__(405);\nvar DefaultEventPluginOrder = __webpack_require__(408);\nvar EnterLeaveEventPlugin = __webpack_require__(409);\nvar HTMLDOMPropertyConfig = __webpack_require__(410);\nvar ReactComponentBrowserEnvironment = __webpack_require__(411);\nvar ReactDOMComponent = __webpack_require__(417);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactDOMEmptyComponent = __webpack_require__(442);\nvar ReactDOMTreeTraversal = __webpack_require__(443);\nvar ReactDOMTextComponent = __webpack_require__(444);\nvar ReactDefaultBatchingStrategy = __webpack_require__(445);\nvar ReactEventListener = __webpack_require__(446);\nvar ReactInjection = __webpack_require__(448);\nvar ReactReconcileTransaction = __webpack_require__(449);\nvar SVGDOMPropertyConfig = __webpack_require__(455);\nvar SelectEventPlugin = __webpack_require__(456);\nvar SimpleEventPlugin = __webpack_require__(457);\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n/***/ }),\n/* 400 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n/***/ }),\n/* 401 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(101);\nvar ExecutionEnvironment = __webpack_require__(31);\nvar FallbackCompositionState = __webpack_require__(402);\nvar SyntheticCompositionEvent = __webpack_require__(403);\nvar SyntheticInputEvent = __webpack_require__(404);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n/***/ }),\n/* 402 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar PooledClass = __webpack_require__(65);\n\nvar getTextContentAccessor = __webpack_require__(233);\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n/***/ }),\n/* 403 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(50);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n/***/ }),\n/* 404 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(50);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n/***/ }),\n/* 405 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(102);\nvar EventPropagators = __webpack_require__(101);\nvar ExecutionEnvironment = __webpack_require__(31);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactUpdates = __webpack_require__(40);\nvar SyntheticEvent = __webpack_require__(50);\n\nvar getEventTarget = __webpack_require__(163);\nvar isEventSupported = __webpack_require__(164);\nvar isTextInputElement = __webpack_require__(236);\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n // IE10+ fire input events to often, such when a placeholder\n // changes or when an input with a placeholder is focused.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);\n}\n\n/**\n * (For IE <=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function () {\n return activeElementValueProp.get.call(this);\n },\n set: function (val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For IE <=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');\n\n // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n // on DOM elements\n Object.defineProperty(activeElement, 'value', newValueProp);\n if (activeElement.attachEvent) {\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.addEventListener('propertychange', handlePropertyChange, false);\n }\n}\n\n/**\n * (For IE <=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n\n if (activeElement.detachEvent) {\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n }\n\n activeElement = null;\n activeElementInst = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For IE <=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n if (topLevelType === 'topInput') {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return targetInst;\n }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9-11, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementInst;\n }\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n if (topLevelType === 'topClick') {\n return targetInst;\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst);\n if (inst) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n/***/ }),\n/* 406 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactOwner = __webpack_require__(407);\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n/***/ }),\n/* 407 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar invariant = __webpack_require__(5);\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? false ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? false ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n\n/***/ }),\n/* 408 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n/***/ }),\n/* 409 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(101);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar SyntheticMouseEvent = __webpack_require__(120);\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n/***/ }),\n/* 410 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(82);\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {}\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n/***/ }),\n/* 411 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMChildrenOperations = __webpack_require__(166);\nvar ReactDOMIDOperations = __webpack_require__(416);\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n/***/ }),\n/* 412 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar DOMLazyTree = __webpack_require__(84);\nvar ExecutionEnvironment = __webpack_require__(31);\n\nvar createNodesFromMarkup = __webpack_require__(413);\nvar emptyFunction = __webpack_require__(37);\nvar invariant = __webpack_require__(5);\n\nvar Danger = {\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n\n};\n\nmodule.exports = Danger;\n\n/***/ }),\n/* 413 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = __webpack_require__(31);\n\nvar createArrayFromMixed = __webpack_require__(414);\nvar getMarkupWrap = __webpack_require__(415);\nvar invariant = __webpack_require__(5);\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? false ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? false ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n/***/ }),\n/* 414 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\nvar invariant = __webpack_require__(5);\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? false ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? false ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? false ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? false ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n/***/ }),\n/* 415 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = __webpack_require__(31);\n\nvar invariant = __webpack_require__(5);\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? false ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n/***/ }),\n/* 416 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMChildrenOperations = __webpack_require__(166);\nvar ReactDOMComponentTree = __webpack_require__(21);\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n/***/ }),\n/* 417 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n\n\nvar _prodInvariant = __webpack_require__(7),\n _assign = __webpack_require__(15);\n\nvar AutoFocusUtils = __webpack_require__(418);\nvar CSSPropertyOperations = __webpack_require__(419);\nvar DOMLazyTree = __webpack_require__(84);\nvar DOMNamespaces = __webpack_require__(167);\nvar DOMProperty = __webpack_require__(82);\nvar DOMPropertyOperations = __webpack_require__(241);\nvar EventPluginHub = __webpack_require__(102);\nvar EventPluginRegistry = __webpack_require__(160);\nvar ReactBrowserEventEmitter = __webpack_require__(123);\nvar ReactDOMComponentFlags = __webpack_require__(230);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactDOMInput = __webpack_require__(429);\nvar ReactDOMOption = __webpack_require__(431);\nvar ReactDOMSelect = __webpack_require__(242);\nvar ReactDOMTextarea = __webpack_require__(432);\nvar ReactInstrumentation = __webpack_require__(38);\nvar ReactMultiChild = __webpack_require__(433);\nvar ReactServerRenderingTransaction = __webpack_require__(440);\n\nvar emptyFunction = __webpack_require__(37);\nvar escapeTextContentForBrowser = __webpack_require__(122);\nvar invariant = __webpack_require__(5);\nvar isEventSupported = __webpack_require__(164);\nvar shallowEqual = __webpack_require__(171);\nvar validateDOMNesting = __webpack_require__(175);\nvar warning = __webpack_require__(6);\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { 'string': true, 'number': true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n false ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? false ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? false ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? false ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (false) {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (false) {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? false ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? false ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n};\n\nvar newlineEatingTags = {\n 'listing': true,\n 'pre': true,\n 'textarea': true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n 'menuitem': true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? false ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (false) {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (false) {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (false) {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (false) {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (false) {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (false) {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (false) {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (false) {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (false) {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (false) {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n true ? false ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (false) {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n/***/ }),\n/* 418 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMComponentTree = __webpack_require__(21);\n\nvar focusNode = __webpack_require__(239);\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n/***/ }),\n/* 419 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar CSSProperty = __webpack_require__(240);\nvar ExecutionEnvironment = __webpack_require__(31);\nvar ReactInstrumentation = __webpack_require__(38);\n\nvar camelizeStyleName = __webpack_require__(420);\nvar dangerousStyleValue = __webpack_require__(422);\nvar hyphenateStyleName = __webpack_require__(423);\nvar memoizeStringOnly = __webpack_require__(425);\nvar warning = __webpack_require__(6);\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (false) {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (false) {\n warnValidStyle(styleName, styleValue, component);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (false) {\n warnValidStyle(styleName, styles[styleName], component);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n/***/ }),\n/* 420 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\n\n\nvar camelize = __webpack_require__(421);\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n/***/ }),\n/* 421 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n/***/ }),\n/* 422 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar CSSProperty = __webpack_require__(240);\nvar warning = __webpack_require__(6);\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (false) {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n/***/ }),\n/* 423 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\n\n\nvar hyphenate = __webpack_require__(424);\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n/***/ }),\n/* 424 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n/***/ }),\n/* 425 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks static-only\n */\n\n\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n/***/ }),\n/* 426 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar escapeTextContentForBrowser = __webpack_require__(122);\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n/***/ }),\n/* 427 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(102);\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n/***/ }),\n/* 428 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(31);\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n/***/ }),\n/* 429 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7),\n _assign = __webpack_require__(15);\n\nvar DOMPropertyOperations = __webpack_require__(241);\nvar LinkedValueUtils = __webpack_require__(169);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactUpdates = __webpack_require__(40);\n\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (false) {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n\n if (false) {\n inst._wrapperState.controlled = isControlled(props);\n }\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (false) {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? false ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n/***/ }),\n/* 430 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 431 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar React = __webpack_require__(78);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactDOMSelect = __webpack_require__(242);\n\nvar warning = __webpack_require__(6);\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n false ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n\n};\n\nmodule.exports = ReactDOMOption;\n\n/***/ }),\n/* 432 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7),\n _assign = __webpack_require__(15);\n\nvar LinkedValueUtils = __webpack_require__(169);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactUpdates = __webpack_require__(40);\n\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (false) {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? false ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? false ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n/***/ }),\n/* 433 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar ReactComponentEnvironment = __webpack_require__(170);\nvar ReactInstanceMap = __webpack_require__(104);\nvar ReactInstrumentation = __webpack_require__(38);\n\nvar ReactCurrentOwner = __webpack_require__(49);\nvar ReactReconciler = __webpack_require__(83);\nvar ReactChildReconciler = __webpack_require__(434);\n\nvar emptyFunction = __webpack_require__(37);\nvar flattenChildren = __webpack_require__(439);\nvar invariant = __webpack_require__(5);\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (false) {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (false) {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (false) {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (false) {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (false) {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (false) {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n/***/ }),\n/* 434 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactReconciler = __webpack_require__(83);\n\nvar instantiateReactComponent = __webpack_require__(243);\nvar KeyEscapeUtils = __webpack_require__(173);\nvar shouldUpdateReactComponent = __webpack_require__(172);\nvar traverseAllChildren = __webpack_require__(247);\nvar warning = __webpack_require__(6);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && Object({\"NODE_ENV\":\"production\"}) && \"production\" === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = __webpack_require__(248);\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (false) {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n ) {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (false) {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n ) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(48)))\n\n/***/ }),\n/* 435 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7),\n _assign = __webpack_require__(15);\n\nvar React = __webpack_require__(78);\nvar ReactComponentEnvironment = __webpack_require__(170);\nvar ReactCurrentOwner = __webpack_require__(49);\nvar ReactErrorUtils = __webpack_require__(162);\nvar ReactInstanceMap = __webpack_require__(104);\nvar ReactInstrumentation = __webpack_require__(38);\nvar ReactNodeTypes = __webpack_require__(244);\nvar ReactReconciler = __webpack_require__(83);\n\nif (false) {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = __webpack_require__(100);\nvar invariant = __webpack_require__(5);\nvar shallowEqual = __webpack_require__(171);\nvar shouldUpdateReactComponent = __webpack_require__(172);\nvar warning = __webpack_require__(6);\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (false) {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? false ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (false) {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (false) {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (false) {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (false) {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (false) {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (false) {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (false) {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (false) {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (false) {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (false) {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? false ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (false) {\n this._checkContextTypes(Component.childContextTypes, childContext, 'childContext');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? false ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (false) {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? false ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (false) {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (false) {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (false) {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (false) {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (false) {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (\"production\" !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? false ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? false ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (false) {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n/***/ }),\n/* 436 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n/***/ }),\n/* 437 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ }),\n/* 438 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n/***/ }),\n/* 439 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar KeyEscapeUtils = __webpack_require__(173);\nvar traverseAllChildren = __webpack_require__(247);\nvar warning = __webpack_require__(6);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && Object({\"NODE_ENV\":\"production\"}) && \"production\" === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = __webpack_require__(248);\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (false) {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (false) {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(48)))\n\n/***/ }),\n/* 440 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar PooledClass = __webpack_require__(65);\nvar Transaction = __webpack_require__(119);\nvar ReactInstrumentation = __webpack_require__(38);\nvar ReactServerUpdateQueue = __webpack_require__(441);\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (false) {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n/***/ }),\n/* 441 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = __webpack_require__(174);\n\nvar warning = __webpack_require__(6);\n\nfunction warnNoop(publicInstance, callerName) {\n if (false) {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n/***/ }),\n/* 442 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar DOMLazyTree = __webpack_require__(84);\nvar ReactDOMComponentTree = __webpack_require__(21);\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n/***/ }),\n/* 443 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar invariant = __webpack_require__(5);\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? false ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n/***/ }),\n/* 444 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7),\n _assign = __webpack_require__(15);\n\nvar DOMChildrenOperations = __webpack_require__(166);\nvar DOMLazyTree = __webpack_require__(84);\nvar ReactDOMComponentTree = __webpack_require__(21);\n\nvar escapeTextContentForBrowser = __webpack_require__(122);\nvar invariant = __webpack_require__(5);\nvar validateDOMNesting = __webpack_require__(175);\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (false) {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? false ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n/***/ }),\n/* 445 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar ReactUpdates = __webpack_require__(40);\nvar Transaction = __webpack_require__(119);\n\nvar emptyFunction = __webpack_require__(37);\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n/***/ }),\n/* 446 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar EventListener = __webpack_require__(249);\nvar ExecutionEnvironment = __webpack_require__(31);\nvar PooledClass = __webpack_require__(65);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactUpdates = __webpack_require__(40);\n\nvar getEventTarget = __webpack_require__(163);\nvar getUnboundedScrollPosition = __webpack_require__(447);\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n/***/ }),\n/* 447 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\n\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n/***/ }),\n/* 448 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(82);\nvar EventPluginHub = __webpack_require__(102);\nvar EventPluginUtils = __webpack_require__(161);\nvar ReactComponentEnvironment = __webpack_require__(170);\nvar ReactEmptyComponent = __webpack_require__(245);\nvar ReactBrowserEventEmitter = __webpack_require__(123);\nvar ReactHostComponent = __webpack_require__(246);\nvar ReactUpdates = __webpack_require__(40);\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n/***/ }),\n/* 449 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(15);\n\nvar CallbackQueue = __webpack_require__(234);\nvar PooledClass = __webpack_require__(65);\nvar ReactBrowserEventEmitter = __webpack_require__(123);\nvar ReactInputSelection = __webpack_require__(250);\nvar ReactInstrumentation = __webpack_require__(38);\nvar Transaction = __webpack_require__(119);\nvar ReactUpdateQueue = __webpack_require__(174);\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (false) {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n/***/ }),\n/* 450 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(31);\n\nvar getNodeForCharacterOffset = __webpack_require__(451);\nvar getTextContentAccessor = __webpack_require__(233);\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n/***/ }),\n/* 451 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n/***/ }),\n/* 452 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 */\n\nvar isTextNode = __webpack_require__(453);\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n/***/ }),\n/* 453 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\nvar isNode = __webpack_require__(454);\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n/***/ }),\n/* 454 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n/***/ }),\n/* 455 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n/***/ }),\n/* 456 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(101);\nvar ExecutionEnvironment = __webpack_require__(31);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactInputSelection = __webpack_require__(250);\nvar SyntheticEvent = __webpack_require__(50);\n\nvar getActiveElement = __webpack_require__(251);\nvar isTextInputElement = __webpack_require__(236);\nvar shallowEqual = __webpack_require__(171);\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n/***/ }),\n/* 457 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar EventListener = __webpack_require__(249);\nvar EventPropagators = __webpack_require__(101);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar SyntheticAnimationEvent = __webpack_require__(458);\nvar SyntheticClipboardEvent = __webpack_require__(459);\nvar SyntheticEvent = __webpack_require__(50);\nvar SyntheticFocusEvent = __webpack_require__(460);\nvar SyntheticKeyboardEvent = __webpack_require__(461);\nvar SyntheticMouseEvent = __webpack_require__(120);\nvar SyntheticDragEvent = __webpack_require__(463);\nvar SyntheticTouchEvent = __webpack_require__(464);\nvar SyntheticTransitionEvent = __webpack_require__(465);\nvar SyntheticUIEvent = __webpack_require__(103);\nvar SyntheticWheelEvent = __webpack_require__(466);\n\nvar emptyFunction = __webpack_require__(37);\nvar getEventCharCode = __webpack_require__(176);\nvar invariant = __webpack_require__(5);\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? false ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n/***/ }),\n/* 458 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(50);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n/***/ }),\n/* 459 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(50);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n/***/ }),\n/* 460 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(103);\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n/***/ }),\n/* 461 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(103);\n\nvar getEventCharCode = __webpack_require__(176);\nvar getEventKey = __webpack_require__(462);\nvar getEventModifierState = __webpack_require__(165);\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n/***/ }),\n/* 462 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar getEventCharCode = __webpack_require__(176);\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n/***/ }),\n/* 463 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticMouseEvent = __webpack_require__(120);\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n/***/ }),\n/* 464 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(103);\n\nvar getEventModifierState = __webpack_require__(165);\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n/***/ }),\n/* 465 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(50);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n/***/ }),\n/* 466 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticMouseEvent = __webpack_require__(120);\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX :\n // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY :\n // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY :\n // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n/***/ }),\n/* 467 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar validateDOMNesting = __webpack_require__(175);\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (false) {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n/***/ }),\n/* 468 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n/***/ }),\n/* 469 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar adler32 = __webpack_require__(470);\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n/***/ }),\n/* 470 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n/***/ }),\n/* 471 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nmodule.exports = '15.4.2';\n\n/***/ }),\n/* 472 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar ReactCurrentOwner = __webpack_require__(49);\nvar ReactDOMComponentTree = __webpack_require__(21);\nvar ReactInstanceMap = __webpack_require__(104);\n\nvar getHostComponentFromComposite = __webpack_require__(253);\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(6);\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n true ? false ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n true ? false ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n/***/ }),\n/* 473 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactMount = __webpack_require__(252);\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n/***/ }),\n/* 474 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\nvar ReactPropTypesSecret = __webpack_require__(475);\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 475 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 476 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = __webpack_require__(179);\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n\n\n/***/ }),\n/* 477 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/** @license React v16.9.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nObject.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.suspense_list\"):\n60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.fundamental\"):60117,w=b?Symbol.for(\"react.responder\"):60118;function x(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case t:case r:case d:return u}}}function y(a){return x(a)===m}exports.typeOf=x;exports.AsyncMode=l;\nexports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===v||a.$$typeof===w)};exports.isAsyncMode=function(a){return y(a)||x(a)===l};exports.isConcurrentMode=y;exports.isContextConsumer=function(a){return x(a)===k};exports.isContextProvider=function(a){return x(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return x(a)===n};exports.isFragment=function(a){return x(a)===e};exports.isLazy=function(a){return x(a)===t};exports.isMemo=function(a){return x(a)===r};exports.isPortal=function(a){return x(a)===d};exports.isProfiler=function(a){return x(a)===g};exports.isStrictMode=function(a){return x(a)===f};exports.isSuspense=function(a){return x(a)===p};\n\n\n/***/ }),\n/* 478 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (freeGlobal);\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(24)))\n\n/***/ }),\n/* 479 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ponyfill_js__ = __webpack_require__(481);\n/* global window */\n\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (true) {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = Object(__WEBPACK_IMPORTED_MODULE_0__ponyfill_js__[\"a\" /* default */])(root);\n/* harmony default export */ __webpack_exports__[\"a\"] = (result);\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(24), __webpack_require__(480)(module)))\n\n/***/ }),\n/* 480 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(originalModule) {\r\n\tif(!originalModule.webpackPolyfill) {\r\n\t\tvar module = Object.create(originalModule);\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"exports\", {\r\n\t\t\tenumerable: true,\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 481 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = symbolObservablePonyfill;\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n\n\n/***/ }),\n/* 482 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (false) {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n/***/ }),\n/* 483 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createHashHistory = __webpack_require__(255);\n\nvar _createHashHistory2 = _interopRequireDefault(_createHashHistory);\n\nvar _useQueries = __webpack_require__(126);\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createTransitionManager = __webpack_require__(187);\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _InternalPropTypes = __webpack_require__(66);\n\nvar _RouterContext = __webpack_require__(127);\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _RouteUtils = __webpack_require__(58);\n\nvar _RouterUtils = __webpack_require__(263);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction isDeprecatedHistory(history) {\n return !history || !history.__v2_compatible__;\n}\n\n/* istanbul ignore next: sanity check */\nfunction isUnsupportedHistory(history) {\n // v3 histories expose getCurrentLocation, but aren't currently supported.\n return history && history.getCurrentLocation;\n}\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar func = _React$PropTypes.func;\nvar object = _React$PropTypes.object;\n\n/**\n * A <Router> is a high-level API for automatically setting up\n * a router that renders a <RouterContext> with all the props\n * it needs each time the URL changes.\n */\n\nvar Router = _react2.default.createClass({\n displayName: 'Router',\n\n\n propTypes: {\n history: object,\n children: _InternalPropTypes.routes,\n routes: _InternalPropTypes.routes, // alias for children\n render: func,\n createElement: func,\n onError: func,\n onUpdate: func,\n\n // Deprecated:\n parseQueryString: func,\n stringifyQuery: func,\n\n // PRIVATE: For client-side rehydration of server match.\n matchContext: object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n render: function render(props) {\n return _react2.default.createElement(_RouterContext2.default, props);\n }\n };\n },\n getInitialState: function getInitialState() {\n return {\n location: null,\n routes: null,\n params: null,\n components: null\n };\n },\n handleError: function handleError(error) {\n if (this.props.onError) {\n this.props.onError.call(this, error);\n } else {\n // Throw errors by default so we don't silently swallow them!\n throw error; // This error probably occurred in getChildRoutes or getComponents.\n }\n },\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n var _props = this.props;\n var parseQueryString = _props.parseQueryString;\n var stringifyQuery = _props.stringifyQuery;\n\n false ? (0, _routerWarning2.default)(!(parseQueryString || stringifyQuery), '`parseQueryString` and `stringifyQuery` are deprecated. Please create a custom history. http://tiny.cc/router-customquerystring') : void 0;\n\n var _createRouterObjects = this.createRouterObjects();\n\n var history = _createRouterObjects.history;\n var transitionManager = _createRouterObjects.transitionManager;\n var router = _createRouterObjects.router;\n\n\n this._unlisten = transitionManager.listen(function (error, state) {\n if (error) {\n _this.handleError(error);\n } else {\n _this.setState(state, _this.props.onUpdate);\n }\n });\n\n this.history = history;\n this.router = router;\n },\n createRouterObjects: function createRouterObjects() {\n var matchContext = this.props.matchContext;\n\n if (matchContext) {\n return matchContext;\n }\n\n var history = this.props.history;\n var _props2 = this.props;\n var routes = _props2.routes;\n var children = _props2.children;\n\n\n !!isUnsupportedHistory(history) ? false ? (0, _invariant2.default)(false, 'You have provided a history object created with history v3.x. ' + 'This version of React Router is not compatible with v3 history ' + 'objects. Please use history v2.x instead.') : (0, _invariant2.default)(false) : void 0;\n\n if (isDeprecatedHistory(history)) {\n history = this.wrapDeprecatedHistory(history);\n }\n\n var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes || children));\n var router = (0, _RouterUtils.createRouterObject)(history, transitionManager);\n var routingHistory = (0, _RouterUtils.createRoutingHistory)(history, transitionManager);\n\n return { history: routingHistory, transitionManager: transitionManager, router: router };\n },\n wrapDeprecatedHistory: function wrapDeprecatedHistory(history) {\n var _props3 = this.props;\n var parseQueryString = _props3.parseQueryString;\n var stringifyQuery = _props3.stringifyQuery;\n\n\n var createHistory = void 0;\n if (history) {\n false ? (0, _routerWarning2.default)(false, 'It appears you have provided a deprecated history object to `<Router/>`, please use a history provided by ' + 'React Router with `import { browserHistory } from \\'react-router\\'` or `import { hashHistory } from \\'react-router\\'`. ' + 'If you are using a custom history please create it with `useRouterHistory`, see http://tiny.cc/router-usinghistory for details.') : void 0;\n createHistory = function createHistory() {\n return history;\n };\n } else {\n false ? (0, _routerWarning2.default)(false, '`Router` no longer defaults the history prop to hash history. Please use the `hashHistory` singleton instead. http://tiny.cc/router-defaulthistory') : void 0;\n createHistory = _createHashHistory2.default;\n }\n\n return (0, _useQueries2.default)(createHistory)({ parseQueryString: parseQueryString, stringifyQuery: stringifyQuery });\n },\n\n\n /* istanbul ignore next: sanity check */\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n false ? (0, _routerWarning2.default)(nextProps.history === this.props.history, 'You cannot change <Router history>; it will be ignored') : void 0;\n\n false ? (0, _routerWarning2.default)((nextProps.routes || nextProps.children) === (this.props.routes || this.props.children), 'You cannot change <Router routes>; it will be ignored') : void 0;\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this._unlisten) this._unlisten();\n },\n render: function render() {\n var _state = this.state;\n var location = _state.location;\n var routes = _state.routes;\n var params = _state.params;\n var components = _state.components;\n var _props4 = this.props;\n var createElement = _props4.createElement;\n var render = _props4.render;\n\n var props = _objectWithoutProperties(_props4, ['createElement', 'render']);\n\n if (location == null) return null; // Async match\n\n // Only forward non-Router-specific props to routing context, as those are\n // the only ones that might be custom routing context props.\n Object.keys(Router.propTypes).forEach(function (propType) {\n return delete props[propType];\n });\n\n return render(_extends({}, props, {\n history: this.history,\n router: this.router,\n location: location,\n routes: routes,\n params: params,\n components: components,\n createElement: createElement\n }));\n }\n});\n\nexports.default = Router;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 484 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar objectKeys = __webpack_require__(258);\nvar isArguments = __webpack_require__(486);\nvar is = __webpack_require__(487);\nvar isRegex = __webpack_require__(488);\nvar flags = __webpack_require__(492);\nvar isDate = __webpack_require__(494);\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n\n\n/***/ }),\n/* 485 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = __webpack_require__(259); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n\n\n/***/ }),\n/* 486 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar toStr = Object.prototype.toString;\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn toStr.call(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\ttoStr.call(value) !== '[object Array]' &&\n\t\ttoStr.call(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n\n\n/***/ }),\n/* 487 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.is */\n\nvar NumberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t} else if (a === b) {\n\t\treturn true;\n\t} else if (NumberIsNaN(a) && NumberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n\n\n/***/ }),\n/* 488 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = __webpack_require__(489);\nvar regexExec = RegExp.prototype.exec;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar tryRegexExecCall = function tryRegexExec(value) {\n\ttry {\n\t\tvar lastIndex = value.lastIndex;\n\t\tvalue.lastIndex = 0;\n\n\t\tregexExec.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\tvalue.lastIndex = lastIndex;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar regexClass = '[object RegExp]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isRegex(value) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (!hasToStringTag) {\n\t\treturn toStr.call(value) === regexClass;\n\t}\n\n\tvar descriptor = gOPD(value, 'lastIndex');\n\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\tif (!hasLastIndexDataProperty) {\n\t\treturn false;\n\t}\n\n\treturn tryRegexExecCall(value);\n};\n\n\n/***/ }),\n/* 489 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar bind = __webpack_require__(490);\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\n\n/***/ }),\n/* 490 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(491);\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n/***/ }),\n/* 491 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n\n/***/ }),\n/* 492 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(184);\n\nvar implementation = __webpack_require__(260);\nvar getPolyfill = __webpack_require__(261);\nvar shim = __webpack_require__(493);\n\nvar flagsBound = Function.call.bind(implementation);\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n\n\n/***/ }),\n/* 493 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar supportsDescriptors = __webpack_require__(184).supportsDescriptors;\nvar getPolyfill = __webpack_require__(261);\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n\n\n/***/ }),\n/* 494 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateObject(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) { return false; }\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n\n\n/***/ }),\n/* 495 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nvar _slice = Array.prototype.slice;\nexports.loopAsync = loopAsync;\n\nfunction loopAsync(turns, work, callback) {\n var currentTurn = 0,\n isDone = false;\n var sync = false,\n hasNext = false,\n doneArgs = undefined;\n\n function done() {\n isDone = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n doneArgs = [].concat(_slice.call(arguments));\n return;\n }\n\n callback.apply(this, arguments);\n }\n\n function next() {\n if (isDone) {\n return;\n }\n\n hasNext = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n return;\n }\n\n sync = true;\n\n while (!isDone && currentTurn < turns && hasNext) {\n hasNext = false;\n work.call(this, currentTurn++, next, done);\n }\n\n sync = false;\n\n if (isDone) {\n // This means the loop finished synchronously.\n callback.apply(this, doneArgs);\n return;\n }\n\n if (currentTurn >= turns && hasNext) {\n isDone = true;\n callback();\n }\n }\n\n next();\n}\n\n/***/ }),\n/* 496 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _Actions = __webpack_require__(67);\n\nvar _PathUtils = __webpack_require__(68);\n\nfunction createLocation() {\n var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];\n\n if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n if (typeof action === 'object') {\n false ? _warning2['default'](false, 'The state (2nd) argument to createLocation is deprecated; use a ' + 'location descriptor instead') : undefined;\n\n location = _extends({}, location, { state: action });\n\n action = key || _Actions.POP;\n key = _fourthArg;\n }\n\n var pathname = location.pathname || '/';\n var search = location.search || '';\n var hash = location.hash || '';\n var state = location.state || null;\n\n return {\n pathname: pathname,\n search: search,\n hash: hash,\n state: state,\n action: action,\n key: key\n };\n}\n\nexports['default'] = createLocation;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 497 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar strictUriEncode = __webpack_require__(498);\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str) {\n\tif (typeof str !== 'string') {\n\t\treturn {};\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn {};\n\t}\n\n\treturn str.split('&').reduce(function (ret, param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\tkey = decodeURIComponent(key);\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tif (!ret.hasOwnProperty(key)) {\n\t\t\tret[key] = val;\n\t\t} else if (Array.isArray(ret[key])) {\n\t\t\tret[key].push(val);\n\t\t} else {\n\t\t\tret[key] = [ret[key], val];\n\t\t}\n\n\t\treturn ret;\n\t}, {});\n};\n\nexports.stringify = function (obj) {\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn key;\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\treturn val.slice().sort().map(function (val2) {\n\t\t\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val2);\n\t\t\t}).join('&');\n\t\t}\n\n\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\n\n/***/ }),\n/* 498 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n\n\n/***/ }),\n/* 499 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _PatternUtils = __webpack_require__(86);\n\nfunction routeParamsChanged(route, prevState, nextState) {\n if (!route.path) return false;\n\n var paramNames = (0, _PatternUtils.getParamNames)(route.path);\n\n return paramNames.some(function (paramName) {\n return prevState.params[paramName] !== nextState.params[paramName];\n });\n}\n\n/**\n * Returns an object of { leaveRoutes, changeRoutes, enterRoutes } determined by\n * the change from prevState to nextState. We leave routes if either\n * 1) they are not in the next state or 2) they are in the next state\n * but their params have changed (i.e. /users/123 => /users/456).\n *\n * leaveRoutes are ordered starting at the leaf route of the tree\n * we're leaving up to the common parent route. enterRoutes are ordered\n * from the top of the tree we're entering down to the leaf route.\n *\n * changeRoutes are any routes that didn't leave or enter during\n * the transition.\n */\nfunction computeChangedRoutes(prevState, nextState) {\n var prevRoutes = prevState && prevState.routes;\n var nextRoutes = nextState.routes;\n\n var leaveRoutes = void 0,\n changeRoutes = void 0,\n enterRoutes = void 0;\n if (prevRoutes) {\n (function () {\n var parentIsLeaving = false;\n leaveRoutes = prevRoutes.filter(function (route) {\n if (parentIsLeaving) {\n return true;\n } else {\n var isLeaving = nextRoutes.indexOf(route) === -1 || routeParamsChanged(route, prevState, nextState);\n if (isLeaving) parentIsLeaving = true;\n return isLeaving;\n }\n });\n\n // onLeave hooks start at the leaf route.\n leaveRoutes.reverse();\n\n enterRoutes = [];\n changeRoutes = [];\n\n nextRoutes.forEach(function (route) {\n var isNew = prevRoutes.indexOf(route) === -1;\n var paramsChanged = leaveRoutes.indexOf(route) !== -1;\n\n if (isNew || paramsChanged) enterRoutes.push(route);else changeRoutes.push(route);\n });\n })();\n } else {\n leaveRoutes = [];\n changeRoutes = [];\n enterRoutes = nextRoutes;\n }\n\n return {\n leaveRoutes: leaveRoutes,\n changeRoutes: changeRoutes,\n enterRoutes: enterRoutes\n };\n}\n\nexports.default = computeChangedRoutes;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 500 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.runEnterHooks = runEnterHooks;\nexports.runChangeHooks = runChangeHooks;\nexports.runLeaveHooks = runLeaveHooks;\n\nvar _AsyncUtils = __webpack_require__(188);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createTransitionHook(hook, route, asyncArity) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n hook.apply(route, args);\n\n if (hook.length < asyncArity) {\n var callback = args[args.length - 1];\n // Assume hook executes synchronously and\n // automatically call the callback.\n callback();\n }\n };\n}\n\nfunction getEnterHooks(routes) {\n return routes.reduce(function (hooks, route) {\n if (route.onEnter) hooks.push(createTransitionHook(route.onEnter, route, 3));\n\n return hooks;\n }, []);\n}\n\nfunction getChangeHooks(routes) {\n return routes.reduce(function (hooks, route) {\n if (route.onChange) hooks.push(createTransitionHook(route.onChange, route, 4));\n return hooks;\n }, []);\n}\n\nfunction runTransitionHooks(length, iter, callback) {\n if (!length) {\n callback();\n return;\n }\n\n var redirectInfo = void 0;\n function replace(location, deprecatedPathname, deprecatedQuery) {\n if (deprecatedPathname) {\n false ? (0, _routerWarning2.default)(false, '`replaceState(state, pathname, query) is deprecated; use `replace(location)` with a location descriptor instead. http://tiny.cc/router-isActivedeprecated') : void 0;\n redirectInfo = {\n pathname: deprecatedPathname,\n query: deprecatedQuery,\n state: location\n };\n\n return;\n }\n\n redirectInfo = location;\n }\n\n (0, _AsyncUtils.loopAsync)(length, function (index, next, done) {\n iter(index, replace, function (error) {\n if (error || redirectInfo) {\n done(error, redirectInfo); // No need to continue.\n } else {\n next();\n }\n });\n }, callback);\n}\n\n/**\n * Runs all onEnter hooks in the given array of routes in order\n * with onEnter(nextState, replace, callback) and calls\n * callback(error, redirectInfo) when finished. The first hook\n * to use replace short-circuits the loop.\n *\n * If a hook needs to run asynchronously, it may use the callback\n * function. However, doing so will cause the transition to pause,\n * which could lead to a non-responsive UI if the hook is slow.\n */\nfunction runEnterHooks(routes, nextState, callback) {\n var hooks = getEnterHooks(routes);\n return runTransitionHooks(hooks.length, function (index, replace, next) {\n hooks[index](nextState, replace, next);\n }, callback);\n}\n\n/**\n * Runs all onChange hooks in the given array of routes in order\n * with onChange(prevState, nextState, replace, callback) and calls\n * callback(error, redirectInfo) when finished. The first hook\n * to use replace short-circuits the loop.\n *\n * If a hook needs to run asynchronously, it may use the callback\n * function. However, doing so will cause the transition to pause,\n * which could lead to a non-responsive UI if the hook is slow.\n */\nfunction runChangeHooks(routes, state, nextState, callback) {\n var hooks = getChangeHooks(routes);\n return runTransitionHooks(hooks.length, function (index, replace, next) {\n hooks[index](state, nextState, replace, next);\n }, callback);\n}\n\n/**\n * Runs all onLeave hooks in the given array of routes in order.\n */\nfunction runLeaveHooks(routes, prevState) {\n for (var i = 0, len = routes.length; i < len; ++i) {\n if (routes[i].onLeave) routes[i].onLeave.call(routes[i], prevState);\n }\n}\n\n/***/ }),\n/* 501 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nexports.default = isActive;\n\nvar _PatternUtils = __webpack_require__(86);\n\nfunction deepEqual(a, b) {\n if (a == b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return deepEqual(item, b[index]);\n });\n }\n\n if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {\n for (var p in a) {\n if (!Object.prototype.hasOwnProperty.call(a, p)) {\n continue;\n }\n\n if (a[p] === undefined) {\n if (b[p] !== undefined) {\n return false;\n }\n } else if (!Object.prototype.hasOwnProperty.call(b, p)) {\n return false;\n } else if (!deepEqual(a[p], b[p])) {\n return false;\n }\n }\n\n return true;\n }\n\n return String(a) === String(b);\n}\n\n/**\n * Returns true if the current pathname matches the supplied one, net of\n * leading and trailing slash normalization. This is sufficient for an\n * indexOnly route match.\n */\nfunction pathIsActive(pathname, currentPathname) {\n // Normalize leading slash for consistency. Leading slash on pathname has\n // already been normalized in isActive. See caveat there.\n if (currentPathname.charAt(0) !== '/') {\n currentPathname = '/' + currentPathname;\n }\n\n // Normalize the end of both path names too. Maybe `/foo/` shouldn't show\n // `/foo` as active, but in this case, we would already have failed the\n // match.\n if (pathname.charAt(pathname.length - 1) !== '/') {\n pathname += '/';\n }\n if (currentPathname.charAt(currentPathname.length - 1) !== '/') {\n currentPathname += '/';\n }\n\n return currentPathname === pathname;\n}\n\n/**\n * Returns true if the given pathname matches the active routes and params.\n */\nfunction routeIsActive(pathname, routes, params) {\n var remainingPathname = pathname,\n paramNames = [],\n paramValues = [];\n\n // for...of would work here but it's probably slower post-transpilation.\n for (var i = 0, len = routes.length; i < len; ++i) {\n var route = routes[i];\n var pattern = route.path || '';\n\n if (pattern.charAt(0) === '/') {\n remainingPathname = pathname;\n paramNames = [];\n paramValues = [];\n }\n\n if (remainingPathname !== null && pattern) {\n var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n if (matched) {\n remainingPathname = matched.remainingPathname;\n paramNames = [].concat(paramNames, matched.paramNames);\n paramValues = [].concat(paramValues, matched.paramValues);\n } else {\n remainingPathname = null;\n }\n\n if (remainingPathname === '') {\n // We have an exact match on the route. Just check that all the params\n // match.\n // FIXME: This doesn't work on repeated params.\n return paramNames.every(function (paramName, index) {\n return String(paramValues[index]) === String(params[paramName]);\n });\n }\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if all key/value pairs in the given query are\n * currently active.\n */\nfunction queryIsActive(query, activeQuery) {\n if (activeQuery == null) return query == null;\n\n if (query == null) return true;\n\n return deepEqual(query, activeQuery);\n}\n\n/**\n * Returns true if a <Link> to the given pathname/query combination is\n * currently active.\n */\nfunction isActive(_ref, indexOnly, currentLocation, routes, params) {\n var pathname = _ref.pathname;\n var query = _ref.query;\n\n if (currentLocation == null) return false;\n\n // TODO: This is a bit ugly. It keeps around support for treating pathnames\n // without preceding slashes as absolute paths, but possibly also works\n // around the same quirks with basenames as in matchRoutes.\n if (pathname.charAt(0) !== '/') {\n pathname = '/' + pathname;\n }\n\n if (!pathIsActive(pathname, currentLocation.pathname)) {\n // The path check is necessary and sufficient for indexOnly, but otherwise\n // we still need to check the routes.\n if (indexOnly || !routeIsActive(pathname, routes, params)) {\n return false;\n }\n }\n\n return queryIsActive(query, currentLocation.query);\n}\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 502 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _AsyncUtils = __webpack_require__(188);\n\nvar _makeStateWithLocation = __webpack_require__(262);\n\nvar _makeStateWithLocation2 = _interopRequireDefault(_makeStateWithLocation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getComponentsForRoute(nextState, route, callback) {\n if (route.component || route.components) {\n callback(null, route.component || route.components);\n return;\n }\n\n var getComponent = route.getComponent || route.getComponents;\n if (!getComponent) {\n callback();\n return;\n }\n\n var location = nextState.location;\n\n var nextStateWithLocation = (0, _makeStateWithLocation2.default)(nextState, location);\n\n getComponent.call(route, nextStateWithLocation, callback);\n}\n\n/**\n * Asynchronously fetches all components needed for the given router\n * state and calls callback(error, components) when finished.\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getComponents method.\n */\nfunction getComponents(nextState, callback) {\n (0, _AsyncUtils.mapAsync)(nextState.routes, function (route, index, callback) {\n getComponentsForRoute(nextState, route, callback);\n }, callback);\n}\n\nexports.default = getComponents;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 503 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nexports.default = matchRoutes;\n\nvar _AsyncUtils = __webpack_require__(188);\n\nvar _makeStateWithLocation = __webpack_require__(262);\n\nvar _makeStateWithLocation2 = _interopRequireDefault(_makeStateWithLocation);\n\nvar _PatternUtils = __webpack_require__(86);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _RouteUtils = __webpack_require__(58);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getChildRoutes(route, location, paramNames, paramValues, callback) {\n if (route.childRoutes) {\n return [null, route.childRoutes];\n }\n if (!route.getChildRoutes) {\n return [];\n }\n\n var sync = true,\n result = void 0;\n\n var partialNextState = {\n location: location,\n params: createParams(paramNames, paramValues)\n };\n\n var partialNextStateWithLocation = (0, _makeStateWithLocation2.default)(partialNextState, location);\n\n route.getChildRoutes(partialNextStateWithLocation, function (error, childRoutes) {\n childRoutes = !error && (0, _RouteUtils.createRoutes)(childRoutes);\n if (sync) {\n result = [error, childRoutes];\n return;\n }\n\n callback(error, childRoutes);\n });\n\n sync = false;\n return result; // Might be undefined.\n}\n\nfunction getIndexRoute(route, location, paramNames, paramValues, callback) {\n if (route.indexRoute) {\n callback(null, route.indexRoute);\n } else if (route.getIndexRoute) {\n var partialNextState = {\n location: location,\n params: createParams(paramNames, paramValues)\n };\n\n var partialNextStateWithLocation = (0, _makeStateWithLocation2.default)(partialNextState, location);\n\n route.getIndexRoute(partialNextStateWithLocation, function (error, indexRoute) {\n callback(error, !error && (0, _RouteUtils.createRoutes)(indexRoute)[0]);\n });\n } else if (route.childRoutes) {\n (function () {\n var pathless = route.childRoutes.filter(function (childRoute) {\n return !childRoute.path;\n });\n\n (0, _AsyncUtils.loopAsync)(pathless.length, function (index, next, done) {\n getIndexRoute(pathless[index], location, paramNames, paramValues, function (error, indexRoute) {\n if (error || indexRoute) {\n var routes = [pathless[index]].concat(Array.isArray(indexRoute) ? indexRoute : [indexRoute]);\n done(error, routes);\n } else {\n next();\n }\n });\n }, function (err, routes) {\n callback(null, routes);\n });\n })();\n } else {\n callback();\n }\n}\n\nfunction assignParams(params, paramNames, paramValues) {\n return paramNames.reduce(function (params, paramName, index) {\n var paramValue = paramValues && paramValues[index];\n\n if (Array.isArray(params[paramName])) {\n params[paramName].push(paramValue);\n } else if (paramName in params) {\n params[paramName] = [params[paramName], paramValue];\n } else {\n params[paramName] = paramValue;\n }\n\n return params;\n }, params);\n}\n\nfunction createParams(paramNames, paramValues) {\n return assignParams({}, paramNames, paramValues);\n}\n\nfunction matchRouteDeep(route, location, remainingPathname, paramNames, paramValues, callback) {\n var pattern = route.path || '';\n\n if (pattern.charAt(0) === '/') {\n remainingPathname = location.pathname;\n paramNames = [];\n paramValues = [];\n }\n\n // Only try to match the path if the route actually has a pattern, and if\n // we're not just searching for potential nested absolute paths.\n if (remainingPathname !== null && pattern) {\n try {\n var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n if (matched) {\n remainingPathname = matched.remainingPathname;\n paramNames = [].concat(paramNames, matched.paramNames);\n paramValues = [].concat(paramValues, matched.paramValues);\n } else {\n remainingPathname = null;\n }\n } catch (error) {\n callback(error);\n }\n\n // By assumption, pattern is non-empty here, which is the prerequisite for\n // actually terminating a match.\n if (remainingPathname === '') {\n var _ret2 = function () {\n var match = {\n routes: [route],\n params: createParams(paramNames, paramValues)\n };\n\n getIndexRoute(route, location, paramNames, paramValues, function (error, indexRoute) {\n if (error) {\n callback(error);\n } else {\n if (Array.isArray(indexRoute)) {\n var _match$routes;\n\n false ? (0, _routerWarning2.default)(indexRoute.every(function (route) {\n return !route.path;\n }), 'Index routes should not have paths') : void 0;\n (_match$routes = match.routes).push.apply(_match$routes, indexRoute);\n } else if (indexRoute) {\n false ? (0, _routerWarning2.default)(!indexRoute.path, 'Index routes should not have paths') : void 0;\n match.routes.push(indexRoute);\n }\n\n callback(null, match);\n }\n });\n\n return {\n v: void 0\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n }\n }\n\n if (remainingPathname != null || route.childRoutes) {\n // Either a) this route matched at least some of the path or b)\n // we don't have to load this route's children asynchronously. In\n // either case continue checking for matches in the subtree.\n var onChildRoutes = function onChildRoutes(error, childRoutes) {\n if (error) {\n callback(error);\n } else if (childRoutes) {\n // Check the child routes to see if any of them match.\n matchRoutes(childRoutes, location, function (error, match) {\n if (error) {\n callback(error);\n } else if (match) {\n // A child route matched! Augment the match and pass it up the stack.\n match.routes.unshift(route);\n callback(null, match);\n } else {\n callback();\n }\n }, remainingPathname, paramNames, paramValues);\n } else {\n callback();\n }\n };\n\n var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);\n if (result) {\n onChildRoutes.apply(undefined, result);\n }\n } else {\n callback();\n }\n}\n\n/**\n * Asynchronously matches the given location to a set of routes and calls\n * callback(error, state) when finished. The state object will have the\n * following properties:\n *\n * - routes An array of routes that matched, in hierarchical order\n * - params An object of URL parameters\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getChildRoutes method.\n */\nfunction matchRoutes(routes, location, callback, remainingPathname) {\n var paramNames = arguments.length <= 4 || arguments[4] === undefined ? [] : arguments[4];\n var paramValues = arguments.length <= 5 || arguments[5] === undefined ? [] : arguments[5];\n\n if (remainingPathname === undefined) {\n // TODO: This is a little bit ugly, but it works around a quirk in history\n // that strips the leading slash from pathnames when using basenames with\n // trailing slashes.\n if (location.pathname.charAt(0) !== '/') {\n location = _extends({}, location, {\n pathname: '/' + location.pathname\n });\n }\n remainingPathname = location.pathname;\n }\n\n (0, _AsyncUtils.loopAsync)(routes.length, function (index, next, done) {\n matchRouteDeep(routes[index], location, remainingPathname, paramNames, paramValues, function (error, match) {\n if (error || match) {\n done(error, match);\n } else {\n next();\n }\n });\n }, callback);\n}\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 504 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _PatternUtils = __webpack_require__(86);\n\n/**\n * Extracts an object of params the given route cares about from\n * the given params object.\n */\nfunction getRouteParams(route, params) {\n var routeParams = {};\n\n if (!route.path) return routeParams;\n\n (0, _PatternUtils.getParamNames)(route.path).forEach(function (p) {\n if (Object.prototype.hasOwnProperty.call(params, p)) {\n routeParams[p] = params[p];\n }\n });\n\n return routeParams;\n}\n\nexports.default = getRouteParams;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 505 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Link = __webpack_require__(264);\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An <IndexLink> is used to link to an <IndexRoute>.\n */\nvar IndexLink = _react2.default.createClass({\n displayName: 'IndexLink',\n render: function render() {\n return _react2.default.createElement(_Link2.default, _extends({}, this.props, { onlyActiveOnIndex: true }));\n }\n});\n\nexports.default = IndexLink;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 506 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = withRouter;\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _hoistNonReactStatics = __webpack_require__(105);\n\nvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\nvar _PropTypes = __webpack_require__(181);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nfunction withRouter(WrappedComponent, options) {\n var withRef = options && options.withRef;\n\n var WithRouter = _react2.default.createClass({\n displayName: 'WithRouter',\n\n contextTypes: { router: _PropTypes.routerShape },\n propTypes: { router: _PropTypes.routerShape },\n\n getWrappedInstance: function getWrappedInstance() {\n !withRef ? false ? (0, _invariant2.default)(false, 'To access the wrapped instance, you need to specify ' + '`{ withRef: true }` as the second argument of the withRouter() call.') : (0, _invariant2.default)(false) : void 0;\n\n return this.wrappedInstance;\n },\n render: function render() {\n var _this = this;\n\n var router = this.props.router || this.context.router;\n var props = _extends({}, this.props, { router: router });\n\n if (withRef) {\n props.ref = function (c) {\n _this.wrappedInstance = c;\n };\n }\n\n return _react2.default.createElement(WrappedComponent, props);\n }\n });\n\n WithRouter.displayName = 'withRouter(' + getDisplayName(WrappedComponent) + ')';\n WithRouter.WrappedComponent = WrappedComponent;\n\n return (0, _hoistNonReactStatics2.default)(WithRouter, WrappedComponent);\n}\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 507 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Redirect = __webpack_require__(265);\n\nvar _Redirect2 = _interopRequireDefault(_Redirect);\n\nvar _InternalPropTypes = __webpack_require__(66);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar string = _React$PropTypes.string;\nvar object = _React$PropTypes.object;\n\n/**\n * An <IndexRedirect> is used to redirect from an indexRoute.\n */\n\nvar IndexRedirect = _react2.default.createClass({\n displayName: 'IndexRedirect',\n\n\n statics: {\n createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n /* istanbul ignore else: sanity check */\n if (parentRoute) {\n parentRoute.indexRoute = _Redirect2.default.createRouteFromReactElement(element);\n } else {\n false ? (0, _routerWarning2.default)(false, 'An <IndexRedirect> does not make sense at the root of your route config') : void 0;\n }\n }\n },\n\n propTypes: {\n to: string.isRequired,\n query: object,\n state: object,\n onEnter: _InternalPropTypes.falsy,\n children: _InternalPropTypes.falsy\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n true ? false ? (0, _invariant2.default)(false, '<IndexRedirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = IndexRedirect;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 508 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = __webpack_require__(58);\n\nvar _InternalPropTypes = __webpack_require__(66);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar func = _react2.default.PropTypes.func;\n\n/**\n * An <IndexRoute> is used to specify its parent's <Route indexRoute> in\n * a JSX route config.\n */\n\nvar IndexRoute = _react2.default.createClass({\n displayName: 'IndexRoute',\n\n\n statics: {\n createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n /* istanbul ignore else: sanity check */\n if (parentRoute) {\n parentRoute.indexRoute = (0, _RouteUtils.createRouteFromReactElement)(element);\n } else {\n false ? (0, _routerWarning2.default)(false, 'An <IndexRoute> does not make sense at the root of your route config') : void 0;\n }\n }\n },\n\n propTypes: {\n path: _InternalPropTypes.falsy,\n component: _InternalPropTypes.component,\n components: _InternalPropTypes.components,\n getComponent: func,\n getComponents: func\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n true ? false ? (0, _invariant2.default)(false, '<IndexRoute> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = IndexRoute;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 509 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = __webpack_require__(58);\n\nvar _InternalPropTypes = __webpack_require__(66);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar string = _React$PropTypes.string;\nvar func = _React$PropTypes.func;\n\n/**\n * A <Route> is used to declare which components are rendered to the\n * page when the URL matches a given pattern.\n *\n * Routes are arranged in a nested tree structure. When a new URL is\n * requested, the tree is searched depth-first to find a route whose\n * path matches the URL. When one is found, all routes in the tree\n * that lead to it are considered \"active\" and their components are\n * rendered into the DOM, nested in the same order as in the tree.\n */\n\nvar Route = _react2.default.createClass({\n displayName: 'Route',\n\n\n statics: {\n createRouteFromReactElement: _RouteUtils.createRouteFromReactElement\n },\n\n propTypes: {\n path: string,\n component: _InternalPropTypes.component,\n components: _InternalPropTypes.components,\n getComponent: func,\n getComponents: func\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n true ? false ? (0, _invariant2.default)(false, '<Route> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = Route;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 510 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _InternalPropTypes = __webpack_require__(66);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A mixin that adds the \"history\" instance variable to components.\n */\nvar History = {\n\n contextTypes: {\n history: _InternalPropTypes.history\n },\n\n componentWillMount: function componentWillMount() {\n false ? (0, _routerWarning2.default)(false, 'the `History` mixin is deprecated, please access `context.router` with your own `contextTypes`. http://tiny.cc/router-historymixin') : void 0;\n this.history = this.context.history;\n }\n};\n\nexports.default = History;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 511 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar object = _react2.default.PropTypes.object;\n\n/**\n * The Lifecycle mixin adds the routerWillLeave lifecycle method to a\n * component that may be used to cancel a transition or prompt the user\n * for confirmation.\n *\n * On standard transitions, routerWillLeave receives a single argument: the\n * location we're transitioning to. To cancel the transition, return false.\n * To prompt the user for confirmation, return a prompt message (string).\n *\n * During the beforeunload event (assuming you're using the useBeforeUnload\n * history enhancer), routerWillLeave does not receive a location object\n * because it isn't possible for us to know the location we're transitioning\n * to. In this case routerWillLeave must return a prompt message to prevent\n * the user from closing the window/tab.\n */\n\nvar Lifecycle = {\n\n contextTypes: {\n history: object.isRequired,\n // Nested children receive the route as context, either\n // set by the route component using the RouteContext mixin\n // or by some other ancestor.\n route: object\n },\n\n propTypes: {\n // Route components receive the route object as a prop.\n route: object\n },\n\n componentDidMount: function componentDidMount() {\n false ? (0, _routerWarning2.default)(false, 'the `Lifecycle` mixin is deprecated, please use `context.router.setRouteLeaveHook(route, hook)`. http://tiny.cc/router-lifecyclemixin') : void 0;\n !this.routerWillLeave ? false ? (0, _invariant2.default)(false, 'The Lifecycle mixin requires you to define a routerWillLeave method') : (0, _invariant2.default)(false) : void 0;\n\n var route = this.props.route || this.context.route;\n\n !route ? false ? (0, _invariant2.default)(false, 'The Lifecycle mixin must be used on either a) a <Route component> or ' + 'b) a descendant of a <Route component> that uses the RouteContext mixin') : (0, _invariant2.default)(false) : void 0;\n\n this._unlistenBeforeLeavingRoute = this.context.history.listenBeforeLeavingRoute(route, this.routerWillLeave);\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this._unlistenBeforeLeavingRoute) this._unlistenBeforeLeavingRoute();\n }\n};\n\nexports.default = Lifecycle;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 512 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar object = _react2.default.PropTypes.object;\n\n/**\n * The RouteContext mixin provides a convenient way for route\n * components to set the route in context. This is needed for\n * routes that render elements that want to use the Lifecycle\n * mixin to prevent transitions.\n */\n\nvar RouteContext = {\n\n propTypes: {\n route: object.isRequired\n },\n\n childContextTypes: {\n route: object.isRequired\n },\n\n getChildContext: function getChildContext() {\n return {\n route: this.props.route\n };\n },\n componentWillMount: function componentWillMount() {\n false ? (0, _routerWarning2.default)(false, 'The `RouteContext` mixin is deprecated. You can provide `this.props.route` on context with your own `contextTypes`. http://tiny.cc/router-routecontextmixin') : void 0;\n }\n};\n\nexports.default = RouteContext;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 513 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _useQueries = __webpack_require__(126);\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _createTransitionManager = __webpack_require__(187);\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know about routing.\n *\n * Enhances history objects with the following methods:\n *\n * - listen((error, nextState) => {})\n * - listenBeforeLeavingRoute(route, (nextLocation) => {})\n * - match(location, (error, redirectLocation, nextState) => {})\n * - isActive(pathname, query, indexOnly=false)\n */\nfunction useRoutes(createHistory) {\n false ? (0, _routerWarning2.default)(false, '`useRoutes` is deprecated. Please use `createTransitionManager` instead.') : void 0;\n\n return function () {\n var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var routes = _ref.routes;\n\n var options = _objectWithoutProperties(_ref, ['routes']);\n\n var history = (0, _useQueries2.default)(createHistory)(options);\n var transitionManager = (0, _createTransitionManager2.default)(history, routes);\n return _extends({}, history, transitionManager);\n };\n}\n\nexports.default = useRoutes;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 514 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RouterContext = __webpack_require__(127);\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RoutingContext = _react2.default.createClass({\n displayName: 'RoutingContext',\n componentWillMount: function componentWillMount() {\n false ? (0, _routerWarning2.default)(false, '`RoutingContext` has been renamed to `RouterContext`. Please use `import { RouterContext } from \\'react-router\\'`. http://tiny.cc/router-routercontext') : void 0;\n },\n render: function render() {\n return _react2.default.createElement(_RouterContext2.default, this.props);\n }\n});\n\nexports.default = RoutingContext;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 515 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _Actions = __webpack_require__(67);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _createMemoryHistory = __webpack_require__(266);\n\nvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\nvar _createTransitionManager = __webpack_require__(187);\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _RouteUtils = __webpack_require__(58);\n\nvar _RouterUtils = __webpack_require__(263);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/**\n * A high-level API to be used for server-side rendering.\n *\n * This function matches a location to a set of routes and calls\n * callback(error, redirectLocation, renderProps) when finished.\n *\n * Note: You probably don't want to use this in a browser unless you're using\n * server-side rendering with async routes.\n */\nfunction match(_ref, callback) {\n var history = _ref.history;\n var routes = _ref.routes;\n var location = _ref.location;\n\n var options = _objectWithoutProperties(_ref, ['history', 'routes', 'location']);\n\n !(history || location) ? false ? (0, _invariant2.default)(false, 'match needs a history or a location') : (0, _invariant2.default)(false) : void 0;\n\n history = history ? history : (0, _createMemoryHistory2.default)(options);\n var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes));\n\n var unlisten = void 0;\n\n if (location) {\n // Allow match({ location: '/the/path', ... })\n location = history.createLocation(location);\n } else {\n // Pick up the location from the history via synchronous history.listen\n // call if needed.\n unlisten = history.listen(function (historyLocation) {\n location = historyLocation;\n });\n }\n\n var router = (0, _RouterUtils.createRouterObject)(history, transitionManager);\n history = (0, _RouterUtils.createRoutingHistory)(history, transitionManager);\n\n transitionManager.match(location, function (error, redirectLocation, nextState) {\n callback(error, redirectLocation && router.createLocation(redirectLocation, _Actions.REPLACE), nextState && _extends({}, nextState, {\n history: history,\n router: router,\n matchContext: { history: history, transitionManager: transitionManager, router: router }\n }));\n\n // Defer removing the listener to here to prevent DOM histories from having\n // to unwind DOM event listeners unnecessarily, in case callback renders a\n // <Router> and attaches another history listener.\n if (unlisten) {\n unlisten();\n }\n });\n}\n\nexports.default = match;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 516 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = __webpack_require__(41);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _PathUtils = __webpack_require__(68);\n\nvar _Actions = __webpack_require__(67);\n\nvar _createHistory = __webpack_require__(257);\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createStateStorage(entries) {\n return entries.filter(function (entry) {\n return entry.state;\n }).reduce(function (memo, entry) {\n memo[entry.key] = entry.state;\n return memo;\n }, {});\n}\n\nfunction createMemoryHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n if (Array.isArray(options)) {\n options = { entries: options };\n } else if (typeof options === 'string') {\n options = { entries: [options] };\n }\n\n var history = _createHistory2['default'](_extends({}, options, {\n getCurrentLocation: getCurrentLocation,\n finishTransition: finishTransition,\n saveState: saveState,\n go: go\n }));\n\n var _options = options;\n var entries = _options.entries;\n var current = _options.current;\n\n if (typeof entries === 'string') {\n entries = [entries];\n } else if (!Array.isArray(entries)) {\n entries = ['/'];\n }\n\n entries = entries.map(function (entry) {\n var key = history.createKey();\n\n if (typeof entry === 'string') return { pathname: entry, key: key };\n\n if (typeof entry === 'object' && entry) return _extends({}, entry, { key: key });\n\n true ? false ? _invariant2['default'](false, 'Unable to create history entry from %s', entry) : _invariant2['default'](false) : undefined;\n });\n\n if (current == null) {\n current = entries.length - 1;\n } else {\n !(current >= 0 && current < entries.length) ? false ? _invariant2['default'](false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : _invariant2['default'](false) : undefined;\n }\n\n var storage = createStateStorage(entries);\n\n function saveState(key, state) {\n storage[key] = state;\n }\n\n function readState(key) {\n return storage[key];\n }\n\n function getCurrentLocation() {\n var entry = entries[current];\n var basename = entry.basename;\n var pathname = entry.pathname;\n var search = entry.search;\n\n var path = (basename || '') + pathname + (search || '');\n\n var key = undefined,\n state = undefined;\n if (entry.key) {\n key = entry.key;\n state = readState(key);\n } else {\n key = history.createKey();\n state = null;\n entry.key = key;\n }\n\n var location = _PathUtils.parsePath(path);\n\n return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n }\n\n function canGo(n) {\n var index = current + n;\n return index >= 0 && index < entries.length;\n }\n\n function go(n) {\n if (n) {\n if (!canGo(n)) {\n false ? _warning2['default'](false, 'Cannot go(%s) there is not enough history', n) : undefined;\n return;\n }\n\n current += n;\n\n var currentLocation = getCurrentLocation();\n\n // change action to POP\n history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));\n }\n }\n\n function finishTransition(location) {\n switch (location.action) {\n case _Actions.PUSH:\n current += 1;\n\n // if we are not on the top of stack\n // remove rest and push new\n if (current < entries.length) entries.splice(current);\n\n entries.push(location);\n saveState(location.key, location.state);\n break;\n case _Actions.REPLACE:\n entries[current] = location;\n saveState(location.key, location.state);\n break;\n }\n }\n\n return history;\n}\n\nexports['default'] = createMemoryHistory;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 517 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RouterContext = __webpack_require__(127);\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _routerWarning = __webpack_require__(26);\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n if (false) {\n middlewares.forEach(function (middleware, index) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(middleware.renderRouterContext || middleware.renderRouteComponent, 'The middleware specified at index ' + index + ' does not appear to be ' + 'a valid React Router middleware.') : void 0;\n });\n }\n\n var withContext = middlewares.map(function (middleware) {\n return middleware.renderRouterContext;\n }).filter(Boolean);\n var withComponent = middlewares.map(function (middleware) {\n return middleware.renderRouteComponent;\n }).filter(Boolean);\n\n var makeCreateElement = function makeCreateElement() {\n var baseCreateElement = arguments.length <= 0 || arguments[0] === undefined ? _react.createElement : arguments[0];\n return function (Component, props) {\n return withComponent.reduceRight(function (previous, renderRouteComponent) {\n return renderRouteComponent(previous, props);\n }, baseCreateElement(Component, props));\n };\n };\n\n return function (renderProps) {\n return withContext.reduceRight(function (previous, renderRouterContext) {\n return renderRouterContext(previous, renderProps);\n }, _react2.default.createElement(_RouterContext2.default, _extends({}, renderProps, {\n createElement: makeCreateElement(renderProps.createElement)\n })));\n };\n};\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 518 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _createBrowserHistory = __webpack_require__(519);\n\nvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\nvar _createRouterHistory = __webpack_require__(269);\n\nvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createRouterHistory2.default)(_createBrowserHistory2.default);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 519 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = __webpack_require__(25);\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = __webpack_require__(67);\n\nvar _PathUtils = __webpack_require__(68);\n\nvar _ExecutionEnvironment = __webpack_require__(125);\n\nvar _DOMUtils = __webpack_require__(182);\n\nvar _DOMStateStorage = __webpack_require__(183);\n\nvar _createDOMHistory = __webpack_require__(256);\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve URLs.\n */\nfunction createBrowserHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n !_ExecutionEnvironment.canUseDOM ? false ? _invariant2['default'](false, 'Browser history needs a DOM') : _invariant2['default'](false) : undefined;\n\n var forceRefresh = options.forceRefresh;\n\n var isSupported = _DOMUtils.supportsHistory();\n var useRefresh = !isSupported || forceRefresh;\n\n function getCurrentLocation(historyState) {\n try {\n historyState = historyState || window.history.state || {};\n } catch (e) {\n historyState = {};\n }\n\n var path = _DOMUtils.getWindowPath();\n var _historyState = historyState;\n var key = _historyState.key;\n\n var state = undefined;\n if (key) {\n state = _DOMStateStorage.readState(key);\n } else {\n state = null;\n key = history.createKey();\n\n if (isSupported) window.history.replaceState(_extends({}, historyState, { key: key }), null);\n }\n\n var location = _PathUtils.parsePath(path);\n\n return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n }\n\n function startPopStateListener(_ref) {\n var transitionTo = _ref.transitionTo;\n\n function popStateListener(event) {\n if (event.state === undefined) return; // Ignore extraneous popstate events in WebKit.\n\n transitionTo(getCurrentLocation(event.state));\n }\n\n _DOMUtils.addEventListener(window, 'popstate', popStateListener);\n\n return function () {\n _DOMUtils.removeEventListener(window, 'popstate', popStateListener);\n };\n }\n\n function finishTransition(location) {\n var basename = location.basename;\n var pathname = location.pathname;\n var search = location.search;\n var hash = location.hash;\n var state = location.state;\n var action = location.action;\n var key = location.key;\n\n if (action === _Actions.POP) return; // Nothing to do.\n\n _DOMStateStorage.saveState(key, state);\n\n var path = (basename || '') + pathname + search + hash;\n var historyState = {\n key: key\n };\n\n if (action === _Actions.PUSH) {\n if (useRefresh) {\n window.location.href = path;\n return false; // Prevent location update.\n } else {\n window.history.pushState(historyState, null, path);\n }\n } else {\n // REPLACE\n if (useRefresh) {\n window.location.replace(path);\n return false; // Prevent location update.\n } else {\n window.history.replaceState(historyState, null, path);\n }\n }\n }\n\n var history = _createDOMHistory2['default'](_extends({}, options, {\n getCurrentLocation: getCurrentLocation,\n finishTransition: finishTransition,\n saveState: _DOMStateStorage.saveState\n }));\n\n var listenerCount = 0,\n stopPopStateListener = undefined;\n\n function listenBefore(listener) {\n if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n var unlisten = history.listenBefore(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopPopStateListener();\n };\n }\n\n function listen(listener) {\n if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n var unlisten = history.listen(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopPopStateListener();\n };\n }\n\n // deprecated\n function registerTransitionHook(hook) {\n if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n history.registerTransitionHook(hook);\n }\n\n // deprecated\n function unregisterTransitionHook(hook) {\n history.unregisterTransitionHook(hook);\n\n if (--listenerCount === 0) stopPopStateListener();\n }\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n registerTransitionHook: registerTransitionHook,\n unregisterTransitionHook: unregisterTransitionHook\n });\n}\n\nexports['default'] = createBrowserHistory;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 520 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _createHashHistory = __webpack_require__(255);\n\nvar _createHashHistory2 = _interopRequireDefault(_createHashHistory);\n\nvar _createRouterHistory = __webpack_require__(269);\n\nvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createRouterHistory2.default)(_createHashHistory2.default);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 521 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = useScroll;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _ScrollBehaviorContainer = __webpack_require__(522);\n\nvar _ScrollBehaviorContainer2 = _interopRequireDefault(_ScrollBehaviorContainer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction useScroll(shouldUpdateScroll) {\n return {\n renderRouterContext: function renderRouterContext(child, props) {\n return _react2.default.createElement(\n _ScrollBehaviorContainer2.default,\n {\n shouldUpdateScroll: shouldUpdateScroll,\n routerProps: props\n },\n child\n );\n }\n };\n}\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 522 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _ScrollBehavior = __webpack_require__(523);\n\nvar _ScrollBehavior2 = _interopRequireDefault(_ScrollBehavior);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ScrollBehaviorContainer = function (_React$Component) {\n _inherits(ScrollBehaviorContainer, _React$Component);\n\n function ScrollBehaviorContainer() {\n _classCallCheck(this, ScrollBehaviorContainer);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ScrollBehaviorContainer.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var routerProps = this.props.routerProps;\n\n\n this.scrollBehavior = new _ScrollBehavior2.default(routerProps.router, function () {\n return _this2.props.routerProps.location;\n });\n\n this.onUpdate(null, routerProps);\n };\n\n ScrollBehaviorContainer.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var routerProps = this.props.routerProps;\n\n var prevRouterProps = prevProps.routerProps;\n\n if (routerProps.location === prevRouterProps.location) {\n return;\n }\n\n this.onUpdate(prevRouterProps, routerProps);\n };\n\n ScrollBehaviorContainer.prototype.componentWillUnmount = function componentWillUnmount() {\n this.scrollBehavior.stop();\n };\n\n ScrollBehaviorContainer.prototype.onUpdate = function onUpdate(prevRouterProps, routerProps) {\n var shouldUpdateScroll = this.props.shouldUpdateScroll;\n\n\n var scrollPosition = void 0;\n if (!shouldUpdateScroll) {\n scrollPosition = true;\n } else {\n scrollPosition = shouldUpdateScroll.call(this.scrollBehavior, prevRouterProps, routerProps);\n }\n\n this.scrollBehavior.updateScroll(scrollPosition);\n };\n\n ScrollBehaviorContainer.prototype.render = function render() {\n return this.props.children;\n };\n\n return ScrollBehaviorContainer;\n}(_react2.default.Component);\n\nScrollBehaviorContainer.propTypes = {\n shouldUpdateScroll: _react2.default.PropTypes.func,\n routerProps: _react2.default.PropTypes.object.isRequired,\n children: _react2.default.PropTypes.node.isRequired\n};\nexports.default = ScrollBehaviorContainer;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 523 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _off = __webpack_require__(524);\n\nvar _off2 = _interopRequireDefault(_off);\n\nvar _on = __webpack_require__(525);\n\nvar _on2 = _interopRequireDefault(_on);\n\nvar _scrollLeft = __webpack_require__(526);\n\nvar _scrollLeft2 = _interopRequireDefault(_scrollLeft);\n\nvar _scrollTop = __webpack_require__(527);\n\nvar _scrollTop2 = _interopRequireDefault(_scrollTop);\n\nvar _requestAnimationFrame = __webpack_require__(528);\n\nvar _requestAnimationFrame2 = _interopRequireDefault(_requestAnimationFrame);\n\nvar _Actions = __webpack_require__(67);\n\nvar _DOMStateStorage = __webpack_require__(183);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } } /* eslint-disable no-underscore-dangle */\n\n// FIXME: Stop using this gross hack. This won't collide with any actual\n// history location keys, but it's dirty to sneakily use the same storage here.\nvar KEY_PREFIX = 's/';\n\n// Try at most this many times to scroll, to avoid getting stuck.\nvar MAX_SCROLL_ATTEMPTS = 2;\n\nvar ScrollBehavior = function () {\n function ScrollBehavior(history, getCurrentLocation) {\n var _this = this;\n\n _classCallCheck(this, ScrollBehavior);\n\n this._onScroll = function () {\n // It's possible that this scroll operation was triggered by what will be a\n // `POP` transition. Instead of updating the saved location immediately, we\n // have to enqueue the update, then potentially cancel it if we observe a\n // location update.\n if (_this._savePositionHandle === null) {\n _this._savePositionHandle = (0, _requestAnimationFrame2.default)(_this._savePosition);\n }\n\n if (_this._scrollTarget) {\n var _scrollTarget = _this._scrollTarget;\n var xTarget = _scrollTarget[0];\n var yTarget = _scrollTarget[1];\n\n var x = (0, _scrollLeft2.default)(window);\n var y = (0, _scrollTop2.default)(window);\n\n if (x === xTarget && y === yTarget) {\n _this._scrollTarget = null;\n _this._cancelCheckScroll();\n }\n }\n };\n\n this._savePosition = function () {\n _this._savePositionHandle = null;\n\n // We have to directly update `DOMStateStorage`, because actually updating\n // the location could cause e.g. React Router to re-render the entire page,\n // which would lead to observably bad scroll performance.\n (0, _DOMStateStorage.saveState)(_this._getKey(_this._getCurrentLocation()), [(0, _scrollLeft2.default)(window), (0, _scrollTop2.default)(window)]);\n };\n\n this._checkScrollPosition = function () {\n _this._checkScrollHandle = null;\n\n // We can only get here if scrollTarget is set. Every code path that unsets\n // scroll target also cancels the handle to avoid calling this handler.\n // Still, check anyway just in case.\n /* istanbul ignore if: paranoid guard */\n if (!_this._scrollTarget) {\n return;\n }\n\n var _scrollTarget2 = _this._scrollTarget;\n var x = _scrollTarget2[0];\n var y = _scrollTarget2[1];\n\n window.scrollTo(x, y);\n\n ++_this._numScrollAttempts;\n\n /* istanbul ignore if: paranoid guard */\n if (_this._numScrollAttempts >= MAX_SCROLL_ATTEMPTS) {\n _this._scrollTarget = null;\n return;\n }\n\n _this._checkScrollHandle = (0, _requestAnimationFrame2.default)(_this._checkScrollPosition);\n };\n\n this._history = history;\n this._getCurrentLocation = getCurrentLocation;\n\n // This helps avoid some jankiness in fighting against the browser's\n // default scroll behavior on `POP` transitions.\n /* istanbul ignore if: not supported by any browsers on Travis */\n if ('scrollRestoration' in window.history) {\n this._oldScrollRestoration = window.history.scrollRestoration;\n window.history.scrollRestoration = 'manual';\n } else {\n this._oldScrollRestoration = null;\n }\n\n this._savePositionHandle = null;\n this._checkScrollHandle = null;\n this._scrollTarget = null;\n this._numScrollAttempts = 0;\n\n // We have to listen to each scroll update rather than to just location\n // updates, because some browsers will update scroll position before\n // emitting the location change.\n (0, _on2.default)(window, 'scroll', this._onScroll);\n\n this._unlistenBefore = history.listenBefore(function () {\n if (_this._savePositionHandle !== null) {\n _requestAnimationFrame2.default.cancel(_this._savePositionHandle);\n _this._savePositionHandle = null;\n }\n });\n }\n\n ScrollBehavior.prototype.stop = function stop() {\n /* istanbul ignore if: not supported by any browsers on Travis */\n if (this._oldScrollRestoration) {\n window.history.scrollRestoration = this._oldScrollRestoration;\n }\n\n (0, _off2.default)(window, 'scroll', this._onScroll);\n this._cancelCheckScroll();\n\n this._unlistenBefore();\n };\n\n ScrollBehavior.prototype.updateScroll = function updateScroll(scrollPosition) {\n // Whatever we were doing before isn't relevant any more.\n this._cancelCheckScroll();\n\n if (scrollPosition && !Array.isArray(scrollPosition)) {\n this._scrollTarget = this._getDefaultScrollTarget();\n } else {\n this._scrollTarget = scrollPosition;\n }\n\n // Check the scroll position to see if we even need to scroll.\n this._onScroll();\n\n if (!this._scrollTarget) {\n return;\n }\n\n this._numScrollAttempts = 0;\n this._checkScrollPosition();\n };\n\n ScrollBehavior.prototype.readPosition = function readPosition(location) {\n return (0, _DOMStateStorage.readState)(this._getKey(location));\n };\n\n ScrollBehavior.prototype._getKey = function _getKey(location) {\n // Use fallback key when actual key is unavailable.\n var key = location.key || this._history.createPath(location);\n\n return '' + KEY_PREFIX + key;\n };\n\n ScrollBehavior.prototype._cancelCheckScroll = function _cancelCheckScroll() {\n if (this._checkScrollHandle !== null) {\n _requestAnimationFrame2.default.cancel(this._checkScrollHandle);\n this._checkScrollHandle = null;\n }\n };\n\n ScrollBehavior.prototype._getDefaultScrollTarget = function _getDefaultScrollTarget() {\n var location = this._getCurrentLocation();\n if (location.action === _Actions.PUSH) {\n return [0, 0];\n }\n\n return this.readPosition(location) || [0, 0];\n };\n\n return ScrollBehavior;\n}();\n\nexports.default = ScrollBehavior;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 524 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar canUseDOM = __webpack_require__(189);\nvar off = function off() {};\n\nif (canUseDOM) {\n\n off = (function () {\n\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n })();\n}\n\nmodule.exports = off;\n\n/***/ }),\n/* 525 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar canUseDOM = __webpack_require__(189);\nvar on = function on() {};\n\nif (canUseDOM) {\n on = (function () {\n\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, handler);\n };\n })();\n}\n\nmodule.exports = on;\n\n/***/ }),\n/* 526 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getWindow = __webpack_require__(270);\n\nmodule.exports = function scrollTop(node, val) {\n var win = getWindow(node);\n\n if (val === undefined) return win ? 'pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft : node.scrollLeft;\n\n if (win) win.scrollTo(val, 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop);else node.scrollLeft = val;\n};\n\n/***/ }),\n/* 527 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getWindow = __webpack_require__(270);\n\nmodule.exports = function scrollTop(node, val) {\n var win = getWindow(node);\n\n if (val === undefined) return win ? 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop : node.scrollTop;\n\n if (win) win.scrollTo('pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft, val);else node.scrollTop = val;\n};\n\n/***/ }),\n/* 528 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar canUseDOM = __webpack_require__(189);\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'],\n cancel = 'clearTimeout',\n raf = fallback,\n compatRaf;\n\nvar getKey = function getKey(vendor, k) {\n return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (canUseDOM) {\n vendors.some(function (vendor) {\n var rafKey = getKey(vendor, 'request');\n\n if (rafKey in window) {\n cancel = getKey(vendor, 'cancel');\n return raf = function (cb) {\n return window[rafKey](cb);\n };\n }\n });\n}\n\n/* https://github.com/component/raf */\nvar prev = new Date().getTime();\n\nfunction fallback(fn) {\n var curr = new Date().getTime(),\n ms = Math.max(0, 16 - (curr - prev)),\n req = setTimeout(fn, ms);\n\n prev = curr;\n return req;\n}\n\ncompatRaf = function (cb) {\n return raf(cb);\n};\ncompatRaf.cancel = function (id) {\n return window[cancel](id);\n};\n\nmodule.exports = compatRaf;\n\n/***/ }),\n/* 529 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar AppEnvs = {\n prod: 'PROD',\n qa: 'QA',\n dev: 'DEV'\n};\n\nmodule.exports = function () {\n var env = Object({\"NODE_ENV\":\"production\"});\n var APP_ENV = env.APP_ENV || AppEnvs.dev;\n var UID = env.UID;\n var PORT = env.PORT;\n var HOST = env.HOST;\n var MEMCACHED_SERVERS = (env.MEMCACHED_SERVERS || '127.0.0.1:11211').split(',');\n var MEMCACHED_POOLSIZE = env.MEMCACHED_POOLSIZE;\n var MEMCACHED_TIMEOUT = env.MEMCACHED_TIMEOUT;\n var MEMCACHED_RETRIES = env.MEMCACHED_RETRIES;\n var MEMCACHED_FAILURES = env.MEMCACHED_FAILURES;\n var MEMCACHED_NAMESPACE = env.MEMCACHED_NAMESPACE;\n var SHELL_IMG_REF = env.SHELL_IMG_REF;\n // used only for page shell assets\n var SECURE_CDN_HOST = env.SECURE_CDN_HOST || 'https://a.espncdn.com';\n var CDN_HOST = env.CDN_HOST;\n var CDN_PATH = env.CDN_PATH;\n var DEV_STYLES = env.DEV_STYLES;\n var SCORETC_FRONTCHANNEL_HOST = env.SCORETC_FRONTCHANNEL_HOST;\n var SCORETC_BACKCHANNEL_HOST = env.SCORETC_BACKCHANNEL_HOST;\n var PKG_VERSION = '2.1.1-281';\n var BASE_ROUTE = env.BASE_ROUTE;\n\n // this hasn't been merged - https://github.disney.com/SEESPN/chef-repo/pull/758, so we handle differently\n // used only for vwatchwebnode bundle\n var SECURE_CDN_PATH = env.SECURE_CDN_PATH;\n if (!SECURE_CDN_PATH) {\n if (APP_ENV === AppEnvs.prod) {\n SECURE_CDN_PATH = CDN_PATH.replace(/https?:\\/\\/[^\\/]+/, 'https://secure.espncdn.com');\n } else if (APP_ENV === AppEnvs.qa) {\n SECURE_CDN_PATH = CDN_PATH.replace(/https?:\\/\\/[^\\/]+/, 'https://a-qa.espncdn.com');\n }\n }\n\n var HTTP_PROXY = env.HTTP_PROXY;\n if (HTTP_PROXY && !HTTP_PROXY.startsWith('http://')) {\n HTTP_PROXY = 'http://' + HTTP_PROXY;\n }\n\n var NO_PROXY = env.NO_PROXY;\n // add any new API hosts as regex here which won't work with the old proxy until we move to AWS\n var noProxyHosts = ['affiliate\\\\.api.*\\\\.espn\\\\.com', 'proxy\\\\.espn\\\\.com'];\n var noProxy = null;\n if (NO_PROXY) {\n noProxy = NO_PROXY;\n noProxy = noProxy.replace(/\\*\\./g, '.').replace(/\\./g, '\\\\.'); // make the NO_PROXY values compatible with regex\n noProxy = noProxyHosts.reduce(function (acc, host) {\n return acc + '|' + host;\n }, noProxy);\n noProxy = 'https?:\\\\/\\\\/[^\\\\/]*(?:' + noProxy + ')'; // make the usable regex\n }\n\n // update running port 8000 to 80. Port 8000 has CORS issue with oneID registration\n return {\n uid: UID || 'app',\n port: PORT || (DEV_STYLES ? 80 : 8080),\n host: HOST || '0.0.0.0',\n baseRoute: BASE_ROUTE || '/watch',\n appEnv: APP_ENV,\n apiHost: {\n sCoreTcClient: SCORETC_FRONTCHANNEL_HOST || 'cdn.espn.com/core',\n sCoreTcServer: SCORETC_BACKCHANNEL_HOST || 'glue-bc.prod.espninfra.starwave.com/core'\n },\n devStyles: DEV_STYLES || false,\n legacyServiceUrl: 'http://www.espn.com/watchespn',\n cache: {\n servers: MEMCACHED_SERVERS,\n poolSize: parseInt(MEMCACHED_POOLSIZE, 10) || 100,\n timeout: parseInt(MEMCACHED_TIMEOUT, 10) || 1000,\n retries: parseInt(MEMCACHED_RETRIES, 10) || 1,\n failures: parseInt(MEMCACHED_FAILURES, 10) || 1,\n namespace: MEMCACHED_NAMESPACE || 'vwatchwebnode:'\n },\n shellVersion: '0.489.4',\n secureCdnHost: SECURE_CDN_HOST,\n cdnHost: CDN_HOST || 'http://a.espncdn.com',\n cdnPath: CDN_PATH ? CDN_PATH + '/' + PKG_VERSION : '/dist',\n secureCdnPath: SECURE_CDN_PATH ? SECURE_CDN_PATH + '/' + PKG_VERSION : '/dist',\n httpProxy: HTTP_PROXY || null,\n noProxy: noProxy,\n isBeta: false,\n clientNavigation: true,\n enableSearch: true,\n newrelicInsertKey: 'F2lp90YgLmEP4KO_hQUxwZeyg7hC9Wjs',\n newrelicAccountId: '459463'\n };\n}();\n\n/***/ }),\n/* 530 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = syncHistoryWithStore;\n\nvar _reducer = __webpack_require__(272);\n\nvar defaultSelectLocationState = function defaultSelectLocationState(state) {\n return state.routing;\n};\n\n/**\n * This function synchronizes your history state with the Redux store.\n * Location changes flow from history to the store. An enhanced history is\n * returned with a listen method that responds to store updates for location.\n *\n * When this history is provided to the router, this means the location data\n * will flow like this:\n * history.push -> store.dispatch -> enhancedHistory.listen -> router\n * This ensures that when the store state changes due to a replay or other\n * event, the router will be updated appropriately and can transition to the\n * correct router state.\n */\nfunction syncHistoryWithStore(history, store) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$selectLocationSt = _ref.selectLocationState,\n selectLocationState = _ref$selectLocationSt === undefined ? defaultSelectLocationState : _ref$selectLocationSt,\n _ref$adjustUrlOnRepla = _ref.adjustUrlOnReplay,\n adjustUrlOnReplay = _ref$adjustUrlOnRepla === undefined ? true : _ref$adjustUrlOnRepla;\n\n // Ensure that the reducer is mounted on the store and functioning properly.\n if (typeof selectLocationState(store.getState()) === 'undefined') {\n throw new Error('Expected the routing state to be available either as `state.routing` ' + 'or as the custom expression you can specify as `selectLocationState` ' + 'in the `syncHistoryWithStore()` options. ' + 'Ensure you have added the `routerReducer` to your store\\'s ' + 'reducers via `combineReducers` or whatever method you use to isolate ' + 'your reducers.');\n }\n\n var initialLocation = void 0;\n var isTimeTraveling = void 0;\n var unsubscribeFromStore = void 0;\n var unsubscribeFromHistory = void 0;\n var currentLocation = void 0;\n\n // What does the store say about current location?\n var getLocationInStore = function getLocationInStore(useInitialIfEmpty) {\n var locationState = selectLocationState(store.getState());\n return locationState.locationBeforeTransitions || (useInitialIfEmpty ? initialLocation : undefined);\n };\n\n // Init initialLocation with potential location in store\n initialLocation = getLocationInStore();\n\n // If the store is replayed, update the URL in the browser to match.\n if (adjustUrlOnReplay) {\n var handleStoreChange = function handleStoreChange() {\n var locationInStore = getLocationInStore(true);\n if (currentLocation === locationInStore || initialLocation === locationInStore) {\n return;\n }\n\n // Update address bar to reflect store state\n isTimeTraveling = true;\n currentLocation = locationInStore;\n history.transitionTo(_extends({}, locationInStore, {\n action: 'PUSH'\n }));\n isTimeTraveling = false;\n };\n\n unsubscribeFromStore = store.subscribe(handleStoreChange);\n handleStoreChange();\n }\n\n // Whenever location changes, dispatch an action to get it in the store\n var handleLocationChange = function handleLocationChange(location) {\n // ... unless we just caused that location change\n if (isTimeTraveling) {\n return;\n }\n\n // Remember where we are\n currentLocation = location;\n\n // Are we being called for the first time?\n if (!initialLocation) {\n // Remember as a fallback in case state is reset\n initialLocation = location;\n\n // Respect persisted location, if any\n if (getLocationInStore()) {\n return;\n }\n }\n\n // Tell the store to update by dispatching an action\n store.dispatch({\n type: _reducer.LOCATION_CHANGE,\n payload: location\n });\n };\n unsubscribeFromHistory = history.listen(handleLocationChange);\n\n // support history 3.x\n if (history.getCurrentLocation) {\n handleLocationChange(history.getCurrentLocation());\n }\n\n // The enhanced history uses store as source of truth\n return _extends({}, history, {\n // The listeners are subscribed to the store instead of history\n listen: function listen(listener) {\n // Copy of last location.\n var lastPublishedLocation = getLocationInStore(true);\n\n // Keep track of whether we unsubscribed, as Redux store\n // only applies changes in subscriptions on next dispatch\n var unsubscribed = false;\n var unsubscribeFromStore = store.subscribe(function () {\n var currentLocation = getLocationInStore(true);\n if (currentLocation === lastPublishedLocation) {\n return;\n }\n lastPublishedLocation = currentLocation;\n if (!unsubscribed) {\n listener(lastPublishedLocation);\n }\n });\n\n // History listeners expect a synchronous call. Make the first call to the\n // listener after subscribing to the store, in case the listener causes a\n // location change (e.g. when it redirects)\n listener(lastPublishedLocation);\n\n // Let user unsubscribe later\n return function () {\n unsubscribed = true;\n unsubscribeFromStore();\n };\n },\n\n\n // It also provides a way to destroy internal listeners\n unsubscribe: function unsubscribe() {\n if (adjustUrlOnReplay) {\n unsubscribeFromStore();\n }\n unsubscribeFromHistory();\n }\n });\n}\n\n/***/ }),\n/* 531 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports['default'] = routerMiddleware;\n\nvar _actions = __webpack_require__(273);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n/**\n * This middleware captures CALL_HISTORY_METHOD actions to redirect to the\n * provided history object. This will prevent these actions from reaching your\n * reducer or any middleware that comes after this one.\n */\nfunction routerMiddleware(history) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type !== _actions.CALL_HISTORY_METHOD) {\n return next(action);\n }\n\n var _action$payload = action.payload,\n method = _action$payload.method,\n args = _action$payload.args;\n\n history[method].apply(history, _toConsumableArray(args));\n };\n };\n };\n}\n\n/***/ }),\n/* 532 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (true) {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n/***/ }),\n/* 533 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Module of mixed-in functions shared between node and client code\n */\nvar isObject = __webpack_require__(275);\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nexports.clearTimeout = function _clearTimeout(){\n this._timeout = 0;\n clearTimeout(this._timer);\n return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nexports.parse = function parse(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nexports.serialize = function serialize(fn){\n this._serializer = fn;\n return this;\n};\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nexports.timeout = function timeout(ms){\n this._timeout = ms;\n return this;\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} reject\n * @return {Request}\n */\n\nexports.then = function then(resolve, reject) {\n if (!this._fullfilledPromise) {\n var self = this;\n this._fullfilledPromise = new Promise(function(innerResolve, innerReject){\n self.end(function(err, res){\n if (err) innerReject(err); else innerResolve(res);\n });\n });\n }\n return this._fullfilledPromise.then(resolve, reject);\n}\n\n/**\n * Allow for extension\n */\n\nexports.use = function use(fn) {\n fn(this);\n return this;\n}\n\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nexports.get = function(field){\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nexports.getHeader = exports.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nexports.set = function(field, val){\n if (isObject(field)) {\n for (var key in field) {\n this.set(key, field[key]);\n }\n return this;\n }\n this._header[field.toLowerCase()] = val;\n this.header[field] = val;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field\n */\nexports.unset = function(field){\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val` for \"multipart/form-data\"\n * request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n * ```\n *\n * @param {String} name\n * @param {String|Blob|File|Buffer|fs.ReadStream} val\n * @return {Request} for chaining\n * @api public\n */\nexports.field = function(name, val) {\n this._getFormData().append(name, val);\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\nexports.abort = function(){\n if (this._aborted) {\n return this;\n }\n this._aborted = true;\n this.xhr && this.xhr.abort(); // browser\n this.req && this.req.abort(); // node\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nexports.withCredentials = function(){\n // This is browser-only functionality. Node side is no-op.\n this._withCredentials = true;\n return this;\n};\n\n/**\n * Set the max redirects to `n`. Does noting in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nexports.redirects = function(n){\n this._maxRedirects = n;\n return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nexports.toJSON = function(){\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nexports._isHost = function _isHost(obj) {\n var str = {}.toString.call(obj);\n\n switch (str) {\n case '[object File]':\n case '[object Blob]':\n case '[object FormData]':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nexports.send = function(data){\n var obj = isObject(data);\n var type = this._header['content-type'];\n\n // merge\n if (obj && isObject(this._data)) {\n for (var key in data) {\n this._data[key] = data[key];\n }\n } else if ('string' == typeof data) {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if ('application/x-www-form-urlencoded' == type) {\n this._data = this._data\n ? this._data + '&' + data\n : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!obj || this._isHost(data)) return this;\n\n // default to json\n if (!type) this.type('json');\n return this;\n};\n\n\n/***/ }),\n/* 534 */\n/***/ (function(module, exports) {\n\n// The node and browser modules expose versions of this with the\n// appropriate constructor function bound as first argument\n/**\n * Issue a request:\n *\n * Examples:\n *\n * request('GET', '/users').end(callback)\n * request('/users').end(callback)\n * request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(RequestConstructor, method, url) {\n // callback\n if ('function' == typeof url) {\n return new RequestConstructor('GET', method).end(url);\n }\n\n // url first\n if (2 == arguments.length) {\n return new RequestConstructor('GET', method);\n }\n\n return new RequestConstructor(method, url);\n}\n\nmodule.exports = request;\n\n\n/***/ }),\n/* 535 */\n/***/ (function(module, exports) {\n\nfunction webpackEmptyContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 535;\n\n/***/ }),\n/* 536 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar basePick = __webpack_require__(537),\n flatRest = __webpack_require__(571);\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n\n\n/***/ }),\n/* 537 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar basePickBy = __webpack_require__(538),\n hasIn = __webpack_require__(284);\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n\n\n/***/ }),\n/* 538 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGet = __webpack_require__(193),\n baseSet = __webpack_require__(567),\n castPath = __webpack_require__(128);\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n\n\n/***/ }),\n/* 539 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(109);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n/***/ }),\n/* 540 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n/***/ }),\n/* 541 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar memoizeCapped = __webpack_require__(542);\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n\n\n/***/ }),\n/* 542 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar memoize = __webpack_require__(543);\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n\n\n/***/ }),\n/* 543 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MapCache = __webpack_require__(195);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n\n/***/ }),\n/* 544 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Hash = __webpack_require__(545),\n ListCache = __webpack_require__(131),\n Map = __webpack_require__(197);\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n\n\n/***/ }),\n/* 545 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hashClear = __webpack_require__(546),\n hashDelete = __webpack_require__(551),\n hashGet = __webpack_require__(552),\n hashHas = __webpack_require__(553),\n hashSet = __webpack_require__(554);\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n\n/***/ }),\n/* 546 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(130);\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n\n/***/ }),\n/* 547 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(196),\n isMasked = __webpack_require__(548),\n isObject = __webpack_require__(35),\n toSource = __webpack_require__(281);\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n/***/ }),\n/* 548 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar coreJsData = __webpack_require__(549);\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n/***/ }),\n/* 549 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(39);\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n/***/ }),\n/* 550 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n/***/ }),\n/* 551 */\n/***/ (function(module, exports) {\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n\n\n/***/ }),\n/* 552 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(130);\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n/***/ }),\n/* 553 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(130);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n\n/***/ }),\n/* 554 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(130);\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n\n\n/***/ }),\n/* 555 */\n/***/ (function(module, exports) {\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n\n/***/ }),\n/* 556 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(132);\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n\n\n/***/ }),\n/* 557 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(132);\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n\n/***/ }),\n/* 558 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(132);\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n\n/***/ }),\n/* 559 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(132);\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n\n\n/***/ }),\n/* 560 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(133);\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n\n/***/ }),\n/* 561 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n\n/***/ }),\n/* 562 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(133);\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n\n/***/ }),\n/* 563 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(133);\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n\n/***/ }),\n/* 564 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(133);\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n\n\n/***/ }),\n/* 565 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseToString = __webpack_require__(566);\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n\n/***/ }),\n/* 566 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(109),\n arrayMap = __webpack_require__(134),\n isArray = __webpack_require__(32),\n isSymbol = __webpack_require__(129);\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n\n/***/ }),\n/* 567 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(282),\n castPath = __webpack_require__(128),\n isIndex = __webpack_require__(136),\n isObject = __webpack_require__(35),\n toKey = __webpack_require__(111);\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n\n\n/***/ }),\n/* 568 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n\n/***/ }),\n/* 569 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar castPath = __webpack_require__(128),\n isArguments = __webpack_require__(112),\n isArray = __webpack_require__(32),\n isIndex = __webpack_require__(136),\n isLength = __webpack_require__(198),\n toKey = __webpack_require__(111);\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n\n\n/***/ }),\n/* 570 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(71),\n isObjectLike = __webpack_require__(59);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n/***/ }),\n/* 571 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar flatten = __webpack_require__(572),\n overRest = __webpack_require__(287),\n setToString = __webpack_require__(288);\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n\n\n/***/ }),\n/* 572 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFlatten = __webpack_require__(285);\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n\n\n/***/ }),\n/* 573 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(109),\n isArguments = __webpack_require__(112),\n isArray = __webpack_require__(32);\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n\n\n/***/ }),\n/* 574 */\n/***/ (function(module, exports) {\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n/***/ }),\n/* 575 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar constant = __webpack_require__(576),\n defineProperty = __webpack_require__(283),\n identity = __webpack_require__(199);\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n\n\n/***/ }),\n/* 576 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n/***/ }),\n/* 577 */\n/***/ (function(module, exports) {\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n\n\n/***/ }),\n/* 578 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseKeys = __webpack_require__(200),\n getTag = __webpack_require__(201),\n isArrayLike = __webpack_require__(51),\n isString = __webpack_require__(583),\n stringSize = __webpack_require__(584);\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nmodule.exports = size;\n\n\n/***/ }),\n/* 579 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar overArg = __webpack_require__(289);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n/***/ }),\n/* 580 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(72),\n root = __webpack_require__(39);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n\n\n/***/ }),\n/* 581 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(72),\n root = __webpack_require__(39);\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n\n\n/***/ }),\n/* 582 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(72),\n root = __webpack_require__(39);\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n/***/ }),\n/* 583 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(71),\n isArray = __webpack_require__(32),\n isObjectLike = __webpack_require__(59);\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n\n/***/ }),\n/* 584 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar asciiSize = __webpack_require__(585),\n hasUnicode = __webpack_require__(586),\n unicodeSize = __webpack_require__(587);\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n\n\n/***/ }),\n/* 585 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseProperty = __webpack_require__(291);\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n\n\n/***/ }),\n/* 586 */\n/***/ (function(module, exports) {\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n\n\n/***/ }),\n/* 587 */\n/***/ (function(module, exports) {\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n\n\n/***/ }),\n/* 588 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar moment = module.exports = __webpack_require__(589);\nmoment.tz.load(__webpack_require__(591));\n\n\n/***/ }),\n/* 589 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//! moment-timezone.js\n//! version : 0.5.26\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(__webpack_require__(292)); // Node\n\t} else if (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(292)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.26\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 590 */\n/***/ (function(module, exports) {\n\nfunction webpackEmptyContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 590;\n\n/***/ }),\n/* 591 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\"version\":\"2019b\",\"zones\":[\"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5\",\"Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5\",\"Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5\",\"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5\",\"Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6\",\"Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4\",\"Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5\",\"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6\",\"Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5\",\"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3\",\"Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|20e4\",\"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5\",\"Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0\",\"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5\",\"Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5\",\"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5\",\"Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|0121|-2le00 4i6N0 2q00\",\"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5\",\"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5\",\"Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4\",\"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\"America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\"America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3\",\"America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4\",\"America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0\",\"America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0\",\"America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0\",\"America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0\",\"America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0\",\"America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0\",\"America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0\",\"America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0\",\"America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0\",\"America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4\",\"America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5\",\"America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2\",\"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3\",\"America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5\",\"America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4\",\"America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5\",\"America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3\",\"America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2\",\"America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2\",\"America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5\",\"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4\",\"America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2\",\"America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4\",\"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4\",\"America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5\",\"America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3\",\"America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5\",\"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4\",\"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5\",\"America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2\",\"America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4\",\"America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8\",\"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3\",\"America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2\",\"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|012342525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 XQp0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5\",\"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5\",\"America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3\",\"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5\",\"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5\",\"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2\",\"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5\",\"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3\",\"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2\",\"America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5\",\"America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5\",\"America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4\",\"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4\",\"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2\",\"America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2\",\"America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4\",\"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3\",\"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5\",\"America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6\",\"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\"America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4\",\"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5\",\"America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5\",\"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4\",\"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4\",\"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4\",\"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2\",\"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5\",\"America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|01203030303030303030303030303030304545450454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6\",\"America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3\",\"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5\",\"America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5\",\"America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5\",\"America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4\",\"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2\",\"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2\",\"America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2\",\"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4\",\"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5\",\"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4\",\"America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4\",\"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5\",\"America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0\",\"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842\",\"America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2\",\"America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5\",\"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4\",\"America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229\",\"America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4\",\"America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|62e5\",\"America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5\",\"America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6\",\"America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452\",\"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2\",\"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3\",\"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5\",\"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656\",\"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4\",\"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642\",\"America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10\",\"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70\",\"Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80\",\"Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1\",\"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60\",\"Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5\",\"Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40\",\"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130\",\"Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20\",\"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40\",\"Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25\",\"Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4\",\"Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5\",\"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5\",\"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5\",\"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3\",\"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4\",\"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4\",\"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4\",\"Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0\",\"Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5\",\"Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4\",\"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5\",\"Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6\",\"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5\",\"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4\",\"Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4\",\"Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6\",\"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4\",\"Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3\",\"Asia/Shanghai|CST CDT|-80 -90|010101010101010101010101010|-1c2w0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6\",\"Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5\",\"Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6\",\"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5\",\"Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4\",\"Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5\",\"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4\",\"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|0101010101010101010101010101010123232323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|18e5\",\"Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|25e4\",\"Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5\",\"Asia/Hong_Kong|LMT HKT HKST HKT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5\",\"Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3\",\"Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6\",\"Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6\",\"Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4\",\"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4\",\"Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5\",\"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4\",\"Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6\",\"Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5\",\"Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5\",\"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2\",\"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5\",\"Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4\",\"Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4\",\"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3\",\"Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5\",\"Asia/Manila|PST PDT JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6\",\"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4\",\"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4\",\"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5\",\"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5\",\"Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4\",\"Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4\",\"Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5\",\"Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|012323232323232323232123232323232323232323232323|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0\",\"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4\",\"Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5\",\"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4\",\"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4\",\"Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6\",\"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2\",\"Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5\",\"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5\",\"Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5\",\"Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6\",\"Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3\",\"Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rb0 1ld0 14n0 1zd0 On0 1zd0 On0|38e6\",\"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5\",\"Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5\",\"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2\",\"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4\",\"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5\",\"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5\",\"Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4\",\"Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3\",\"Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4\",\"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3\",\"Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4\",\"Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4\",\"Atlantic/South_Georgia|-02|20|0||30\",\"Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2\",\"Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5\",\"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5\",\"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5\",\"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3\",\"Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746\",\"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4\",\"Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368\",\"Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4\",\"Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347\",\"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10\",\"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5\",\"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5\",\"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|30e2\",\"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"EST|EST|50|0|\",\"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Etc/GMT-0|GMT|0|0|\",\"Etc/GMT-1|+01|-10|0|\",\"Pacific/Port_Moresby|+10|-a0|0||25e4\",\"Etc/GMT-11|+11|-b0|0|\",\"Pacific/Tarawa|+12|-c0|0||29e3\",\"Etc/GMT-13|+13|-d0|0|\",\"Etc/GMT-14|+14|-e0|0|\",\"Etc/GMT-2|+02|-20|0|\",\"Etc/GMT-3|+03|-30|0|\",\"Etc/GMT-4|+04|-40|0|\",\"Etc/GMT-5|+05|-50|0|\",\"Etc/GMT-6|+06|-60|0|\",\"Indian/Christmas|+07|-70|0||21e2\",\"Etc/GMT-8|+08|-80|0|\",\"Pacific/Palau|+09|-90|0||21e3\",\"Etc/GMT+1|-01|10|0|\",\"Etc/GMT+10|-10|a0|0|\",\"Etc/GMT+11|-11|b0|0|\",\"Etc/GMT+12|-12|c0|0|\",\"Etc/GMT+3|-03|30|0|\",\"Etc/GMT+4|-04|40|0|\",\"Etc/GMT+5|-05|50|0|\",\"Etc/GMT+6|-06|60|0|\",\"Etc/GMT+7|-07|70|0|\",\"Etc/GMT+8|-08|80|0|\",\"Etc/GMT+9|-09|90|0|\",\"Etc/UTC|UTC|0|0|\",\"Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5\",\"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3\",\"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5\",\"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5\",\"Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6\",\"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5\",\"Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5\",\"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5\",\"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5\",\"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4\",\"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4\",\"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3\",\"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4\",\"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5\",\"Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4\",\"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5\",\"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5\",\"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5\",\"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3\",\"Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6\",\"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6\",\"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4\",\"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5\",\"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5\",\"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810\",\"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4\",\"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5\",\"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4\",\"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5\",\"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4\",\"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5\",\"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0|10e5\",\"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4\",\"HST|HST|a0|0|\",\"Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2\",\"Indian/Cocos|+0630|-6u|0||596\",\"Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130\",\"Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3\",\"Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4\",\"Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4\",\"Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4\",\"Pacific/Kwajalein|+11 +10 +09 -12 +12|-b0 -a0 -90 c0 -c0|012034|-1kln0 akp0 6Up0 12ry0 Wan0|14e3\",\"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"MST|MST|70|0|\",\"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600\",\"Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3\",\"Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4\",\"Pacific/Chuuk|+10 +09|-a0 -90|01010|-2ewy0 axB0 RVX0 axd0|49e3\",\"Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3\",\"Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1\",\"Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483\",\"Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0|88e4\",\"Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3\",\"Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125\",\"Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4\",\"Pacific/Guam|GST +09 GDT ChST|-a0 -90 -b0 -a0|01020202020202020203|-18jK0 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4\",\"Pacific/Honolulu|HST HDT HWT HPT HST|au 9u 9u 9u a0|0102304|-1thLu 8x0 lef0 8wWu iAu 46p0|37e4\",\"Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2\",\"Pacific/Kosrae|+11 +09 +10 +12|-b0 -90 -a0 -c0|01021030|-2ewz0 axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2\",\"Pacific/Majuro|+11 +09 +10 +12|-b0 -90 -a0 -c0|0102103|-2ewz0 axC0 HBy0 akp0 6RB0 12um0|28e3\",\"Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2\",\"Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2\",\"Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3\",\"Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2\",\"Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4\",\"Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3\",\"Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56\",\"Pacific/Pohnpei|+11 +09 +10|-b0 -90 -a0|010210|-2ewz0 axC0 HBy0 akp0 axd0|34e3\",\"Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3\",\"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4\",\"Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3\",\"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\"],\"links\":[\"Africa/Abidjan|Africa/Bamako\",\"Africa/Abidjan|Africa/Banjul\",\"Africa/Abidjan|Africa/Conakry\",\"Africa/Abidjan|Africa/Dakar\",\"Africa/Abidjan|Africa/Freetown\",\"Africa/Abidjan|Africa/Lome\",\"Africa/Abidjan|Africa/Nouakchott\",\"Africa/Abidjan|Africa/Ouagadougou\",\"Africa/Abidjan|Africa/Timbuktu\",\"Africa/Abidjan|Atlantic/St_Helena\",\"Africa/Cairo|Egypt\",\"Africa/Johannesburg|Africa/Maseru\",\"Africa/Johannesburg|Africa/Mbabane\",\"Africa/Lagos|Africa/Bangui\",\"Africa/Lagos|Africa/Brazzaville\",\"Africa/Lagos|Africa/Douala\",\"Africa/Lagos|Africa/Kinshasa\",\"Africa/Lagos|Africa/Libreville\",\"Africa/Lagos|Africa/Luanda\",\"Africa/Lagos|Africa/Malabo\",\"Africa/Lagos|Africa/Niamey\",\"Africa/Lagos|Africa/Porto-Novo\",\"Africa/Maputo|Africa/Blantyre\",\"Africa/Maputo|Africa/Bujumbura\",\"Africa/Maputo|Africa/Gaborone\",\"Africa/Maputo|Africa/Harare\",\"Africa/Maputo|Africa/Kigali\",\"Africa/Maputo|Africa/Lubumbashi\",\"Africa/Maputo|Africa/Lusaka\",\"Africa/Nairobi|Africa/Addis_Ababa\",\"Africa/Nairobi|Africa/Asmara\",\"Africa/Nairobi|Africa/Asmera\",\"Africa/Nairobi|Africa/Dar_es_Salaam\",\"Africa/Nairobi|Africa/Djibouti\",\"Africa/Nairobi|Africa/Kampala\",\"Africa/Nairobi|Africa/Mogadishu\",\"Africa/Nairobi|Indian/Antananarivo\",\"Africa/Nairobi|Indian/Comoro\",\"Africa/Nairobi|Indian/Mayotte\",\"Africa/Tripoli|Libya\",\"America/Adak|America/Atka\",\"America/Adak|US/Aleutian\",\"America/Anchorage|US/Alaska\",\"America/Argentina/Buenos_Aires|America/Buenos_Aires\",\"America/Argentina/Catamarca|America/Argentina/ComodRivadavia\",\"America/Argentina/Catamarca|America/Catamarca\",\"America/Argentina/Cordoba|America/Cordoba\",\"America/Argentina/Cordoba|America/Rosario\",\"America/Argentina/Jujuy|America/Jujuy\",\"America/Argentina/Mendoza|America/Mendoza\",\"America/Atikokan|America/Coral_Harbour\",\"America/Chicago|US/Central\",\"America/Curacao|America/Aruba\",\"America/Curacao|America/Kralendijk\",\"America/Curacao|America/Lower_Princes\",\"America/Denver|America/Shiprock\",\"America/Denver|Navajo\",\"America/Denver|US/Mountain\",\"America/Detroit|US/Michigan\",\"America/Edmonton|Canada/Mountain\",\"America/Fort_Wayne|America/Indiana/Indianapolis\",\"America/Fort_Wayne|America/Indianapolis\",\"America/Fort_Wayne|US/East-Indiana\",\"America/Halifax|Canada/Atlantic\",\"America/Havana|Cuba\",\"America/Indiana/Knox|America/Knox_IN\",\"America/Indiana/Knox|US/Indiana-Starke\",\"America/Jamaica|Jamaica\",\"America/Kentucky/Louisville|America/Louisville\",\"America/Los_Angeles|US/Pacific\",\"America/Los_Angeles|US/Pacific-New\",\"America/Manaus|Brazil/West\",\"America/Mazatlan|Mexico/BajaSur\",\"America/Mexico_City|Mexico/General\",\"America/New_York|US/Eastern\",\"America/Noronha|Brazil/DeNoronha\",\"America/Panama|America/Cayman\",\"America/Phoenix|US/Arizona\",\"America/Port_of_Spain|America/Anguilla\",\"America/Port_of_Spain|America/Antigua\",\"America/Port_of_Spain|America/Dominica\",\"America/Port_of_Spain|America/Grenada\",\"America/Port_of_Spain|America/Guadeloupe\",\"America/Port_of_Spain|America/Marigot\",\"America/Port_of_Spain|America/Montserrat\",\"America/Port_of_Spain|America/St_Barthelemy\",\"America/Port_of_Spain|America/St_Kitts\",\"America/Port_of_Spain|America/St_Lucia\",\"America/Port_of_Spain|America/St_Thomas\",\"America/Port_of_Spain|America/St_Vincent\",\"America/Port_of_Spain|America/Tortola\",\"America/Port_of_Spain|America/Virgin\",\"America/Regina|Canada/Saskatchewan\",\"America/Rio_Branco|America/Porto_Acre\",\"America/Rio_Branco|Brazil/Acre\",\"America/Santiago|Chile/Continental\",\"America/Sao_Paulo|Brazil/East\",\"America/St_Johns|Canada/Newfoundland\",\"America/Tijuana|America/Ensenada\",\"America/Tijuana|America/Santa_Isabel\",\"America/Tijuana|Mexico/BajaNorte\",\"America/Toronto|America/Montreal\",\"America/Toronto|Canada/Eastern\",\"America/Vancouver|Canada/Pacific\",\"America/Whitehorse|Canada/Yukon\",\"America/Winnipeg|Canada/Central\",\"Asia/Ashgabat|Asia/Ashkhabad\",\"Asia/Bangkok|Asia/Phnom_Penh\",\"Asia/Bangkok|Asia/Vientiane\",\"Asia/Dhaka|Asia/Dacca\",\"Asia/Dubai|Asia/Muscat\",\"Asia/Ho_Chi_Minh|Asia/Saigon\",\"Asia/Hong_Kong|Hongkong\",\"Asia/Jerusalem|Asia/Tel_Aviv\",\"Asia/Jerusalem|Israel\",\"Asia/Kathmandu|Asia/Katmandu\",\"Asia/Kolkata|Asia/Calcutta\",\"Asia/Kuala_Lumpur|Asia/Singapore\",\"Asia/Kuala_Lumpur|Singapore\",\"Asia/Macau|Asia/Macao\",\"Asia/Makassar|Asia/Ujung_Pandang\",\"Asia/Nicosia|Europe/Nicosia\",\"Asia/Qatar|Asia/Bahrain\",\"Asia/Rangoon|Asia/Yangon\",\"Asia/Riyadh|Asia/Aden\",\"Asia/Riyadh|Asia/Kuwait\",\"Asia/Seoul|ROK\",\"Asia/Shanghai|Asia/Chongqing\",\"Asia/Shanghai|Asia/Chungking\",\"Asia/Shanghai|Asia/Harbin\",\"Asia/Shanghai|PRC\",\"Asia/Taipei|ROC\",\"Asia/Tehran|Iran\",\"Asia/Thimphu|Asia/Thimbu\",\"Asia/Tokyo|Japan\",\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\"Asia/Urumqi|Asia/Kashgar\",\"Atlantic/Faroe|Atlantic/Faeroe\",\"Atlantic/Reykjavik|Iceland\",\"Atlantic/South_Georgia|Etc/GMT+2\",\"Australia/Adelaide|Australia/South\",\"Australia/Brisbane|Australia/Queensland\",\"Australia/Broken_Hill|Australia/Yancowinna\",\"Australia/Darwin|Australia/North\",\"Australia/Hobart|Australia/Tasmania\",\"Australia/Lord_Howe|Australia/LHI\",\"Australia/Melbourne|Australia/Victoria\",\"Australia/Perth|Australia/West\",\"Australia/Sydney|Australia/ACT\",\"Australia/Sydney|Australia/Canberra\",\"Australia/Sydney|Australia/NSW\",\"Etc/GMT-0|Etc/GMT\",\"Etc/GMT-0|Etc/GMT+0\",\"Etc/GMT-0|Etc/GMT0\",\"Etc/GMT-0|Etc/Greenwich\",\"Etc/GMT-0|GMT\",\"Etc/GMT-0|GMT+0\",\"Etc/GMT-0|GMT-0\",\"Etc/GMT-0|GMT0\",\"Etc/GMT-0|Greenwich\",\"Etc/UTC|Etc/UCT\",\"Etc/UTC|Etc/Universal\",\"Etc/UTC|Etc/Zulu\",\"Etc/UTC|UCT\",\"Etc/UTC|UTC\",\"Etc/UTC|Universal\",\"Etc/UTC|Zulu\",\"Europe/Belgrade|Europe/Ljubljana\",\"Europe/Belgrade|Europe/Podgorica\",\"Europe/Belgrade|Europe/Sarajevo\",\"Europe/Belgrade|Europe/Skopje\",\"Europe/Belgrade|Europe/Zagreb\",\"Europe/Chisinau|Europe/Tiraspol\",\"Europe/Dublin|Eire\",\"Europe/Helsinki|Europe/Mariehamn\",\"Europe/Istanbul|Asia/Istanbul\",\"Europe/Istanbul|Turkey\",\"Europe/Lisbon|Portugal\",\"Europe/London|Europe/Belfast\",\"Europe/London|Europe/Guernsey\",\"Europe/London|Europe/Isle_of_Man\",\"Europe/London|Europe/Jersey\",\"Europe/London|GB\",\"Europe/London|GB-Eire\",\"Europe/Moscow|W-SU\",\"Europe/Oslo|Arctic/Longyearbyen\",\"Europe/Oslo|Atlantic/Jan_Mayen\",\"Europe/Prague|Europe/Bratislava\",\"Europe/Rome|Europe/San_Marino\",\"Europe/Rome|Europe/Vatican\",\"Europe/Warsaw|Poland\",\"Europe/Zurich|Europe/Busingen\",\"Europe/Zurich|Europe/Vaduz\",\"Indian/Christmas|Etc/GMT-7\",\"Pacific/Auckland|Antarctica/McMurdo\",\"Pacific/Auckland|Antarctica/South_Pole\",\"Pacific/Auckland|NZ\",\"Pacific/Chatham|NZ-CHAT\",\"Pacific/Chuuk|Pacific/Truk\",\"Pacific/Chuuk|Pacific/Yap\",\"Pacific/Easter|Chile/EasterIsland\",\"Pacific/Guam|Pacific/Saipan\",\"Pacific/Honolulu|Pacific/Johnston\",\"Pacific/Honolulu|US/Hawaii\",\"Pacific/Kwajalein|Kwajalein\",\"Pacific/Pago_Pago|Pacific/Midway\",\"Pacific/Pago_Pago|Pacific/Samoa\",\"Pacific/Pago_Pago|US/Samoa\",\"Pacific/Palau|Etc/GMT-9\",\"Pacific/Pohnpei|Pacific/Ponape\",\"Pacific/Port_Moresby|Etc/GMT-10\",\"Pacific/Tarawa|Etc/GMT-12\",\"Pacific/Tarawa|Pacific/Funafuti\",\"Pacific/Tarawa|Pacific/Wake\",\"Pacific/Tarawa|Pacific/Wallis\"]}\n\n/***/ }),\n/* 592 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*!\n * imports.\n */\n\nvar bind = Function.prototype.bind || __webpack_require__(593)\n\n/*!\n * exports.\n */\n\nmodule.exports = curry2\n\n/**\n * Curry a binary function.\n *\n * @param {Function} fn\n * Binary function to curry.\n *\n * @param {Object} [self]\n * Function `this` context.\n *\n * @return {Function|*}\n * If partially applied, return unary function, otherwise, return result of full application.\n */\n\nfunction curry2 (fn, self) {\n var out = function () {\n if (arguments.length === 0) return out\n\n return arguments.length > 1\n ? fn.apply(self, arguments)\n : bind.call(fn, self, arguments[0])\n }\n\n out.uncurry = function uncurry () {\n return fn\n }\n\n return out\n}\n\n\n/***/ }),\n/* 593 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = function(boundThis) {\n var f = this\n , ret\n\n if (arguments.length < 2)\n ret = function() {\n if (this instanceof ret) {\n var ret_ = f.apply(this, arguments)\n return Object(ret_) === ret_\n ? ret_\n : this\n }\n else\n return f.apply(boundThis, arguments)\n }\n else {\n var boundArgs = new Array(arguments.length - 1)\n for (var i = 1; i < arguments.length; i++)\n boundArgs[i - 1] = arguments[i]\n\n ret = function() {\n var boundLen = boundArgs.length\n , args = new Array(boundLen + arguments.length)\n , i\n for (i = 0; i < boundLen; i++)\n args[i] = boundArgs[i]\n for (i = 0; i < arguments.length; i++)\n args[boundLen + i] = arguments[i]\n\n if (this instanceof ret) {\n var ret_ = f.apply(this, args)\n return Object(ret_) === ret_\n ? ret_\n : this\n }\n else\n return f.apply(boundThis, args)\n }\n }\n\n ret.prototype = f.prototype\n return ret\n}\n\n\n/***/ }),\n/* 594 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console, process) {/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = __webpack_require__(595);\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = Object({\"NODE_ENV\":\"production\"}).DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2), __webpack_require__(48)))\n\n/***/ }),\n/* 595 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = __webpack_require__(596);\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 596 */\n/***/ (function(module, exports) {\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n\n/***/ }),\n/* 597 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*!\n * exports.\n */\n\nmodule.exports = brackets2dots;\n\n/*!\n * regexp patterns.\n */\n\nvar REPLACE_BRACKETS = /\\[([^\\[\\]]+)\\]/g;\nvar LFT_RT_TRIM_DOTS = /^[.]*|[.]*$/g;\n\n/**\n * Convert string with bracket notation to dot property notation.\n *\n * ### Examples:\n *\n * brackets2dots('group[0].section.a.seat[3]')\n * //=> 'group.0.section.a.seat.3'\n *\n * brackets2dots('[0].section.a.seat[3]')\n * //=> '0.section.a.seat.3'\n *\n * brackets2dots('people[*].age')\n * //=> 'people.*.age'\n *\n * @param {String} string\n * original string\n *\n * @return {String}\n * dot/bracket-notation string\n */\n\nfunction brackets2dots(string) {\n return ({}).toString.call(string) == '[object String]'\n ? string.replace(REPLACE_BRACKETS, '.$1').replace(LFT_RT_TRIM_DOTS, '')\n : ''\n}\n\n\n/***/ }),\n/* 598 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar toString = Object.prototype.toString\n\n/**\n * Transform dot-delimited strings to array of strings.\n *\n * @param {String} string\n * Dot-delimited string.\n *\n * @return {Array}\n * Array of strings.\n */\n\nfunction dotsplit (string) {\n var idx = -1\n var str = compact(normalize(string).split('.'))\n var end = str.length\n var out = []\n\n while (++idx < end) {\n out.push(todots(str[idx]))\n }\n\n return out\n}\n\n/**\n * Replace escapes with a placeholder.\n *\n * @param {String} string\n * Dot-delimited string.\n *\n * @return {String}\n * Dot-delimited string with placeholders in place of escapes.\n */\n\nfunction normalize (string) {\n return (toString.call(string) === '[object String]' ? string : '').replace(/\\\\\\./g, '\\uffff')\n}\n\n/**\n * Drop empty values from array.\n *\n * @param {Array} array\n * Array of strings.\n *\n * @return {Array}\n * Array of strings (empty values dropped).\n */\n\nfunction compact (arr) {\n var idx = -1\n var end = arr.length\n var out = []\n\n while (++idx < end) {\n if (arr[idx]) out.push(arr[idx])\n }\n\n return out\n}\n\n/**\n * Change placeholder to dots.\n *\n * @param {String} string\n * Dot-delimited string with placeholders.\n *\n * @return {String}\n * Dot-delimited string without placeholders.\n */\n\nfunction todots (string) {\n return string.replace(/\\uffff/g, '.')\n}\n\n/*!\n * exports.\n */\n\nmodule.exports = dotsplit\n\n\n/***/ }),\n/* 599 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar SetCache = __webpack_require__(204),\n arrayIncludes = __webpack_require__(298),\n arrayIncludesWith = __webpack_require__(300),\n arrayMap = __webpack_require__(134),\n baseUnary = __webpack_require__(301),\n cacheHas = __webpack_require__(205);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n\n\n/***/ }),\n/* 600 */\n/***/ (function(module, exports) {\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n\n\n/***/ }),\n/* 601 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n\n\n/***/ }),\n/* 602 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFindIndex = __webpack_require__(299),\n baseIsNaN = __webpack_require__(603),\n strictIndexOf = __webpack_require__(604);\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n\n\n/***/ }),\n/* 603 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n\n\n/***/ }),\n/* 604 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n\n\n/***/ }),\n/* 605 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArrayLikeObject = __webpack_require__(303);\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n\n\n/***/ }),\n/* 606 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar utils = __webpack_require__(607);\n\n/**\n * superagentCache constructor\n * @constructor\n * @param {superagent} agent (optional)\n * @param {cache module} cache (optional)\n * @param {object} defaults (optional)\n */\nmodule.exports = function(agent, cache, defaults){\n\n var superagent = (agent) ? agent : __webpack_require__(608);\n\n if(!superagent.patchedBySuperagentCache){\n superagent.cache = (cache && cache.get) ? cache : new (__webpack_require__(611))(cache);\n superagent.defaults = defaults || {};\n superagent.pendingRequests = {};\n var Request = superagent.Request;\n var props = utils.resetProps(superagent.defaults);\n var supportedMethods = ['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE'];\n var cacheableMethods = ['GET', 'HEAD'];\n superagent.patchedBySuperagentCache = true;\n\n /**\n * Whether to execute an http query if the cache does not have the generated key\n * @param {boolean} doQuery\n */\n Request.prototype.doQuery = function(doQuery){\n props.doQuery = doQuery;\n return this;\n }\n\n /**\n * Remove the given params from the query object after executing an http query and before generating a cache key\n * @param {array of strings} pruneParams\n */\n Request.prototype.pruneParams = function(pruneParams){\n props.pruneParams = pruneParams;\n return this;\n }\n\n /**\n * Remove the given options from the headers object after executing an http query and before generating a cache key\n * @param {boolean} pruneOptions\n */\n Request.prototype.pruneOptions = function(pruneOptions){\n props.pruneOptions = pruneOptions;\n return this;\n }\n\n /**\n * Execute some logic on superagent's http response object before caching and returning it\n * @param {function} prune\n */\n Request.prototype.prune = function(prune){\n props.prune = prune;\n return this;\n }\n\n /**\n * Retrieve a top-level property from superagent's http response object before to cache and return\n * @param {string} responseProp\n */\n Request.prototype.responseProp = function(responseProp){\n props.responseProp = responseProp;\n return this;\n }\n\n /**\n * Set an expiration for this key that will override the configured cache's default expiration\n * @param {integer} expiration (seconds)\n */\n Request.prototype.expiration = function(expiration){\n props.expiration = expiration;\n return this;\n }\n\n /**\n * Whether to cache superagent's http response object when it \"empty\"--especially useful with .prune and .pruneParams\n * @param {boolean} cacheWhenEmpty\n */\n Request.prototype.cacheWhenEmpty = function(cacheWhenEmpty){\n props.cacheWhenEmpty = cacheWhenEmpty;\n return this;\n }\n\n /**\n * Whether to execute an http query regardless of whether the cache has the generated key\n * @param {boolean} forceUpdate\n */\n Request.prototype.forceUpdate = function(forceUpdate){\n props.forceUpdate = (typeof forceUpdate === 'boolean') ? forceUpdate : true;\n return this;\n }\n\n /**\n * Whether to execute identical network calls.\n * When used, calls made for resources that are already pending will not be made, but will\n * be responded to with the response from the already pending call.\n * @param {boolean} preventDuplicateCalls\n */\n Request.prototype.preventDuplicateCalls = function(preventDuplicateCalls){\n props.preventDuplicateCalls = (typeof preventDuplicateCalls === 'boolean') ? preventDuplicateCalls : true;\n return this;\n }\n\n /**\n * Initialize a background refresh for the generated key and value\n * @param {boolean | function} backgroundRefresh\n */\n Request.prototype.backgroundRefresh = function(backgroundRefresh){\n props.backgroundRefresh = (typeof backgroundRefresh !== 'undefined') ? backgroundRefresh : true;\n return this;\n }\n\n /**\n * Overwrites superagent's fake promise support and adds the generated cache key\n * Only applies if Request.prototype.promise is not set\n * Fixes this isse: https://github.com/jpodwys/superagent-cache/issues/38\n */\n if(!Request.prototype.promise){\n Request.prototype.then = function(fulfill, reject){\n return this.end(function (err, response, key) {\n err ? reject(err) : fulfill(response, key);\n });\n }\n }\n\n /**\n * An alias for the .end function because I use ._end and .end for other things\n */\n Request.prototype.execute = Request.prototype.end;\n\n /**\n * Wraps the .end function so that .resetProps gets called--callable so that no caching logic takes place\n */\n Request.prototype._end = function(cb){\n props = utils.resetProps(superagent.defaults);\n this.execute(cb);\n }\n\n /**\n * Execute all caching and http logic\n * @param {function} cb\n */\n Request.prototype.end = function(cb){\n var curProps = props;\n props = utils.resetProps(superagent.defaults);\n this.scRedirectsList = this.scRedirectsList || [];\n this.scRedirectsList = this.scRedirectsList.concat(this._redirectList);\n if(~supportedMethods.indexOf(this.method.toUpperCase())){\n var _this = this;\n var key = utils.keygen(superagent, this, curProps);\n if(~cacheableMethods.indexOf(this.method.toUpperCase())){\n superagent.cache.get(key, function (err, response){\n if(!err && response && !curProps.forceUpdate){\n utils.callbackExecutor(cb, err, response, key);\n }\n else{\n if(curProps.doQuery){\n if(curProps.preventDuplicateCalls){\n if(!superagent.pendingRequests[key]){\n superagent.pendingRequests[key] = [];\n } else {\n return superagent.pendingRequests[key].push(cb);\n }\n }\n _this._end(function (err, response){\n if(err){\n utils.handlePendingRequests(curProps, superagent, key, err, response);\n return utils.callbackExecutor(cb, err, response, key);\n }\n else if(!err && response){\n response.redirects = _this.scRedirectsList;\n if(curProps.prune){\n response = curProps.prune(response);\n }\n else if(curProps.responseProp){\n response = response[curProps.responseProp] || null;\n }\n else{\n response = utils.gutResponse(response);\n }\n if(!utils.isEmpty(response) || curProps.cacheWhenEmpty){\n var refresh = curProps.backgroundRefresh || null;\n if(typeof refresh == 'boolean'){\n refresh = utils.getBackgroundRefreshFunction(superagent, curProps);\n }\n superagent.cache.set(key, response, curProps.expiration, refresh, function (){\n utils.handlePendingRequests(curProps, superagent, key, err, response);\n return utils.callbackExecutor(cb, err, response, key);\n });\n }\n else{\n delete superagent.pendingRequests[key];\n return utils.callbackExecutor(cb, err, response, key);\n }\n }\n });\n }\n else{\n return utils.callbackExecutor(cb, null, null, key);\n }\n }\n });\n }\n else{\n this._end(function (err, response){\n if(err){\n return utils.callbackExecutor(cb, err, response, key);\n }\n if(!err && response){\n var keyGet = key.replace('\"method\":\"' + _this.method + '\"', '\"method\":\"GET\"');\n var keyHead = key.replace('\"method\":\"' + _this.method + '\"', '\"method\":\"HEAD\"');\n superagent.cache.del([keyGet, keyHead], function (){\n utils.callbackExecutor(cb, err, response, key);\n });\n }\n });\n }\n }\n else{\n this._end(function (err, response){\n return utils.callbackExecutor(cb, err, response, undefined);\n });\n }\n }\n }\n\n if(!agent){\n return superagent;\n }\n\n}\n\n\n/***/ }),\n/* 607 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\n /**\n * Generate a cache key unique to this query\n * @param {superagent} agent\n * @param {object} reg\n * @param {object} cProps\n */\n keygen: function(agent, req, cProps){\n var cleanParams = null;\n var cleanOptions = null;\n var params = this.getQueryParams(req);\n var options = this.getHeaderOptions(req);\n if(cProps.pruneParams || cProps.pruneOptions){\n cleanParams = (cProps.pruneParams) ? this.pruneObj(this.cloneObject(params), cProps.pruneParams) : params;\n cleanOptions = (cProps.pruneOptions) ? this.pruneObj(this.cloneObject(options), cProps.pruneOptions, true) : options;\n }\n return JSON.stringify({\n nameSpace: agent.cache.nameSpace,\n method: req.method,\n uri: req.url,\n params: cleanParams || params || null,\n options: cleanOptions || options || null\n });\n },\n\n /**\n * Find and extract query params\n * @param {object} reg\n */\n getQueryParams: function(req){\n if(req && req.qs && !this.isEmpty(req.qs)){\n return req.qs;\n }\n else if(req && req.qsRaw){\n return this.arrayToObj(req.qsRaw);\n }\n else if(req && req.req){\n return this.stringToObj(req.req.path);\n }\n else if(req && req._query){\n return this.stringToObj(req._query.join('&'));\n }\n return null;\n },\n\n /**\n * Find and extract headers\n * @param {object} reg\n */\n getHeaderOptions: function(req){\n //I have to remove the User-Agent header ever since superagent 1.7.0\n if(req && req._header){\n return this.pruneObj(req._header, ['User-Agent', 'user-agent']);\n }\n else if(req && req.req && req.req._headers){\n return this.pruneObj(req.req._headers, ['User-Agent', 'user-agent']);\n }\n else if(req && req.header){\n return this.pruneObj(req.header, ['User-Agent', 'user-agent']);\n }\n return null;\n },\n\n /**\n * Convert an array to an object\n * @param {array} arr\n */\n arrayToObj: function(arr){\n if(arr && arr.length){\n var obj = {};\n for(var i = 0; i < arr.length; i++){\n var str = arr[i];\n var kvArray = str.split('&');\n for(var j = 0; j < kvArray.length; j++){\n var kvString = kvArray[j].split('=');\n obj[kvString[0]] = kvString[1];\n }\n }\n return obj;\n }\n return null;\n },\n\n /**\n * Convert a string to an object\n * @param {string} str\n */\n stringToObj: function(str){\n if(str){\n var obj = {};\n if(~str.indexOf('?')){\n var strs = str.split('?');\n str = strs[1];\n }\n var kvArray = str.split('&');\n for(var i = 0; i < kvArray.length; i++){\n var kvString = kvArray[i].split('=');\n obj[kvString[0]] = kvString[1];\n }\n return obj;\n }\n return null;\n },\n\n /**\n * Remove properties from an object\n * @param {object} obj\n * @param {array} props\n * @param {boolean} isOptions\n */\n pruneObj: function(obj, props, isOptions){\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if(isOptions){\n delete obj[prop.toLowerCase()];\n }\n delete obj[prop];\n }\n return obj;\n },\n\n /**\n * Simplify superagent's http response object\n * @param {object} r\n */\n gutResponse: function(r){\n var newResponse = {};\n newResponse.body = r.body;\n newResponse.text = r.text;\n newResponse.headers = r.headers;\n newResponse.statusCode = r.statusCode;\n newResponse.status = r.status;\n newResponse.ok = r.ok;\n return newResponse;\n },\n\n /**\n * Determine whether a value is considered empty\n * @param {*} val\n */\n isEmpty: function(val){\n return (val === false || val === null || (typeof val == 'object' && Object.keys(val).length == 0));\n },\n\n /**\n * Return a clone of an object\n * @param {object} obj\n */\n cloneObject: function(obj){\n var newObj = {};\n for(var attr in obj) {\n if (obj.hasOwnProperty(attr)){\n newObj[attr] = obj[attr];\n }\n }\n return newObj;\n },\n\n handlePendingRequests: function(curProps, superagent, key, err, response){\n if(curProps.preventDuplicateCalls){\n if(superagent.pendingRequests[key] && (!this.isEmpty(response) || curProps.cacheWhenEmpty)){\n var self = this;\n var pendingRequests = superagent.pendingRequests[key];\n pendingRequests.forEach(function (cb){\n self.callbackExecutor(cb, err, response, key);\n });\n }\n delete superagent.pendingRequests[key];\n }\n },\n\n /**\n * Reset superagent-cache's default query properties using the defaults object\n * @param {object} d\n */\n resetProps: function(d){\n return {\n doQuery: (typeof d.doQuery === 'boolean') ? d.doQuery : true,\n cacheWhenEmpty: (typeof d.cacheWhenEmpty === 'boolean') ? d.cacheWhenEmpty : true,\n prune: d.prune,\n pruneParams: d.pruneParams,\n pruneOptions: d.pruneOptions,\n responseProp: d.responseProp,\n expiration: d.expiration,\n forceUpdate: d.forceUpdate,\n preventDuplicateCalls: d.preventDuplicateCalls,\n backgroundRefresh: d.backgroundRefresh\n };\n },\n\n /**\n * Generate a background refresh query identical to the current query\n * @param {superagent} agent\n * @param {object} curProps\n */\n getBackgroundRefreshFunction: function(agent, curProps){\n return function(key, cb){\n key = JSON.parse(key);\n var method = key.method.toLowerCase();\n var request = agent[method](key.uri)\n .doQuery(curProps.doQuery)\n .pruneParams(curProps.pruneParams)\n .pruneOptions(curProps.pruneOptions)\n .prune(curProps.prune)\n .responseProp(curProps.responseProp)\n .expiration(curProps.expiration)\n .cacheWhenEmpty(curProps.cacheWhenEmpty);\n if(key.params){\n request.query(key.params)\n }\n if(key.options){\n request.set(key.options);\n }\n request.end(cb);\n }\n },\n\n /**\n * Handle the varying number of callback output params\n * @param {function} cb\n * @param {object} err\n * @param {object} response\n * @param {string} key\n */\n callbackExecutor: function(cb, err, response, key){\n if(cb.length === 1){\n cb(response);\n }\n else if(cb.length > 1){\n cb(err, response, key);\n }\n else{\n throw new Error('UnsupportedCallbackException: Your .end() callback must pass at least one argument.');\n }\n }\n}\n\n\n/***/ }),\n/* 608 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Module dependencies.\n */\n\nvar Emitter = __webpack_require__(609);\nvar reduce = __webpack_require__(610);\n\n/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n root = self;\n} else { // Other environments\n root = this;\n}\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isHost(obj) {\n var str = {}.toString.call(obj);\n\n switch (str) {\n case '[object File]':\n case '[object Blob]':\n case '[object FormData]':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest\n && (!root.location || 'file:' != root.location.protocol\n || !root.ActiveXObject)) {\n return new XMLHttpRequest;\n } else {\n try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n }\n return false;\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n ? function(s) { return s.trim(); }\n : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return obj === Object(obj);\n}\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n var pairs = [];\n for (var key in obj) {\n if (null != obj[key]) {\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n }\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (Array.isArray(val)) {\n return val.forEach(function(v) {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n }\n pairs.push(encodeURIComponent(key)\n + '=' + encodeURIComponent(val));\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n var obj = {};\n var pairs = str.split('&');\n var parts;\n var pair;\n\n for (var i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n parts = pair.split('=');\n obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'application/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n 'form': 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\n request.serialize = {\n 'application/x-www-form-urlencoded': serialize,\n 'application/json': JSON.stringify\n };\n\n /**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n var lines = str.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var val;\n\n lines.pop(); // trailing CRLF\n\n for (var i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n return reduce(str.split(/ *; */), function(obj, str){\n var parts = str.split(/ *= */)\n , key = parts.shift()\n , val = parts.shift();\n\n if (key && val) obj[key] = val;\n return obj;\n }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n options = options || {};\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n this.setStatusProperties(this.xhr.status);\n this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this.setHeaderProperties(this.header);\n this.body = this.req.method != 'HEAD'\n ? this.parseBody(this.text ? this.text : this.xhr.response)\n : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype.setHeaderProperties = function(header){\n // content-type\n var ct = this.header['content-type'] || '';\n this.type = type(ct);\n\n // params\n var obj = params(ct);\n for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype.parseBody = function(str){\n var parse = request.parse[this.type];\n return parse && str && (str.length || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype.setStatusProperties = function(status){\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n var type = status / 100 | 0;\n\n // status / class\n this.status = this.statusCode = status;\n this.statusType = type;\n\n // basics\n this.info = 1 == type;\n this.ok = 2 == type;\n this.clientError = 4 == type;\n this.serverError = 5 == type;\n this.error = (4 == type || 5 == type)\n ? this.toError()\n : false;\n\n // sugar\n this.accepted = 202 == status;\n this.noContent = 204 == status;\n this.badRequest = 400 == status;\n this.unauthorized = 401 == status;\n this.notAcceptable = 406 == status;\n this.notFound = 404 == status;\n this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n var req = this.req;\n var method = req.method;\n var url = req.url;\n\n var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n var err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n Emitter.call(this);\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {};\n this._header = {};\n this.on('end', function(){\n var err = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch(e) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = e;\n // issue #675: return the raw response if the response parsing fails\n err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n if (err) {\n return self.callback(err, res);\n }\n\n if (res.status >= 200 && res.status < 300) {\n return self.callback(err, res);\n }\n\n var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n\n self.callback(new_err, res);\n });\n}\n\n/**\n * Mixin `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Allow for extension\n */\n\nRequest.prototype.use = function(fn) {\n fn(this);\n return this;\n}\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.timeout = function(ms){\n this._timeout = ms;\n return this;\n};\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.clearTimeout = function(){\n this._timeout = 0;\n clearTimeout(this._timer);\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\n\nRequest.prototype.abort = function(){\n if (this.aborted) return;\n this.aborted = true;\n this.xhr.abort();\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.set = function(field, val){\n if (isObject(field)) {\n for (var key in field) {\n this.set(key, field[key]);\n }\n return this;\n }\n this._header[field.toLowerCase()] = val;\n this.header[field] = val;\n return this;\n};\n\n/**\n * Remove header `field`.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.unset = function(field){\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Get case-insensitive header `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api private\n */\n\nRequest.prototype.getHeader = function(field){\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Force given parser\n *\n * Sets the body parser no matter type.\n *\n * @param {Function}\n * @api public\n */\n\nRequest.prototype.parse = function(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass){\n var str = btoa(user + ':' + pass);\n this.set('Authorization', 'Basic ' + str);\n return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n* request.get('/shoes')\n* .query('size=10')\n* .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n if ('string' != typeof val) val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Write the field `name` and `val` for \"multipart/form-data\"\n * request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n * ```\n *\n * @param {String} name\n * @param {String|Blob|File} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.field = function(name, val){\n if (!this._formData) this._formData = new root.FormData();\n this._formData.append(name, val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n * .attach(new Blob(['<a id=\"a\"><b id=\"b\">hey!</b></a>'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n if (!this._formData) this._formData = new root.FormData();\n this._formData.append(field, file, filename || file.name);\n return this;\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.send = function(data){\n var obj = isObject(data);\n var type = this.getHeader('Content-Type');\n\n // merge\n if (obj && isObject(this._data)) {\n for (var key in data) {\n this._data[key] = data[key];\n }\n } else if ('string' == typeof data) {\n if (!type) this.type('form');\n type = this.getHeader('Content-Type');\n if ('application/x-www-form-urlencoded' == type) {\n this._data = this._data\n ? this._data + '&' + data\n : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!obj || isHost(data)) return this;\n if (!type) this.type('json');\n return this;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n var fn = this._callback;\n this.clearTimeout();\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype.timeoutError = function(){\n var timeout = this._timeout;\n var err = new Error('timeout of ' + timeout + 'ms exceeded');\n err.timeout = timeout;\n this.callback(err);\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequest.prototype.withCredentials = function(){\n this._withCredentials = true;\n return this;\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n var self = this;\n var xhr = this.xhr = request.getXHR();\n var query = this._query.join('&');\n var timeout = this._timeout;\n var data = this._formData || this._data;\n\n // store callback\n this._callback = fn || noop;\n\n // state change\n xhr.onreadystatechange = function(){\n if (4 != xhr.readyState) return;\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n var status;\n try { status = xhr.status } catch(e) { status = 0; }\n\n if (0 == status) {\n if (self.timedout) return self.timeoutError();\n if (self.aborted) return;\n return self.crossDomainError();\n }\n self.emit('end');\n };\n\n // progress\n var handleProgress = function(e){\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n e.direction = 'download';\n self.emit('progress', e);\n };\n if (this.hasListeners('progress')) {\n xhr.onprogress = handleProgress;\n }\n try {\n if (xhr.upload && this.hasListeners('progress')) {\n xhr.upload.onprogress = handleProgress;\n }\n } catch(e) {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n\n // timeout\n if (timeout && !this._timer) {\n this._timer = setTimeout(function(){\n self.timedout = true;\n self.abort();\n }, timeout);\n }\n\n // querystring\n if (query) {\n query = request.serializeObject(query);\n this.url += ~this.url.indexOf('?')\n ? '&' + query\n : '?' + query;\n }\n\n // initiate request\n xhr.open(this.method, this.url, true);\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {\n // serialize stuff\n var contentType = this.getHeader('Content-Type');\n var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (var field in this.header) {\n if (null == this.header[field]) continue;\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data !== 'undefined' ? data : null);\n return this;\n};\n\n/**\n * Faux promise support\n *\n * @param {Function} fulfill\n * @param {Function} reject\n * @return {Request}\n */\n\nRequest.prototype.then = function (fulfill, reject) {\n return this.end(function(err, res) {\n err ? reject(err) : fulfill(res);\n });\n}\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * Issue a request:\n *\n * Examples:\n *\n * request('GET', '/users').end(callback)\n * request('/users').end(callback)\n * request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(method, url) {\n // callback\n if ('function' == typeof url) {\n return new Request('GET', method).end(url);\n }\n\n // url first\n if (1 == arguments.length) {\n return new Request('GET', method);\n }\n\n return new Request(method, url);\n}\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n var req = request('GET', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n var req = request('HEAD', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n var req = request('DELETE', url);\n if (fn) req.end(fn);\n return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n var req = request('PATCH', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n var req = request('POST', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n var req = request('PUT', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * Expose `request`.\n */\n\nmodule.exports = request;\n\n\n/***/ }),\n/* 609 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (true) {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n/***/ }),\n/* 610 */\n/***/ (function(module, exports) {\n\n\n/**\n * Reduce `arr` with `fn`.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Mixed} initial\n *\n * TODO: combatible error handling?\n */\n\nmodule.exports = function(arr, fn, initial){ \n var idx = 0;\n var len = arr.length;\n var curr = arguments.length == 3\n ? initial\n : arr[idx++];\n\n while (idx < len) {\n curr = fn.call(null, curr, arr[idx], ++idx, arr);\n }\n \n return curr;\n};\n\n/***/ }),\n/* 611 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {/**\n * cacheModule constructor\n * @param config: {\n * type: {string | 'cache-module'}\n * verbose: {boolean | false},\n * defaultExpiration: {integer | 900},\n * readOnly: {boolean | false},\n * checkOnPreviousEmpty: {boolean | true},\n * backgroundRefreshIntervalCheck: {boolean | true},\n * backgroundRefreshInterval: {integer | 60000},\n * backgroundRefreshMinTtl: {integer | 70000},\n * storage: {string | null},\n * storageMock: {object | null}\n * }\n */\nfunction cacheModule(config){\n var self = this;\n config = config || {};\n self.type = config.type || 'cache-module';\n self.verbose = config.verbose || false;\n self.defaultExpiration = config.defaultExpiration || 900;\n self.readOnly = config.readOnly || false;\n self.checkOnPreviousEmpty = (typeof config.checkOnPreviousEmpty === 'boolean') ? config.checkOnPreviousEmpty : true;\n self.backgroundRefreshIntervalCheck = (typeof config.backgroundRefreshIntervalCheck === 'boolean') ? config.backgroundRefreshIntervalCheck : true;\n self.backgroundRefreshInterval = config.backgroundRefreshInterval || 60000;\n self.backgroundRefreshMinTtl = config.backgroundRefreshMinTtl || 70000;\n var store = null;\n var storageMock = config.storageMock || false;\n var backgroundRefreshEnabled = false;\n var browser = (typeof window !== 'undefined');\n var cache = {\n db: {},\n expirations: {},\n refreshKeys: {}\n };\n var storageKey;\n\n setupBrowserStorage();\n log(false, 'Cache-module client created with the following defaults:', {type: self.type, defaultExpiration: self.defaultExpiration, verbose: self.verbose, readOnly: self.readOnly});\n\n /**\n * Get the value associated with a given key\n * @param {string} key\n * @param {function} cb\n */\n self.get = function(key, cb){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .get() requires 2 arguments.');\n log(false, 'get() called:', {key: key});\n try {\n var now = Date.now();\n var expiration = cache.expirations[key];\n if(expiration > now){\n cb(null, cache.db[key]);\n }\n else{\n expire(key);\n cb(null, null);\n }\n } catch (err) {\n cb({name: 'GetException', message: err}, null);\n }\n }\n\n /**\n * Get multiple values given multiple keys\n * @param {array} keys\n * @param {function} cb\n * @param {integer} index\n */\n self.mget = function(keys, cb, index){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .mget() requires 2 arguments.');\n log(false, '.mget() called:', {keys: keys});\n var values = {};\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n self.get(key, function(err, response){\n if(response !== null){\n values[key] = response;\n }\n });\n }\n cb(null, values, index);\n }\n\n /**\n * Associate a key and value and optionally set an expiration\n * @param {string} key\n * @param {string | object} value\n * @param {integer} expiration\n * @param {function} refresh\n * @param {function} cb\n */\n self.set = function(){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .set() requires at least 2 arguments.');\n var key = arguments[0];\n var value = arguments[1];\n var expiration = arguments[2] || null;\n var refresh = (arguments.length == 5) ? arguments[3] : null;\n var cb = (arguments.length == 5) ? arguments[4] : arguments[3];\n log(false, '.set() called:', {key: key, value: value});\n if(!self.readOnly){\n try {\n expiration = (expiration) ? (expiration * 1000) : (self.defaultExpiration * 1000);\n var exp = expiration + Date.now();\n cache.expirations[key] = exp;\n cache.db[key] = value;\n if(cb) cb();\n if(refresh){\n cache.refreshKeys[key] = {expiration: exp, lifeSpan: expiration, refresh: refresh};\n backgroundRefreshInit();\n }\n overwriteBrowserStorage();\n } catch (err) {\n log(true, '.set() failed for cache of type ' + self.type, {name: 'CacheModuleSetException', message: err});\n }\n }\n }\n\n /**\n * Associate multiple keys with multiple values and optionally set expirations per function and/or key\n * @param {object} obj\n * @param {integer} expiration\n * @param {function} cb\n */\n self.mset = function(obj, expiration, cb){\n throwErrorIf((arguments.length < 1), 'ARGUMENT_EXCEPTION: .mset() requires at least 1 argument.');\n log(false, '.mset() called:', {data: obj});\n for(var key in obj){\n if(obj.hasOwnProperty(key)){\n var tempExpiration = expiration || self.defaultExpiration;\n var value = obj[key];\n if(typeof value === 'object' && value.cacheValue){\n tempExpiration = value.expiration || tempExpiration;\n value = value.cacheValue;\n }\n self.set(key, value, tempExpiration);\n }\n }\n if(cb) cb();\n }\n\n /**\n * Delete the provided keys and their associated values\n * @param {array} keys\n * @param {function} cb\n */\n self.del = function(keys, cb){\n throwErrorIf((arguments.length < 1), 'ARGUMENT_EXCEPTION: .del() requires at least 1 argument.');\n log(false, '.del() called:', {keys: keys});\n if(typeof keys === 'object'){\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n delete cache.db[key];\n delete cache.expirations[key];\n delete cache.refreshKeys[key];\n }\n if(cb) cb(null, keys.length);\n }\n else{\n delete cache.db[keys];\n delete cache.expirations[keys];\n delete cache.refreshKeys[keys];\n if(cb) cb(null, 1); \n }\n overwriteBrowserStorage();\n }\n\n /**\n * Flush all keys and values\n * @param {function} cb\n */\n self.flush = function(cb){\n log(false, '.flush() called');\n cache.db = {};\n cache.expirations = {};\n cache.refreshKeys = {};\n if(cb) cb();\n overwriteBrowserStorage();\n }\n\n /**\n * Enable browser storage if desired and available\n */\n function setupBrowserStorage(){\n if(browser || storageMock){\n if(storageMock){\n store = storageMock;\n storageKey = 'cache-module-storage-mock';\n }\n else{\n var storageType = (config.storage === 'local' || config.storage === 'session') ? config.storage : null;\n store = (storageType && typeof Storage !== void(0)) ? window[storageType + 'Storage'] : false;\n storageKey = (storageType) ? 'cache-module-' + storageType + '-storage' : null;\n }\n if(store){\n var db = store.getItem(storageKey);\n try {\n cache = JSON.parse(db) || cache;\n } catch (err) { /* Do nothing */ }\n }\n else{\n log(true, 'Browser storage is not supported by this browser. Defaulting to an in-memory cache.');\n }\n }\n }\n\n /**\n * Overwrite namespaced browser storage with current cache\n */\n function overwriteBrowserStorage(){\n if((browser && store) || storageMock){\n var db = cache;\n try {\n db = JSON.stringify(db);\n } catch (err) { /* Do nothing */ }\n store.setItem(storageKey, db);\n }\n }\n\n /**\n * Throw a given error if error is true\n * @param {boolean} error\n * @param {string} message\n */\n function throwErrorIf(error, message){\n if(error) throw new Error(message);\n }\n\n /**\n * Delete a given key from cache.db and cache.expirations but not from cache.refreshKeys\n * @param {string} key\n */\n function expire(key){\n delete cache.db[key];\n delete cache.expirations[key];\n overwriteBrowserStorage();\n }\n\n /**\n * Initialize background refresh\n */\n function backgroundRefreshInit(){\n if(!backgroundRefreshEnabled){\n backgroundRefreshEnabled = true;\n if(self.backgroundRefreshIntervalCheck){\n if(self.backgroundRefreshInterval > self.backgroundRefreshMinTtl){\n throw new Error('BACKGROUND_REFRESH_INTERVAL_EXCEPTION: backgroundRefreshInterval cannot be greater than backgroundRefreshMinTtl.');\n }\n }\n setInterval(backgroundRefresh, self.backgroundRefreshInterval);\n }\n }\n\n /**\n * Handle the refresh callback from the consumer, save the data to redis.\n *\n * @param {string} key The key used to save.\n * @param {Object} data refresh keys data.\n * @param {Error|null} err consumer callback failure.\n * @param {*} response The consumer response.\n */\n function handleRefreshResponse (key, data, err, response) {\n if(!err) {\n this.set(key, response, (data.lifeSpan / 1000), data.refresh, function(){});\n }\n }\n\n /**\n * Refreshes all keys that were set with a refresh function\n */\n function backgroundRefresh() {\n var keys = Object.keys(cache.refreshKeys);\n keys.forEach(function(key) {\n var data = cache.refreshKeys[key];\n if(data.expiration - Date.now() < this.backgroundRefreshMinTtl){\n data.refresh(key, handleRefreshResponse.bind(this, key, data));\n }\n }, self);\n }\n\n /**\n * Error logging logic\n * @param {boolean} isError\n * @param {string} message\n * @param {object} data\n */\n function log(isError, message, data){\n if(self.verbose || isError){\n if(data) console.log(self.type + ': ' + message, data);\n else console.log(self.type + message);\n }\n }\n}\n\nmodule.exports = cacheModule;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 612 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {/**\n * cacheModule constructor\n * @param config: {\n * type: {string | 'cache-module'}\n * verbose: {boolean | false},\n * defaultExpiration: {integer | 900},\n * readOnly: {boolean | false},\n * checkOnPreviousEmpty: {boolean | true},\n * backgroundRefreshIntervalCheck: {boolean | true},\n * backgroundRefreshInterval: {integer | 60000},\n * backgroundRefreshMinTtl: {integer | 70000},\n * storage: {string | null},\n * storageMock: {object | null}\n * }\n */\nfunction cacheModule(config){\n var self = this;\n config = config || {};\n self.type = config.type || 'cache-module';\n self.verbose = config.verbose || false;\n self.defaultExpiration = config.defaultExpiration || 900;\n self.readOnly = config.readOnly || false;\n self.checkOnPreviousEmpty = (typeof config.checkOnPreviousEmpty === 'boolean') ? config.checkOnPreviousEmpty : true;\n self.backgroundRefreshIntervalCheck = (typeof config.backgroundRefreshIntervalCheck === 'boolean') ? config.backgroundRefreshIntervalCheck : true;\n self.backgroundRefreshInterval = config.backgroundRefreshInterval || 60000;\n self.backgroundRefreshMinTtl = config.backgroundRefreshMinTtl || 70000;\n var store = null;\n var storageMock = config.storageMock || false;\n var backgroundRefreshEnabled = false;\n var browser = (typeof window !== 'undefined');\n var cache = {\n db: {},\n expirations: {},\n refreshKeys: {}\n };\n var storageKey;\n\n setupBrowserStorage();\n log(false, 'Cache-module client created with the following defaults:', {type: self.type, defaultExpiration: self.defaultExpiration, verbose: self.verbose, readOnly: self.readOnly});\n\n /**\n * Get the value associated with a given key\n * @param {string} key\n * @param {function} cb\n */\n self.get = function(key, cb){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .get() requires 2 arguments.');\n log(false, 'get() called:', {key: key});\n try {\n var now = Date.now();\n var expiration = cache.expirations[key];\n if(expiration > now){\n cb(null, cache.db[key]);\n }\n else{\n expire(key);\n cb(null, null);\n }\n } catch (err) {\n cb({name: 'GetException', message: err}, null);\n }\n }\n\n /**\n * Get multiple values given multiple keys\n * @param {array} keys\n * @param {function} cb\n * @param {integer} index\n */\n self.mget = function(keys, cb, index){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .mget() requires 2 arguments.');\n log(false, '.mget() called:', {keys: keys});\n var values = {};\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n self.get(key, function(err, response){\n if(response !== null){\n values[key] = response;\n }\n });\n }\n cb(null, values, index);\n }\n\n /**\n * Associate a key and value and optionally set an expiration\n * @param {string} key\n * @param {string | object} value\n * @param {integer} expiration\n * @param {function} refresh\n * @param {function} cb\n */\n self.set = function(){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .set() requires at least 2 arguments.');\n var key = arguments[0];\n var value = arguments[1];\n var expiration = arguments[2] || null;\n var refresh = (arguments.length == 5) ? arguments[3] : null;\n var cb = (arguments.length == 5) ? arguments[4] : arguments[3];\n log(false, '.set() called:', {key: key, value: value});\n if(!self.readOnly){\n try {\n expiration = (expiration) ? (expiration * 1000) : (self.defaultExpiration * 1000);\n var exp = expiration + Date.now();\n cache.expirations[key] = exp;\n cache.db[key] = value;\n if(cb) cb();\n if(refresh){\n cache.refreshKeys[key] = {expiration: exp, lifeSpan: expiration, refresh: refresh};\n backgroundRefreshInit();\n }\n overwriteBrowserStorage();\n } catch (err) {\n log(true, '.set() failed for cache of type ' + self.type, {name: 'CacheModuleSetException', message: err});\n }\n }\n }\n\n /**\n * Associate multiple keys with multiple values and optionally set expirations per function and/or key\n * @param {object} obj\n * @param {integer} expiration\n * @param {function} cb\n */\n self.mset = function(obj, expiration, cb){\n throwErrorIf((arguments.length < 1), 'ARGUMENT_EXCEPTION: .mset() requires at least 1 argument.');\n log(false, '.mset() called:', {data: obj});\n for(var key in obj){\n if(obj.hasOwnProperty(key)){\n var tempExpiration = expiration || self.defaultExpiration;\n var value = obj[key];\n if(typeof value === 'object' && value.cacheValue){\n tempExpiration = value.expiration || tempExpiration;\n value = value.cacheValue;\n }\n self.set(key, value, tempExpiration);\n }\n }\n if(cb) cb();\n }\n\n /**\n * Delete the provided keys and their associated values\n * @param {array} keys\n * @param {function} cb\n */\n self.del = function(keys, cb){\n throwErrorIf((arguments.length < 1), 'ARGUMENT_EXCEPTION: .del() requires at least 1 argument.');\n log(false, '.del() called:', {keys: keys});\n if(typeof keys === 'object'){\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n delete cache.db[key];\n delete cache.expirations[key];\n delete cache.refreshKeys[key];\n }\n if(cb) cb(null, keys.length);\n }\n else{\n delete cache.db[keys];\n delete cache.expirations[keys];\n delete cache.refreshKeys[keys];\n if(cb) cb(null, 1); \n }\n overwriteBrowserStorage();\n }\n\n /**\n * Flush all keys and values\n * @param {function} cb\n */\n self.flush = function(cb){\n log(false, '.flush() called');\n cache.db = {};\n cache.expirations = {};\n cache.refreshKeys = {};\n if(cb) cb();\n overwriteBrowserStorage();\n }\n\n /**\n * Enable browser storage if desired and available\n */\n function setupBrowserStorage(){\n if(browser || storageMock){\n if(storageMock){\n store = storageMock;\n storageKey = 'cache-module-storage-mock';\n }\n else{\n var storageType = (config.storage === 'local' || config.storage === 'session') ? config.storage : null;\n store = (storageType && typeof Storage !== void(0)) ? window[storageType + 'Storage'] : false;\n storageKey = (storageType) ? self.type + '-' + storageType + '-storage' : null;\n }\n if(store){\n var db = store.getItem(storageKey);\n try {\n cache = JSON.parse(db) || cache;\n } catch (err) { /* Do nothing */ }\n }\n // If storageType is set but store is not, the desired storage mechanism was not available\n else if(storageType){\n log(true, 'Browser storage is not supported by this browser. Defaulting to an in-memory cache.');\n }\n }\n }\n\n /**\n * Overwrite namespaced browser storage with current cache\n */\n function overwriteBrowserStorage(){\n if((browser && store) || storageMock){\n var db = cache;\n try {\n db = JSON.stringify(db);\n } catch (err) { /* Do nothing */ }\n store.setItem(storageKey, db);\n }\n }\n\n /**\n * Throw a given error if error is true\n * @param {boolean} error\n * @param {string} message\n */\n function throwErrorIf(error, message){\n if(error) throw new Error(message);\n }\n\n /**\n * Delete a given key from cache.db and cache.expirations but not from cache.refreshKeys\n * @param {string} key\n */\n function expire(key){\n delete cache.db[key];\n delete cache.expirations[key];\n overwriteBrowserStorage();\n }\n\n /**\n * Initialize background refresh\n */\n function backgroundRefreshInit(){\n if(!backgroundRefreshEnabled){\n backgroundRefreshEnabled = true;\n if(self.backgroundRefreshIntervalCheck){\n if(self.backgroundRefreshInterval > self.backgroundRefreshMinTtl){\n throw new Error('BACKGROUND_REFRESH_INTERVAL_EXCEPTION: backgroundRefreshInterval cannot be greater than backgroundRefreshMinTtl.');\n }\n }\n setInterval(backgroundRefresh, self.backgroundRefreshInterval);\n }\n }\n\n /**\n * Handle the refresh callback from the consumer, save the data to redis.\n *\n * @param {string} key The key used to save.\n * @param {Object} data refresh keys data.\n * @param {Error|null} err consumer callback failure.\n * @param {*} response The consumer response.\n */\n function handleRefreshResponse (key, data, err, response) {\n if(!err) {\n this.set(key, response, (data.lifeSpan / 1000), data.refresh, function(){});\n }\n }\n\n /**\n * Refreshes all keys that were set with a refresh function\n */\n function backgroundRefresh() {\n var keys = Object.keys(cache.refreshKeys);\n keys.forEach(function(key) {\n var data = cache.refreshKeys[key];\n if(data.expiration - Date.now() < this.backgroundRefreshMinTtl){\n data.refresh(key, handleRefreshResponse.bind(this, key, data));\n }\n }, self);\n }\n\n /**\n * Error logging logic\n * @param {boolean} isError\n * @param {string} message\n * @param {object} data\n */\n function log(isError, message, data){\n if(self.verbose || isError){\n if(data) console.log(self.type + ': ' + message, data);\n else console.log(self.type + message);\n }\n }\n}\n\nmodule.exports = cacheModule;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 613 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar Memcached = __webpack_require__(614);\nvar snappy = __webpack_require__(630);\n\nfunction memcachedCacheService(conf) {\n var config = conf || {};\n var verbose = config.verbose || false;\n var defaultExpiration = config.defaultExpiration || 900;\n var backgroundRefreshIntervalCheck = typeof config.backgroundRefreshIntervalCheck === 'boolean' ? config.backgroundRefreshIntervalCheck : true;\n var backgroundRefreshInterval = config.backgroundRefreshInterval || 60000;\n var backgroundRefreshMinTtl = config.backgroundRefreshMinTtl || 70000;\n var memcachedConfig = config.memcached;\n\n var refreshKeys = {};\n var backgroundRefreshEnabled = false;\n\n var memcached = new Memcached(memcachedConfig.servers, memcachedConfig);\n\n if (verbose) console.log('memcachedCacheService config', { defaultExpiration: defaultExpiration });\n\n /**\n * Initialize background refresh\n */\n function backgroundRefreshInit() {\n if (!backgroundRefreshEnabled) {\n backgroundRefreshEnabled = true;\n if (backgroundRefreshIntervalCheck) {\n if (backgroundRefreshInterval > backgroundRefreshMinTtl) {\n throw new Error('BACKGROUND_REFRESH_INTERVAL_EXCEPTION:' + ' backgroundRefreshInterval cannot be greater than backgroundRefreshMinTtl.');\n }\n }\n setInterval(function () {\n backgroundRefresh();\n }, backgroundRefreshInterval);\n }\n }\n\n /**\n * Refreshes all keys that were set with a refresh function\n */\n function backgroundRefresh() {\n if (verbose) console.log('memcachedCacheService.backgroundRefresh');\n\n Object.keys(refreshKeys).forEach(function (key) {\n var data = refreshKeys[key];\n if (data.expiration - Date.now() < backgroundRefreshMinTtl) {\n data.refresh(key, function (err, response) {\n if (!err) {\n if (verbose) console.log('memcachedCacheService.backgroundRefresh', { key: key });\n set(key, response, data.lifeSpan, data.refresh, function () {});\n }\n });\n }\n });\n }\n\n function get(key) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n\n return memcached.get(key, function (err, data) {\n if (verbose) console.log('memcachedCacheService.get', { key: key });\n if (err) {\n console.error(err);\n callback(err);\n } else if (!data) {\n callback(new Error('No data returned from memcached'));\n } else {\n snappy.uncompress(data, { asBuffer: false }, function (snappyErr, original) {\n if (snappyErr) {\n callback(snappyErr);\n return;\n }\n var resp = void 0;\n try {\n resp = JSON.parse(original);\n } catch (parseError) {\n resp = original;\n }\n callback(snappyErr, resp);\n });\n }\n });\n }\n\n function set(key, value) {\n var _arguments = arguments;\n\n snappy.compress(JSON.stringify(value), function (compressionErr, compressedValue) {\n var expiration = _arguments[2] || null || defaultExpiration;\n var refresh = _arguments.length == 5 ? _arguments[3] : null;\n var callback = (_arguments.length == 5 ? _arguments[4] : _arguments[3]) || function () {};\n return memcached.set(key, compressedValue, expiration, function (err) {\n if (verbose) console.log('memcachedCacheService.set', { key: key, compressedValue: compressedValue, expiration: expiration, refresh: refresh });\n if (err) console.error(key, err);\n callback(err);\n\n if (refresh && !err) {\n var exp = expiration * 1000 + Date.now();\n refreshKeys[key] = { expiration: exp, lifeSpan: expiration, refresh: refresh };\n backgroundRefreshInit();\n }\n });\n });\n }\n\n return {\n db: memcached,\n type: 'memcached',\n verbose: verbose,\n defaultExpiration: defaultExpiration,\n get: get,\n mget: memcached.getMulti,\n set: set,\n mset: function mset(obj, _ref, _ref2) {\n // TODO: implement this.\n\n var _ref4 = _slicedToArray(_ref, 1),\n expiration = _ref4[0];\n\n var _ref3 = _slicedToArray(_ref2, 1),\n callback = _ref3[0];\n },\n del: function del(keys) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n\n if (verbose) console.log('memcachedCacheService.del', { keys: keys });\n\n if ((typeof keys === 'undefined' ? 'undefined' : _typeof(keys)) === 'object') {\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n memcached.del(key, callback);\n delete refreshKeys[key];\n }\n } else {\n memcached.del(keys, callback);\n delete refreshKeys[keys];\n }\n\n delete refreshKeys[key];\n },\n flush: function flush() {\n var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n\n if (verbose) console.log('memcachedCacheService.flush');\n refreshKeys = {};\n memcached.flush(callback);\n }\n };\n}\n\nmodule.exports = memcachedCacheService;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 614 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(615);\n\n/***/ }),\n/* 615 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console, Buffer) {\n\n/**\n * Node's native modules\n */\nvar Stream = __webpack_require__(89).Stream\n , Socket = __webpack_require__(89).Socket;\n\n/**\n * External or custom modules\n */\nvar HashRing = __webpack_require__(619)\n , Connection = __webpack_require__(624)\n , Jackpot = __webpack_require__(625)\n , Utils = __webpack_require__(306)\n , IssueLog = Connection.IssueLog;\n\n/**\n * Variable lookups\n */\nvar curry = Utils.curry;\n\n/**\n * Constructs a new memcached client\n *\n * @constructor\n * @param {Mixed} args Array, string or object with servers\n * @param {Object} options options\n * @api public\n */\nfunction Client (args, options) {\n var servers = []\n , weights = {}\n , regular = 'localhost:11211'\n , key;\n\n // Parse down the connection arguments\n switch (Object.prototype.toString.call(args)) {\n case '[object Object]':\n weights = args;\n servers = Object.keys(args);\n break;\n\n case '[object Array]':\n servers = args.length ? args : [regular];\n break;\n\n default:\n servers.push(args || regular);\n break;\n }\n\n if (!servers.length) {\n throw new Error('No servers where supplied in the arguments');\n }\n\n // merge with global and user config\n Utils.merge(this, Client.config);\n Utils.merge(this, options);\n\n this.servers = servers;\n var compatibility = this.compatibility || this.compatiblity;\n this.HashRing = new HashRing(args, this.algorithm, {\n 'compatibility': compatibility,\n 'default port': compatibility === 'ketama' ? 11211 : null\n });\n this.connections = {};\n this.issues = [];\n}\n\n// Allows users to configure the memcached globally or per memcached client\nClient.config = {\n maxKeySize: 250 // max key size allowed by Memcached\n , maxExpiration: 2592000 // max expiration duration allowed by Memcached\n , maxValue: 1048576 // max length of value allowed by Memcached\n , activeQueries: 0\n , maxQueueSize: -1\n , algorithm: 'md5' // hashing algorithm that is used for key mapping\n , compatibility: 'ketama' // hashring compatibility\n\n , poolSize: 10 // maximal parallel connections\n , retries: 5 // Connection pool retries to pull connection from pool\n , factor: 3 // Connection pool retry exponential backoff factor\n , minTimeout: 1000 // Connection pool retry min delay before retrying\n , maxTimeout: 60000 // Connection pool retry max delay before retrying\n , randomize: false // Connection pool retry timeout randomization\n\n , reconnect: 18000000 // if dead, attempt reconnect each xx ms\n , timeout: 5000 // after x ms the server should send a timeout if we can't connect\n , failures: 5 // Number of times a server can have an issue before marked dead\n , failuresTimeout: 300000 // Time after which `failures` will be reset to original value, since last failure\n , retry: 30000 // When a server has an error, wait this amount of time before retrying\n , idle: 5000 // Remove connection from pool when no I/O after `idle` ms\n , remove: false // remove server if dead if false, we will attempt to reconnect\n , redundancy: false // allows you do re-distribute the keys over a x amount of servers\n , keyCompression: true // compress keys if they are to large (md5)\n , namespace: '' // sentinel to prepend to all memcache keys for namespacing the entries\n , debug: false // Output the commands and responses\n};\n\n// There some functions we don't want users to touch so we scope them\n(function (nMemcached) {\n var LINEBREAK = '\\r\\n'\n , NOREPLY = ' noreply'\n , FLUSH = 1E3\n , BUFFER = 1E2\n , CONTINUE = 1E1\n , FLAG_JSON = 1<<1\n , FLAG_BINARY = 1<<2\n , FLAG_NUMERIC = 1<<3;\n\n nMemcached.prototype.__proto__ = __webpack_require__(139).EventEmitter.prototype;\n\n var memcached = nMemcached.prototype\n , privates = {}\n , undefined;\n\n // Creates or generates a new connection for the give server, the callback\n // will receive the connection if the operation was successful\n memcached.connect = function connect(server, callback) {\n // Default port to 11211\n if(!server.match(/(.+):(\\d+)$/)) {\n server = server + ':11211';\n }\n\n // server is dead, bail out\n if (server in this.issues && this.issues[server].failed) {\n return callback(false, false);\n }\n\n // fetch from connection pool\n if (server in this.connections) {\n return this.connections[server].pull(callback);\n }\n\n // No connection factory created yet, so we must build one\n var serverTokens = server[0] === '/'\n ? server\n : /(.*):(\\d+){1,}$/.exec(server).reverse()\n , memcached = this;\n\n // Pop original string from array\n if (Array.isArray(serverTokens)) serverTokens.pop();\n\n var sid = 0\n , manager;\n\n /**\n * Generate a new connection pool manager.\n */\n\n manager = new Jackpot(this.poolSize);\n manager.retries = memcached.retries;\n manager.factor = memcached.factor;\n manager.minTimeout = memcached.minTimeout;\n manager.maxTimeout = memcached.maxTimeout;\n manager.randomize = memcached.randomize;\n\n manager.setMaxListeners(0);\n\n manager.factory(function factory() {\n var S = Array.isArray(serverTokens)\n ? new Stream\n : new Socket\n , Manager = this\n , idleTimeout = function() {\n Manager.remove(this);\n }\n , streamError = function(e) {\n memcached.connectionIssue(e.toString(), S);\n Manager.remove(this);\n };\n\n // config the Stream\n S.streamID = sid++;\n S.setTimeout(memcached.timeout);\n S.setNoDelay(true);\n S.setEncoding('utf8');\n S.metaData = [];\n S.responseBuffer = \"\";\n S.bufferArray = [];\n S.serverAddress = server;\n S.tokens = [].concat(serverTokens);\n S.memcached = memcached;\n\n // Add the event listeners\n Utils.fuse(S, {\n close: function streamClose() {\n Manager.remove(this);\n }\n , data: curry(memcached, privates.buffer, S)\n , connect: function streamConnect() {\n // Jackpot handles any pre-connect timeouts by calling back\n // with the error object.\n this.setTimeout(this.memcached.idle, idleTimeout);\n // Jackpot handles any pre-connect errors, but does not handle errors\n // once a connection has been made, nor does Jackpot handle releasing\n // connections if an error occurs post-connect\n this.on('error', streamError);\n }\n , end: S.end\n });\n\n // connect the net.Stream (or net.Socket) [port, hostname]\n S.connect.apply(S, S.tokens);\n return S;\n });\n\n manager.on('error', function err(e) {\n if (memcached.debug) console.log('Connection error', e);\n });\n\n this.connections[server] = manager;\n\n // now that we have setup our connection factory we can allocate a new\n // connection\n this.connections[server].pull(callback);\n };\n\n // Exposes buffer to test-suite\n memcached.buffer = function buffer() {\n return privates.buffer.apply(this, arguments);\n };\n\n // Creates a multi stream, so it's easier to query agains multiple memcached\n // servers.\n memcached.multi = function memcachedMulti(keys, callback) {\n var map = {}\n , memcached = this\n , servers\n , i;\n\n // gets all servers based on the supplied keys,\n // or just gives all servers if we don't have keys\n if (keys) {\n keys.forEach(function fetchMultipleServers(key) {\n var server = memcached.servers.length === 1\n ? memcached.servers[0]\n : memcached.HashRing.get(key);\n\n if (map[server]){\n map[server].push(key);\n } else {\n map[server] = [key];\n }\n });\n\n // store the servers\n servers = Object.keys(map);\n } else {\n servers = this.servers;\n }\n\n i = servers.length;\n\n while (i--) {\n //memcached.delegateCallback(this, servers[i], map[servers[i]], i, servers.length, callback);\n callback.call(this, servers[i], map[servers[i]], i, servers.length);\n }\n };\n\n // Executes the command on the net.Stream, if no server is supplied it will\n // use the query.key to get the server from the HashRing\n memcached.command = function memcachedCommand(queryCompiler, server) {\n\n this.activeQueries++;\n var query = queryCompiler();\n\n if (this.activeQueries> this.maxQueueSize && this.maxQueueSize > 0){\n this.makeCallback(query.callback, \"over queue limit\", null);\n query = null;\n return;\n }\n\n // generate a regular query,\n var redundancy = this.redundancy && this.redundancy < this.servers.length\n , queryRedundancy = query.redundancyEnabled\n , memcached = this;\n\n // validate the arguments\n if (query.validate && !Utils.validateArg(query, this)) {\n this.activeQueries--;\n return;\n }\n\n // try to find the correct server for this query\n if (!server) {\n // no need to do a hashring lookup if we only have one server assigned to\n // us\n if (this.servers.length === 1) {\n server = this.servers[0];\n } else {\n if (redundancy && queryRedundancy) {\n redundancy = this.HashRing.createRange(query.key, (this.redundancy + 1), true);\n server = redundancy.shift();\n } else {\n server = this.HashRing.get(query.key);\n }\n }\n }\n\n // check if any server exists or and if the server is still alive\n // a server may not exist if the manager was never able to connect\n // to any server.\n if (!server || (server in this.issues && this.issues[server].failed)) {\n return query.callback && memcached.makeCallback(query.callback,new Error(['Server at', server, 'not available'].join(' ')));\n }\n\n this.connect(server, function allocateMemcachedConnection(error, S) {\n if (memcached.debug) {\n query.command.split(LINEBREAK).forEach(function errors(line) {\n console.log(S.streamID + ' << ' + line);\n });\n }\n\n // S not set if unable to connect to server\n if (!S) {\n var S = {\n serverAddress: server,\n tokens: server.split(':').reverse()\n }\n var message = error || 'Unable to connect to server';\n memcached.connectionIssue(message, S);\n return query.callback && memcached.makeCallback(query.callback,new Error(message));\n\n }\n\n // Other errors besides inability to connect to server\n if (error) {\n memcached.connectionIssue(error.toString(), S);\n return query.callback && memcached.makeCallback(query.callback,error);\n }\n\n if (S.readyState !== 'open') {\n var message = 'Connection readyState is set to ' + S.readyState;\n memcached.connectionIssue(message, S);\n return query.callback && memcached.makeCallback(query.callback,new Error(message));\n }\n\n // used for request timing\n query.start = Date.now();\n S.metaData.push(query);\n S.write(Utils.reallocString(query.command + LINEBREAK));\n });\n\n // if we have redundancy enabled and the query is used for redundancy, than\n // we are going loop over the servers, check if we can reach them, and\n // connect to the correct net connection. because all redundancy queries are\n // executed with \"no reply\" we do not need to store the callback as there\n // will be no value to parse.\n if (redundancy && queryRedundancy) {\n queryRedundancy = queryCompiler(queryRedundancy);\n\n redundancy.forEach(function each(server) {\n if (server in memcached.issues && memcached.issues[server].failed){\n return;\n }\n\n memcached.connect(server, function allocateMemcachedConnection(error, S) {\n if (!S || error || S.readyState !== 'open') return;\n S.write(queryRedundancy.command + LINEBREAK);\n });\n });\n }\n };\n\n // Logs all connection issues, and handles them off. Marking all requests as\n // cache misses.\n memcached.connectionIssue = function connectionIssue(error, S) {\n if (S && S.end) S.end();\n\n var issues\n , server = S.serverAddress\n , memcached = this;\n\n // check for existing issue logs, or create a new log\n if (server in this.issues) {\n issues = this.issues[server];\n } else {\n issues = this.issues[server] = new IssueLog({\n server: server\n , tokens: S.tokens\n , reconnect: this.reconnect\n , failures: this.failures\n , failuresTimeout: this.failuresTimeout\n , retry: this.retry\n , remove: this.remove\n , failOverServers: this.failOverServers || null\n });\n\n // proxy the events\n Utils.fuse(issues, {\n issue: function issue(details) {\n memcached.emit('issue', details);\n }\n , failure: function failure(details) {\n memcached.emit('failure', details);\n }\n , reconnecting: function reconnect(details) {\n memcached.emit('reconnecting', details);\n }\n , reconnected: function reconnected(details) {\n memcached.emit('reconnect', details);\n }\n , remove: function remove(details) {\n // emit event and remove servers\n memcached.emit('remove', details);\n memcached.connections[server].end();\n\n if (this.failOverServers && this.failOverServers.length) {\n memcached.HashRing.swap(server, this.failOverServers.shift());\n } else {\n memcached.HashRing.remove(server);\n memcached.emit('failure', details);\n }\n }\n });\n\n // bumpt the event listener limit\n issues.setMaxListeners(0);\n }\n\n // log the issue\n issues.log(error);\n };\n\n // Kills all active connections\n memcached.end = function endMemcached() {\n var memcached = this;\n\n Object.keys(this.connections).forEach(function closeConnection(key) {\n memcached.connections[key].free(0);\n });\n };\n\n // These do not need to be publicly available as it's one of the most important\n // parts of the whole client, the parser commands:\n privates.parsers = {\n // handle error responses\n 'NOT_FOUND': function notfound(tokens, dataSet, err) {\n return [CONTINUE, false];\n }\n\n , 'NOT_STORED': function notstored(tokens, dataSet, err) {\n var errObj = new Error('Item is not stored');\n errObj.notStored = true;\n err.push(errObj);\n return [CONTINUE, false];\n }\n\n , 'ERROR': function error(tokens, dataSet, err) {\n err.push(new Error('Received an ERROR response'));\n return [FLUSH, false];\n }\n\n , 'CLIENT_ERROR': function clienterror(tokens, dataSet, err) {\n err.push(new Error(tokens.splice(1).join(' ')));\n return [CONTINUE, false];\n }\n\n , 'SERVER_ERROR': function servererror(tokens, dataSet, err, queue, S, memcached) {\n (memcached || this.memcached).connectionIssue(tokens.splice(1).join(' '), this);\n return [CONTINUE, false];\n }\n\n // keyword based responses\n , 'STORED': function stored(tokens, dataSet) {\n return [CONTINUE, true];\n }\n\n , 'TOUCHED': function touched(tokens, dataSet) {\n return [CONTINUE, true];\n }\n\n , 'DELETED': function deleted(tokens, dataSet) {\n return [CONTINUE, true];\n }\n\n , 'OK': function ok(tokens, dataSet) {\n return [CONTINUE, true];\n }\n\n , 'EXISTS': function exists(tokens, dataSet) {\n return [CONTINUE, false];\n }\n\n , 'END': function end(tokens, dataSet, err, queue) {\n if (!queue.length) queue.push(undefined);\n return [FLUSH, true];\n }\n\n // value parsing:\n , 'VALUE': function value(tokens, dataSet, err, queue) {\n var key = tokens[1]\n , flag = +tokens[2]\n , dataLen = tokens[3] // length of dataSet in raw bytes\n , cas = tokens[4]\n , multi = this.metaData[0] && this.metaData[0].multi || cas\n ? {}\n : false\n , tmp;\n\n // In parse data there is an '||' passing us the content of token\n // if dataSet is empty. This may be fine for other types of responses,\n // in the case of an empty string being stored in a key, it will\n // result in unexpected behavior:\n // https://github.com/3rd-Eden/node-memcached/issues/64\n if (dataLen === '0') {\n dataSet = '';\n }\n\n switch (flag) {\n case FLAG_JSON:\n dataSet = JSON.parse(dataSet);\n break;\n case FLAG_NUMERIC:\n dataSet = +dataSet;\n break;\n case FLAG_BINARY:\n tmp = new Buffer(dataSet.length);\n tmp.write(dataSet, 0, 'binary');\n dataSet = tmp;\n break;\n }\n\n // Add to queue as multiple get key key key key key returns multiple values\n if (!multi) {\n queue.push(dataSet);\n } else {\n multi[key] = dataSet;\n if (cas) multi.cas = cas;\n queue.push(multi);\n }\n\n return [BUFFER, false];\n }\n\n , 'INCRDECR': function incrdecr(tokens) {\n return [CONTINUE, +tokens[1]];\n }\n\n , 'STAT': function stat(tokens, dataSet, err, queue) {\n queue.push([tokens[1], /^\\d+$/.test(tokens[2]) ? +tokens[2] : tokens[2]]);\n return [BUFFER, true];\n }\n\n , 'VERSION': function version(tokens, dataSet) {\n var versionTokens = /(\\d+)(?:\\.)(\\d+)(?:\\.)(\\d+)$/.exec(tokens[1]);\n\n return [CONTINUE, {\n server: this.serverAddress\n , version: versionTokens[0]\n , major: versionTokens[1] || 0\n , minor: versionTokens[2] || 0\n , bugfix: versionTokens[3] || 0\n }];\n }\n\n , 'ITEM': function item(tokens, dataSet, err, queue) {\n queue.push({\n key: tokens[1]\n , b: +tokens[2].substr(1)\n , s: +tokens[4]\n });\n\n return [BUFFER, false];\n }\n // Amazon-specific memcached configuration information, used for node\n // auto-discovery.\n , 'CONFIG': function() {\n return [CONTINUE, this.bufferArray[0]];\n }\n };\n\n function resultSetIsEmpty(resultSet) {\n return !resultSet || (resultSet.length === 1 && !resultSet[0]);\n }\n\n // Parses down result sets\n privates.resultParsers = {\n // combines the stats array, in to an object\n 'stats': function stats(resultSet) {\n var response = {};\n if (resultSetIsEmpty(resultSet)) return response;\n\n // add references to the retrieved server\n response.server = this.serverAddress;\n\n // Fill the object\n resultSet.forEach(function each(statSet) {\n if (statSet) response[statSet[0]] = statSet[1];\n });\n\n return response;\n }\n\n // the settings uses the same parse format as the regular stats\n , 'stats settings': function settings() {\n return privates.resultParsers.stats.apply(this, arguments);\n }\n\n // Group slabs by slab id\n , 'stats slabs': function slabs(resultSet) {\n var response = {};\n if (resultSetIsEmpty(resultSet)) return response;\n\n // add references to the retrieved server\n response.server = this.serverAddress;\n\n // Fill the object\n resultSet.forEach(function each(statSet) {\n if (statSet) {\n var identifier = statSet[0].split(':');\n\n if (!response[identifier[0]]) response[identifier[0]] = {};\n response[identifier[0]][identifier[1]] = statSet[1];\n }\n });\n\n return response;\n }\n\n , 'stats items': function items(resultSet) {\n var response = {};\n if (resultSetIsEmpty(resultSet)) return response;\n\n // add references to the retrieved server\n response.server = this.serverAddress;\n\n // Fill the object\n resultSet.forEach(function each(statSet) {\n if (statSet && statSet.length > 1) {\n var identifier = statSet[0].split(':');\n\n if (!response[identifier[1]]) response[identifier[1]] = {};\n response[identifier[1]][identifier[2]] = statSet[1];\n }\n });\n\n return response;\n }\n };\n\n // Generates a RegExp that can be used to check if a chunk is memcached response identifier\n privates.allCommands = new RegExp('^(?:' + Object.keys(privates.parsers).join('|') + '|\\\\d' + ')');\n privates.bufferedCommands = new RegExp('^(?:' + Object.keys(privates.parsers).join('|') + ')');\n\n // When working with large chunks of responses, node chunks it in to pieces.\n // So we might have half responses. So we are going to buffer up the buffer\n // and user our buffered buffer to query // against. Also when you execute\n // allot of .writes to the same stream, node will combine the responses in to\n // one response stream. With no indication where it had cut the data. So it\n // can be it cuts inside the value response, or even right in the middle of\n // a line-break, so we need to make sure, the last piece in the buffer is\n // a LINEBREAK because that is all what is sure about the Memcached Protocol,\n // all responds end with them.\n privates.buffer = function BufferBuffer(S, BufferStream) {\n S.responseBuffer += BufferStream;\n\n // only call transform the data once we are sure, 100% sure, that we valid\n // response ending\n if (S.responseBuffer.substr(S.responseBuffer.length - 2) === LINEBREAK) {\n S.responseBuffer = Utils.reallocString(S.responseBuffer);\n\n var chunks = S.responseBuffer.split(LINEBREAK);\n\n if (this.debug) {\n chunks.forEach(function each(line) {\n console.log(S.streamID + ' >> ' + line);\n });\n }\n\n // Fix zero-line endings in the middle\n var chunkLength = (chunks.length-1);\n if (chunks[chunkLength].length === 0) chunks.splice(chunkLength, 1);\n\n S.responseBuffer = \"\"; // clear!\n this.rawDataReceived(S, S.bufferArray = S.bufferArray.concat(chunks));\n }\n };\n\n memcached.delegateCallback = function(){\n this.activeQueries--;\n var master = arguments[0];\n var cb = arguments[arguments.length-1];\n var args = Array.prototype.slice.call(arguments, 1, arguments.length-1);\n cb.apply(master, args);\n };\n\n memcached.makeCallback = function(cb){\n this.activeQueries--;\n var args = Array.prototype.slice.call(arguments, 1);\n cb.apply(this, args); //loose first\n };\n\n // The actual parsers function that scan over the responseBuffer in search of\n // Memcached response identifiers. Once we have found one, we will send it to\n // the dedicated parsers that will transform the data in a human readable\n // format, deciding if we should queue it up, or send it to a callback fn.\n memcached.rawDataReceived = function rawDataReceived(S) {\n var queue = []\n , token\n , tokenSet\n , dataSet\n , resultSet\n , metaData\n , err = []\n , tmp;\n\n while(S.bufferArray.length && privates.allCommands.test(S.bufferArray[0])) {\n token = S.bufferArray.shift();\n tokenSet = token.split(' ');\n\n if (/^\\d+$/.test(tokenSet[0])) {\n // special case for \"config get cluster\"\n // Amazon-specific memcached configuration information, see aws\n // documentation regarding adding auto-discovery to your client library.\n // Example response of a cache cluster containing three nodes:\n // configversion\\n\n // hostname|ip-address|port hostname|ip-address|port hostname|ip-address|port\\n\\r\\n\n if (/(([-.a-zA-Z0-9]+)\\|(\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b)\\|(\\d+))/.test(S.bufferArray[0])) {\n tokenSet.unshift('CONFIG');\n }\n // special case for digit only's these are responses from INCR and DECR\n else {\n tokenSet.unshift('INCRDECR');\n }\n }\n // special case for value, it's required that it has a second response!\n // add the token back, and wait for the next response, we might be\n // handling a big ass response here.\n if (tokenSet[0] === 'VALUE' && S.bufferArray.indexOf('END') === -1) {\n return S.bufferArray.unshift(token);\n }\n\n // check for dedicated parser\n if (privates.parsers[tokenSet[0]]) {\n\n // fetch the response content\n if (tokenSet[0] === 'VALUE') {\n dataSet = Utils.unescapeValue(S.bufferArray.shift());\n }\n\n resultSet = privates.parsers[tokenSet[0]].call(S, tokenSet, dataSet || token, err, queue, this);\n\n // check how we need to handle the resultSet response\n switch (resultSet.shift()) {\n case BUFFER:\n break;\n\n case FLUSH:\n metaData = S.metaData.shift();\n resultSet = queue;\n\n // if we have a callback, call it\n if (metaData && metaData.callback) {\n metaData.execution = Date.now() - metaData.start;\n this.delegateCallback(\n metaData\n , err.length ? err : err[0]\n\n // see if optional parsing needs to be applied to make the result set more readable\n , privates.resultParsers[metaData.type]\n ? privates.resultParsers[metaData.type].call(S, resultSet, err)\n : !Array.isArray(queue) || queue.length > 1 ? queue : queue[0]\n ,metaData.callback\n );\n }\n\n queue.length = err.length = 0;\n break;\n\n default:\n metaData = S.metaData.shift();\n\n if (metaData && metaData.callback) {\n metaData.execution = Date.now() - metaData.start;\n this.delegateCallback(metaData, err.length > 1 ? err : err[0], resultSet[0], metaData.callback);\n }\n\n err.length = 0;\n break;\n }\n } else {\n // handle unkown responses\n metaData = S.metaData.shift();\n if (metaData && metaData.callback){\n metaData.execution = Date.now() - metaData.start;\n this.delegateCallback(metaData, new Error('Unknown response from the memcached server: \"' + token + '\"'), false, metaData.callback);\n }\n }\n\n // cleanup\n dataSet = tokenSet = metaData = undefined;\n\n // check if we need to remove an empty item from the array, as splitting on /r/n might cause an empty\n // item at the end..\n if (S.bufferArray[0] === '') S.bufferArray.shift();\n }\n };\n\n // Small wrapper function that only executes errors when we have a callback\n privates.errorResponse = function errorResponse(error, callback) {\n if (typeof callback === 'function') {\n memcached.makeCallback(callback,error, false);\n }\n\n return false;\n };\n\n // This is where the actual Memcached API layer begins:\n memcached.touch = function touch(key, lifetime, callback) {\n var fullkey = this.namespace + key;\n this.command(function touchCommand() {\n return {\n key: fullkey\n , callback: callback\n , lifetime: lifetime\n , validate: [['key', String], ['lifetime', Number], ['callback', Function]]\n , type: 'touch'\n , command: ['touch', fullkey, lifetime].join(' ')\n };\n });\n };\n\n memcached.get = function get(key, callback) {\n if (Array.isArray(key)) return this.getMulti.apply(this, arguments);\n\n var fullkey = this.namespace + key;\n this.command(function getCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , validate: [['key', String], ['callback', Function]]\n , type: 'get'\n , command: 'get ' + fullkey\n };\n });\n };\n\n // the difference between get and gets is that gets, also returns a cas value\n // and gets doesn't support multi-gets at this moment.\n memcached.gets = function get(key, callback) {\n var fullkey = this.namespace + key;\n this.command(function getCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , validate: [['key', String], ['callback', Function]]\n , type: 'gets'\n , command: 'gets ' + fullkey\n };\n });\n };\n\n // Handles get's with multiple keys\n memcached.getMulti = function getMulti(keys, callback) {\n var memcached = this\n , responses = {}\n , errors = []\n , calls;\n\n if (memcached.namespace.length) keys = keys.map(function compile(key){\n return memcached.namespace + key;\n });\n\n // handle multiple responses and cache them untill we receive all.\n function handle(err, results) {\n if (err) {\n errors.push(err);\n }\n\n // add all responses to the array\n (Array.isArray(results) ? results : [results]).forEach(function each(value) {\n if (value && memcached.namespace.length) {\n var ns_key = Object.keys(value)[0]\n , newvalue = {};\n\n newvalue[ns_key.replace(memcached.namespace, '')] = value[ns_key];\n Utils.merge(responses, newvalue);\n } else {\n Utils.merge(responses, value);\n }\n });\n\n if (!--calls){\n callback(errors.length ? errors : undefined, responses);\n }\n }\n\n this.multi(keys, function multi(server, key, index, totals) {\n if (!calls) calls = totals;\n\n memcached.command(function getMultiCommand(noreply) {\n return {\n callback: handle\n , multi: true\n , type: 'get'\n , command: 'get ' + key.join(' ')\n , key: keys\n , validate: [['key', Array], ['callback', Function]]\n };\n }, server);\n });\n };\n\n // As all command nearly use the same syntax we are going to proxy them all to\n // this function to ease maintenance. This is possible because most set\n // commands will use the same syntax for the Memcached server. Some commands\n // do not require a lifetime and a flag, but the memcached server is smart\n // enough to ignore those.\n privates.setters = function setters(type, validate, key, value, lifetime, callback, cas) {\n var fullkey = this.namespace + key;\n var flag = 0\n , valuetype = typeof value\n , length;\n\n if (Buffer.isBuffer(value)) {\n flag = FLAG_BINARY;\n value = value.toString('binary');\n } else if (valuetype === 'number') {\n flag = FLAG_NUMERIC;\n value = value.toString();\n } else if (valuetype !== 'string') {\n flag = FLAG_JSON;\n value = JSON.stringify(value);\n }\n\n value = Utils.escapeValue(value);\n\n length = Buffer.byteLength(value);\n if (length > this.maxValue) {\n return privates.errorResponse(new Error('The length of the value is greater than ' + this.maxValue), callback);\n }\n\n this.command(function settersCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , lifetime: lifetime\n , value: value\n , cas: cas\n , validate: validate\n , type: type\n , redundancyEnabled: false\n , command: [type, fullkey, flag, lifetime, length].join(' ') +\n (cas ? ' ' + cas : '') +\n (noreply ? NOREPLY : '') +\n LINEBREAK + value\n };\n });\n };\n\n // Curry the function and so we can tell the type our private set function\n memcached.set = curry(undefined, privates.setters\n , 'set'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n );\n\n memcached.replace = curry(undefined, privates.setters\n , 'replace'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n );\n\n memcached.add = curry(undefined, privates.setters\n , 'add'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n );\n\n memcached.cas = function checkandset(key, value, cas, lifetime, callback) {\n privates.setters.call(this\n , 'cas'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n , key\n , value\n , lifetime\n , callback\n , cas\n );\n };\n\n memcached.append = function append(key, value, callback) {\n privates.setters.call(this\n , 'append'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n , key\n , value\n , 0\n , callback\n );\n };\n\n memcached.prepend = function prepend(key, value, callback) {\n privates.setters.call(this\n , 'prepend'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n , key\n , value\n , 0\n , callback\n );\n };\n\n // Small handler for incr and decr's\n privates.incrdecr = function incrdecr(type, key, value, callback) {\n var fullkey = this.namespace + key;\n this.command(function incredecrCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , value: value\n , validate: [\n ['key', String]\n , ['value', Number]\n , ['callback', Function]\n ]\n , type: type\n , redundancyEnabled: true\n , command: [type, fullkey, value].join(' ') +\n (noreply ? NOREPLY : '')\n };\n });\n };\n\n // Curry the function and so we can tell the type our private incrdecr\n memcached.increment = memcached.incr = curry(undefined, privates.incrdecr, 'incr');\n memcached.decrement = memcached.decr = curry(undefined, privates.incrdecr, 'decr');\n\n // Deletes the keys from the servers\n memcached.del = function del(key, callback){\n var fullkey = this.namespace + key;\n this.command(function deleteCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , validate: [\n ['key', String]\n , ['callback', Function]\n ]\n , type: 'delete'\n , redundancyEnabled: true\n , command: 'delete ' + fullkey +\n (noreply ? NOREPLY : '')\n };\n });\n };\n memcached['delete'] = memcached.del;\n\n // Small wrapper that handle single keyword commands such as FLUSH ALL, VERSION and STAT\n privates.singles = function singles(type, callback) {\n var memcached = this\n , responses = []\n , errors\n , calls;\n\n // handle multiple servers\n function handle(err, results) {\n if (err) {\n errors = errors || [];\n errors.push(err);\n }\n if (results) responses = responses.concat(results);\n\n // multi calls should ALWAYS return an array!\n if (!--calls) {\n callback(errors && errors.length ? errors.pop() : undefined, responses);\n }\n }\n\n this.multi(false, function multi(server, keys, index, totals) {\n if (!calls) calls = totals;\n\n memcached.command(function singlesCommand(noreply) {\n return {\n callback: handle\n , type: type\n , command: type\n };\n }, server);\n });\n };\n\n // Curry the function and so we can tell the type our private singles\n memcached.version = curry(undefined, privates.singles, 'version');\n memcached.flush = curry(undefined, privates.singles, 'flush_all');\n memcached.stats = curry(undefined, privates.singles, 'stats');\n memcached.settings = curry(undefined, privates.singles, 'stats settings');\n memcached.slabs = curry(undefined, privates.singles, 'stats slabs');\n memcached.items = curry(undefined, privates.singles, 'stats items');\n\n // aliases\n memcached.flushAll = memcached.flush;\n memcached.statsSettings = memcached.settings;\n memcached.statsSlabs = memcached.slabs;\n memcached.statsItems = memcached.items;\n\n\n // You need to use the items dump to get the correct server and slab settings\n // see simple_cachedump.js for an example\n memcached.cachedump = function cachedump(server, slabid, number, callback) {\n this.command(function cachedumpCommand(noreply) {\n return {\n callback: callback\n , number: number\n , slabid: slabid\n , validate: [\n ['number', Number]\n , ['slabid', Number]\n , ['callback', Function]\n ]\n , type: 'stats cachedump'\n , command: 'stats cachedump ' + slabid + ' ' + number\n };\n }, server);\n };\n})(Client);\n\nmodule.exports = Client;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2), __webpack_require__(305).Buffer))\n\n/***/ }),\n/* 616 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n\n/***/ }),\n/* 617 */\n/***/ (function(module, exports) {\n\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n/***/ }),\n/* 618 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n/***/ }),\n/* 619 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {\n\nvar SimpleCache = __webpack_require__(620)\n , parse = __webpack_require__(622)\n , crypto = __webpack_require__(89);\n\n/**\n * Generate the hash of the value.\n *\n * @api private\n */\nfunction hashValueHash(a, b, c, d) {\n return ((a << 24) | (b << 16) | (c << 8) | d) >>> 0;\n}\n\n/**\n * Add a virtual node parser to the connection string parser.\n *\n * @param {Object} data server data\n * @param {Mixed} value optional value\n * @api private\n */\nparse.extension('vnodes', function vnode(data, value) {\n if (typeof value === 'object' && !Array.isArray(value) && 'vnodes' in value) {\n data.vnodes = +value.vnodes || 0;\n } else {\n data.vnodes = 0;\n }\n});\n\n/**\n * HashRing implements consistent hashing so adding or removing servers of one\n * slot does not significantly change the mapping of the key to slots. The\n * consistent hashing algorithm is based on ketama or libketama.\n *\n * @constructor\n * @param {Mixed} server Servers that need to be added to the ring.\n * @param {Mixed} algorithm Either a Crypto compatible algorithm or custom hasher.\n * @param {Object} options Optional configuration and options for the ring.\n * @api public\n */\nfunction HashRing(servers, algorithm, options) {\n options = options || {};\n\n //\n // These properties can be configured\n //\n this.vnode = 'vnode count' in options ? options['vnode count'] : 40;\n this.algorithm = algorithm || 'md5';\n\n //\n // if the default port is set, and a host uses it, then it is excluded from\n // the hash.\n //\n this.defaultport = options['default port'] || null;\n\n //\n // There's a slight difference between libketama and python's hash_ring\n // module, libketama creates 160 points per server:\n //\n // 40 hashes (vnodes) and 4 replicas per hash = 160 points per server.\n //\n // The hash_ring module only uses 120 points per server:\n //\n // 40 hashes (vnodes) and 3 replicas per hash = 120 points per server.\n //\n // And that's the only difference between the original ketama hash and the\n // hash_ring package. Small, but important.\n //\n this.replicas = options.compatibility\n ? (options.compatibility === 'hash_ring' ? 3 : 4)\n : ('replicas' in options ? +options.replicas : 4);\n\n //\n // Replica's cannot be 0 as it means we have nothing to iterate over when\n // creating the initial hash ring.\n //\n if (this.replicas <= 0) this.replicas = 1;\n\n // Private properties.\n var connections = parse(servers);\n\n this.ring = [];\n this.size = 0;\n this.vnodes = connections.vnodes;\n this.servers = connections.servers;\n\n // Set up a ache as we don't want to preform a hashing operation every single\n // time we lookup a key.\n this.cache = new SimpleCache({\n maxSize: 'max cache size' in options ? options['max cache size'] : 5000\n });\n\n // Override the hashing function if people want to use a hashing algorithm\n // that is not supported by Node, for example if you want to MurMur hashing or\n // something else exotic.\n if ('function' === typeof this.algorithm) {\n this.hash = this.algorithm;\n }\n\n // Generate the continuum of the HashRing.\n this.continuum();\n}\n\n/**\n * Generates the continuum of server a.k.a. the Hash Ring based on their weights\n * and virtual nodes assigned.\n *\n * @returns {HashRing}\n * @api private\n */\nHashRing.prototype.continuum = function generate() {\n var servers = this.servers\n , self = this\n , index = 0\n , total = 0;\n\n // No servers, bailout.\n if (!servers.length) return this;\n\n // Generate the total weight of all the servers.\n total = servers.reduce(function reduce(total, server) {\n return total + server.weight;\n }, 0);\n\n servers.forEach(function each(server) {\n var percentage = server.weight / total\n , vnodes = self.vnodes[server.string] || self.vnode\n , length = Math.floor(percentage * vnodes * servers.length)\n , key\n , x;\n\n // If you supply us with a custom vnode size, we will use that instead of\n // our computed distribution.\n if (vnodes !== self.vnode) length = vnodes;\n\n for (var i = 0; i < length; i++) {\n if (self.defaultport && server.port === self.defaultport) {\n x = self.digest(server.host +'-'+ i);\n } else {\n x = self.digest(server.string +'-'+ i);\n }\n\n for (var j = 0; j < self.replicas; j++) {\n key = hashValueHash(x[3 + j * 4], x[2 + j * 4], x[1 + j * 4], x[j * 4]);\n self.ring[index] = new Node(key, server.string);\n index++;\n }\n }\n });\n\n // Sort the keys using the continuum points compare that is used in ketama\n // hashing.\n this.ring = this.ring.sort(function sorted(a, b) {\n if (a.value === b.value) return 0;\n else if (a.value > b.value) return 1;\n\n return -1;\n });\n\n this.size = this.ring.length;\n return this;\n};\n\n/**\n * Find the correct node for the key which is closest to the point after what\n * the given key hashes to.\n *\n * @param {String} key Key who's server we need to figure out.\n * @returns {String} Server address.\n * @api public\n */\nHashRing.prototype.get = function get(key) {\n var cache = this.cache.get(key);\n if (cache) return cache;\n\n var node = this.ring[this.find(this.hashValue(key))];\n if (!node) return undefined;\n\n this.cache.set(key, node.server);\n return node.server;\n};\n\n/**\n * Returns the position of the hashValue in the hashring.\n *\n * @param {Number} hashValue Find the nearest server close to this hash.\n * @returns {Number} Position of the server in the hash ring.\n * @api public\n */\nHashRing.prototype.find = function find(hashValue) {\n var ring = this.ring\n , high = this.size\n , low = 0\n , middle\n , prev\n , mid;\n\n // Preform a search on the array to find the server with the next biggest\n // point after what the given key hashes to.\n while (true) {\n mid = (low + high) >> 1;\n\n if (mid === this.size) return 0;\n\n middle = ring[mid].value;\n prev = mid === 0 ? 0 : ring[mid - 1].value;\n\n if (hashValue <= middle && hashValue > prev) return mid;\n\n if (middle < hashValue) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n\n if (low > high) return 0;\n }\n};\n\n/**\n * Generates a hash of the string.\n *\n * @param {String} key\n * @returns {String|Buffer} Hash, depends on node version.\n * @api private\n */\nHashRing.prototype.hash = function hash(key) {\n return crypto.createHash(this.algorithm).update(key).digest();\n};\n\n/**\n * Digest hash so we can make a numeric representation from the hash.\n *\n * @param {String} key The key that needs to be hashed.\n * @returns {Array}\n * @api private\n */\nHashRing.prototype.digest = function digest(key) {\n var hash = this.hash(key +'');\n\n // Support for Node 0.10 which returns buffers so we don't need to charAt\n // lookups.\n if ('string' !== typeof hash) return hash;\n\n return hash.split('').map(function charCode(char) {\n return char.charCodeAt(0);\n });\n};\n\n/**\n * Get the hashed value for the given key.\n *\n * @param {String} key\n * @returns {Number}\n * @api private\n */\nHashRing.prototype.hashValue = function hasher(key) {\n var x = this.digest(key);\n\n return hashValueHash(x[3], x[2], x[1], x[0]);\n};\n\n/**\n * None ketama:\n *\n * The following changes are not ported from the ketama algorithm and are hash\n * ring specific. Add, remove or replace servers with as less disruption as\n * possible.\n */\n\n/**\n * Get a range of different servers.\n *\n * @param {String} key\n * @param {Number} size Amount of servers it should return.\n * @param {Boolean} unique Return only unique keys.\n * @return {Array}\n * @api public\n */\nHashRing.prototype.range = function range(key, size, unique) {\n if (!this.size) return [];\n\n size = size || this.servers.length;\n unique = unique || 'undefined' === typeof unique;\n\n var position = this.find(this.hashValue(key))\n , length = this.ring.length\n , servers = []\n , node;\n\n // Start searching for servers from the position of the key to the end of\n // HashRing.\n for (var i = position; i < length; i++) {\n node = this.ring[i];\n\n // Do we need to make sure that we retrieve a unique list of servers?\n if (unique) {\n if (!~servers.indexOf(node.server)) servers.push(node.server);\n } else {\n servers.push(node.server);\n }\n\n if (servers.length === size) return servers;\n }\n\n // Not enough results yet, so iterate from the start of the hash ring to the\n // position of the hash ring. So we reach full circle again.\n for (i = 0; i < position; i++) {\n node = this.ring[i];\n\n // Do we need to make sure that we retrieve a unique list of servers?\n if (unique) {\n if (!~servers.indexOf(node.server)) servers.push(node.server);\n } else {\n servers.push(node.server);\n }\n\n if (servers.length === size) return servers;\n }\n\n return servers;\n};\n\n/**\n * Returns the points per server.\n *\n * @param {String} server Optional server to filter down.\n * @returns {Object} server -> Array(points).\n * @api public\n */\nHashRing.prototype.points = function points(servers) {\n servers = Array.isArray(servers) ? servers : Object.keys(this.vnodes);\n\n var nodes = Object.create(null)\n , node;\n\n servers.forEach(function servers(server) {\n nodes[server] = [];\n });\n\n for (var i = 0; i < this.size; i++) {\n node = this.ring[i];\n\n if (node.server in nodes) {\n nodes[node.server].push(node.value);\n }\n }\n\n return nodes;\n};\n\n/**\n * Hotswap identical servers with each other. This doesn't require the cache to\n * be completely nuked and the hash ring distribution to be re-calculated.\n *\n * Please note that removing the server and a new adding server could\n * potentially create a different distribution.\n *\n * @param {String} from The server that needs to be replaced.\n * @param {String} to The server that replaces the server.\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.swap = function swap(from, to) {\n var connection = parse(to).servers.pop()\n , self = this;\n\n this.ring.forEach(function forEach(node) {\n if (node.server === from) node.server = to;\n });\n\n this.cache.forEach(function forEach(value, key) {\n if (value === from) self.cache.set(key, to);\n }, this);\n\n // Update the virtual nodes\n this.vnodes[to] = this.vnodes[from];\n delete this.vnodes[from];\n\n // Update the servers\n this.servers = this.servers.map(function mapswap(server) {\n if (server.string === from) {\n server.string = to;\n server.host = connection.host;\n server.port = connection.port;\n }\n\n return server;\n });\n\n return this;\n};\n\n/**\n * Add a new server to ring without having to re-initialize the hashring. It\n * accepts the same arguments as you can use in the constructor.\n *\n * @param {Mixed} servers Servers that need to be added to the ring.\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.add = function add(servers) {\n var connections = Object.create(null);\n\n // Add the current servers to the set.\n this.servers.forEach(function forEach(server) {\n connections[server.string] = server;\n });\n\n parse(servers).servers.forEach(function forEach(server) {\n // Don't add duplicate servers\n if (server.string in connections) return;\n connections[server.string] = server;\n });\n\n // Now that we generated a complete set of servers, we can update the re-parse\n // the set and correctly added all the servers again.\n connections = parse(connections);\n this.vnodes = connections.vnodes;\n this.servers = connections.servers;\n\n // Rebuild the hash ring.\n this.reset();\n return this.continuum();\n};\n\n/**\n * Remove a server from the hashring.\n *\n * @param {Mixed} server The sever we want to remove.\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.remove = function remove(server) {\n var connection = parse(server).servers.pop();\n\n delete this.vnodes[connection.string];\n this.servers = this.servers.map(function map(server) {\n if (server.string === connection.string) return undefined;\n\n return server;\n }).filter(Boolean);\n\n // Rebuild the hash ring\n this.reset();\n return this.continuum();\n};\n\n/**\n * Checks if a given server exists in the hash ring.\n *\n * @param {String} server Server for whose existence we're checking\n * @returns {Boolean} Indication if we have that server.\n * @api public\n */\nHashRing.prototype.has = function add(server) {\n for (var i = 0; i < this.ring.length; i++) {\n if (this.ring[i].server === server) return true;\n }\n\n return false;\n};\n\n/**\n * Reset the HashRing to clean up all references\n *\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.reset = function reset() {\n this.ring.length = 0;\n this.size = 0;\n this.cache.reset();\n\n return this;\n};\n\n/**\n * End the hashring and clean up all of it's references.\n *\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.end = function end() {\n this.reset();\n\n this.vnodes = {};\n this.servers.length = 0;\n\n return this;\n};\n\n/**\n * A single Node in our hash ring.\n *\n * @constructor\n * @param {Number} hashvalue\n * @param {String} server\n * @api private\n */\nfunction Node(hashvalue, server) {\n this.value = hashvalue;\n this.server = server;\n}\n\n//\n// Set up the legacy API aliases. These will be deprecated in the next release.\n//\n[\n { from: 'replaceServer' },\n { from: 'replace' },\n { from: 'removeServer', to: 'remove' },\n { from: 'addServer', to: 'add' },\n { from: 'getNode', to: 'get' },\n { from: 'getNodePosition', to: 'find' },\n { from: 'position', to: 'find' }\n].forEach(function depricate(api) {\n var notified = false;\n\n HashRing.prototype[api.from] = function depricating() {\n if (!notified) {\n console.warn();\n console.warn('[depricated] HashRing#'+ api.from +' is removed.');\n\n // Not every API has a replacement API that should be used\n if (api.to) {\n console.warn('[depricated] use HashRing#'+ api.to +' as replacement.');\n } else {\n console.warn('[depricated] the API has no replacement');\n }\n\n console.warn();\n notified = true;\n }\n\n if (api.to) return HashRing.prototype[api.to].apply(this, arguments);\n };\n});\n\n/**\n * Expose the current version number.\n *\n * @type {String}\n * @public\n */\nHashRing.version = __webpack_require__(623).version;\n\n/**\n * Expose the module.\n *\n * @api public\n */\nmodule.exports = HashRing;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 620 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(621);\n\n\n/***/ }),\n/* 621 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * LRU cache based on a double linked list\n */\n\nfunction ListElement(before,next,key,value){\n this.before = before\n this.next = next\n this.key = key\n this.value = value\n}\n\nListElement.prototype.setKey = function(key){\n this.key = key\n}\n\nListElement.prototype.setValue = function(value){\n this.value = value\n}\n\n\nfunction Cache(options){\n if(!options)\n options = {}\n this.maxSize = options.maxSize \n this.reset()\n}\n\n\nCache.prototype.reset = function(){\n this.size = 0 \n this.cache = {}\n this.tail = undefined\n this.head = undefined\n}\n\n\nCache.prototype.get = function(key,hit){\n var cacheVal = this.cache[key]\n /*\n * Define if the egt function should hit the value to move\n * it to the head of linked list \n */\n hit = hit != undefined && hit != null ? hit : true;\n if(cacheVal && hit)\n this.hit(cacheVal)\n else\n return undefined\n return cacheVal.value\n}\n\nCache.prototype.set = function(key,val,hit){\n var actual = this.cache[key]\n /*\n * Define if the set function should hit the value to move\n * it to the head of linked list \n */\n hit = hit != undefined && hit != null ? hit : true;\n \n \n if(actual){\n actual.value = val\n if(hit) this.hit(actual)\n }else{\n var cacheVal\n if(this.size >= this.maxSize){\n var tailKey = this.tail.key \n this.detach(this.tail)\n \n /*\n * If max is reached we'llreuse object to minimize GC impact \n * when the objects are cached short time\n */\n cacheVal = this.cache[tailKey]\n delete this.cache[tailKey]\n\n cacheVal.next = undefined\n cacheVal.before = undefined\n \n /*\n * setters reuse the array object \n */\n cacheVal.setKey(key)\n cacheVal.setValue(val)\n }\n\n cacheVal = cacheVal ? cacheVal : new ListElement(undefined,undefined,key,val)\n this.cache[key] = cacheVal\n this.attach(cacheVal)\n }\n}\n\nCache.prototype.del = function(key){\n var val = this.cache[key]\n if(!val)\n return;\n this.detach(val)\n delete this.cache[key]\n}\n\nCache.prototype.hit = function(cacheVal){\n //Send cacheVal to the head of list\n this.detach(cacheVal)\n this.attach(cacheVal)\n}\n\nCache.prototype.attach = function(element){\n if(!element)\n return;\n element.before = undefined\n element.next = this.head\n this.head = element\n if(!element.next)\n this.tail = element\n else\n element.next.before = element\n this.size++ \n}\n\nCache.prototype.detach = function(element){\n if(!element)\n return;\n var before = element.before\n var next = element.next\n if(before){\n before.next = next\n }else{\n this.head = next\n }\n if(next){\n next.before = before\n }else{\n this.tail = before\n }\n this.size--\n}\n\nCache.prototype.forEach = function(callback){\n var self = this\n Object.keys(this.cache).forEach(function(key){\n var val = self.cache[key]\n callback(val.value,key)\n })\n}\nmodule.exports=Cache\n\n\n/***/ }),\n/* 622 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Parser extensions, so extra values or default values can be added to the\n * returned values.\n *\n * @type {Array}\n * @private\n */\nvar extensions = {};\n\n/**\n * Parse the server argument to a uniform format.\n *\n * @param {Mixed} args\n * @returns {Object}\n * @api private\n */\nfunction parse(args) {\n var servers;\n\n if (arguments.length > 1) {\n servers = Array.prototype.slice.call(arguments, 0).map(function generate(server) {\n return address(server);\n });\n } else if (Array.isArray(args)) {\n servers = args.map(function generate(server) {\n return address(server);\n });\n } else if ('object' === typeof args) {\n servers = Object.keys(args).map(function generate(server) {\n return address(server, args[server]);\n });\n } else if (args) {\n servers = [args].map(function generate(server) {\n return address(server);\n });\n } else {\n servers = [];\n }\n\n // Setup the data structure that we are going to return\n var data = {\n servers: servers\n , length: servers.length\n , weights: servers.reduce(function reduce(memo, server) {\n memo[server.string] = server.weight;\n return memo;\n }, {})\n , regular: servers.map(function regular(server) {\n return server.string;\n })\n };\n\n // Reduce the parsed values to simple list\n Object.keys(extensions).forEach(function extensions(key) {\n data[key] = servers.reduce(function reduce(memo, server) {\n memo[server.string] = server[key];\n return memo;\n }, {});\n });\n\n return data;\n}\n\n/**\n * Add a extra parser to connection-parser.\n *\n * @param {Function} parser\n * @api public\n */\nparse.extension = function extension(name, parser) {\n if (name in extensions) return parse;\n\n extensions[name] = parser;\n};\n\n/**\n * Transforms the server in to an Object containing the port number and the\n * hostname.\n *\n * @param {Mixed} server\n * @param {Mixed} value\n * @returns {Object}\n * @api private\n */\nfunction address(server, value) {\n if ('string' !== typeof server) {\n server.string = server.host +':'+ server.port;\n server.weight = +server.weight || typeof value === 'object'\n ? +value.weight || 1\n : 1;\n\n return server;\n }\n\n // Parse down the value's even further\n var pattern = server.split(':')\n , data = {\n host: pattern[0]\n , port: +pattern[1]\n , string: server\n , weight: (typeof value === 'object' ? +value.weight : +value) || 1\n };\n\n // Iterate over the extensions for the last piece of crushing\n Object.keys(extensions).forEach(function each(key) {\n var parser = extensions[key]\n , res = parser(data, value);\n\n if (res) data = res;\n });\n\n return data;\n}\n\n// Attach the address parser before we expose the module\nparse.address = address;\n\n/**\n * Expose the module\n */\nmodule.exports = parse;\n\n\n/***/ }),\n/* 623 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\"name\":\"hashring\",\"version\":\"3.2.0\",\"author\":\"Arnout Kazemier\",\"description\":\"A consistent hashring compatible with ketama hashing and python's hash_ring\",\"main\":\"./index.js\",\"keywords\":[\"hashring\",\"hash ring\",\"hashing\",\"hashvalue\",\"ketama\",\"hash_ring\",\"hash\",\"consistent hashing\",\"libketama\"],\"license\":\"MIT\",\"bugs\":\"http://github.com/3rd-Eden/node-hashring/issues\",\"homepage\":\"http://github.com/3rd-Eden/node-hashring/\",\"repository\":{\"type\":\"git\",\"url\":\"http://github.com/3rd-Eden/node-hashring.git\"},\"dependencies\":{\"connection-parse\":\"0.0.x\",\"simple-lru-cache\":\"0.0.x\"},\"devDependencies\":{\"assume\":\"1.2.x\",\"benchmark\":\"1.0.x\",\"devnull\":\"0.0.x\",\"istanbul\":\"0.3.x\",\"mocha\":\"2.2.x\",\"pre-commit\":\"1.1.x\"},\"scripts\":{\"100%\":\"istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100\",\"test\":\"mocha tests/api.test.js tests/distribution.test.js\",\"watch\":\"mocha --watch tests/api.test.js tests/distribution.test.js\",\"coverage\":\"istanbul cover ./node_modules/.bin/_mocha -- tests/api.test.js tests/distribution.test.js\",\"test-travis\":\"istanbul cover node_modules/.bin/_mocha --report lcovonly -- tests/api.test.js tests/distribution.test.js\"}}\n\n/***/ }),\n/* 624 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nvar EventEmitter = __webpack_require__(139).EventEmitter\n , spawn = __webpack_require__(89).spawn\n , Utils = __webpack_require__(306)\n , util = __webpack_require__(157);\n\nexports.IssueLog = IssueLog; // connection issue handling\nexports.Available = ping; // connection availablity\n\nfunction ping (host, callback) {\n var isWin = process.platform.indexOf('win') === 0; // win32 or win64\n var arg = isWin ? '-n' : '-c';\n var pong = spawn('ping', [arg, '3', host]); // only ping 3 times\n\n pong.stdout.on('data', function stdoutdata (data) {\n callback(false, data.toString().split('\\n')[0].substr(14));\n pong.kill();\n });\n\n pong.stderr.on('data', function stderrdata (data) {\n callback(new Error(data.toString().split('\\n')[0].substr(14)), false);\n pong.kill();\n });\n}\n\nfunction IssueLog (args) {\n this.config = args;\n this.messages = [];\n this.failed = false;\n this.locked = false;\n this.isScheduledToReconnect = false;\n\n this.totalFailures = 0;\n this.retry = 0;\n this.totalReconnectsAttempted = 0;\n this.totalReconnectsSuccess = 0;\n\n Utils.merge(this, args);\n EventEmitter.call(this);\n}\n\nutil.inherits(IssueLog, EventEmitter);\nvar issues = IssueLog.prototype;\n\nissues.log = function log (message) {\n var issue = this;\n\n this.failed = true;\n this.messages.push(message || 'No message specified');\n\n // All failures must occur within `failuresTimeout` ms from the initial\n // failure in order for node to be disconnected or removed.\n if (this.failures && this.failures == this.config.failures)\n this.failuresResetId = setTimeout(issue.failuresReset.bind(issue), this.failuresTimeout);\n\n if (this.failures && !this.locked) {\n this.locked = true;\n setTimeout(issue.attemptRetry.bind(issue), this.retry);\n return this.emit('issue', this.details);\n }\n\n if (this.failuresResetId) clearTimeout(this.failuresResetId);\n\n if (this.remove) return this.emit('remove', this.details);\n\n if (!this.isScheduledToReconnect) {\n this.isScheduledToReconnect = true;\n setTimeout(issue.attemptReconnect.bind(issue), this.reconnect);\n }\n};\n\nissues.failuresReset = function failuresReset() {\n //this.failures = this.config.failures;\n Utils.merge(this, JSON.parse(JSON.stringify(this.config)));\n};\n\nObject.defineProperty(issues, 'details', {\n get: function getDetails () {\n var res = {};\n\n res.server = this.server;\n res.tokens = this.tokens;\n res.messages = this.messages;\n\n if (this.failures) {\n res.failures = this.failures;\n res.totalFailures = this.totalFailures;\n } else {\n res.totalReconnectsAttempted = this.totalReconnectsAttempted;\n res.totalReconnectsSuccess = this.totalReconnectsSuccess;\n res.totalReconnectsFailed = this.totalReconnectsAttempted - this.totalReconnectsSuccess;\n res.totalDownTime = (res.totalReconnectsFailed * this.reconnect) + (this.totalFailures * this.retry);\n }\n\n return res;\n }\n});\n\nissues.attemptRetry = function attemptRetry () {\n this.totalFailures++;\n this.failures--;\n this.failed = false;\n this.locked = false;\n};\n\nissues.attemptReconnect = function attemptReconnect () {\n var issue = this;\n this.totalReconnectsAttempted++;\n this.emit('reconnecting', this.details);\n\n // Ping the server\n ping(this.tokens[1], function pingpong (err) {\n // still no access to the server\n if (err) {\n issue.messages.push(err.message || 'No message specified');\n return setTimeout(issue.attemptReconnect.bind(issue), issue.reconnect);\n }\n\n issue.emit('reconnected', issue.details);\n\n issue.totalReconnectsSuccess++;\n issue.messages.length = 0;\n issue.failed = false;\n issue.isScheduledToReconnect = false;\n\n // we connected again, so we are going through the whole cycle again\n Utils.merge(issue, JSON.parse(JSON.stringify(issue.config)));\n });\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(48)))\n\n/***/ }),\n/* 625 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar retry = __webpack_require__(626)\n , ms = __webpack_require__(629);\n\n/**\n * A net.Stream connection pool.\n *\n * @constructor\n * @param {Number} limit Size of the connection pool.\n * @param {Function} builder Stream factory.\n * @param {Object} options Configuration options.\n * @api public\n */\nfunction Manager(limit, builder, options) {\n options = options || {};\n\n if ('object' === typeof builder) {\n options = builder;\n builder = null;\n }\n\n this.limit = +limit || 20; // Defaults to 20 connections max.\n this.pool = []; // Contains the active connections.\n this.pending = 0; // Connecting connections.\n this.generator = null; // Stream generator.\n this.retries = options.retries || 5; // Max retries for each #pull.\n this.factor = options.factor || 3; // Exponential backoff factor.\n this.minTimeout = ms(options.min || '1 seconds'); // Minimum delay.\n this.maxTimeout = ms(options.max || '60 seconds');// Maximum delay.\n this.randomize = 'randomize' in options // Randomize the retry timeout.\n ? options.randomize\n : true;\n\n // Some stats that can be used for metrics.\n this.metrics = {\n allocations: 0\n , releases: 0\n };\n\n if (builder) this.factory(builder);\n}\n\nManager.prototype.__proto__ = __webpack_require__(139).EventEmitter.prototype;\n\n/**\n * Add a stream generator so we can generate streams for the pool.\n *\n * @param {Function} builder Function that pre-configures a stream.\n * @api public\n */\nManager.prototype.factory = function factory(builder) {\n if (typeof builder !== 'function') {\n throw new Error('The #factory requires a function.');\n }\n\n this.generator = builder;\n return this;\n};\n\n/**\n * Start listening to events that could influence the state of the connection.\n *\n * @param {net.Connection} net The connection.\n * @api private\n */\nManager.prototype.listen = function listen(net) {\n if (!net) return this;\n\n var self = this;\n\n /**\n * Simple helper function that allows us to automatically remove the\n * connection from the pool when we are unable to connect using it.\n *\n * @param {Error} err Optional error.\n * @api private\n */\n function regenerate(err) {\n net.destroySoon();\n\n self.remove(net);\n\n net.removeListener('timeout', regenerate);\n net.removeListener('error', regenerate);\n net.removeListener('end', regenerate);\n\n if (err) self.emit('error', err);\n }\n\n // Listen for events that would mess up the connection.\n net.once('timeout', regenerate)\n .once('error', regenerate)\n .once('end', regenerate);\n\n return this;\n};\n\n/**\n * A fault tolerant connection allocation wrapper.\n *\n * @param {Function} fn Callback that receives a working connection.\n * @api public\n */\nManager.prototype.pull = function pull(fn) {\n var operation = retry.operation({\n retries: this.retries\n , factor: this.factor\n , minTimeout: this.minTimeout\n , maxTimeout: this.maxTimeout\n , randomize: this.randomize\n })\n , self = this;\n\n /**\n * Small wrapper around pulling a connection.\n *\n * @param {Error} err Optional error argument.\n * @param {Socket} connection A working connection.\n * @api private\n */\n function allocate(err, connection) {\n if (operation.retry(err)) return;\n\n fn(err, connection);\n }\n\n operation.attempt(function attempt() {\n self.allocate(allocate);\n });\n\n return this;\n};\n\n/**\n * Allocate a new connection from the connection pool, this can be done async\n * that's why we use a error first callback pattern.\n *\n * @param {Function} fn\n * @api public\n */\nManager.prototype.allocate = function allocate(fn) {\n if (!this.generator) {\n fn(new Error('Specify a stream #factory'));\n return this;\n }\n\n /**\n * Two helper functions that allows us to correctly call the callback with\n * the correct arguments when we generate a new connection as the connection\n * should be emitting 'connect' before we can use it. But it can also emit\n * error if it fails to connect, or times in so doing.\n *\n * @param {Error} err Optional error argument.\n * @api private\n */\n function either(err) {\n this.removeListener('error', either);\n this.removeListener('connect', either);\n this.removeListener('timeout', timeout);\n\n // Add to the pool\n if (!err) self.pool.push(this);\n self.pending--;\n\n fn(err, this);\n }\n\n /**\n * Listen to timeout events.\n *\n * @api private\n */\n function timeout() {\n this.removeListener('timeout', timeout);\n self.pending--;\n fn(new Error('Timed out while trying to establish connection'), this);\n }\n\n var probabilities = []\n , self = this\n , total, i, probability, connection;\n\n i = total = this.pool.length;\n\n // increase the allocation metric\n this.metrics.allocations++;\n\n // check the current pool if we already have a few connections available, so\n // we don't have to generate a new connection\n while (i--) {\n connection = this.pool[i];\n probability = this.isAvailable(connection);\n\n // we are sure this connection works\n if (probability === 100) {\n fn(undefined, connection);\n return this;\n }\n\n // no accurate match, add it to the queue as we can get the most likely\n // available connection\n probabilities.push({\n probability: probability\n , connection: connection\n });\n }\n\n // we didn't find a confident match, see if we are allowed to generate a fresh\n // connection\n if ((this.pool.length + this.pending) < this.limit) {\n // determine if the function expects a callback or not, this can be done by\n // checking the length of the given function, as the amount of args accepted\n // equals the length..\n if (this.generator.length === 0) {\n connection = this.generator();\n\n if (connection) {\n this.pending++;\n this.listen(connection);\n\n connection.on('error', either)\n .on('connect', either)\n .on('timeout', timeout);\n\n return this;\n }\n } else {\n return this.generator(function generate(err, connection) {\n if (err) return fn(err);\n if (!connection) return fn(new Error('The #factory failed to generate a stream'));\n\n self.pending++;\n self.listen(connection);\n\n return connection.on('error', either)\n .on('connect', either)\n .on('timeout', timeout);\n });\n }\n }\n\n // o, dear, we got issues.. we didn't find a valid connection and we cannot\n // create more.. so we are going to check if we might have semi valid\n // connection by sorting the probabilities array and see if it has\n // a probability above 60\n probability = probabilities.sort(function sort(a, b) {\n return a.probability - b.probability;\n }).pop();\n\n if (probability && probability.probability >= 60) {\n fn(undefined, probability.connection);\n return this;\n }\n\n // well, that didn't work out, so assume failure\n fn(new Error('The connection pool is full'));\n return this;\n};\n\n/**\n * Check if a connection is available for writing.\n *\n * @param {net.Connection} net The connection.\n * @param {Boolean} ignore Ignore closed or dead connections.\n * @returns {Number} Probability that his connection is available or will be.\n * @api private\n */\nManager.prototype.isAvailable = function isAvailable(net, ignore) {\n var readyState = net.readyState\n , writable = readyState === 'open' || readyState === 'writeOnly'\n , writePending = net._pendingWriteReqs || 0\n , writeQueue = net._writeQueue || []\n , writes = writeQueue.length || writePending;\n\n // If the stream is writable and we don't have anything pending we are 100%\n // sure that this stream is available for writing.\n if (writable && writes === 0) return 100;\n\n // The connection is already closed or has been destroyed, why on earth are we\n // getting it then, remove it from the pool and return 0.\n if (readyState === 'closed' || net.destroyed) {\n this.remove(net);\n return 0;\n }\n\n // If the stream isn't writable we aren't that sure..\n if (!writable) return 0;\n\n // The connection is still opening, so we can write to it in the future.\n if (readyState === 'opening') return 70;\n\n // We have some writes, so we are going to subtract that amount from our 100.\n if (writes < 100) return 100 - writes;\n\n // We didn't find any reliable states of the stream, so we are going to\n // assume something random, because we have no clue, so generate a random\n // number between 0 - 70.\n return Math.floor(Math.random() * 70);\n};\n\n/**\n * Release the connection from the connection pool.\n *\n * @param {Stream} net The connection.\n * @param {Boolean} hard Switch between destroySoon or destroy.\n * @returns {Boolean} Was the removal successful\n * @api private\n */\nManager.prototype.release = function release(net, hard) {\n var index = this.pool.indexOf(net);\n if (index === -1) return false;\n\n // Check if the stream is still open.\n if (net) {\n if (!hard) net.destroySoon();\n else net.destroy();\n\n // Remove it from the pool.\n this.pool.splice(index, 1);\n\n // Increase the releases metric.\n this.metrics.releases++;\n }\n\n return true;\n};\n\n// Alias remove to release.\nManager.prototype.remove = Manager.prototype.release;\n\n/**\n * Free dead connections from the pool.\n *\n * @param {Number} keep the amount of connection to keep open\n * @param {Boolean} hard destroy all connections instead of destroySoon\n * @api public\n */\nManager.prototype.free = function free(keep, hard) {\n // Default to 0 if no arguments are supplied.\n keep = +keep || 0;\n\n // Create a back-up of the pool as we will be removing items from the array\n // and this could cause memory / socket leaks as we are unable to close some\n // connections in the array as the index has moved.\n var pool = this.pool.slice(0)\n , saved = 0;\n\n for (var i = 0, length = pool.length; i < length; i++) {\n var connection = pool[i]\n , probability = this.isAvailable(connection);\n\n // This is still a healthy connection, so try we probably just want to keep it.\n if (keep && saved < keep && probability === 100) {\n saved++;\n continue;\n }\n\n this.release(connection, hard);\n }\n\n // Clear the back-up\n pool.length = 0;\n\n // See how much connections are still available.\n return this.emit('free', saved, this.pool.length);\n};\n\n/**\n * Iterate over the different connection.\n *\n * @param {Function} callback\n * @param {Mixed} context\n * @api public\n */\nManager.prototype.forEach = function forEach(callback, context) {\n this.pool.forEach(callback, context);\n return this;\n};\n\n/**\n * Close the connection pool.\n *\n * @param {Boolean} hard destroy all connections\n * @api public\n */\nManager.prototype.end = function end(hard) {\n this.free(0, hard);\n\n return this.emit('end');\n};\n\nmodule.exports = Manager;\n\n\n/***/ }),\n/* 626 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(627);\n\n/***/ }),\n/* 627 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar RetryOperation = __webpack_require__(628);\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts);\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this._createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports._createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\n/***/ }),\n/* 628 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {function RetryOperation(timeouts) {\n this._timeouts = timeouts;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n return false;\n }\n\n this._attempts++;\n\n var self = this;\n setTimeout(function() {\n self._fn(self._attempts);\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n }\n }, timeout);\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n this._fn(this._attempts);\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 629 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} options\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options){\n if ('string' === typeof val) return parse(val);\n if (!options) return +val;\n\n return options.long\n ? long(val)\n : short(val);\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n var match = /^((?:\\d+)?\\.?\\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i.exec(str);\n if (!match) return;\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 's':\n return n * s;\n case 'ms':\n return n;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction short(ms) {\n if (ms >= d) return Math.round(ms / d) + 'd';\n if (ms >= h) return Math.round(ms / h) + 'h';\n if (ms >= m) return Math.round(ms / m) + 'm';\n if (ms >= s) return Math.round(ms / s) + 's';\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction long(ms) {\n if (ms == d) return Math.round(ms / d) + ' day';\n if (ms > d) return Math.round(ms / d) + ' days';\n if (ms == h) return Math.round(ms / h) + ' hour';\n if (ms > h) return Math.round(ms / h) + ' hours';\n if (ms == m) return Math.round(ms / m) + ' minute';\n if (ms > m) return Math.round(ms / m) + ' minutes';\n if (ms == s) return Math.round(ms / s) + ' second';\n if (ms > s) return Math.round(ms / s) + ' seconds';\n return ms + ' ms';\n}\n\n\n/***/ }),\n/* 630 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(Buffer) {var binding = __webpack_require__(631)('binding');\nvar assert = __webpack_require__(225);\n\n/**\n * Compress asyncronous.\n * If input isn't a string or buffer, automatically convert to buffer by using\n * JSON.stringify.\n */\nexports.compress = function (input, callback) {\n if (!(typeof (input) === 'string' || Buffer.isBuffer(input))) {\n return callback(new Error('input must be a String or a Buffer'));\n }\n\n binding.compress(input, callback);\n};\n\nexports.compressSync = function (input) {\n assert(typeof (input) === 'string' || Buffer.isBuffer(input), 'input must be a String or a Buffer');\n\n return binding.compressSync(input);\n};\n\n/**\n * Asyncronous decide if a buffer is compressed in a correct way.\n */\nexports.isValidCompressed = binding.isValidCompressed;\n\nexports.isValidCompressedSync = binding.isValidCompressedSync;\n\n/**\n * Asyncronous uncompress previously compressed data.\n * A parser can be attached. If no parser is attached, return buffer.\n */\nexports.uncompress = function (compressed, opts, callback) {\n if (!callback) {\n callback = opts;\n }\n\n if (!Buffer.isBuffer(compressed)) {\n return callback(new Error('input must be a Buffer'));\n }\n\n binding.uncompress(compressed, uncompressOpts(opts), callback);\n};\n\nexports.uncompressSync = function (compressed, opts) {\n assert(Buffer.isBuffer(compressed), 'input must be a Buffer');\n\n return binding.uncompressSync(compressed, uncompressOpts(opts));\n};\n\nfunction uncompressOpts (opts) {\n return (opts && typeof opts.asBuffer === 'boolean') ? opts : {asBuffer: true};\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(305).Buffer))\n\n/***/ }),\n/* 631 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, __filename) {/**\n * Module dependencies.\n */\n\nvar fs = __webpack_require__(89),\n path = __webpack_require__(191),\n fileURLToPath = __webpack_require__(632),\n join = path.join,\n dirname = path.dirname,\n exists =\n (fs.accessSync &&\n function(path) {\n try {\n fs.accessSync(path);\n } catch (e) {\n return false;\n }\n return true;\n }) ||\n fs.existsSync ||\n path.existsSync,\n defaults = {\n arrow: Object({\"NODE_ENV\":\"production\"}).NODE_BINDINGS_ARROW || ' → ',\n compiled: Object({\"NODE_ENV\":\"production\"}).NODE_BINDINGS_COMPILED_DIR || 'compiled',\n platform: process.platform,\n arch: process.arch,\n nodePreGyp:\n 'node-v' +\n process.versions.modules +\n '-' +\n process.platform +\n '-' +\n process.arch,\n version: process.versions.node,\n bindings: 'bindings.node',\n try: [\n // node-gyp's linked version in the \"build\" dir\n ['module_root', 'build', 'bindings'],\n // node-waf and gyp_addon (a.k.a node-gyp)\n ['module_root', 'build', 'Debug', 'bindings'],\n ['module_root', 'build', 'Release', 'bindings'],\n // Debug files, for development (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Debug', 'bindings'],\n ['module_root', 'Debug', 'bindings'],\n // Release files, but manually compiled (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Release', 'bindings'],\n ['module_root', 'Release', 'bindings'],\n // Legacy from node-waf, node <= 0.4.x\n ['module_root', 'build', 'default', 'bindings'],\n // Production \"Release\" buildtype binary (meh...)\n ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],\n // node-qbs builds\n ['module_root', 'addon-build', 'release', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'default', 'install-root', 'bindings'],\n // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}\n ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']\n ]\n };\n\n/**\n * The main `bindings()` function loads the compiled bindings for a given module.\n * It uses V8's Error API to determine the parent filename that this function is\n * being invoked from, which is then used to find the root directory.\n */\n\nfunction bindings(opts) {\n // Argument surgery\n if (typeof opts == 'string') {\n opts = { bindings: opts };\n } else if (!opts) {\n opts = {};\n }\n\n // maps `defaults` onto `opts` object\n Object.keys(defaults).map(function(i) {\n if (!(i in opts)) opts[i] = defaults[i];\n });\n\n // Get the module root\n if (!opts.module_root) {\n opts.module_root = exports.getRoot(exports.getFileName());\n }\n\n // Ensure the given bindings name ends with .node\n if (path.extname(opts.bindings) != '.node') {\n opts.bindings += '.node';\n }\n\n // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035\n var requireFunc =\n true\n ? require\n : require;\n\n var tries = [],\n i = 0,\n l = opts.try.length,\n n,\n b,\n err;\n\n for (; i < l; i++) {\n n = join.apply(\n null,\n opts.try[i].map(function(p) {\n return opts[p] || p;\n })\n );\n tries.push(n);\n try {\n b = opts.path ? requireFunc.resolve(n) : requireFunc(n);\n if (!opts.path) {\n b.path = n;\n }\n return b;\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND' &&\n e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&\n !/not find/i.test(e.message)) {\n throw e;\n }\n }\n }\n\n err = new Error(\n 'Could not locate the bindings file. Tried:\\n' +\n tries\n .map(function(a) {\n return opts.arrow + a;\n })\n .join('\\n')\n );\n err.tries = tries;\n throw err;\n}\nmodule.exports = exports = bindings;\n\n/**\n * Gets the filename of the JavaScript file that invokes this function.\n * Used to help find the root directory of a module.\n * Optionally accepts an filename argument to skip when searching for the invoking filename\n */\n\nexports.getFileName = function getFileName(calling_file) {\n var origPST = Error.prepareStackTrace,\n origSTL = Error.stackTraceLimit,\n dummy = {},\n fileName;\n\n Error.stackTraceLimit = 10;\n\n Error.prepareStackTrace = function(e, st) {\n for (var i = 0, l = st.length; i < l; i++) {\n fileName = st[i].getFileName();\n if (fileName !== __filename) {\n if (calling_file) {\n if (fileName !== calling_file) {\n return;\n }\n } else {\n return;\n }\n }\n }\n };\n\n // run the 'prepareStackTrace' function above\n Error.captureStackTrace(dummy);\n dummy.stack;\n\n // cleanup\n Error.prepareStackTrace = origPST;\n Error.stackTraceLimit = origSTL;\n\n // handle filename that starts with \"file://\"\n var fileSchema = 'file://';\n if (fileName.indexOf(fileSchema) === 0) {\n fileName = fileURLToPath(fileName);\n }\n\n return fileName;\n};\n\n/**\n * Gets the root directory of a module, given an arbitrary filename\n * somewhere in the module tree. The \"root directory\" is the directory\n * containing the `package.json` file.\n *\n * In: /home/nate/node-native-module/lib/index.js\n * Out: /home/nate/node-native-module\n */\n\nexports.getRoot = function getRoot(file) {\n var dir = dirname(file),\n prev;\n while (true) {\n if (dir === '.') {\n // Avoids an infinite loop in rare cases, like the REPL\n dir = process.cwd();\n }\n if (\n exists(join(dir, 'package.json')) ||\n exists(join(dir, 'node_modules'))\n ) {\n // Found the 'package.json' file or 'node_modules' dir; we're done\n return dir;\n }\n if (prev === dir) {\n // Got to the top\n throw new Error(\n 'Could not find module root given file: \"' +\n file +\n '\". Do you have a `package.json` file? '\n );\n }\n // Try the parent dir next\n prev = dir;\n dir = join(dir, '..');\n }\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(48), \"/index.js\"))\n\n/***/ }),\n/* 632 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar sep = __webpack_require__(191).sep || '/';\n\n/**\n * Module exports.\n */\n\nmodule.exports = fileUriToPath;\n\n/**\n * File URI to Path function.\n *\n * @param {String} uri\n * @return {String} path\n * @api public\n */\n\nfunction fileUriToPath (uri) {\n if ('string' != typeof uri ||\n uri.length <= 7 ||\n 'file://' != uri.substring(0, 7)) {\n throw new TypeError('must pass in a file:// URI to convert to a file path');\n }\n\n var rest = decodeURI(uri.substring(7));\n var firstSlash = rest.indexOf('/');\n var host = rest.substring(0, firstSlash);\n var path = rest.substring(firstSlash + 1);\n\n // 2. Scheme Definition\n // As a special case, <host> can be the string \"localhost\" or the empty\n // string; this is interpreted as \"the machine from which the URL is\n // being interpreted\".\n if ('localhost' == host) host = '';\n\n if (host) {\n host = sep + sep + host;\n }\n\n // 3.2 Drives, drive letters, mount points, file system root\n // Drive letters are mapped into the top of a file URI in various ways,\n // depending on the implementation; some applications substitute\n // vertical bar (\"|\") for the colon after the drive letter, yielding\n // \"file:///c|/tmp/test.txt\". In some cases, the colon is left\n // unchanged, as in \"file:///c:/tmp/test.txt\". In other cases, the\n // colon is simply omitted, as in \"file:///c/tmp/test.txt\".\n path = path.replace(/^(.+)\\|/, '$1:');\n\n // for Windows, we need to invert the path separators from what a URI uses\n if (sep == '\\\\') {\n path = path.replace(/\\//g, '\\\\');\n }\n\n if (/^.+\\:/.test(path)) {\n // has Windows drive at beginning of path\n } else {\n // unix path…\n path = sep + path;\n }\n\n return host + path;\n}\n\n\n/***/ }),\n/* 633 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\"$schemaref\":\"web-1.0.schema.json\",\"degradation\":{\"serviceUrl\":\"https://www.espn.com/watchespn/degradation\"},\"iconMap\":{\"subcategories[0]?.leagueId eq 10\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/mlb.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 28\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nfl.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 46\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nba.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 90\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nhl.png&w=100&h=100&transparent=true\",\"program?.isStudio eq true\":\"audio02\",\"categories[0]?.sportId eq 1 or categories[0]?.sportId eq 100\":\"baseball\",\"categories[0]?.sportId eq 40\":\"basketball\",\"categories[0]?.sportId eq 200\":\"cricket\",\"categories[0]?.sportId eq 8367\":\"esports\",\"categories[0]?.sportId eq 1000\":\"boxing\",\"categories[0]?.sportId eq 20 and subcategories[0]?.leagueId eq 23\":\"football-college\",\"categories[0]?.sportId eq 20\":\"football\",\"categories[0]?.sportId eq 70\":\"hockey\",\"categories[0]?.sportId eq 3520 and subcategories[0]?.leagueId eq 3520\":\"poker\",\"categories[0]?.sportId eq 500\":\"lacrosse\",\"categories[0]?.sportId eq 3301\":\"mma\",\"categories[0]?.sportId eq 2000 and subcategories[0]?.leagueId eq 2020\":\"nascar\",\"categories[0]?.sportId eq 300\":\"rugby\",\"categories[0]?.sportId eq 600\":\"soccer\",\"categories[0]?.sportId eq 850\":\"tennis\",\"categories[0]?.sportId eq 1700\":\"track-field\",\"categories[0]?.sportId eq 400\":\"volleyball\",\"categories[0]?.sportId eq 3190 and subcategories[0]?.leagueId eq 8098\":\"xgames\"},\"gated\":false}\n\n/***/ }),\n/* 634 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\"$schemaref\":\"web-1.0.schema.json\",\"degradation\":{\"serviceUrl\":\"https://www.espn.com/watchespn/degradation\"},\"iconMap\":{\"subcategories[0]?.leagueId eq 10\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/mlb.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 28\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nfl.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 46\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nba.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 90\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nhl.png&w=100&h=100&transparent=true\",\"program?.isStudio eq true\":\"audio02\",\"categories[0]?.sportId eq 1 or categories[0]?.sportId eq 100\":\"baseball\",\"categories[0]?.sportId eq 40\":\"basketball\",\"categories[0]?.sportId eq 200\":\"cricket\",\"categories[0]?.sportId eq 8367\":\"esports\",\"categories[0]?.sportId eq 1000\":\"boxing\",\"categories[0]?.sportId eq 20 and subcategories[0]?.leagueId eq 23\":\"football-college\",\"categories[0]?.sportId eq 20\":\"football\",\"categories[0]?.sportId eq 70\":\"hockey\",\"categories[0]?.sportId eq 3520 and subcategories[0]?.leagueId eq 3520\":\"poker\",\"categories[0]?.sportId eq 500\":\"lacrosse\",\"categories[0]?.sportId eq 3301\":\"mma\",\"categories[0]?.sportId eq 2000 and subcategories[0]?.leagueId eq 2020\":\"nascar\",\"categories[0]?.sportId eq 300\":\"rugby\",\"categories[0]?.sportId eq 600\":\"soccer\",\"categories[0]?.sportId eq 850\":\"tennis\",\"categories[0]?.sportId eq 1700\":\"track-field\",\"categories[0]?.sportId eq 400\":\"volleyball\",\"categories[0]?.sportId eq 3190 and subcategories[0]?.leagueId eq 8098\":\"xgames\"},\"gated\":false}\n\n/***/ }),\n/* 635 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsMatch = __webpack_require__(636),\n getMatchData = __webpack_require__(656),\n matchesStrictComparable = __webpack_require__(315);\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n\n/***/ }),\n/* 636 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(209),\n baseIsEqual = __webpack_require__(310);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n\n/***/ }),\n/* 637 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(131);\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n\n\n/***/ }),\n/* 638 */\n/***/ (function(module, exports) {\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n\n\n/***/ }),\n/* 639 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n/***/ }),\n/* 640 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n/***/ }),\n/* 641 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(131),\n Map = __webpack_require__(197),\n MapCache = __webpack_require__(195);\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n\n\n/***/ }),\n/* 642 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(209),\n equalArrays = __webpack_require__(311),\n equalByTag = __webpack_require__(644),\n equalObjects = __webpack_require__(646),\n getTag = __webpack_require__(201),\n isArray = __webpack_require__(32),\n isBuffer = __webpack_require__(141),\n isTypedArray = __webpack_require__(142);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n\n/***/ }),\n/* 643 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n\n/***/ }),\n/* 644 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(109),\n Uint8Array = __webpack_require__(312),\n eq = __webpack_require__(110),\n equalArrays = __webpack_require__(311),\n mapToArray = __webpack_require__(645),\n setToArray = __webpack_require__(210);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n\n/***/ }),\n/* 645 */\n/***/ (function(module, exports) {\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n\n/***/ }),\n/* 646 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getAllKeys = __webpack_require__(647);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n\n/***/ }),\n/* 647 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetAllKeys = __webpack_require__(648),\n getSymbols = __webpack_require__(649),\n keys = __webpack_require__(140);\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n\n\n/***/ }),\n/* 648 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayPush = __webpack_require__(286),\n isArray = __webpack_require__(32);\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n\n\n/***/ }),\n/* 649 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayFilter = __webpack_require__(650),\n stubArray = __webpack_require__(651);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n\n\n/***/ }),\n/* 650 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n\n\n/***/ }),\n/* 651 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n\n\n/***/ }),\n/* 652 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n/***/ }),\n/* 653 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n/***/ }),\n/* 654 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(71),\n isLength = __webpack_require__(198),\n isObjectLike = __webpack_require__(59);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n/***/ }),\n/* 655 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(280);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(108)(module)))\n\n/***/ }),\n/* 656 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isStrictComparable = __webpack_require__(314),\n keys = __webpack_require__(140);\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n\n/***/ }),\n/* 657 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsEqual = __webpack_require__(310),\n get = __webpack_require__(658),\n hasIn = __webpack_require__(284),\n isKey = __webpack_require__(194),\n isStrictComparable = __webpack_require__(314),\n matchesStrictComparable = __webpack_require__(315),\n toKey = __webpack_require__(111);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n\n/***/ }),\n/* 658 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGet = __webpack_require__(193);\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n/***/ }),\n/* 659 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseProperty = __webpack_require__(291),\n basePropertyDeep = __webpack_require__(660),\n isKey = __webpack_require__(194),\n toKey = __webpack_require__(111);\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n\n/***/ }),\n/* 660 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGet = __webpack_require__(193);\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n\n/***/ }),\n/* 661 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toNumber = __webpack_require__(317);\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n\n\n/***/ }),\n/* 662 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Authenticator = exports.IpAuthenticator = exports.AdobePassAuthenticator = undefined;\n\nvar _AdobePassAuthenticator = __webpack_require__(663);\n\nvar _AdobePassAuthenticator2 = _interopRequireDefault(_AdobePassAuthenticator);\n\nvar _IpAuthenticator = __webpack_require__(666);\n\nvar _IpAuthenticator2 = _interopRequireDefault(_IpAuthenticator);\n\nvar _Authenticator = __webpack_require__(211);\n\nvar _Authenticator2 = _interopRequireDefault(_Authenticator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.AdobePassAuthenticator = _AdobePassAuthenticator2.default;\nexports.IpAuthenticator = _IpAuthenticator2.default;\nexports.Authenticator = _Authenticator2.default;\n\n/***/ }),\n/* 663 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = __webpack_require__(319);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = __webpack_require__(320);\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nvar _lodash5 = __webpack_require__(664);\n\nvar _lodash6 = _interopRequireDefault(_lodash5);\n\nvar _loglevel = __webpack_require__(665);\n\nvar _loglevel2 = _interopRequireDefault(_loglevel);\n\nvar _events = __webpack_require__(139);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _Authenticator = __webpack_require__(211);\n\nvar _Authenticator2 = _interopRequireDefault(_Authenticator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// log.enableAll();\n// log.setLevel('warn');\n\nvar chunk = function chunk(arr, size) {\n return arr.length ? [arr.slice(0, size)].concat(_toConsumableArray(chunk(arr.slice(size), size))) : [];\n};\n\n/**\n * Adobe Pass implementation of the abstract Authenticator class.\n * @class AdobePassAuthenticator\n * @augments Authenticator\n */\nfunction AdobePassAuthenticator() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n elementId = _ref.elementId,\n _ref$redirectUrl = _ref.redirectUrl,\n redirectUrl = _ref$redirectUrl === undefined ? '' : _ref$redirectUrl,\n _ref$environment = _ref.environment,\n environment = _ref$environment === undefined ? AdobePassAuthenticator.Environment.PRODUCTION : _ref$environment,\n _ref$refreshless = _ref.refreshless,\n refreshless = _ref$refreshless === undefined ? false : _ref$refreshless,\n _ref$displayProviderD = _ref.displayProviderDialogImpl,\n displayProviderDialogImpl = _ref$displayProviderD === undefined ? function () {\n return new Promise();\n } : _ref$displayProviderD,\n _ref$errorEventHandle = _ref.errorEventHandlerName,\n errorEventHandlerName = _ref$errorEventHandle === undefined ? 'AEErrorHandler' : _ref$errorEventHandle;\n\n if (!(this instanceof AdobePassAuthenticator)) {\n return new AdobePassAuthenticator({\n elementId: elementId,\n redirectUrl: redirectUrl,\n environment: environment,\n refreshless: refreshless,\n displayProviderDialogImpl: displayProviderDialogImpl\n });\n }\n\n (0, _lodash2.default)(this, _events2.default.prototype, _Authenticator2.default.prototype);\n\n var REQUESTOR = 'ESPN';\n\n var JS_URLS = {};\n JS_URLS[AdobePassAuthenticator.Environment.PRODUCTION] = 'https://entitlement.auth.adobe.com/entitlement/v4/AccessEnabler.js';\n JS_URLS[AdobePassAuthenticator.Environment.STAGING] = 'https://entitlement.auth-staging.adobe.com/entitlement/v4/AccessEnabler.js';\n var JS_ELEMENT_ID = 'ae_js';\n\n var SOFTWARE_STATEMENTS = {};\n SOFTWARE_STATEMENTS[AdobePassAuthenticator.Environment.PRODUCTION] = 'eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIyZGJmZWM4My03OWE1LTQyNzEtYTVmZC04NTZjYTMxMjRjNjMiLCJuYmYiOjE1NDAyMTI3NjEsImlzcyI6ImF1dGguYWRvYmUuY29tIiwiaWF0IjoxNTQwMjEyNzYxfQ.yaK3r4AI2uLVvsyN1GLzqzgzRlxMPtasSaiYYBV0wIstqih5tvjTmeoLmi8Xy9Kp_U7Md-bOffwiyK3srHkpUkhhwXLH2x6RPjmS1tPmhaG7-3LBcHTf2ySPvXhVf7cN4ngldawK4tdtLtsw6rF_JoZE2yaC6XbS2F51nXSFEDDnOQWIHEQRG3aYAj-38P2CLGf7g-Yfhbp5cKXeksHHQ90u3eOO4WH0EAjc9oO47h33U8KMEXxJbvjV5J8Va2G2fQSgLDZ013NBI3kQnE313qgqQh2feQILkyCENpB7g-TVBreAjOaH1fU471htSoGGYepcAXv-UDtpgitDiLy7CQ'; // eslint-disable-line\n SOFTWARE_STATEMENTS[AdobePassAuthenticator.Environment.STAGING] = 'eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhMmRjNjgyMC1kZGNkLTQ4NGEtOTdlNS0xZjJiZmQzOGI4YzgiLCJuYmYiOjE1NDAyMjIwNTksImlzcyI6ImF1dGguYWRvYmUuY29tIiwiaWF0IjoxNTQwMjIyMDU5fQ.YgX4ecGCgLCaZS7uwRQYZ8UR5EwT7GIl-glFbwU122bO1JYZSmbIX8YJSfmYth_scyeg-15BYWNftV9lOcmCe8VwIsQMJMIZKaF8qSIj5OfuTOBpNZNBpDAp5dC3zG7Zp1xLe3z-T0Y18-0BGj2yhGcJxBz4gtLXQ30Bw0LEIJ89nXCQaXFTq9N6zhDzMfkFJNnSNEvEmvcQqB4bFPIqn2is8427oQDU4D0XYvvTtx9eb5hmzKc9MbBG-8KRBA62BqdHomA5UA4kBYJKpe-8B2hO07Adi2bZoo5wP_VLNAnAxANWNXaGQYHMDjHDrHbbvuKHBudHgKxAuKpIdC7UrA'; // eslint-disable-line\n var _softwareStatement = SOFTWARE_STATEMENTS[environment];\n\n var _accessEnablerJsUrl = JS_URLS[environment];\n var _redirectUrl = redirectUrl;\n var _accessEnabler = null;\n var _resolveInitialize = null;\n var _resolveAuthentication = null;\n var _resolveDeauthentication = null;\n var _resolveAuthorization = null;\n var _resolvePreauthorizes = [];\n var _resolveAuthenticationInfo = null;\n var _resolveMetadataStatus = {};\n var _resolveSelectProvider = null;\n var _errorEventCallback = null;\n\n var _isAuthenticated = false;\n\n function entitlementLoaded() {\n _accessEnabler.bind('errorEvent', errorEventHandlerName);\n\n var requestorConfigInfo = refreshless ? {\n callSetConfig: true,\n backgroundLogin: false,\n backgroundLogout: true\n } : null;\n _accessEnabler.setRequestor(REQUESTOR, null, requestorConfigInfo);\n if (_resolveInitialize) {\n _resolveInitialize(true);\n }\n }\n\n function setAuthenticationStatus(isAuthenticated, errorCode) {\n _loglevel2.default.debug('AdobePassAuthenticator.setAuthenticationStatus', isAuthenticated, errorCode);\n _isAuthenticated = !!isAuthenticated;\n\n if (_resolveAuthentication) {\n _resolveAuthentication(_isAuthenticated);\n _resolveAuthentication = null;\n }\n\n if (_resolveSelectProvider) {\n _resolveSelectProvider(_isAuthenticated);\n _resolveSelectProvider = null;\n }\n\n if (_resolveDeauthentication) {\n _resolveDeauthentication(_isAuthenticated);\n _resolveDeauthentication = null;\n }\n }\n\n function setMetadataStatus(key, encrypted, data) {\n _loglevel2.default.debug('AdobePassAuthenticator.setMetadataStatus', key, data);\n if (_resolveMetadataStatus[key]) {\n _resolveMetadataStatus[key](data);\n }\n _resolveMetadataStatus[key] = null;\n }\n\n function _displayProviderDialog(providers) {\n _loglevel2.default.debug('AdobePassAuthenticator.displayProviderDialog', providers);\n if (_resolveAuthentication) {\n _resolveAuthentication(_isAuthenticated);\n _resolveAuthentication = null;\n }\n displayProviderDialogImpl(providers);\n /*\n .then(function(provider) {\n _accessEnabler.setSelectedProvider(provider);\n });\n */\n }\n\n function setToken(resourceId, token) {\n _loglevel2.default.debug('Requested resource: ' + resourceId + ' tokenResult: ' + token);\n if (_resolveAuthorization) {\n _resolveAuthorization({ resourceId: resourceId, token: token });\n }\n }\n\n function tokenRequestFailed(resourceId, errorCode, errorDetails) {\n if (errorCode != null || errorDetails != null) {\n _loglevel2.default.error('Failure to authorize: ' + errorDetails);\n if (_resolveAuthorization) {\n _resolveAuthorization({ errorCode: errorCode, errorDetails: errorDetails });\n }\n }\n }\n\n function setConfig() /* configXml */{\n // log.debug('setConfig', configXml);\n }\n\n function sendTrackingData(trackingEventType, trackingData) {\n if (trackingEventType === 'authenticationDetection') {\n var data = {\n success: trackingData[0],\n mvpd: trackingData[1],\n guid: trackingData[2],\n isTokenCached: trackingData[3],\n deviceType: trackingData[4],\n clientType: trackingData[5],\n os: trackingData[6]\n };\n\n _loglevel2.default.debug('AdobePassAuthenticator.sendTrackingData', trackingEventType, data);\n }\n }\n\n function preauthorizedResources(authorizedResources) {\n _loglevel2.default.debug('AdobePassAuthenticator.preauthorizedResources', authorizedResources);\n\n var completion = _resolvePreauthorizes.shift();\n if (completion) completion(authorizedResources);\n }\n\n function embedJs() {\n var scriptTag = document.createElement('script');\n scriptTag.id = JS_ELEMENT_ID;\n scriptTag.type = 'text/javascript';\n scriptTag.async = true;\n scriptTag.src = _accessEnablerJsUrl;\n scriptTag.addEventListener('load', function () {\n _accessEnabler = new window.Adobe.AccessEnabler(_softwareStatement);\n });\n document.getElementsByTagName('head')[0].appendChild(scriptTag);\n }\n\n function selectedProvider(result) {\n var mvpd = result.MVPD,\n aeState = result.AE_State;\n\n if (_resolveAuthenticationInfo) _resolveAuthenticationInfo({ mvpd: mvpd, aeState: aeState });\n }\n\n function AEErrorHandler(errorData) {\n if (typeof _errorEventCallback === 'function') {\n _errorEventCallback(errorData);\n }\n }\n\n function bindCallbacks() {\n global.entitlementLoaded = entitlementLoaded;\n global.setAuthenticationStatus = setAuthenticationStatus;\n global.setMetadataStatus = setMetadataStatus;\n global.displayProviderDialog = _displayProviderDialog;\n global.setConfig = setConfig;\n global.sendTrackingData = sendTrackingData;\n global.preauthorizedResources = preauthorizedResources;\n global.selectedProvider = selectedProvider;\n global.setToken = setToken;\n global.tokenRequestFailed = tokenRequestFailed;\n global[errorEventHandlerName] = AEErrorHandler;\n }\n\n return (0, _lodash2.default)(this, {\n /**\n * Initializes the Adobe Pass client\n * @function initialize\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<null>}\n */\n initialize: function initialize(callback) {\n _loglevel2.default.debug('AdobePassAuthenticator.initialize');\n\n return new Promise(function (resolve) {\n _resolveInitialize = function _resolveInitialize(isInitialized) {\n resolve(isInitialized);\n if ((0, _lodash4.default)(callback)) {\n callback(null, isInitialized);\n }\n };\n bindCallbacks();\n embedJs();\n });\n },\n\n\n /**\n * @function isAuthenticated\n * @override\n * @memberof AdobePassAuthenticator#\n * @returns {Boolean}\n */\n isAuthenticated: function isAuthenticated() {\n return _isAuthenticated;\n },\n\n\n /**\n * @function setRedirectUrl\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {String} a redirect url\n * @returns boolean\n */\n setRedirectUrl: function setRedirectUrl(url) {\n if (typeof url === 'string') {\n _redirectUrl = url;\n return true;\n }\n return false;\n },\n\n\n /**\n * @function checkAuthentication\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n checkAuthentication: function checkAuthentication(callback) {\n _loglevel2.default.debug('AdobePassAuthenticator.checkAuthentication');\n\n return new Promise(function (resolve) {\n _resolveAuthentication = function _resolveAuthentication(isAuthenticated) {\n resolve(isAuthenticated);\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n };\n _accessEnabler.checkAuthentication();\n });\n },\n\n\n /**\n * @function authenticate\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {String} identity\n * @param {Callback} callback\n * @param {String} optional redirect url\n * @returns {Promise.<Boolean>}\n */\n authenticate: function authenticate(identity, callback) {\n var url = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _redirectUrl;\n\n _loglevel2.default.debug('AdobePassClient.authenticate ' + identity);\n\n return new Promise(function (resolve) {\n _resolveAuthentication = function _resolveAuthentication(isAuthenticated) {\n resolve(isAuthenticated);\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n };\n _accessEnabler.getAuthentication(url);\n });\n },\n\n\n /**\n * @function deauthenticate\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n deauthenticate: function deauthenticate(callback) {\n _loglevel2.default.debug('AdobePassAuthenticator.deauthenticate');\n\n return new Promise(function (resolve) {\n _resolveDeauthentication = function _resolveDeauthentication(isAuthenticated) {\n resolve(isAuthenticated);\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n };\n _accessEnabler.logout();\n });\n },\n\n\n /**\n * @function getAuthenticationInfo\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n getAuthenticationInfo: function getAuthenticationInfo(callback) {\n _loglevel2.default.debug('AdobePassAuthenticator.getAuthenticationInfo');\n\n var getAuthenticationInfoPromise = new Promise(function (resolve) {\n _resolveAuthenticationInfo = resolve;\n });\n _accessEnabler.getSelectedProvider();\n\n if ((0, _lodash4.default)(callback)) {\n callback(null, true);\n }\n\n return getAuthenticationInfoPromise;\n },\n\n\n /**\n * @function getMetadata\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n getMetadata: function getMetadata(key) {\n _loglevel2.default.debug('AdobePassAuthenticator.getMetadata');\n var getMetadataPromise = new Promise(function (resolve) {\n if (key) {\n _resolveMetadataStatus[key] = resolve;\n } else {\n resolve(null);\n }\n });\n if (key) {\n _accessEnabler.getMetadata(key);\n }\n return getMetadataPromise;\n },\n\n\n /**\n * @function authorize\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n authorize: function authorize(resource, callback) {\n _loglevel2.default.debug('AdobePassClient.authorize ' + resource);\n\n return new Promise(function (resolve) {\n _resolveAuthorization = function _resolveAuthorization(authzResponse) {\n resolve(authzResponse);\n if ((0, _lodash4.default)(callback)) {\n callback(null, authzResponse);\n }\n };\n _accessEnabler.getAuthorization(resource);\n });\n },\n\n\n /**\n * @function checkPreauthorizedResources\n * @memberof AdobePassAuthenticator#\n * @param {}\n * @returns {Promise.<Array>}\n */\n checkPreauthorizedResources: function checkPreauthorizedResources() {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var hasCallback = (0, _lodash4.default)(args[args.length - 1]);\n var resources = hasCallback ? args.slice(0, args.length - 1) : args;\n var callback = hasCallback ? args[args.length - 1] : null;\n\n if (_isAuthenticated !== true) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, []);\n }\n return Promise.resolve([]);\n }\n\n var completions = [];\n\n var groupedResources = chunk(resources, 5);\n\n var promises = groupedResources.map(function (resourceGroup) {\n return new Promise(function (resolve) {\n var completion = function completion(preauthzResources) {\n resolve(preauthzResources);\n };\n\n completions.push(completion);\n\n _accessEnabler.checkPreauthorizedResources(resourceGroup);\n }).catch(function () {\n return [];\n });\n });\n\n _resolvePreauthorizes = completions;\n\n return Promise.all(promises).then(function (results) {\n var result = results.reduce(function (acc, val) {\n return acc.concat(val);\n }, []);\n\n result.forEach(function (resource) {\n _this.emit(AdobePassAuthenticator.EventType.PREAUTHORIZED, resource);\n });\n\n (0, _lodash6.default)(resources, result).forEach(function (resource) {\n _this.emit(AdobePassAuthenticator.EventType.NOT_PREAUTHORIZED, resource);\n });\n\n if ((0, _lodash4.default)(callback)) {\n callback(null, result);\n }\n return result;\n });\n },\n selectProvider: function selectProvider(provider) {\n _accessEnabler.setSelectedProvider(provider.ID);\n return new Promise(function (resolve) {\n if (refreshless) {\n _resolveSelectProvider = resolve;\n }\n });\n },\n onErrorEvent: function onErrorEvent(callback) {\n _errorEventCallback = callback;\n }\n });\n}\n\nAdobePassAuthenticator.Environment = {\n PRODUCTION: 'production',\n STAGING: 'staging'\n};\n\nAdobePassAuthenticator.EventType = {\n PREAUTHORIZED: 'preauthorized',\n NOT_PREAUTHORIZED: 'not_preauthorized'\n};\n\nAdobePassAuthenticator.AccessEnablerType = {\n JAVASCRIPT: 'js'\n};\n\nexports.default = AdobePassAuthenticator;\nmodule.exports = exports['default'];\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 664 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = difference;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 665 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 666 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.USER_DATA_KEY = undefined;\n\nvar _lodash = __webpack_require__(319);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = __webpack_require__(320);\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nvar _superagent = __webpack_require__(192);\n\nvar _superagent2 = _interopRequireDefault(_superagent);\n\nvar _Authenticator = __webpack_require__(211);\n\nvar _Authenticator2 = _interopRequireDefault(_Authenticator);\n\nvar _WebStorage = __webpack_require__(667);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar USER_DATA_KEY = exports.USER_DATA_KEY = '__userData'; /* eslint-disable no-console */\n\nvar STORAGE_TYPE = 'sessionStorage';\n\nvar USER_DATA_BASE_URL = 'https://broadband.espn.com/espn3/auth/watchespn/user';\n\nfunction IpAuthenticator(_ref) {\n var _ref$partner = _ref.partner,\n partner = _ref$partner === undefined ? 'watchespn' : _ref$partner,\n _ref$platform = _ref.platform,\n platform = _ref$platform === undefined ? 'web' : _ref$platform,\n _ref$userDataServiceU = _ref.userDataServiceUrl,\n userDataServiceUrl = _ref$userDataServiceU === undefined ? USER_DATA_BASE_URL : _ref$userDataServiceU;\n\n if (!(this instanceof IpAuthenticator)) {\n return new IpAuthenticator({ partner: partner, platform: platform, userDataServiceUrl: userDataServiceUrl });\n }\n var userDataUrl = userDataServiceUrl + '?partner=' + partner + '&platform=' + platform;\n var _isAuthenticated = false;\n var userDataPromise = void 0;\n var ispAuthInfo = void 0;\n\n function getUserData() {\n var userData = (0, _WebStorage.getJson)(USER_DATA_KEY, STORAGE_TYPE);\n if (userData !== null) {\n userDataPromise = Promise.resolve(userData);\n } else if (!userDataPromise) {\n userDataPromise = new Promise(function (resolve, reject) {\n _superagent2.default.get(userDataUrl).end(function (err, res) {\n if (res) {\n var userDataResponse = JSON.parse(res.text);\n (0, _WebStorage.setJson)(USER_DATA_KEY, userDataResponse, STORAGE_TYPE);\n resolve(userDataResponse);\n } else {\n reject(err || new Error('Unknown error'));\n }\n });\n }).catch(function (err) {\n console.log('Error getting UserData: ', err);\n userDataPromise = null;\n return undefined;\n });\n }\n return userDataPromise;\n }\n\n function checkIpAuth() {\n return getUserData().then(function (userData) {\n ispAuthInfo = userData && userData.user && userData.user.authentication && userData.user.authentication.isp;\n _isAuthenticated = ispAuthInfo !== undefined && ispAuthInfo.name !== 'espn';\n return _isAuthenticated;\n });\n }\n (0, _lodash2.default)(this, _Authenticator2.default);\n\n return (0, _lodash2.default)(this, {\n initialize: function initialize(callback) {\n return checkIpAuth().then(function () {\n if ((0, _lodash4.default)(callback)) {\n callback(null, true);\n }\n return true;\n });\n },\n isAuthenticated: function isAuthenticated() {\n return _isAuthenticated;\n },\n checkAuthentication: function checkAuthentication(callback) {\n return checkIpAuth().then(function (isAuthenticated) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n return isAuthenticated;\n });\n },\n authenticate: function authenticate(identity, callback) {\n return checkIpAuth().then(function (isAuthenticated) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n return isAuthenticated;\n });\n },\n deauthenticate: function deauthenticate(callback) {\n _isAuthenticated = false;\n return Promise.resolve(_isAuthenticated).then(function (isAuthenticated) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n return isAuthenticated;\n });\n },\n getAuthenticationInfo: function getAuthenticationInfo(callback) {\n return getUserData().then(function (userData) {\n var authenticationInfo = userData && userData.user && userData.user.authentication && userData.user.authentication.isp;\n var mvpd = authenticationInfo.name,\n imgUrl = authenticationInfo.imageHref;\n\n var authInfo = mvpd !== 'espn' ? { mvpd: mvpd, imgUrl: imgUrl } : null;\n if ((0, _lodash4.default)(callback)) {\n callback(null, authInfo);\n }\n return authInfo;\n });\n },\n getLocation: function getLocation(callback) {\n return getUserData().then(function (userData) {\n return userData && userData.user && userData.user.location;\n }).then(function (location) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, location);\n }\n return location;\n });\n }\n });\n}\n\nexports.default = IpAuthenticator;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 667 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable no-console */\nfunction storageAvailable(type) {\n try {\n var storage = window[type];\n var key = '__storage_test__';\n storage.setItem(key, key);\n storage.removeItem(key);\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction setJson(key, json) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'sessionStorage';\n\n if (storageAvailable(type)) {\n var storage = window[type];\n storage.setItem(key, JSON.stringify(json));\n return true;\n }\n return false;\n}\n\nfunction getJson(key) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'sessionStorage';\n\n var resp = null;\n if (storageAvailable(type)) {\n var storage = window[type];\n var value = storage.getItem(key);\n try {\n resp = JSON.parse(value);\n } catch (err) {\n console.log('Error parsing JSON: ', err);\n }\n }\n return resp;\n}\n\nexports.setJson = setJson;\nexports.getJson = getJson;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 668 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isAuthNTtlSaved;\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = saveInitialAuthNData;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = saveAuthNTtl;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = reset;\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = trackUntimelyLogout;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__omniture__ = __webpack_require__(34);\n/**\n * This module contains functions used to track when users are logged out sooner than we'd expect\n */\n\n\n\nvar INITIAL_AUTHN_DATA_STORAGE_KEY = '@watch:INITIAL_AUTHN_DATA';\nvar AUTHN_TTL_STORAGE_KEY = '@watch:TTL_AUTHN';\n\n// make the numbers look pretty in omniture\nfunction formatTimeInMillisToDays(time) {\n if (typeof time === 'number') {\n return (time / 1000 / 60 / 60 / 24).toFixed(2);\n }\n return 'unknown';\n}\n\n// public function to tell us if we've already saved their authNTtl (to prevent overriding it)\nfunction isAuthNTtlSaved() {\n return !!localStorage.getItem(AUTHN_TTL_STORAGE_KEY);\n}\n\n// saves the time in which they authenticated, and which provider\nfunction saveInitialAuthNData(_ref) {\n var name = _ref.name,\n abbreviation = _ref.abbreviation;\n\n if (localStorage) {\n localStorage.setItem(INITIAL_AUTHN_DATA_STORAGE_KEY, JSON.stringify({\n date: new Date(),\n provider: { name: name, abbreviation: abbreviation }\n }));\n }\n}\n\n// saves the expected TTL as returned from Adobe\nfunction saveAuthNTtl(ttl) {\n if (localStorage && typeof ttl === 'number') {\n localStorage.setItem(AUTHN_TTL_STORAGE_KEY, new Date(ttl));\n }\n}\n\n// clear out all storage keys related to untimely logout tracking\nfunction reset() {\n if (localStorage) {\n localStorage.removeItem(INITIAL_AUTHN_DATA_STORAGE_KEY);\n localStorage.removeItem(AUTHN_TTL_STORAGE_KEY);\n }\n}\n\n// get necessary items from localStorage and actually do the tracking\nfunction trackUntimelyLogout(entitlementsTracking) {\n if (localStorage) {\n try {\n var initialAuthNDataString = localStorage.getItem(INITIAL_AUTHN_DATA_STORAGE_KEY);\n var authNTtl = localStorage.getItem(AUTHN_TTL_STORAGE_KEY);\n\n if (authNTtl && initialAuthNDataString) {\n var initialAuthNData = JSON.parse(initialAuthNDataString);\n var provider = initialAuthNData.provider || {};\n var initialLoginTime = new Date(initialAuthNData.date).getTime();\n var loginExpireTime = new Date(authNTtl).getTime();\n var currentTime = new Date().getTime();\n\n var actualLoginTime = formatTimeInMillisToDays(currentTime - initialLoginTime);\n var expectedLoginTime = formatTimeInMillisToDays(loginExpireTime - initialLoginTime);\n // if the login expiration has not yet reached, the user got logged out unexpectedly\n if (loginExpireTime > currentTime) {\n Object(__WEBPACK_IMPORTED_MODULE_0__omniture__[\"s\" /* trackUntimelyLogout */])(actualLoginTime, expectedLoginTime, provider, entitlementsTracking);\n }\n reset();\n }\n } catch (ex) {\n console.error(ex);\n }\n }\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 669 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Set = __webpack_require__(290),\n noop = __webpack_require__(670),\n setToArray = __webpack_require__(210);\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n\n\n/***/ }),\n/* 670 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n\n\n/***/ }),\n/* 671 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n\n\nvar networksSelector = function networksSelector(_ref) {\n var _ref$networks = _ref.networks,\n networks = _ref$networks === undefined ? {} : _ref$networks;\n return networks;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(networksSelector, function (_ref2) {\n var data = _ref2.data;\n return data;\n}));\n\n/***/ }),\n/* 672 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseSlice = __webpack_require__(673),\n isIterateeCall = __webpack_require__(323),\n toInteger = __webpack_require__(316);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nmodule.exports = chunk;\n\n\n/***/ }),\n/* 673 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n\n\n/***/ }),\n/* 674 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = __webpack_require__(0);\nvar React__default = _interopDefault(React);\nvar shallowEqual = _interopDefault(__webpack_require__(675));\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(SideEffect, _Component);\n\n function SideEffect() {\n return _Component.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n };\n\n _proto.componentWillMount = function componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.Component);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n\n\n/***/ }),\n/* 675 */\n/***/ (function(module, exports) {\n\n//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n\n\n/***/ }),\n/* 676 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(677);\nvar isArguments = __webpack_require__(678);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 677 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 678 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 679 */\n/***/ (function(module, exports) {\n\nexports.__esModule = true;\nvar TAG_NAMES = exports.TAG_NAMES = {\n HTML: \"htmlAttributes\",\n TITLE: \"title\",\n BASE: \"base\",\n META: \"meta\",\n LINK: \"link\",\n SCRIPT: \"script\",\n NOSCRIPT: \"noscript\",\n STYLE: \"style\"\n};\n\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n NAME: \"name\",\n CHARSET: \"charset\",\n HTTPEQUIV: \"http-equiv\",\n REL: \"rel\",\n HREF: \"href\",\n PROPERTY: \"property\",\n SRC: \"src\",\n INNER_HTML: \"innerHTML\",\n CSS_TEXT: \"cssText\",\n ITEM_PROP: \"itemprop\"\n};\n\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n \"charset\": \"charSet\",\n \"http-equiv\": \"httpEquiv\",\n \"itemprop\": \"itemProp\",\n \"class\": \"className\"\n};\n\n/***/ }),\n/* 680 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 681 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(213);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__PlayerBase__ = __webpack_require__(214);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Loader__ = __webpack_require__(682);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__ = __webpack_require__(75);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable class-methods-use-this, no-return-assign */\n\n\n\n\n\n\nvar BAMPlayer = function (_PlayerBase) {\n _inherits(BAMPlayer, _PlayerBase);\n\n function BAMPlayer() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n sdkHost = _ref.sdkHost,\n _ref$env = _ref.env,\n env = _ref$env === undefined ? 'beta' : _ref$env,\n playerVersion = _ref.playerVersion,\n _ref$geoTimeoutInSeco = _ref.geoTimeoutInSeconds,\n geoTimeoutInSeconds = _ref$geoTimeoutInSeco === undefined ? 7 : _ref$geoTimeoutInSeco,\n loader = _ref.loader;\n\n _classCallCheck(this, BAMPlayer);\n\n var _this = _possibleConstructorReturn(this, (BAMPlayer.__proto__ || Object.getPrototypeOf(BAMPlayer)).call(this));\n\n _this._sdkHost = sdkHost;\n _this._playerVersion = playerVersion;\n _this._extensionConfig = { environment: env };\n _this._geoTimeoutInSeconds = geoTimeoutInSeconds;\n _this._loader = BAMPlayer.loader || loader;\n _this.getPlayerExtension = _this.getPlayerExtension.bind(_this);\n return _this;\n }\n\n _createClass(BAMPlayer, [{\n key: 'getPlayerExtension',\n value: function getPlayerExtension(BamVideoExtension) {\n if (!this._playerExtension) {\n this._playerExtension = new BamVideoExtension(this._extensionConfig); // eslint-disable-line new-cap\n }\n return this._playerExtension;\n }\n }, {\n key: 'createSDKWrapper',\n value: function createSDKWrapper() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var geolocationKey = 'geolocation';\n var subscriptionsKey = 'subscriptions';\n var sessionTokenKey = 'sessionToken';\n var userTrackingKey = 'userTrackingInformation';\n var requests = options.requests,\n timeout = options.timeout,\n transactionId = options.transactionId;\n\n if (!BAMPlayer.SDKData[transactionId]) {\n BAMPlayer.SDKData[transactionId] = {};\n } else {\n var transactionData = BAMPlayer.SDKData[transactionId];\n if (transactionData[geolocationKey]) {\n this.emit(BAMPlayer.Events.GEOLOCATION_READY, transactionData[geolocationKey]);\n }\n if (transactionData[subscriptionsKey]) {\n this.emit(BAMPlayer.Events.SUBSCRIPTIONS_READY, transactionData[subscriptionsKey]);\n }\n if (transactionData[sessionTokenKey]) {\n this.emit(BAMPlayer.Events.SESSIONTOKEN_READY, transactionData[sessionTokenKey]);\n }\n if (transactionData[userTrackingKey]) {\n this.emit(BAMPlayer.Events.USER_TRACKING_INFORMATION_READY, transactionData[userTrackingKey]);\n }\n if (Object.keys(transactionData).length === 2) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve();\n }\n }\n var context = requests.join();\n var pertName = 'BAMPlayer/createSDKWrapper_' + context;\n return BAMPlayer.SDKPromises[transactionId] || (BAMPlayer.SDKPromises[transactionId] = this.loadPlayer(context).then(function (playerExtension) {\n var eventBus = playerExtension.eventBus,\n events = playerExtension.events;\n\n var geoEventName = events.get(BAMPlayer.Events.GEOLOCATION_READY);\n var subEventName = events.get(BAMPlayer.Events.SUBSCRIPTIONS_READY);\n var sessionTokenEventName = events.get(BAMPlayer.Events.SESSIONTOKEN_READY);\n var userTrackingEventName = events.get(BAMPlayer.Events.USER_TRACKING_INFORMATION_READY);\n var timer = void 0;\n var geoCallback = function geoCallback(event) {\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"b\" /* measureAndTime */](pertName);\n window.clearTimeout(timer);\n eventBus.off(geoEventName, geoCallback);\n BAMPlayer.SDKData[transactionId][geolocationKey] = event;\n _this2.emit(BAMPlayer.Events.GEOLOCATION_READY, event);\n };\n var subCallback = function subCallback(event) {\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"b\" /* measureAndTime */](pertName);\n window.clearTimeout(timer);\n eventBus.off(subEventName, subCallback);\n BAMPlayer.SDKData[transactionId][subscriptionsKey] = event;\n _this2.emit(BAMPlayer.Events.SUBSCRIPTIONS_READY, event);\n };\n var tokenCallback = function tokenCallback(event) {\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"b\" /* measureAndTime */](pertName);\n window.clearTimeout(timer);\n eventBus.off(sessionTokenEventName, tokenCallback);\n BAMPlayer.SDKData[transactionId][sessionTokenKey] = event;\n _this2.emit(BAMPlayer.Events.SESSIONTOKEN_READY, event);\n };\n\n var userTrackingCallback = function userTrackingCallback(event) {\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"b\" /* measureAndTime */](pertName);\n window.clearTimeout(timer);\n eventBus.off(userTrackingEventName, userTrackingCallback);\n BAMPlayer.SDKData[transactionId][userTrackingKey] = event;\n _this2.emit(BAMPlayer.Events.USER_TRACKING_INFORMATION_READY, event);\n };\n\n // TODO: DTC - BAM to reject promise when any error occurs\n if (timeout) {\n timer = window.setTimeout(function () {\n console.error('createSDKWrapper timed out after ' + _this2._geoTimeoutInSeconds + ' seconds');\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"b\" /* measureAndTime */](pertName);\n eventBus.off(geoEventName, geoCallback);\n eventBus.off(subEventName, subCallback);\n eventBus.off(sessionTokenEventName, tokenCallback);\n eventBus.off(userTrackingEventName, userTrackingCallback);\n\n if (requests.indexOf(geolocationKey) > -1) {\n var geoEvent = { error: 'timeout' };\n BAMPlayer.SDKData[transactionId][geolocationKey] = geoEvent;\n _this2.emit(BAMPlayer.Events.GEOLOCATION_READY, geoEvent);\n }\n if (requests.indexOf(subscriptionsKey) > -1) {\n var subEvent = {\n error: 'timeout',\n body: { subscriptions: [] }\n };\n BAMPlayer.SDKData[transactionId][subscriptionsKey] = subEvent;\n _this2.emit(BAMPlayer.Events.SUBSCRIPTIONS_READY, subEvent);\n }\n if (requests.indexOf(sessionTokenKey) > -1) {\n var tokenEvent = {\n error: 'timeout',\n body: { token: null }\n };\n BAMPlayer.SDKData[transactionId][sessionTokenKey] = tokenEvent;\n _this2.emit(BAMPlayer.Events.SESSIONTOKEN_READY, tokenEvent);\n }\n if (requests.indexOf(userTrackingKey) > -1) {\n var userTrackingEvent = {\n error: 'timeout',\n body: {}\n };\n BAMPlayer.SDKData[transactionId][userTrackingKey] = userTrackingEvent;\n _this2.emit(BAMPlayer.Events.USER_TRACKING_INFORMATION_READY, userTrackingEvent);\n }\n }, _this2._geoTimeoutInSeconds * 1000);\n }\n\n if (requests.indexOf(geolocationKey) > -1) {\n eventBus.on(geoEventName, geoCallback);\n }\n if (requests.indexOf(subscriptionsKey) > -1) {\n eventBus.on(subEventName, subCallback);\n }\n if (requests.indexOf(sessionTokenKey) > -1) {\n eventBus.on(sessionTokenEventName, tokenCallback);\n }\n if (requests.indexOf(userTrackingKey) > -1) {\n eventBus.on(userTrackingEventName, userTrackingCallback);\n }\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"a\" /* markStart */](pertName);\n return playerExtension.createSDKWrapper(options.selector, options);\n }));\n }\n }, {\n key: 'renderPaywall',\n value: function renderPaywall(options) {\n var _this3 = this;\n\n return this.loadPlayer().then(function (playerExtension) {\n var eventBus = playerExtension.eventBus,\n events = playerExtension.events;\n\n return playerExtension.renderPaywall(options.selector, options).then(function () {\n eventBus.once(events.get(BAMPlayer.Events.LOGIN_REQUESTED), function (event) {\n _this3.emit(BAMPlayer.Events.LOGIN_REQUESTED, event);\n });\n });\n });\n }\n }, {\n key: 'sendContentReward',\n value: function sendContentReward(selector, rewardToken, contentId, userActivityAction, recommendedContentIds) {\n return this.loadPlayer().then(function (playerExtension) {\n return playerExtension.sendContentReward(selector, rewardToken, contentId, userActivityAction, recommendedContentIds).then(function (result) {\n return (\n // TODO: Will be removed once deployed to production\n console.info('sendContentReward result:', result)\n );\n } // eslint-disable-line\n );\n });\n }\n }, {\n key: 'loadPlayer',\n value: function loadPlayer(context) {\n var _this4 = this;\n\n var perfName = context ? 'BAMPlayer/loadPlayer_' + context : 'BAMPlayer/loadPlayer';\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"a\" /* markStart */](perfName);\n return this._loader.load(this._sdkHost, this._playerVersion).then(function (BamVideoExtension) {\n __WEBPACK_IMPORTED_MODULE_4__lib_util_perf__[\"b\" /* measureAndTime */](perfName);\n return _this4.getPlayerExtension(BamVideoExtension);\n });\n }\n }, {\n key: 'create',\n value: function create(options) {\n var _this5 = this;\n\n // only allow one player within `WatchESPNWebPlayer` instance\n // TODO: consider using `singlePlayerMode=true`\n var isNew = !this._playerId;\n return this.loadPlayer().then(function (playerExtension) {\n var eventBus = playerExtension.eventBus,\n events = playerExtension.events;\n // or is `updatePlayerConfigs` for updating `extensionConfig`?\n // then how do we switch content?\n\n var api = isNew ? 'createPlayer' : 'loadMedia';\n return new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) {\n console.log(api, options); // eslint-disable-line no-console\n playerExtension[api](options.selector, options).then(function (playerId) {\n if (isNew) {\n _this5._playerId = playerId;\n _this5.subscribe(playerExtension);\n var readyTimer = window.setTimeout(function () {\n resolve(_this5);\n }, 100);\n eventBus.once(events.get(BAMPlayer.Events.EMBED_PLAYER_READY), function () {\n window.clearTimeout(readyTimer);\n resolve(_this5);\n });\n\n return playerExtension.insertPlayer(playerId);\n }\n\n resolve(_this5);\n\n return _this5._playerId;\n }).catch(function (err) {\n console.error(err);\n reject(err);\n });\n });\n });\n }\n }, {\n key: 'loadMedia',\n value: function loadMedia(options) {\n var _this6 = this;\n\n if (!this._playerExtension || !this._playerId) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n return this._playerExtension.loadMedia(this._playerId, options).then(function () {\n return _this6;\n });\n }\n }, {\n key: 'destroyPlayer',\n value: function destroyPlayer() {\n var _this7 = this;\n\n if (this._playerExtension && this._playerId) {\n this.unsubscribe();\n return this._playerExtension.destroyPlayer(this._playerId).then(function () {\n _this7._playerId = null;\n return _this7;\n }).catch(function () {});\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n }, {\n key: 'changeFeed',\n value: function changeFeed(options) {\n var _this8 = this;\n\n if (!this._playerExtension || !this._playerId) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n console.log('changeFeed', options); // eslint-disable-line no-console\n return this._playerExtension.changeFeed(this._playerId, options).then(function () {\n return _this8;\n });\n }\n }, {\n key: 'deactivate',\n value: function deactivate() {\n var _this9 = this;\n\n if (!this._playerExtension || !this._playerId) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n return this._playerExtension.deactivatePlayer(this._playerId).then(function () {\n return _this9;\n });\n }\n }, {\n key: 'delete',\n value: function _delete() {\n var _this10 = this;\n\n if (this._playerExtension && this._playerId) {\n this.unsubscribe();\n return this._playerExtension.deletePlayer(this._playerId).then(function () {\n _this10._playerId = null;\n return _this10;\n }).catch(function () {});\n }\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n }, {\n key: 'play',\n value: function play() {\n var _this11 = this;\n\n if (!this._playerExtension) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n return this._playerExtension.playPlayer(this._playerId).then(function () {\n return _this11;\n });\n }\n }, {\n key: 'pause',\n value: function pause() {\n var _this12 = this;\n\n if (!this._playerExtension) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n return this._playerExtension.pausePlayer(this._playerId).then(function () {\n return _this12;\n });\n }\n }, {\n key: 'mute',\n value: function mute() {\n var _this13 = this;\n\n if (!this._playerExtension) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n return this._playerExtension.mutePlayer(this._playerId).then(function () {\n return _this13;\n });\n }\n }, {\n key: 'unmute',\n value: function unmute() {\n var _this14 = this;\n\n if (!this._playerExtension) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n return this._playerExtension.unmutePlayer(this._playerId).then(function () {\n return _this14;\n });\n }\n }, {\n key: 'error',\n value: function error() {\n throw new Error('`error` not implemented');\n }\n }, {\n key: 'getPlayerConfigs',\n value: function getPlayerConfigs() {\n if (!this._playerExtension) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n return this._playerExtension.getPlayerConfigs(this._playerId);\n }\n }, {\n key: 'updatePlayerConfigs',\n value: function updatePlayerConfigs(newConfigs) {\n var _this15 = this;\n\n if (!this._playerExtension) {\n return __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a.resolve(this);\n }\n return this._playerExtension.updatePlayerConfigs(this._playerId, newConfigs).then(function () {\n return _this15;\n });\n }\n }, {\n key: 'subscribe',\n value: function subscribe(playerExtension) {\n var _this16 = this;\n\n var eventBus = playerExtension.eventBus,\n events = playerExtension.events;\n\n events.forEach(function (value, key) {\n // TODO: check if the listeners are cleaned up by `deletePlayer`\n eventBus.on(value, function (event) {\n _this16.emit(key, event);\n console.log('Event Received', key, event); // eslint-disable-line no-console\n });\n });\n this._unsubscribeEvents = function () {\n eventBus.removeAllListeners();\n };\n }\n }, {\n key: 'unsubscribe',\n value: function unsubscribe() {\n if (this._unsubscribeEvents) {\n this._unsubscribeEvents();\n this._unsubscribeEvents = null;\n }\n }\n }, {\n key: 'tech',\n get: function get() {\n return __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* PlayerTech */].BAM;\n }\n }, {\n key: 'playerExtension',\n get: function get() {\n return this._playerExtension;\n }\n }, {\n key: 'playerId',\n get: function get() {\n return this._playerId;\n }\n }, {\n key: 'container',\n get: function get() {\n return document.querySelector(this._playerId);\n }\n }]);\n\n return BAMPlayer;\n}(__WEBPACK_IMPORTED_MODULE_2__PlayerBase__[\"a\" /* default */]);\n\nBAMPlayer.loader = new __WEBPACK_IMPORTED_MODULE_3__Loader__[\"a\" /* default */]();\n\nBAMPlayer.SDKPromises = {};\nBAMPlayer.SDKData = {};\n\nBAMPlayer.Events = {\n LOGIN_REQUESTED: 'LOGIN_REQUESTED',\n SUBSCRIPTIONS_READY: 'SUBSCRIPTIONS_READY',\n GEOLOCATION_READY: 'GEOLOCATION_READY',\n AUTHORIZE_USER: 'AUTHORIZE_USER',\n EMBED_PLAYER_READY: 'EMBED_PLAYER_READY',\n MEDIA_LOADED: 'MEDIA_LOADED',\n MEDIA_PAUSED: 'MEDIA_PAUSED',\n MEDIA_RESUME: 'MEDIA_RESUME',\n MEDIA_MUTE: 'MEDIA_MUTE',\n MEDIA_UNMUTE: 'MEDIA_UNMUTE',\n PLAYBACK_ERROR: 'PLAYBACK_ERROR', // TODO - to be deprecated\n PLAYBACK_INITIALIZED: 'PLAYBACK_INITIALIZED',\n FEED_CHANGE_REQUEST: 'FEED_CHANGE_REQUEST',\n FEED_CHANGED: 'FEED_CHANGED',\n SETTINGS_CHANGED: 'SETTINGS_CHANGED',\n PLAYER_CONFIGS_RETURNED: 'PLAYER_CONFIGS_RETURNED',\n PLAYER_CONFIGS_UPDATED: 'PLAYER_CONFIGS_UPDATED',\n SESSIONTOKEN_READY: 'SESSIONTOKEN_READY',\n SYNDICATED_PLAYER_MUTE: 'SYNDICATED_PLAYER_MUTE',\n SYNDICATED_PLAYER_UNMUTE: 'SYNDICATED_PLAYER_UNMUTE',\n SYNDICATED_PLAYER_PLAY: 'SYNDICATED_PLAYER_PLAY',\n SYNDICATED_PLAYER_PAUSE: 'SYNDICATED_PLAYER_PAUSE',\n SYNDICATED_PLAYER_ADD_TO_PLAYLIST: 'SYNDICATED_PLAYER_ADD_TO_PLAYLIST',\n SYNDICATED_PLAYER_REMOVE_FROM_PLAYLIST: 'SYNDICATED_PLAYER_REMOVE_FROM_PLAYLIST',\n SYNDICATED_PLAYER_CLEAR_PLAYLIST: 'SYNDICATED_PLAYER_CLEAR_PLAYLIST',\n SYNDICATED_PLAYER_PLAYLIST_NEXT: 'SYNDICATED_PLAYER_PLAYLIST_NEXT',\n SYNDICATED_PLAYER_PLAYLIST_PREVIOUS: 'SYNDICATED_PLAYER_PLAYLIST_PREVIOUS',\n SYNDICATED_PLAYER_GET_CONFIGS: 'SYNDICATED_PLAYER_GET_CONFIGS',\n SYNDICATED_PLAYER_UPDATE_CONFIGS: 'SYNDICATED_PLAYER_UPDATE_CONFIGS',\n USER_TRACKING_INFORMATION_READY: 'USER_TRACKING_INFORMATION_READY'\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (BAMPlayer);\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 682 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_bluebird__);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/* eslint-disable no-return-assign */\n\n\nvar Loader = function () {\n function Loader() {\n _classCallCheck(this, Loader);\n\n this._promises = {};\n }\n\n _createClass(Loader, [{\n key: 'load',\n value: function load() {\n var host = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'https://beta.web.plus.espn.com';\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'latest';\n // TODO: DTC - point to prod by default\n return this._promises[version] || (this._promises[version] = new __WEBPACK_IMPORTED_MODULE_0_bluebird___default.a(function (resolve, reject) {\n if (window.BamVideoExtensionVersioned && window.BamVideoExtensionVersioned[version]) {\n resolve(window.BamVideoExtensionVersioned[version]);\n } else {\n // TODO: take `environment` into account\n var url = host + '/builds/' + version + '/dist/index.js';\n var script = document.createElement('script');\n script.async = true;\n\n script.onload = function () {\n if (window.BamVideoExtension) {\n if (!window.BamVideoExtensionVersioned) {\n window.BamVideoExtensionVersioned = {};\n }\n window.BamVideoExtensionVersioned[version] = window.BamVideoExtension;\n // delete window.BamVideoExtension;\n resolve(window.BamVideoExtensionVersioned[version]);\n } else {\n reject(new Error('script loaded but window.BamVideoExtension not found.'));\n }\n };\n\n script.onerror = function () {\n reject(new Error('failed to load BAM SDK'));\n };\n\n script.src = url;\n document.head.appendChild(script);\n }\n }));\n }\n }]);\n\n return Loader;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Loader);\n\n/***/ }),\n/* 683 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar base64_url_decode = __webpack_require__(684);\n\nfunction InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = 'InvalidTokenError';\n\nmodule.exports = function (token,options) {\n if (typeof token !== 'string') {\n throw new InvalidTokenError('Invalid token specified');\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split('.')[pos]));\n } catch (e) {\n throw new InvalidTokenError('Invalid token specified: ' + e.message);\n }\n};\n\nmodule.exports.InvalidTokenError = InvalidTokenError;\n\n\n/***/ }),\n/* 684 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar atob = __webpack_require__(685);\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = '0' + code;\n }\n return '%' + code;\n }));\n}\n\nmodule.exports = function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try{\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n};\n\n\n/***/ }),\n/* 685 */\n/***/ (function(module, exports) {\n\n/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction polyfill (input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\n\nmodule.exports = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill;\n\n\n/***/ }),\n/* 686 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _FanAPI = __webpack_require__(687);\n\nvar _FanAPI2 = _interopRequireDefault(_FanAPI);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _FanAPI2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 687 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _superagentBluebirdPromise = __webpack_require__(688);\n\nvar _superagentBluebirdPromise2 = _interopRequireDefault(_superagentBluebirdPromise);\n\nvar _bluebird = __webpack_require__(11);\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _Storage = __webpack_require__(689);\n\nvar _Storage2 = _interopRequireDefault(_Storage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FAN_PRODUCT_PROD_HOST = 'https://fan.api.espn.com';\nvar FAN_CORE_PROD_HOST = 'https://fan.core.api.espn.com';\nvar DEFAULT_SOURCE_HEADER = 'espn-video-player'; // watchespn-web // ESPN.com - FAM\nvar FAN_API_CACHE_MINUTES = 10;\nvar SWID_RE = /^{[\\w-]+}/;\n\nvar DEFAULT_CONFIGURATION = {\n sourceHeader: DEFAULT_SOURCE_HEADER,\n cacheDuration: FAN_API_CACHE_MINUTES\n};\n\nvar _sourceHeader = void 0;\nvar _cacheDuration = void 0;\nvar _storage = void 0;\n\nfunction getFan(id, resolve, reject) {\n var url = FAN_PRODUCT_PROD_HOST + '/apis/v2/fans/' + id;\n _superagentBluebirdPromise2.default.get(url).withCredentials().set('X-Personalization-Source', _sourceHeader).end(function (err, res) {\n if (err || !res.ok) {\n reject(err);\n } else {\n var fan = res && res.body;\n _storage.setFan({ item: fan, id: fan.id, timestamp: Date.now() });\n resolve(fan);\n }\n });\n}\n\nfunction getFanForId(id) {\n if (!SWID_RE.test(id)) {\n return _bluebird2.default.reject(new Error('Invalid SWID'));\n }\n\n return new _bluebird2.default(function (resolve, reject) {\n _storage.getFan().then(function (cache) {\n var fan = cache && cache.item;\n var cacheExpired = Date.now() - cache.timestamp > _cacheDuration * 60 * 1000;\n if (fan === null || fan.id !== id || cacheExpired) {\n getFan(id, resolve, reject);\n } else {\n resolve(fan);\n }\n }).catch(function () {\n getFan(id, resolve, reject);\n });\n });\n}\n\nfunction updateSettingsForFanId(id, postData) {\n if (!SWID_RE.test(id)) {\n return _bluebird2.default.reject(new Error('Invalid SWID'));\n }\n\n var url = FAN_CORE_PROD_HOST + '/apis/v2/fans/' + id + '/profile/';\n return _superagentBluebirdPromise2.default.post(url).withCredentials().set('X-Personalization-Source', _sourceHeader).send(postData).promise();\n}\n\nfunction FanAPI() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_CONFIGURATION,\n _ref$sourceHeader = _ref.sourceHeader,\n sourceHeader = _ref$sourceHeader === undefined ? DEFAULT_CONFIGURATION.sourceHeader : _ref$sourceHeader,\n _ref$cacheDuration = _ref.cacheDuration,\n cacheDuration = _ref$cacheDuration === undefined ? DEFAULT_CONFIGURATION.cacheDuration : _ref$cacheDuration;\n\n if (!(this instanceof FanAPI)) {\n return new FanAPI({ sourceHeader: sourceHeader, cacheDuration: cacheDuration });\n }\n _sourceHeader = sourceHeader;\n _cacheDuration = cacheDuration;\n _storage = new _Storage2.default(_cacheDuration);\n return this;\n}\n\nFanAPI.prototype.getFanForId = function (id, callback) {\n return getFanForId(id).tap(function (fan) {\n if (typeof callback === 'function') callback(fan);\n });\n};\n\nFanAPI.prototype.getAutoStartForFanId = function (id, callback) {\n return getFanForId(id).then(function (fan) {\n var profile = fan && fan.profile;\n var settings = profile && profile.settings;\n var videoAutoStartValue = settings && settings.videoAutoStart && settings.videoAutoStart.value;\n return videoAutoStartValue !== '2';\n }).catch(function () {\n return true;\n }).tap(function (videoAutoStart) {\n if (typeof callback === 'function') {\n callback(videoAutoStart);\n }\n });\n};\n\nFanAPI.prototype.updateAutoStartForFanId = function (id, autoStart, callback) {\n var videoAutoStartValue = (autoStart ? '1' : '2').toString();\n\n var postData = {\n settings: {\n videoAutoStart: {\n value: videoAutoStartValue,\n lastUpdateSource: _sourceHeader,\n lastUpdateDate: Date.now()\n }\n }\n };\n\n return updateSettingsForFanId(id, postData).tap(function (err, res) {\n if (typeof callback === 'function') {\n callback(err, res);\n }\n }).catch(function () {\n return true;\n }).finally(function () {\n FanAPI.prototype.updateAutoStartCache(postData.settings);\n });\n};\n\nFanAPI.prototype.updateAutoStartCache = function (settings) {\n var videoAutoStart = settings.videoAutoStart;\n _storage.getFan().then(function (cache) {\n var fan = cache && cache.item;\n // const cacheExpired = (Date.now() - cache.timestamp > _cacheDuration * 60 * 1000);\n Object.keys(videoAutoStart).forEach(function (key) {\n fan.profile.settings.videoAutoStart[key] = videoAutoStart[key];\n });\n _storage.setFan({ item: fan, id: fan.id, timestamp: Date.now() });\n }).catch(function () {});\n};\n\nFanAPI.prototype.getUidsForFanId = function (id, callback) {\n function hasUid(preference) {\n return preference.metaData.team || preference.metaData.sport;\n }\n\n function collectUids(preference) {\n if (preference.metaData.team) {\n return preference.metaData.team.uid;\n } else if (preference.metaData.sport) {\n return preference.metaData.sport.uid;\n }\n return null;\n }\n\n return getFanForId(id).then(function (fan) {\n var preferences = fan && fan.preferences;\n return preferences.filter(hasUid).map(collectUids);\n }).catch(function () {\n return [];\n }).tap(function (uids) {\n if (typeof callback === 'function') {\n callback(uids);\n }\n });\n};\n\nexports.default = FanAPI;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 688 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {// From https://gist.github.com/epeli/11209665\n\nvar Promise = __webpack_require__(11);\n\n// So you can `var request = require(\"superagent-bluebird-promise\")`\nvar superagent = module.exports = __webpack_require__(192);\nvar Request = superagent.Request;\n\ntry {\n Promise.config({\n // Enable cancellation.\n cancellation: true\n });\n} catch (e) {\n console.warn([\n 'Enabling bluebird cancellation failed.',\n 'If you are using bluebird elsewhere in your application,',\n 'be sure to enable cancellation there as well.',\n 'Promise.config({cancellation: true});'].join(' ')\n );\n console.warn(e.stack);\n}\n// Create custom error type.\n// Create a new object, that prototypally inherits from the Error constructor.\nvar SuperagentPromiseError = function(message, originalError) {\n var stack;\n this.message = message;\n this.name = 'SuperagentPromiseError';\n this.originalError = originalError;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n stack = this.stack;\n }\n else {\n stack = (new Error(message)).stack;\n }\n\n if (Object.defineProperty) {\n Object.defineProperty(this, 'stack', {\n get: function() {\n if (this.originalError) {\n return stack + '\\nCaused by: ' + this.originalError.stack;\n }\n\n return stack;\n }\n });\n }\n};\n\nSuperagentPromiseError.prototype = new Error();\nSuperagentPromiseError.prototype.constructor = SuperagentPromiseError;\nsuperagent.SuperagentPromiseError = SuperagentPromiseError;\n\n/**\n * @namespace utils\n * @class Superagent\n */\n\n/**\n *\n * Add promise support for superagent/supertest\n *\n * Call .promise() to return promise for the request\n *\n * @method then\n * @return {Bluebird.Promise}\n */\nRequest.prototype.promise = function() {\n var req = this;\n var error;\n\n return new Promise(function(resolve, reject, onCancel) {\n req.end(function(err, res) {\n if (typeof res !== \"undefined\" && res !== null && res.status >= 400) {\n var msg = 'cannot ' + req.method + ' ' + req.url + ' (' + res.status + ')';\n error = new SuperagentPromiseError(msg);\n error.status = res.status;\n error.body = res.body;\n error.res = res;\n reject(error);\n } else if (err) {\n reject(new SuperagentPromiseError('Bad request', err));\n } else {\n resolve(res);\n }\n });\n\n if (typeof onCancel === 'function') {\n onCancel(function() {\n req.abort();\n });\n }\n });\n};\n\n/**\n *\n * Make superagent requests Promises ES6 conformant\n *\n * Call .then([onFulfilled], [onRejected]) to register callbacks\n *\n * @method then\n * @param {function} [onFulfilled]\n * @param {function} [onRejected]\n * @return {Bluebird.Promise}\n */\nRequest.prototype.then = function() {\n var promise = this.promise();\n return promise.then.apply(promise, arguments);\n};\n\n/**\n *\n * Make superagent requests Promises ES6 conformant\n *\n * Call .catch([onRejected]) to register callback\n *\n * @method catch\n * @param {function} [onRejected]\n * @return {Bluebird.Promise}\n */\nRequest.prototype.catch = function() {\n var promise = this.promise();\n return promise.catch.apply(promise, arguments);\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 689 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StorageType = exports.ESPN_FAN_STORAGE_KEY = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global espn window */\n\n\nvar _bluebird = __webpack_require__(11);\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// this is the key .com uses for local storage of fanapi data\nvar ESPN_FAN_STORAGE_KEY = exports.ESPN_FAN_STORAGE_KEY = 'fanapi_fan';\nvar StorageType = exports.StorageType = {\n ESPN: 'ESPN',\n LOCAL_STORAGE: 'LOCAL_STORAGE'\n};\n\nvar ls = {\n getItem: function getItem(key) {\n return _bluebird2.default.resolve(JSON.parse(global.localStorage.getItem(key)));\n },\n setItem: function setItem(key, value) {\n global.localStorage.setItem(key, JSON.stringify(value));\n }\n};\n\n/**\n * @class {Storage} - This class uses ESPN storage if available, and local storage if not\n */\n\nvar Storage = function () {\n /**\n * @constructor\n * @param {int} expiration - expiration of storage in minutes\n */\n function Storage() {\n var expiration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n\n _classCallCheck(this, Storage);\n\n this.expiration = expiration;\n // default to localstorage. we will infer storage type at the time [get/set]Fan is called\n this.storageType = StorageType.LOCAL_STORAGE;\n }\n\n /**\n * This function sets appropriate properties if ESPN storage is available. Does not set it twice if already determined.\n */\n\n\n _createClass(Storage, [{\n key: 'inferStorageType',\n value: function inferStorageType() {\n if (this.storageType !== StorageType.ESPN && window && window.espn && window.espn.storageFactory) {\n this.storageType = StorageType.ESPN;\n this.espnStorage = espn.storageFactory.getMostPermanent();\n }\n }\n }, {\n key: 'getFan',\n value: function getFan() {\n var _this = this;\n\n this.inferStorageType();\n if (this.storageType === StorageType.ESPN) {\n return new _bluebird2.default(function (resolve, reject) {\n var cache = _this.espnStorage.getItem(ESPN_FAN_STORAGE_KEY);\n var fan = cache && cache.item;\n if (fan) {\n // keep local storage in sync with espn storage\n ls.setItem(ESPN_FAN_STORAGE_KEY, {\n item: fan,\n id: fan.id,\n timestamp: Date.now()\n });\n resolve(cache);\n } else {\n reject(new Error('No item for key'));\n }\n });\n }\n return ls.getItem(ESPN_FAN_STORAGE_KEY);\n }\n\n /**\n * @param {object} fan - The fan to replace the current cache\n */\n\n }, {\n key: 'setFan',\n value: function setFan(fan) {\n this.inferStorageType();\n // always set local storage cache\n ls.setItem(ESPN_FAN_STORAGE_KEY, {\n item: fan.item,\n id: fan.id,\n timestamp: Date.now()\n });\n\n // only set espn storage if present\n if (this.storageType === StorageType.ESPN) {\n this.espnStorage.setItem(ESPN_FAN_STORAGE_KEY, {\n item: fan.item,\n id: fan && fan.id,\n expiresAt: new Date().getTime() + this.expiration * 60000\n });\n }\n }\n }]);\n\n return Storage;\n}();\n\nexports.default = Storage;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 690 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/**\n * generateCommerceFlowUrl - Returns a formatted url string used for DTC commerce. The `locale` is\n * only appended to the url if the country is `us` and the `lang` is either `en` or `es`.\n *\n * @param {object} urlsMap - External app-configurations object containing list of `PACKAGE.DEVICE_TYPE` urls\n * @param {array} packages - An array of entitlements (ex: ['ESPN_PLUS', 'ESPN_PLUS_NHL'])\n * @param {string} deviceType - String representing the Databag device type (ex: 'xbox', 'ps4')\n * @param {string} lang - String representing the language; default `en`\n * @param {string} country - String representing the country; default `US`\n *\n * @return {string} - Returns commerce url or an empty string\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function () {\n var urlsMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var packages = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var deviceType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var lang = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'en';\n var country = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'US';\n\n var packageKeys = packages;\n var packagesWithDevice = void 0;\n var locale = '';\n\n if (!urlsMap) {\n console.error('generateCommerceFlowUrl(): urlsMap is undefined, verify config file');\n return '';\n }\n\n // Priority set here since deviceType is defined\n if (typeof deviceType === 'string' && deviceType.trim() !== '' && packageKeys.length) {\n packagesWithDevice = packageKeys.map(function (pkg) {\n return pkg + '.' + deviceType.toLowerCase();\n });\n }\n\n if (Array.isArray(packagesWithDevice)) {\n packageKeys = packagesWithDevice;\n }\n\n var url = urlsMap[packageKeys[0]] || urlsMap.ESPN_PLUS;\n var shouldAppendLocale = url.indexOf('locale') === -1;\n // Add locale if it doesn't exist; only supporting US (domestic) locale for Spanish (es) and English (en)\n if (shouldAppendLocale && typeof country === 'string' && country.toLowerCase() === 'us' && (lang === 'en' || lang === 'es')) {\n locale = url.indexOf('?') !== -1 ? '&locale=' + lang + '_' + country : '?locale=' + lang + '_' + country;\n }\n\n return '' + url + locale;\n});\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 691 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 692 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* jslint esnext: true */\n\n\nvar src$core$$ = __webpack_require__(693), src$en$$ = __webpack_require__(698);\n\nsrc$core$$[\"default\"].__addLocaleData(src$en$$[\"default\"]);\nsrc$core$$[\"default\"].defaultLocale = 'en';\n\nexports[\"default\"] = src$core$$[\"default\"];\n\n//# sourceMappingURL=main.js.map\n\n/***/ }),\n/* 693 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\nvar src$utils$$ = __webpack_require__(336), src$es5$$ = __webpack_require__(694), src$compiler$$ = __webpack_require__(695), intl$messageformat$parser$$ = __webpack_require__(696);\nexports[\"default\"] = MessageFormat;\n\n// -- MessageFormat --------------------------------------------------------\n\nfunction MessageFormat(message, locales, formats) {\n // Parse string messages into an AST.\n var ast = typeof message === 'string' ?\n MessageFormat.__parse(message) : message;\n\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n formats = this._mergeFormats(MessageFormat.formats, formats);\n\n // Defined first because it's used to build the format pattern.\n src$es5$$.defineProperty(this, '_locale', {value: this._resolveLocale(locales)});\n\n // Compile the `ast` to a pattern that is highly optimized for repeated\n // `format()` invocations. **Note:** This passes the `locales` set provided\n // to the constructor instead of just the resolved locale.\n var pluralFn = this._findPluralRuleFunction(this._locale);\n var pattern = this._compilePattern(ast, locales, formats, pluralFn);\n\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var messageFormat = this;\n this.format = function (values) {\n try {\n return messageFormat._format(pattern, values);\n } catch (e) {\n if (e.variableId) {\n throw new Error(\n 'The intl string context variable \\'' + e.variableId + '\\'' +\n ' was not provided to the string \\'' + message + '\\''\n );\n } else {\n throw e;\n }\n }\n };\n}\n\n// Default format options used as the prototype of the `formats` provided to the\n// constructor. These are used when constructing the internal Intl.NumberFormat\n// and Intl.DateTimeFormat instances.\nsrc$es5$$.defineProperty(MessageFormat, 'formats', {\n enumerable: true,\n\n value: {\n number: {\n 'currency': {\n style: 'currency'\n },\n\n 'percent': {\n style: 'percent'\n }\n },\n\n date: {\n 'short': {\n month: 'numeric',\n day : 'numeric',\n year : '2-digit'\n },\n\n 'medium': {\n month: 'short',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'long': {\n month: 'long',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'full': {\n weekday: 'long',\n month : 'long',\n day : 'numeric',\n year : 'numeric'\n }\n },\n\n time: {\n 'short': {\n hour : 'numeric',\n minute: 'numeric'\n },\n\n 'medium': {\n hour : 'numeric',\n minute: 'numeric',\n second: 'numeric'\n },\n\n 'long': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n },\n\n 'full': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n }\n }\n }\n});\n\n// Define internal private properties for dealing with locale data.\nsrc$es5$$.defineProperty(MessageFormat, '__localeData__', {value: src$es5$$.objCreate(null)});\nsrc$es5$$.defineProperty(MessageFormat, '__addLocaleData', {value: function (data) {\n if (!(data && data.locale)) {\n throw new Error(\n 'Locale data provided to IntlMessageFormat is missing a ' +\n '`locale` property'\n );\n }\n\n MessageFormat.__localeData__[data.locale.toLowerCase()] = data;\n}});\n\n// Defines `__parse()` static method as an exposed private.\nsrc$es5$$.defineProperty(MessageFormat, '__parse', {value: intl$messageformat$parser$$[\"default\"].parse});\n\n// Define public `defaultLocale` property which defaults to English, but can be\n// set by the developer.\nsrc$es5$$.defineProperty(MessageFormat, 'defaultLocale', {\n enumerable: true,\n writable : true,\n value : undefined\n});\n\nMessageFormat.prototype.resolvedOptions = function () {\n // TODO: Provide anything else?\n return {\n locale: this._locale\n };\n};\n\nMessageFormat.prototype._compilePattern = function (ast, locales, formats, pluralFn) {\n var compiler = new src$compiler$$[\"default\"](locales, formats, pluralFn);\n return compiler.compile(ast);\n};\n\nMessageFormat.prototype._findPluralRuleFunction = function (locale) {\n var localeData = MessageFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find a `pluralRuleFunction` to return.\n while (data) {\n if (data.pluralRuleFunction) {\n return data.pluralRuleFunction;\n }\n\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n\n throw new Error(\n 'Locale data added to IntlMessageFormat is missing a ' +\n '`pluralRuleFunction` for :' + locale\n );\n};\n\nMessageFormat.prototype._format = function (pattern, values) {\n var result = '',\n i, len, part, id, value, err;\n\n for (i = 0, len = pattern.length; i < len; i += 1) {\n part = pattern[i];\n\n // Exist early for string parts.\n if (typeof part === 'string') {\n result += part;\n continue;\n }\n\n id = part.id;\n\n // Enforce that all required values are provided by the caller.\n if (!(values && src$utils$$.hop.call(values, id))) {\n err = new Error('A value must be provided for: ' + id);\n err.variableId = id;\n throw err;\n }\n\n value = values[id];\n\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (part.options) {\n result += this._format(part.getOption(value), values);\n } else {\n result += part.format(value);\n }\n }\n\n return result;\n};\n\nMessageFormat.prototype._mergeFormats = function (defaults, formats) {\n var mergedFormats = {},\n type, mergedType;\n\n for (type in defaults) {\n if (!src$utils$$.hop.call(defaults, type)) { continue; }\n\n mergedFormats[type] = mergedType = src$es5$$.objCreate(defaults[type]);\n\n if (formats && src$utils$$.hop.call(formats, type)) {\n src$utils$$.extend(mergedType, formats[type]);\n }\n }\n\n return mergedFormats;\n};\n\nMessageFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(MessageFormat.defaultLocale);\n\n var localeData = MessageFormat.__localeData__;\n var i, len, localeParts, data;\n\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n\n localeParts.pop();\n }\n }\n\n var defaultLocale = locales.pop();\n throw new Error(\n 'No locale data has been added to IntlMessageFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale\n );\n};\n\n//# sourceMappingURL=core.js.map\n\n/***/ }),\n/* 694 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\nvar src$utils$$ = __webpack_require__(336);\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!src$utils$$.hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (src$utils$$.hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nexports.defineProperty = defineProperty, exports.objCreate = objCreate;\n\n//# sourceMappingURL=es5.js.map\n\n/***/ }),\n/* 695 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\nexports[\"default\"] = Compiler;\n\nfunction Compiler(locales, formats, pluralFn) {\n this.locales = locales;\n this.formats = formats;\n this.pluralFn = pluralFn;\n}\n\nCompiler.prototype.compile = function (ast) {\n this.pluralStack = [];\n this.currentPlural = null;\n this.pluralNumberFormat = null;\n\n return this.compileMessage(ast);\n};\n\nCompiler.prototype.compileMessage = function (ast) {\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new Error('Message AST is not of type: \"messageFormatPattern\"');\n }\n\n var elements = ast.elements,\n pattern = [];\n\n var i, len, element;\n\n for (i = 0, len = elements.length; i < len; i += 1) {\n element = elements[i];\n\n switch (element.type) {\n case 'messageTextElement':\n pattern.push(this.compileMessageText(element));\n break;\n\n case 'argumentElement':\n pattern.push(this.compileArgument(element));\n break;\n\n default:\n throw new Error('Message element does not have a valid type');\n }\n }\n\n return pattern;\n};\n\nCompiler.prototype.compileMessageText = function (element) {\n // When this `element` is part of plural sub-pattern and its value contains\n // an unescaped '#', use a `PluralOffsetString` helper to properly output\n // the number with the correct offset in the string.\n if (this.currentPlural && /(^|[^\\\\])#/g.test(element.value)) {\n // Create a cache a NumberFormat instance that can be reused for any\n // PluralOffsetString instance in this message.\n if (!this.pluralNumberFormat) {\n this.pluralNumberFormat = new Intl.NumberFormat(this.locales);\n }\n\n return new PluralOffsetString(\n this.currentPlural.id,\n this.currentPlural.format.offset,\n this.pluralNumberFormat,\n element.value);\n }\n\n // Unescape the escaped '#'s in the message text.\n return element.value.replace(/\\\\#/g, '#');\n};\n\nCompiler.prototype.compileArgument = function (element) {\n var format = element.format;\n\n if (!format) {\n return new StringFormat(element.id);\n }\n\n var formats = this.formats,\n locales = this.locales,\n pluralFn = this.pluralFn,\n options;\n\n switch (format.type) {\n case 'numberFormat':\n options = formats.number[format.style];\n return {\n id : element.id,\n format: new Intl.NumberFormat(locales, options).format\n };\n\n case 'dateFormat':\n options = formats.date[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'timeFormat':\n options = formats.time[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'pluralFormat':\n options = this.compileOptions(element);\n return new PluralFormat(\n element.id, format.ordinal, format.offset, options, pluralFn\n );\n\n case 'selectFormat':\n options = this.compileOptions(element);\n return new SelectFormat(element.id, options);\n\n default:\n throw new Error('Message element does not have a valid format type');\n }\n};\n\nCompiler.prototype.compileOptions = function (element) {\n var format = element.format,\n options = format.options,\n optionsHash = {};\n\n // Save the current plural element, if any, then set it to a new value when\n // compiling the options sub-patterns. This conforms the spec's algorithm\n // for handling `\"#\"` syntax in message text.\n this.pluralStack.push(this.currentPlural);\n this.currentPlural = format.type === 'pluralFormat' ? element : null;\n\n var i, len, option;\n\n for (i = 0, len = options.length; i < len; i += 1) {\n option = options[i];\n\n // Compile the sub-pattern and save it under the options's selector.\n optionsHash[option.selector] = this.compileMessage(option.value);\n }\n\n // Pop the plural stack to put back the original current plural value.\n this.currentPlural = this.pluralStack.pop();\n\n return optionsHash;\n};\n\n// -- Compiler Helper Classes --------------------------------------------------\n\nfunction StringFormat(id) {\n this.id = id;\n}\n\nStringFormat.prototype.format = function (value) {\n if (!value && typeof value !== 'number') {\n return '';\n }\n\n return typeof value === 'string' ? value : String(value);\n};\n\nfunction PluralFormat(id, useOrdinal, offset, options, pluralFn) {\n this.id = id;\n this.useOrdinal = useOrdinal;\n this.offset = offset;\n this.options = options;\n this.pluralFn = pluralFn;\n}\n\nPluralFormat.prototype.getOption = function (value) {\n var options = this.options;\n\n var option = options['=' + value] ||\n options[this.pluralFn(value - this.offset, this.useOrdinal)];\n\n return option || options.other;\n};\n\nfunction PluralOffsetString(id, offset, numberFormat, string) {\n this.id = id;\n this.offset = offset;\n this.numberFormat = numberFormat;\n this.string = string;\n}\n\nPluralOffsetString.prototype.format = function (value) {\n var number = this.numberFormat.format(value - this.offset);\n\n return this.string\n .replace(/(^|[^\\\\])#/g, '$1' + number)\n .replace(/\\\\#/g, '#');\n};\n\nfunction SelectFormat(id, options) {\n this.id = id;\n this.options = options;\n}\n\nSelectFormat.prototype.getOption = function (value) {\n var options = this.options;\n return options[value] || options.other;\n};\n\n//# sourceMappingURL=compiler.js.map\n\n/***/ }),\n/* 696 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports = module.exports = __webpack_require__(697)['default'];\nexports['default'] = exports;\n\n\n/***/ }),\n/* 697 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports[\"default\"] = (function() {\n \"use strict\";\n\n /*\n * Generated by PEG.js 0.9.0.\n *\n * http://pegjs.org/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n }\n\n peg$subclass(peg$SyntaxError, Error);\n\n function peg$parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n parser = this,\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = function(elements) {\n return {\n type : 'messageFormatPattern',\n elements: elements,\n location: location()\n };\n },\n peg$c1 = function(text) {\n var string = '',\n i, j, outerLen, inner, innerLen;\n\n for (i = 0, outerLen = text.length; i < outerLen; i += 1) {\n inner = text[i];\n\n for (j = 0, innerLen = inner.length; j < innerLen; j += 1) {\n string += inner[j];\n }\n }\n\n return string;\n },\n peg$c2 = function(messageText) {\n return {\n type : 'messageTextElement',\n value: messageText,\n location: location()\n };\n },\n peg$c3 = /^[^ \\t\\n\\r,.+={}#]/,\n peg$c4 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}#]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}#]\" },\n peg$c5 = \"{\",\n peg$c6 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c7 = \",\",\n peg$c8 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c9 = \"}\",\n peg$c10 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c11 = function(id, format) {\n return {\n type : 'argumentElement',\n id : id,\n format: format && format[2],\n location: location()\n };\n },\n peg$c12 = \"number\",\n peg$c13 = { type: \"literal\", value: \"number\", description: \"\\\"number\\\"\" },\n peg$c14 = \"date\",\n peg$c15 = { type: \"literal\", value: \"date\", description: \"\\\"date\\\"\" },\n peg$c16 = \"time\",\n peg$c17 = { type: \"literal\", value: \"time\", description: \"\\\"time\\\"\" },\n peg$c18 = function(type, style) {\n return {\n type : type + 'Format',\n style: style && style[2],\n location: location()\n };\n },\n peg$c19 = \"plural\",\n peg$c20 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n peg$c21 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: false,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options,\n location: location()\n };\n },\n peg$c22 = \"selectordinal\",\n peg$c23 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n peg$c24 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: true,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options,\n location: location()\n }\n },\n peg$c25 = \"select\",\n peg$c26 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n peg$c27 = function(options) {\n return {\n type : 'selectFormat',\n options: options,\n location: location()\n };\n },\n peg$c28 = \"=\",\n peg$c29 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c30 = function(selector, pattern) {\n return {\n type : 'optionalFormatPattern',\n selector: selector,\n value : pattern,\n location: location()\n };\n },\n peg$c31 = \"offset:\",\n peg$c32 = { type: \"literal\", value: \"offset:\", description: \"\\\"offset:\\\"\" },\n peg$c33 = function(number) {\n return number;\n },\n peg$c34 = function(offset, options) {\n return {\n type : 'pluralFormat',\n offset : offset,\n options: options,\n location: location()\n };\n },\n peg$c35 = { type: \"other\", description: \"whitespace\" },\n peg$c36 = /^[ \\t\\n\\r]/,\n peg$c37 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n peg$c38 = { type: \"other\", description: \"optionalWhitespace\" },\n peg$c39 = /^[0-9]/,\n peg$c40 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c41 = /^[0-9a-f]/i,\n peg$c42 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n peg$c43 = \"0\",\n peg$c44 = { type: \"literal\", value: \"0\", description: \"\\\"0\\\"\" },\n peg$c45 = /^[1-9]/,\n peg$c46 = { type: \"class\", value: \"[1-9]\", description: \"[1-9]\" },\n peg$c47 = function(digits) {\n return parseInt(digits, 10);\n },\n peg$c48 = /^[^{}\\\\\\0-\\x1F \\t\\n\\r]/,\n peg$c49 = { type: \"class\", value: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\", description: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\" },\n peg$c50 = \"\\\\\\\\\",\n peg$c51 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n peg$c52 = function() { return '\\\\'; },\n peg$c53 = \"\\\\#\",\n peg$c54 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n peg$c55 = function() { return '\\\\#'; },\n peg$c56 = \"\\\\{\",\n peg$c57 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n peg$c58 = function() { return '\\u007B'; },\n peg$c59 = \"\\\\}\",\n peg$c60 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n peg$c61 = function() { return '\\u007D'; },\n peg$c62 = \"\\\\u\",\n peg$c63 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n peg$c64 = function(digits) {\n return String.fromCharCode(parseInt(digits, 16));\n },\n peg$c65 = function(chars) { return chars.join(''); },\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function error(message) {\n throw peg$buildException(\n message,\n null,\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos],\n p, ch;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n seenCR: details.seenCR\n };\n\n while (p < pos) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, found, location) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0100-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1000-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new peg$SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n var s0;\n\n s0 = peg$parsemessageFormatPattern();\n\n return s0;\n }\n\n function peg$parsemessageFormatPattern() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsemessageFormatElement();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsemessageFormatElement();\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsemessageFormatElement() {\n var s0;\n\n s0 = peg$parsemessageTextElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseargumentElement();\n }\n\n return s0;\n }\n\n function peg$parsemessageText() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsews();\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parsemessageTextElement() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsemessageText();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseargument() {\n var s0, s1, s2;\n\n s0 = peg$parsenumber();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c3.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c3.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseargumentElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargument();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s6 = peg$c7;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseelementFormat();\n if (s8 !== peg$FAILED) {\n s6 = [s6, s7, s8];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c9;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseelementFormat() {\n var s0;\n\n s0 = peg$parsesimpleFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepluralFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectOrdinalFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectFormat();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsesimpleFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c14) {\n s1 = peg$c14;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c16) {\n s1 = peg$c16;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsechars();\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepluralFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c19) {\n s1 = peg$c19;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselectOrdinalFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 13) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 13;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselectFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c25) {\n s1 = peg$c25;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseoptionalFormatPattern();\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseoptionalFormatPattern();\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselector() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s2 = peg$c28;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsechars();\n }\n\n return s0;\n }\n\n function peg$parseoptionalFormatPattern() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseselector();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c5;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessageFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c9;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseoffset() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c33(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepluralStyle() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseoffset();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseoptionalFormatPattern();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseoptionalFormatPattern();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c34(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsews() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsews();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsews();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n\n return s0;\n }\n\n function peg$parsehexDigit() {\n var s0;\n\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 48) {\n s1 = peg$c43;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n s2 = peg$currPos;\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsedigit();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsedigit();\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c47(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n if (peg$c48.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c50) {\n s1 = peg$c50;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c52();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c53) {\n s1 = peg$c53;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c55();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c56) {\n s1 = peg$c56;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c58();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c59) {\n s1 = peg$c59;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c60); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c61();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c62) {\n s1 = peg$c62;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n s4 = peg$parsehexDigit();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsehexDigit();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsehexDigit();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsehexDigit();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = input.substring(s2, peg$currPos);\n } else {\n s2 = s3;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c64(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsechars() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechar();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechar();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c65(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(\n null,\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n }\n\n return {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n };\n})();\n\n//# sourceMappingURL=parser.js.map\n\n/***/ }),\n/* 698 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// GENERATED FILE\n\nexports[\"default\"] = {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"}};\n\n//# sourceMappingURL=en.js.map\n\n/***/ }),\n/* 699 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 700 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* jshint node:true */\n\n\n\nvar IntlRelativeFormat = __webpack_require__(701)['default'];\n\n// Add all locale data to `IntlRelativeFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\n__webpack_require__(706);\n\n// Re-export `IntlRelativeFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlRelativeFormat;\nexports['default'] = exports;\n\n\n/***/ }),\n/* 701 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/* jslint esnext: true */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = __webpack_require__(702);\nvar en_1 = __webpack_require__(705);\ncore_1.default.__addLocaleData(en_1.default);\ncore_1.default.defaultLocale = 'en';\nexports.default = core_1.default;\n//# sourceMappingURL=main.js.map\n\n/***/ }),\n/* 702 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\nvar intl_messageformat_1 = __webpack_require__(335);\nvar diff_1 = __webpack_require__(703);\nvar es5_1 = __webpack_require__(704);\nexports.default = RelativeFormat;\n// -----------------------------------------------------------------------------\nvar FIELDS = [\n 'second', 'second-short',\n 'minute', 'minute-short',\n 'hour', 'hour-short',\n 'day', 'day-short',\n 'month', 'month-short',\n 'year', 'year-short'\n];\nvar STYLES = ['best fit', 'numeric'];\n// -- RelativeFormat -----------------------------------------------------------\nfunction RelativeFormat(locales, options) {\n options = options || {};\n // Make a copy of `locales` if it's an array, so that it doesn't change\n // since it's used lazily.\n if (es5_1.isArray(locales)) {\n locales = locales.concat();\n }\n es5_1.defineProperty(this, '_locale', { value: this._resolveLocale(locales) });\n es5_1.defineProperty(this, '_options', { value: {\n style: this._resolveStyle(options.style),\n units: this._isValidUnits(options.units) && options.units\n } });\n es5_1.defineProperty(this, '_locales', { value: locales });\n es5_1.defineProperty(this, '_fields', { value: this._findFields(this._locale) });\n es5_1.defineProperty(this, '_messages', { value: es5_1.objCreate(null) });\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var relativeFormat = this;\n this.format = function format(date, options) {\n return relativeFormat._format(date, options);\n };\n}\n// Define internal private properties for dealing with locale data.\nes5_1.defineProperty(RelativeFormat, '__localeData__', { value: es5_1.objCreate(null) });\nes5_1.defineProperty(RelativeFormat, '__addLocaleData', { value: function () {\n for (var i = 0; i < arguments.length; i++) {\n var datum = arguments[i];\n if (!(datum && datum.locale)) {\n throw new Error('Locale data provided to IntlRelativeFormat is missing a ' +\n '`locale` property value');\n }\n RelativeFormat.__localeData__[datum.locale.toLowerCase()] = datum;\n // Add data to IntlMessageFormat.\n intl_messageformat_1.default.__addLocaleData(datum);\n }\n } });\n// Define public `defaultLocale` property which can be set by the developer, or\n// it will be set when the first RelativeFormat instance is created by\n// leveraging the resolved locale from `Intl`.\nes5_1.defineProperty(RelativeFormat, 'defaultLocale', {\n enumerable: true,\n writable: true,\n value: undefined\n});\n// Define public `thresholds` property which can be set by the developer, and\n// defaults to relative time thresholds from moment.js.\nes5_1.defineProperty(RelativeFormat, 'thresholds', {\n enumerable: true,\n value: {\n second: 45, 'second-short': 45,\n minute: 45, 'minute-short': 45,\n hour: 22, 'hour-short': 22,\n day: 26, 'day-short': 26,\n month: 11, 'month-short': 11 // months to year\n }\n});\nRelativeFormat.prototype.resolvedOptions = function () {\n return {\n locale: this._locale,\n style: this._options.style,\n units: this._options.units\n };\n};\nRelativeFormat.prototype._compileMessage = function (units) {\n // `this._locales` is the original set of locales the user specified to the\n // constructor, while `this._locale` is the resolved root locale.\n var locales = this._locales;\n var resolvedLocale = this._locale;\n var field = this._fields[units];\n var relativeTime = field.relativeTime;\n var future = '';\n var past = '';\n var i;\n for (i in relativeTime.future) {\n if (relativeTime.future.hasOwnProperty(i)) {\n future += ' ' + i + ' {' +\n relativeTime.future[i].replace('{0}', '#') + '}';\n }\n }\n for (i in relativeTime.past) {\n if (relativeTime.past.hasOwnProperty(i)) {\n past += ' ' + i + ' {' +\n relativeTime.past[i].replace('{0}', '#') + '}';\n }\n }\n var message = '{when, select, future {{0, plural, ' + future + '}}' +\n 'past {{0, plural, ' + past + '}}}';\n // Create the synthetic IntlMessageFormat instance using the original\n // locales value specified by the user when constructing the the parent\n // IntlRelativeFormat instance.\n return new intl_messageformat_1.default(message, locales);\n};\nRelativeFormat.prototype._getMessage = function (units) {\n var messages = this._messages;\n // Create a new synthetic message based on the locale data from CLDR.\n if (!messages[units]) {\n messages[units] = this._compileMessage(units);\n }\n return messages[units];\n};\nRelativeFormat.prototype._getRelativeUnits = function (diff, units) {\n var field = this._fields[units];\n if (field.relative) {\n return field.relative[diff];\n }\n};\nRelativeFormat.prototype._findFields = function (locale) {\n var localeData = RelativeFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find `fields` to return.\n while (data) {\n if (data.fields) {\n return data.fields;\n }\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n throw new Error('Locale data added to IntlRelativeFormat is missing `fields` for :' +\n locale);\n};\nRelativeFormat.prototype._format = function (date, options) {\n var now = options && options.now !== undefined ? options.now : es5_1.dateNow();\n if (date === undefined) {\n date = now;\n }\n // Determine if the `date` and optional `now` values are valid, and throw a\n // similar error to what `Intl.DateTimeFormat#format()` would throw.\n if (!isFinite(now)) {\n throw new RangeError('The `now` option provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.');\n }\n if (!isFinite(date)) {\n throw new RangeError('The date value provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.');\n }\n var diffReport = diff_1.default(now, date);\n var units = this._options.units || this._selectUnits(diffReport);\n var diffInUnits = diffReport[units];\n if (this._options.style !== 'numeric') {\n var relativeUnits = this._getRelativeUnits(diffInUnits, units);\n if (relativeUnits) {\n return relativeUnits;\n }\n }\n return this._getMessage(units).format({\n '0': Math.abs(diffInUnits),\n when: diffInUnits < 0 ? 'past' : 'future'\n });\n};\nRelativeFormat.prototype._isValidUnits = function (units) {\n if (!units || es5_1.arrIndexOf.call(FIELDS, units) >= 0) {\n return true;\n }\n if (typeof units === 'string') {\n var suggestion = /s$/.test(units) && units.substr(0, units.length - 1);\n if (suggestion && es5_1.arrIndexOf.call(FIELDS, suggestion) >= 0) {\n throw new Error('\"' + units + '\" is not a valid IntlRelativeFormat `units` ' +\n 'value, did you mean: ' + suggestion);\n }\n }\n throw new Error('\"' + units + '\" is not a valid IntlRelativeFormat `units` value, it ' +\n 'must be one of: \"' + FIELDS.join('\", \"') + '\"');\n};\nRelativeFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(RelativeFormat.defaultLocale);\n var localeData = RelativeFormat.__localeData__;\n var i, len, localeParts, data;\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n localeParts.pop();\n }\n }\n var defaultLocale = locales.pop();\n throw new Error('No locale data has been added to IntlRelativeFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale);\n};\nRelativeFormat.prototype._resolveStyle = function (style) {\n // Default to \"best fit\" style.\n if (!style) {\n return STYLES[0];\n }\n if (es5_1.arrIndexOf.call(STYLES, style) >= 0) {\n return style;\n }\n throw new Error('\"' + style + '\" is not a valid IntlRelativeFormat `style` value, it ' +\n 'must be one of: \"' + STYLES.join('\", \"') + '\"');\n};\nRelativeFormat.prototype._selectUnits = function (diffReport) {\n var i, l, units;\n var fields = FIELDS.filter(function (field) {\n return field.indexOf('-short') < 1;\n });\n for (i = 0, l = fields.length; i < l; i += 1) {\n units = fields[i];\n if (Math.abs(diffReport[units]) < RelativeFormat.thresholds[units]) {\n break;\n }\n }\n return units;\n};\n//# sourceMappingURL=core.js.map\n\n/***/ }),\n/* 703 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\nvar round = Math.round;\nfunction daysToYears(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n return days * 400 / 146097;\n}\n// Thanks to date-fns\n// https://github.com/date-fns/date-fns\n// MIT © Sasha Koss\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction startOfDay(dirtyDate) {\n var date = new Date(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() -\n startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n var timestampRight = startOfDayRight.getTime() -\n startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}\nfunction default_1(from, to) {\n // Convert to ms timestamps.\n from = +from;\n to = +to;\n var millisecond = round(to - from), second = round(millisecond / 1000), minute = round(second / 60), hour = round(minute / 60);\n // We expect a more precision in rounding when dealing with\n // days as it feels wrong when something happended 13 hours ago and\n // is regarded as \"yesterday\" even if the time was this morning.\n var day = differenceInCalendarDays(to, from);\n var week = round(day / 7);\n var rawYears = daysToYears(day), month = round(rawYears * 12), year = round(rawYears);\n return {\n millisecond: millisecond,\n second: second,\n 'second-short': second,\n minute: minute,\n 'minute-short': minute,\n hour: hour,\n 'hour-short': hour,\n day: day,\n 'day-short': day,\n week: week,\n 'week-short': week,\n month: month,\n 'month-short': month,\n year: year,\n 'year-short': year\n };\n}\nexports.default = default_1;\n//# sourceMappingURL=diff.js.map\n\n/***/ }),\n/* 704 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\nvar hop = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\nvar realDefineProp = (function () {\n try {\n return !!Object.defineProperty({}, 'a', {});\n }\n catch (e) {\n return false;\n }\n})();\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n }\n else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n };\nexports.defineProperty = defineProperty;\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n function F() { }\n F.prototype = proto;\n obj = new F();\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n return obj;\n};\nexports.objCreate = objCreate;\nvar arrIndexOf = Array.prototype.indexOf || function (search, fromIndex) {\n /*jshint validthis:true */\n var arr = this;\n if (!arr.length) {\n return -1;\n }\n for (var i = fromIndex || 0, max = arr.length; i < max; i++) {\n if (arr[i] === search) {\n return i;\n }\n }\n return -1;\n};\nexports.arrIndexOf = arrIndexOf;\nvar isArray = Array.isArray || function (obj) {\n return toString.call(obj) === '[object Array]';\n};\nexports.isArray = isArray;\nvar dateNow = Date.now || function () {\n return new Date().getTime();\n};\nexports.dateNow = dateNow;\n//# sourceMappingURL=es5.js.map\n\n/***/ }),\n/* 705 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* @generated */\nexports.default = { \"locale\": \"en\", \"pluralRuleFunction\": function (n, ord) {\n var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord)\n return (n10 == 1 && n100 != 11) ? 'one'\n : (n10 == 2 && n100 != 12) ? 'two'\n : (n10 == 3 && n100 != 13) ? 'few'\n : 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n }, \"fields\": { \"year\": { \"displayName\": \"year\", \"relative\": { \"0\": \"this year\", \"1\": \"next year\", \"-1\": \"last year\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} year\", \"other\": \"in {0} years\" }, \"past\": { \"one\": \"{0} year ago\", \"other\": \"{0} years ago\" } } }, \"year-short\": { \"displayName\": \"yr.\", \"relative\": { \"0\": \"this yr.\", \"1\": \"next yr.\", \"-1\": \"last yr.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} yr.\", \"other\": \"in {0} yr.\" }, \"past\": { \"one\": \"{0} yr. ago\", \"other\": \"{0} yr. ago\" } } }, \"month\": { \"displayName\": \"month\", \"relative\": { \"0\": \"this month\", \"1\": \"next month\", \"-1\": \"last month\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} month\", \"other\": \"in {0} months\" }, \"past\": { \"one\": \"{0} month ago\", \"other\": \"{0} months ago\" } } }, \"month-short\": { \"displayName\": \"mo.\", \"relative\": { \"0\": \"this mo.\", \"1\": \"next mo.\", \"-1\": \"last mo.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} mo.\", \"other\": \"in {0} mo.\" }, \"past\": { \"one\": \"{0} mo. ago\", \"other\": \"{0} mo. ago\" } } }, \"week\": { \"displayName\": \"week\", \"relativePeriod\": \"the week of {0}\", \"relative\": { \"0\": \"this week\", \"1\": \"next week\", \"-1\": \"last week\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} week\", \"other\": \"in {0} weeks\" }, \"past\": { \"one\": \"{0} week ago\", \"other\": \"{0} weeks ago\" } } }, \"week-short\": { \"displayName\": \"wk.\", \"relativePeriod\": \"the week of {0}\", \"relative\": { \"0\": \"this wk.\", \"1\": \"next wk.\", \"-1\": \"last wk.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} wk.\", \"other\": \"in {0} wk.\" }, \"past\": { \"one\": \"{0} wk. ago\", \"other\": \"{0} wk. ago\" } } }, \"day\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"day-short\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"hour\": { \"displayName\": \"hour\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hour\", \"other\": \"in {0} hours\" }, \"past\": { \"one\": \"{0} hour ago\", \"other\": \"{0} hours ago\" } } }, \"hour-short\": { \"displayName\": \"hr.\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hr.\", \"other\": \"in {0} hr.\" }, \"past\": { \"one\": \"{0} hr. ago\", \"other\": \"{0} hr. ago\" } } }, \"minute\": { \"displayName\": \"minute\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} minute\", \"other\": \"in {0} minutes\" }, \"past\": { \"one\": \"{0} minute ago\", \"other\": \"{0} minutes ago\" } } }, \"minute-short\": { \"displayName\": \"min.\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} min.\", \"other\": \"in {0} min.\" }, \"past\": { \"one\": \"{0} min. ago\", \"other\": \"{0} min. ago\" } } }, \"second\": { \"displayName\": \"second\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} second\", \"other\": \"in {0} seconds\" }, \"past\": { \"one\": \"{0} second ago\", \"other\": \"{0} seconds ago\" } } }, \"second-short\": { \"displayName\": \"sec.\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} sec.\", \"other\": \"in {0} sec.\" }, \"past\": { \"one\": \"{0} sec. ago\", \"other\": \"{0} sec. ago\" } } } } };\n//# sourceMappingURL=en.js.map\n\n/***/ }),\n/* 706 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 707 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = __webpack_require__(179);\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n\n\n/***/ }),\n/* 708 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* eslint-disable */\n/**\n * source: https://github.com/jfriend00/docReady\n * @param {String} funcName function name\n * @param {Object} baseObj scope\n * @return {Function} document ready\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = ((function (funcName, baseObj) {\n funcName = funcName || 'docReady';\n baseObj = baseObj || global.window;\n var readyList = [];\n var readyFired = false;\n var readyEventHandlersInstalled = false;\n\n function ready() {\n if (!readyFired) {\n readyFired = true;\n for (var i = 0; i < readyList.length; i++) {\n readyList[i].fn.call(window, readyList[i].ctx);\n }\n readyList = [];\n }\n }\n\n function readyStateChange() {\n if (document.readyState === 'complete') {\n ready();\n }\n }\n\n return function (callback, context) {\n if (readyFired) {\n setTimeout(function () {\n callback(context);\n }, 1);\n return;\n } else {\n readyList.push({ fn: callback, ctx: context });\n }\n if (document.readyState === 'complete' || !document.attachEvent && document.readyState === 'interactive') {\n setTimeout(ready, 1);\n } else if (!readyEventHandlersInstalled) {\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', ready, false);\n window.addEventListener('load', ready, false);\n } else {\n document.attachEvent('onreadystatechange', readyStateChange);\n window.attachEvent('onload', ready);\n }\n readyEventHandlersInstalled = true;\n }\n };\n})('docReady', global.window));\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(24)))\n\n/***/ }),\n/* 709 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nfunction createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch;\n var getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexports['default'] = thunk;\n\n/***/ }),\n/* 710 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export START_GET_NETWORKS */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return COMPLETE_GET_NETWORKS; });\n/* unused harmony export startGetNetworks */\n/* unused harmony export completeGetNetworks */\n/* unused harmony export fetchNetworks */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__apiAction__ = __webpack_require__(55);\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n\n\nvar START_GET_NETWORKS = 'START_GET_NETWORKS';\nvar COMPLETE_GET_NETWORKS = 'COMPLETE_GET_NETWORKS';\n\nfunction startGetNetworks() {\n return {\n type: START_GET_NETWORKS,\n startTime: Date.now()\n };\n}\n\nfunction completeGetNetworks(networks) {\n return {\n type: COMPLETE_GET_NETWORKS,\n completeTime: Date.now(),\n networks: networks\n };\n}\n\nfunction fetchNetworks() {\n var _this = this;\n\n return function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(dispatch) {\n var networks, response;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n dispatch(startGetNetworks());\n\n networks = [];\n _context.prev = 2;\n _context.next = 5;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_0__apiAction__[\"k\" /* graphql */])('getNetworks'));\n\n case 5:\n response = _context.sent;\n\n networks = response.data.networks;\n _context.next = 12;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context['catch'](2);\n\n console.error(_context.t0);\n\n case 12:\n\n dispatch(completeGetNetworks(networks));\n\n return _context.abrupt('return', networks);\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this, [[2, 9]]);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 711 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFlatten = __webpack_require__(285),\n map = __webpack_require__(712);\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n\n\n/***/ }),\n/* 712 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayMap = __webpack_require__(134),\n baseIteratee = __webpack_require__(114),\n baseMap = __webpack_require__(713),\n isArray = __webpack_require__(32);\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n\n\n/***/ }),\n/* 713 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseEach = __webpack_require__(340),\n isArrayLike = __webpack_require__(51);\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n\n\n/***/ }),\n/* 714 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFor = __webpack_require__(341),\n keys = __webpack_require__(140);\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n/***/ }),\n/* 715 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n\n/***/ }),\n/* 716 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArrayLike = __webpack_require__(51);\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n\n\n/***/ }),\n/* 717 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createFind = __webpack_require__(718),\n findIndex = __webpack_require__(208);\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n\n\n/***/ }),\n/* 718 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIteratee = __webpack_require__(114),\n isArrayLike = __webpack_require__(51),\n keys = __webpack_require__(140);\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n\n\n/***/ }),\n/* 719 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseMerge = __webpack_require__(720),\n createAssigner = __webpack_require__(733);\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n\n\n/***/ }),\n/* 720 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(209),\n assignMergeValue = __webpack_require__(342),\n baseFor = __webpack_require__(341),\n baseMergeDeep = __webpack_require__(721),\n isObject = __webpack_require__(35),\n keysIn = __webpack_require__(345),\n safeGet = __webpack_require__(344);\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n\n\n/***/ }),\n/* 721 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignMergeValue = __webpack_require__(342),\n cloneBuffer = __webpack_require__(722),\n cloneTypedArray = __webpack_require__(723),\n copyArray = __webpack_require__(725),\n initCloneObject = __webpack_require__(726),\n isArguments = __webpack_require__(112),\n isArray = __webpack_require__(32),\n isArrayLikeObject = __webpack_require__(303),\n isBuffer = __webpack_require__(141),\n isFunction = __webpack_require__(196),\n isObject = __webpack_require__(35),\n isPlainObject = __webpack_require__(728),\n isTypedArray = __webpack_require__(142),\n safeGet = __webpack_require__(344),\n toPlainObject = __webpack_require__(729);\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n\n\n/***/ }),\n/* 722 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(39);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(108)(module)))\n\n/***/ }),\n/* 723 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar cloneArrayBuffer = __webpack_require__(724);\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n\n/***/ }),\n/* 724 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Uint8Array = __webpack_require__(312);\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n\n\n/***/ }),\n/* 725 */\n/***/ (function(module, exports) {\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n/***/ }),\n/* 726 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseCreate = __webpack_require__(727),\n getPrototype = __webpack_require__(343),\n isPrototype = __webpack_require__(137);\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n\n\n/***/ }),\n/* 727 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(35);\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n\n\n/***/ }),\n/* 728 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(71),\n getPrototype = __webpack_require__(343),\n isObjectLike = __webpack_require__(59);\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n\n\n/***/ }),\n/* 729 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar copyObject = __webpack_require__(730),\n keysIn = __webpack_require__(345);\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n\n/***/ }),\n/* 730 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(282),\n baseAssignValue = __webpack_require__(135);\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n\n\n/***/ }),\n/* 731 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(35),\n isPrototype = __webpack_require__(137),\n nativeKeysIn = __webpack_require__(732);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n\n\n/***/ }),\n/* 732 */\n/***/ (function(module, exports) {\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n\n\n/***/ }),\n/* 733 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseRest = __webpack_require__(302),\n isIterateeCall = __webpack_require__(323);\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n/***/ }),\n/* 734 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__FeedsSelectorAuthPill__ = __webpack_require__(735);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable max-len */\n\n\n\nvar isStreamStatus = function isStreamStatus(status, type) {\n return typeof status === 'string' && status.trim() !== '' && typeof type === 'string' && type.trim() !== '' && status.trim().toLowerCase() === type.trim().toLowerCase();\n};\n\nvar getDisplayTimeMetaData = function getDisplayTimeMetaData(_ref) {\n var status = _ref.status,\n duration = _ref.duration,\n time = _ref.time;\n\n var displayTime = null;\n var displayClass = '';\n var STATUS_TYPES = {\n LIVE: 'live',\n UPCOMING: 'upcoming',\n REPLAY: 'replay'\n };\n\n if (isStreamStatus(status, STATUS_TYPES.LIVE)) {\n displayTime = STATUS_TYPES.LIVE.toUpperCase();\n displayClass = STATUS_TYPES.LIVE;\n } else if (isStreamStatus(status, STATUS_TYPES.UPCOMING)) {\n displayTime = '' + time;\n } else if (isStreamStatus(status, STATUS_TYPES.REPLAY)) {\n displayTime = duration;\n }\n\n return {\n displayTime: displayTime,\n displayClass: displayClass\n };\n};\n\nvar findMatchingStreamById = function findMatchingStreamById(streamId) {\n var streamsList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var matchingStream = void 0;\n\n if (Array.isArray(streamsList) && streamsList.length > 0 && streamId) {\n streamsList.some(function (elem) {\n if (Array.isArray(elem.contents) && elem.contents.length > 0) {\n matchingStream = elem.contents.filter(function (stream) {\n return typeof stream.id === 'string' && stream.id === streamId;\n })[0];\n }\n\n if (matchingStream) {\n return true;\n }\n\n return false;\n });\n }\n\n return matchingStream;\n};\n\nvar FeedsSelector = function (_PureComponent) {\n _inherits(FeedsSelector, _PureComponent);\n\n function FeedsSelector(props) {\n _classCallCheck(this, FeedsSelector);\n\n var _this = _possibleConstructorReturn(this, (FeedsSelector.__proto__ || Object.getPrototypeOf(FeedsSelector)).call(this, props));\n\n _this.onClick = _this.onClick.bind(_this);\n _this.closeModal = _this.closeModal.bind(_this);\n return _this;\n }\n\n _createClass(FeedsSelector, [{\n key: 'onClick',\n value: function onClick(event) {\n console.log('Feeds Selector onClick triggered:', this.props, streamId); // eslint-disable-line\n var streamId = event.currentTarget.getAttribute('data-id');\n var feeds = this.props.feeds;\n\n var selectedStream = findMatchingStreamById(streamId, feeds);\n if (selectedStream && !selectedStream.selected && !selectedStream.blackoutText) {\n this.props.onClick(selectedStream.streams[0]);\n this.props.onClose();\n } else {\n console.warn('Will not play stream, current stream matches selected stream');\n }\n }\n }, {\n key: 'closeModal',\n value: function closeModal() {\n this.props.onClose();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n title = _props.title,\n feeds = _props.feeds,\n userAuth = _props.userAuth;\n\n\n var feedItems = feeds.length > 0 && feeds.map(function (_ref2) {\n var name = _ref2.name,\n contents = _ref2.contents;\n\n var feedEntries = null;\n\n if (Array.isArray(contents) && contents.length > 0) {\n feedEntries = contents.map(function (_ref3) {\n var id = _ref3.id,\n imageHref = _ref3.imageHref,\n streamName = _ref3.name,\n subtitle = _ref3.subtitle,\n status = _ref3.status,\n duration = _ref3.duration,\n time = _ref3.time,\n playbackErrorMessage = _ref3.playbackErrorMessage,\n selected = _ref3.selected,\n _ref3$authTypes = _ref3.authTypes,\n authTypes = _ref3$authTypes === undefined ? [] : _ref3$authTypes,\n _ref3$packages = _ref3.packages,\n packages = _ref3$packages === undefined ? [] : _ref3$packages;\n\n var timeMeta = getDisplayTimeMetaData({ status: status, duration: duration, time: time });\n var selectedClass = selected ? 'selected' : '';\n\n return _jsx('div', {\n className: 'StreamingCard ' + selectedClass,\n 'data-id': id,\n onClick: _this2.onClick\n }, void 0, _jsx('div', {\n className: 'StreamingCard__MediaWrapper'\n }, void 0, imageHref && _jsx('img', {\n src: imageHref,\n alt: streamName\n }), _jsx('div', {\n className: 'StreamingCard__Media__Play ' + timeMeta.displayClass\n }), _jsx('div', {\n className: 'StreamingCard__Media__Pill ' + timeMeta.displayClass\n }, void 0, timeMeta.displayTime), selected && _jsx('div', {\n className: 'StreamingCard__NowPlaying'\n }, void 0, 'Now Playing')), _jsx('div', {\n className: 'StreamingCard__ContentWrapper'\n }, void 0, _jsx('div', {\n className: 'StreamingCard__Content'\n }, void 0, _jsx('h4', {}, void 0, streamName), _jsx('ul', {\n className: 'StreamingCard__Meta'\n }, void 0, _jsx('li', {}, void 0, subtitle)), playbackErrorMessage && _jsx('div', {\n className: 'StreamingCard__Error'\n }, void 0, playbackErrorMessage)), !playbackErrorMessage && _jsx(__WEBPACK_IMPORTED_MODULE_1__FeedsSelectorAuthPill__[\"a\" /* default */], {\n streamContent: { authTypes: authTypes, packages: packages, id: id, streamName: streamName },\n userAuth: userAuth\n })));\n });\n }\n\n return _jsx('div', {\n className: 'StreamPicker__Row'\n }, void 0, _jsx('div', {\n className: 'StreamPicker__Broadcast'\n }, void 0, name), feedEntries);\n });\n\n return _jsx('div', {\n className: 'video-overlays-container'\n }, void 0, _jsx('div', {\n className: 'overlay streampicker'\n }, void 0, _jsx('div', {\n id: 'stream-view',\n className: 'video-player__stream js-video-player__stream'\n }, void 0, _jsx('div', {\n className: 'StreamPicker__Container'\n }, void 0, _jsx('div', {\n className: 'StreamPicker__Header'\n }, void 0, _jsx('h1', {}, void 0, title), _jsx('div', {\n className: 'StreamPicker__Close',\n onClick: this.closeModal\n })), _jsx('div', {\n className: 'StreamPicker__Body'\n }, void 0, feedItems)))));\n }\n }]);\n\n return FeedsSelector;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"PureComponent\"]);\n\nFeedsSelector.defaultProps = {\n feeds: [],\n userAuth: []\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (FeedsSelector);\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 735 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export getAuthLabel */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_intersection__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_intersection___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_intersection__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib_auth_streamHasAuthType__ = __webpack_require__(45);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n// const isStreamEspnPlusBase = (packages = []) => (\n// packages.find(entitlement => entitlement === Entitlements.ESPN_PLUS)\n// );\n\nvar isStreamEspnPlusMlb = function isStreamEspnPlusMlb() {\n var packages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return packages.find(function (entitlement) {\n return entitlement === __WEBPACK_IMPORTED_MODULE_2__enums__[\"s\" /* Entitlements */].ESPN_PLUS_MLB;\n });\n};\n\nvar isStreamEspnPlusPPV = function isStreamEspnPlusPPV() {\n var packages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return packages.find(function (entitlement) {\n return entitlement.includes(__WEBPACK_IMPORTED_MODULE_2__enums__[\"s\" /* Entitlements */].ESPN_PLUS_UFC_PPV);\n });\n};\n\nvar isUserEntitled = function isUserEntitled() {\n var authTypes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var userAuth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var isEntitled = [];\n if (Array.isArray(authTypes) && Array.isArray(userAuth)) {\n isEntitled = __WEBPACK_IMPORTED_MODULE_1_lodash_intersection___default()(authTypes, userAuth);\n }\n\n return isEntitled.length > 0;\n};\n\nvar getAuthLabel = function getAuthLabel(_ref) {\n var _ref$userAuth = _ref.userAuth,\n userAuth = _ref$userAuth === undefined ? [] : _ref$userAuth,\n _ref$streamContent = _ref.streamContent,\n streamContent = _ref$streamContent === undefined ? {} : _ref$streamContent;\n\n if (!streamContent || !streamContent.authTypes) {\n return null;\n }\n\n var _streamContent$authTy = streamContent.authTypes,\n authTypes = _streamContent$authTy === undefined ? [] : _streamContent$authTy,\n _streamContent$packag = streamContent.packages,\n packages = _streamContent$packag === undefined ? [] : _streamContent$packag;\n\n var labelClass = 'button sm';\n var label = null;\n var labelText = '';\n var isEntitled = false;\n\n // E+ Event\n if (Array.isArray(packages) && packages.length > 0 && Object(__WEBPACK_IMPORTED_MODULE_3__lib_auth_streamHasAuthType__[\"a\" /* default */])(streamContent, __WEBPACK_IMPORTED_MODULE_2__enums__[\"e\" /* AuthTypes */].BAM)) {\n isEntitled = isUserEntitled(packages, userAuth);\n if (isStreamEspnPlusPPV(packages)) {\n // Verify if PPV Event\n labelText = isEntitled ? 'PURCHASED' : 'BUY PPV';\n } else if (isStreamEspnPlusMlb(packages)) {\n // Verify if MLB Event\n labelText = isEntitled ? 'SUBSCRIBED TO ESPN+ MLB' : 'Get MLB.TV';\n } else {\n labelText = isEntitled ? 'SUBSCRIBED TO ESPN+' : 'ESPN+';\n labelClass = 'button sm espn-plus';\n }\n\n label = isEntitled ? _jsx('div', {\n className: 'auth-label auth-label--dark'\n }, void 0, labelText) : _jsx('button', {\n className: '' + labelClass\n }, void 0, labelText);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_3__lib_auth_streamHasAuthType__[\"a\" /* default */])(streamContent, __WEBPACK_IMPORTED_MODULE_2__enums__[\"e\" /* AuthTypes */].MVPD) || Object(__WEBPACK_IMPORTED_MODULE_3__lib_auth_streamHasAuthType__[\"a\" /* default */])(streamContent, __WEBPACK_IMPORTED_MODULE_2__enums__[\"e\" /* AuthTypes */].ISP)) {\n isEntitled = isUserEntitled(authTypes, userAuth);\n labelText = isEntitled ? 'LOGGED INTO TV PROVIDER' : 'CHOOSE TV PROVIDER';\n label = isEntitled ? _jsx('div', {\n className: 'auth-label auth-label--dark'\n }, void 0, labelText) : _jsx('button', {\n className: '' + labelClass\n }, void 0, labelText);\n }\n\n return label;\n};\n\nvar FeedsSelectorAuthPill = function FeedsSelectorAuthPill(_ref2) {\n var userAuth = _ref2.userAuth,\n streamContent = _ref2.streamContent;\n return _jsx('div', {\n className: 'StreamingCard__Labels'\n }, void 0, getAuthLabel({ userAuth: userAuth, streamContent: streamContent }));\n};\n\nFeedsSelectorAuthPill.defaultProps = {\n userAuth: []\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (FeedsSelectorAuthPill);\n\n/***/ }),\n/* 736 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__heroSelector__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__selectedContentSelector__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_util_isEmpty__ = __webpack_require__(12);\n\n\n\n\n\n\n/**\n * This selector determines which content should be used for the intial embed.\n * If there a piece of content is selected, use that, otherwise use the hero\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_1__pageSelector__[\"c\" /* default */], __WEBPACK_IMPORTED_MODULE_2__heroSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__selectedContentSelector__[\"a\" /* default */], function (_ref, hero, selectedContent) {\n var isFinal = _ref.isFinal;\n\n // NOTE: When the selectedContent/heroContent type is `vod`, we want to allow playback.\n // This will allow Domestic & International VODs to play\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__lib_util_isEmpty__[\"a\" /* default */])(selectedContent) && typeof selectedContent.type === 'string' && selectedContent.type.trim().toLowerCase() === 'vod') {\n return selectedContent;\n }\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__lib_util_isEmpty__[\"a\" /* default */])(hero) && typeof hero.type === 'string' && hero.type.trim().toLowerCase() === 'vod') {\n return hero;\n }\n\n if (!isFinal) {\n return null;\n }\n\n return !Object(__WEBPACK_IMPORTED_MODULE_4__lib_util_isEmpty__[\"a\" /* default */])(selectedContent) ? selectedContent : hero;\n}));\n\n/***/ }),\n/* 737 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__selectedContentSelector__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__selectedStreamSelector__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__playingStreamSelector__ = __webpack_require__(148);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__playerSelector__ = __webpack_require__(153);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__oneIdSelector__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__lib_auth_authStateKnown__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__lib_auth_streamHasAuthType__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__lib_auth_canPlayContent__ = __webpack_require__(117);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__lib_auth_shallowCheckAuthentication__ = __webpack_require__(146);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__lib_util_isEmpty__ = __webpack_require__(12);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * This selector only returns content if all the conditions needed for playback are met\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_reselect__[\"createSelector\"])(__WEBPACK_IMPORTED_MODULE_3__pageSelector__[\"c\" /* default */], __WEBPACK_IMPORTED_MODULE_7__playerSelector__[\"b\" /* default */], __WEBPACK_IMPORTED_MODULE_4__selectedContentSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__playingStreamSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__selectedStreamSelector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__authenticationSelectors__[\"r\" /* userAuthSelector */], __WEBPACK_IMPORTED_MODULE_9__authenticationSelectors__[\"m\" /* ipInfoSelector */], __WEBPACK_IMPORTED_MODULE_9__authenticationSelectors__[\"b\" /* adobePassInfoSelector */], __WEBPACK_IMPORTED_MODULE_2__appSelector__[\"e\" /* bypassTokenSelector */], __WEBPACK_IMPORTED_MODULE_8__oneIdSelector__[\"g\" /* oneIdTokenSelector */], function (page, player, selectedContent, playingStream, selectedStream, userAuth, ipInfo, adobePassInfo, bypassToken, oneIdToken) {\n var isVod = selectedContent && selectedContent.type === 'vod';\n\n if (page.scored && player.ready === true && (Object(__WEBPACK_IMPORTED_MODULE_10__lib_auth_authStateKnown__[\"a\" /* default */])(userAuth) || isVod || !userAuth.length) && !Object(__WEBPACK_IMPORTED_MODULE_14__lib_util_isEmpty__[\"a\" /* default */])(selectedStream) && selectedContent.reEmbed !== false && player.autoEmbedTimerComplete === true && (\n // This must be for when the linear content has changed the program\n selectedStream.content && selectedContent.id !== selectedStream.content.id || selectedStream.id !== playingStream.id)) {\n if (Object(__WEBPACK_IMPORTED_MODULE_12__lib_auth_canPlayContent__[\"a\" /* default */])(selectedContent, userAuth, false) && Object(__WEBPACK_IMPORTED_MODULE_13__lib_auth_shallowCheckAuthentication__[\"b\" /* default */])(selectedStream, userAuth, false)) {\n if (!selectedStream.authTypes || selectedStream.authTypes.length === 0 || selectedStream.source.id === 'SHORTSTOPLIVE' || bypassToken) {\n return _extends({}, selectedStream);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_11__lib_auth_streamHasAuthType__[\"a\" /* default */])(selectedStream, __WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].ISP) && userAuth.indexOf(__WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].ISP) !== -1) {\n return _extends({}, selectedStream, { ipInfo: ipInfo });\n } else if (Object(__WEBPACK_IMPORTED_MODULE_11__lib_auth_streamHasAuthType__[\"a\" /* default */])(selectedStream, __WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].MVPD) && adobePassInfo) {\n return _extends({}, selectedStream, { adobePassInfo: adobePassInfo });\n } else if (Object(__WEBPACK_IMPORTED_MODULE_11__lib_auth_streamHasAuthType__[\"a\" /* default */])(selectedStream, __WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].OPEN)) {\n return _extends({}, selectedStream);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_11__lib_auth_streamHasAuthType__[\"a\" /* default */])(selectedStream, __WEBPACK_IMPORTED_MODULE_1__enums__[\"e\" /* AuthTypes */].BAM) && oneIdToken) {\n return _extends({}, selectedStream);\n }\n }\n }\n return {};\n}));\n\n/***/ }),\n/* 738 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export NativeBridge */\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createNativeBridge;\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction NOOP() {}\n\nvar nativeBridge = void 0;\n\nfunction constructMessage(commandName, params, callback) {\n //\n var message = {\n commandName: commandName,\n params: params,\n callBack: callback\n };\n return message;\n}\n\nfunction handleCallback(callback, data, err) {\n // Incoming callback can be either a function or a string - handle either\n if (typeof callback === 'function') {\n callback(data, err);\n } else if (typeof callback === 'string') {\n window[callback](data, err);\n }\n}\n\nvar NativeBridge = function () {\n function NativeBridge() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { globalNS: 'espn.nativeBridge' },\n globalNS = _ref.globalNS;\n\n _classCallCheck(this, NativeBridge);\n\n this.isProcessing = false;\n this.processId = null;\n this.messageQueue = [];\n this.globalNS = globalNS;\n this.ns = globalNS.split('.').reduce(function (acc, ns) {\n acc[ns] = acc[ns] || {};\n return acc[ns];\n }, window);\n var qs = {};\n location.search.replace(/([^?=&]+)(=([^&#]*))?/g, function ($0, $1, $2, $3) {\n qs[$1] = $3;\n });\n this.isIOS = qs.platform === 'ios';\n this.isAndroid = qs.platform === 'android';\n this.isWindows = qs.platform === 'windows';\n // this.sendMessageAsPromise = Promise.promisify(this.sendMessage);\n // this.getDataAsPromise = Promise.promisify(this.getData);\n }\n\n _createClass(NativeBridge, [{\n key: '_processQueue',\n value: function _processQueue() {\n if (this.isProcessing) {\n return;\n }\n this.isProcessing = true;\n setTimeout(this._processMessages.bind(this), 0);\n }\n }, {\n key: '_processMessages',\n value: function _processMessages() {\n var message = this.messageQueue.shift();\n if (message) {\n var callBack = message.callBack;\n\n\n try {\n this._createCallback(callBack);\n this._transmitMessage(_extends({}, message, { callBack: this.globalNS + '.callback' }));\n } catch (err) {\n console.error('NativeBridge: error - _processMessages ' + err.message);\n this._next(callBack, null, err);\n }\n\n if (!this.messageQueue.length) {\n this.isProcessing = false;\n }\n\n // WINDOWS ONLY\n // Windows Devices do NOT trigger a callback (custom or espn.nativeBridge.callback)\n // If still processing (messageQueue is NOT empty), we will set a short timer to manually trigger\n // the callback and call _processMessges method until processing is complete.\n if (this.isProcessing && this.isWindows) {\n this.processId = setTimeout(this._processMessages.bind(this), 200);\n }\n }\n }\n }, {\n key: '_createCallback',\n value: function _createCallback(callback) {\n var _this = this;\n\n // The purpose is to create \"chaining\" of the native messages since they unfortunately\n // have to share a singular global callback. But this enables us to pass callbacks as functions vs strings.\n this.ns.callback = function (data) {\n _this._next(callback, data);\n };\n }\n }, {\n key: '_next',\n value: function _next(callback, data, err) {\n // if callback is triggered, clear timeout to remove duplicate call\n if (this.processId) {\n clearTimeout(this.processId);\n this.processId = null;\n }\n if (callback) {\n if (err) {\n handleCallback(callback, null, err);\n } else {\n try {\n handleCallback(callback, data);\n } catch (err2) {\n handleCallback(callback, null, err2);\n }\n }\n }\n if (this.messageQueue.length) {\n this._processMessages();\n } else {\n this.ns.callback = NOOP; // reset\n }\n }\n }, {\n key: '_transmitMessage',\n value: function _transmitMessage(message) {\n if (typeof message === 'undefined') {\n return;\n }\n\n // console.log('NativeBridge: _transmitMessage');\n\n if (typeof window.webkit !== 'undefined') {\n // iOS, looking for WKWebview injected handler\n window.webkit.messageHandlers.espnWebview.postMessage(message);\n return;\n }\n\n var data = JSON.stringify(message);\n if (this.isAndroid && window.linklanguage) {\n // Android\n window.linklanguage.sendJSONMessage(data);\n } else if (this.isWindows) {\n // Windows\n window.external.notify(data);\n } else if (this.isIOS) {\n // fallback for backwards compatibility\n window.location = data;\n } else {\n console.log(\"NativeBridge: message sent with\", message);\n }\n }\n }, {\n key: '_sendMessage',\n value: function _sendMessage(message) {\n this.messageQueue.push(message);\n this._processQueue();\n }\n }, {\n key: 'getData',\n value: function getData(dataName, callback) {\n // Provided as a fallback for backwards compatibility\n var native = window.espn.native;\n\n if (typeof native !== 'undefined') {\n if (native[dataName] === 'true' || native[dataName] === 'false') {\n // convert boolean string to boolean\n native[dataName] = native[dataName] === 'true';\n }\n callback(native[dataName]);\n return;\n }\n\n this.sendMessage(dataName, {}, callback);\n }\n }, {\n key: 'sendMessage',\n value: function sendMessage(message, params, callback) {\n this._sendMessage(constructMessage(message, params, callback));\n }\n }, {\n key: 'loadMinibrowser',\n value: function loadMinibrowser(url) {\n if (this.isAndroid) {\n try {\n window.linklanguage.loadMinibrowserWithURL(url);\n } catch (err) {\n console.warn('nativeBridge send failed', url);\n }\n } else {\n this.sendMessage('loadMinibrowserWithURL', { url: url, link: url });\n }\n }\n }]);\n\n return NativeBridge;\n}();\n\nfunction createNativeBridge(config) {\n if (!nativeBridge && typeof window !== 'undefined') {\n nativeBridge = new NativeBridge(config);\n }\n return nativeBridge;\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 739 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export BaseSearchResultAsList */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__alias_Playable__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_format_dateFormat__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__enums__ = __webpack_require__(1);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\nvar headerMappings = [{\n keyType: 'Date',\n value: 'startTime'\n}, {\n keyType: 'Title',\n value: 'name'\n}, {\n keyType: 'Sport',\n value: 'sport'\n}, {\n keyType: 'League',\n value: 'league'\n}, {\n keyType: 'Network',\n value: 'network'\n}, {\n keyType: 'Link',\n value: 'link'\n}];\n\nfunction sortByDateDescending(c1, c2) {\n return new Date(c2.utc) - new Date(c1.utc);\n}\n\nfunction getSearchResultList() {\n var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var stream = content.streams.find(function (el) {\n return el.links && el.links.web;\n });\n var displayTime = content.utc && __WEBPACK_IMPORTED_MODULE_2__lib_format_dateFormat__[\"a\" /* default */].dateFormat(content.utc, 'dateTime7');\n return {\n displayTime: displayTime,\n name: content.name,\n sport: content.programmingData.sport,\n league: content.programmingData.league,\n network: stream.source.name,\n link: stream.links.web\n };\n}\n\nfunction copyToClipboard(copiedText) {\n var clipboardElement = document.createElement('input');\n document.body.appendChild(clipboardElement);\n clipboardElement.setAttribute('value', copiedText);\n clipboardElement.select();\n document.execCommand('copy');\n document.body.removeChild(clipboardElement);\n}\n\nvar SearchResultAsList = function (_Component) {\n _inherits(SearchResultAsList, _Component);\n\n function SearchResultAsList(props) {\n _classCallCheck(this, SearchResultAsList);\n\n var _this = _possibleConstructorReturn(this, (SearchResultAsList.__proto__ || Object.getPrototypeOf(SearchResultAsList)).call(this, props));\n\n _this.state = {\n sortBy: 'Date',\n sortOrder: __WEBPACK_IMPORTED_MODULE_3__enums__[\"D\" /* SortOrder */].DESC\n };\n return _this;\n }\n\n _createClass(SearchResultAsList, [{\n key: 'clickHeader',\n value: function clickHeader(index) {\n var _state = this.state,\n sortBy = _state.sortBy,\n sortOrder = _state.sortOrder;\n var keyType = headerMappings[index].keyType;\n\n if (keyType === this.state.sortBy) {\n sortOrder = this.state.sortOrder === __WEBPACK_IMPORTED_MODULE_3__enums__[\"D\" /* SortOrder */].DESC ? __WEBPACK_IMPORTED_MODULE_3__enums__[\"D\" /* SortOrder */].ASC : __WEBPACK_IMPORTED_MODULE_3__enums__[\"D\" /* SortOrder */].DESC;\n } else {\n sortBy = keyType;\n sortOrder = __WEBPACK_IMPORTED_MODULE_3__enums__[\"D\" /* SortOrder */].DESC;\n }\n this.setState({\n sortBy: sortBy,\n sortOrder: sortOrder\n });\n this.props.sortContents(headerMappings[index].value, sortOrder);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var headerRows = headerMappings.map(function (headerMapping, index) {\n return _jsx('th', {\n onClick: function onClick() {\n return _this2.clickHeader(index);\n }\n }, void 0, headerMapping.keyType);\n });\n var header = _jsx('tr', {}, void 0, headerRows);\n var rows = this.props.contents.sort(sortByDateDescending).map(function (content) {\n var searchResultListing = getSearchResultList(content);\n return _jsx('tr', {}, 'tr_' + content.id, _jsx('td', {\n className: 'schedule__time'\n }, void 0, searchResultListing.displayTime), _jsx('td', {\n className: 'schedule__time'\n }, void 0, searchResultListing.name), _jsx('td', {\n className: 'schedule__time'\n }, void 0, searchResultListing.sport), _jsx('td', {\n className: 'schedule__time'\n }, void 0, searchResultListing.league), _jsx('td', {\n className: 'schedule__network'\n }, void 0, searchResultListing.network), _jsx('td', {\n className: 'schedule__competitors'\n }, void 0, _jsx('button', {\n onClick: function onClick() {\n copyToClipboard(searchResultListing.link);\n }\n }, void 0, 'Copy Event Link')));\n });\n return _jsx('table', {}, void 0, _jsx('thead', {}, void 0, header), _jsx('tbody', {}, void 0, rows));\n }\n }]);\n\n return SearchResultAsList;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1__alias_Playable__[\"a\" /* default */])(SearchResultAsList));\n\n\n/***/ }),\n/* 740 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_file_saver__ = __webpack_require__(741);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_file_saver___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_file_saver__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_format_dateFormat__ = __webpack_require__(33);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\nfunction prepareCsv(buckets) {\n var csvContent = 'Start Time,Event Name,Sport,League,Network,Link\\r\\n';\n buckets.forEach(function (bucket) {\n var contents = bucket.contents;\n contents.forEach(function (content) {\n if (!content.programmingData) {\n content.programmingData = {};\n }\n var _content$programmingD = content.programmingData,\n _content$programmingD2 = _content$programmingD.sport,\n sport = _content$programmingD2 === undefined ? '' : _content$programmingD2,\n _content$programmingD3 = _content$programmingD.league,\n league = _content$programmingD3 === undefined ? '' : _content$programmingD3,\n _content$name = content.name,\n name = _content$name === undefined ? '' : _content$name,\n _content$utc = content.utc,\n utc = _content$utc === undefined ? '' : _content$utc;\n var _content$streams$ = content.streams[0],\n _content$streams$$sou = _content$streams$.source.name,\n sourceName = _content$streams$$sou === undefined ? '' : _content$streams$$sou,\n _content$streams$$lin = _content$streams$.links.web,\n webLink = _content$streams$$lin === undefined ? '' : _content$streams$$lin;\n\n var dateAndTime = __WEBPACK_IMPORTED_MODULE_2__lib_format_dateFormat__[\"a\" /* default */].dateFormat(utc, 'dateTime7');\n var row = '\"' + dateAndTime + '\",\"' + name + '\",' + sport + ',' + league + ',' + sourceName + ',' + webLink;\n csvContent = '' + csvContent + row + '\\r\\n';\n });\n });\n return csvContent;\n}\n\nvar DownloadLink = function DownloadLink(_ref) {\n var text = _ref.text,\n buckets = _ref.buckets,\n fileName = _ref.fileName,\n _ref$mimeType = _ref.mimeType,\n mimeType = _ref$mimeType === undefined ? 'text/csv' : _ref$mimeType;\n\n var dataString = prepareCsv(buckets);\n function clickHandler(ev) {\n // File is not available on the server, so must be built in the browser\n var file = new File([dataString], fileName, { type: mimeType });\n ev.preventDefault();\n __WEBPACK_IMPORTED_MODULE_1_file_saver___default.a.saveAs(file);\n }\n return _jsx('a', {\n onClick: clickHandler\n }, void 0, text);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (DownloadLink);\n\n/***/ }),\n/* 741 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((\"function\" !== \"undefined\" && __webpack_require__(742) !== null) && (__webpack_require__(743) !== null)) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n return saveAs;\n }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}\n\n\n/***/ }),\n/* 742 */\n/***/ (function(module, exports) {\n\nmodule.exports = function() {\r\n\tthrow new Error(\"define cannot be used indirect\");\r\n};\r\n\n\n/***/ }),\n/* 743 */\n/***/ (function(module, exports) {\n\n/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n\n/* WEBPACK VAR INJECTION */}.call(exports, {}))\n\n/***/ }),\n/* 744 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_helmet__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_helmet___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_helmet__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_format_dateFormat__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment__ = __webpack_require__(107);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_moment__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__isPacRimOrCarib__ = __webpack_require__(359);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable */\n\n\n\n\n\n\n\n\nfunction buildInitialState(_ref) {\n var isResponsive = _ref.isResponsive;\n\n var iDayRange = 7;\n var iItemWidth = 36;\n var maxWidthMedium = 768;\n\n /*\n Below condition checks for screen size and initialize iDayRange and iItemWidth\n based on that. For mobile < 768 iItemWidth is fixed to 40px\n */\n if (isResponsive && true && screen && 'width' in screen && screen.width < maxWidthMedium) {\n iDayRange = 5;\n iItemWidth = 37;\n }\n\n var iStartPos = 0 - iDayRange * iItemWidth;\n return {\n activeDate: null,\n displayDate: null,\n oneDay: 86400000, // 1 day in milliseconds\n dayRange: iDayRange,\n itemWidth: iItemWidth,\n touchObject: {\n startX: null,\n startY: null,\n curX: null,\n curY: null,\n swipeLength: null\n },\n didSwipe: false,\n dragging: false,\n animate: false,\n currentPos: iStartPos\n };\n}\n\nvar DateSlider = function (_Component) {\n _inherits(DateSlider, _Component);\n\n function DateSlider(props) {\n _classCallCheck(this, DateSlider);\n\n var _this = _possibleConstructorReturn(this, (DateSlider.__proto__ || Object.getPrototypeOf(DateSlider)).call(this, props));\n\n _this.dateFormat = __WEBPACK_IMPORTED_MODULE_2__lib_format_dateFormat__[\"a\" /* default */].dateFormat;\n _this.dateToObject = __WEBPACK_IMPORTED_MODULE_2__lib_format_dateFormat__[\"a\" /* default */].dateToObject;\n _this.dateToKey = __WEBPACK_IMPORTED_MODULE_2__lib_format_dateFormat__[\"a\" /* default */].dateToKey;\n _this.state = buildInitialState(props);\n _this.animateToDate = _this.animateToDate.bind(_this);\n _this.previous = _this.previous.bind(_this);\n _this.next = _this.next.bind(_this);\n _this.reset = _this.reset.bind(_this);\n _this.swipeStart = _this.swipeStart.bind(_this);\n _this.swipeMove = _this.swipeMove.bind(_this);\n _this.swipeEnd = _this.swipeEnd.bind(_this);\n _this.swipeDirection = _this.swipeDirection.bind(_this);\n _this._throttle = _this._throttle.bind(_this);\n _this.selectDate = _this.selectDate.bind(_this);\n _this.dateSelected = _this.dateSelected.bind(_this);\n return _this;\n }\n\n /**\n * Intial load so add the date to the state for use and manipulation\n * @returns {undefined} undefined\n **/\n\n\n _createClass(DateSlider, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n // Ignore \"dates\" param if in Replay tab (default to current date)\n var oDate = this.props.isReplaySlider ? new Date() : this.dateToObject(this.props.date) || new Date();\n var iDate = oDate.setHours(0, 0, 0, 0);\n this.setState({\n activeDate: iDate,\n displayDate: iDate\n });\n }\n\n /**\n * Reset state if league has changed\n *\n * @param {Object} nextProps Props\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var oDate = this.dateToObject(nextProps.date) || new Date();\n var iDate = oDate.setHours(0, 0, 0, 0);\n\n if (nextProps.league !== this.props.league) {\n this.animateToDate(iDate);\n this.setState({\n activeDate: iDate,\n didSwipe: false\n });\n }\n }\n\n /**\n * Subtracts 7 days from the current date and then forces a redraw\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'previous',\n value: function previous() {\n var _state = this.state,\n displayDate = _state.displayDate,\n dayRange = _state.dayRange;\n\n var iNewDate = __WEBPACK_IMPORTED_MODULE_3_moment___default()(displayDate).subtract(dayRange, 'days').valueOf();\n this.animateToDate(iNewDate);\n }\n\n /**\n * Adds 7 days to the current date and then forces a redraw\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'next',\n value: function next() {\n var _state2 = this.state,\n displayDate = _state2.displayDate,\n dayRange = _state2.dayRange;\n\n var iNewDate = __WEBPACK_IMPORTED_MODULE_3_moment___default()(displayDate).add(dayRange, 'days').valueOf();\n this.animateToDate(iNewDate);\n }\n\n /**\n * Redraws the page to last know good state\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'reset',\n value: function reset() {\n this.setState({});\n }\n\n /**\n * Capture the start position of the mouse/touch so that we can\n * determine the direction and size of the interaction later.\n *\n * @param {Object} e event object\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'swipeStart',\n value: function swipeStart(e) {\n var posX = e.touches !== undefined ? e.touches[0].pageX : e.clientX;\n var posY = e.touches !== undefined ? e.touches[0].pageY : e.clientY;\n\n this.setState({\n dragging: true,\n touchObject: {\n startX: posX,\n startY: posY,\n curX: posX,\n curY: posY\n }\n });\n\n // e.preventDefault()\n }\n\n /**\n * Captures the current mouse/finger movement and stores the value to\n * allow the position of the slider to be updated.\n *\n * @param {Object} e event object\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'swipeMove',\n value: function swipeMove(e) {\n if (!this.state.dragging) {\n return;\n }\n\n var touchObject = this.state.touchObject;\n\n var iCurrX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = touchObject.curX - touchObject.startX;\n var iMoved = iCurrX - this.state.touchObject.curX;\n touchObject.curX = iCurrX;\n this.setState({\n touchObject: touchObject,\n currentPos: this.state.currentPos + iMoved\n });\n if (e && e.preventDefault) {\n e.preventDefault();\n }\n }\n\n /**\n * Capture end event and then calculate the action desired by the user\n *\n * @param {Object} e event object\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'swipeEnd',\n value: function swipeEnd() {\n // e.preventDefault()\n\n if (!this.state.dragging) {\n return;\n }\n\n var touchObject = this.state.touchObject;\n // const minSwipe = this.state.listWidth/this.props.touchThreshold\n var swipeDirection = this.swipeDirection(touchObject);\n\n // reset the state of touch related state constiables.\n this.setState({\n dragging: false,\n touchObject: {},\n swipeLength: 0\n });\n\n if (swipeDirection === 'left' && Math.abs(touchObject.swipeLength) > 5) {\n this.setState({ didSwipe: true });\n this.previous();\n } else if (swipeDirection === 'right' && Math.abs(touchObject.swipeLength) > 5) {\n this.setState({ didSwipe: true });\n this.next();\n } else if (Math.abs(touchObject.swipeLength) > 1) {\n // micro swipe, not really a click.\n this.reset();\n } else {\n this.reset();\n }\n }\n\n /**\n * Determines whether the swipe was within a certain angle range and\n * therefore a horizontal swipe rather than a verticle one.\n *\n * @param {Object} touchObject touchObject\n * @returns {String} left/right/vertical\n **/\n\n }, {\n key: 'swipeDirection',\n value: function swipeDirection(touchObject) {\n var xDist = touchObject.startX - touchObject.curX;\n var yDist = touchObject.startY - touchObject.curY;\n var r = Math.atan2(yDist, xDist);\n var swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return this.props.rtl === false ? 'left' : 'right';\n }\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return this.props.rtl === false ? 'right' : 'left';\n }\n\n return 'vertical';\n }\n\n /**\n * for performance reasons provide a facility to throttle the updates\n * triggered by mousemove\n *\n * @param {Number} delay time to delay\n * @param {Function} callback function reference which needs to be throttled\n * @returns {Function} Anonymous Function\n **/\n\n }, {\n key: '_throttle',\n value: function _throttle(delay, callback) {\n var previousCall = new Date().getTime();\n return function () {\n var time = new Date().getTime();\n if (time - previousCall >= delay) {\n previousCall = time;\n callback.apply(null, arguments);\n }\n };\n }\n\n /**\n * Captures the date of the node clicked and sets the state to that. If\n * a swipe was tracked the click is ignored and the swipe tracker reset\n *\n * @param {Number} iDate date\n * @param {Number} iItemPos position index\n * @param {Object} e Event\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'selectDate',\n value: function selectDate(iDate, iItemPos, e) {\n if (e && e.stopPropagation) {\n e.stopPropagation();\n }\n if (e && e.preventDefault) {\n e.preventDefault();\n }\n iDate = (typeof iDate === 'undefined' ? 'undefined' : _typeof(iDate)) === 'object' ? iDate.setHours(0, 0, 0, 0) : iDate;\n if (typeof this.state.touchObject.swipeLength !== 'number') {\n this.setState({\n activeDate: iDate\n });\n this.animateToDate(iDate);\n this.dateSelected(iDate);\n }\n }\n\n /**\n * Calculates the position of the original display date within the\n * new range of dates so it can create the animation effect\n *\n * @param {Number} iNewDate date\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'animateToDate',\n value: function animateToDate(iNewDate) {\n // get the visible range of dates.\n // Ignore \"dates\" param if in Replay tab (default to current date)\n var oDate = this.props.isReplaySlider ? new Date() : this.dateToObject(this.props.date) || new Date();\n var iDate = oDate.setHours(0, 0, 0, 0);\n var lastDateInRange = this.props.isReplaySlider ? __WEBPACK_IMPORTED_MODULE_3_moment___default()(iDate).add(this.props.maxDaysInFuture, 'days') : __WEBPACK_IMPORTED_MODULE_3_moment___default()(iDate).add(this.props.maxDaysInFuture - this.state.dayRange, 'days');\n var firstDateInrange = __WEBPACK_IMPORTED_MODULE_3_moment___default()(iDate).subtract(this.props.maxDaysInPast, 'days');\n var canSlideForward = __WEBPACK_IMPORTED_MODULE_3_moment___default()(iNewDate).isBefore(lastDateInRange, 'day');\n var canSlideBack = __WEBPACK_IMPORTED_MODULE_3_moment___default()(iNewDate).isAfter(firstDateInrange, 'day');\n var iOneDay = this.state.oneDay;\n var iDayRange = this.state.dayRange;\n if (!canSlideBack) {\n iNewDate = firstDateInrange.valueOf();\n }\n if (!canSlideForward) {\n iNewDate = lastDateInRange.valueOf();\n }\n var iDisplayDate = this.state.displayDate;\n // NOTE: All date calculations such as adding/subtracting will be using moment to ensure daylight savings compatibility\n var iMinDate = __WEBPACK_IMPORTED_MODULE_3_moment___default()(iNewDate).subtract(iDayRange, 'days').valueOf();\n var iMaxDate = __WEBPACK_IMPORTED_MODULE_3_moment___default()(iMinDate).add(iDayRange * 3, 'days').valueOf();\n var iItemWidth = this.state.itemWidth;\n var iMoveTo = 0;\n\n if (iDisplayDate >= iMinDate && iDisplayDate <= iMaxDate) {\n // is the original date within the visible range?\n var iDiff = iDisplayDate - iMinDate;\n iMoveTo = 0 - iDiff / iOneDay * iItemWidth;\n } else if (iDisplayDate > iMaxDate) {\n // is it bigger then set moveto to last\n iMoveTo = 0 - iItemWidth * (iDayRange * 3);\n } else if (iDisplayDate < iMinDate) {\n // is it smaller then set moveto to first\n iMoveTo = 0;\n }\n\n this.setState({\n displayDate: iNewDate,\n currentPos: iMoveTo,\n animate: false\n });\n }\n\n /**\n * Call once we have selected a date\n *\n * @param {Number} iDate date\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'dateSelected',\n value: function dateSelected(iDate) {\n var selectedDate = this.dateFormat(iDate, 'date12');\n this.props.onDateSelected(this.dateToObject(iDate), selectedDate);\n }\n\n /**\n * After the component has drawn reset the position of the slider\n * this will cause the css animation to trigger. The timeout is to\n * force react to re-render else it trys to group the changes into 1\n * update and you won't see the animation\n *\n * @returns {undefined} undefined\n **/\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n var _this2 = this;\n\n var iDayRange = this.state.dayRange;\n var iItemWidth = this.state.itemWidth;\n var iNewPos = 0 - iDayRange * iItemWidth;\n\n if (iNewPos !== this.state.currentPos) {\n setTimeout(function () {\n _this2.setState({\n currentPos: iNewPos,\n animate: true\n });\n }, 1);\n }\n }\n }, {\n key: 'getIntlDate',\n value: function getIntlDate(date) {\n try {\n var _props = this.props,\n formatMessage = _props.formatMessage,\n messages = _props.messages,\n isIntl = _props.isIntl;\n\n var watchRegion = this.props.watchRegion;\n\n // PacRim/Carib (au) needs format tweak\n if (!isIntl && !Object(__WEBPACK_IMPORTED_MODULE_4__isPacRimOrCarib__[\"a\" /* default */])(watchRegion)) {\n return date;\n }\n var arr = date.split(' ');\n var month = formatMessage(messages['schedule.calendar.month.' + arr[0]]);\n var day = arr[1];\n var year = arr[2];\n\n // for PacRim/Carib (au), it needs to remove commas\n if (Object(__WEBPACK_IMPORTED_MODULE_4__isPacRimOrCarib__[\"a\" /* default */])(watchRegion)) {\n day = arr[1].replace(',', '');\n return day + ' ' + month + ' ' + year;\n }\n\n var isNLEdition = typeof watchRegion === 'string' && watchRegion.toLowerCase() === \"netherlands\";\n\n // All INTL removes date suffix\n day = arr[1].replace(/st,|nd,|rd,|th,/i, \"\");\n if (isNLEdition) {\n var nlFormatedDate = day + ' ' + month + ' ' + year;\n return nlFormatedDate.toLocaleLowerCase();\n }\n\n // All other INTL edition, adds 'de'\n return day + ' de ' + month + ', ' + year;\n } catch (e) {\n console.error(e.messages);\n return date;\n }\n }\n }, {\n key: 'getStartDate',\n value: function getStartDate(isReplaySlider, iDisplayDate, iDayRange) {\n var startDate = iDisplayDate;\n if (isReplaySlider && iDayRange === 5) {\n /**\n * currently on mobile, iDayRange is set to 5, but the day range on the scroll is showing 9 days\n * because of dynamic day width calculation, we need to substract 8 from 9 to get the\n * correct startDate for the header\n */\n startDate = __WEBPACK_IMPORTED_MODULE_3_moment___default()(iDisplayDate).subtract(8, 'days').valueOf();\n } else if (isReplaySlider) {\n startDate = __WEBPACK_IMPORTED_MODULE_3_moment___default()(iDisplayDate).subtract(iDayRange - 1, 'days').valueOf();\n }\n return startDate;\n }\n }, {\n key: 'getEndDate',\n value: function getEndDate(isReplaySlider, iDisplayDate, iDayRange, iOneDay) {\n var endDate = iDisplayDate;\n if (!isReplaySlider) {\n endDate = iDayRange === 5 ? iDisplayDate + 8 * iOneDay : iDisplayDate + (iDayRange - 1) * iOneDay;\n }\n return endDate;\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n formatMessage = _props2.formatMessage,\n messages = _props2.messages,\n isResponsive = _props2.isResponsive;\n\n var oActiveDates = this.props.activeDates || {};\n var iDisplayDate = this.state.displayDate;\n var iActiveDate = this.state.activeDate;\n var iOneDay = this.state.oneDay;\n var iDayRange = this.state.dayRange;\n var iItemWidth = this.state.itemWidth;\n var iStartDate = this.props.isReplaySlider ? __WEBPACK_IMPORTED_MODULE_3_moment___default()(iDisplayDate).subtract(13, 'days') : __WEBPACK_IMPORTED_MODULE_3_moment___default()(iDisplayDate).subtract(iDayRange, 'days');\n var aOptNodes = [];\n var allDaysActive = this.props.allDaysActive;\n var cDate = new Date().setHours(0, 0, 0, 0);\n\n /**\n * Build the date list for the carousel, take the date and build\n * an item for each day X days either side\n **/\n for (var i = 0; i < iDayRange * 3; i++) {\n // NOTE: Using moment to add days will account for daylight savings time\n var iOptDate = __WEBPACK_IMPORTED_MODULE_3_moment___default()(iStartDate).add(i, 'days').startOf('day').valueOf();\n var iItemPos = iItemWidth * i;\n var sActiveClass = '';\n\n var props = {\n 'data-id': this.dateToKey(iOptDate),\n className: 'day slick-slide', // slick-active\n // index: i,\n style: { width: iItemWidth + 'px' },\n key: i\n };\n\n // If allDaysActive is true, all dates get marked as active\n if (!allDaysActive && !oActiveDates[iOptDate]) {\n sActiveClass = 'inactive';\n }\n\n if (__WEBPACK_IMPORTED_MODULE_3_moment___default()(iActiveDate).isSame(__WEBPACK_IMPORTED_MODULE_3_moment___default()(iOptDate), 'day')) {\n sActiveClass = 'active';\n }\n\n /* react will add a span round the first value and the css dosn't want that */\n var oOptDate = this.dateToObject(iOptDate);\n var formatedOptDay = formatMessage(messages['schedule.calendar.day.' + this.dateFormat(oOptDate, 'date9')]);\n\n var sDisplayValue = formatedOptDay + ' <span>' + oOptDate.getDate() + '</span>';\n\n // NOTE: comparing `day` via moment ensures moment date instances account for daylight savings time\n if (!this.props.isReplaySlider || __WEBPACK_IMPORTED_MODULE_3_moment___default()(iOptDate).isSameOrBefore(__WEBPACK_IMPORTED_MODULE_3_moment___default()(cDate), 'day')) {\n aOptNodes.push(__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(\n 'div',\n _extends({}, props, { onClick: this.selectDate.bind(this, iOptDate, iItemPos) }),\n _jsx('a', {\n className: sActiveClass,\n dangerouslySetInnerHTML: { __html: sDisplayValue }\n }, 'item' + this.dateToKey(iOptDate))\n ));\n }\n }\n\n var oSliderprops = {\n onMouseDown: this.swipeStart,\n onMouseMove: this.state.dragging ? this._throttle(50, this.swipeMove) : null,\n onMouseUp: this.swipeEnd,\n onMouseLeave: this.state.dragging ? this.swipeEnd : null,\n onTouchStart: this.swipeStart,\n onTouchMove: this.state.dragging ? this._throttle(50, this.swipeMove) : null,\n onTouchEnd: this.swipeEnd,\n onTouchCancel: this.state.dragging ? this.swipeEnd : null,\n className: 'slick-list draggable',\n tabIndex: 0\n };\n\n var oSliderStyle = {\n width: iItemWidth * (iDayRange * 3) + 'px',\n left: this.state.currentPos + (this.props.centered ? iItemWidth * Math.floor(iDayRange / 2) : 0) + 'px'\n };\n\n var startDate = this.getStartDate(this.props.isReplaySlider, iDisplayDate, iDayRange);\n var endDate = this.getEndDate(this.props.isReplaySlider, iDisplayDate, iDayRange, iOneDay);\n\n var dateString = _jsx('span', {}, void 0, _jsx('span', {\n className: 'firstDay'\n }, 'firstDay', this.getIntlDate(this.dateFormat(startDate, 'date13')), ' - '), _jsx('span', {\n className: 'lastDay'\n }, 'lastDay', this.getIntlDate(this.dateFormat(endDate, 'date13'))));\n\n if (this.state.animate) {\n oSliderStyle.transition = 'left 0.5s'; // 'all 1s ease-in-out'\n }\n\n // console.log('month: ', formatMessage(messages['schedule.calendar.month.January']));\n return _jsx('div', {\n className: 'carousel-wrap',\n style: { float: 'none' }\n }, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_1_react_helmet___default.a, {\n style: isResponsive ? [] : [{\n cssText: '\\n .date-picker-carousel.slick-slider {\\n margin-bottom: 15px !important;\\n padding: 0 28px !important;\\n width: 307px !important;\\n }\\n .slick-prev, .slick-next {\\n display: block !important;\\n }\\n '\n }]\n }), _jsx('div', {\n className: 'carousel-week'\n }, void 0, dateString), _jsx('div', {\n className: 'date-picker-carousel slick-initialized slick-slider'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(\n 'div',\n oSliderprops,\n _jsx('div', {\n className: 'slick-track',\n style: oSliderStyle\n }, void 0, aOptNodes)\n ), _jsx('button', {\n type: 'button',\n 'data-role': 'none',\n className: 'slick-prev slice-arrow',\n style: { display: 'block' },\n onClick: this.previous\n }, void 0), _jsx('button', {\n type: 'button',\n 'data-role': 'none',\n className: 'slick-next slice-arrow',\n style: { display: 'block' },\n onClick: this.next\n }, void 0)), _jsx('div', {\n className: 'carousel-day'\n }, void 0, _jsx('span', {\n id: 'sbpDate',\n className: 'date'\n })));\n }\n }]);\n\n return DateSlider;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\nDateSlider.defaultProps = {\n date: new Date(),\n onDateSelected: function onDateSelected(date) {\n date;\n },\n maxDaysInFuture: 30,\n maxDaysInPast: 0,\n isResponsive: true,\n isReplaySlider: false\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (DateSlider);\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 745 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayAggregator = __webpack_require__(746),\n baseAggregator = __webpack_require__(747),\n baseIteratee = __webpack_require__(114),\n isArray = __webpack_require__(32);\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n\n\n/***/ }),\n/* 746 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n\n\n/***/ }),\n/* 747 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseEach = __webpack_require__(340);\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n\n\n/***/ }),\n/* 748 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/lodash/groupBy.js\nvar groupBy = __webpack_require__(361);\nvar groupBy_default = /*#__PURE__*/__webpack_require__.n(groupBy);\n\n// EXTERNAL MODULE: ./node_modules/lodash/uniqBy.js\nvar uniqBy = __webpack_require__(145);\nvar uniqBy_default = /*#__PURE__*/__webpack_require__.n(uniqBy);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: ./config/index.js\nvar config = __webpack_require__(16);\nvar config_default = /*#__PURE__*/__webpack_require__.n(config);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/lib/format/dateFormat.js\nvar dateFormat = __webpack_require__(33);\n\n// EXTERNAL MODULE: ./app/lib/auth/isContentLocked.js\nvar isContentLocked = __webpack_require__(220);\n\n// EXTERNAL MODULE: ./app/common/Select.js\nvar Select = __webpack_require__(358);\n\n// EXTERNAL MODULE: ./app/lib/format/getContentFromListing.js\nvar getContentFromListing = __webpack_require__(293);\n\n// CONCATENATED MODULE: ./app/lib/format/getListingNameFromStream.js\n\n/**\n * getListingNameFromStream - returns the proper string representation for the listing.name.\n * Depending on the entitlements and packages available, it will append the feedName to the name.\n *\n * @param {Object} listing - Object containing all metadata for the current listing\n * @param {string[]} packageNamesList - Array containing the current packages associated with the listing\n * @param {string[]} entitlementsList - Array containing the current entitlements\n * @return {string}\n */\nfunction getListingNameFromStream() {\n var listing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var name = listing.name && listing.name !== '' ? listing.name.trim() : '';\n var feedName = listing.feedName || '';\n\n if (feedName !== '') {\n return name + ' (' + feedName + ')';\n }\n\n return name;\n};\n// EXTERNAL MODULE: ./app/webapp/common/playable.js + 2 modules\nvar playable = __webpack_require__(64);\n\n// CONCATENATED MODULE: ./app/common/schedule/ScheduleLink.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\nvar ScheduleLink = function ScheduleLink(_ref) {\n var clickHandler = _ref.clickHandler,\n listing = _ref.listing,\n _ref$name = _ref.name,\n name = _ref$name === undefined ? '' : _ref$name,\n playerHref = _ref.playerHref,\n userIsBlackedOut = _ref.userIsBlackedOut,\n blackoutClickHandler = _ref.blackoutClickHandler,\n blackoutMessage = _ref.blackoutMessage;\n\n var blackoutLink = void 0;\n if (userIsBlackedOut) {\n blackoutLink = _jsx('p', {\n style: { display: 'inline' }\n }, void 0, '\\xA0|\\xA0', _jsx('a', {\n onClick: blackoutClickHandler\n }, void 0, blackoutMessage));\n }\n\n return listing.type === 'upcoming' ? _jsx('div', {}, void 0, name, blackoutLink) : _jsx('div', {}, void 0, _jsx('a', {\n href: playerHref,\n 'data-route': 'false',\n onClick: clickHandler\n }, void 0, name), blackoutLink);\n};\n\n/* harmony default export */ var schedule_ScheduleLink = (Object(playable[\"a\" /* default */])(ScheduleLink));\n\n// EXTERNAL MODULE: ./app/common/schedule/StatusFilter.js\nvar StatusFilter = __webpack_require__(97);\n\n// CONCATENATED MODULE: ./app/webapp/common/schedule/ResponsiveTable.js\nvar ResponsiveTable__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar ResponsiveTable = function ResponsiveTable(_ref) {\n var children = _ref.children;\n return ResponsiveTable__jsx(\"div\", {\n className: \"responsive-table-wrap\"\n }, void 0, ResponsiveTable__jsx(\"table\", {\n cellPadding: \"0\",\n cellSpacing: \"0\",\n className: \"schedule align-left\",\n \"data-text-contract\": \"Contract table\",\n \"data-text-expand\": \"Expand table\",\n \"data-fix-cols\": \"0\",\n \"data-behavior\": \"responsive_table\"\n }, void 0, children));\n};\n\n/* harmony default export */ var schedule_ResponsiveTable = (ResponsiveTable);\n// CONCATENATED MODULE: ./app/webapp/schedule/ScheduleCategorySection.js\nvar ScheduleCategorySection__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar secureCdnHost = config_default.a.secureCdnHost;\n\n\nvar networkToImageName = { espn1: 'espn', espndeportes: 'espndeportes_blk' };\n\nfunction getNetworkImage(abbr) {\n var packageNamesArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var darkTheme = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var images = [];\n if (abbr === 'espn_dtc' || abbr === 'bam_dtc' || abbr === 'espn_ppv') {\n var packageNames = packageNamesArg;\n if (!packageNames.length) {\n packageNames = [enums[\"s\" /* Entitlements */].ESPN_PLUS];\n }\n images = packageNames.sort().map(function (packageName) {\n var logo = void 0;\n var alt = void 0;\n if (packageName === enums[\"s\" /* Entitlements */].ESPN_PLUS) {\n logo = 'espnplus';\n if (darkTheme) {\n logo += '_wht';\n }\n alt = 'espn+';\n } else if (packageName === enums[\"s\" /* Entitlements */].ESPN_PLUS_MLB) {\n logo = 'mlb';\n alt = 'mlb.tv';\n } else if (packageName === enums[\"s\" /* Entitlements */].ESPN_PLUS_NHL) {\n logo = 'nhl';\n if (darkTheme) {\n logo += '_wht';\n }\n alt = 'nhl.tv';\n // NOTE: Find a match for any `ESPN_PLUS_UFC_PPV_*` entitlements\n } else if (packageName.indexOf(enums[\"s\" /* Entitlements */].ESPN_PLUS_UFC_PPV) !== -1) {\n logo = 'ufc_ppv';\n alt = 'ufc';\n\n if (darkTheme) {\n logo += '_wht';\n }\n }\n var image = secureCdnHost + '/watchespn/images/web/network_logos/channel_logo_' + logo + '_2x.png';\n return { image: image, alt: alt };\n });\n } else {\n var networkLogoName = networkToImageName[abbr] || abbr;\n var networkAlt = abbr;\n\n if (darkTheme) {\n if (abbr === 'espndeportes') {\n networkLogoName = 'espndeportes';\n } else if (enums[\"p\" /* DarkThemeLogos */][abbr]) {\n // NOTE: Use the dictionary to determine which logos support darkmode\n networkLogoName = enums[\"p\" /* DarkThemeLogos */][abbr];\n }\n }\n\n var networkLogoImageSource = secureCdnHost + '/watchespn/images/web/network_logos/channel_logo_' + networkLogoName + '_2x.png';\n images.push({ image: networkLogoImageSource, alt: networkAlt });\n }\n\n return images;\n}\n\nvar ScheduleCategorySection_ScheduleCategorySection = function (_Component) {\n _inherits(ScheduleCategorySection, _Component);\n\n function ScheduleCategorySection(props) {\n _classCallCheck(this, ScheduleCategorySection);\n\n var _this = _possibleConstructorReturn(this, (ScheduleCategorySection.__proto__ || Object.getPrototypeOf(ScheduleCategorySection)).call(this, props));\n\n _this.state = { selectedSubcategoryId: -1 };\n _this.onSubcategorySelect = _this.onSubcategorySelect.bind(_this);\n return _this;\n }\n\n _createClass(ScheduleCategorySection, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (nextProps.selectedTab !== this.props.selectedTab) {\n this.setState({ selectedSubcategoryId: -1 });\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps, nextState) {\n // Re-Render if:\n // (1) Number of listings changes in a section\n // (2) User authenticates\n // (3) Subcategory filter is used\n // (4) The first listing is different\n return this.props.listings.length !== nextProps.listings.length || this.props.userAuth.length !== nextProps.userAuth.length || this.state.selectedSubcategoryId !== nextState.selectedSubcategoryId || this.props.listings[0].id !== nextProps.listings[0].id || this.props.preauthorizedResources !== nextProps.preauthorizedResources;\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (window.espn_ui) {\n window.espn_ui.LoadBehavior();\n }\n }\n }, {\n key: 'onSubcategorySelect',\n value: function onSubcategorySelect(option) {\n this.setState({ selectedSubcategoryId: option.value });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n category = _props.category,\n listings = _props.listings,\n preauthorizedResources = _props.preauthorizedResources,\n userAuth = _props.userAuth,\n selectedTab = _props.selectedTab,\n dateFormatStr = _props.dateFormat,\n defaultLabel = _props.defaultLabel,\n blackoutMessage = _props.blackoutMessage,\n showSectionCaption = _props.showSectionCaption,\n bucketName = _props.bucketName;\n\n var compareObjectsByName = function compareObjectsByName(objA, objB) {\n var aName = objA.name.trim().toLowerCase();\n var bName = objB.name.trim().toLowerCase();\n if (aName > bName) {\n return 1;\n } else if (aName < bName) {\n return -1;\n }\n return 0;\n };\n\n var isReplaySelected = selectedTab === StatusFilter[\"a\" /* default */].Options.REPLAY;\n\n var subcategories = uniqBy_default()(listings.map(function (listing) {\n return listing.subcategories[0];\n }), 'name').sort(compareObjectsByName);\n\n // moved the 'undefined' subcat to the top\n if (subcategories[subcategories.length - 1] === undefined) {\n subcategories.pop();\n subcategories.unshift(undefined);\n }\n\n var listingsGroupedBySubcategory = groupBy_default()(listings, function (listing) {\n return listing.subcategories[0] && listing.subcategories[0].name;\n });\n\n var hasDropdown = Object.keys(subcategories.filter(function (sc) {\n return !!sc;\n })).length > 1;\n\n var h2ClassName = classnames_default()('table-caption', {\n 'has-dropdown': hasDropdown\n });\n\n var selectOptions = [{ label: defaultLabel, value: -1 }].concat(subcategories.filter(function (item) {\n return !!item;\n }) // don't include the \"undefined\" subcat\n .map(function (subcat) {\n return { label: subcat.name, value: subcat.name };\n }));\n\n var select = hasDropdown && ScheduleCategorySection__jsx(Select[\"a\" /* default */], {\n options: selectOptions,\n menuSizeClass: 'drop-left sm',\n onChange: this.onSubcategorySelect\n });\n var columns = isReplaySelected ? 5 : 4;\n var tableChildren = [];\n\n subcategories.forEach(function (subcategory) {\n var subcatgoryNotFiltered = _this2.state.selectedSubcategoryId === -1 || !!subcategory && _this2.state.selectedSubcategoryId !== -1 && _this2.state.selectedSubcategoryId === subcategory.name;\n if (!!subcategory && subcatgoryNotFiltered) {\n tableChildren.push(ScheduleCategorySection__jsx('thead', {}, 'thead_' + tableChildren.length, ScheduleCategorySection__jsx('tr', {}, void 0, ScheduleCategorySection__jsx('th', {\n colSpan: columns\n }, void 0, ScheduleCategorySection__jsx('span', {}, void 0, subcategory.name)))));\n } else {\n // insert a blank <thead> for listings without a subcat\n tableChildren.push(ScheduleCategorySection__jsx('thead', {}, 'thead_' + tableChildren.length));\n }\n\n var subcategoryListings = listingsGroupedBySubcategory[subcategory && subcategory.name || subcategory] || [];\n\n var filteredSubcategories = [];\n if (subcatgoryNotFiltered) {\n filteredSubcategories = subcategoryListings;\n }\n\n tableChildren.push(ScheduleCategorySection__jsx('tbody', {}, 'tbody_' + tableChildren.length, filteredSubcategories.map(function (listing) {\n var showLock = Object(isContentLocked[\"a\" /* default */])(Object(getContentFromListing[\"a\" /* default */])(listing), userAuth, preauthorizedResources);\n\n var key = showLock ? ScheduleCategorySection__jsx('span', {\n className: 'icon-font-before icon-lock-solid-before'\n }) : null;\n\n var networkAbbreviation = listing.broadcasts[0].abbreviation;\n var packageNames = listing.broadcasts[0].packages;\n var images = getNetworkImage(networkAbbreviation, packageNames);\n var imageNode = images && images.map(function (_ref) {\n var image = _ref.image,\n alt = _ref.alt;\n return ScheduleCategorySection__jsx('img', {\n src: image,\n alt: alt\n });\n });\n var startTime = listing.startTime && dateFormat[\"a\" /* default */].toISOString(listing.startTime);\n var displayTime = startTime && dateFormat[\"a\" /* default */].dateFormat(startTime, dateFormatStr);\n\n var placement = 'schedule-' + listing.type;\n var listingContent = Object(getContentFromListing[\"a\" /* default */])(listing);\n var listingName = getListingNameFromStream(listing, packageNames, [enums[\"s\" /* Entitlements */].ESPN_PLUS, enums[\"s\" /* Entitlements */].ESPN_PLUS_MLB, enums[\"s\" /* Entitlements */].ESPN_PLUS_NHL]);\n\n return ScheduleCategorySection__jsx('tr', {}, 'tr_' + listing.id, ScheduleCategorySection__jsx('td', {\n className: 'schedule__time'\n }, void 0, displayTime), ScheduleCategorySection__jsx('td', {\n className: 'schedule__competitors'\n }, void 0, ScheduleCategorySection__jsx(schedule_ScheduleLink, {\n content: listingContent,\n listing: listing,\n name: listingName,\n placement: placement,\n blackoutMessage: blackoutMessage,\n bucketName: bucketName\n })), ScheduleCategorySection__jsx('td', {\n className: 'schedule__auth'\n }, void 0, key), ScheduleCategorySection__jsx('td', {\n className: 'schedule__network'\n }, void 0, ScheduleCategorySection__jsx('div', {\n className: 'schedule__network__content'\n }, void 0, imageNode)));\n })));\n });\n\n return ScheduleCategorySection__jsx('div', {}, category.id, showSectionCaption && ScheduleCategorySection__jsx('div', {}, void 0, ScheduleCategorySection__jsx('h2', {\n className: h2ClassName\n }, void 0, ScheduleCategorySection__jsx('span', {\n className: 'long-caption'\n }, void 0, category.name)), select), ScheduleCategorySection__jsx(schedule_ResponsiveTable, {}, void 0, tableChildren));\n }\n }]);\n\n return ScheduleCategorySection;\n}(react[\"Component\"]);\n\nScheduleCategorySection_ScheduleCategorySection.defaultProps = {\n showSectionCaption: true\n};\n\n/* harmony default export */ var schedule_ScheduleCategorySection = __webpack_exports__[\"a\"] = (ScheduleCategorySection_ScheduleCategorySection);\n\n/***/ }),\n/* 749 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {var React = __webpack_require__(0);\nvar ReactDOM = __webpack_require__(81);\nvar ExecutionEnvironment = __webpack_require__(750);\nvar ModalPortal = React.createFactory(__webpack_require__(751));\nvar ariaAppHider = __webpack_require__(763);\nvar elementClass = __webpack_require__(764);\nvar renderSubtreeIntoContainer = __webpack_require__(81).unstable_renderSubtreeIntoContainer;\nvar Assign = __webpack_require__(365);\n\nvar SafeHTMLElement = ExecutionEnvironment.canUseDOM ? window.HTMLElement : {};\nvar AppElement = ExecutionEnvironment.canUseDOM ? document.body : {appendChild: function() {}};\n\nvar Modal = React.createClass({\n\n displayName: 'Modal',\n statics: {\n setAppElement: function(element) {\n AppElement = ariaAppHider.setElement(element);\n },\n injectCSS: function() {\n \"production\" !== \"production\"\n && console.warn('React-Modal: injectCSS has been deprecated ' +\n 'and no longer has any effect. It will be removed in a later version');\n }\n },\n\n propTypes: {\n isOpen: React.PropTypes.bool.isRequired,\n style: React.PropTypes.shape({\n content: React.PropTypes.object,\n overlay: React.PropTypes.object\n }),\n appElement: React.PropTypes.instanceOf(SafeHTMLElement),\n onAfterOpen: React.PropTypes.func,\n onRequestClose: React.PropTypes.func,\n closeTimeoutMS: React.PropTypes.number,\n ariaHideApp: React.PropTypes.bool,\n shouldCloseOnOverlayClick: React.PropTypes.bool\n },\n\n getDefaultProps: function () {\n return {\n isOpen: false,\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldCloseOnOverlayClick: true\n };\n },\n\n componentDidMount: function() {\n this.node = document.createElement('div');\n this.node.className = 'ReactModalPortal';\n document.body.appendChild(this.node);\n this.renderPortal(this.props);\n },\n\n componentWillReceiveProps: function(newProps) {\n this.renderPortal(newProps);\n },\n\n componentWillUnmount: function() {\n ReactDOM.unmountComponentAtNode(this.node);\n document.body.removeChild(this.node);\n elementClass(document.body).remove('ReactModal__Body--open');\n },\n\n renderPortal: function(props) {\n if (props.isOpen) {\n elementClass(document.body).add('ReactModal__Body--open');\n } else {\n elementClass(document.body).remove('ReactModal__Body--open');\n }\n\n if (props.ariaHideApp) {\n ariaAppHider.toggle(props.isOpen, props.appElement);\n }\n\n this.portal = renderSubtreeIntoContainer(this, ModalPortal(Assign({}, props, {defaultStyles: Modal.defaultStyles})), this.node);\n },\n\n render: function () {\n return React.DOM.noscript();\n }\n});\n\nModal.defaultStyles = {\n overlay: {\n position : 'fixed',\n top : 0,\n left : 0,\n right : 0,\n bottom : 0,\n backgroundColor : 'rgba(255, 255, 255, 0.75)'\n },\n content: {\n position : 'absolute',\n top : '40px',\n left : '40px',\n right : '40px',\n bottom : '40px',\n border : '1px solid #ccc',\n background : '#fff',\n overflow : 'auto',\n WebkitOverflowScrolling : 'touch',\n borderRadius : '4px',\n outline : 'none',\n padding : '20px'\n }\n}\n\nmodule.exports = Modal\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 750 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n\n\n/***/ }),\n/* 751 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar React = __webpack_require__(0);\nvar div = React.DOM.div;\nvar focusManager = __webpack_require__(752);\nvar scopeTab = __webpack_require__(753);\nvar Assign = __webpack_require__(365);\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: {\n base: 'ReactModal__Overlay',\n afterOpen: 'ReactModal__Overlay--after-open',\n beforeClose: 'ReactModal__Overlay--before-close'\n },\n content: {\n base: 'ReactModal__Content',\n afterOpen: 'ReactModal__Content--after-open',\n beforeClose: 'ReactModal__Content--before-close'\n }\n};\n\nvar ModalPortal = module.exports = React.createClass({\n\n displayName: 'ModalPortal',\n\n getDefaultProps: function() {\n return {\n style: {\n overlay: {},\n content: {}\n }\n };\n },\n\n getInitialState: function() {\n return {\n afterOpen: false,\n beforeClose: false\n };\n },\n\n componentDidMount: function() {\n // Focus needs to be set when mounting and already open\n if (this.props.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n }\n },\n\n componentWillUnmount: function() {\n clearTimeout(this.closeTimer);\n },\n\n componentWillReceiveProps: function(newProps) {\n // Focus only needs to be set once when the modal is being opened\n if (!this.props.isOpen && newProps.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n } else if (this.props.isOpen && !newProps.isOpen) {\n this.close();\n }\n },\n\n componentDidUpdate: function () {\n if (this.focusAfterRender) {\n this.focusContent();\n this.setFocusAfterRender(false);\n }\n },\n\n setFocusAfterRender: function (focus) {\n this.focusAfterRender = focus;\n },\n\n open: function() {\n if (this.state.afterOpen && this.state.beforeClose) {\n clearTimeout(this.closeTimer);\n this.setState({ beforeClose: false });\n } else {\n focusManager.setupScopedFocus(this.node);\n focusManager.markForFocusLater();\n this.setState({isOpen: true}, function() {\n this.setState({afterOpen: true});\n\n if (this.props.isOpen && this.props.onAfterOpen) {\n this.props.onAfterOpen();\n }\n }.bind(this));\n }\n },\n\n close: function() {\n if (!this.ownerHandlesClose())\n return;\n if (this.props.closeTimeoutMS > 0)\n this.closeWithTimeout();\n else\n this.closeWithoutTimeout();\n },\n\n focusContent: function() {\n this.refs.content.focus();\n },\n\n closeWithTimeout: function() {\n this.setState({beforeClose: true}, function() {\n this.closeTimer = setTimeout(this.closeWithoutTimeout, this.props.closeTimeoutMS);\n }.bind(this));\n },\n\n closeWithoutTimeout: function() {\n this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n }, this.afterClose);\n },\n\n afterClose: function() {\n focusManager.returnFocus();\n focusManager.teardownScopedFocus();\n },\n\n handleKeyDown: function(event) {\n if (event.keyCode == 9 /*tab*/) scopeTab(this.refs.content, event);\n if (event.keyCode == 27 /*esc*/) {\n event.preventDefault();\n this.requestClose(event);\n }\n },\n\n handleOverlayClick: function(event) {\n var node = event.target\n\n while (node) {\n if (node === this.refs.content) return\n node = node.parentNode\n }\n\n if (this.props.shouldCloseOnOverlayClick) {\n if (this.ownerHandlesClose())\n this.requestClose(event);\n else\n this.focusContent();\n }\n },\n\n requestClose: function(event) {\n if (this.ownerHandlesClose())\n this.props.onRequestClose(event);\n },\n\n ownerHandlesClose: function() {\n return this.props.onRequestClose;\n },\n\n shouldBeClosed: function() {\n return !this.props.isOpen && !this.state.beforeClose;\n },\n\n buildClassName: function(which, additional) {\n var className = CLASS_NAMES[which].base;\n if (this.state.afterOpen)\n className += ' '+CLASS_NAMES[which].afterOpen;\n if (this.state.beforeClose)\n className += ' '+CLASS_NAMES[which].beforeClose;\n return additional ? className + ' ' + additional : className;\n },\n\n render: function() {\n var contentStyles = (this.props.className) ? {} : this.props.defaultStyles.content;\n var overlayStyles = (this.props.overlayClassName) ? {} : this.props.defaultStyles.overlay;\n\n return this.shouldBeClosed() ? div() : (\n div({\n ref: \"overlay\",\n className: this.buildClassName('overlay', this.props.overlayClassName),\n style: Assign({}, overlayStyles, this.props.style.overlay || {}),\n onClick: this.handleOverlayClick\n },\n div({\n ref: \"content\",\n style: Assign({}, contentStyles, this.props.style.content || {}),\n className: this.buildClassName('content', this.props.className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown\n },\n this.props.children\n )\n )\n );\n }\n});\n\n\n/***/ }),\n/* 752 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(console) {var findTabbable = __webpack_require__(364);\nvar modalElement = null;\nvar focusLaterElement = null;\nvar needToFocus = false;\n\nfunction handleBlur(event) {\n needToFocus = true;\n}\n\nfunction handleFocus(event) {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation \n // is that the document.body gets focus, and then we focus our element right \n // after, seems fine.\n setTimeout(function() {\n if (modalElement.contains(document.activeElement))\n return;\n var el = (findTabbable(modalElement)[0] || modalElement);\n el.focus();\n }, 0);\n }\n}\n\nexports.markForFocusLater = function() {\n focusLaterElement = document.activeElement;\n};\n\nexports.returnFocus = function() {\n try {\n focusLaterElement.focus();\n }\n catch (e) {\n console.warn('You tried to return focus to '+focusLaterElement+' but it is not in the DOM anymore');\n }\n focusLaterElement = null;\n};\n\nexports.setupScopedFocus = function(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener('blur', handleBlur, false);\n document.addEventListener('focus', handleFocus, true);\n } else {\n window.attachEvent('onBlur', handleBlur);\n document.attachEvent('onFocus', handleFocus);\n }\n};\n\nexports.teardownScopedFocus = function() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener('blur', handleBlur);\n document.removeEventListener('focus', handleFocus);\n } else {\n window.detachEvent('onBlur', handleBlur);\n document.detachEvent('onFocus', handleFocus);\n }\n};\n\n\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 753 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar findTabbable = __webpack_require__(364);\n\nmodule.exports = function(node, event) {\n var tabbable = findTabbable(node);\n if (!tabbable.length) {\n event.preventDefault();\n return;\n }\n var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];\n var leavingFinalTabbable = (\n finalTabbable === document.activeElement ||\n // handle immediate shift+tab after opening with mouse\n node === document.activeElement\n );\n if (!leavingFinalTabbable) return;\n event.preventDefault();\n var target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];\n target.focus();\n};\n\n\n/***/ }),\n/* 754 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * lodash 3.2.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar baseCopy = __webpack_require__(755),\n keys = __webpack_require__(366);\n\n/**\n * The base implementation of `_.assign` without support for argument juggling,\n * multiple sources, and `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return source == null\n ? object\n : baseCopy(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n\n/***/ }),\n/* 755 */\n/***/ (function(module, exports) {\n\n/**\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n\n\n/***/ }),\n/* 756 */\n/***/ (function(module, exports) {\n\n/**\n * lodash 3.9.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = getNative;\n\n\n/***/ }),\n/* 757 */\n/***/ (function(module, exports) {\n\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isArguments;\n\n\n/***/ }),\n/* 758 */\n/***/ (function(module, exports) {\n\n/**\n * lodash 3.0.4 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 759 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * lodash 3.1.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar bindCallback = __webpack_require__(760),\n isIterateeCall = __webpack_require__(761),\n restParam = __webpack_require__(762);\n\n/**\n * Creates a function that assigns properties of source object(s) to a given\n * destination object.\n *\n * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n/***/ }),\n/* 760 */\n/***/ (function(module, exports) {\n\n/**\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\n/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = bindCallback;\n\n\n/***/ }),\n/* 761 */\n/***/ (function(module, exports) {\n\n/**\n * lodash 3.0.9 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isIterateeCall;\n\n\n/***/ }),\n/* 762 */\n/***/ (function(module, exports) {\n\n/**\n * lodash 3.6.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n\n\n/***/ }),\n/* 763 */\n/***/ (function(module, exports) {\n\nvar _element = typeof document !== 'undefined' ? document.body : null;\n\nfunction setElement(element) {\n if (typeof element === 'string') {\n var el = document.querySelectorAll(element);\n element = 'length' in el ? el[0] : el;\n }\n _element = element || _element;\n return _element;\n}\n\nfunction hide(appElement) {\n validateElement(appElement);\n (appElement || _element).setAttribute('aria-hidden', 'true');\n}\n\nfunction show(appElement) {\n validateElement(appElement);\n (appElement || _element).removeAttribute('aria-hidden');\n}\n\nfunction toggle(shouldHide, appElement) {\n if (shouldHide)\n hide(appElement);\n else\n show(appElement);\n}\n\nfunction validateElement(appElement) {\n if (!appElement && !_element)\n throw new Error('react-modal: You must set an element with `Modal.setAppElement(el)` to make this accessible');\n}\n\nfunction resetForTesting() {\n _element = document.body;\n}\n\nexports.toggle = toggle;\nexports.setElement = setElement;\nexports.show = show;\nexports.hide = hide;\nexports.resetForTesting = resetForTesting;\n\n\n/***/ }),\n/* 764 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(opts) {\n return new ElementClass(opts)\n}\n\nfunction indexOf(arr, prop) {\n if (arr.indexOf) return arr.indexOf(prop)\n for (var i = 0, len = arr.length; i < len; i++)\n if (arr[i] === prop) return i\n return -1\n}\n\nfunction ElementClass(opts) {\n if (!(this instanceof ElementClass)) return new ElementClass(opts)\n var self = this\n if (!opts) opts = {}\n\n // similar doing instanceof HTMLElement but works in IE8\n if (opts.nodeType) opts = {el: opts}\n\n this.opts = opts\n this.el = opts.el || document.body\n if (typeof this.el !== 'object') this.el = document.querySelector(this.el)\n}\n\nElementClass.prototype.add = function(className) {\n var el = this.el\n if (!el) return\n if (el.className === \"\") return el.className = className\n var classes = el.className.split(' ')\n if (indexOf(classes, className) > -1) return classes\n classes.push(className)\n el.className = classes.join(' ')\n return classes\n}\n\nElementClass.prototype.remove = function(className) {\n var el = this.el\n if (!el) return\n if (el.className === \"\") return\n var classes = el.className.split(' ')\n var idx = indexOf(classes, className)\n if (idx > -1) classes.splice(idx, 1)\n el.className = classes.join(' ')\n return classes\n}\n\nElementClass.prototype.has = function(className) {\n var el = this.el\n if (!el) return\n var classes = el.className.split(' ')\n return indexOf(classes, className) > -1\n}\n\nElementClass.prototype.toggle = function(className) {\n var el = this.el\n if (!el) return\n if (this.has(className)) this.remove(className)\n else this.add(className)\n}\n\n\n/***/ }),\n/* 765 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _slider = __webpack_require__(766);\n\nvar _slider2 = _interopRequireDefault(_slider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _slider2.default;\n\n/***/ }),\n/* 766 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _innerSlider = __webpack_require__(767);\n\nvar _json2mq = __webpack_require__(774);\n\nvar _json2mq2 = _interopRequireDefault(_json2mq);\n\nvar _defaultProps = __webpack_require__(776);\n\nvar _defaultProps2 = _interopRequireDefault(_defaultProps);\n\nvar _innerSliderUtils = __webpack_require__(156);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && __webpack_require__(777);\n\nvar Slider = function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n function Slider(props) {\n _classCallCheck(this, Slider);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.innerSliderRefHandler = function (ref) {\n return _this.innerSlider = ref;\n };\n\n _this.slickPrev = function () {\n return _this.innerSlider.slickPrev();\n };\n\n _this.slickNext = function () {\n return _this.innerSlider.slickNext();\n };\n\n _this.slickGoTo = function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n };\n\n _this.slickPause = function () {\n return _this.innerSlider.pause(\"paused\");\n };\n\n _this.slickPlay = function () {\n return _this.innerSlider.autoPlay(\"play\");\n };\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n Slider.prototype.media = function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n this._responsiveMediaHandlers.push({ query: query, handler: handler });\n };\n\n // handles responsive breakpoints\n\n\n Slider.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n });\n // sort them in increasing order of their numerical value\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery = void 0;\n if (index === 0) {\n bQuery = (0, _json2mq2.default)({ minWidth: 0, maxWidth: breakpoint });\n } else {\n bQuery = (0, _json2mq2.default)({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n }\n // when not using server side rendering\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({ breakpoint: breakpoint });\n });\n });\n\n // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n var query = (0, _json2mq2.default)({ minWidth: breakpoints.slice(-1)[0] });\n\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({ breakpoint: null });\n });\n }\n };\n\n Slider.prototype.componentWillUnmount = function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n };\n\n Slider.prototype.render = function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _extends({}, _defaultProps2.default, this.props, newProps[0].settings);\n } else {\n settings = _extends({}, _defaultProps2.default, this.props);\n }\n\n // force scrolling by one if centerMode is on\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && \"production\" !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \" + settings.slidesToScroll);\n }\n settings.slidesToScroll = 1;\n }\n // force showing one slide and scrolling by one if the fade mode is on\n if (settings.fade) {\n if (settings.slidesToShow > 1 && \"production\" !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \" + settings.slidesToShow);\n }\n if (settings.slidesToScroll > 1 && \"production\" !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \" + settings.slidesToScroll);\n }\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n }\n\n // makes sure that children is an array, even when there is only 1 child\n var children = _react2.default.Children.toArray(this.props.children);\n\n // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n return !!child;\n });\n\n // rows and slidesPerRow logic is handled here\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n var newChildren = [];\n var currentWidth = null;\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n if (k >= children.length) break;\n row.push(_react2.default.cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: 100 / settings.slidesPerRow + \"%\",\n display: \"inline-block\"\n }\n }));\n }\n newSlide.push(_react2.default.createElement(\n \"div\",\n { key: 10 * i + j },\n row\n ));\n }\n if (settings.variableWidth) {\n newChildren.push(_react2.default.createElement(\n \"div\",\n { key: i, style: { width: currentWidth } },\n newSlide\n ));\n } else {\n newChildren.push(_react2.default.createElement(\n \"div\",\n { key: i },\n newSlide\n ));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return _react2.default.createElement(\n \"div\",\n { className: className },\n newChildren\n );\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n return _react2.default.createElement(\n _innerSlider.InnerSlider,\n _extends({ ref: this.innerSliderRefHandler }, settings),\n newChildren\n );\n };\n\n return Slider;\n}(_react2.default.Component);\n\nexports.default = Slider;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 767 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.InnerSlider = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(81);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _initialState = __webpack_require__(768);\n\nvar _initialState2 = _interopRequireDefault(_initialState);\n\nvar _lodash = __webpack_require__(769);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _classnames = __webpack_require__(14);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _innerSliderUtils = __webpack_require__(156);\n\nvar _track = __webpack_require__(770);\n\nvar _dots = __webpack_require__(771);\n\nvar _arrows = __webpack_require__(772);\n\nvar _resizeObserverPolyfill = __webpack_require__(773);\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar InnerSlider = exports.InnerSlider = function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n function InnerSlider(props) {\n _classCallCheck(this, InnerSlider);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.listRefHandler = function (ref) {\n return _this.list = ref;\n };\n\n _this.trackRefHandler = function (ref) {\n return _this.track = ref;\n };\n\n _this.adaptHeight = function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\" + _this.state.currentSlide + \"\\\"]\");\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n };\n\n _this.componentWillMount = function () {\n _this.ssrInit();\n _this.props.onInit && _this.props.onInit();\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_extends({}, _this.props, _this.state));\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n };\n\n _this.componentDidMount = function () {\n var spec = _extends({ listRef: _this.list, trackRef: _this.track }, _this.props);\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n _this.ro = new _resizeObserverPolyfill2.default(function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n _this.ro.observe(_this.list);\n Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n // To support server-side rendering\n if (!window) {\n return;\n }\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n };\n\n _this.componentWillUnmount = function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n _this.callbackTimers = [];\n }\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n };\n\n _this.componentWillReceiveProps = function (nextProps) {\n var spec = _extends({\n listRef: _this.list,\n trackRef: _this.track\n }, nextProps, _this.state);\n var setTrackStyle = false;\n for (var _iterator = Object.keys(_this.props), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n if (!nextProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n if (_typeof(nextProps[key]) === \"object\" || typeof nextProps[key] === \"function\") {\n continue;\n }\n if (nextProps[key] !== _this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react2.default.Children.count(nextProps.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react2.default.Children.count(nextProps.children) - nextProps.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n if (nextProps.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n };\n\n _this.componentDidUpdate = function () {\n _this.checkImagesLoad();\n _this.props.onReInit && _this.props.onReInit();\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_extends({}, _this.props, _this.state));\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n _this.adaptHeight();\n };\n\n _this.onWindowResized = function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash2.default)(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n _this.debouncedResize();\n };\n\n _this.resizeWindow = function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (!_reactDom2.default.findDOMNode(_this.track)) return;\n var spec = _extends({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props, _this.state);\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n });\n // animating state should be cleared while resizing, otherwise autoplay stops working\n _this.setState({\n animating: false\n });\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n };\n\n _this.updateState = function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _extends({}, spec, updatedState, { slideIndex: updatedState.currentSlide });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _extends({}, spec, { left: targetLeft });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n if (setTrackStyle || _react2.default.Children.count(_this.props.children) !== _react2.default.Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n _this.setState(updatedState, callback);\n };\n\n _this.ssrInit = function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_extends({}, _this.props, _this.state, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_extends({}, _this.props, _this.state, {\n slideCount: _this.props.children.length\n }));\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n for (var _i2 = 0; _i2 < postClones; _i2++) {\n _trackWidth += childrenWidths[_i2];\n }\n for (var _i3 = 0; _i3 < _this.state.currentSlide; _i3++) {\n _trackLeft += childrenWidths[_i3];\n }\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n if (_this.props.centerMode) {\n var currentWidth = childrenWidths[_this.state.currentSlide] + \"px\";\n _trackStyle.left = \"calc(\" + _trackStyle.left + \" + (100% - \" + currentWidth + \") / 2 ) \";\n }\n _this.setState({\n trackStyle: _trackStyle\n });\n return;\n }\n var childrenCount = _react2.default.Children.count(_this.props.children);\n var spec = _extends({}, _this.props, _this.state, { slideCount: childrenCount });\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n _this.setState({\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n });\n };\n\n _this.checkImagesLoad = function () {\n var images = document.querySelectorAll(\".slick-slide img\");\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n };\n\n _this.progressiveLazyLoad = function () {\n var slidesToLoad = [];\n var spec = _extends({}, _this.props, _this.state);\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n };\n\n _this.slideHandler = function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n currentSlide = _this$props.currentSlide,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_extends({\n index: index\n }, _this.props, _this.state, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n _this.setState(state, function () {\n asNavFor && asNavFor.innerSlider.state.currentSlide !== currentSlide && asNavFor.innerSlider.slideHandler(index);\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({ animating: animating });\n }, 10));\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n };\n\n _this.changeSlide = function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _extends({}, _this.props, _this.state);\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n };\n\n _this.clickHandler = function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n _this.clickable = true;\n };\n\n _this.keyHandler = function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({ message: dir });\n };\n\n _this.selectHandler = function (options) {\n _this.changeSlide(options);\n };\n\n _this.disableBodyScroll = function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n window.ontouchmove = preventDefault;\n };\n\n _this.enableBodyScroll = function () {\n window.ontouchmove = null;\n };\n\n _this.swipeStart = function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n };\n\n _this.swipeMove = function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _extends({}, _this.props, _this.state, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n _this.setState(state);\n };\n\n _this.swipeEnd = function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _extends({}, _this.props, _this.state, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n _this.setState(state);\n if (triggerSlideHandler === undefined) return;\n _this.slideHandler(triggerSlideHandler);\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n };\n\n _this.slickPrev = function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({ message: \"previous\" });\n }, 0));\n };\n\n _this.slickNext = function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({ message: \"next\" });\n }, 0));\n };\n\n _this.slickGoTo = function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n };\n\n _this.play = function () {\n var nextIndex;\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_extends({}, _this.props, _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n };\n\n _this.autoPlay = function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n var autoplaying = _this.state.autoplaying;\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n _this.setState({ autoplaying: \"playing\" });\n };\n\n _this.pause = function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n var autoplaying = _this.state.autoplaying;\n if (pauseType === \"paused\") {\n _this.setState({ autoplaying: \"paused\" });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({ autoplaying: \"focused\" });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({ autoplaying: \"hovered\" });\n }\n }\n };\n\n _this.onDotsOver = function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n };\n\n _this.onDotsLeave = function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n };\n\n _this.onTrackOver = function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n };\n\n _this.onTrackLeave = function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n };\n\n _this.onSlideFocus = function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n };\n\n _this.onSlideBlur = function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n };\n\n _this.render = function () {\n var className = (0, _classnames2.default)(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n var spec = _extends({}, _this.props, _this.state);\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n\n trackProps = _extends({}, trackProps, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect ? _this.selectHandler : null\n });\n\n var dots;\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n\n dotProps = _extends({}, dotProps, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = _react2.default.createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = _react2.default.createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = _react2.default.createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _extends({}, verticalHeightStyle, centerPaddingStyle);\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.swipeEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n\n var innerSliderProps = {\n className: className,\n dir: \"ltr\"\n };\n\n if (_this.props.unslick) {\n listProps = { className: \"slick-list\" };\n innerSliderProps = { className: className };\n }\n return _react2.default.createElement(\n \"div\",\n innerSliderProps,\n !_this.props.unslick ? prevArrow : \"\",\n _react2.default.createElement(\n \"div\",\n _extends({ ref: _this.listRefHandler }, listProps),\n _react2.default.createElement(\n _track.Track,\n _extends({ ref: _this.trackRefHandler }, trackProps),\n _this.props.children\n )\n ),\n !_this.props.unslick ? nextArrow : \"\",\n !_this.props.unslick ? dots : \"\"\n );\n };\n\n _this.list = null;\n _this.track = null;\n _this.state = _extends({}, _initialState2.default, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react2.default.Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n return _this;\n }\n\n return InnerSlider;\n}(_react2.default.Component);\n\n/***/ }),\n/* 768 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false, // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: { startX: 0, startY: 0, curX: 0, curY: 0 },\n trackStyle: {},\n trackWidth: 0\n};\n\nexports.default = initialState;\n\n/***/ }),\n/* 769 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))\n\n/***/ }),\n/* 770 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.Track = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = __webpack_require__(14);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _innerSliderUtils = __webpack_require__(156);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n slickCloned = index < 0 || index >= spec.slideCount;\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n var slickCurrent = index === spec.currentSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n style.WebkitTransition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n var childrenCount = _react2.default.Children.count(spec.children);\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react2.default.Children.forEach(spec.children, function (elem, index) {\n var child = void 0;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n };\n\n // in case of lazyLoad, whether or not we want to fetch the slide\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = _react2.default.createElement(\"div\", null);\n }\n var childStyle = getSlideStyle(_extends({}, spec, { index: index }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_extends({}, spec, { index: index }));\n // push a cloned element of the desired slide\n slides.push(_react2.default.cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames2.default)(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _extends({ outline: \"none\" }, child.props.style || {}, childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n\n // if slide needs to be precloned or postcloned\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n if (key >= startIndex) {\n child = elem;\n }\n slideClasses = getSlideClasses(_extends({}, spec, { index: key }));\n preCloneSlides.push(_react2.default.cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames2.default)(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _extends({}, child.props.style || {}, childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n if (key < endIndex) {\n child = elem;\n }\n slideClasses = getSlideClasses(_extends({}, spec, { index: key }));\n postCloneSlides.push(_react2.default.cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames2.default)(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _extends({}, child.props.style || {}, childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = exports.Track = function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n function Track() {\n _classCallCheck(this, Track);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n Track.prototype.render = function render() {\n var slides = renderSlides(this.props);\n var _props = this.props,\n onMouseEnter = _props.onMouseEnter,\n onMouseOver = _props.onMouseOver,\n onMouseLeave = _props.onMouseLeave;\n\n var mouseEvents = { onMouseEnter: onMouseEnter, onMouseOver: onMouseOver, onMouseLeave: onMouseLeave };\n return _react2.default.createElement(\n \"div\",\n _extends({\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents),\n slides\n );\n };\n\n return Track;\n}(_react2.default.PureComponent);\n\n/***/ }),\n/* 771 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.Dots = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = __webpack_require__(14);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nvar Dots = exports.Dots = function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n Dots.prototype.clickHandler = function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n };\n\n Dots.prototype.render = function render() {\n var _this2 = this;\n\n var dotCount = getDotCount({\n slideCount: this.props.slideCount,\n slidesToScroll: this.props.slidesToScroll,\n slidesToShow: this.props.slidesToShow,\n infinite: this.props.infinite\n });\n\n // Apply join & split to Array to pre-fill it for IE8\n //\n // Credit: http://stackoverflow.com/a/13735425/1849458\n var _props = this.props,\n onMouseEnter = _props.onMouseEnter,\n onMouseOver = _props.onMouseOver,\n onMouseLeave = _props.onMouseLeave;\n\n var mouseEvents = { onMouseEnter: onMouseEnter, onMouseOver: onMouseOver, onMouseLeave: onMouseLeave };\n var dots = Array.apply(null, Array(dotCount + 1).join(\"0\").split(\"\")).map(function (x, i) {\n var leftBound = i * _this2.props.slidesToScroll;\n var rightBound = i * _this2.props.slidesToScroll + (_this2.props.slidesToScroll - 1);\n var className = (0, _classnames2.default)({\n \"slick-active\": _this2.props.currentSlide >= leftBound && _this2.props.currentSlide <= rightBound\n });\n\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: _this2.props.slidesToScroll,\n currentSlide: _this2.props.currentSlide\n };\n\n var onClick = _this2.clickHandler.bind(_this2, dotOptions);\n return _react2.default.createElement(\n \"li\",\n { key: i, className: className },\n _react2.default.cloneElement(_this2.props.customPaging(i), { onClick: onClick })\n );\n });\n\n return _react2.default.cloneElement(this.props.appendDots(dots), _extends({\n className: this.props.dotsClass\n }, mouseEvents));\n };\n\n return Dots;\n}(_react2.default.PureComponent);\n\n/***/ }),\n/* 772 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.NextArrow = exports.PrevArrow = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = __webpack_require__(14);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _innerSliderUtils = __webpack_require__(156);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar PrevArrow = exports.PrevArrow = function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n PrevArrow.prototype.clickHandler = function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n this.props.clickHandler(options, e);\n };\n\n PrevArrow.prototype.render = function render() {\n var prevClasses = { \"slick-arrow\": true, \"slick-prev\": true };\n var prevHandler = this.clickHandler.bind(this, { message: \"previous\" });\n\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: (0, _classnames2.default)(prevClasses),\n style: { display: \"block\" },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow = void 0;\n\n if (this.props.prevArrow) {\n prevArrow = _react2.default.cloneElement(this.props.prevArrow, _extends({}, prevArrowProps, customProps));\n } else {\n prevArrow = _react2.default.createElement(\n \"button\",\n _extends({ key: \"0\", type: \"button\" }, prevArrowProps),\n \" \",\n \"Previous\"\n );\n }\n\n return prevArrow;\n };\n\n return PrevArrow;\n}(_react2.default.PureComponent);\n\nvar NextArrow = exports.NextArrow = function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n\n return _possibleConstructorReturn(this, _React$PureComponent2.apply(this, arguments));\n }\n\n NextArrow.prototype.clickHandler = function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n this.props.clickHandler(options, e);\n };\n\n NextArrow.prototype.render = function render() {\n var nextClasses = { \"slick-arrow\": true, \"slick-next\": true };\n var nextHandler = this.clickHandler.bind(this, { message: \"next\" });\n\n if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: (0, _classnames2.default)(nextClasses),\n style: { display: \"block\" },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow = void 0;\n\n if (this.props.nextArrow) {\n nextArrow = _react2.default.cloneElement(this.props.nextArrow, _extends({}, nextArrowProps, customProps));\n } else {\n nextArrow = _react2.default.createElement(\n \"button\",\n _extends({ key: \"1\", type: \"button\" }, nextArrowProps),\n \" \",\n \"Next\"\n );\n }\n\n return nextArrow;\n };\n\n return NextArrow;\n}(_react2.default.PureComponent);\n\n/***/ }),\n/* 773 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* WEBPACK VAR INJECTION */(function(global) {/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(24)))\n\n/***/ }),\n/* 774 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar camel2hyphen = __webpack_require__(775);\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;\n\n/***/ }),\n/* 775 */\n/***/ (function(module, exports) {\n\nvar camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;\n\n/***/ }),\n/* 776 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return _react2.default.createElement(\n \"ul\",\n { style: { display: \"block\" } },\n dots\n );\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return _react2.default.createElement(\n \"button\",\n null,\n i + 1\n );\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true\n};\n\nexports.default = defaultProps;\n\n/***/ }),\n/* 777 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MediaQueryDispatch = __webpack_require__(778);\nmodule.exports = new MediaQueryDispatch();\n\n\n/***/ }),\n/* 778 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MediaQuery = __webpack_require__(779);\nvar Util = __webpack_require__(368);\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n\n\n/***/ }),\n/* 779 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar QueryHandler = __webpack_require__(780);\nvar each = __webpack_require__(368).each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n\n\n/***/ }),\n/* 780 */\n/***/ (function(module, exports) {\n\n/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n\n\n/***/ }),\n/* 781 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export SyndicatedPlayerPageComponent */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_helmet__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_bluebird__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_bluebird___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_bluebird__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__common_PropTypes__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__lib_auth_canPlayContent__ = __webpack_require__(117);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__lib_auth_getAccessMethodFromAuthTypes__ = __webpack_require__(190);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__lib_auth_getContentId__ = __webpack_require__(60);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__lib_util_isEmpty__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__lib_oneId__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__common_injectIntl__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__common_actions_listingsActions__ = __webpack_require__(206);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__syndicated_actions__ = __webpack_require__(369);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__common_schedule_actions__ = __webpack_require__(96);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__common_page_actions__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__common_actions_authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__common_actions_oneIdActions__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__common_selectors_bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__common_selectors_playerSelector__ = __webpack_require__(153);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__common_selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__common_selectors_providerSelector__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__common_selectors_pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__common_selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__common_selectors_heroSelector__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__common_selectors_routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__syndicated_SyndicatedPlayer__ = __webpack_require__(370);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__syndicated_SyndicatedScheduleModule__ = __webpack_require__(787);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__config__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_29__config__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__modal_messaging_MessagingContainer__ = __webpack_require__(155);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__common_actions_fanActions__ = __webpack_require__(216);\nvar _this2 = this;\n\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new __WEBPACK_IMPORTED_MODULE_3_bluebird___default.a(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return __WEBPACK_IMPORTED_MODULE_3_bluebird___default.a.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar shellVersion = __WEBPACK_IMPORTED_MODULE_29__config___default.a.shellVersion,\n secureCdnHost = __WEBPACK_IMPORTED_MODULE_29__config___default.a.secureCdnHost,\n devStyles = __WEBPACK_IMPORTED_MODULE_29__config___default.a.devStyles;\n\n\nvar BASE_HREF = secureCdnHost + '/redesign/' + shellVersion;\nvar STYLE_HREF = BASE_HREF + '/css/secure';\nif (devStyles) {\n STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nvar OneIdJs = __WEBPACK_IMPORTED_MODULE_10__lib_oneId__[\"b\" /* OneIdJs */];\nvar NEW_WINDOW_MANAGED = __WEBPACK_IMPORTED_MODULE_4__enums__[\"G\" /* SyndicatedPlayerLoginOptions */].NEW_WINDOW_MANAGED;\n\n\nvar SyndicatedPlayerPageComponent = function (_PureComponent) {\n _inherits(SyndicatedPlayerPageComponent, _PureComponent);\n\n function SyndicatedPlayerPageComponent(props) {\n _classCallCheck(this, SyndicatedPlayerPageComponent);\n\n var _this = _possibleConstructorReturn(this, (SyndicatedPlayerPageComponent.__proto__ || Object.getPrototypeOf(SyndicatedPlayerPageComponent)).call(this, props));\n\n _this.state = {\n domainAuth: __WEBPACK_IMPORTED_MODULE_27__syndicated_SyndicatedPlayer__[\"b\" /* domainAuthStatus */].UNKNOWN,\n hovered: false,\n overlayOpened: false\n };\n _this.onParentHost = _this.onParentHost.bind(_this);\n _this.onMouseOver = _this.onMouseOver.bind(_this);\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onOverlayOpened = _this.onOverlayOpened.bind(_this);\n _this.onOverlayClosed = _this.onOverlayClosed.bind(_this);\n return _this;\n }\n\n _createClass(SyndicatedPlayerPageComponent, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _document = document,\n _document$referrer = _document.referrer,\n referrer = _document$referrer === undefined ? '' : _document$referrer;\n\n this.checkDomain(referrer);\n\n var _props = this.props,\n dispatch = _props.dispatch,\n content = _props.content,\n locationBeforeTransitions = _props.routing.locationBeforeTransitions;\n\n var _ref = locationBeforeTransitions || {},\n _ref$query = _ref.query,\n query = _ref$query === undefined ? {} : _ref$query;\n\n var newQuery = void 0;\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_18__common_actions_oneIdActions__[\"h\" /* checkSWIDAuthentication */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_32__common_actions_fanActions__[\"b\" /* createSmartFanAction */])());\n if (content) {\n delete query.eventId;\n delete query.gameId;\n delete query.league;\n newQuery = _extends({}, query, Object(__WEBPACK_IMPORTED_MODULE_8__lib_auth_getContentId__[\"a\" /* default */])(content));\n } else if (query.id || query.eventId || query.channel || query.network) {\n newQuery = query;\n } else if (!query.partner) {\n newQuery = _extends({}, query, {\n network: 'espn'\n });\n }\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"Q\" /* updateRoute */])(newQuery));\n }\n }, {\n key: 'onParentHost',\n value: function onParentHost(href) {\n // this is a fallback when `document.referrer` is empty\n if (!this._domainChecked) {\n this.checkDomain(href);\n }\n }\n }, {\n key: 'onMouseOver',\n value: function onMouseOver() {\n if (this.state.overlayOpened) {\n return;\n }\n this.setState({ hovered: true });\n }\n }, {\n key: 'onMouseOut',\n value: function onMouseOut() {\n if (this.state.overlayOpened) {\n return;\n }\n this.setState({ hovered: false });\n }\n }, {\n key: 'onOverlayOpened',\n value: function onOverlayOpened() {\n this.setState({ overlayOpened: true });\n this.setState({ hovered: false });\n }\n }, {\n key: 'onOverlayClosed',\n value: function onOverlayClosed() {\n this.setState({ overlayOpened: false });\n }\n }, {\n key: 'checkDomain',\n value: function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(href) {\n var _props2, _props2$bootstrap$syn, _props2$bootstrap$syn2, gatedAll, _props2$bootstrap$syn3, gatedIE, dispatch, params, hostResult, host, canAllowDomain, key, _ref3, _ref3$domainAllowed, domainAllowed;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _props2 = this.props, _props2$bootstrap$syn = _props2.bootstrap.syndicatedPlayer;\n _props2$bootstrap$syn = _props2$bootstrap$syn === undefined ? {} : _props2$bootstrap$syn;\n _props2$bootstrap$syn2 = _props2$bootstrap$syn.gatedAll, gatedAll = _props2$bootstrap$syn2 === undefined ? false : _props2$bootstrap$syn2, _props2$bootstrap$syn3 = _props2$bootstrap$syn.gatedIE, gatedIE = _props2$bootstrap$syn3 === undefined ? true : _props2$bootstrap$syn3, dispatch = _props2.dispatch, params = _props2.params;\n hostResult = /https?:\\/\\/([^\\/:?#]+)/.exec(href);\n host = (hostResult && hostResult[1] || '').replace(/^www\\./, ''); // that's how hostname is stored in CMS\n\n canAllowDomain = void 0;\n\n if (!(gatedAll || window.top === window.self)) {\n _context.next = 11;\n break;\n }\n\n // not in iframe, no need for domain check\n this._domainChecked = true;\n canAllowDomain = true;\n _context.next = 30;\n break;\n\n case 11:\n if (!host) {\n _context.next = 29;\n break;\n }\n\n this._domainChecked = true;\n key = window.btoa(host);\n _context.prev = 14;\n _context.next = 17;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_14__syndicated_actions__[\"a\" /* domainCheck */])(key));\n\n case 17:\n _ref3 = _context.sent;\n _ref3$domainAllowed = _ref3.domainAllowed;\n domainAllowed = _ref3$domainAllowed === undefined ? 'false' : _ref3$domainAllowed;\n\n canAllowDomain = domainAllowed === 'true';\n _context.next = 27;\n break;\n\n case 23:\n _context.prev = 23;\n _context.t0 = _context['catch'](14);\n // in the case of unexpected error, we open gate to everyone.\n console.error(_context.t0);\n canAllowDomain = true;\n\n case 27:\n _context.next = 30;\n break;\n\n case 29:\n if (gatedIE) {\n this._domainChecked = true;\n // partner embeds the player directly with iframe, so can't pass parent location,\n // this should apply only for the old browser\n canAllowDomain = true;\n } else {\n console.warn('syndicated player: host unknown');\n }\n\n case 30:\n if (!(canAllowDomain != null)) {\n _context.next = 41;\n break;\n }\n\n if (!canAllowDomain) {\n _context.next = 40;\n break;\n }\n\n _context.prev = 32;\n _context.next = 35;\n return __WEBPACK_IMPORTED_MODULE_3_bluebird___default.a.all([dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__common_actions_authenticationActions__[\"V\" /* createSmartAdobePassInitializeAction */])(params)), dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__common_actions_authenticationActions__[\"W\" /* createSmartIpAuthenticationAction */])()), dispatch(Object(__WEBPACK_IMPORTED_MODULE_18__common_actions_oneIdActions__[\"g\" /* checkOneIDAuthentication */])())]);\n\n case 35:\n _context.next = 40;\n break;\n\n case 37:\n _context.prev = 37;\n _context.t1 = _context['catch'](32);\n\n console.error(_context.t1);\n\n case 40:\n this.setState({\n domainAuth: canAllowDomain ? __WEBPACK_IMPORTED_MODULE_27__syndicated_SyndicatedPlayer__[\"b\" /* domainAuthStatus */].ALLOWED : __WEBPACK_IMPORTED_MODULE_27__syndicated_SyndicatedPlayer__[\"b\" /* domainAuthStatus */].NOT_ALLOWED\n });\n\n case 41:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[14, 23], [32, 37]]);\n }));\n\n function checkDomain(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return checkDomain;\n }()\n }, {\n key: 'render',\n value: function render() {\n var _state = this.state,\n domainAuth = _state.domainAuth,\n hovered = _state.hovered,\n overlayOpened = _state.overlayOpened;\n var _props3 = this.props,\n content = _props3.content,\n canPlayContentFlag = _props3.canPlayContent,\n branding = _props3.branding,\n location = _props3.location,\n page = _props3.page,\n player = _props3.player,\n country = _props3.country,\n providerInfo = _props3.providerInfo,\n adobePassEnv = _props3.adobePassEnv,\n oneIdEnv = _props3.oneIdEnv,\n authStatus = _props3.authStatus,\n _props3$espnPlayerSrc = _props3.espnPlayerSrc,\n espnPlayerJsUrl = _props3$espnPlayerSrc.espnPlayerJsUrl,\n espnPlayerCssUrl = _props3$espnPlayerSrc.espnPlayerCssUrl,\n locationBeforeTransitions = _props3.routing.locationBeforeTransitions,\n messages = _props3.messages,\n formatMessage = _props3.intl.formatMessage;\n\n var _ref4 = locationBeforeTransitions || {},\n _ref4$query = _ref4.query,\n query = _ref4$query === undefined ? {} : _ref4$query;\n\n var showScheduleModule = country === 'US' && (query[__WEBPACK_IMPORTED_MODULE_4__enums__[\"t\" /* Flags */].PARTNER] && query[__WEBPACK_IMPORTED_MODULE_4__enums__[\"t\" /* Flags */].SHOW_SCHEDULE_IN_SYNDICATED_PLAYER] !== 'false' || query[__WEBPACK_IMPORTED_MODULE_4__enums__[\"t\" /* Flags */].SHOW_SCHEDULE_IN_SYNDICATED_PLAYER] === 'true') && domainAuth === __WEBPACK_IMPORTED_MODULE_27__syndicated_SyndicatedPlayer__[\"b\" /* domainAuthStatus */].ALLOWED;\n var authRetry = !!query[__WEBPACK_IMPORTED_MODULE_4__enums__[\"t\" /* Flags */].AUTH_RETRY];\n var xdomainBlocked = !!query[__WEBPACK_IMPORTED_MODULE_4__enums__[\"t\" /* Flags */].XDOMAIN_BLOCKED];\n var errorMessage = void 0;\n if (query.partner && country !== 'US') {\n errorMessage = formatMessage(messages['syndicated.player.message.geo']);\n } else if (domainAuth === __WEBPACK_IMPORTED_MODULE_27__syndicated_SyndicatedPlayer__[\"b\" /* domainAuthStatus */].NOT_ALLOWED) {\n errorMessage = formatMessage(messages['syndicated.player.domain.error']);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_9__lib_util_isEmpty__[\"a\" /* default */])(content)) {\n errorMessage = formatMessage(messages['syndicated.player.message.no-events']);\n } else if (content && content.status === __WEBPACK_IMPORTED_MODULE_4__enums__[\"n\" /* ContentStatus */].UPCOMING) {\n errorMessage = formatMessage(messages['syndicated.player.message.upcoming']);\n }\n\n return _jsx('div', {\n style: { position: 'absolute', width: '100%', height: '100%' },\n onMouseOver: this.onMouseOver,\n onMouseOut: this.onMouseOut\n }, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_2_react_helmet___default.a, {\n meta: [{ name: 'robots', content: 'noindex, nofollow' }],\n link: [{ rel: 'stylesheet', href: STYLE_HREF + '/page.css' }, { rel: 'stylesheet', href: STYLE_HREF + '/watch.css' }, {\n class: '__watch-player-bundle__',\n rel: 'stylesheet',\n href: espnPlayerCssUrl\n }],\n style: [{\n cssText: '\\n body {\\n overflow: hidden;\\n }\\n html, body, #app, .watch-root { width: 100%; height: 100%; margin: 0; padding: 0; }\\n .reload:before {\\n font-family: ESPNVideoIcons;\\n content:\"\\\\e929\";\\n padding-right: 4px;\\n }\\n .vjs-menu li { text-transform: none; }\\n\\n #watchespn-bam-player {\\n background-color: #000 !important;\\n height: 100% !important;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100% !important;\\n z-index: 1000031;\\n }\\n\\n #watchespn-player iframe,\\n #watchespn-bam-player iframe{\\n width: 100%;\\n height: 100%;\\n border: none;\\n }\\n\\n .' + __WEBPACK_IMPORTED_MODULE_31__constants__[\"c\" /* BAM_PROXY_IFRAME_ID */] + ', .' + __WEBPACK_IMPORTED_MODULE_31__constants__[\"c\" /* BAM_PROXY_IFRAME_ID */] + ' iframe {\\n position: absolute;\\n left: -10000px;\\n width: 1px;\\n height: 1px;\\n border: none;\\n }\\n\\n #' + __WEBPACK_IMPORTED_MODULE_31__constants__[\"b\" /* BAM_PROMO_IFRAME_ID */] + ' {\\n width: 100%;\\n height: 506.25px;\\n margin-bottom: 10px;\\n }\\n\\n #' + __WEBPACK_IMPORTED_MODULE_31__constants__[\"b\" /* BAM_PROMO_IFRAME_ID */] + ' iframe,\\n #' + __WEBPACK_IMPORTED_MODULE_31__constants__[\"a\" /* BAM_PAYWALL_IFRAME_ID */] + ' iframe {\\n height: 100% !important;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100% !important;\\n z-index: 1000033;\\n }\\n '\n }],\n script: [{\n src: OneIdJs[oneIdEnv]\n }, {\n src: espnPlayerJsUrl,\n async: true\n }]\n }), _jsx(__WEBPACK_IMPORTED_MODULE_27__syndicated_SyndicatedPlayer__[\"a\" /* default */], {\n content: content,\n canPlayContent: canPlayContentFlag,\n branding: branding,\n query: query,\n location: location,\n page: page,\n player: player,\n providerInfo: providerInfo,\n adobePassEnv: adobePassEnv,\n authStatus: authStatus,\n loginOption: NEW_WINDOW_MANAGED,\n domainAuth: domainAuth,\n authRetry: authRetry,\n xdomainBlocked: xdomainBlocked,\n errorMessage: errorMessage,\n onParentHost: this.onParentHost,\n onSocialOpened: this.onOverlayOpened,\n onSocialClosed: this.onOverlayClosed,\n onCaptionOpened: this.onOverlayOpened,\n onCaptionClosed: this.onOverlayClosed\n }), showScheduleModule && _jsx(__WEBPACK_IMPORTED_MODULE_28__syndicated_SyndicatedScheduleModule__[\"a\" /* default */], {\n location: location,\n hovered: hovered,\n hidden: overlayOpened\n }), _jsx(__WEBPACK_IMPORTED_MODULE_30__modal_messaging_MessagingContainer__[\"a\" /* default */], {}));\n }\n }]);\n\n return SyndicatedPlayerPageComponent;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"PureComponent\"]);\n\nSyndicatedPlayerPageComponent.defaultProps = {\n content: {},\n providers: []\n};\n\nSyndicatedPlayerPageComponent.loadActions = [__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"D\" /* fetchExternalConfig */], __WEBPACK_IMPORTED_MODULE_17__common_actions_authenticationActions__[\"Z\" /* getProviders */], function (params, _ref5) {\n var _ref5$type = _ref5.type,\n type = _ref5$type === undefined ? 'live' : _ref5$type;\n return Object(__WEBPACK_IMPORTED_MODULE_15__common_schedule_actions__[\"l\" /* setStatusFilter */])(type);\n}, function (pathParams, query) {\n return function () {\n var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(dispatch) {\n var id, name, eventId, partner, dates, thumbnail, content, newQuery, payload, _ref8, _ref8$page, edition, heroContent;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n id = 'syndicated-player';\n name = 'SyndicatedPlayer';\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__common_page_actions__[\"r\" /* createRequestPageAction */])(id));\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__common_page_actions__[\"n\" /* completePageLoad */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"w\" /* analyticsReady */])({}));\n\n eventId = query.eventId || query.gameId;\n partner = query.partner, dates = query.dates, thumbnail = query.thumbnail;\n content = void 0;\n\n if (!(!query.id && partner)) {\n _context2.next = 19;\n break;\n }\n\n if (!query.categoryId) {\n _context2.next = 16;\n break;\n }\n\n _context2.next = 12;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_15__common_schedule_actions__[\"k\" /* fetchSyndicatedSchedule */])(query));\n\n case 12:\n content = _context2.sent;\n\n content = content.filter(function (_ref7) {\n var broadcasts = _ref7.broadcasts,\n subcategories = _ref7.subcategories;\n\n var broadcastMatch = broadcasts[0] && broadcasts[0].abbreviation && broadcasts[0].abbreviation.match(/3|_dtc/i);\n\n // Only listings that match the `partner` query param, if provided\n var partnerMatch = true;\n\n if (partner && subcategories[0]) {\n var league = subcategories[0];\n var partnerRegEx = new RegExp(partner + '|' + partner.replace('-', ' '), 'i');\n var codeMatch = league.code && league.code.match(partnerRegEx);\n var idMatch = league.id && league.id.toLowerCase() === partner.toLowerCase();\n var nameMatch = !!(league.name && league.name.match(partnerRegEx));\n\n partnerMatch = codeMatch || idMatch || nameMatch;\n }\n\n return broadcastMatch && partnerMatch;\n })[0];\n _context2.next = 19;\n break;\n\n case 16:\n _context2.next = 18;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_13__common_actions_listingsActions__[\"a\" /* getEventByQuery */])({ partner: partner, dates: dates }));\n\n case 18:\n content = _context2.sent;\n\n case 19:\n newQuery = void 0;\n\n delete query.thumbnail;\n if (content) {\n delete query.eventId;\n delete query.gameId;\n delete query.league;\n delete query.partner;\n delete query.dates;\n newQuery = _extends({}, query, { id: content.id });\n } else if (eventId) {\n newQuery = { eventId: eventId };\n } else if (query.id || query.channel || query.network) {\n newQuery = query;\n } else if (!partner) {\n newQuery = _extends({}, query, {\n network: 'espn'\n });\n }\n\n payload = void 0;\n\n if (!newQuery) {\n _context2.next = 27;\n break;\n }\n\n _context2.next = 26;\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__common_page_actions__[\"t\" /* fetchEventOrVideoByQuery */])(newQuery));\n\n case 26:\n payload = _context2.sent;\n\n case 27:\n _ref8 = payload || {}, _ref8$page = _ref8.page;\n _ref8$page = _ref8$page === undefined ? {} : _ref8$page;\n edition = _ref8$page.edition, heroContent = _ref8$page.contents;\n\n if (heroContent && thumbnail) {\n heroContent.imageHref = thumbnail;\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__common_page_actions__[\"q\" /* createReceivePageAction */])({\n id: id,\n name: name,\n edition: edition,\n heroContent: heroContent,\n isFinal: true\n }));\n\n if (!partner) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__common_actions_appActions__[\"Q\" /* updateRoute */])(newQuery));\n }\n\n case 33:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this2);\n }));\n\n return function (_x2) {\n return _ref6.apply(this, arguments);\n };\n }();\n}];\n\n// it's important to return hero content so that `disableAuthPrompt` gets evaluated correctly in `authenticationAware`\nvar mapStateToProps = function mapStateToProps(state) {\n var schedule = state.schedule;\n\n var userAuth = Object(__WEBPACK_IMPORTED_MODULE_21__common_selectors_authenticationSelectors__[\"r\" /* userAuthSelector */])(state);\n var content = Object(__WEBPACK_IMPORTED_MODULE_25__common_selectors_heroSelector__[\"a\" /* default */])(state);\n var page = Object(__WEBPACK_IMPORTED_MODULE_23__common_selectors_pageSelector__[\"c\" /* default */])(state);\n // this will return `true` when `selectedContent` is empty on purpose\n var canPlayContentFlag = Object(__WEBPACK_IMPORTED_MODULE_6__lib_auth_canPlayContent__[\"a\" /* default */])(content, userAuth, false) && !Object(__WEBPACK_IMPORTED_MODULE_9__lib_util_isEmpty__[\"a\" /* default */])(content) && content.status !== __WEBPACK_IMPORTED_MODULE_4__enums__[\"n\" /* ContentStatus */].UPCOMING;\n var authStatus = Object(__WEBPACK_IMPORTED_MODULE_7__lib_auth_getAccessMethodFromAuthTypes__[\"a\" /* default */])(userAuth);\n return {\n bootstrap: Object(__WEBPACK_IMPORTED_MODULE_19__common_selectors_bootstrapSelector__[\"a\" /* default */])(state),\n content: content,\n canPlayContent: canPlayContentFlag,\n branding: Object(__WEBPACK_IMPORTED_MODULE_23__common_selectors_pageSelector__[\"a\" /* brandingSelector */])(state),\n page: { id: page.id, name: page.name },\n routing: Object(__WEBPACK_IMPORTED_MODULE_26__common_selectors_routingSelector__[\"a\" /* default */])(state),\n player: Object(__WEBPACK_IMPORTED_MODULE_20__common_selectors_playerSelector__[\"b\" /* default */])(state),\n espnPlayerSrc: Object(__WEBPACK_IMPORTED_MODULE_19__common_selectors_bootstrapSelector__[\"b\" /* espnPlayerSrcFilesSelector */])(state),\n country: Object(__WEBPACK_IMPORTED_MODULE_24__common_selectors_appSelector__[\"h\" /* countrySelector */])(state),\n authStatus: authStatus,\n providerInfo: Object(__WEBPACK_IMPORTED_MODULE_22__common_selectors_providerSelector__[\"a\" /* default */])(state),\n adobePassEnv: Object(__WEBPACK_IMPORTED_MODULE_24__common_selectors_appSelector__[\"b\" /* adobePassEnvSelector */])(state),\n oneIdEnv: Object(__WEBPACK_IMPORTED_MODULE_24__common_selectors_appSelector__[\"y\" /* oneIdEnvSelector */])(state),\n selectedTab: schedule.statusFilterValue,\n listings: schedule.listings || [],\n loading: schedule.loading\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(Object(__WEBPACK_IMPORTED_MODULE_11__common_injectIntl__[\"a\" /* default */])(SyndicatedPlayerPageComponent)));\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 782 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// EXTERNAL MODULE: ./app/common/LinkWithFlags.js\nvar LinkWithFlags = __webpack_require__(147);\n\n// CONCATENATED MODULE: ./app/webapp/syndicated/ProviderDialog/style.js\n/* harmony default export */ var style = ({\n container: {\n position: 'absolute',\n top: 0,\n width: '100%',\n height: '100%',\n color: '#fff'\n },\n dialog: {\n position: 'relative',\n margin: '0 auto',\n padding: 10,\n top: '50%',\n transform: 'translateY(-50%)',\n width: '100%',\n maxWidth: 400,\n height: 'auto',\n color: '#fff',\n lineHeight: 1.3,\n fontFamily: '-apple-system, \"Roboto\", Helvetica, Arial, sans-serif'\n },\n dialogRow: {\n position: 'relative',\n marginTop: 10\n },\n alignCenter: {\n textAlign: 'center'\n },\n logo: {\n // you need this `width: auto`, otherwise some magic script in the page shell will set the `width` and `height` attribute\n // on the `img` element with the original size\n width: 'auto',\n height: 20\n },\n providerListCol: {\n float: 'left'\n },\n providerList: {\n fontSize: 14,\n width: 200\n },\n continueBtn: {\n height: 30,\n marginTop: 10\n },\n standAlone: {\n maxWidth: 320,\n minWidth: 120,\n background: '#06c',\n border: 0,\n borderRadius: 4,\n color: '#fff',\n position: 'relative',\n textAlign: 'center',\n whiteSpace: 'nowrap',\n padding: '0 15px',\n fontSize: 11,\n width: 180\n },\n clear: {\n clear: 'left'\n }\n});\n// CONCATENATED MODULE: ./app/webapp/syndicated/ProviderDialog/index.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\nvar DEF_PROVIDER_VALUE = 'default';\n\nvar ProviderDialog_ProviderDialog = function (_PureComponent) {\n _inherits(ProviderDialog, _PureComponent);\n\n function ProviderDialog(props) {\n _classCallCheck(this, ProviderDialog);\n\n var _this = _possibleConstructorReturn(this, (ProviderDialog.__proto__ || Object.getPrototypeOf(ProviderDialog)).call(this, props));\n\n _this.onProviderChange = _this.onProviderChange.bind(_this);\n _this.onContinueClick = _this.onContinueClick.bind(_this);\n _this.state = {\n provider: DEF_PROVIDER_VALUE\n };\n return _this;\n }\n\n _createClass(ProviderDialog, [{\n key: 'onProviderChange',\n value: function onProviderChange(event) {\n var provider = event.target.value;\n this.setState({\n provider: provider\n });\n }\n }, {\n key: 'onContinueClick',\n value: function onContinueClick(event) {\n var provider = this.state.provider;\n var _props = this.props,\n providers = _props.providers,\n onContinueClick = _props.onContinueClick;\n\n\n var providerInfo = providers.filter(function (_ref) {\n var abbreviation = _ref.abbreviation;\n return abbreviation === provider;\n })[0];\n if (providerInfo && onContinueClick) {\n onContinueClick(event, providerInfo);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var provider = this.state.provider;\n var _props2 = this.props,\n providers = _props2.providers,\n _props2$branding = _props2.branding,\n brandingName = _props2$branding.name,\n brandingLogoUrl = _props2$branding.logoUrl,\n isAuthenticated = _props2.isAuthenticated,\n authRetry = _props2.authRetry,\n xdomainBlocked = _props2.xdomainBlocked,\n onReloadClick = _props2.onReloadClick,\n messages = _props2.messages,\n formatMessage = _props2.intl.formatMessage;\n\n var centeredRowStyle = _extends({}, style.dialogRow, style.alignCenter);\n\n var tier1Providers = providers.filter(function (_ref2) {\n var tier = _ref2.tier;\n return tier === 1;\n });\n var tier2Providers = providers.filter(function (_ref3) {\n var tier = _ref3.tier;\n return tier !== 1;\n });\n\n // build provider list\n var providerOptions = tier1Providers.concat(tier2Providers).map(function (_ref4) {\n var name = _ref4.name,\n abbreviation = _ref4.abbreviation;\n return _jsx('option', {\n value: abbreviation\n }, void 0, name);\n });\n providerOptions.unshift(_jsx('option', {\n value: DEF_PROVIDER_VALUE\n }, void 0, '----- ' + formatMessage(messages['feedback.provider.default']) + ' -----'));\n\n var linkTo = '/mvpd/login?mvpd=' + provider + '&syndicated=true';\n var linkTarget = '_blank';\n\n var xdomainMessage = xdomainBlocked ? formatMessage(messages['syndicated.player.dialog.message.xdomain']) : '';\n\n var reloadViewMessage = authRetry ? formatMessage(messages['syndicated.player.dialog.message.auth-retry']) : formatMessage(messages['syndicated.player.dialog.message.auth-success']);\n\n return _jsx('div', {\n className: 'playback-dialog-container',\n style: style.container\n }, void 0, _jsx('div', {\n className: 'playback-dialog',\n style: style.dialog\n }, void 0, _jsx('div', {\n style: style.alignCenter\n }, void 0, _jsx('img', {\n style: style.logo,\n src: brandingLogoUrl,\n alt: brandingName\n })), !isAuthenticated && !authRetry ? _jsx('div', {}, void 0, _jsx('div', {\n style: style.dialogRow\n }, void 0, _jsx('p', {}, void 0, formatMessage(messages['syndicated.player.dialog']))), _jsx('div', {\n style: style.dialogRow\n }, void 0, _jsx('div', {\n style: style.providerListCol\n }, void 0, formatMessage(messages['provider.dialog.title']), ':\\xA0'), _jsx('div', {\n style: style.providerListCol\n }, void 0, _jsx('select', {\n id: 'providerList',\n defaultValue: provider,\n style: style.providerList,\n onChange: this.onProviderChange\n }, void 0, providerOptions), _jsx('div', {\n style: style.continueBtn\n }, void 0, provider !== DEF_PROVIDER_VALUE && _jsx(LinkWithFlags[\"a\" /* default */], {\n to: linkTo,\n target: linkTarget,\n onClick: this.onContinueClick\n }, void 0, _jsx('button', {\n className: 'button med stand-alone',\n style: style.standAlone\n }, void 0, formatMessage(messages['syndicated.player.dialog.label.continute']))))), _jsx('div', {\n style: style.clear\n }))) : _jsx('div', {}, void 0, _jsx('div', {\n style: centeredRowStyle\n }, void 0, _jsx('div', {}, void 0, reloadViewMessage), _jsx('br', {}), _jsx('div', {}, void 0, xdomainMessage)), !authRetry && _jsx('div', {\n style: centeredRowStyle\n }, void 0, _jsx('button', {\n className: 'button lg stand-alone reload',\n onClick: onReloadClick,\n style: style.standAlone\n }, void 0, formatMessage(messages['syndicated.player.dialog.label.recheck']))))));\n }\n }]);\n\n return ProviderDialog;\n}(react[\"PureComponent\"]);\n\n/* harmony default export */ var syndicated_ProviderDialog = __webpack_exports__[\"a\"] = (Object(injectIntl[\"a\" /* default */])(ProviderDialog_ProviderDialog));\n\n/***/ }),\n/* 783 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/lodash/throttle.js\nvar throttle = __webpack_require__(784);\nvar throttle_default = /*#__PURE__*/__webpack_require__.n(throttle);\n\n// EXTERNAL MODULE: ./config/index.js\nvar config = __webpack_require__(16);\nvar config_default = /*#__PURE__*/__webpack_require__.n(config);\n\n// EXTERNAL MODULE: ./app/common/PropTypes.js\nvar PropTypes = __webpack_require__(28);\n\n// EXTERNAL MODULE: ./app/webapp/player/connectPlayer.js\nvar connectPlayer = __webpack_require__(223);\n\n// EXTERNAL MODULE: ./node_modules/selectn/index.js\nvar selectn = __webpack_require__(113);\nvar selectn_default = /*#__PURE__*/__webpack_require__.n(selectn);\n\n// EXTERNAL MODULE: ./app/enums.js\nvar enums = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./app/lib/format/queryString.js\nvar queryString = __webpack_require__(18);\n\n// EXTERNAL MODULE: ./app/lib/util/canUseDOM.js\nvar canUseDOM = __webpack_require__(61);\n\n// EXTERNAL MODULE: ./app/common/injectIntl.js\nvar injectIntl = __webpack_require__(20);\n\n// CONCATENATED MODULE: ./app/webapp/syndicated/PlayerOverlay/style.js\nvar HEADER_HEIGHT = 40;\nvar SOURCE_LOGO_WIDTH = 60;\nvar BRANDING_LOGO_WIDTH = 100;\nvar PROVIDER_LOGO_WIDTH = 100;\n\n/* harmony default export */ var PlayerOverlay_style = ({\n header: {\n position: 'absolute',\n background: 'linear-gradient(to bottom, rgba(0,0,0,1) 0%,rgba(0,0,0,0) 100%)',\n width: '100%',\n height: HEADER_HEIGHT,\n zIndex: 1000032,\n transition: 'transform 0.2s ease-out',\n color: '#fff',\n fontSize: 12,\n pointerEvents: 'none',\n paddingBottom: 5,\n fontFamily: '-apple-system, \"Roboto\", Helvetica, Arial, sans-serif'\n },\n show: {\n transform: 'translateY(0)'\n },\n hide: {\n transform: 'translateY(-' + HEADER_HEIGHT + 'px)'\n },\n logo: {\n float: 'left',\n width: SOURCE_LOGO_WIDTH,\n height: '100%',\n padding: '0 10px'\n },\n title: {\n height: '100%',\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n marginLeft: SOURCE_LOGO_WIDTH,\n marginRight: BRANDING_LOGO_WIDTH\n },\n titleText: {\n verticalAlign: 'middle'\n },\n branding: {\n float: 'right',\n width: BRANDING_LOGO_WIDTH,\n height: '100%',\n padding: '0 10px',\n pointerEvents: 'all'\n },\n provider: {\n float: 'right',\n width: PROVIDER_LOGO_WIDTH,\n height: '100%',\n paddingRight: 10,\n pointerEvents: 'all',\n whiteSpace: 'nowrap',\n transition: 'width 0.2s'\n },\n logoImg: {\n verticalAlign: 'middle',\n width: 'auto',\n height: 'auto',\n maxWidth: '100%',\n maxHeight: '100%',\n transition: 'width 0.2s'\n },\n signout: {\n display: 'inline-block',\n color: '#fff',\n width: 0,\n paddingLeft: 20,\n overflow: 'hidden',\n verticalAlign: 'middle'\n },\n separator: {\n verticalAlign: 'middle'\n },\n helper: {\n display: 'inline-block',\n height: '100%',\n verticalAlign: 'middle'\n }\n});\n// CONCATENATED MODULE: ./app/webapp/syndicated/PlayerOverlay/index.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\nvar EVENT_QUERY_KEYS = enums[\"b\" /* Api */].Page.EVENT_QUERY_KEYS;\n\nvar PlayerOverlay_PlayerOverlay = function (_PureComponent) {\n _inherits(PlayerOverlay, _PureComponent);\n\n function PlayerOverlay(props) {\n _classCallCheck(this, PlayerOverlay);\n\n var _this = _possibleConstructorReturn(this, (PlayerOverlay.__proto__ || Object.getPrototypeOf(PlayerOverlay)).call(this, props));\n\n _this.state = {\n providerHovered: false,\n signoutWidth: undefined\n };\n _this.onLogoutClick = _this.onLogoutClick.bind(_this);\n _this.onProviderMouseOver = _this.onProviderMouseOver.bind(_this);\n _this.onProviderMouseOut = _this.onProviderMouseOut.bind(_this);\n return _this;\n }\n\n _createClass(PlayerOverlay, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setSignoutWidth();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.setSignoutWidth();\n }\n }, {\n key: 'onLogoutClick',\n value: function onLogoutClick(event) {\n event.preventDefault();\n this.props.handleLogout();\n }\n }, {\n key: 'onProviderMouseOver',\n value: function onProviderMouseOver() {\n this.setState({ providerHovered: true });\n }\n }, {\n key: 'onProviderMouseOut',\n value: function onProviderMouseOut() {\n this.setState({ providerHovered: false });\n }\n }, {\n key: 'setSignoutWidth',\n value: function setSignoutWidth() {\n if (this.signout && this.state.signoutWidth === undefined) {\n this.setState({ signoutWidth: this.signout.offsetWidth + 30 });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _state = this.state,\n providerHovered = _state.providerHovered,\n signoutWidth = _state.signoutWidth;\n var _props = this.props,\n show = _props.show,\n name = _props.name,\n _props$source = _props.source,\n sourceName = _props$source.name,\n sourceLogoUrl = _props$source.logoUrl,\n _props$branding = _props.branding,\n brandingName = _props$branding.name,\n brandingLogoUrl = _props$branding.logoUrl,\n provider = _props.provider,\n query = _props.location.query,\n messages = _props.messages,\n formatMessage = _props.intl.formatMessage;\n\n\n var newQuery = _extends({}, query);\n Object.keys(newQuery).forEach(function (key) {\n if (EVENT_QUERY_KEYS.indexOf(key) === -1) {\n delete newQuery[key];\n }\n if (key === 'id' && (newQuery.network || newQuery.channel)) {\n delete newQuery[key];\n }\n });\n var search = Object(queryString[\"a\" /* default */])(newQuery);\n var watchLink = '/watch/player' + search;\n if (canUseDOM[\"a\" /* default */]) {\n // force http\n watchLink = 'http://' + window.location.host + watchLink;\n }\n\n var style = _extends({}, PlayerOverlay_style.header, PlayerOverlay_style[show ? 'show' : 'hide']);\n\n var titleStyle = sourceLogoUrl ? PlayerOverlay_style.title : _extends({}, PlayerOverlay_style.title, {\n marginLeft: 10\n });\n\n var providerName = provider.name;\n\n var providerLogoUrl = selectn_default()('images.colorWithNegativeBackground.href', provider) || selectn_default()('images.logo.href', provider) || '';\n var providerLink = selectn_default()('links.web.href', provider) || '/watch';\n\n var signoutStyle = _extends({}, PlayerOverlay_style.signout, {\n display: 'none'\n });\n if (signoutWidth === undefined) {\n signoutStyle = _extends({}, PlayerOverlay_style.signout, {\n width: 'auto',\n visibility: 'hidden'\n });\n } else if (providerHovered) {\n signoutStyle = _extends({}, PlayerOverlay_style.signout, {\n width: signoutWidth - 5\n });\n }\n\n return _jsx('div', {\n className: 'player-header',\n style: style\n }, void 0, sourceLogoUrl && _jsx('div', {\n style: PlayerOverlay_style.logo\n }, void 0, _jsx('span', {\n style: PlayerOverlay_style.helper\n }), _jsx('img', {\n src: sourceLogoUrl,\n alt: sourceName,\n style: PlayerOverlay_style.logoImg\n })), providerLogoUrl ? _jsx('div', {\n style: providerHovered ? _extends({}, PlayerOverlay_style.provider, {\n width: PlayerOverlay_style.provider.width + signoutWidth\n }) : PlayerOverlay_style.provider,\n onMouseOver: this.onProviderMouseOver,\n onMouseOut: this.onProviderMouseOut\n }, void 0, _jsx('span', {\n style: PlayerOverlay_style.helper\n }), _jsx('a', {\n href: providerLink,\n target: '_blank',\n rel: 'noopener noreferrer',\n alt: providerName\n }, void 0, _jsx('img', {\n src: providerLogoUrl,\n alt: providerName,\n style: providerHovered ? _extends({}, PlayerOverlay_style.logoImg, {\n maxWidth: 'calc(100% - ' + signoutWidth + 'px)'\n }) : PlayerOverlay_style.logoImg\n })), _jsx('span', {\n style: providerHovered ? PlayerOverlay_style.separator : _extends({}, PlayerOverlay_style.separator, {\n display: 'none'\n })\n }, void 0, '\\xA0|\\xA0'), react_default.a.createElement(\n 'a',\n {\n ref: function ref(el) {\n _this2.signout = el;\n },\n style: signoutStyle,\n onClick: this.onLogoutClick\n },\n formatMessage(messages['signout.label'])\n )) : _jsx('div', {\n style: _extends({}, PlayerOverlay_style.provider, { marginTop: 10 })\n }, void 0, _jsx('span', {\n style: PlayerOverlay_style.separator\n }, void 0, '\\xA0|\\xA0'), react_default.a.createElement(\n 'a',\n {\n ref: function ref(el) {\n _this2.signout = el;\n },\n style: _extends({}, PlayerOverlay_style.signout, {\n width: signoutWidth - 5\n }),\n onClick: this.onLogoutClick\n },\n formatMessage(messages['signout.label'])\n )), _jsx('div', {\n style: PlayerOverlay_style.branding\n }, void 0, _jsx('span', {\n style: PlayerOverlay_style.helper\n }), _jsx('a', {\n href: watchLink,\n target: '_blank',\n rel: 'noopener noreferrer',\n title: formatMessage(messages['syndicated.player.branding.tooltip'], {\n brandingName: brandingName\n })\n }, void 0, _jsx('img', {\n src: brandingLogoUrl,\n alt: brandingName,\n style: PlayerOverlay_style.logoImg\n }))), _jsx('div', {\n style: titleStyle,\n title: name\n }, void 0, _jsx('span', {\n style: PlayerOverlay_style.helper\n }), _jsx('span', {\n style: PlayerOverlay_style.titleText\n }, void 0, name)));\n }\n }]);\n\n return PlayerOverlay;\n}(react[\"PureComponent\"]);\n\nPlayerOverlay_PlayerOverlay.defaultProps = {\n show: false,\n source: {},\n branding: {},\n provider: {}\n};\n\n/* harmony default export */ var syndicated_PlayerOverlay = (Object(injectIntl[\"a\" /* default */])(PlayerOverlay_PlayerOverlay));\n// CONCATENATED MODULE: ./app/webapp/syndicated/ConnectedPlayer/style.js\n/* harmony default export */ var ConnectedPlayer_style = ({\n container: {\n position: 'relative',\n width: '100%',\n height: '100%'\n },\n player: {\n position: 'relative',\n width: '100%',\n height: '100%'\n }\n});\n// CONCATENATED MODULE: ./app/webapp/syndicated/ConnectedPlayer/index.js\nvar ConnectedPlayer__jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar ConnectedPlayer__createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction ConnectedPlayer__classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ConnectedPlayer__possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction ConnectedPlayer__inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\nvar secureCdnHost = config_default.a.secureCdnHost;\n\n\nvar networkToImageName = { espn1: 'espn' };\n\nvar ConnectedPlayer_Player = function (_PureComponent) {\n ConnectedPlayer__inherits(Player, _PureComponent);\n\n function Player(props) {\n ConnectedPlayer__classCallCheck(this, Player);\n\n var _this = ConnectedPlayer__possibleConstructorReturn(this, (Player.__proto__ || Object.getPrototypeOf(Player)).call(this, props));\n\n _this.onPlayerMouseMove = _this.onPlayerMouseMove.bind(_this);\n _this.processMouseMove = throttle_default()(_this.processMouseMove.bind(_this), 100);\n _this.state = {\n showOverlay: false\n };\n return _this;\n }\n\n ConnectedPlayer__createClass(Player, [{\n key: 'onPlayerMouseMove',\n value: function onPlayerMouseMove(event) {\n if (this.props.socialOpened || this.props.captionOpened) {\n return;\n }\n var pageY = event.nativeEvent.pageY;\n\n this.processMouseMove(pageY);\n }\n }, {\n key: 'processMouseMove',\n value: function processMouseMove(pageY) {\n var showOverlay = pageY <= HEADER_HEIGHT;\n if (this.state.showOverlay !== showOverlay) {\n this.setState({ showOverlay: showOverlay });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n location = _props.location,\n branding = _props.branding,\n provider = _props.provider,\n selectedStream = _props.selectedStream,\n playingStream = _props.playingStream,\n render = _props.render,\n handleLogout = _props.handleLogout;\n\n\n var stream = playingStream || selectedStream || {};\n var name = stream.name,\n _stream$source = stream.source;\n _stream$source = _stream$source === undefined ? {} : _stream$source;\n var sourceId = _stream$source.id,\n _stream$source$name = _stream$source.name,\n sourceOrig = _stream$source$name === undefined ? '' : _stream$source$name;\n\n var source = (sourceId || sourceOrig).toLowerCase();\n var networkLogoName = networkToImageName[source] || source;\n var logoUrl = networkLogoName ? secureCdnHost + '/watchespn/images/web/network_logos/channel_logo_' + networkLogoName + '_2x.png' : null;\n var sourceObj = {\n name: sourceId || source,\n logoUrl: logoUrl\n };\n\n return react_default.a.createElement(\n 'div',\n {\n ref: function ref(el) {\n _this2.container = el;\n },\n className: 'player-container',\n style: render ? ConnectedPlayer_style.container : { display: 'none' },\n onMouseMove: render && this.onPlayerMouseMove\n },\n render && ConnectedPlayer__jsx(syndicated_PlayerOverlay, {\n show: this.state.showOverlay,\n name: name,\n source: sourceObj,\n branding: branding,\n location: location,\n provider: provider,\n handleLogout: handleLogout\n }),\n react_default.a.createElement('div', {\n ref: 'playerContainer',\n id: 'watchespn-player-container',\n style: ConnectedPlayer_style.player\n })\n );\n }\n }]);\n\n return Player;\n}(react[\"PureComponent\"]);\n\n/* harmony default export */ var ConnectedPlayer = __webpack_exports__[\"a\"] = (Object(connectPlayer[\"a\" /* default */])(ConnectedPlayer_Player));\n\n/***/ }),\n/* 784 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar debounce = __webpack_require__(371),\n isObject = __webpack_require__(35);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n\n\n/***/ }),\n/* 785 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(39);\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n\n\n/***/ }),\n/* 786 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n container: {\n position: 'absolute',\n zIndex: 0,\n width: '100%',\n height: '100%',\n background: '#000'\n },\n dialogContainer: {\n width: '100%',\n height: '100%'\n },\n message: {\n position: 'absolute',\n margin: '0 auto',\n background: 'rgba(0,0,0,0.7)',\n padding: 10,\n top: '50%',\n transform: 'translateY(-50%)',\n width: '100%',\n height: 'auto',\n color: '#fff',\n lineHeight: 1.3,\n textAlign: 'center'\n }\n});\n\n/***/ }),\n/* 787 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/react/react.js\nvar react = __webpack_require__(0);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 18 modules\nvar es = __webpack_require__(4);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(14);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: ./app/common/schedule/ScheduleCategoryContainer.js\nvar ScheduleCategoryContainer = __webpack_require__(360);\n\n// EXTERNAL MODULE: ./app/common/schedule/FilterGroupContainer.js + 1 modules\nvar FilterGroupContainer = __webpack_require__(357);\n\n// EXTERNAL MODULE: ./app/common/selectors/authenticationSelectors.js\nvar authenticationSelectors = __webpack_require__(10);\n\n// EXTERNAL MODULE: ./app/common/schedule/actions/index.js\nvar actions = __webpack_require__(96);\n\n// CONCATENATED MODULE: ./app/webapp/syndicated/SyndicatedScheduleModule/style.js\n/* harmony default export */ var style = ({\n container: {\n position: 'relative',\n zIndex: 1,\n top: 0,\n left: '80%',\n float: 'right',\n width: '80%',\n height: '100%',\n transition: 'left 0.3s',\n WebkitTransition: 'left 0.3s'\n },\n opened: {\n left: 0\n },\n scheduleContainer: {\n position: 'relative',\n top: 0,\n width: '100%',\n height: '100%',\n background: '#fff',\n padding: 20,\n overflowY: 'auto'\n },\n toggleButton: {\n position: 'absolute',\n left: -90,\n top: 'calc(50% - 25px)',\n width: 90,\n height: 50,\n display: 'block',\n opacity: 1,\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n borderRadius: '30px 0 0 30px',\n padding: 10,\n textAlign: 'center',\n transition: 'opacity 0.2s',\n WebkitTransition: 'opacity 0.2s',\n color: '#fff'\n },\n toggleButtonHide: {\n opacity: 0\n },\n toggleButtonHidden: {\n display: 'none'\n },\n toggleButtonLabel: {\n fontSize: 12,\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)'\n }\n});\n// CONCATENATED MODULE: ./app/webapp/syndicated/SyndicatedScheduleModule/index.js\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\nvar SyndicatedScheduleModule_SyndicatedScheduleModule = function (_Component) {\n _inherits(SyndicatedScheduleModule, _Component);\n\n function SyndicatedScheduleModule(props) {\n _classCallCheck(this, SyndicatedScheduleModule);\n\n var _this = _possibleConstructorReturn(this, (SyndicatedScheduleModule.__proto__ || Object.getPrototypeOf(SyndicatedScheduleModule)).call(this, props));\n\n _this.state = {\n init: true,\n opened: false\n };\n _this.fetchAction = actions[\"j\" /* fetchSchedule */];\n _this.onToggleClick = _this.onToggleClick.bind(_this);\n return _this;\n }\n\n _createClass(SyndicatedScheduleModule, [{\n key: 'onToggleClick',\n value: function onToggleClick() {\n var query = this.props.location.query;\n\n var state = { opened: !this.state.opened };\n if (this.state.init) {\n this.props.dispatch(this.fetchAction(_extends({ type: 'live' }, query)));\n state.init = false;\n }\n this.setState(state);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n location = _props.location,\n partner = _props.location.query.partner,\n listingsArg = _props.listings,\n loading = _props.loading,\n userAuth = _props.userAuth,\n selectedTab = _props.selectedTab,\n isMobile = _props.isMobile,\n hovered = _props.hovered,\n hidden = _props.hidden;\n var opened = this.state.opened;\n\n var tabClassname = classnames_default()('watch-tab', { loading: loading });\n var label = opened ? 'Close' : 'Schedule';\n var containerStyle = opened ? _extends({}, style.container, style.opened) : style.container;\n var buttonStyle = !opened && !hovered ? _extends({}, style.toggleButton, style.toggleButtonHide, hidden ? style.toggleButtonHidden : {}) : style.toggleButton;\n\n var listings = listingsArg;\n\n listings = listings.filter(function (_ref) {\n var subcategories = _ref.subcategories;\n\n // Only listings that match the `partner` query param, if provided\n var partnerMatch = false;\n\n if (partner && subcategories[0]) {\n var league = subcategories[0];\n var partnerRegEx = new RegExp(partner + '|' + partner.replace('-', ' '), 'i');\n var codeMatch = league.code && league.code.match(partnerRegEx);\n var idMatch = league.id && league.id.toLowerCase() === partner.toLowerCase();\n var nameMatch = !!(league.name && league.name.match(partnerRegEx));\n\n partnerMatch = codeMatch || idMatch || nameMatch;\n }\n\n return partnerMatch;\n });\n\n return _jsx('div', {\n style: containerStyle\n }, void 0, _jsx('a', {\n style: buttonStyle,\n onClick: this.onToggleClick\n }, void 0, _jsx('span', {\n style: style.toggleButtonLabel\n }, void 0, label)), _jsx('article', {\n className: 'watch-schedule',\n style: style.scheduleContainer\n }, void 0, _jsx(FilterGroupContainer[\"a\" /* default */], {\n location: location,\n showSportOptions: false,\n showNetworkOptions: false,\n fetchAction: this.fetchAction\n }), _jsx('div', {\n className: 'content',\n style: selectedTab !== 'upcoming' ? { paddingTop: 20 } : {}\n }, void 0, _jsx('div', {\n id: 'tabLive',\n className: tabClassname,\n style: { display: 'block' }\n }, void 0, _jsx(ScheduleCategoryContainer[\"a\" /* default */], {\n listings: listings,\n userAuth: userAuth,\n selectedTab: selectedTab,\n isMobile: isMobile,\n startDateValue: location.query.startDate,\n showSectionCaption: false,\n watchRegion: location.query.watchRegion\n })))));\n }\n }]);\n\n return SyndicatedScheduleModule;\n}(react[\"Component\"]);\n\nvar SyndicatedScheduleModule_mapStateToProps = function mapStateToProps(state) {\n var app = state.app,\n schedule = state.schedule;\n\n var userAuth = Object(authenticationSelectors[\"r\" /* userAuthSelector */])(state);\n return {\n userAuth: userAuth,\n selectedTab: schedule.statusFilterValue,\n listings: schedule.listings || [],\n loading: schedule.loading,\n isMobile: app.isMobile\n };\n};\n\n/* harmony default export */ var syndicated_SyndicatedScheduleModule = __webpack_exports__[\"a\"] = (Object(es[\"b\" /* connect */])(SyndicatedScheduleModule_mapStateToProps)(SyndicatedScheduleModule_SyndicatedScheduleModule));\n\n/***/ }),\n/* 788 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_helmet___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_helmet__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib_format_queryString__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__config__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__ = __webpack_require__(372);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__common_selectors_bootstrapSelector__ = __webpack_require__(29);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\nvar shellVersion = __WEBPACK_IMPORTED_MODULE_4__config___default.a.shellVersion,\n cdnHost = __WEBPACK_IMPORTED_MODULE_4__config___default.a.cdnHost,\n devStyles = __WEBPACK_IMPORTED_MODULE_4__config___default.a.devStyles;\n\n\nvar BASE_HREF = cdnHost + '/redesign/' + shellVersion;\nvar STYLE_HREF = BASE_HREF + '/css';\nif (devStyles) {\n STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nvar PARTNER = __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].PARTNER,\n DOMAIN = __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].DOMAIN;\n\n\nvar containerStyle = {\n padding: 20\n};\n\nvar playerContainerStyle = {\n marginTop: 20\n};\n\nvar iframeStyle = {\n width: 640,\n height: 360\n};\n\nvar SyndicatedPlayerExample = function (_PureComponent) {\n _inherits(SyndicatedPlayerExample, _PureComponent);\n\n function SyndicatedPlayerExample(props) {\n _classCallCheck(this, SyndicatedPlayerExample);\n\n var _this = _possibleConstructorReturn(this, (SyndicatedPlayerExample.__proto__ || Object.getPrototypeOf(SyndicatedPlayerExample)).call(this, props));\n\n _this.state = {\n id: '',\n gameId: '',\n league: '',\n network: '',\n position: 0,\n currentTime: 0,\n thumbnail: ''\n };\n _this.playVideo = _this.playVideo.bind(_this);\n _this.pauseVideo = _this.pauseVideo.bind(_this);\n _this.muteStream = _this.muteStream.bind(_this);\n _this.unMuteStream = _this.unMuteStream.bind(_this);\n _this.setVideoPosition = _this.setVideoPosition.bind(_this);\n _this.getVideoPosition = _this.getVideoPosition.bind(_this);\n _this.enterFullScreen = _this.enterFullScreen.bind(_this);\n _this.selectById = _this.selectById.bind(_this);\n _this.selectByEventId = _this.selectByEventId.bind(_this);\n _this.selectEventByNetworkName = _this.selectEventByNetworkName.bind(_this);\n _this.selectEventByGameIdLeague = _this.selectEventByGameIdLeague.bind(_this);\n _this.recheckAccess = _this.recheckAccess.bind(_this);\n _this.adobePassLogout = _this.adobePassLogout.bind(_this);\n _this.getAffiliate = _this.getAffiliate.bind(_this);\n _this.getSelectedProvider = _this.getSelectedProvider.bind(_this);\n _this.getAuthenticationStatus = _this.getAuthenticationStatus.bind(_this);\n _this.onIdChange = _this.onIdChange.bind(_this);\n _this.onEventIdChange = _this.onEventIdChange.bind(_this);\n _this.onGameIdChange = _this.onGameIdChange.bind(_this);\n _this.onLeagueChange = _this.onLeagueChange.bind(_this);\n _this.onNetworkChange = _this.onNetworkChange.bind(_this);\n _this.onPositionChange = _this.onPositionChange.bind(_this);\n _this.onThumbnailChange = _this.onThumbnailChange.bind(_this);\n _this.onPostMessage = _this.onPostMessage.bind(_this);\n return _this;\n }\n\n _createClass(SyndicatedPlayerExample, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n window.addEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'onPostMessage',\n value: function onPostMessage(event) {\n var _props$location$query = this.props.location.query;\n _props$location$query = _props$location$query === undefined ? {} : _props$location$query;\n var _props$location$query2 = _props$location$query.bridge,\n bridge = _props$location$query2 === undefined ? true : _props$location$query2;\n\n\n if (bridge === 'false') {\n // simulate iframe embed only mode\n return;\n }\n\n if (typeof event.data !== 'string') {\n return;\n }\n\n var data = void 0;\n try {\n var prefix = PARTNER + ':' + DOMAIN + ':';\n data = JSON.parse(event.data.substr(prefix.length));\n } catch (err) {\n data = {};\n }\n\n var _data = data,\n type = _data.type,\n payload = _data.payload;\n\n\n if (!type) {\n return;\n }\n\n var _type$split = type.split(':'),\n _type$split2 = _slicedToArray(_type$split, 3),\n partner = _type$split2[0],\n domain = _type$split2[1],\n apiName = _type$split2[2];\n\n if (partner !== PARTNER) {\n return;\n }\n\n if (domain === DOMAIN) {\n switch (apiName) {\n case 'bridgeReady':\n // send the parent location to the iframe player in case\n // `document.referrer` is not available for domain check.\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].PARENT_HOST,\n payload: [window.location.href]\n });\n break;\n case 'getVideoPosition':\n this.setState({ currentTime: payload });\n break;\n case 'getAffiliate':\n case 'getSelectedProvider':\n case 'getAuthenticationStatus':\n console.log(apiName, payload); // eslint-disable-line no-console\n break;\n case 'authenticationSuccessful':\n case 'recheckAccess':\n {\n var url = payload && payload.href || this.iframe.src;\n\n var _url$split = url.split('?'),\n _url$split2 = _slicedToArray(_url$split, 2),\n host = _url$split2[0],\n searchStr = _url$split2[1];\n\n if (searchStr) {\n var newSearchStr = searchStr.replace(/&autoStart(=[^&]*)?|^autoStart(=[^&]*)?&?/, '');\n url = host + '?' + newSearchStr;\n }\n this.iframe.src = url;\n break;\n }\n default:\n break;\n }\n }\n }\n }, {\n key: 'onIdChange',\n value: function onIdChange(event) {\n this.setState({ id: event.target.value });\n }\n }, {\n key: 'onEventIdChange',\n value: function onEventIdChange(event) {\n this.setState({ eventId: event.target.value });\n }\n }, {\n key: 'onGameIdChange',\n value: function onGameIdChange(event) {\n this.setState({ gameId: event.target.value });\n }\n }, {\n key: 'onLeagueChange',\n value: function onLeagueChange(event) {\n this.setState({ league: event.target.value });\n }\n }, {\n key: 'onThumbnailChange',\n value: function onThumbnailChange(event) {\n this.setState({ thumbnail: event.target.value });\n }\n }, {\n key: 'onNetworkChange',\n value: function onNetworkChange(event) {\n this.setState({ network: event.target.value });\n }\n }, {\n key: 'onPositionChange',\n value: function onPositionChange(event) {\n this.setState({ position: parseInt(event.target.value, 10) });\n }\n }, {\n key: 'setVideoPosition',\n value: function setVideoPosition() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].SET_CURRENT_TIME,\n payload: [this.state.position]\n });\n }\n }, {\n key: 'getVideoPosition',\n value: function getVideoPosition() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].GET_CURRENT_TIME\n });\n }\n }, {\n key: 'getAffiliate',\n value: function getAffiliate() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].GET_AFFILIATE\n });\n }\n }, {\n key: 'getSelectedProvider',\n value: function getSelectedProvider() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].GET_SELECTED_PROVIDER\n });\n }\n }, {\n key: 'getAuthenticationStatus',\n value: function getAuthenticationStatus() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].GET_AUTH_STATUS\n });\n }\n }, {\n key: 'playVideo',\n value: function playVideo() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].PLAY\n });\n }\n }, {\n key: 'pauseVideo',\n value: function pauseVideo() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].PAUSE\n });\n }\n }, {\n key: 'muteStream',\n value: function muteStream() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].MUTE\n });\n }\n }, {\n key: 'unMuteStream',\n value: function unMuteStream() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].UNMUTE\n });\n }\n }, {\n key: 'enterFullScreen',\n value: function enterFullScreen() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].ENTER_FULLSCREEN\n });\n }\n }, {\n key: 'selectById',\n value: function selectById() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].SELECT_BY_ID,\n payload: [this.state.id, this.autoPlayForSelectById.checked, this.state.thumbnail]\n });\n }\n }, {\n key: 'selectByEventId',\n value: function selectByEventId() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].SELECT_BY_EVENT_ID,\n payload: [this.state.eventId, this.autoPlayForSelectByEventId.checked, this.state.thumbnail]\n });\n }\n }, {\n key: 'selectEventByNetworkName',\n value: function selectEventByNetworkName() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].SELECT_EVENT_BY_NETWORK_NAME,\n payload: [this.state.network, this.state.thumbnail]\n });\n }\n }, {\n key: 'selectEventByGameIdLeague',\n value: function selectEventByGameIdLeague() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].SELECT_EVENT_BY_GAME_ID,\n payload: [this.state.gameId, this.state.league, this.state.thumbnail]\n });\n }\n }, {\n key: 'recheckAccess',\n value: function recheckAccess() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].RECHECK_ACCESS\n });\n }\n }, {\n key: 'adobePassLogout',\n value: function adobePassLogout() {\n this.callAPI({\n type: __WEBPACK_IMPORTED_MODULE_5__syndicated_SyndicatedPlayerAPIProxy__[\"a\" /* default */].ADOBE_PASS_LOGOUT\n });\n }\n }, {\n key: 'callAPI',\n value: function callAPI(data) {\n var originResult = /https?:\\/\\/[^\\/]+/.exec(this.iframe.src);\n var origin = originResult && originResult[0] || '*';\n this.iframe.contentWindow.postMessage(JSON.stringify(data), origin);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _state = this.state,\n id = _state.id,\n eventId = _state.eventId,\n gameId = _state.gameId,\n league = _state.league,\n network = _state.network,\n position = _state.position,\n currentTime = _state.currentTime,\n thumbnail = _state.thumbnail;\n var _props = this.props,\n query = _props.location.query,\n _props$espnPlayerSrc = _props.espnPlayerSrc,\n espnPlayerJsUrl = _props$espnPlayerSrc.espnPlayerJsUrl,\n espnPlayerCssUrl = _props$espnPlayerSrc.espnPlayerCssUrl;\n var responsive = query.responsive,\n _query$origin = query.origin,\n origin = _query$origin === undefined ? '' : _query$origin;\n var width = query.width,\n height = query.height;\n\n if (responsive) {\n width = '100%';\n height = '56.25vw';\n } else if (width && !height) {\n height = Math.round(width * (9 / 16));\n } else if (!width && height) {\n width = Math.round(height * (16 / 9));\n }\n iframeStyle = width && height ? _extends({}, iframeStyle, { width: width, height: height }) : iframeStyle;\n var ifmQuery = _extends({}, query);\n delete ifmQuery.bridge;\n delete ifmQuery.origin;\n var qs = Object(__WEBPACK_IMPORTED_MODULE_3__lib_format_queryString__[\"a\" /* default */])(ifmQuery);\n\n return _jsx('div', {\n style: containerStyle\n }, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_2_react_helmet___default.a, {\n meta: [{ name: 'robots', content: 'noindex, nofollow' }],\n link: [{ rel: 'stylesheet', href: STYLE_HREF + '/page.css' }, {\n class: '__watch-player-bundle__',\n rel: 'stylesheet',\n href: espnPlayerCssUrl\n }],\n style: [{\n cssText: '\\n body {\\n font-family: sans-serif;\\n }\\n h1 { font-size: 24px; }\\n h2 { font-size: 20px; }\\n h3 { font-size: 18px; }\\n '\n }],\n script: [{\n src: espnPlayerJsUrl,\n async: true\n }]\n }), _jsx('h1', {}, void 0, 'Syndicated Player Test'), _jsx('div', {}, void 0, _jsx('button', {\n onClick: this.playVideo\n }, void 0, 'playVideo'), _jsx('button', {\n onClick: this.pauseVideo\n }, void 0, 'pauseVideo'), _jsx('button', {\n onClick: this.muteStream\n }, void 0, 'muteStream'), _jsx('button', {\n onClick: this.unMuteStream\n }, void 0, 'unMuteStream'), _jsx('button', {\n onClick: this.enterFullScreen\n }, void 0, 'enterFullScreen')), _jsx('div', {}, void 0, _jsx('button', {\n onClick: this.setVideoPosition\n }, void 0, 'setVideoPosition'), _jsx('input', {\n type: 'text',\n value: position,\n onChange: this.onPositionChange\n }), _jsx('button', {\n onClick: this.getVideoPosition\n }, void 0, 'getVideoPosition'), _jsx('input', {\n type: 'text',\n value: currentTime,\n readOnly: true\n })), _jsx('div', {}, void 0, _jsx('button', {\n onClick: this.selectById\n }, void 0, 'selectById'), _jsx('input', {\n type: 'text',\n value: id,\n onChange: this.onIdChange\n }), _jsx('label', {\n htmlFor: 'autoplay'\n }, void 0, 'Autoplay:', __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement('input', {\n ref: function ref(input) {\n _this2.autoPlayForSelectById = input;\n },\n id: 'autoplay',\n type: 'checkbox',\n defaultChecked: true,\n style: { display: 'inline-block' }\n })), _jsx('span', {}, void 0, 'Thumbnail: '), _jsx('input', {\n type: 'text',\n value: thumbnail,\n onChange: this.onThumbnailChange\n })), _jsx('div', {}, void 0, _jsx('button', {\n onClick: this.selectByEventId\n }, void 0, 'selectByEventId'), _jsx('input', {\n type: 'text',\n value: eventId,\n onChange: this.onEventIdChange\n }), _jsx('label', {\n htmlFor: 'autoplay'\n }, void 0, 'Autoplay:', __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement('input', {\n ref: function ref(input) {\n _this2.autoPlayForSelectByEventId = input;\n },\n id: 'autoplay',\n type: 'checkbox',\n defaultChecked: true,\n style: { display: 'inline-block' }\n })), _jsx('span', {}, void 0, 'Thumbnail: '), _jsx('input', {\n type: 'text',\n value: thumbnail,\n onChange: this.onThumbnailChange\n })), _jsx('div', {}, void 0, _jsx('button', {\n onClick: this.selectEventByNetworkName\n }, void 0, 'selectEventByNetworkName'), _jsx('input', {\n type: 'text',\n value: network,\n onChange: this.onNetworkChange\n })), _jsx('div', {}, void 0, _jsx('button', {\n onClick: this.selectEventByGameIdLeague\n }, void 0, 'selectEventByGameIdLeague'), _jsx('span', {}, void 0, 'GameId: '), _jsx('input', {\n type: 'text',\n value: gameId,\n onChange: this.onGameIdChange\n }), _jsx('span', {}, void 0, 'League: '), _jsx('input', {\n type: 'text',\n value: league,\n onChange: this.onLeagueChange\n }), _jsx('span', {}, void 0, 'Thumbnail: '), _jsx('input', {\n type: 'text',\n value: thumbnail,\n onChange: this.onThumbnailChange\n })), _jsx('div', {}, void 0, _jsx('button', {\n onClick: this.recheckAccess\n }, void 0, 'recheckAccess'), _jsx('button', {\n onClick: this.adobePassLogout\n }, void 0, 'adobePassLogout')), _jsx('div', {}, void 0, _jsx('button', {\n onClick: this.getAffiliate\n }, void 0, 'getAffiliate'), _jsx('button', {\n onClick: this.getSelectedProvider\n }, void 0, 'getSelectedProvider'), _jsx('button', {\n onClick: this.getAuthenticationStatus\n }, void 0, 'getAuthenticationStatus')), _jsx('div', {\n style: playerContainerStyle\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement('iframe', {\n ref: function ref(iframe) {\n _this2.iframe = iframe;\n },\n id: 'syndicated_player',\n src: origin + '/watch/syndicated/player' + qs,\n frameBorder: '0',\n allowFullScreen: true,\n style: iframeStyle\n })));\n }\n }]);\n\n return SyndicatedPlayerExample;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"PureComponent\"]);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n espnPlayerSrc: Object(__WEBPACK_IMPORTED_MODULE_6__common_selectors_bootstrapSelector__[\"b\" /* espnPlayerSrcFilesSelector */])(state)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(SyndicatedPlayerExample));\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 789 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_dom__ = __webpack_require__(81);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_dom__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react_router_redux__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react_router_redux___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_react_router_redux__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react_helmet__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react_helmet___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react_helmet__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__lib_util_canUseDOM__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__common_actions_scoringActions__ = __webpack_require__(212);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__common_injectIntl__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__common_page_actions__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__player_actions__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__common_ads_connectAdInitializer__ = __webpack_require__(790);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__common_selectors_bootstrapSelector__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__common_selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__common_selectors_playerSelector__ = __webpack_require__(153);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__common_selectors_routingSelector__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__common_selectors_pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__common_selectors_flagsSelector__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__branding_BrandingContainer__ = __webpack_require__(356);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__modal_authn_ProviderModal__ = __webpack_require__(794);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__modal_messaging_MessagingContainer__ = __webpack_require__(155);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__lib_format_addQueryToUrl__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__lib_observe__ = __webpack_require__(374);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__lib_observe_scoringObserver__ = __webpack_require__(795);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__lib_observe_trackingObserver__ = __webpack_require__(375);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__lib_ui_loading__ = __webpack_require__(377);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__lib_util_localStorage__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__common_IntlProvider__ = __webpack_require__(378);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__config__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_31__config__);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar shellVersion = __WEBPACK_IMPORTED_MODULE_31__config___default.a.shellVersion,\n secureCdnHost = __WEBPACK_IMPORTED_MODULE_31__config___default.a.secureCdnHost,\n devStyles = __WEBPACK_IMPORTED_MODULE_31__config___default.a.devStyles,\n clientNavigation = __WEBPACK_IMPORTED_MODULE_31__config___default.a.clientNavigation;\n\n\nvar STYLE_HREF = devStyles ? 'http://localhost:8080/static/css' : secureCdnHost + '/redesign/' + shellVersion + '/css/secure';\n\n// sanitize anchor tags in nav (don't ajax, and remove useless href)\nfunction sanitizeAnchor(anchor) {\n if (anchor instanceof HTMLAnchorElement) {\n if (anchor.getAttribute('href') === '#') {\n anchor.removeAttribute('href');\n }\n anchor.setAttribute('data-route', 'false');\n }\n}\n\nfunction initializeEspnChat() {\n var chatLink = document.querySelector('#global-nav-secondary .global-nav-container ul li a[data-abbrev=chatwidget]');\n\n if (chatLink) {\n var htmlHead = document.getElementsByTagName('head')[0];\n var chatScript = document.createElement('script');\n chatScript.type = 'text/javascript';\n chatScript.src = 'https://c.la4-c2-chi.salesforceliveagent.com/content/g/js/43.0/deployment.js';\n chatScript.onload = function () {\n window.liveagent.init('https://d.la4-c2-chi.salesforceliveagent.com/chat', '5721a000000055c', '00D1a000000JpU6');\n if (!window._laq) {\n window._laq = [];\n }\n window._laq.push(function () {\n window.liveagent.showWhenOnline('5731a00000005l3', chatLink);\n });\n };\n // Append the liveagent script to the head tag\n htmlHead.append(chatScript);\n\n // Add click handler to open the chat window\n chatLink.setAttribute('id', 'liveagent_button_online_5731a00000005l3');\n chatLink.onclick = function (event) {\n event.preventDefault();\n if (window.liveagent && window.liveagent.startChat) {\n window.liveagent.startChat('5731a00000005l3');\n }\n };\n } else {\n console.warn('Unable to initialize chat widget, selector is undefined.');\n }\n}\n\n// TODO: DTC - remove this once we have it in the nav\nfunction insertNavItems(navItems) {\n if (!window.jQuery) {\n return;\n }\n\n function insertItem(index, route, label) {\n if (!document.querySelector('#global-nav-secondary .global-nav-container ul li a[href*=\"/watch/' + route + '\"]')) {\n var navList = document.querySelectorAll('#global-nav-secondary .global-nav-container ul li');\n if (navList) {\n window.jQuery('\\n <li class=\"\" itemprop=\"name\">\\n <a itemprop=\"url\" href=\"http://www.espn.com/watch/' + route + '/\" name=\"&lpos=sitenavcustom_watch_' + route + '\" data-route=\"false\" data-abbrev=\"watch\">\\n <span class=\"link-text\">' + label + '</span>\\n <span class=\"link-text-short\">' + label + '</span>\\n </a>\\n </li>\\n ').insertAfter(window.jQuery(navList).get(index));\n }\n }\n }\n\n if (navItems && navItems.length) {\n navItems.forEach(function (_ref) {\n var index = _ref.index,\n label = _ref.label,\n path = _ref.path;\n return insertItem(index, path, label);\n });\n }\n}\n\nfunction updateSubNav(location, navItems) {\n if (navItems) {\n insertNavItems(navItems);\n }\n // updateSubNav is called only on the client side.\n if (location && window.jQuery) {\n window.jQuery('#global-nav-secondary li').each(function () {\n // eslint-disable-line\n var $this = window.jQuery(this);\n var href = $this.find('a[itemprop=\"url\"]').attr('href');\n\n if ('' + location.basename + location.pathname === href || '' + location.basename + location.pathname + '/' === href) {\n $this.addClass('active');\n } else if ($this.hasClass('active')) {\n $this.removeClass('active');\n }\n });\n }\n}\n\nvar PageShell = function (_Component) {\n _inherits(PageShell, _Component);\n\n function PageShell(props) {\n _classCallCheck(this, PageShell);\n\n var _this = _possibleConstructorReturn(this, (PageShell.__proto__ || Object.getPrototypeOf(PageShell)).call(this, props));\n\n _this.mountBrandingComponent = _this.mountBrandingComponent.bind(_this);\n _this.insertProviderContainer = _this.insertProviderContainer.bind(_this);\n _this.providerContainer = null;\n _this.subNavEl = null;\n _this.latestLocation = null;\n return _this;\n }\n\n _createClass(PageShell, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n _props$bootstrap$page = _props.bootstrap.pageShell;\n _props$bootstrap$page = _props$bootstrap$page === undefined ? {} : _props$bootstrap$page;\n var nav = _props$bootstrap$page.nav,\n isIntl = _props.isIntl,\n navOverride = _props.navOverride;\n\n\n if (__WEBPACK_IMPORTED_MODULE_6__lib_util_canUseDOM__[\"a\" /* default */]) {\n // this disables the shell from rendering ads (so that we can do it)\n // see https://code.espn.com/webdev/score/blob/ec82c07f8a607971029786f21fffbb211996e370/static/js/ads/init.js#L358\n if (window.espn_ui) {\n window.espn_ui.pageShell = true;\n }\n\n var _context = this.context,\n store = _context.store,\n router = _context.router;\n var dispatch = this.props.dispatch;\n\n\n this.unsubscribeFromStore = Object(__WEBPACK_IMPORTED_MODULE_24__lib_observe__[\"a\" /* subscribeToStore */])(store, [__WEBPACK_IMPORTED_MODULE_25__lib_observe_scoringObserver__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_26__lib_observe_trackingObserver__[\"a\" /* default */]]);\n\n var unlistenBefore = router.listenBefore(function (newLocation) {\n var _props2 = _this2.props,\n player = _props2.player,\n routing = _props2.routing;\n\n if (player.embedding === true) {\n return false;\n }\n\n // if the pathname is different, clear the redux state\n var _routing$locationBefo = routing.locationBeforeTransitions,\n currentLocation = _routing$locationBefo === undefined ? {} : _routing$locationBefo;\n\n var currentPath = '' + currentLocation.basename + currentLocation.pathname;\n var newPath = '' + newLocation.basename + newLocation.pathname;\n var currentPathRegex = new RegExp('^' + currentPath + '/?$');\n\n if (!newPath.match(currentPathRegex)) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__[\"A\" /* contentUnSelect */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__[\"P\" /* streamUnSelect */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__player_actions__[\"p\" /* createClearPlayingStreamAction */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__player_actions__[\"x\" /* createResetPlayerAction */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__common_page_actions__[\"m\" /* clearPage */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__player_actions__[\"r\" /* createFeedResetAction */])());\n }\n return true;\n });\n\n var unlisten = router.listen(function (location) {\n _this2.latestLocation = location;\n\n // this fixes broken scrolling when using the back and forward browser buttons btw ajax pages\n if (window.espn_ui && window.espn_ui.Helpers) {\n window.espn_ui.Helpers.history.updateState('react', true);\n }\n\n updateSubNav(location, navOverride && nav);\n });\n\n this.unlisten = function () {\n unlistenBefore();\n unlisten();\n };\n\n if (isIntl) {\n this.initPageShell();\n }\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this3 = this;\n\n var _props3 = this.props,\n dispatch = _props3.dispatch,\n _props3$bootstrap$pag = _props3.bootstrap.pageShell;\n _props3$bootstrap$pag = _props3$bootstrap$pag === undefined ? {} : _props3$bootstrap$pag;\n var nav = _props3$bootstrap$pag.nav,\n flags = _props3.flags,\n isIntl = _props3.isIntl,\n navOverride = _props3.navOverride;\n\n if (!isIntl) {\n this.initPageShell();\n }\n if (window.jQuery) {\n if (window.jQuery.subscribe) {\n window.jQuery.subscribe('userBuilt', function () {\n setTimeout(function () {\n var profileAnchorTags = document.querySelectorAll('.user a');\n Array.prototype.forEach.call(profileAnchorTags, function (anchor) {\n sanitizeAnchor(anchor);\n });\n }, 0);\n });\n window.jQuery.subscribe('analytics.loaded', function (initData) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__[\"w\" /* analyticsReady */])(initData));\n });\n window.jQuery.subscribe('espn.defer.end', function () {\n // noop `FastClick.attach` before it gets called here to fix the button click issue on mobile\n // https://code.espn.com/webdev/score/blob/develop/static/js/espn-ui.js#L296\n if (window.FastClick) {\n window.FastClick.attach = function () {};\n }\n });\n }\n\n window.jQuery(window).on('media_query_updated', function () {\n if (window.espn_ui && window.espn_ui.Helpers) {\n var nextMq = window.espn_ui.Helpers.get_media_query_in_use();\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__[\"E\" /* mediaQuery */])(nextMq));\n }\n });\n if (window.espn_ui && window.espn_ui.Helpers) {\n var currentMq = window.espn_ui.Helpers.get_media_query_in_use();\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__[\"E\" /* mediaQuery */])(currentMq));\n }\n\n // NOTE: this may not fire locally on all browsers\n // 'nav.ready' will be fired not only the initial load but also every break point change\n window.jQuery(document).on('nav.ready', function () {\n window.jQuery('#global-nav > ul > li.watch').addClass('active');\n var headerAnchorTags = document.querySelectorAll('#header-wrapper a');\n Array.prototype.forEach.call(headerAnchorTags, function (anchor) {\n sanitizeAnchor(anchor);\n });\n updateSubNav(_this3.latestLocation, navOverride && nav);\n\n // Append the Chat subnav within FAQ nav item only for Domestic\n if (!isIntl) {\n initializeEspnChat();\n }\n\n _this3.mountBrandingComponent(); // in the event the nav completes after auth\n });\n }\n\n if (window.espn && window.espn.refresh) {\n window.espn.refresh.stop();\n }\n\n if (clientNavigation || flags[__WEBPACK_IMPORTED_MODULE_5__enums__[\"t\" /* Flags */].CLIENT_NAV] === 'true') {\n var secondaryNavContainer = document.getElementById('global-nav-secondary');\n if (secondaryNavContainer) {\n secondaryNavContainer.addEventListener('click', function (event) {\n _this3.interceptNavClick(secondaryNavContainer, event);\n });\n }\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _nextProps$location = nextProps.location,\n location = _nextProps$location === undefined ? {} : _nextProps$location;\n\n var currentLocation = this.props.location;\n if (currentLocation !== location) {\n // add playback specific class to body on playback page\n if (location.pathname.indexOf('/player') !== -1) {\n if (document.body.className.indexOf('playback') === -1) {\n document.body.className = document.body.className + ' watch--playback';\n }\n } else {\n document.body.className = document.body.className.replace(/\\s?watch--playback/, '');\n }\n }\n\n // media queries dirty the dom in the subnav, listen for them and clean it up\n if (this.props.mq && this.props.mq !== nextProps.mq && this.providerContainer) {\n // unmount the branding component entirely followed by mounting it again by 'nav.ready'\n __WEBPACK_IMPORTED_MODULE_1_react_dom___default.a.unmountComponentAtNode(this.providerContainer);\n if (this.subNavEl) {\n this.subNavEl.removeChild(this.providerContainer);\n this.providerContainer = null;\n }\n }\n\n this.handleSessionTokenPageRefetch(nextProps);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n }\n if (this.unsubscribeFromStore) {\n this.unsubscribeFromStore();\n }\n }\n }, {\n key: 'initPageShell',\n value: function initPageShell() {\n var _props4 = this.props,\n dispatch = _props4.dispatch,\n params = _props4.params;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__common_page_actions__[\"p\" /* createPageShellInitAction */])(params, __WEBPACK_IMPORTED_MODULE_29__constants__[\"c\" /* BAM_PROXY_IFRAME_ID */]));\n }\n }, {\n key: 'interceptNavClick',\n value: function interceptNavClick(root, event, parent) {\n var target = parent || event.target;\n if (target === root) {\n return;\n }\n\n var flags = this.props.flags;\n\n var href = target.getAttribute && target.getAttribute('href');\n // exclude feedback page from client render since it uses basic shell\n if (href && href.indexOf('/watch/') > 0 && href.indexOf('/watch/feedback') === -1) {\n event.preventDefault();\n this.context.store.dispatch(Object(__WEBPACK_IMPORTED_MODULE_3_react_router_redux__[\"push\"])(Object(__WEBPACK_IMPORTED_MODULE_23__lib_format_addQueryToUrl__[\"a\" /* default */])(href.split('/watch/')[1], flags)));\n } else if (target.parentNode) {\n this.interceptNavClick(root, event, target.parentNode);\n }\n }\n }, {\n key: 'handleSessionTokenPageRefetch',\n value: function handleSessionTokenPageRefetch() {\n var nextProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var sessionToken = nextProps.sessionToken,\n pageId = nextProps.pageId,\n params = nextProps.params;\n var _props5 = this.props,\n dispatch = _props5.dispatch,\n initialSessionToken = _props5.sessionToken;\n\n var localStoredSessionToken = Object(__WEBPACK_IMPORTED_MODULE_28__lib_util_localStorage__[\"a\" /* get */])(__WEBPACK_IMPORTED_MODULE_29__constants__[\"o\" /* SESSION_TOKEN_KEY */]);\n try {\n // NOTE: Refetches the Page buckets if the sessionToken is updated in the store\n // and the initialSessionToken is undefined along with the localStorage sessionToken.\n // The sessionToken is always re-assigned on any client transition or page load.\n // Does not impact routes with /schedule or /player\n if (!initialSessionToken && sessionToken && !localStoredSessionToken && ['schedule', 'player'].indexOf(pageId) === -1) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__common_page_actions__[\"v\" /* refreshBuckets */])(pageId, { params: params, forceRefresh: true }));\n }\n } catch (error) {\n console.error('handleSessionTokenPageRefetch() Error: Failed to refresh buckets ' + pageId);\n }\n }\n }, {\n key: 'mountBrandingComponent',\n value: function mountBrandingComponent() {\n var store = this.context.store;\n\n this.insertProviderContainer();\n if (this.providerContainer) {\n __WEBPACK_IMPORTED_MODULE_1_react_dom___default.a.render(_jsx(__WEBPACK_IMPORTED_MODULE_2_react_redux__[\"a\" /* Provider */], {\n store: store\n }, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_30__common_IntlProvider__[\"a\" /* default */], {}, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_20__branding_BrandingContainer__[\"a\" /* default */], {}))), this.providerContainer);\n }\n }\n\n // This is a hack to insert DOM into the nav element to hold the provider logo. It will go away\n\n }, {\n key: 'insertProviderContainer',\n value: function insertProviderContainer() {\n if (this.subNavEl === null) {\n this.subNavEl = document.querySelector('#global-nav-secondary .global-nav-container');\n }\n if (!this.subNavEl) {\n return;\n }\n\n if (!document.querySelector('#provider-logo-subnav')) {\n var providerLogo = document.createElement('div');\n providerLogo.id = 'provider-logo-subnav';\n this.providerContainer = this.subNavEl.appendChild(providerLogo);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props6 = this.props,\n isSecure = _props6.isSecure,\n _props6$espnPlayerSrc = _props6.espnPlayerSrc,\n espnPlayerJsUrl = _props6$espnPlayerSrc.espnPlayerJsUrl,\n espnPlayerCssUrl = _props6$espnPlayerSrc.espnPlayerCssUrl;\n\n\n return _jsx('div', {}, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_4_react_helmet___default.a, {\n link: [{ rel: 'stylesheet', href: STYLE_HREF + '/shell-desktop.css' }, { rel: 'stylesheet', href: STYLE_HREF + '/page-shell.css' }, { class: 'page-type-include', rel: 'stylesheet', href: STYLE_HREF + '/index.css' }, { rel: 'stylesheet', href: STYLE_HREF + '/watch.css' }, { rel: 'stylesheet', href: STYLE_HREF + '/watch-provider.css' }, { rel: 'stylesheet', href: STYLE_HREF + '/watch-stream-picker.css' }, {\n class: '__watch-player-bundle__',\n rel: 'stylesheet',\n href: espnPlayerCssUrl\n }],\n style: [{\n cssText: '\\n audio::-internal-media-controls-cast-button, video::-internal-media-controls-cast-button {\\n display: none;\\n }\\n\\n .no-header #main-container { padding-top: 0; }\\n\\n @media screen and (min-width: 1024px) {\\n .collection.collection--watch .ad-300 {\\n margin-left: 20px;\\n }\\n .playback__content .collection_item>.collection__link {\\n padding-left: 20px;\\n padding-right: 20px;\\n }\\n }\\n /* TODO: remove once we have it in css */\\n #global-nav-secondary .global-nav-container .sportbrand .sportbrand__watch>img {\\n max-height: 25px;\\n }\\n\\n /* Carousel Hero CSS */\\n .dtc-watch__carousel--container {\\n position: relative;\\n width: 100%;\\n }\\n\\n .dtc-watch__carousel--container.carousel-loading .dtc-watch__carousel {\\n display: none;\\n }\\n\\n .dtc-watch__carousel--container.carousel-loading {\\n margin-bottom: 44px;\\n }\\n\\n .dtc-watch__carousel--container.carousel-loading:before {\\n background:url(\"' + __WEBPACK_IMPORTED_MODULE_29__constants__[\"x\" /* secureLoadingImageUrl */] + '\") 50% 50% no-repeat #dcdddf !important;\\n background-size:cover !important;\\n bottom:0;\\n content:\\'\\';\\n display:block;\\n left:0px;\\n opacity:1 !important;\\n position:absolute;\\n right:0px;\\n top:0;\\n z-index:3 !important;\\n }\\n\\n @media screen and (max-width: 767px) {\\n .dtc-watch__carousel--container,\\n .dtc-watch__carousel__item img {\\n min-height: 40vw;\\n }\\n }\\n\\n @media screen and (min-width: 768px) and (max-width: 1023px) {\\n .dtc-watch__carousel--container,\\n .dtc-watch__carousel__item img {\\n min-height: 296px;\\n }\\n }\\n\\n @media screen and (min-width: 1024px) and (max-width: 1259px) {\\n .dtc-watch__carousel--container,\\n .dtc-watch__carousel__item img {\\n min-height: 392px;\\n }\\n }\\n\\n @media screen and (min-width: 1260px) {\\n .dtc-watch__carousel--container,\\n .dtc-watch__carousel__item img {\\n min-height: 488px;\\n }\\n }\\n\\n .dtc_carousel__dots { display: flex !important; }\\n\\n #watchespn-bam-player {\\n background-color: #000 !important;\\n height: 100% !important;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100% !important;\\n z-index: 1000031;\\n }\\n\\n #watchespn-player iframe,\\n #watchespn-bam-player iframe{\\n width: 100%;\\n height: 100%;\\n border: none;\\n }\\n\\n .' + __WEBPACK_IMPORTED_MODULE_29__constants__[\"c\" /* BAM_PROXY_IFRAME_ID */] + ', .' + __WEBPACK_IMPORTED_MODULE_29__constants__[\"c\" /* BAM_PROXY_IFRAME_ID */] + ' iframe {\\n position: absolute;\\n left: -10000px;\\n width: 1px;\\n height: 1px;\\n border: none;\\n }\\n\\n #' + __WEBPACK_IMPORTED_MODULE_29__constants__[\"b\" /* BAM_PROMO_IFRAME_ID */] + ' {\\n width: 100%;\\n height: 506.25px;\\n margin-bottom: 10px;\\n }\\n\\n .collection_item_truncate>span, .hero_truncate>span {\\n font-family: BentonSans, -apple-system, Roboto, Helvetica, Arial, sans-serif;\\n }\\n\\n #' + __WEBPACK_IMPORTED_MODULE_29__constants__[\"b\" /* BAM_PROMO_IFRAME_ID */] + ' iframe,\\n #' + __WEBPACK_IMPORTED_MODULE_29__constants__[\"a\" /* BAM_PAYWALL_IFRAME_ID */] + ' iframe {\\n width: 100%;\\n height: 100%;\\n border: none;\\n display: block;\\n }\\n\\n .lightbox-container .lightbox-watch.watch-provider-modal.lightbox-paywall .btn-close {\\n padding: 0;\\n }\\n\\n .lightbox-container .lightbox-watch.watch-provider-modal.lightbox-paywall .btn-close:before {\\n color: #fff;\\n line-height: 36px;\\n }\\n\\n body.ReactModal__Body--open {\\n overflow: hidden;\\n }\\n\\n .video-overlays-container {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n }\\n .streampicker.overlay {\\n width: 100%;\\n height: 100%;\\n }\\n .StreamPicker__Container {\\n height: auto;\\n top: auto;\\n }\\n .video-player__stream {\\n position: relative;\\n height: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n }\\n .StreamPicker__Header {\\n border-bottom: #48494a 1px solid;\\n height: 50px;\\n position: relative;\\n text-align: center;\\n }\\n .StreamPicker__Body {\\n padding: 16px;\\n max-height: 253px;\\n overflow-y: scroll;\\n }\\n .StreamPicker__Broadcast {\\n margin-bottom: 12px;\\n margin-top: 0;\\n }\\n .StreamPicker__Row {\\n margin-bottom: 18px;\\n }\\n .StreamPicker__Row:last-child {\\n margin-bottom: 0;\\n }\\n '\n }],\n script: [{\n src: '//a.espncdn.com/combiner/c?js=analytics/visitorAPI_312.js'\n }, {\n src: espnPlayerJsUrl,\n async: true\n }]\n }), _jsx('img', {\n alt: 'prefetch loading graphic',\n src: isSecure ? __WEBPACK_IMPORTED_MODULE_29__constants__[\"x\" /* secureLoadingImageUrl */] : __WEBPACK_IMPORTED_MODULE_29__constants__[\"u\" /* loadingImageUrl */],\n style: { display: 'none' }\n }), isSecure ? null : _jsx('img', {\n alt: 'prefetch loading graphic',\n src: __WEBPACK_IMPORTED_MODULE_29__constants__[\"v\" /* loadingImageUrlDark */],\n style: { display: 'none' }\n }), _jsx(__WEBPACK_IMPORTED_MODULE_21__modal_authn_ProviderModal__[\"a\" /* default */], {}), _jsx(__WEBPACK_IMPORTED_MODULE_22__modal_messaging_MessagingContainer__[\"a\" /* default */], {}), this.props.children);\n }\n }]);\n\n return PageShell;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\nPageShell.contextTypes = {\n store: __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].object.isRequired,\n router: __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].object.isRequired,\n intl: __WEBPACK_IMPORTED_MODULE_9__common_injectIntl__[\"b\" /* intlShape */].isRequired,\n messages: __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].object.isRequired\n};\n\nPageShell.renderTemplate = __WEBPACK_IMPORTED_MODULE_5__enums__[\"C\" /* RenderTemplateTypes */].PAGE_SHELL;\nPageShell.preActions = [__WEBPACK_IMPORTED_MODULE_7__common_actions_appActions__[\"D\" /* fetchExternalConfig */]];\nPageShell.loadActions = [];\nPageShell.onLoadStart = __WEBPACK_IMPORTED_MODULE_27__lib_ui_loading__[\"b\" /* uiLoadingStart */];\nPageShell.onComplete = function onComplete(dispatch) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__common_actions_scoringActions__[\"a\" /* scoreAll */])());\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n var bootstrap = Object(__WEBPACK_IMPORTED_MODULE_13__common_selectors_bootstrapSelector__[\"a\" /* default */])(state);\n var mq = Object(__WEBPACK_IMPORTED_MODULE_14__common_selectors_appSelector__[\"j\" /* default */])(state).mq;\n var lang = Object(__WEBPACK_IMPORTED_MODULE_14__common_selectors_appSelector__[\"j\" /* default */])(state).lang;\n var env = Object(__WEBPACK_IMPORTED_MODULE_14__common_selectors_appSelector__[\"j\" /* default */])(state).env;\n var player = Object(__WEBPACK_IMPORTED_MODULE_16__common_selectors_playerSelector__[\"b\" /* default */])(state);\n var routing = Object(__WEBPACK_IMPORTED_MODULE_17__common_selectors_routingSelector__[\"a\" /* default */])(state);\n var flags = Object(__WEBPACK_IMPORTED_MODULE_19__common_selectors_flagsSelector__[\"a\" /* persistentFlagsSelector */])(state);\n var isSecure = Object(__WEBPACK_IMPORTED_MODULE_14__common_selectors_appSelector__[\"v\" /* isSecureSelector */])(state);\n var isIntl = Object(__WEBPACK_IMPORTED_MODULE_14__common_selectors_appSelector__[\"u\" /* isIntlSelector */])(state);\n\n var _pageSelector = Object(__WEBPACK_IMPORTED_MODULE_18__common_selectors_pageSelector__[\"c\" /* default */])(state),\n pageId = _pageSelector.id;\n\n var sessionToken = Object(__WEBPACK_IMPORTED_MODULE_15__common_selectors_authenticationSelectors__[\"j\" /* bamSessionTokenSelector */])(state);\n var espnPlayerSrc = Object(__WEBPACK_IMPORTED_MODULE_13__common_selectors_bootstrapSelector__[\"b\" /* espnPlayerSrcFilesSelector */])(state);\n return {\n bootstrap: bootstrap,\n mq: mq,\n navOverride: !isIntl && env !== __WEBPACK_IMPORTED_MODULE_5__enums__[\"c\" /* AppEnvs */].prod,\n player: player,\n routing: routing,\n flags: flags,\n isSecure: isSecure,\n isIntl: isIntl,\n sessionToken: sessionToken,\n lang: lang,\n pageId: pageId,\n espnPlayerSrc: espnPlayerSrc\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_2_react_redux__[\"b\" /* connect */])(mapStateToProps)(Object(__WEBPACK_IMPORTED_MODULE_12__common_ads_connectAdInitializer__[\"a\" /* default */])(PageShell)));\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 790 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_hoist_non_react_statics__ = __webpack_require__(105);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_hoist_non_react_statics___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_hoist_non_react_statics__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__selectors_flagsSelector__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__AdManager__ = __webpack_require__(791);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n Higher order component of PageShell for global ad initialization of all ads on current page. Responsible for 'refreshing'\n all ads that are visible on initial page load\n The code for the global 'admgr' is here https://code.espn.com/webdev/score/blob/develop/static/js/ads/admgr.js\n You can see the ad requests in the console by filtering on 'pubads'\n*/\n\n\n\n\n\n\nfunction connectAdInitializer(WrappedComponent) {\n var AdInitializer = function (_Component) {\n _inherits(AdInitializer, _Component);\n\n function AdInitializer(props) {\n _classCallCheck(this, AdInitializer);\n\n var _this = _possibleConstructorReturn(this, (AdInitializer.__proto__ || Object.getPrototypeOf(AdInitializer)).call(this, props));\n\n _this.watchAdManager = new __WEBPACK_IMPORTED_MODULE_4__AdManager__[\"a\" /* default */](props);\n return _this;\n }\n\n _createClass(AdInitializer, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n watchAdManager: this.watchAdManager\n };\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (window.admgr) {\n // patch to accept config object and filter out non-refreshable in-page ads\n window.admgr.getGPTArray = function getGPTArray() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var slots = window.admgr.getGPTSlots() || {};\n var arr = [];\n var slot = void 0;\n\n Object.keys(slots).forEach(function (key) {\n slot = slots[key];\n if (obj.independent !== false || slot.isIndependent !== true) {\n if (obj.inPage === true && slot.isOutOfPage !== true && slot.refreshable) {\n arr.push(slot);\n } else if (obj.outOfPage === true && (slot.isOutOfPage === true || slot.isCatExclusion === true)) {\n arr.push(slot);\n } else if (obj.inPage !== true && obj.outOfPage !== true) {\n arr.push(slot);\n }\n }\n });\n\n return arr;\n };\n // patch to use the patched `getGPTArray`, original API uses the local `getGPTArray` so can't use as is.\n window.admgr.refreshInPageAdSlots = function refreshInPageAdSlots() {\n var arr = window.admgr.getGPTArray({ inPage: true, independent: false });\n window.googletag.cmd.push(function () {\n window.googletag.pubads().refresh(arr);\n });\n };\n this.watchAdManager.adManager = window.admgr;\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _props = this.props,\n mq = _props.mq,\n routing = _props.routing;\n // refresh initially visible ads as early as possible. also refresh for media queries\n\n if (mq !== nextProps.mq) {\n if (!mq) {\n this.watchAdManager.initAds(nextProps);\n } else {\n this.watchAdManager.onMediaQueryChange(nextProps);\n }\n }\n var pathname = routing.locationBeforeTransitions.pathname;\n\n if (pathname !== nextProps.routing.locationBeforeTransitions.pathname) {\n this.watchAdManager.preInit();\n }\n }\n\n // if this is a HOC of the PageShell, this is only called on route changes\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.ads !== this.props.ads) {\n this.watchAdManager.initAds(this.props);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(WrappedComponent, _extends({}, this.props, this.state));\n }\n }]);\n\n return AdInitializer;\n }(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\n AdInitializer.childContextTypes = {\n watchAdManager: __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].object.isRequired\n };\n\n var mapStateToProps = function mapStateToProps(state) {\n return {\n ads: state.ads,\n mq: state.app.mq,\n routing: state.routing,\n flags: Object(__WEBPACK_IMPORTED_MODULE_3__selectors_flagsSelector__[\"a\" /* persistentFlagsSelector */])(state)\n };\n };\n\n return Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(__WEBPACK_IMPORTED_MODULE_2_hoist_non_react_statics___default()(AdInitializer, WrappedComponent));\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (connectAdInitializer);\n\n/***/ }),\n/* 791 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_debounce__ = __webpack_require__(371);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_debounce___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash_debounce__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lib_ui_isElementVisible__ = __webpack_require__(792);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__actions__ = __webpack_require__(92);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_getMergedAdConfig__ = __webpack_require__(793);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n\n\n\n\nvar breakpoints = {\n 'desktop-lg': 'xl',\n desktop: 'l',\n tablet: 'm',\n mobile: 's'\n};\n\nvar AdType = {\n WALLPAPER: 'wallpaper',\n OVERLAY: 'overlay'\n};\n\nvar AdManager = function () {\n function AdManager(props) {\n _classCallCheck(this, AdManager);\n\n this.props = props;\n this._onResize = __WEBPACK_IMPORTED_MODULE_0_lodash_debounce___default()(this._onResize.bind(this), 100);\n // debounced to handle multiple late ads that's added at the same timing in one shot\n this._onRegister = __WEBPACK_IMPORTED_MODULE_0_lodash_debounce___default()(this._refreshAll.bind(this), 4);\n }\n\n _createClass(AdManager, [{\n key: 'getMountedInstances',\n value: function getMountedInstances() {\n if (!this.mountedInstances) {\n this.mountedInstances = [];\n }\n return this.mountedInstances;\n }\n }, {\n key: 'addInstance',\n value: function addInstance(instance) {\n var instances = this.getMountedInstances();\n var index = instances.indexOf(instance);\n if (index === -1) {\n // The first instance starts listening for the event.\n if (instances.length === 0) {\n this._toggleListener(true);\n }\n instances.push(instance);\n }\n // register ad individually when they are added after the page load/route change.\n // this will get called earlier than a page request is made which invalidates `this.props.ads.initialized`,\n // so need to check the flag `this._initializing` to make sure this is called after the ad initialization is done\n if (!this._initializing && this.props.ads.initialized) {\n this._registerAd(instance);\n }\n }\n }, {\n key: 'removeInstance',\n value: function removeInstance(instance) {\n var instances = this.getMountedInstances();\n var index = instances.indexOf(instance);\n if (index >= 0) {\n instances.splice(index, 1);\n // The last instance removes listening for the event.\n if (instances.length === 0) {\n this._toggleListener(false);\n }\n }\n }\n }, {\n key: 'preInit',\n value: function preInit() {\n this._initializing = true;\n }\n }, {\n key: 'initAds',\n value: function initAds(props) {\n var _this = this;\n\n if (!this._adManager || !this.hasAds) {\n this._initializing = false;\n return;\n }\n\n this.props = props;\n\n var _props$ads = props.ads,\n ads = _props$ads === undefined ? {} : _props$ads,\n dispatch = props.dispatch;\n\n if (ads.id && ads.configured && (!ads.initialized || ads.refresh)) {\n try {\n this._adConfig = Object(__WEBPACK_IMPORTED_MODULE_3__util_getMergedAdConfig__[\"a\" /* default */])(props);\n this._adManager.init(this._adConfig);\n this._initializing = false;\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions__[\"e\" /* adsInitialized */])());\n // add refreshing ads in the queue to ensure it gets called after the ad initialization is complete\n // which is also enqueued\n window.googletag.cmd.push(function () {\n _this._refreshAll();\n });\n } catch (err) {\n console.error(err); // eslint-disable-line\n }\n }\n }\n }, {\n key: 'onMediaQueryChange',\n value: function onMediaQueryChange(props) {\n this.props = props;\n this._refreshAds();\n }\n }, {\n key: '_toggleListener',\n value: function _toggleListener(add) {\n var _this2 = this;\n\n ['scroll', 'resize'].forEach(function (eventName) {\n window[add ? 'addEventListener' : 'removeEventListener'](eventName, _this2._onResize);\n });\n }\n }, {\n key: '_registerAd',\n value: function _registerAd(instance) {\n if (!this._adManager) {\n return;\n }\n var adSlot = instance.refs.adSlot;\n\n this._adManager.registerSlot(adSlot, this._adConfig);\n this._onRegister();\n }\n }, {\n key: '_refreshAll',\n value: function _refreshAll() {\n var _this3 = this;\n\n // check the element visibility first to update component state so that they will be reflected in `refreshAds`\n this._checkElementVisibility(function () {\n _this3._refreshAds();\n });\n }\n }, {\n key: '_refreshAds',\n value: function _refreshAds() {\n var _this4 = this;\n\n var instances = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getMountedInstances();\n\n if (!this._adManager) {\n return;\n }\n var dispatch = this.props.dispatch;\n\n var slotsToClear = [];\n var slotsToRefresh = this.gptSlots.filter(function (gptSlot) {\n var shouldRefresh = false;\n // wallpaper ad is added by a page shell, mark as refreshable\n if (gptSlot.type === AdType.WALLPAPER) {\n shouldRefresh = true;\n } else {\n var activeAdInstance = instances.filter(function (_ref) {\n var adSlot = _ref.refs.adSlot;\n return adSlot.id === gptSlot.getSlotElementId();\n })[0];\n if (activeAdInstance) {\n var refreshed = activeAdInstance.state.refreshed,\n refreshWhenVisible = activeAdInstance.props.refreshWhenVisible,\n adSlot = activeAdInstance.refs.adSlot;\n // either a non-lazy ad or a lazy ad which has been already refreshed\n\n var isRefreshable = !refreshWhenVisible || refreshWhenVisible && refreshed;\n var isIncludedInBreakpoint = _this4._shouldShowSlotForBreakpoint(adSlot);\n shouldRefresh = isRefreshable && isIncludedInBreakpoint;\n if (!shouldRefresh) {\n slotsToClear.push(gptSlot);\n }\n gptSlot.refreshable = shouldRefresh;\n }\n }\n // this flag is used in the patched `getGPTArray` in `connectAdInitializer` to filter out non-refreshable ads\n gptSlot.refreshable = shouldRefresh;\n\n return shouldRefresh;\n });\n\n if (slotsToClear.length > 0) {\n // FIXME: this._adManager.clear() doesn't accept an array of slots\n window.googletag.cmd.push(function () {\n window.googletag.pubads().clear(slotsToClear);\n });\n }\n // when there is an out-of-page ad in the page, it needs to render an out-of-page ad first followed by the rest of ads\n // https://code.espn.com/webdev/score/blob/develop/static/js/ads/admgr.js#L145-L149\n // https://code.espn.com/webdev/score/blob/develop/static/js/ads/init.js#L341-L368\n if (this.hasOutOfPageAd) {\n this._adManager.refreshOutOfPageAdSlots();\n } else if (slotsToRefresh.length > 0) {\n this._adManager.refresh(slotsToRefresh);\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions__[\"f\" /* adsRefreshed */])());\n }\n }, {\n key: '_onResize',\n value: function _onResize() {\n var _this5 = this;\n\n this._checkElementVisibility(function (instances) {\n if (instances) {\n // call `refreshAds` only when there are instances to refresh\n // use this logic when it's ok to just refresh the ad which just gets visible\n // this._refreshAds(instances);\n\n // use this logic so that we can ensure competitive exclusion in a page\n _this5._refreshAds();\n }\n });\n }\n }, {\n key: '_checkElementVisibility',\n value: function _checkElementVisibility(callback) {\n // instances set to lazy-render and not rendered yet\n var instancesToCheck = this.getMountedInstances().filter(function (_ref2) {\n var refreshed = _ref2.state.refreshed,\n refreshWhenVisible = _ref2.props.refreshWhenVisible;\n return refreshWhenVisible && !refreshed;\n });\n\n if (instancesToCheck.length > 0) {\n var visibleInstances = instancesToCheck.filter(function (_ref3) {\n var adSlot = _ref3.refs.adSlot;\n return Object(__WEBPACK_IMPORTED_MODULE_1__lib_ui_isElementVisible__[\"a\" /* default */])(adSlot);\n });\n\n if (visibleInstances.length > 0) {\n visibleInstances.forEach(function (instance, index, arr) {\n instance.setState({ refreshed: true }, index === arr.length - 1 ? function () {\n callback(visibleInstances);\n } : null);\n });\n return;\n }\n }\n\n if (callback) {\n callback();\n }\n }\n\n // logic copied from https://code.espn.com/webdev/score/blob/develop/static/js/ads/admgr.js#L664\n\n }, {\n key: '_shouldShowSlotForBreakpoint',\n value: function _shouldShowSlotForBreakpoint(slot) {\n var bp = breakpoints[this.props.mq];\n var include = slot.getAttribute('data-include-bp');\n var exclude = slot.getAttribute('data-exclude-bp');\n var shouldShow = true;\n\n if (include) {\n // if the current breakpoint is not found in the included array, skip this slot\n if (include.split(',').indexOf(bp) === -1) {\n shouldShow = false;\n }\n }\n\n if (exclude) {\n // if the current breakpoint is found in the exluded breakpoints array, skip this slot\n if (exclude.split(',').indexOf(bp) !== -1) {\n shouldShow = false;\n }\n }\n\n return shouldShow;\n }\n }, {\n key: 'adManager',\n set: function set(value) {\n this._adManager = value;\n }\n }, {\n key: 'gptSlots',\n get: function get() {\n return this._adManager && this._adManager.getGPTArray({ independent: false }) || [];\n }\n }, {\n key: 'hasAds',\n get: function get() {\n return this.getMountedInstances().length > 0;\n }\n }, {\n key: 'hasOutOfPageAd',\n get: function get() {\n return this.gptSlots.filter(function (slot) {\n return slot.type === AdType.OVERLAY;\n }).length > 0;\n }\n }]);\n\n return AdManager;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (AdManager);\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 792 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isElementVisible;\nfunction isElementVisible(el) {\n if (el) {\n var rect = el.getBoundingClientRect();\n return (\n // uncomment this to get this to return true when the entire element is visible\n // rect.top >= 0 &&\n // rect.left >= 0 &&\n // rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n // rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n rect.top <= (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return false;\n};\n\n/***/ }),\n/* 793 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enums__ = __webpack_require__(1);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n/* eslint-disable no-console */\n\n\nfunction getTargeting(owner) {\n var targetingKeys = owner.getTargetingKeys();\n var targeting = targetingKeys.reduce(function (acc, key) {\n var val = owner.getTargeting(key);\n acc[key] = val.length === 1 ? val[0] : val;\n return acc;\n }, {});\n return targeting;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var globalAdsConfig = window.espn.ads && window.espn.ads.config || {};\n var globalKvpsMap = globalAdsConfig.kvps.reduce(function (total, current) {\n total[current.name] = current.value;\n return total;\n }, {});\n\n var ads = props.ads;\n\n if (ads) {\n var localAdsConfig = ads.config;\n var combinedKvpsMap = _extends({}, globalKvpsMap, localAdsConfig.kvps);\n var combinedKvpsArray = Object.keys(combinedKvpsMap || {}).map(function (name) {\n return {\n name: name,\n value: combinedKvpsMap[name]\n };\n });\n\n // Fixes breakpoints not found error\n globalAdsConfig.breakpoints = {\n xl: [1260],\n l: [1024, 1259],\n m: [768, 1023],\n s: [321, 767],\n xs: [0, 320]\n };\n\n var adConfig = _extends({}, globalAdsConfig, {\n disableInitialLoad: true,\n kvps: combinedKvpsArray,\n level: localAdsConfig.level\n });\n\n if (props.flags[__WEBPACK_IMPORTED_MODULE_0__enums__[\"t\" /* Flags */].DEBUG_AD] === 'true') {\n adConfig.onSlotRenderEnded = function onSlotRenderEnded(event) {\n var creativeId = event.creativeId,\n isEmpty = event.isEmpty,\n size = event.size,\n slot = event.slot;\n\n var divId = slot.getSlotElementId();\n var pageTargeting = getTargeting(window.googletag.pubads());\n var slotTargeting = getTargeting(slot);\n\n if (!isEmpty && size) {\n console.info('[Ad] type(\\'' + slot.type + '\\'), creative(\\'' + creativeId + '\\', \\'' + size[0] + 'x' + size[1] + '\\'), div(\\'' + divId + '\\')', slotTargeting, pageTargeting, event);\n } else {\n console.info('[Ad] type(\\'' + slot.type + '\\'), creative(\\'empty\\'), div(\\'' + divId + '\\')', slotTargeting, pageTargeting, event);\n }\n };\n }\n\n return adConfig;\n }\n return {};\n});\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 794 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_modal__ = __webpack_require__(363);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_modal___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_modal__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_chooseProvider_ProviderDialog__ = __webpack_require__(367);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__common_selectors_providerSelector__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__common_authenticationAware__ = __webpack_require__(224);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__lib_omniture__ = __webpack_require__(34);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable react/no-danger */\n\n\n\n\n\n\n\n\n\n// empty the modal's default styles\n__WEBPACK_IMPORTED_MODULE_2_react_modal___default.a.defaultStyles = {};\n\nvar ProviderModal = function (_Component) {\n _inherits(ProviderModal, _Component);\n\n function ProviderModal(props) {\n _classCallCheck(this, ProviderModal);\n\n var _this = _possibleConstructorReturn(this, (ProviderModal.__proto__ || Object.getPrototypeOf(ProviderModal)).call(this, props));\n\n _this.closeAuthModal = _this.closeAuthModal.bind(_this);\n return _this;\n }\n\n _createClass(ProviderModal, [{\n key: 'closeAuthModal',\n value: function closeAuthModal() {\n this.setState({ searchFilter: '' });\n Object(__WEBPACK_IMPORTED_MODULE_7__lib_omniture__[\"b\" /* clearTrackingData */])();\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__common_actions_authenticationActions__[\"H\" /* createCloseProviderDialogAction */])());\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n showProviderDialog = _props.showProviderDialog,\n providerSelect = _props.providerSelect;\n\n\n var transparentMask = showProviderDialog ? _jsx('div', {\n className: 'js-feed-item-mask active'\n }) : null;\n return _jsx('div', {}, void 0, transparentMask, _jsx(__WEBPACK_IMPORTED_MODULE_2_react_modal___default.a, {\n isOpen: showProviderDialog,\n onRequestClose: this.closeAuthModal,\n overlayClassName: 'lightbox-container'\n }, void 0, _jsx('article', {\n className: 'lightbox-watch watch-provider-modal js-bloomed'\n }, void 0, _jsx('div', {\n className: 'btn-close icon-font-before icon-close-solid-before',\n onClick: this.closeAuthModal\n }), _jsx('section', {\n className: 'watchProvider--modal'\n }, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_3__common_chooseProvider_ProviderDialog__[\"a\" /* default */], {\n providerSelect: providerSelect,\n providerClass: 'watchProvider__scroll'\n })))));\n }\n }]);\n\n return ProviderModal;\n}(__WEBPACK_IMPORTED_MODULE_0_react__[\"Component\"]);\n\nProviderModal.defaultProps = {\n showProviderDialog: false\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n var showProviderDialog = Object(__WEBPACK_IMPORTED_MODULE_4__common_selectors_providerSelector__[\"b\" /* displayProviderDialogSelector */])(state);\n return {\n showProviderDialog: showProviderDialog\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_5__common_authenticationAware__[\"a\" /* default */])()(Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(ProviderModal)));\n\n/***/ }),\n/* 795 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = scoringObserver;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_selectors_pageSelector__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ui_loading__ = __webpack_require__(377);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observeStore__ = __webpack_require__(376);\n\n\n\n\nfunction scoringObserver(store) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__observeStore__[\"a\" /* default */])(store, __WEBPACK_IMPORTED_MODULE_0__common_selectors_pageSelector__[\"c\" /* default */], function (currentPage, nextPage) {\n if (nextPage.scored === true) {\n Object(__WEBPACK_IMPORTED_MODULE_1__ui_loading__[\"a\" /* uiLoadingComplete */])();\n }\n });\n};\n\n/***/ }),\n/* 796 */\n/***/ (function(module, exports, __webpack_require__) {\n\n//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(107)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var es = moment.defineLocale('es', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n ordinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return es;\n\n}));\n\n/***/ }),\n/* 797 */\n/***/ (function(module, exports, __webpack_require__) {\n\n//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(107)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, function (moment) { 'use strict';\n\n\n var pt_br = moment.defineLocale('pt-br', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : '%s atrás',\n s : 'poucos segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n ordinalParse: /\\d{1,2}º/,\n ordinal : '%dº'\n });\n\n return pt_br;\n\n}));\n\n/***/ }),\n/* 798 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(console) {/* unused harmony export renderCollection */\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createCollection;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__enums__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__page_actions__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__scheduleModule_actions__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ads_BannerAd__ = __webpack_require__(76);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__Editorial__ = __webpack_require__(799);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ads_InContentAd__ = __webpack_require__(150);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__page_buckets_BucketListContainer__ = __webpack_require__(99);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__page_common_MainContainer__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__page_common_TopLayoutContainer__ = __webpack_require__(152);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__selectors_heroSelector__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__constants__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__PropTypes__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__selectors_appSelector__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__selectors_oneIdSelector__ = __webpack_require__(27);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction renderRedirect() {\n try {\n window.location.href = __WEBPACK_IMPORTED_MODULE_12__constants__[\"w\" /* notFoundUrl */];\n } catch (err) {\n console.error(err);\n }\n}\n\nfunction renderCollection(props) {\n var buckets = props.buckets,\n hero = props.hero,\n isFetching = props.isFetching,\n showOneIdLogin = props.showOneIdLogin,\n isLoggedIn = props.isLoggedIn;\n // if there is no bucket list and hero data, redirect to not found page\n\n if (!buckets.length && Object.keys(hero).length === 0 && isFetching === false) {\n return _jsx('div', {}, void 0, renderRedirect());\n }\n\n var bannerAd = [_jsx(__WEBPACK_IMPORTED_MODULE_5__ads_BannerAd__[\"a\" /* default */], {}, 'banner_ad')];\n\n // layout will change depending on presence of editorial description, set some defaults\n var editorial = null;\n var inContentAd = null;\n var layoutOverride = __WEBPACK_IMPORTED_MODULE_2__enums__[\"i\" /* BucketLayout */].DEFAULT_UNLIMITED;\n var layoutClass = 'layout-full layout-full--watch';\n var columnClass = 'col-a';\n\n // if there is a description, show the ad and override to DEFAULT layout with unlimited items\n if (buckets[0] && buckets[0].description) {\n var header = 'About ' + buckets[0].name;\n var content = buckets[0].description;\n editorial = _jsx(__WEBPACK_IMPORTED_MODULE_6__Editorial__[\"a\" /* default */], {\n header: header,\n content: content\n });\n inContentAd = _jsx(__WEBPACK_IMPORTED_MODULE_7__ads_InContentAd__[\"a\" /* default */], {\n exclude: ['s', 'm']\n });\n layoutClass = 'layout-bc layout-bc--watch';\n columnClass = 'col-b';\n }\n\n var renderHeroInBucket = true;\n var hideHeaderLink = false;\n\n var _ref = buckets[0] || {},\n _ref$metadata = _ref.metadata;\n\n _ref$metadata = _ref$metadata === undefined ? {} : _ref$metadata;\n var imageFormat = _ref$metadata.imageFormat;\n\n if (imageFormat === __WEBPACK_IMPORTED_MODULE_2__enums__[\"j\" /* BucketRatio */].FiveTwo || imageFormat === __WEBPACK_IMPORTED_MODULE_2__enums__[\"j\" /* BucketRatio */].FourThree || imageFormat === __WEBPACK_IMPORTED_MODULE_2__enums__[\"j\" /* BucketRatio */].TwoThree) {\n renderHeroInBucket = false;\n layoutOverride = null;\n hideHeaderLink = true;\n }\n var showLogin = !isLoggedIn && showOneIdLogin;\n return _jsx(__WEBPACK_IMPORTED_MODULE_9__page_common_MainContainer__[\"a\" /* default */], {\n pre: bannerAd,\n showLogin: showLogin\n }, void 0, renderHeroInBucket ? _jsx(__WEBPACK_IMPORTED_MODULE_10__page_common_TopLayoutContainer__[\"a\" /* default */], {}) : null, _jsx('div', {\n className: layoutClass\n }, void 0, _jsx('section', {\n className: columnClass\n }, void 0, _jsx(__WEBPACK_IMPORTED_MODULE_8__page_buckets_BucketListContainer__[\"a\" /* default */], {\n pageType: __WEBPACK_IMPORTED_MODULE_2__enums__[\"y\" /* PageType */].COLLECTION,\n layoutOverride: layoutOverride,\n renderHeroInBucket: !renderHeroInBucket,\n hideHeaderLink: hideHeaderLink\n }, 'bucket_list_container')), _jsx('section', {\n className: 'col-c'\n }, void 0, editorial, inContentAd)));\n}\n\n// create collection-like page(e.g. collection, product)\nfunction createCollection() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$pageName = options.pageName,\n pageName = _options$pageName === undefined ? 'collection' : _options$pageName;\n\n\n var Collection = function Collection(props) {\n return renderCollection(props);\n };\n\n Collection.propTypes = {\n buckets: __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].array,\n isFetching: __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].bool,\n hero: __WEBPACK_IMPORTED_MODULE_0_react__[\"PropTypes\"].object\n };\n\n Collection.loadActions = [function (params, query, lang) {\n return Object(__WEBPACK_IMPORTED_MODULE_3__page_actions__[\"o\" /* createFetchPageAction */])(pageName, params, query, lang);\n }, function (params, query, lang) {\n return Object(__WEBPACK_IMPORTED_MODULE_4__scheduleModule_actions__[\"d\" /* fetchScheduleModule */])(lang);\n }];\n\n Collection.refreshInterval = 65; // 1 min and 5 secs\n Collection.onRefresh = function (_ref2) {\n var dispatch = _ref2.dispatch,\n routeParams = _ref2.routeParams,\n lang = _ref2.lang,\n _ref2$location$query = _ref2.location.query,\n query = _ref2$location$query === undefined ? {} : _ref2$location$query;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__page_actions__[\"o\" /* createFetchPageAction */])(Collection.pageName, routeParams, query, lang)).then(function () {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__page_actions__[\"n\" /* completePageLoad */])());\n });\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_4__scheduleModule_actions__[\"d\" /* fetchScheduleModule */])(lang)).then(function () {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_4__scheduleModule_actions__[\"e\" /* scoreScheduleModule */])());\n });\n };\n\n var mapStateToProps = function mapStateToProps(state) {\n return {\n buckets: state.page && state.page.buckets || [],\n isFetching: state.page && state.page.isFetching,\n hero: Object(__WEBPACK_IMPORTED_MODULE_11__selectors_heroSelector__[\"a\" /* default */])(state),\n showOneIdLogin: Object(__WEBPACK_IMPORTED_MODULE_14__selectors_appSelector__[\"G\" /* showOneIdLoginSelector */])(state),\n isLoggedIn: Object(__WEBPACK_IMPORTED_MODULE_15__selectors_oneIdSelector__[\"f\" /* oneIdLoggedInSelector */])(state)\n };\n };\n\n return Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"b\" /* connect */])(mapStateToProps)(Collection);\n}\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(2)))\n\n/***/ }),\n/* 799 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\nvar _jsx = function () { var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7; return function createRawReactElement(type, props, key, children) { var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = {}; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }; }();\n\n\n\nvar Editorial = function Editorial(props) {\n return _jsx(\"article\", {\n className: \"sub-module module_editorial\"\n }, void 0, _jsx(\"header\", {}, void 0, _jsx(\"h1\", {}, void 0, props.header)), _jsx(\"div\", {\n className: \"content\"\n }, void 0, _jsx(\"p\", {}, void 0, props.content)));\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Editorial);\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// webapp.39a6bdc7d0de5d9183da.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\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};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + ({\"0\":\"polyfill-intl\"}[chunkId]||chunkId) + \".\" + \"39a6bdc7d0de5d9183da\" + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 379);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 39a6bdc7d0de5d9183da","'use strict';\n\nmodule.exports = require('./lib/React');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/react.js\n// module id = 0\n// module chunks = 1","export const AddToCalendarPlacement = {\n ALERT: 'ALERT',\n EVENT_CARD: 'EVENT_CARD'\n};\n\nexport const AuthenticatorType = {\n ADOBE: 'adobe',\n IP: 'ip'\n};\n\nexport const AdobePass = {\n Env: {\n PROD: 'production',\n STAGING: 'staging'\n },\n METADATA: {\n TTL_AUTHN: 'TTL_AUTHN',\n TTL_AUTHZ: 'TTL_AUTHZ',\n USERID: 'userID',\n UPSTREAM_USERID: 'upstreamUserID',\n PACKAGE_ID: 'packageId',\n PACKAGE_TIER: 'tier'\n }\n};\n\nexport const Api = {\n Page: {\n EVENT_QUERY_KEYS: [\n 'airingId',\n 'eventId',\n 'id',\n 'network',\n 'channel',\n 'gameId',\n 'country'\n ],\n PCC_NETWORK_NAMES: [\n 'espn',\n 'espn2',\n 'espn3',\n 'espnu',\n 'longhorn',\n 'espnews',\n 'espndeportes',\n 'sec',\n 'secplus',\n 'accextra',\n 'acc'\n ]\n },\n Env: {\n DEV: 'dev',\n QA: 'qa',\n STAGING: 'staging',\n PROD: 'prod'\n }\n};\n\nexport const AppEnvs = {\n prod: 'PROD',\n qa: 'QA',\n dev: 'DEV'\n};\n\nexport const BlackoutTypes = {\n DMA: 'dma',\n DEVICE: 'device'\n};\n\nexport const BucketLayout = {\n COLLECTION: 'COLLECTION',\n DEFAULT: 'DEFAULT',\n DEFAULT_UNLIMITED: 'DEFAULT_UNLIMITED',\n HERO: 'HERO',\n 'feature-left': 'feature-left',\n 'feature-right': 'feature-right',\n TAPESTRY_LEFT: 'TAPESTRY_LEFT', // will be deprecated\n TAPESTRY_RIGHT: 'TAPESTRY_RIGHT', // will be deprecated\n SixteenNineTapestryLeft: 'TAPESTRY_LEFT', // will be deprecated\n SixteenNineTapestryRight: 'TAPESTRY_RIGHT', // will be deprecated\n SCHEDULE_MODULE: 'SCHEDULE_MODULE',\n DEFAULT_EXPANDABLE: 'DEFAULT_EXPANDABLE',\n LARGE_EXPANDABLE: 'LARGE_EXPANDABLE',\n SixteenNine: 'SixteenNine',\n FiveTwo: 'FiveTwo',\n TwoThree: 'TwoThree',\n FourThree: 'FourThree',\n Carousel: 'carousel'\n};\n\nexport const LayoutThresholds = {\n DEFAULT_UNLIMITED: undefined,\n 'feature-left': 5,\n 'feature-right': 5,\n TAPESTRY_LEFT: 5,\n TAPESTRY_RIGHT: 5,\n COLLECTION: undefined\n};\n\nexport const LayoutVariant = {\n COLLECTION: 'collection',\n DTC: 'dtc'\n};\n\nexport const Device = {\n DESKTOP: 'desktop',\n HANDSET: 'handset',\n TABLET: 'tablet'\n};\n\nexport const DeviceType = Object.keys(Device).reduce((acc, key) => {\n acc[Device[key]] = key;\n return acc;\n}, {});\n\nexport const BucketStatus = {\n WEB_LIVE: 'WEB_LIVE',\n WEB_UPCOMING: 'WEB_UPCOMING'\n};\n\nexport const OneIdEnv = {\n STAGING: 'staging',\n PROD: 'prod'\n};\n\nexport const PageType = {\n HOME: 'HOME',\n COLLECTION: 'COLLECTION',\n FEATURES: 'FEATURES',\n SEARCH: 'SEARCH',\n ORIGINALS: 'ORIGINALS',\n SID: 'SID',\n CATALOG: 'CATALOG'\n};\n\nexport const PlayerError = {\n AUTHORIZATION: 'AUTHORIZATION',\n DEFAULT: 'DEFAULT',\n UNSUPPORTED: 'UNSUPPORTED'\n};\n\nexport const PlayerEvents = {\n ESPN_PLAYING: 'espn.playing',\n ESPN_PLAY: 'espn.play',\n ESPN_PAUSE: 'espn.pause',\n ESPN_AD_POD_STARTED: 'espn.ads-pod-started',\n ESPN_AD_POD_ENDED: 'espn.ads-pod-ended',\n ESPN_AD_STARTED: 'espn.ads-ad-started',\n ESPN_AD_ENDED: 'espn.ads-ad-ended',\n ESPN_CONTENT_ENDED: 'espn.contentended',\n ESPN_CONTENT_LOADED: 'espn.contentloaded',\n ESPN_PROGRAM_CHANGE: 'espn.programchange',\n ESPN_AUTOPLAY_TOGGLED: 'espn.autoplaytoggled',\n ESPN_SOCIAL_OPENED: 'socialopened',\n ESPN_SOCIAL_CLOSED: 'socialclosed',\n ESPN_CAPTION_OPENED: 'captionopened',\n ESPN_CAPTION_CLOSED: 'captionclosed',\n ESPN_ERROR: 'espn.error'\n};\n\nexport const Route = {\n HOME: '',\n FEATURES: 'features',\n SCHEDULE: 'schedule',\n PLAYER: 'player'\n};\n\nexport const Storage = {\n Analytics: {\n IS_AUTHENTICATING: 'IS_AUTHENTICATING'\n }\n};\n\nexport const ModalType = {\n POPUP: 'POPUP',\n FLASH: 'FLASH',\n BLACKOUT_MAP: 'BLACKOUT_MAP',\n IFRAME_AUTH: 'IFRAME_AUTH',\n PAYWALL: 'PAYWALL',\n BROADCAST_PICKER: 'BROADCAST_PICKER'\n};\n\nexport const ContentType = {\n LISTING: 'listing',\n VOD: 'vod',\n PRODUCT: 'product',\n SHOW: 'show',\n FILM: 'film',\n ONDEMAND: 'onDemand',\n PROGRAM: 'program',\n // legacy type for `v1` Page API used for legacy 5.x app\n EVENT: 'event',\n VIDEO: 'video',\n TERM: 'term',\n COMPILATION: 'compilation'\n};\n\nexport const URLPath = {\n [ContentType.PRODUCT]: 'product',\n [ContentType.SHOW]: 'series',\n [ContentType.FILM]: 'film',\n [ContentType.PROGRAM]: 'program',\n [ContentType.TERM]: 'search',\n [ContentType.COMPILATION]: 'compilation'\n};\n\n// should we use this for `type` field in listings API?\nexport const ContentStatus = {\n LIVE: 'live',\n UPCOMING: 'upcoming',\n REPLAY: 'replay',\n OVER: 'over'\n};\n\nexport const SourceType = {\n LINEAR: 'linear',\n ONLINE: 'online'\n};\n\nexport const AuthTypes = {\n MVPD: 'mvpd',\n ISP: 'isp',\n BAM: 'direct',\n OPEN: 'open'\n};\n\nexport const AuthStates = {\n MVPD: 'mvpd_login',\n ISP: 'isp',\n MVPD_PREVIOUS: 'mvpd_previous'\n};\n\nexport const Entitlements = {\n ESPN_PLUS: 'ESPN_PLUS',\n ESPN_PLUS_MLB: 'ESPN_PLUS_MLB',\n ESPN_PLUS_NHL: 'ESPN_PLUS_NHL',\n ESPN_EXEC: 'ESPN_EXEC',\n ESPN_PLUS_UFC_PPV: 'ESPN_PLUS_UFC_PPV',\n ESPN_TDA: 'fallback_subscription_directbilling_tda'\n};\n\nexport const ComScoreC3 = {\n [Entitlements.ESPN_PLUS]: 'ESPNPlus',\n [Entitlements.ESPN_PLUS_NHL]: 'NHLTV',\n [Entitlements.ESPN_PLUS_MLB]: 'MLBTV'\n};\n\n// list of URL query flags we use\nexport const Flags = {\n APP_NAME: 'appName', // The app can be the default \"webapp\", or \"espnapp\"\n ADOBEPASS_ENV: 'passenv', // used to point Adobe Pass Access Enabler to different environment\n API_ENV: 'apienv', // points the site at whatever PageApi environment,\n CONFIG_ENV: 'configenv', // use config file for the specified env (`qa` or `prod`)\n COUNTRY: 'country', // allows to override X-Country header to determine country\n LANG: 'lang', // allows to override Accept-Language header\n DEBUG_AD: 'debug_ad', // used for printing out gpt ads info\n DEVICE: 'device', // overrides the devices detected from X-Device header\n PACKAGE_ID: 'packageId', // allows testing passing this packageId into pageApi\n PLAYER_TECH: 'playertech', // overrides the player tech (for forcing brightcove in webviews).\n ROADBLOCK: 'roadblock', // set to false to disable the authenticated content roadblock\n FROM_ROADBLOCK: 'rb', // set this to indicate that we were linked from the roadblock page (prevents cyclic redirection)\n ROADBLOCK_NO_UNIVERSAL_LINK: 'rb_noul', // do not use Universal Link logic\n HIDENAV: 'hidenav', // Used by webview in apps to remove top nav bars\n CLIENT_NAV: 'clientnav', // a flag to enable client side rendering from the header navigation\n WEBVIEW: 'webview', // Used by webview in apps to render the page completely w/o page shell\n ENABLE_SEARCH: 'search', // Used to enable search box on home page\n BYPASS_TOKEN: 'bypass_token', // Used to bypass AdobePass auth step\n PACKAGE_FILTER: 'pkg_filter', // Used to filter contents by packageId for international\n SSR: 'ssr', // Used to indicate if the server side rendering should be used or not,\n REGION: 'region', // ESPN App passes this as the edition to webviews. We use this instead of headers if present\n PLAYER_ID: 'playerId', // A Brightcove playerId to override the default one\n ONEID_ENV: 'oneidenv', // Staging or Production OneID environment\n PARTNER: 'partner', // Used for partner syndicated player\n CATEGORY_ID: 'categoryId', // Syndicated player (i.e. US Open) to filter schedule correctly by (categoryId, id, partner)\n AUTO_DISPLAY_PROVIDER_DIALOG: 'autoDisplayDialog', // Used for syndicated player to show provider dialog immediately\n SHOW_SCHEDULE_IN_SYNDICATED_PLAYER: 'scheduleModule', // Used for showing schedule module in the syndicated player\n AUTH_RETRY: 'auth_retry', // Used when the syndicated player reload itself when the mvpd auth state failed to reflect\n XDOMAIN_BLOCKED: 'xd_blocked', // Used in the syndicated player to indicate that the browser blocks cross domain storage\n DEBUG: 'debug', // Used for the page shell to work in debug mode\n DISNEY_ENV: 'disneyid', // Used for the page shell to determine where to load `DisneyID.js`\n DISNEY_CLIENT_ID: 'disneyClientId', // Used for the page shell to override the `clientId` for OneID\n BAM_ENV: 'bamenv', // points BAM SDK to its env (`beta` or `qa`)\n MEDIA_LOCATION: 'ml', // temp param to override `media location(videoHref)`\n PAYWALL: 'paywall', // use BAM's paywall page\n PASS_ONEID_TOKEN: 'pass_token', // override bootstrap `bam.passToken` flag\n NO_SSR: 'no_ssr',\n PACKAGE_TIER: 'tier', // Package tier,\n EDITION: 'edition', // used to send edition to API calls i.e. carribean\n UNSUPPORTED_ERROR: 'unsupported_error', // Used to trigger the redirect to the /unsupported error page\n VIDEO_ADS_PROVIDER: 'videoAdsProvider', // Overrides which Ad Provider to use `google` or `freewheel` for the Player\n VIDEO_ADS_CMSID: 'videoAdsCMSID', // Overrides the GAM `cmsid` param for the Player\n VIDEO_ADS_NETWORK_CODE: 'videoAdsNetworkCode', // Overrides the `networkCode` adsConfig param for the Player\n VIDEO_ADS_AD_UNIT: 'videoAdsAdUnit', // Overrides the `adUnit` adsConfig param for the Player\n APP_DRM_SUPPORT: 'appDrmSupport', // indicates that the app (embedding the site as a webview) supports DRM\n MUTED: 'muted'\n};\n\nexport const PlayerPlacement = {\n HERO: 'hero',\n PLAYER: 'player'\n};\n\nexport const ESPNAppCookie = {\n AUTH: 'espnappwatchtab_auth',\n PERSONALIZATION: 'espnappwatchtab_personalization'\n};\n\nexport const SyndicatedPlayerLoginOptions = {\n SELF: 0,\n NEW_WINDOW: 1,\n NEW_WINDOW_MANAGED: 2\n};\n\nexport const BreakPoints = {\n MOBILE: 'mobile',\n MOBILE_LARGE: 'mobile-lg',\n TABLET: 'tablet',\n DESKTOP: 'desktop',\n DESKTOP_LARGE: 'desktop-lg'\n};\n\nexport const BucketRatio = {\n SixteenNine: '16x9',\n FourThree: '4x3',\n FiveTwo: '5x2',\n TwoThree: '2x3'\n};\n\nexport const BucketRatioCols = {\n [BreakPoints.MOBILE]: {\n [BucketRatio.SixteenNine]: 1,\n [BucketRatio.FourThree]: 2,\n [BucketRatio.FiveTwo]: 1,\n [BucketRatio.TwoThree]: 2\n },\n [BreakPoints.MOBILE_LARGE]: { // 598\n [BucketRatio.SixteenNine]: 1,\n [BucketRatio.FourThree]: 4,\n [BucketRatio.FiveTwo]: 1,\n [BucketRatio.TwoThree]: 3\n },\n [BreakPoints.TABLET]: { // 768\n [BucketRatio.SixteenNine]: 3,\n [BucketRatio.FourThree]: 4,\n [BucketRatio.FiveTwo]: 2,\n [BucketRatio.TwoThree]: 4\n },\n [BreakPoints.DESKTOP]: { // 1024\n [BucketRatio.SixteenNine]: 4,\n [BucketRatio.FourThree]: 4,\n [BucketRatio.FiveTwo]: 2,\n [BucketRatio.TwoThree]: 5\n },\n [BreakPoints.DESKTOP_LARGE]: { // 1260\n [BucketRatio.SixteenNine]: 4,\n [BucketRatio.FourThree]: 4,\n [BucketRatio.FiveTwo]: 3,\n [BucketRatio.TwoThree]: 6\n }\n};\n\nexport const RenderTemplateTypes = {\n BASIC: 'basic',\n PAGE_SHELL: 'pageShell'\n};\n\nexport const SortOrder = {\n DESC: 'DESC',\n ASC: 'ASC'\n};\n\nexport const DarkThemeLogos = {\n espn_free: 'espn_free_wht',\n accextra: 'accextra_wht'\n};\n\nexport default {\n AddToCalendarPlacement,\n AdobePass,\n Api,\n AppEnvs,\n BucketLayout,\n BucketStatus,\n PageType,\n PlayerError,\n PlayerEvents,\n Route,\n Storage,\n ModalType,\n Flags,\n BucketRatio,\n BucketRatioCols\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/enums.js","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nvar now = require(\"date-now\")\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/console-browserify/index.js\n// module id = 2\n// module chunks = 1","// dateTime3 = 24h, dateTime2 = 12h + AM/PM\nconst esFaq = 'https://support.espn.com/hc/es';\nconst usFaq = 'https://support.espn.com/hc/en-us';\nconst brFaq = 'https://support.espn.com/hc/pt-br';\nconst carribFaq = 'http://cdn.espni.go.com/_templates/welcome-espnplay/popups/faq-en-espnplay.html';\nconst anzlFaq = 'https://support.espn.com/hc/en-au';\n\nconst faqMap = {\n ssla: esFaq,\n brazil: brFaq,\n caribbean: carribFaq,\n anzl: anzlFaq,\n us: usFaq\n};\n\nconst editionMap = {\n MX: {pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Mexico\n CR: {pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Costa Rica\n BZ: {pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Belize\n DO: {pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Dominican Republic\n SV: {pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // El Salvador\n GT: {pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Guatemala\n HN: {pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Honduras\n NI: {pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Nicaragua\n PA: {pageShellRegion: 'mx', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Panama\n AR: {pageShellRegion: 'ar', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.ar' }, dateFormat: 'dateTime3' }, // Argentina\n PY: {pageShellRegion: 'ar', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.ar' }, dateFormat: 'dateTime3' }, // Paraguay\n UY: {pageShellRegion: 'ar', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.ar' }, dateFormat: 'dateTime3' }, // Uruguay\n BO: {pageShellRegion: 'cl', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.cl' }, dateFormat: 'dateTime3' }, // Bolivia\n CL: {pageShellRegion: 'cl', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.cl' }, dateFormat: 'dateTime3' }, // Chile\n PE: {pageShellRegion: 'pe', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.pe' }, dateFormat: 'dateTime3' }, // Peru\n CO: {pageShellRegion: 'co', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.co' }, dateFormat: 'dateTime3' }, // Colombia\n EC: {pageShellRegion: 'co', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.co' }, dateFormat: 'dateTime3' }, // Ecuador\n VE: {pageShellRegion: 've', pageShellLanguage: 'es', edition: 'ssla', ad: { site: 'espn.latam.ve' }, dateFormat: 'dateTime3' }, // Venezuela\n BR: {pageShellRegion: 'br', pageShellLanguage: 'pt', edition: 'brazil', ad: { site: 'espn.com.br' }, dateFormat: 'dateTime3' }, // Brasil\n AI: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Anguila\n AG: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Antigua and Barbuda\n AW: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Aruba\n BS: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Bahamas\n BB: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Barbados\n BM: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Bermuda\n KY: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Cayman Islands\n DM: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Dominica\n GD: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Grenada\n GP: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Guadeloupe\n GY: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Guyana\n HT: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Haiti\n JM: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Jamaica\n MQ: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Martinique\n LC: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Saint Lucia\n MF: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Saint Martin (French part)\n VC: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Saint Vincent and the Grenadines\n SR: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Suriname\n VG: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Virgin Islands (British)\n BQ: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Bonaire\n CW: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Curacao\n MS: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Montserrat\n BL: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Saint Barthelemy\n KN: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - St Kitts and Nevis\n SX: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - St Maarten\n TT: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Trinidad and Tobago\n TC: {pageShellRegion: 'uk', pageShellLanguage: 'en', edition: 'caribbean', ad: { site: 'espn.latam.mx' }, dateFormat: 'dateTime3' }, // Caribbean - Turks and Caicos\n AU: {pageShellRegion: 'au', pageShellLanguage: 'en', edition: 'anzl', ad: { site: 'espn.au' }, dateFormat: 'dateTime2' }, // Australia\n NZ: {pageShellRegion: 'au', pageShellLanguage: 'en', edition: 'anzl', ad: { site: 'espn.au' }, dateFormat: 'dateTime2' }, // New Zealand\n NL: {pageShellRegion: 'nl', pageShellLanguage: 'nl', edition: 'nl', ad: { site: 'espn.nl' }, dateFormat: 'dateTime3' }, // Netherlands\n // ?? Deportes - US\n US: {pageShellRegion: 'us', pageShellLanguage: 'en', edition: 'us', ad: { site: 'espn.com' }, dateFormat: 'dateTime2' }\n};\n\nexport default editionMap;\n\nexport function getEdition(countryCode) {\n return editionMap[countryCode] || editionMap['US'];\n}\n\nexport function getFaqUrl(edition, faqUrlsFromConfig) {\n // Default to hardcoded faq urls if external app-configurations is not available via bootstrap selector\n if (!faqUrlsFromConfig || !faqUrlsFromConfig[edition]) {\n return faqMap[edition] || faqMap['us'];\n }\n\n return faqUrlsFromConfig[edition];\n}\n\nexport function getAdEdition(countryCode) {\n const { pageShellRegion, edition } = getEdition(countryCode);\n if (edition === 'caribbean') {\n return 'mx';\n }\n return pageShellRegion;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./config/i18n/editionMap.js","import { createSelector } from 'reselect';\nimport { Flags, OneIdEnv, RenderTemplateTypes } from 'enums';\nimport { getEdition, getFaqUrl, getAdEdition } from 'config/i18n/editionMap';\nimport { queryString } from 'lib/format';\nimport bootstrapSelector from './bootstrapSelector';\nimport routingSelector from './routingSelector';\nimport whitelistSelector from './whitelistSelector';\nimport appConfig from '../../../config';\nimport appNames from '../../../config/appNames';\n\nconst appSelector = ({ app = {} }) => app;\n\nexport default createSelector(appSelector, (app) => app);\n\nexport const adobePassEnvSelector = createSelector(appSelector, ({ adobePassEnv }) => adobePassEnv);\n\nexport const apiEnvSelector = createSelector(appSelector, ({ apiEnv }) => apiEnv);\n\nexport const configEnvSelector = createSelector(appSelector, ({ configEnv }) => configEnv);\n\nexport const countrySelector = createSelector(appSelector, ({ country }) => country);\n\nexport const editionSelector = createSelector(countrySelector, (country) => getEdition(country));\n\nexport const isDomesticSelector = createSelector(countrySelector, (country) => country === 'US');\n\nexport const isIntlSelector = createSelector(isDomesticSelector, (isDomestic) => !isDomestic);\n\nexport const faqUrlSelector = createSelector(\n editionSelector,\n bootstrapSelector,\n ({ edition }, { faqUrls }) => getFaqUrl(edition, faqUrls));\n\nexport const adEditionSelector = createSelector(countrySelector, (country) => getAdEdition(country));\n\nexport const playbackMetaSelector = createSelector(appSelector, ({ playbackMeta }) => playbackMeta);\n\n// Use format from config if available, otherwise choose based on domestic/intl\nexport const dateFormatSelector = createSelector(\n countrySelector,\n isIntlSelector,\n (country, isIntl) => (\n (getEdition(country).dateFormat) || (isIntl && 'dateTime3') || 'dateTime2'\n )\n);\n\n// For isIntl, format the date as `Weekday, number de month`; default to `dddd, MMMM Do`\nexport const upcomingScheduleDateFormatSelector = createSelector(\n isIntlSelector,\n (isIntl) => (\n (isIntl && 'date15') || 'date10'\n )\n);\n\nexport const appNameSelector = createSelector(appSelector, ({ appName }) => appName);\n\nexport const isESPNAppSelector = createSelector(appSelector, ({ appName }) => appName === appNames.ESPNAPP);\n\nexport const webviewSelector = createSelector(\n appSelector,\n isESPNAppSelector,\n ({ webview }, isESPNApp) => (webview || isESPNApp)\n);\n\nexport const hasPageShellSelector = createSelector(\n appSelector,\n ({ renderTemplateType }) => (renderTemplateType === RenderTemplateTypes.PAGE_SHELL)\n);\n\n// Enable Search if query param search=true OR if set to true in config AND is domestic edition\nexport const enableSearchSelector = createSelector(\n appSelector,\n isDomesticSelector,\n ({ appName, enableSearch }, isDomestic) => (\n enableSearch ||\n (appConfig.enableSearch && isDomestic && (appName !== appNames.ESPNAPP))\n )\n);\n\nexport const oneIdEnvSelector = createSelector(\n appSelector,\n ({ location: { query = {} } }) => query[Flags.ONEID_ENV] || OneIdEnv.PROD\n);\n\n// FIXME: feedback page fails to populate intl providers on the server, fetching it client side\n// Turn off SSR on Sched page to get localized date/times\nexport const ssrSelector = createSelector(\n appSelector,\n ({ appName, location: { query = {}, path = '' } = {} }) => (\n query[Flags.SSR] !== false &&\n (\n (appName !== appNames.ESPNAPP && path.indexOf('schedule') === -1) ||\n path.indexOf('choose-provider') !== -1\n )\n )\n);\n\nexport const roadblockSelector = createSelector(\n appSelector,\n isIntlSelector,\n whitelistSelector,\n webviewSelector,\n ({ isMobile = false, options, location: { query = {} } = {} }, isIntl, inWhitelist, isWebview) => {\n // don't roadblock some lucky people\n if (inWhitelist || isWebview || isIntl) {\n return false;\n }\n\n if (query && query[Flags.ROADBLOCK] !== undefined) {\n return query[Flags.ROADBLOCK];\n }\n\n if (options && options[Flags.ROADBLOCK] !== undefined) {\n return options[Flags.ROADBLOCK];\n }\n\n return isMobile;\n }\n);\n\nexport const unsupportedErrorSelector = createSelector(\n appSelector,\n ({ appName, location: { query = {}, path = '' } = {} }) => {\n if (\n query && query[Flags.UNSUPPORTED_ERROR] !== undefined &&\n appName !== appNames.ESPNAPP && path.indexOf('unsupported') === -1\n ) {\n return query[Flags.UNSUPPORTED_ERROR];\n }\n\n return false;\n }\n);\n\nexport const playerTechSelector = createSelector(\n appSelector,\n isIntlSelector,\n whitelistSelector,\n ({ options, location: { query = {} } = {} }, isIntl, inWhitelist) => {\n // always let some lucky people get brightcove player\n if (inWhitelist || isIntl) {\n return 'brightcove';\n }\n\n // Supports assigning the playertech via query param `playertech=native || playertech=brightcove`\n if (query && query[Flags.PLAYER_TECH] !== undefined) {\n return query[Flags.PLAYER_TECH];\n }\n\n if (options && options[Flags.PLAYER_TECH] !== undefined) {\n return options[Flags.PLAYER_TECH];\n }\n\n return 'brightcove';\n }\n);\n\nexport const intlSelector = createSelector(\n appSelector,\n ({ lang, messages }) => ({ lang, messages })\n);\n\nexport const contentIdInPlayerUrl = createSelector(routingSelector, ({ locationBeforeTransitions }) => {\n let id = null;\n const { pathname = '', query = {} } = locationBeforeTransitions || {};\n if (pathname === '/' || pathname === '/player') {\n id = query.id || query.eventId;\n if (!id && pathname === '/player') {\n return true; // Return true to indicate on player page w/o ID\n }\n }\n return id;\n});\n\nexport const hideNavSelector = createSelector(\n appSelector,\n ({ location: { query = {} } = {} }) => ((query && query[Flags.HIDENAV]) || false)\n);\n\nexport const intlAppSelector = createSelector(\n hideNavSelector,\n isIntlSelector,\n (hideNav, isIntl) => hideNav && isIntl\n);\n\nexport const bypassTokenSelector = createSelector(\n appSelector,\n ({ location: { query = {} } = {} }) => (query && query[Flags.BYPASS_TOKEN])\n);\n\nexport const isSyndicatedPlayerSelector = createSelector(\n appSelector,\n ({ location: { path = '' } = {} }) => (path.indexOf('/syndicated/player') > -1)\n);\n\nexport const packageFilterSelector = createSelector(\n isSyndicatedPlayerSelector,\n isSyndicatedPlayer => !isSyndicatedPlayer\n);\n\nexport const isSecureSelector = createSelector(\n appSelector,\n ({ location: { protocol, path = '' } = {} }) => (\n protocol === 'https' ||\n path.indexOf('/activate') !== -1\n )\n);\n\nexport const isAdDisabled = webviewSelector;\n\nexport const showDMVPDUpsellSelector = createSelector(\n isDomesticSelector,\n (isDomestic) => (\n isDomestic\n )\n);\n\n// returns the equivalent of `window.location` key/value pairs plus `query` which works universally\nexport const locationSelector = createSelector(\n appSelector,\n routingSelector,\n ({ location: { baseUrl, host, path, protocol: protocolArg, query = {} } = {} }, { locationBeforeTransitions: { hash } }) => {\n const tmp = host.split(':');\n const hostname = tmp[0];\n const port = tmp[1];\n const protocol = `${protocolArg}:`;\n const origin = `${protocol}//${host}`;\n const pathname = `${baseUrl}${path}`;\n const search = queryString(query, true);\n const href = `${origin}${pathname}${search}${hash}`;\n return {\n host,\n hostname,\n port,\n protocol,\n origin,\n pathname,\n search,\n href,\n hash,\n query\n };\n }\n);\n\nexport const isLegacyAppSelector = createSelector(\n isESPNAppSelector,\n routingSelector,\n (isESPNApp, { locationBeforeTransitions: { query: { version, appversion } = {} } }) => {\n const ver = version || appversion; // `version` is for Android, `appversion` is for iOS\n return isESPNApp && ver && ver.indexOf('5') === 0;\n }\n);\n\nexport const apiVersionSelector = createSelector(\n isLegacyAppSelector,\n (isLegacyApp) => (isLegacyApp ? 'v1' : 'v3')\n);\n\nexport const upsellUrlSelector = createSelector(\n isESPNAppSelector,\n bootstrapSelector,\n editionSelector,\n () => 'https://promo.espn.com/espn/contests/instantaccess/'\n);\n\nexport const newRelicTrackingSelector = createSelector(\n bootstrapSelector,\n ({ newrelic: { trackingOn } = {} }) => (trackingOn || false)\n);\n\nexport const showOneIdLoginSelector = createSelector(\n appSelector,\n ({ location: { query: { login = false } = {} } = {} }) => login\n);\n\n\nexport const showHelpModuleSelector = createSelector(\n bootstrapSelector,\n ({ activate: { helpModuleOn = true } = {} }) => helpModuleOn\n);\n\nexport const playerOptionsSelector = createSelector(\n bootstrapSelector,\n ({ player: { options = {} } = {} }) => options\n);\n\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/appSelector.js","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\n// module id = null\n// module chunks = ","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n\n didWarnAboutReceivingStore = true;\n warning('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n var _Provider$childContex;\n\n if (storeKey === void 0) {\n storeKey = 'store';\n }\n\n var subscriptionKey = storeKey + \"Subscription\";\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this[storeKey] = props.store;\n return _this;\n }\n\n _proto.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n Provider.prototype.componentWillReceiveProps = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: PropTypes.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n return Provider;\n}\nexport default createProvider();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/components/Provider.js\n// module id = null\n// module chunks = ","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\n// module id = null\n// module chunks = ","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/esm/extends.js\n// module id = null\n// module chunks = ","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\n// module id = null\n// module chunks = ","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub, onStateChange) {\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/utils/Subscription.js\n// module id = null\n// module chunks = ","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n return selector;\n}\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n var _contextTypes, _childContextTypes;\n\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n return function wrapWithConnect(WrappedComponent) {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n /* eslint-disable react/no-deprecated */\n\n });\n\n var Connect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Connect, _Component);\n\n function Connect(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n _this.initSelector();\n\n _this.initSubscription();\n\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref3;\n\n // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n var subscription = this.propsMode ? null : this.subscription;\n return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n _proto.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n return this.wrappedInstance;\n };\n\n _proto.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n _proto.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n _proto.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n _proto.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n _proto.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n\n var withExtras = _extends({}, props);\n\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n _proto.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return createElement(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(Component);\n /* eslint-enable react/no-deprecated */\n\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n var _this2 = this;\n\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n\n this.initSubscription();\n\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/components/connectAdvanced.js\n// module id = null\n// module chunks = ","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/utils/shallowEqual.js\n// module id = null\n// module chunks = ","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/wrapMapToProps.js\n// module id = null\n// module chunks = ","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/mapDispatchToProps.js\n// module id = null\n// module chunks = ","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/mapStateToProps.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/mergeProps.js\n// module id = null\n// module chunks = ","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/selectorFactory.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/connect/connect.js\n// module id = null\n// module chunks = ","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n trySubscribe: PropTypes.func.isRequired,\n tryUnsubscribe: PropTypes.func.isRequired,\n notifyNestedSubs: PropTypes.func.isRequired,\n isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/utils/PropTypes.js\n// module id = null\n// module chunks = ","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\nexport { Provider, createProvider, connectAdvanced, connect };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/index.js\n// module id = null\n// module chunks = ","/**\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\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/invariant.js\n// module id = 5\n// module chunks = 1","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/warning.js\n// module id = 6\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/reactProdInvariant.js\n// module id = 7\n// module chunks = 1","import { Device, AuthTypes, Entitlements } from 'enums';\nimport appConfig from '../config';\n\nconst {\n secureCdnHost,\n cdnHost\n} = appConfig;\n\nexport const GRAPHQL_API_KEY = '0dbf88e8-cc6d-41da-aa83-18b5c630bc5c';\nexport const SHIELD_API_KEY = '5p8m6dw513q716wt2os04mec3';\n\nexport const MVPD_PREVIOUS_KEY = '@watch:MVPD_PREVIOUS';\nexport const GEO_LOCATION_KEY = '@watch:GEO_LOCATION';\nexport const SUB_KEY = '@watch:SUB';\nexport const SESSION_TOKEN_KEY = '@watch:SESSION_TOKEN';\nexport const USER_TRACKING_KEY = '@watch:USER_TRACKING';\nexport const PREAUTH_LOCALSTORAGE_KEY = '@watch:PREAUTHZ';\nexport const FORCE_REFRESH_TOKEN_RETRY_KEY = '@watch:TOKEN_REFRESH_RETRY';\nexport const PRODUCT_API_CONFIGURATION = {\n dev: {\n serviceUrl: '//watch.product.api.espnsb.com',\n internalServiceUrl: '//watch.product.api.espnsb.com'\n },\n qa: {\n serviceUrl: '//watch.product.api.espnqa.com',\n internalServiceUrl: '//watch.product.api.espnqa.com'\n },\n staging: {\n serviceUrl: '//watch.product.api.preview.espn.com',\n internalServiceUrl: '//watch.product.api.preview.espn.com'\n },\n prod: {\n serviceUrl: '//watch.product.api.espn.com',\n internalServiceUrl: '//watchproductapi.prod.internal.geo.espn.com'\n }\n};\n\nexport const GRAPHQL_API_CONFIGURATION = {\n dev: {\n serviceUrl: '//watch.graph.api.espnsb.com'\n },\n qa: {\n serviceUrl: '//watch.graph.api.espnqa.com'\n },\n staging: {\n serviceUrl: '//watch.graph.api.preview.espn.com'\n },\n prod: {\n serviceUrl: '//watch.graph.api.espn.com'\n }\n};\n\nexport const LISTINGS_API_CONFIGURATION = {\n dev: {\n serviceUrl: '//broadband.espnqa.com/espn360/apis/v1/watch',\n internalServiceUrl: '//broadband.espnqa.com/espn360/apis/v1/watch'\n },\n qa: {\n serviceUrl: '//api-app.espn.com/v1/watch',\n internalServiceUrl: '//api-app.espn.com/espn360/apis/v1/watch'\n },\n staging: {\n serviceUrl: '//api-app.espn.com/v1/watch',\n internalServiceUrl: '//api-app.espn.com/espn360/apis/v1/watch'\n },\n prod: {\n serviceUrl: '//api-app.espn.com/v1/watch',\n internalServiceUrl: '//api-app.espn.com/espn360/apis/v1/watch'\n }\n};\n\n// list of varnish x-deivce values\n// https://github.disney.com/SEESPN/seespn_varnish/blob/4257d10478d4556183497914c22157aa08761613/files/default/etc/varnish/vcl/device.vcl#L50\n// Map of X-Device values to supports device values of PageAPI\nexport const xDeviceMap = {\n pc: Device.DESKTOP,\n 'pc-generic': Device.DESKTOP,\n handset: Device.HANDSET,\n mobile: Device.HANDSET,\n 'mobile-generic': Device.HANDSET,\n 'mobile-smartphone': Device.HANDSET,\n tablet: Device.TABLET\n};\n\nexport const unknownAuthStates = [\n `unknown_${AuthTypes.ISP}`,\n `unknown_${AuthTypes.MVPD}`,\n `unknown_${Entitlements.ESPN_PLUS}`,\n `unknown_${Entitlements.ESPN_PLUS_NHL}`,\n `unknown_${Entitlements.ESPN_PLUS_MLB}`\n];\n\nexport const clientRenderRoutes = [\n 'home',\n 'espnplus',\n 'product'\n];\n\nexport const NO_CATEGORY_ID_MAPPINGS = {\n pt: 'outros',\n en: 'others',\n es: 'otros'\n};\n\nexport const loadingImageUrl = `${cdnHost}/watchespn/images/espn-watch-placeholder.png`;\nexport const loadingImageUrlDark = `${cdnHost}/watchespn/images/espn-watch-placeholder-dark.png`;\nexport const secureLoadingImageUrl = `${secureCdnHost}/watchespn/images/espn-watch-placeholder.png`;\nexport const secureLoadingImageUrlDark = `${secureCdnHost}/watchespn/images/espn-watch-placeholder-dark.png`;\nexport const promoImageUrl = `${cdnHost}/watchespn/images/watch-promotional.jpg`;\nexport const securePromoImageUrl = `${secureCdnHost}/watchespn/images/watch-promotional.jpg`;\nexport const notFoundUrl = 'https://www.espn.com/404';\n\nexport const UPCOMING_MINUTES_WINDOW = 30;\n\nexport const BAM_PROXY_IFRAME_ID = 'bam-proxy-iframe';\nexport const BAM_PROMO_IFRAME_ID = 'bam-promo-iframe';\nexport const BAM_PAYWALL_IFRAME_ID = 'bam-paywall-iframe';\n\nexport const dotComNielsenData = {\n espnuk: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n general: {\n ci: 'us-600140',\n assetid: 'N/A',\n segB: 'N/A',\n sfcode: 'dcr',\n segA: 'N/A',\n section: 'N/A',\n segC: 'N/A',\n apn: 'espnCOM'\n },\n espnza: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n espnau: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n espn: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n espnin: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n fantasy: {\n apid: 'P302B69D5-F1DD-4E7A-BF8D-3E60F0EB5E5A',\n vc: 'c07'\n },\n watchespn: {\n apid: 'P07264C85-15CD-4A80-8E56-B5BFA6D93296',\n vc: 'b01'\n },\n espndeportes: {\n apid: 'P890E2723-EDBC-4CCE-96BA-F35EA3E50650',\n vc: 'c02'\n },\n espnfc: {\n apid: 'PE6995AAE-0C49-4372-B5E7-54C61BFE2AA5',\n vc: 'c03'\n },\n cricinfo: {\n apid: 'PED8CDAC2-F114-41BE-8B98-AFA06FAEA06E',\n vc: 'c04'\n }\n};\n\nexport const NIELSEN_APPID_EPLUS = 'P3AB2D9A0-5877-41BF-A1AB-D0D590F79234';\nexport const NIELSEN_APPID_TVE = 'P31187EE2-AC6E-46CB-BB54-D07591BED067';\n\n\n\n// WEBPACK FOOTER //\n// ./app/constants.js","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length <= 1 || arguments[1] === undefined ? defaultEqualityCheck : arguments[1];\n\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastArgs === null || lastArgs.length !== args.length || !args.every(function (value, index) {\n return equalityCheck(value, lastArgs[index]);\n })) {\n lastResult = func.apply(undefined, args);\n }\n lastArgs = args;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len2 = arguments.length, memoizeOptions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n memoizeOptions[_key2 - 1] = arguments[_key2];\n }\n\n return function () {\n for (var _len3 = arguments.length, funcs = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n funcs[_key3] = arguments[_key3];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n return resultFunc.apply(undefined, arguments);\n }].concat(memoizeOptions));\n\n var selector = function selector(state, props) {\n for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n var params = dependencies.map(function (dependency) {\n return dependency.apply(undefined, [state, props].concat(args));\n });\n return memoizedResultFunc.apply(undefined, _toConsumableArray(params));\n };\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length <= 1 || arguments[1] === undefined ? createSelector : arguments[1];\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len5 = arguments.length, values = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n values[_key5] = arguments[_key5];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/reselect/lib/index.js\n// module id = 9\n// module chunks = 1","import { createSelector } from 'reselect';\nimport { MVPD_PREVIOUS_KEY } from 'constants';\nimport { AuthTypes, AuthStates, Flags } from 'enums';\nimport { get } from 'lib/util/localStorage';\nimport canUseDOM from 'lib/util/canUseDOM';\nimport bootstrapSelector from './bootstrapSelector';\nimport { roadblockSelector, bypassTokenSelector } from './appSelector';\nimport routingSelector from './routingSelector';\n\n// TODO: move this to `lib` once it's used in other places\nexport function convertToSecureImage(provider) {\n if (!provider || !provider.images) {\n return provider;\n }\n return Object.keys(provider.images).reduce((acc, key) => {\n const image = provider.images[key];\n if (image && image.href) {\n acc.images[key] = { href: image.href.replace('http://a.espncdn.com', 'https://secure.espncdn.com') };\n }\n return acc;\n }, provider);\n}\n\nexport const authenticationEnabledSelector = createSelector(\n roadblockSelector,\n (roadblock) => !roadblock\n);\n\n// generic auth selectors\nexport const authenticationSelector = ({ authentication = {} }) => authentication;\n\nexport const userAuthSelector = createSelector(\n authenticationSelector,\n bypassTokenSelector,\n ({ authTypes = [] }, bypassToken) => {\n if (bypassToken) {\n return [AuthTypes.ISP, AuthTypes.MVPD];\n }\n\n return authTypes;\n }\n);\n\n// adobe pass selectors\nexport const adobePassSelector = createSelector(\n authenticationSelector,\n ({ adobePass = {} }) => adobePass\n);\n\nexport const adobePassInfoSelector = createSelector(\n adobePassSelector,\n ({ info = null }) => convertToSecureImage(info)\n);\n\nexport const adobePassMetadataSelector = createSelector(\n adobePassSelector,\n ({ metadata = {} }) => metadata\n);\n\nexport const adobePassInitializedSelector = createSelector(\n adobePassSelector,\n ({ initialization: { completeTime } = {} }) => !!completeTime\n);\n\nexport const adobePassAuthenticatedSelector = createSelector(\n adobePassSelector,\n ({ isAuthenticated }) => !!isAuthenticated\n);\n\nexport const adobePassIsAuthorizedSelector = createSelector(\n adobePassSelector,\n ({ isAuthorized }) => !!isAuthorized\n);\n\nexport const checkAuthenticationCompleteSelector = createSelector(\n adobePassSelector,\n ({ checkAuthentication: { completeTime } = {} }) => !!completeTime\n);\n\n// ip selectors\nexport const ipSelector = createSelector(\n authenticationSelector,\n ({ ip = {} }) => ip\n);\n\nexport const ipInfoSelector = createSelector(\n ipSelector,\n ({ info = null }) => convertToSecureImage(info)\n);\n\nexport const userLocationSelector = createSelector(\n ipSelector,\n ({ location = {} }) => location\n);\n\n// bam selectors\nexport const bamSelector = createSelector(\n authenticationSelector,\n ({ bam = {} }) => bam\n);\n\nexport const subscriptionsSelector = createSelector(\n bamSelector,\n ({ subscriptions }) => subscriptions\n);\n\nexport const superBundleSelector = createSelector(\n subscriptionsSelector,\n (subscriptions) => {\n if (subscriptions && subscriptions.length) {\n return subscriptions.filter(sub => sub.isActive)\n .some(sub => {\n // first test for the existance of the\n // bundle property and use it's value\n if ('bundle' in sub) {\n return sub.bundle;\n }\n\n // fall-back check for categoryCode of superbundle in products\n return sub.products.some(({ categoryCodes }) => categoryCodes &&\n Array.isArray(categoryCodes) &&\n categoryCodes.map(item => item.toLowerCase()).includes('superbundle'));\n });\n }\n return false;\n }\n);\n\nexport const bamSessionTokenSelector = createSelector(\n bamSelector,\n ({ session: { token = null } = {} }) => token\n);\n\nexport const bamSubReadySelector = createSelector(\n authenticationSelector,\n ({ bamSubReady = false }) => bamSubReady\n);\n\nexport const geoLocationSelector = createSelector(\n bamSelector,\n ({ geo = {} }) => geo\n);\n\nexport const userTrackingSelector = createSelector(\n bamSelector,\n ({ userTracking = {} }) => userTracking\n);\n\nexport const preauthorizedResourcesSelector = createSelector(\n adobePassSelector,\n ({ preauthorizedResources }) => preauthorizedResources\n);\n\nexport const entitlementTokenSelector = () => {\n let entitlementToken;\n if (canUseDOM) {\n try {\n entitlementToken = window.localStorage.getItem('entitlementToken');\n if (entitlementToken) {\n entitlementToken = JSON.parse(entitlementToken);\n } else {\n entitlementToken = undefined;\n }\n } catch (err) {\n console.error(err);\n }\n }\n return entitlementToken;\n};\n\nexport const zipcodeSelector = createSelector(\n geoLocationSelector,\n userLocationSelector,\n ({ zipCode }, { zipcode }) => zipCode || zipcode\n);\n\nexport const authStatesSelector = createSelector(\n userAuthSelector,\n entitlementTokenSelector,\n (userAuth, entitlementToken = {}) => {\n let authStates;\n const prevMVPDState = get(MVPD_PREVIOUS_KEY);\n const currMVPDState = entitlementToken.mvpd;\n const ispState = userAuth.filter(auth => (auth === AuthTypes.ISP))[0];\n if (prevMVPDState) {\n authStates = [AuthStates.MVPD_PREVIOUS];\n }\n if (currMVPDState) {\n if (!authStates) {\n authStates = [];\n }\n authStates.push(AuthStates.MVPD);\n }\n if (ispState) {\n if (!authStates) {\n authStates = [];\n }\n authStates.push(AuthStates.ISP);\n }\n return authStates;\n }\n);\n\nexport const passOneIdTokenSelector = createSelector(\n bootstrapSelector,\n routingSelector,\n ({ bam: { passToken: passTokenArg = true } = {} }, { locationBeforeTransitions }) => {\n let passToken = passTokenArg;\n const { query = {} } = locationBeforeTransitions || {};\n if (query[Flags.PASS_ONEID_TOKEN]) {\n passToken = query[Flags.PASS_ONEID_TOKEN] === 'true';\n }\n return passToken;\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/authenticationSelectors.js","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2017 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.0\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nAsync.prototype._drainQueue = function(queue) {\n while (queue.length() > 0) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n continue;\n }\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n};\n\nAsync.prototype._drainQueues = function () {\n this._drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n this._drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n async.invokeLater(this._notifyUnhandledRejection, this, undefined);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new CustomEvent(name.toLowerCase(), {\n detail: event,\n cancelable: true\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.0\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var l = 8;\n while (l--) new FakeConstructor();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\";\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bluebird/js/browser/bluebird.js\n// module id = 11\n// module chunks = 1","export default function isEmpty(obj = {}) {\n if (!obj) {\n return true;\n }\n return (Object.keys(obj).length === 0);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/isEmpty.js","import { createSelector } from 'reselect';\nimport _intersection from 'lodash/intersection';\nimport { securePromoImageUrl } from 'constants';\nimport { Api, ContentType, Entitlements } from 'enums';\nimport { convertObjectToQueryString } from 'lib/format';\nimport bootstrapSelector from './bootstrapSelector';\nimport appSelector, { isDomesticSelector, editionSelector, intlSelector as _secondaryIntlSelector } from './appSelector';\nimport { oneIdLoggedInSelector } from 'common/selectors/oneIdSelector';\nimport routingSelector from './routingSelector';\nimport { userAuthSelector, bamSubReadySelector } from 'common/selectors/authenticationSelectors';\n\nconst { Page: { EVENT_QUERY_KEYS } } = Api;\nconst pageSelector = ({ page = {} }) => page;\nconst intlSelector = (_, { messages, intl }) => ({ messages, intl });\n\nexport default createSelector(pageSelector, (page) => page);\n\nfunction meta(id, name, messages, formatMessage, contentType = ContentType.VOD, edition) {\n const opts = { name };\n const pageId = messages[`meta.title.${id}`] ? id : 'home';\n const typeQualifier = (id === 'player') ? `.${contentType}` : '';\n let title = formatMessage(messages[`meta.title.${pageId}`], opts);\n let description = formatMessage(messages[`meta.description.${pageId}${typeQualifier}`], opts);\n let keywords = formatMessage(messages['meta.keywords']);\n\n // Carib branding is `ESPN Play`, override the branding set in i18n file\n if (edition === 'caribbean') {\n title = title.replace(/WatchESPN/g, 'ESPN Play');\n description = description.replace(/WatchESPN/g, 'ESPN Play');\n keywords = keywords.replace(/WatchESPN/g, 'ESPN Play');\n }\n\n return {\n title,\n description,\n keywords\n };\n}\n\nexport const metaSelector = createSelector(\n appSelector,\n routingSelector,\n pageSelector,\n editionSelector,\n intlSelector,\n _secondaryIntlSelector,\n (\n { location = {} },\n { locationBeforeTransitions = {} },\n { id = 'home', name: pageName, hero },\n { edition },\n { messages, intl: { formatMessage } = {} } = {},\n { lang }\n ) => {\n const { host, protocol, path, baseUrl, query: origQuery } = location;\n const { basename = baseUrl, pathname = path, query = origQuery } = locationBeforeTransitions || {};\n\n // declare properties that can change depending on the path or if an event query is passed\n let canonicalUrl = `${protocol}://${host}${basename}${pathname}`;\n const sanatizedCanonicalUrl = (canonicalUrl.slice(-1) === '/') ? canonicalUrl.slice(0, -1) : canonicalUrl;\n const langQueryParam = (lang && lang !== '') ? `lang=${lang}` : '';\n let name = pageName;\n let contentType;\n let socialUrl = sanatizedCanonicalUrl;\n let socialDescription;\n let socialTitle;\n let socialImageUrl = securePromoImageUrl;\n let noIndex = false;\n let canonicalQuery = '';\n // Only use the content's meta information if linked specifically to an event\n const queryKeys = Object.keys(query);\n const matchedEventQueryKeys = _intersection(queryKeys, EVENT_QUERY_KEYS);\n\n if (matchedEventQueryKeys.length > 0 && hero) {\n const { description, imageHref, name: heroName, status, type } = hero;\n contentType = type;\n\n // only use event query in the meta urls\n const matchedEventQueryValue = convertObjectToQueryString(query, matchedEventQueryKeys);\n canonicalQuery = (matchedEventQueryValue && matchedEventQueryValue !== '') && `?${matchedEventQueryValue}`;\n\n // Handle adding the lang query param properly when other params are in place\n if (canonicalQuery !== '' && langQueryParam !== '') {\n canonicalQuery = `${canonicalQuery}&${langQueryParam}`;\n } else if (canonicalQuery === '' && langQueryParam !== '') {\n canonicalQuery = `?${langQueryParam}`;\n }\n\n // social meta tags should always reflect the content specified in the url\n socialTitle = heroName;\n socialImageUrl = imageHref;\n socialDescription = description;\n socialUrl = `${sanatizedCanonicalUrl}${canonicalQuery}`;\n\n // canonical url for the player page should include the event query\n if (pathname === '/player') {\n name = heroName;\n canonicalUrl = `${sanatizedCanonicalUrl}${canonicalQuery}`;\n }\n\n // TODO: serve `robots.txt` from Varnish for `www.espnsb.com`\n if (status === 'over' || host.indexOf('espnsb.com') > -1) {\n noIndex = true;\n }\n }\n\n const metaProps = meta(id, name, messages, formatMessage, contentType, edition);\n\n return {\n ...metaProps,\n canonicalUrl,\n socialImageUrl,\n socialDescription: socialDescription || metaProps.description,\n socialTitle: socialTitle || metaProps.title,\n socialUrl,\n noIndex\n };\n }\n);\n\nexport const pageEditionSelector = createSelector(\n pageSelector,\n ({ edition = {} }) => edition\n);\n\nexport const brandingSelector = createSelector(\n bootstrapSelector,\n pageSelector,\n editionSelector,\n pageEditionSelector,\n ({ branding: { editions = {} } = {} }, { id }, { edition }, { branding = {} }) => {\n if (editions[edition]) { // override from bootstrap\n const { name, logoUrl, lightLogoUrl } = editions[edition];\n branding.name = name;\n branding.logoUrl = logoUrl;\n branding.lightLogoUrl = lightLogoUrl;\n }\n\n // black background pages\n if (id === 'player' || id === 'syndicated-player') {\n branding.logoUrl = branding.lightLogoUrl;\n }\n\n return branding;\n }\n);\n\nexport const isFinalSelector = createSelector(\n appSelector,\n isDomesticSelector,\n ({ packageId }, isDomestic) => (\n isDomestic ||\n typeof packageId !== 'undefined'\n )\n);\n\nexport const competitorSelector = createSelector(\n pageSelector,\n (page) => (page.competitors)\n);\n\n// Caution: do not use this alone, combine with page name check\nexport const showPromoSelector = createSelector(\n isDomesticSelector,\n oneIdLoggedInSelector,\n userAuthSelector,\n bamSubReadySelector,\n (isDomestic, isLoggedIn, entitlements, bamSubReady) => {\n if (!process.browser) {\n return false;\n }\n return (\n isDomestic &&\n (!isLoggedIn || (isLoggedIn && bamSubReady && entitlements &&\n (entitlements.indexOf(Entitlements.ESPN_PLUS) === -1 &&\n entitlements.indexOf(Entitlements.ESPN_TDA) === -1)\n ))\n );\n }\n);\n\n// FIXME: couldn't define this in `appSelector` because of the `reselect` issue\n// https://github.com/reactjs/reselect/issues/169\nexport const appReadySelector = createSelector(\n appSelector,\n // pageSelector,\n // ({ rendered }, { id, scored }) => (rendered && (id === 'schedule' || scored))\n ({ rendered }) => rendered\n);\n\nexport const pagePathWithPageId = createSelector(\n pageSelector,\n appSelector,\n (\n { id = 'index' },\n { location: { baseUrl = '/watch' } = {} }\n ) => {\n const pageId = (id === 'home') ? 'index' : id;\n\n return `${baseUrl}/${pageId}`;\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/pageSelector.js","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 14\n// module chunks = 1","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 15\n// module chunks = 1","const path = require('path');\nconst envConfig = require('./env.config');\n\nconst config = Object.assign({},\n {\n dirs: {\n root: path.resolve(__dirname + '/../'),\n app: '/app'\n }\n },\n envConfig\n);\n\n// keep both for now\nmodule.exports = exports['default'] = config;\n\n\n\n// WEBPACK FOOTER //\n// ./config/index.js","import Promise from 'bluebird';\nimport _intersection from 'lodash/intersection';\nimport { GEO_LOCATION_KEY, SUB_KEY, SESSION_TOKEN_KEY, USER_TRACKING_KEY, clientRenderRoutes } from 'constants';\nimport { Api, SourceType, ContentType, ContentStatus, URLPath, BucketLayout, Flags } from 'enums';\nimport { getEventByQuery } from 'common/actions/listingsActions';\nimport {\n createSDKWrapper,\n analyticsReady,\n streamSelect\n} from 'common/actions/appActions';\nimport { initAdsConfig } from 'common/ads/actions';\nimport {\n checkSWIDAuthentication,\n checkOneIDAuthentication,\n completeOneIDAuthentication\n} from 'common/actions/oneIdActions';\nimport {\n SearchAPI\n} from 'lib/api';\nimport * as perf from 'lib/util/perf';\nimport { get, remove } from 'lib/util/localStorage';\nimport bootstrapSelector from 'common/selectors/bootstrapSelector';\nimport appSelector, { isIntlSelector, apiEnvSelector } from 'common/selectors/appSelector';\nimport oneIdSelector, { oneIdEntitlementsSelector } from 'common/selectors/oneIdSelector';\nimport routingSelector from 'common/selectors/routingSelector';\nimport { scoreAll } from 'common/actions/scoringActions';\nimport {\n graphql,\n getPage,\n getEvent,\n getVideo,\n getBucketPage,\n getPageWithPathId,\n getPageByFullUrl,\n addContentToStream,\n fetchPickerStreams\n} from 'common/actions/apiAction';\nimport {\n createSmartAdobePassInitializeAction,\n createSmartIpAuthenticationAction,\n createGetBAMAuthenticationInfoAction,\n createGetGeoLocationAction,\n createGetBAMSessionTokenAction,\n createGetUserTrackingAction\n} from 'common/actions/authenticationActions';\nimport { fetchScheduleModule } from 'common/scheduleModule/actions';\nimport { createSmartFanAction } from 'common/actions/fanActions';\nimport pageSelector, { isFinalSelector, showPromoSelector } from 'common/selectors/pageSelector';\nimport { hasTDA } from 'lib/auth';\nimport {\n superBundleSelector,\n bamSubReadySelector\n} from 'common/selectors/authenticationSelectors';\n\nconst { Page: { EVENT_QUERY_KEYS, PCC_NETWORK_NAMES } } = Api;\n\nexport const CLEAR_PAGE = 'CLEAR_PAGE';\nexport const REQUEST_PAGE = 'REQUEST_PAGE';\nexport const RECEIVE_PAGE = 'RECEIVE_PAGE';\nexport const INVALIDATE_PAGE = 'INVALIDATE_PAGE';\nexport const LAUNCH_PLAYER = 'LAUNCH_PLAYER';\nexport const PAGE_INFO_SET = 'PAGE_INFO_SET';\nexport const COMPLETE_PAGE_LOAD = 'COMPLETE_PAGE_LOAD';\nexport const REFRESH_BUCKETS = 'REFRESH_BUCKETS';\nexport const REPLACE_BUCKETS = 'REPLACE_BUCKETS';\nexport const REPLACE_HERO = 'REPLACE_HERO';\nexport const SET_STATE = 'SET_STATE';\nexport const START_GET_COMPETITORS = 'START_GET_COMPETITORS';\nexport const COMPLETE_GET_COMPETITORS = 'COMPLETE_GET_COMPETITORS';\n\nexport function clearPage() {\n return {\n type: CLEAR_PAGE\n };\n}\n\nexport function createRequestPageAction(id) {\n return {\n type: REQUEST_PAGE,\n id,\n requestedTime: Date.now()\n };\n}\n\nexport function createReceivePageAction({\n id,\n name,\n description,\n header,\n image,\n icon,\n edition,\n buckets,\n tracking,\n heroContent,\n carouselBucket,\n lang,\n error,\n isFinal,\n noHero\n}) {\n return {\n type: RECEIVE_PAGE,\n id,\n name,\n description,\n header,\n image,\n icon,\n edition,\n buckets,\n tracking,\n heroContent,\n carouselBucket,\n lang,\n error,\n isFinal,\n noHero,\n receivedTime: Date.now()\n };\n}\n\nexport function startGetCompetitors() {\n return {\n type: START_GET_COMPETITORS,\n startTime: Date.now()\n };\n}\n\nexport function completeGetCompetitors(competitors) {\n return {\n type: COMPLETE_GET_COMPETITORS,\n completeTime: Date.now(),\n competitors\n };\n}\n\n\nexport function fetchAllCompetitors() {\n return (dispatch, getState) => {\n const state = getState();\n const apiEnv = apiEnvSelector(state);\n dispatch(startGetCompetitors());\n return SearchAPI.getAllCompetitors(apiEnv).then((competitors) => {\n dispatch(completeGetCompetitors(competitors));\n return competitors;\n });\n };\n}\n\nexport function refreshBuckets(pageName, { params = {}, forceRefresh = false } = {}) {\n return async (dispatch, getState) => {\n const state = getState();\n const { id: currentPageId } = pageSelector(getState());\n let refreshedBuckets;\n\n try {\n // NOTE: Handles routes such as `product/ESPN_PLUS_MLB` that contain an `ID` in the path\n if (params.id) {\n const { id, seasonId } = params;\n let pathParams = id;\n if (seasonId) {\n pathParams += `/seasons/${seasonId}`;\n }\n\n /**\n * pageName override calling collection and show page in the pageApi returns 404\n */\n let newPageName = pageName;\n if (pageName === 'collection') {\n newPageName = 'bucket';\n } else if (pageName === 'show') {\n newPageName = 'series';\n }\n const { page: { buckets } = {} } = await dispatch(getPageWithPathId({\n name: newPageName,\n pathParams\n }));\n refreshedBuckets = buckets;\n } else {\n const data = await dispatch(getPage({ name: pageName }));\n if (data && data.page) {\n const { buckets = {} } = data.page;\n refreshedBuckets = buckets;\n }\n }\n\n const { id: pageId } = pageSelector(state);\n if (pageId !== currentPageId) {\n return;\n }\n\n // Replace all the buckets\n if (forceRefresh) {\n dispatch({\n type: REPLACE_BUCKETS,\n buckets: refreshedBuckets\n });\n }\n\n dispatch({\n type: REFRESH_BUCKETS,\n buckets: refreshedBuckets\n });\n } catch (error) {\n console.error(`refreshBuckets() Error: Unable to refresh buckets for page: ${pageName}`, error);\n throw error;\n }\n };\n}\n\nexport function completePageLoad(buckets) {\n return {\n type: COMPLETE_PAGE_LOAD,\n startTime: Date.now(),\n buckets\n };\n}\n\n// Checks if the contents of bucketPage all exist in one of the buckets and the bucket names match.\n// We then consider them equal.\nexport function indexOfBucketInBucketList(buckets = [], bucket) {\n const contentIds = bucket.contents.map((content) => content.id);\n\n if (!buckets.length > 0) {\n return -1;\n }\n\n let foundIndex = -1;\n for (let index = 0; index < buckets.length; index += 1) {\n const bucketItem = buckets[index];\n const bucketItemContentIds = bucketItem.contents.map((content) => content.id);\n const isEqual = (bucketItem.name === bucket.name) && contentIds.every((id) => bucketItemContentIds.indexOf(id) !== -1);\n if (isEqual) {\n foundIndex = index;\n break;\n }\n }\n\n return foundIndex;\n}\n\nexport function fetchPageData(pageName, params, query) {\n return (dispatch) => {\n if (pageName === 'collection') {\n const { bucketId } = query;\n return dispatch(getBucketPage({\n bucketId: params.id || bucketId,\n groupId: params.groupId,\n ignores: 'displayLimit'\n }));\n } else if (['film', 'product', 'show', 'program', 'compilation'].indexOf(pageName) !== -1) {\n const { id, seasonId } = params;\n const name = URLPath[pageName];\n let pathParams = id;\n if (seasonId) {\n pathParams += `/seasons/${seasonId}`;\n }\n return dispatch(getPageWithPathId({\n name,\n pathParams\n }));\n } else if (pageName && params.id !== '') {\n // NOTE: Handles `/catalog/:guid` without strict matching\n // TODO: This will eventually replace some pageName conditions in the `else if` above\n // since we will be deprecating `show`, `film` pages and use `catalog`\n return dispatch(getPageWithPathId({\n name: pageName,\n pathParams: params.id\n }));\n }\n\n return dispatch(getPage({ name: pageName }));\n };\n}\n\nexport function fetchEventData(query) {\n return (dispatch) => {\n const { channel, network: networkQuery } = query;\n const network = networkQuery || channel;\n\n if (network) {\n query.network = network;\n }\n\n const hasInvalidNetwork = network && PCC_NETWORK_NAMES.indexOf(network) === -1;\n if (_intersection(Object.keys(query), EVENT_QUERY_KEYS).length > 0 && !hasInvalidNetwork) {\n return dispatch(getEvent({ query }));\n }\n\n return Promise.resolve();\n };\n}\n\nexport function fetchVideoData({ id }) {\n return (dispatch) => dispatch(getVideo({ pathParams: id }));\n}\n\nexport function fetchEventOrVideoByQuery(query) {\n return async (dispatch) => {\n let data;\n try {\n data = await dispatch(fetchEventData(query));\n } catch (err) {\n console.error(err);\n }\n\n if (!data) { // no valid query param found\n return data;\n }\n\n if (!data.page.contents && query.id) { // most likely it's a clip\n try {\n data = await dispatch(fetchVideoData(query));\n } catch (err) {\n console.error(err);\n }\n }\n\n return data;\n };\n}\n\nexport function fetchBuckets(query, fullUrl) {\n return (dispatch) => {\n const { bucketId } = query;\n\n if (fullUrl) {\n return dispatch(getPageByFullUrl({ url: fullUrl }));\n } else if (bucketId) {\n return dispatch(getBucketPage({\n bucketId\n }));\n }\n\n return Promise.resolve();\n };\n}\n\nexport async function handlePickerStreams(dispatch, pickerApiUrl, eventId) {\n /**\n * if pickerApiUrl returns from above event pageApi, fetch picker pageApi\n * and update picker redux state\n */\n let pickerStream;\n if (pickerApiUrl) {\n pickerStream = await dispatch(fetchPickerStreams(pickerApiUrl, eventId));\n }\n return pickerStream;\n}\n\nexport function createFetchPageAction(id, params, query, lang, fullUrl) {\n perf.markStart('createFetchPageAction');\n return async (dispatch, getState) => {\n const pageName = id;\n const state = getState();\n const isIntl = isIntlSelector(state);\n const isFinal = isFinalSelector(state);\n const { id: currentId } = pageSelector(state);\n\n let noHero = showPromoSelector(state) && id === 'espnplus';\n\n const shouldRefreshAds = id !== currentId;\n dispatch(createRequestPageAction(id));\n\n let pageData = dispatch(fetchPageData(id, params, query));\n let heroData = dispatch(fetchEventOrVideoByQuery(query));\n\n let bucketsData = pageName === 'player' ? dispatch(fetchBuckets(query, fullUrl)) : Promise.resolve();\n try {\n [pageData, heroData, bucketsData] = [await pageData, await heroData, await bucketsData];\n } catch (err) {\n console.error(err);\n }\n // even if deep linked with single `id`, if the feed is part of an event, the player should show feeds picker,\n // so check if it's part of an event, and fetch all streams with `eventId` if so.\n let eventStreams = null;\n let isHandlePickerCalled = false;\n if (\n !isIntl &&\n query.id && !query.eventId && !query.gameId &&\n heroData && heroData.page && heroData.page.contents && heroData.page.contents.type === ContentType.LISTING) {\n const { id: contentId, isEvent, eventId, status } = heroData.page.contents;\n if (isEvent || eventId) {\n /**\n * following try catch block code will be called after calling event pageApi with an airingId,\n * ex: watch/?id=9de24e02-1e11-43aa-9590-e12cf35a492a which will trigger event pageApi with an airingId.\n * When the response returns eventId, event pageApi will call again with eventId to fetch event data\n */\n let pickerApiUrl;\n try {\n const eventHeroData = await dispatch(fetchEventData({\n eventId: eventId || contentId,\n status: status.toUpperCase()\n }));\n const contents = eventHeroData && eventHeroData.page && eventHeroData.page.contents;\n if (contents && contents.streams && contents.streams.length > 0) {\n const { links = {} } = contents;\n pickerApiUrl = links.picker;\n eventStreams = contents.streams;\n }\n } catch (err) {\n console.error(err);\n }\n\n // it is an event, we need to handle picker streams logic\n isHandlePickerCalled = await handlePickerStreams(dispatch, pickerApiUrl, eventId);\n }\n }\n\n // getPage should never be rejected, it resolves with an error page skeleton, so no need for isFulfilled().\n const {\n page: {\n name,\n description,\n header,\n image,\n icon,\n edition = {},\n buckets: originalBuckets = [],\n tracking,\n error\n } = {}\n } = pageData || {};\n\n // bluebird seems to return a reference to originally cached pageapi request to player\n // here's a trick to operate on a new reference\n const buckets = originalBuckets.concat([]);\n\n if (bucketsData && bucketsData.page.buckets) {\n const newBucket = bucketsData.page.buckets[0];\n const newBucketIndex = indexOfBucketInBucketList(buckets, newBucket);\n const isBucketInBucketList = newBucketIndex !== -1;\n\n if (isBucketInBucketList && newBucketIndex !== 0) {\n buckets[newBucketIndex].__replaced = true;\n } else if (!isBucketInBucketList) {\n const index = buckets.map(\n (bucket) => (bucket.tags && bucket.tags.indexOf('replaceable') !== -1)\n ).indexOf(true);\n if (index !== -1) {\n buckets[index] = newBucket;\n buckets[index].__replaced = true;\n }\n }\n }\n\n let heroContent = null;\n\n if (heroData && heroData.page && heroData.page.contents) {\n heroContent = heroData.page.contents;\n if (eventStreams && eventStreams.length > 0) {\n heroContent.streams = eventStreams;\n }\n // if the hero was determined via id param, mark as concrete as to not change when scored\n heroContent.concrete = true;\n }\n\n // if there is a bucket which type is `BucketLayout.Carousel`,\n // it should be rendered as a carousel component and featured on top (used in `Originals` page)\n let carouselBucket;\n buckets.some(({ layout }, index) => {\n if (layout && layout.toLowerCase() === BucketLayout.Carousel) {\n carouselBucket = buckets.splice(index, 1)[0];\n return true;\n }\n return false;\n });\n\n if (carouselBucket) {\n noHero = true;\n }\n\n // If there is no specified hero content, grab the first content in the first bucket as hero\n if (!heroContent && !noHero) {\n let content;\n if (header) { // film or show\n if (header.bucket && header.bucket.contents && header.bucket.contents[0]) {\n content = header.bucket.contents[0];\n // workaround to remove duplicated live content in the first bucket\n if (buckets && buckets[0] && buckets[0].contents &&\n buckets[0].contents.length === 1 &&\n content.status === ContentStatus.LIVE &&\n buckets[0].contents[0].id === content.id\n ) {\n buckets.shift();\n }\n } else {\n noHero = true;\n }\n } else if (buckets && buckets[0] && buckets[0].contents && buckets[0].contents[0]) {\n content = buckets[0].contents[0];\n }\n if (content && (content.type === ContentType.LISTING || content.type === ContentType.VOD ||\n content.type === ContentType.EVENT || content.type === ContentType.VIDEO)) {\n /**\n * Ticket: https://espnjira.disney.com/browse/WEWEB-2501\n * Fixed missing content props that we need to pass to DSS from hero component\n * */\n if (content.streams.length && !content.streams[0].content) {\n content = addContentToStream(content);\n }\n\n heroContent = content;\n // NOTE: The following logic catches the case when there is no Hero content\n // and we select the first item in the buckets array as a fallback for the Hero content\n // If that first bucket contains an `eventId` or `isEvent` property is truthy,\n // we fetch the picker streams using the first item data\n if (((heroContent.eventId || heroContent.isEvent) && !query.eventCalendarId) && !isHandlePickerCalled) {\n const { links: { picker: pickerUrl } = {} } = heroContent;\n await handlePickerStreams(dispatch, pickerUrl, heroContent.eventId);\n }\n }\n }\n\n dispatch(createReceivePageAction({\n id,\n name,\n description,\n header,\n image,\n icon,\n edition,\n buckets,\n tracking,\n heroContent,\n carouselBucket,\n lang,\n error,\n isFinal,\n noHero\n }));\n\n if (shouldRefreshAds && pageName !== 'player') { // player page sets ads config when a content is selected\n dispatch(initAdsConfig(pageName, tracking, {}, query));\n }\n\n perf.measureAndTime('createFetchPageAction');\n return Promise.resolve();\n };\n}\n\nexport function oneIdAndBam(bamProxyIFrameId, requests) {\n return (dispatch) => (\n dispatch(checkOneIDAuthentication())\n .then(() => dispatch(createSDKWrapper(bamProxyIFrameId, requests)))\n );\n}\n\nexport function createPageShellInitAction(params, bamProxyIFrameId) {\n return async (dispatch, getState) => {\n perf.markStart('createPageShellInitAction');\n const state = getState();\n const isIntl = isIntlSelector(state);\n\n if (isIntl) {\n dispatch(createSmartAdobePassInitializeAction(params));\n dispatch(createSmartIpAuthenticationAction());\n dispatch(completeOneIDAuthentication(false, []));\n } else {\n const { pageApi: { queryParameters = [], requireClientRenderParams = [] } = {} } = bootstrapSelector(state);\n const { lang } = appSelector(state);\n const { locationBeforeTransitions } = routingSelector(state);\n const { id: pageId } = pageSelector(state);\n const { query = {} } = locationBeforeTransitions || {};\n const isLoggedIn = await dispatch(checkSWIDAuthentication());\n const { swid } = oneIdSelector(getState());\n const geo = get(GEO_LOCATION_KEY);\n const userTracking = get(USER_TRACKING_KEY);\n let sub = get(SUB_KEY);\n let sessionToken = get(SESSION_TOKEN_KEY);\n const requireClientRender = _intersection(queryParameters, requireClientRenderParams).length > 0;\n const requireGeo = requireClientRender && queryParameters.indexOf('zipcode') > -1 && !geo;\n const requireFan = (\n requireClientRender &&\n (queryParameters.indexOf('favoriteTeam') > -1 || queryParameters.indexOf('favoriteSport') > -1)\n );\n let requireCheckOneId = isLoggedIn;\n\n if (sub) {\n if (!isLoggedIn || !sub.swid || sub.swid !== swid) {\n remove(SUB_KEY);\n sub = null;\n } else {\n dispatch(createGetBAMAuthenticationInfoAction(sub.subscriptions));\n const newState = getState();\n const entitlements = oneIdEntitlementsSelector(newState);\n const hasSuperBundle = superBundleSelector(newState);\n const bamSubReady = bamSubReadySelector(newState);\n const hasTDAEntitlement = hasTDA(sessionToken);\n const isAuthenticated = (entitlements && entitlements.length > 0) || hasTDAEntitlement;\n dispatch(\n completeOneIDAuthentication(isAuthenticated, entitlements, hasTDAEntitlement, hasSuperBundle, bamSubReady)\n );\n requireCheckOneId = false;\n }\n }\n\n if (geo) {\n dispatch(createGetGeoLocationAction(geo));\n }\n\n if (sessionToken) {\n if (!isLoggedIn) {\n remove(SESSION_TOKEN_KEY);\n sessionToken = null;\n } else {\n dispatch(createGetBAMSessionTokenAction(sessionToken));\n }\n }\n\n if (userTracking) {\n dispatch(createGetUserTrackingAction(userTracking));\n }\n\n if (isLoggedIn) {\n dispatch(\n oneIdAndBam(\n bamProxyIFrameId, requireGeo ?\n ['geolocation', 'subscriptions', 'sessionToken', 'userTrackingInformation'] :\n ['subscriptions', 'sessionToken', 'userTrackingInformation']\n )\n );\n } else {\n // if user is not logged, we need to trigger createSDKWrapper call to get user tracking info from DSS sdk\n // ticket: https://jira.disney.com/browse/WEWEB-2597\n dispatch(createSDKWrapper(bamProxyIFrameId, ['userTrackingInformation']));\n dispatch(completeOneIDAuthentication(false, []));\n }\n dispatch(createSmartAdobePassInitializeAction(params));\n // find out what actions are necessary to await to reflect to Page API params\n const requiredActions = [];\n if (requireGeo) { // grabbing zipcode from location data since BAM's geolocation uses IP info as well.\n requiredActions.push(dispatch(createSmartIpAuthenticationAction()));\n } else {\n dispatch(createSmartIpAuthenticationAction());\n }\n\n if (requireCheckOneId) {\n requiredActions.push(dispatch(checkOneIDAuthentication()));\n } else {\n dispatch(checkOneIDAuthentication());\n }\n\n if (requireFan) {\n requiredActions.push(dispatch(createSmartFanAction()));\n } // we don't need it now\n\n if (requiredActions.length) {\n try {\n // make sure each action doesn't throw, otherwise it exits as soon as it throws\n await Promise.all(requiredActions);\n } catch (err) {\n console.error('createPageShellInitAction', err);\n }\n }\n\n const { id: currentPageId } = pageSelector(getState());\n if (requireClientRender || (query[Flags.NO_SSR] === 'true' && clientRenderRoutes.indexOf(pageId) > -1)) {\n // it's possible the pageShell actions above takes long and user might navigates\n // to other pages before the above actions complete, check the current page id\n // not to override the current page with the previous page content\n if (pageId && pageId === currentPageId && pageId !== 'schedule' && pageId !== 'search' && pageId !== 'sid') {\n const actions = [dispatch(createFetchPageAction(pageId, params, query, lang))];\n if (pageId !== 'player') {\n actions.push(dispatch(fetchScheduleModule(lang)));\n }\n try {\n await Promise.all(actions);\n } catch (err) {\n console.error('createPageShellInitAction', err);\n }\n perf.measureAndTime('createPageShellInitAction');\n }\n }\n }\n\n dispatch(scoreAll());\n };\n}\n\nexport function createLaunchPlayerAction(content) {\n const id = content.id;\n const tileType = content.type || '';\n const source = content.sourceType === SourceType.LINEAR ? content.source : null;\n\n return {\n type: LAUNCH_PLAYER,\n id,\n source,\n tileType,\n launchedAt: Date.now()\n };\n}\n\nexport function setPageInfo(id, name, autoPageViewTrack = true) {\n return (dispatch) => {\n dispatch({\n type: PAGE_INFO_SET,\n id,\n name,\n isFinal: true,\n autoPageViewTrack\n });\n };\n}\n\nexport function replaceHero(content) {\n return {\n type: REPLACE_HERO,\n content\n };\n}\n\nexport function setPageState(isFinal) {\n return {\n type: SET_STATE,\n isFinal\n };\n}\n\nexport function getAiring({ id }) {\n return async (dispatch) => {\n try {\n const { data = {} } = await dispatch(graphql('getAiring', { id }));\n const { airing } = data;\n return airing;\n } catch (err) {\n return {};\n }\n };\n}\n\nexport function getAirings({ eventId }) {\n return async (dispatch) => {\n try {\n const { data = {} } = await dispatch(graphql('getAirings', { eventId, limit: 500 }));\n const { airings } = data;\n return airings;\n } catch (err) {\n return [];\n }\n };\n}\n\nexport function singleEventPage(id, name, query) {\n return async (dispatch) => {\n dispatch(createRequestPageAction(id));\n dispatch(analyticsReady({}));\n\n const eventId = query.eventId || query.gameId;\n const { partner, dates, thumbnail } = query;\n let content;\n if (!query.id && partner) {\n content = await dispatch(getEventByQuery({ partner, dates }));\n }\n\n let newQuery;\n delete query.thumbnail;\n if (content) {\n delete query.eventId;\n delete query.gameId;\n delete query.league;\n delete query.partner;\n delete query.dates;\n newQuery = { ...query, id: content.id };\n } else if (eventId) {\n newQuery = { eventId };\n } else if (query.id || query.channel || query.network) {\n newQuery = query;\n } else if (!partner) {\n newQuery = {\n ...query,\n network: 'espn'\n };\n }\n\n let payload;\n if (newQuery) {\n payload = await dispatch(fetchEventOrVideoByQuery(newQuery));\n }\n const { page: { edition, contents: heroContent } = {} } = payload || {};\n if (heroContent) {\n if (thumbnail) {\n heroContent.imageHref = thumbnail;\n }\n const { streams = [] } = heroContent;\n if (streams.length) {\n await dispatch(streamSelect(streams[0]));\n }\n }\n dispatch(createReceivePageAction({\n id,\n name,\n edition,\n heroContent,\n isFinal: true\n }));\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/actions/index.js","export default function queryString(params, encode = false, append = false) {\n let queryString = '';\n let first = !append;\n for (var key in params) {\n if (params.hasOwnProperty((key)) && params[key]) {\n queryString += first ? '?' : '&';\n queryString += `${key}=${encode ? encodeURIComponent(params[key]) : params[key]}`;\n first = false;\n }\n }\n return queryString;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/queryString.js","/* Only gets fired on the client */\nimport { replace } from 'react-router-redux';\nimport Promise from 'bluebird';\nimport { AdobePass, Api, Device, ContentType, Flags, ModalType } from 'enums';\nimport { GEO_LOCATION_KEY, SUB_KEY, SESSION_TOKEN_KEY, USER_TRACKING_KEY, BAM_PROXY_IFRAME_ID } from 'constants';\nimport { replaceHero } from 'common/page/actions';\nimport { initAdsConfig } from 'common/ads/actions';\nimport { loadBootstrap } from 'common/actions/apiAction';\nimport { completeOneIDAuthentication } from 'common/actions/oneIdActions';\nimport bootstrapSelector from 'common/selectors/bootstrapSelector';\nimport appSelector, { contentIdInPlayerUrl } from 'common/selectors/appSelector';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport pageSelector from 'common/selectors/pageSelector';\nimport routingSelector from 'common/selectors/routingSelector';\nimport oneIdSelector, {\n oneIdTokenSelector,\n oneIdLoggedInSelector,\n oneIdEntitlementsSelector\n} from 'common/selectors/oneIdSelector';\nimport {\n passOneIdTokenSelector,\n bamSessionTokenSelector,\n superBundleSelector\n} from 'common/selectors/authenticationSelectors';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport selectedStreamSelector from 'common/selectors/selectedStreamSelector';\nimport {\n createAdobePassErrorAction,\n createStartCheckBAMAuthenticationAction,\n createCompleteCheckBAMAuthenticationAction,\n createGetBAMAuthenticationInfoAction,\n createGetGeoLocationAction,\n createGetBAMSessionTokenAction,\n createGetUserTrackingAction\n} from 'common/actions/authenticationActions';\nimport { getContentPlaylistFromBuckets } from 'webapp/player/util';\nimport WatchESPNWebPlayer from 'webapp/common/video-player';\nimport { isEmpty, getBamAuthConfig } from 'lib/util';\nimport { get, set } from 'lib/util/localStorage';\nimport * as perf from 'lib/util/perf';\nimport { getPlaybackMeta } from 'lib/api/PageAPI';\nimport { hasTDA } from 'lib/auth';\n\nexport const APP_RENDERED = 'APP_RENDERED';\nexport const ANALYTICS_READY = 'ANALYTICS_READY';\nexport const CLOSE_MODAL_MESSAGE = 'CLOSE_MODAL_MESSAGE';\nexport const CONTENT_SELECT = 'CONTENT_SELECT';\nexport const CONTENT_UNSELECT = 'CONTENT_UNSELECT';\nexport const STREAM_SELECTING = 'STREAM_SELECTING';\nexport const STREAM_SELECT = 'STREAM_SELECT';\nexport const STREAM_UNSELECT = 'STREAM_UNSELECT';\nexport const DISPLAY_MODAL_MESSAGE = 'DISPLAY_MODAL_MESSAGE';\nexport const MEDIA_QUERY = 'MEDIA_QUERY';\nexport const INIT_APP_DATA = 'INIT_APP_DATA';\nexport const FETCH_EXTERNAL_CONFIG = 'FETCH_EXTERNAL_CONFIG';\nexport const FETCH_EMBEDDED_OPTIONS = 'FETCH_EMBEDDED_OPTIONS';\nexport const PACKAGE_ID = 'PACKAGE_ID';\nexport const PACKAGE_TIER = 'PACKAGE_TIER';\nexport const PICKER_STREAMS_SELECT = 'PICKER_STREAMS_SELECT';\nexport const PICKER_STREAMS_UNSELECT = 'PICKER_STREAMS_UNSELECT';\nexport const PICKER_STREAMS_SELECT_ERROR = 'PICKER_STREAMS_SELECT_ERROR';\nexport const OPEN_PICKER_SUCCESS = 'OPEN_PICKER_SUCCESS';\nexport const OPEN_PICKER_ERROR = 'OPEN_PICKER_ERROR';\nexport const PICKER_AUTO_SELECT = 'PICKER_AUTO_SELECT';\nexport const PICKER_STATE_CLEAR = 'PICKER_STATE_CLEAR';\n\n\nconst { Env: AdobePassEnv } = AdobePass;\nconst { Env: ApiEnv } = Api;\n\nexport function displayModalMessage(messageType, messageData) {\n return {\n type: DISPLAY_MODAL_MESSAGE,\n messageType,\n messageData\n };\n}\n\nexport function closeModalMessage() {\n return {\n type: CLOSE_MODAL_MESSAGE\n };\n}\n\nexport function updateRoute(query) {\n return (dispatch, getState) => {\n const state = getState();\n const flags = persistentFlagsSelector(state);\n const { locationBeforeTransitions } = routingSelector(state);\n dispatch(replace({ ...locationBeforeTransitions, query: { ...flags, ...query } }));\n };\n}\n\nexport function streamSelect(stream) {\n return async (dispatch, getState) => {\n if (isEmpty(stream)) {\n console.error('Empty stream selected');\n return;\n }\n const state = getState();\n const { selectingStream, playbackMeta: playbackMetaArg = {} } = appSelector(state);\n const { id: pageId, buckets = [], tracking } = pageSelector(state);\n const { locationBeforeTransitions } = routingSelector(state);\n const { query = {} } = locationBeforeTransitions || {};\n const content = selectedContentSelector(state);\n const selectedStream = selectedStreamSelector(state);\n const { type, bucketId } = content;\n const reselected = (\n (selectingStream && selectingStream.id === stream.id) ||\n (playbackMetaArg.playbackState && playbackMetaArg.playbackState.id === stream.id)\n );\n\n if (reselected) {\n return;\n }\n\n // NOTE: Assigning the playlist array to the stream without mobile restrictions\n if (type === ContentType.VOD) {\n stream.playlist = getContentPlaylistFromBuckets(content, buckets);\n }\n\n dispatch({\n type: STREAM_SELECTING,\n stream\n });\n\n let playbackMeta;\n if (stream.links && stream.links.play) {\n try {\n playbackMeta = await getPlaybackMeta(stream.links.play);\n const { selectingStream: selectingStreamArg } = appSelector(getState());\n if (!selectingStreamArg) {\n return;\n }\n } catch (err) {\n console.error(err);\n }\n }\n\n const { id } = stream;\n const { tracking: { sport, league, franchise } = {} } = playbackMeta || {};\n const playerUrlId = contentIdInPlayerUrl(state);\n if (playerUrlId && selectedStream.id !== id) {\n if ((query.id && !query.eventId && !query.gameId) || !stream.content.eventId) {\n dispatch(updateRoute({ id, bucketId }));\n }\n }\n\n // reset AdobePass error\n dispatch(createAdobePassErrorAction());\n\n dispatch({\n type: STREAM_SELECT,\n stream,\n playbackMeta,\n clickedTime: Date.now()\n });\n\n // refresh ads with the new ad targeting\n if (pageId === 'player') {\n // TODO: i think we can pass the value as is by encoding the value, but that might involves espn.com change.\n const regex = (/\\s|:|#|,|\\(|\\)|\\[|]/g);\n const sp = sport && sport.replace(regex, '_');\n const lg = league && league.replace(regex, '_');\n const show = franchise && franchise.replace(regex, '_');\n dispatch(initAdsConfig(pageId, tracking, {\n sp,\n lg,\n show\n }, query));\n }\n };\n}\n\nexport function streamUnSelect() {\n return {\n type: STREAM_UNSELECT\n };\n}\n\nexport function contentSelect(contentArg) {\n return async (dispatch, getState) => {\n const state = getState();\n const content = contentArg;\n let stream;\n const { id } = pageSelector(state);\n if (id === 'player') {\n if (content) {\n dispatch(replaceHero(content));\n }\n }\n\n dispatch({\n type: CONTENT_SELECT,\n content,\n clickedTime: Date.now()\n });\n\n if (stream) {\n dispatch(streamSelect(stream));\n }\n };\n}\n\nexport function contentUnSelect(content) {\n return {\n type: CONTENT_UNSELECT,\n content,\n clickedTime: Date.now()\n };\n}\n\nexport function appRendered() {\n return {\n type: APP_RENDERED\n };\n}\n\nexport function analyticsReady(initData = {}) {\n return {\n type: ANALYTICS_READY,\n initData,\n completeTime: Date.now()\n };\n}\n\nexport function fetchExternalConfig() {\n return async (dispatch) => {\n const config = await dispatch(loadBootstrap());\n dispatch({\n type: FETCH_EXTERNAL_CONFIG,\n bootstrap: config\n });\n return config;\n };\n}\n// TODO: DTC - point back to `ApiEnv.PROD`\nexport function initAppData({\n appName,\n adobePassEnv = AdobePassEnv.PROD,\n apiEnv = ApiEnv.PROD,\n configEnv,\n device,\n env,\n location,\n lang,\n country,\n messages,\n enableSearch,\n packageId,\n tier,\n edition,\n webview,\n renderTemplateType,\n newrelicInsertKey,\n newrelicAccountId\n}) {\n const isMobile = (device === Device.HANDSET || device === Device.TABLET);\n\n return {\n type: INIT_APP_DATA,\n appName,\n adobePassEnv,\n apiEnv,\n configEnv,\n device,\n env,\n isMobile,\n location,\n lang,\n sourceLang: lang,\n country,\n messages,\n enableSearch,\n packageId,\n tier,\n edition,\n webview,\n renderTemplateType,\n newrelicInsertKey,\n newrelicAccountId\n };\n}\n\nexport function mediaQuery(mq) {\n return {\n type: MEDIA_QUERY,\n mq\n };\n}\n\nexport function savePackageId(packageId) {\n return {\n type: PACKAGE_ID,\n packageId\n };\n}\n\nexport function savePackageTier(tier) {\n return {\n type: PACKAGE_TIER,\n tier\n };\n}\n\nexport function sendContentReward({\n selector = BAM_PROXY_IFRAME_ID,\n rewardToken,\n contentId,\n userActivityAction = 'CLICK',\n recommendedContentIds = []\n}) {\n return async (dispatch, getState) => {\n const state = getState();\n const { bam } = bootstrapSelector(state);\n const { locationBeforeTransitions } = routingSelector(state);\n const { query } = locationBeforeTransitions || {};\n try {\n const videoPlayer = new WatchESPNWebPlayer({\n bamPlayerOptions: query[Flags.BAM_ENV] ? { ...bam, env: query[Flags.BAM_ENV] } : bam\n });\n\n await videoPlayer.sendContentReward({\n selector: `#${selector}`,\n rewardToken,\n contentId,\n userActivityAction,\n recommendedContentIds\n });\n } catch (error) {\n console.error('sendContentReward ERROR:', error); // eslint-disable-line\n }\n };\n}\n\nexport function createSDKWrapper(containerIdArg, requestsArg, transactionId = 0) {\n return (dispatch, getState) => {\n const perfName = requestsArg ? `createSDKWrapper_${requestsArg.join('')}` : 'createSDKWrapper';\n perf.markStart(perfName);\n const state = getState();\n const { bam } = bootstrapSelector(state);\n const passOneIdToken = passOneIdTokenSelector(state);\n const { locationBeforeTransitions } = routingSelector(state);\n const { query } = locationBeforeTransitions || {};\n const isOneIdLoggedIn = oneIdLoggedInSelector(state);\n const oneIdToken = oneIdTokenSelector(state);\n dispatch(createStartCheckBAMAuthenticationAction());\n return new Promise(async (resolve) => {\n const geolocationKey = 'geolocation';\n const subscriptionsKey = 'subscriptions';\n const sessionTokenKey = 'sessionToken';\n const userTrackingKey = 'userTrackingInformation';\n const result = {};\n const requests = requestsArg || [geolocationKey, subscriptionsKey, sessionTokenKey, userTrackingKey];\n const videoPlayer = new WatchESPNWebPlayer({\n bamPlayerOptions: query[Flags.BAM_ENV] ? { ...bam, env: query[Flags.BAM_ENV] } : bam\n });\n const geo = get(GEO_LOCATION_KEY);\n\n const complete = () => {\n dispatch(createCompleteCheckBAMAuthenticationAction());\n perf.measureAndTime(perfName);\n resolve(result);\n };\n const defaultActions = () => {\n if (!geo) {\n dispatch(createGetGeoLocationAction());\n }\n dispatch(createGetBAMAuthenticationInfoAction());\n complete();\n };\n const removeRequest = (list, entry) => {\n const index = list.indexOf(entry);\n if (index > -1) {\n list.splice(index, 1);\n }\n };\n\n if (requests.indexOf(geolocationKey) > -1) {\n if (geo) { // use cached one\n const location = geo;\n dispatch(createGetGeoLocationAction(location));\n result[geolocationKey] = location;\n removeRequest(requests, geolocationKey);\n } else {\n videoPlayer.once(WatchESPNWebPlayer.Events.GEOLOCATION_READY, ({ body: { location } = {} } = {}) => {\n dispatch(createGetGeoLocationAction(location));\n result[geolocationKey] = location;\n if (Object.keys(result).length >= requests.length) {\n complete();\n }\n });\n }\n }\n if (requests.indexOf(subscriptionsKey) > -1) {\n if (!isOneIdLoggedIn) {\n dispatch(createGetBAMAuthenticationInfoAction());\n removeRequest(requests, subscriptionsKey);\n } else {\n videoPlayer.once(WatchESPNWebPlayer.Events.SUBSCRIPTIONS_READY, ({ body: { subscriptions } = {} } = {}) => {\n dispatch(createGetBAMAuthenticationInfoAction(subscriptions));\n const newState = getState();\n const entitlements = oneIdEntitlementsSelector(newState);\n const bamSessionToken = bamSessionTokenSelector(newState);\n const hasSuperBundle = superBundleSelector(newState);\n const hasTDAEntitlement = hasTDA(bamSessionToken);\n const isAuthenticated = (entitlements && entitlements.length > 0) || hasTDAEntitlement;\n const { swid } = oneIdSelector(getState());\n set(SUB_KEY, { swid, subscriptions }, 24 * 60 * 60);\n dispatch(completeOneIDAuthentication(\n isAuthenticated, entitlements, hasTDAEntitlement, hasSuperBundle, true\n ));\n result[subscriptionsKey] = subscriptions;\n if (Object.keys(result).length >= requests.length) {\n complete();\n }\n });\n }\n }\n\n if (requests.indexOf(userTrackingKey) > -1) {\n videoPlayer.once(WatchESPNWebPlayer.Events.USER_TRACKING_INFORMATION_READY, ({ body = {} }) => {\n set(USER_TRACKING_KEY, { ...body }, 24 * 60 * 60);\n dispatch(createGetUserTrackingAction(body));\n result[userTrackingKey] = body;\n if (Object.keys(result).length >= requests.length) {\n complete();\n }\n });\n }\n\n\n if (requests.indexOf(sessionTokenKey) > -1) {\n if (!isOneIdLoggedIn) {\n dispatch(createGetBAMSessionTokenAction());\n removeRequest(requests, sessionTokenKey);\n } else {\n videoPlayer.once(WatchESPNWebPlayer.Events.SESSIONTOKEN_READY, ({ body: { token } = {} } = {}) => {\n dispatch(createGetBAMSessionTokenAction(token));\n // NOTE: Setting the sessionToken in temporary storage for subsequent calls to have quick access\n // On every page transition/load a new sessionToken will always be requested and re-assigned.\n set(SESSION_TOKEN_KEY, token, 3600);\n result[sessionTokenKey] = token;\n if (Object.keys(result).length >= requests.length) {\n complete();\n }\n });\n }\n }\n\n if (!requests.length) {\n defaultActions();\n } else {\n try {\n const appContainerEl = document.getElementById('app');\n let containerId = containerIdArg;\n let el = document.getElementById(containerId);\n let elCnt = 0;\n if (el) {\n while (el) {\n elCnt += 1;\n containerId = `${containerIdArg}${elCnt}`;\n el = document.getElementById(containerId);\n }\n }\n el = document.createElement('div');\n el.id = containerId;\n el.className = containerIdArg;\n appContainerEl.appendChild(el);\n let eventRes = [userTrackingKey];\n if (isOneIdLoggedIn) {\n eventRes = [geolocationKey, subscriptionsKey, sessionTokenKey, userTrackingKey];\n }\n const config = {\n container: `#${containerId}`,\n customProps: {},\n ...getBamAuthConfig(oneIdToken, passOneIdToken),\n requests: eventRes,\n transactionId,\n timeout: !(requests.length === 1 && requests.indexOf(subscriptionsKey) > -1)\n };\n console.log('createSDKWrapperConfig', config); // eslint-disable-line no-console\n await videoPlayer.createSDKWrapper(config);\n } catch (err) {\n console.error(err);\n defaultActions();\n }\n }\n });\n };\n}\n\n/**\n * @description Action to trigger watch web stream picker\n * It is not being used in currently. It has been replaced with .com stream picker.\n * We should remove it after .com stream picker is stable.\n * @param {object} content\n */\nexport function createSelectMultipleStreamsAction(content = {}) {\n return (dispatch) => {\n if (content.streams.length) {\n dispatch(displayModalMessage(ModalType.BROADCAST_PICKER, content));\n }\n };\n}\n\nexport function pickerStreamsSelect(pickerStreams, pickerStreamsEventId) {\n return {\n type: PICKER_STREAMS_SELECT,\n pickerStreams,\n pickerStreamsEventId\n };\n}\n\nexport function pickerStreamsUnSelect() {\n return {\n type: PICKER_STREAMS_UNSELECT\n };\n}\n\nexport function pickerStreamsSelectError(error) {\n return {\n type: PICKER_STREAMS_SELECT_ERROR,\n error\n };\n}\n\nexport function openPickerSuccess(payload) {\n return {\n type: OPEN_PICKER_SUCCESS,\n payload\n };\n}\n\nexport function openPickerError(error) {\n return {\n type: OPEN_PICKER_ERROR,\n error\n };\n}\n\nexport function pickerAutoSelect(stream) {\n return {\n type: PICKER_AUTO_SELECT,\n stream\n };\n}\nexport function pickerStateClear() {\n return {\n type: PICKER_STATE_CLEAR\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/actions/appActions.js","import React, { PropTypes, PureComponent } from 'react';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { injectIntl as origInjectIntl, intlShape } from 'react-intl';\n\nexport default function injectIntl(WrappedComponent, options = {}) {\n const OrigInjectIntl = origInjectIntl(WrappedComponent, options);\n class InjectIntl extends PureComponent {\n getWrappedInstance() {\n return this.ref.getWrappedInstance();\n }\n render() {\n return (\n <OrigInjectIntl\n ref={inst => { this.ref = inst; }}\n {...this.props}\n messages={this.context.messages}\n />\n );\n }\n }\n\n InjectIntl.contextTypes = {\n messages: PropTypes.object\n };\n\n return hoistStatics(InjectIntl, WrappedComponent);\n}\n\nexport {\n intlShape\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/injectIntl.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMComponentTree.js\n// module id = 21\n// module chunks = 1","import Promise from 'bluebird';\nimport findIndex from 'lodash/findIndex';\nimport { BAM_PROMO_IFRAME_ID } from 'constants';\nimport { AdobePass, AuthenticatorType, AuthTypes, Entitlements, Flags, ModalType } from 'enums';\nimport { Authenticator, PreAuthZ, streamHasDTCPackage, streamHasAuthType, getContentId } from 'lib/auth';\nimport * as perf from 'lib/util/perf';\nimport * as untimelyLogoutTracker from 'lib/metrics/untimelyLogoutTracker';\nimport { ClientAPI } from 'lib/api';\nimport { dateFormat, getAdobePassRedirectUrl, addQueryToUrl } from 'lib/format';\nimport {\n trackMvpdPicker,\n trackProviderSelect,\n trackAuthenticationComplete,\n trackAuthorizationStart,\n trackAuthorizationComplete,\n clearTrackingData\n} from 'lib/omniture';\nimport { isEmpty, getBamAuthConfig } from 'lib/util';\nimport * as oneId from 'lib/oneId';\nimport bootstrapSelector from 'common/selectors/bootstrapSelector';\nimport {\n adobePassInitializedSelector,\n adobePassAuthenticatedSelector,\n userAuthSelector,\n passOneIdTokenSelector\n} from 'common/selectors/authenticationSelectors';\nimport { oneIdTokenSelector, oneIdAnalyticsSelector } from 'common/selectors/oneIdSelector';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport appSelector, {\n adobePassEnvSelector,\n countrySelector,\n isIntlSelector,\n packageFilterSelector,\n isDomesticSelector\n} from 'common/selectors/appSelector';\nimport pageSelector from 'common/selectors/pageSelector';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport providerSelector, { providersSelector } from 'common/selectors/providerSelector';\nimport routingSelector from 'common/selectors/routingSelector';\nimport networksSelector from 'common/selectors/networksSelector';\nimport { navmethodSelector, entitlementsTrackingSelector } from 'common/selectors/analyticsSelectors';\nimport uniq from 'lodash/uniq';\nimport chunk from 'lodash/chunk';\nimport {\n contentSelect,\n contentUnSelect,\n streamSelect,\n streamUnSelect,\n savePackageId,\n savePackageTier,\n displayModalMessage,\n closeModalMessage\n} from './appActions';\nimport { createFetchPageAction, setPageState } from 'common/page/actions';\nimport { fetchScheduleModule } from 'common/scheduleModule/actions';\nimport { scoreAll } from 'common/actions/scoringActions';\nimport { launchLogin } from 'common/actions/oneIdActions';\nimport { AccountSelectorComponent } from 'common/page/AccountSelector';\nimport WatchESPNWebPlayer from 'webapp/common/video-player';\n\nexport function createAuthenticator(type) {\n return (dispatch, getState) => {\n if (type === AuthenticatorType.IP) {\n return Authenticator.ip({ partner: 'watchespn', platform: 'web' });\n }\n return Authenticator.adobe({\n displayProviderDialogImpl: () => {},\n elementId: 'ae_container',\n environment: adobePassEnvSelector(getState()),\n redirectUrl: window.location.href,\n refreshless: true\n });\n };\n}\n\n// Reduxified Adobe Pass Actions\nexport const START_ADOBEPASS_INITIALIZE = 'START_ADOBEPASS_INITIALIZE';\nexport const COMPLETE_ADOBEPASS_INITIALIZE = 'COMPLETE_ADOBEPASS_INITIALIZE';\nexport const START_CHECK_AUTHENTICATION = 'START_CHECK_AUTHENTICATION';\nexport const COMPLETE_CHECK_AUTHENTICATION = 'COMPLETE_CHECK_AUTHENTICATION';\nexport const START_AUTHENTICATION = 'START_AUTHENTICATION';\nexport const COMPLETE_AUTHENTICATION = 'COMPLETE_AUTHENTICATION';\nexport const START_AUTHORIZATION = 'START_AUTHORIZATION';\nexport const COMPLETE_AUTHORIZATION = 'COMPLETE_AUTHORIZATION';\nexport const REQUEST_PROVIDERS = 'REQUEST_PROVIDERS';\nexport const RECEIVE_PROVIDERS = 'RECEIVE_PROVIDERS';\nexport const DISPLAY_PROVIDER_DIALOG = 'DISPLAY_PROVIDER_DIALOG';\nexport const CLOSE_PROVIDER_DIALOG = 'CLOSE_PROVIDER_DIALOG';\nexport const SELECT_PROVIDER = 'SELECT_PROVIDER';\nexport const START_LOGOUT = 'START_LOGOUT';\nexport const COMPLETE_LOGOUT = 'COMPLETE_LOGOUT';\nexport const GET_AUTHENTICATION_INFO = 'GET_AUTHENTICATION_INFO';\nexport const GET_METADATA = 'GET_METADATA';\nexport const COMPLETE_PREAUTH_CHECK = 'COMPLETE_PREAUTH_CHECK';\nexport const GET_LOCATION = 'GET_LOCATION';\nexport const ADOBEPASS_ERROR_EVENT = 'ADOBEPASS_ERROR_EVENT';\n\n// BAM\nexport const START_CHECK_BAM_AUTHENTICATION = 'START_CHECK_BAM_AUTHENTICATION';\nexport const COMPLETE_CHECK_BAM_AUTHENTICATION = 'COMPLETE_CHECK_BAM_AUTHENTICATION';\nexport const GET_BAM_AUTHENTICATION_INFO = 'GET_BAM_AUTHENTICATION_INFO';\nexport const GET_GEOLOCATION = 'GET_GEOLOCATION';\nexport const GET_BAM_SESSION_TOKEN = 'GET_BAM_SESSION_TOKEN';\nexport const GET_USER_TRACKING = 'GET_USER_TRACKING';\n\n// Reduxified IP actionsexport\nexport const START_CHECK_IP_AUTHENTICATION = 'START_CHECK_IP_AUTHENTICATION';\nexport const COMPLETE_CHECK_IP_AUTHENTICATION = 'COMPLETE_CHECK_IP_AUTHENTICATION';\nexport const GET_IP_AUTHENTICATION_INFO = 'GET_IP_AUTHENTICATION_INFO';\n\nexport function createGetBAMAuthenticationInfoAction(subscriptions) {\n return {\n type: GET_BAM_AUTHENTICATION_INFO,\n subscriptions\n };\n}\n\nexport function createGetGeoLocationAction(geo) {\n return {\n type: GET_GEOLOCATION,\n geo\n };\n}\n\nexport function createGetBAMSessionTokenAction(sessionToken) {\n return {\n type: GET_BAM_SESSION_TOKEN,\n session: {\n token: sessionToken,\n completeTime: Date.now()\n }\n };\n}\n\nexport function createGetUserTrackingAction(userTracking) {\n return {\n type: GET_USER_TRACKING,\n userTracking\n };\n}\n\nexport function createStartCheckBAMAuthenticationAction() {\n return {\n type: START_CHECK_BAM_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nexport function createCompleteCheckBAMAuthenticationAction() {\n return {\n type: COMPLETE_CHECK_BAM_AUTHENTICATION,\n completeTime: Date.now()\n };\n}\n\n// define ip authentication actions\nexport function createStartCheckIpAuthenticationAction() {\n return {\n type: START_CHECK_IP_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nexport function createCompleteCheckIpAuthenticationAction(isAuthenticated) {\n return {\n type: COMPLETE_CHECK_IP_AUTHENTICATION,\n directive: (isAuthenticated === true ? 'add' : 'remove'),\n authType: 'isp',\n startTime: Date.now()\n };\n}\n\nexport function createGetIpAuthenticationInfoAction(info) {\n return {\n type: GET_IP_AUTHENTICATION_INFO,\n info\n };\n}\n\nexport function createGetLocationAction(location) {\n return {\n type: GET_LOCATION,\n location\n };\n}\n\nexport function createGetLocationFromUserDataAction() {\n return (dispatch) => (\n dispatch(createAuthenticator(AuthenticatorType.IP))\n .getLocation().then((location) => {\n if (location && typeof location === 'object') {\n location.timeZone = dateFormat.getTimezone();\n dispatch(createGetLocationAction(location));\n }\n })\n );\n}\n\nexport function createReceiveProvidersAction(providers) {\n return {\n type: RECEIVE_PROVIDERS,\n providers,\n completeTime: Date.now()\n };\n}\n\n\nexport function createRequestProvidersAction() {\n return {\n type: REQUEST_PROVIDERS,\n startTime: Date.now()\n };\n}\n\nconst compareByName = (providerA, providerB) => (providerA.name.toLowerCase() > providerB.name.toLowerCase() ? 1 : -1);\nexport function getProviders({ country, partner, platform, version } = {}) {\n return (dispatch, getState) => {\n const state = getState();\n const opts = {\n partner,\n platform,\n version,\n country: country || countrySelector(state),\n passenv: adobePassEnvSelector(state)\n };\n const providersFromState = providersSelector(state);\n let providerPromise;\n dispatch(createRequestProvidersAction());\n if (providersFromState.length > 0) {\n providerPromise = Promise.resolve(providersFromState);\n } else {\n providerPromise = ClientAPI\n .getProviders(opts)\n .then((providersFromApi = []) => (providersFromApi.sort(compareByName)));\n }\n return providerPromise.then((providers) => {\n dispatch(createReceiveProvidersAction(providers));\n return providers;\n });\n };\n}\n\nexport function createSmartIpAuthenticationAction() {\n return async (dispatch, getState) => {\n perf.markStart('createSmartIpAuthenticationAction');\n const ipAuthenticator = dispatch(createAuthenticator(AuthenticatorType.IP));\n\n await dispatch(createGetLocationFromUserDataAction());\n dispatch(createStartCheckIpAuthenticationAction());\n const isAuthenticated = await ipAuthenticator.checkAuthentication();\n perf.measureAndTime('createSmartIpAuthenticationAction');\n dispatch(createCompleteCheckIpAuthenticationAction(isAuthenticated));\n if (isAuthenticated === true) {\n const [providers, ipInfo] = await Promise.all([dispatch(getProviders()), ipAuthenticator.getAuthenticationInfo()]);\n let orderedProviders = providers;\n const providerIndex = findIndex(providers, (provider) => (provider.ispId === ipInfo.mvpd));\n\n // if the provider is not found in the provider list, check the legacy \"watchespn-flash\" client,\n // which contains ISP only affs that \"watchespn-web\" does not\n if (providerIndex === -1) {\n const country = countrySelector(getState());\n const provider = await ClientAPI.getProvider({ abbreviation: ipInfo.mvpd, country });\n if (provider) {\n orderedProviders.unshift(provider);\n dispatch(createReceiveProvidersAction(orderedProviders));\n dispatch(createGetIpAuthenticationInfoAction(provider));\n }\n return provider;\n }\n const providerInfo = providers[providerIndex];\n if (providerIndex > 0) {\n providers.splice(providerIndex, 1); // Removes currIndex from providers array\n orderedProviders = [providerInfo, ...providers];\n }\n dispatch(createReceiveProvidersAction(orderedProviders));\n dispatch(createGetIpAuthenticationInfoAction(providerInfo));\n return providerInfo;\n }\n return null;\n };\n}\n\n\n// Define Adobe Pass Authentication Actions\nexport function createStartAdobePassInitializeAction() {\n return {\n type: START_ADOBEPASS_INITIALIZE,\n startTime: Date.now()\n };\n}\n\nexport function createCompleteAdobePassInitializeAction() {\n return {\n type: COMPLETE_ADOBEPASS_INITIALIZE,\n completeTime: Date.now()\n };\n}\n\n// Define Adobe Pass Check Authentication Actions\nexport function createStartCheckAuthenticationAction() {\n return {\n type: START_CHECK_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nexport function createCompletePreauthCheckAction(resources = []) {\n return {\n type: COMPLETE_PREAUTH_CHECK,\n resources\n };\n}\n\nexport function checkPreauthResources() {\n let resources = PreAuthZ.getResources();\n return async (dispatch, getState) => {\n const state = getState();\n const isIntl = isIntlSelector(state);\n const { adobePass: { preauthorizeNetworksEnabled, preauthorizeNetworks = [] } = {} } = bootstrapSelector(state);\n if (!isIntl && !preauthorizeNetworksEnabled) { // if preauth disabled for domestic, use static list of resources\n resources = preauthorizeNetworks;\n }\n if (!resources) {\n let allAdobeIds;\n const adobeAuthenticator = dispatch(createAuthenticator(AuthenticatorType.ADOBE));\n if (isIntl) {\n const networks = networksSelector(state) || [];\n allAdobeIds = uniq(networks\n .filter(({ isActive, adobeResource }) => isActive && adobeResource)\n .map(({ adobeResource }) => adobeResource));\n const chunkedAdobeIds = chunk(allAdobeIds, PreAuthZ.PREAUTH_MAX_LENGTH);\n // FIXME: it started to return the same preauthorized resources in the subsequent chunked requests..\n // https://tve.zendesk.com/hc/requests/34976\n /**\n * There cannot be multiple \"adobeAuthenticator.checkPreauthorizedResources\" in flight since\n * there is only one global function to handle the preauthz callback in `watch-authenticators-js`.\n * For this reason, we await in a conventional for loop until each \"checkPreauthorizedResources\" completes\n */\n let index = 0;\n for (index; index < chunkedAdobeIds.length; index += 1) {\n const preAuthResources = await adobeAuthenticator.checkPreauthorizedResources(...chunkedAdobeIds[index]);\n if (preAuthResources.length > 0) {\n resources = (resources || []).concat(preAuthResources);\n }\n }\n resources = uniq(resources);\n } else {\n const channels = getState().schedule.channels || [];\n allAdobeIds = uniq(channels.map((channel) => (channel.adobeResource)).filter(adobeResource => !!adobeResource));\n const chunkedAdobeIds = chunk(allAdobeIds, PreAuthZ.PREAUTH_MAX_LENGTH);\n // FIXME: it started to return the same preauthorized resources in the subsequent chunked requests..\n // https://tve.zendesk.com/hc/requests/34976\n /**\n * There cannot be multiple \"adobeAuthenticator.checkPreauthorizedResources\" in flight since\n * there is only one global function to handle the preauthz callback in `watch-authenticators-js`.\n * For this reason, we await in a conventional for loop until each \"checkPreauthorizedResources\" completes\n */\n let index = 0;\n for (index; index < chunkedAdobeIds.length; index += 1) {\n const preAuthResources = await adobeAuthenticator.checkPreauthorizedResources(...chunkedAdobeIds[index]);\n if (preAuthResources.length > 0) {\n resources = (resources || []).concat(preAuthResources);\n }\n }\n resources = uniq(resources);\n if (resources && resources.length) { // in case preauthz fails and return invalid data\n PreAuthZ.setResources(resources, 1); // set expiration to 1 day\n if (\n window.espn_ui && window.espn_ui.Helpers &&\n window.espn_ui.Helpers.watchProviders && window.espn_ui.Helpers.watchProviders.setTVECookies\n ) {\n window.espn_ui.Helpers.watchProviders.setTVECookies(resources);\n }\n }\n }\n }\n\n dispatch(createCompletePreauthCheckAction(resources));\n return resources;\n };\n}\n\nexport function createCompleteCheckAuthenticationAction(isAuthenticated) {\n return {\n type: COMPLETE_CHECK_AUTHENTICATION,\n directive: (isAuthenticated === true ? 'add' : 'remove'),\n isAuthenticated,\n authType: AuthTypes.MVPD,\n completeTime: Date.now()\n };\n}\n\nexport function createStartAuthenticationAction(content) {\n return {\n type: START_AUTHENTICATION,\n content,\n startTime: Date.now()\n };\n}\n\nexport function createCompleteAuthenticationAction(isAuthenticated, mvpd) {\n return {\n type: COMPLETE_AUTHENTICATION,\n directive: (isAuthenticated === true ? 'add' : 'remove'),\n isAuthenticated,\n authType: AuthTypes.MVPD,\n mvpd,\n completeTime: Date.now()\n };\n}\n\nexport function createStartAuthorizationAction(resourceId) {\n return {\n type: START_AUTHORIZATION,\n resourceId,\n startTime: Date.now()\n };\n}\n\nexport function createCompleteAuthorizationAction(resourceId, token) {\n return {\n type: COMPLETE_AUTHORIZATION,\n resourceId,\n token,\n completeTime: Date.now()\n };\n}\n\nexport function createAdobePassErrorAction(error) {\n return {\n type: ADOBEPASS_ERROR_EVENT,\n error\n };\n}\n\n// Provider Display and Select Action creators.\n// The Display Provider Dialog action, which is triggered by startAuthentication\nexport function createDisplayProviderDialogAction() {\n return (dispatch, getState) => {\n const state = getState();\n trackMvpdPicker({ isDomestic: isDomesticSelector(state) });\n dispatch({\n type: DISPLAY_PROVIDER_DIALOG,\n showProviderDialog: true\n });\n };\n}\n\nexport function createCloseProviderDialogAction(resume = true) {\n return (dispatch, getState) => {\n dispatch({\n type: CLOSE_PROVIDER_DIALOG,\n showProviderDialog: false\n });\n if (resume) {\n const { previousContent, playingStream } = appSelector(getState());\n if (!isEmpty(playingStream)) {\n dispatch(contentUnSelect());\n dispatch(contentSelect(previousContent));\n }\n }\n };\n}\n\nexport function createStartLogoutAction() {\n return {\n type: START_LOGOUT,\n startTime: Date.now()\n };\n}\n\nexport function createCompleteLogoutAction() {\n PreAuthZ.clear();\n\n return {\n type: COMPLETE_LOGOUT,\n directive: 'remove',\n isAuthenticated: false,\n authType: AuthTypes.MVPD,\n completeTime: Date.now()\n };\n}\n\nexport function createAndPerformLogoutAction(stream) {\n return (dispatch, getState) => {\n dispatch(createStartLogoutAction());\n PreAuthZ.clear();\n if (\n window.espn_ui && window.espn_ui.Helpers &&\n window.espn_ui.Helpers.watchProviders && window.espn_ui.Helpers.watchProviders.setTVECookies\n ) {\n window.espn_ui.Helpers.watchProviders.removeTVECookies();\n }\n return dispatch(createAuthenticator(AuthenticatorType.ADOBE))\n .deauthenticate().then((isAuthenticated) => {\n // purposefully logged out, forget their authn ttl so we don't track a discrepancy\n untimelyLogoutTracker.reset();\n if (isAuthenticated === false) {\n dispatch(createCompleteLogoutAction());\n if (stream && stream.authTypes) {\n const content = selectedContentSelector(getState());\n content.reEmbed = true;\n dispatch(streamUnSelect());\n dispatch(streamSelect(stream));\n }\n }\n return Promise.resolve();\n });\n };\n}\n\nexport function createGetAuthenticationInfoAction(info) {\n return (dispatch, getState) => {\n const state = getState();\n const userAuth = userAuthSelector(state);\n const isDomestic = isDomesticSelector(state);\n const entitlementsTracking = entitlementsTrackingSelector(state);\n trackAuthenticationComplete({ userAuth, provider: info, entitlementsTracking, isDomestic });\n dispatch({\n type: GET_AUTHENTICATION_INFO,\n info\n });\n };\n}\n\nexport function createGetMetadataAction(key, value) {\n return {\n type: GET_METADATA,\n key,\n value\n };\n}\n\nexport function listenForAdobePassErrorEvent() {\n return (dispatch) => dispatch(createAuthenticator(AuthenticatorType.ADOBE))\n .onErrorEvent((errorData) => {\n dispatch(createAdobePassErrorAction(errorData));\n });\n}\n\nexport function initializeAdobePassAuthenticator() {\n return (dispatch) => {\n dispatch(createStartAdobePassInitializeAction());\n dispatch(listenForAdobePassErrorEvent());\n return dispatch(createAuthenticator(AuthenticatorType.ADOBE))\n .initialize().then((initialized) => {\n if (initialized) {\n dispatch(createCompleteAdobePassInitializeAction());\n }\n return initialized;\n });\n };\n}\n\nexport function checkAdobePassAuthentication() {\n return (dispatch, getState) => {\n const adobePassInitialized = adobePassInitializedSelector(getState());\n if (!adobePassInitialized) {\n return Promise.resolve(false);\n }\n dispatch(createStartCheckAuthenticationAction());\n return dispatch(createAuthenticator(AuthenticatorType.ADOBE))\n .checkAuthentication()\n .then((isAuthenticated) => {\n dispatch(createCompleteCheckAuthenticationAction(isAuthenticated));\n return isAuthenticated;\n });\n };\n}\n\nexport function getAdobePassAuthenticationInfo() {\n return (dispatch) => dispatch(createAuthenticator(AuthenticatorType.ADOBE))\n .getAuthenticationInfo();\n}\n\nexport function getAdobePassMetadata(key) {\n return (dispatch) => dispatch(createAuthenticator(AuthenticatorType.ADOBE))\n .getMetadata(key);\n}\n\nexport function createAsyncGetMetadataAction(key) {\n return (dispatch) => dispatch(getAdobePassMetadata(key))\n .then((value = `${Math.random()}`) => {\n dispatch(createGetMetadataAction(key, value));\n return Promise.resolve(value);\n }, (error) => Promise.reject(error));\n}\n\n// Initializes Adobe, checks authentication, then gets provider list if not authenticated.\n// Called on page load\nexport function createSmartAdobePassInitializeAction(routerParams) {\n return async (dispatch, getState) => {\n perf.markStart('createSmartAdobePassInitializeAction');\n const isIntl = isIntlSelector(getState());\n if (!isIntl) {\n // check and store preauthz resource before awaiting async functions\n const preAuthResources = PreAuthZ.getResources();\n if (preAuthResources) {\n dispatch(createCompletePreauthCheckAction(preAuthResources));\n }\n }\n await dispatch(initializeAdobePassAuthenticator());\n await dispatch(checkAdobePassAuthentication());\n await dispatch(getProviders());\n // make sure to grab from `getState()` not from cached one\n const state = getState();\n const isAuthenticated = adobePassAuthenticatedSelector(state);\n if (isAuthenticated) {\n const info = await dispatch(getAdobePassAuthenticationInfo());\n // just to send `usid` to page view tracking..\n await dispatch(createAsyncGetMetadataAction(AdobePass.METADATA.UPSTREAM_USERID));\n const { providerDialog: { providers: providersFromApi } } = state;\n const providerInfo = providersFromApi.filter(({ abbreviation }) =>\n abbreviation === info.mvpd\n ).shift();\n // this means you are authenticated for mvpd in a different country\n // if we swallow it, provider dialog won't show up for the current country and users get stuck,\n // so logging out from the current invalid mvpd\n if (!providerInfo) {\n await dispatch(createAndPerformLogoutAction());\n }\n\n const { lang } = appSelector(state);\n const { locationBeforeTransitions } = routingSelector(state);\n const { id: pageId } = pageSelector(state);\n const { query = {} } = locationBeforeTransitions || {};\n\n if (isIntl) {\n const packageId = await dispatch(getAdobePassMetadata(AdobePass.METADATA.PACKAGE_ID));\n let packageTier = await dispatch(getAdobePassMetadata(AdobePass.METADATA.PACKAGE_TIER));\n // consumerKey from the affiliateApi is the package ID.\n const pkg = providerInfo.packages.filter(item => item.consumerKey === packageId).shift();\n if (!packageTier && pkg) {\n // packageId from the affiliateApi contains package tier info.\n packageTier = pkg.packageId;\n }\n dispatch(createGetMetadataAction(AdobePass.METADATA.PACKAGE_ID, packageId));\n dispatch(createGetMetadataAction(AdobePass.METADATA.PACKAGE_TIER, packageTier));\n dispatch(createGetAuthenticationInfoAction({ ...providerInfo, package: pkg }));\n dispatch(savePackageId(packageId));\n dispatch(savePackageTier(packageTier));\n\n const packageFilter = packageFilterSelector(getState());\n if (packageFilter && pageId !== 'syndicated-player') {\n await Promise.all([\n dispatch(createFetchPageAction(pageId, routerParams, query, lang)),\n dispatch(fetchScheduleModule(lang))\n ]);\n dispatch(scoreAll());\n } else {\n dispatch(setPageState(true));\n }\n } else {\n dispatch(createGetAuthenticationInfoAction(providerInfo));\n }\n\n // save the authn ttl to local storage so we can track a discrepancy later\n if (!untimelyLogoutTracker.isAuthNTtlSaved() && providerInfo) {\n untimelyLogoutTracker.saveInitialAuthNData(providerInfo);\n dispatch(getAdobePassMetadata(AdobePass.METADATA.TTL_AUTHN))\n .then((ttl) => {\n untimelyLogoutTracker.saveAuthNTtl(ttl);\n });\n }\n\n if (isIntl) {\n // TODO: add `fetchNetwork` back in PageShell.js and enable this once we are comfortable\n /* const { location: { path = '' } } = appSelector(getState());\n // only check preAuth for schedule page\n if (path.indexOf('schedule') !== -1 && providerInfo) {\n dispatch(checkPreauthResources());\n } */\n } else {\n // not awaiting on purpose based on the requirement, it's ok to reflect the `preAuthResources` next time\n dispatch(checkPreauthResources());\n }\n }\n if (isIntl) {\n dispatch(setPageState(true));\n }\n untimelyLogoutTracker.trackUntimelyLogout(entitlementsTrackingSelector(getState()));\n perf.measureAndTime('createSmartAdobePassInitializeAction');\n return null;\n };\n}\n\nexport function createAndPerformStartAuthenticationAction({ content, stream, redirectUrl: redirectUrlArg } = {}) {\n return (dispatch, getState) => {\n const flags = persistentFlagsSelector(getState());\n const { locationBeforeTransitions } = routingSelector(getState());\n const { query = {}, pathname = '' } = locationBeforeTransitions || {};\n const redirectUrl = redirectUrlArg || getAdobePassRedirectUrl({ content, stream, flags, query, pathname });\n dispatch(createStartAuthenticationAction(content));\n return dispatch(createAuthenticator(AuthenticatorType.ADOBE))\n .authenticate(null, null, redirectUrl || '')\n .then((isAuthenticated) => {\n dispatch(createCompleteAuthenticationAction(isAuthenticated));\n return Promise.resolve(isAuthenticated);\n });\n };\n}\n\nexport function createAndPerformStartAuthorizationAction(resource) {\n return (dispatch, getState) => {\n dispatch(createStartAuthorizationAction(resource));\n const state = getState();\n trackAuthorizationStart({\n userAuth: userAuthSelector(state),\n provider: providerSelector(state),\n entitlementsTracking: entitlementsTrackingSelector(state),\n isDomestic: isDomesticSelector(state)\n });\n\n return dispatch(createAuthenticator(AuthenticatorType.ADOBE))\n .authorize(resource)\n .then((response) => {\n dispatch(createCompleteAuthorizationAction(response.resourceId, response.token));\n trackAuthorizationComplete({\n userAuth: userAuthSelector(state),\n provider: providerSelector(state),\n entitlementsTracking: entitlementsTrackingSelector(state),\n isDomestic: isDomesticSelector(state)\n });\n if (!response.errorCode && !response.errorDetails) {\n return Promise.resolve({\n resourceId: response.resourceId,\n token: response.token\n });\n }\n return Promise.reject(new Error(response.errorDetails || response.errorCode));\n })\n .catch(error => {\n dispatch(createCompleteAuthorizationAction());\n return Promise.reject(error);\n });\n };\n}\n\nexport function createSelectProviderAction(provider) {\n return (dispatch, getState) => {\n const adobeProvider = {\n ID: (provider && provider.ID) || provider.abbreviation\n };\n\n if (adobeProvider.ID) {\n const state = getState();\n const isDomestic = isDomesticSelector(state);\n trackProviderSelect({\n userAuth: userAuthSelector(state),\n entitlementsTracking: entitlementsTrackingSelector(state),\n provider,\n isDomestic\n });\n } else {\n clearTrackingData();\n }\n dispatch(createAuthenticator(AuthenticatorType.ADOBE))\n .selectProvider(adobeProvider).then((isAuthenticated) => {\n // this probably won't ever get called\n dispatch(createCompleteAuthenticationAction(isAuthenticated, adobeProvider.ID));\n });\n };\n}\n\nexport function createAccountSelectorAction(content, redirectUrlArg) {\n return (dispatch, getState) => {\n const state = getState();\n const flags = persistentFlagsSelector(state);\n const { locationBeforeTransitions } = routingSelector(state);\n const { query = {} } = locationBeforeTransitions || {};\n const redirectUrl = redirectUrlArg || getAdobePassRedirectUrl({ content, flags, query });\n const mode = AccountSelectorComponent.MODE.ACCOUNT_SELECTOR;\n const oneIdParam = query[Flags.ONEID_ENV] ? `${Flags.ONEID_ENV}=${query[Flags.ONEID_ENV]}&` : '';\n const url = `/watch/account-selector?${oneIdParam}mode=${mode}&redirectUrl=${encodeURIComponent(redirectUrl)}`;\n window.location.href = url;\n };\n}\n\nexport function createDTCPaywallAction({ content, stream, containerId }) {\n return async (dispatch, getState) => {\n const state = getState();\n const { bam = {} } = bootstrapSelector(state);\n const passOneIdToken = passOneIdTokenSelector(state);\n const { locationBeforeTransitions } = routingSelector(state);\n const { query, pathname } = locationBeforeTransitions || {};\n const flags = persistentFlagsSelector(state);\n const oneIdToken = oneIdTokenSelector(state);\n const analytics = oneIdAnalyticsSelector(state) || {};\n const userAuth = userAuthSelector(state);\n const redirectUrl = getAdobePassRedirectUrl({ content, stream, flags, query, pathname });\n const isPromo = containerId === BAM_PROMO_IFRAME_ID;\n const navmethod = navmethodSelector(state);\n if (query[Flags.PAYWALL] === 'false') {\n if (!isPromo && !stream) {\n console.error('Empty stream selected');\n return;\n }\n if (!isPromo) {\n const hasMLB = streamHasDTCPackage(stream, Entitlements.ESPN_PLUS_MLB);\n // TODO: DTC - find out how to detect `vertical` w/o checking particular package\n const isVertical = hasMLB || streamHasDTCPackage(stream, Entitlements.ESPN_PLUS_NHL);\n const isMatchup = !!content.event; // TODO: DTC - confirm this check is correct\n let matchup;\n if (!isVertical && isMatchup) {\n matchup = true;\n }\n const matchupParam = matchup ? `matchup=${matchup}&` : '';\n // const oneIdParam = query[Flags.ONEID_ENV] ? `${Flags.ONEID_ENV}=${query[Flags.ONEID_ENV]}&` : '';\n const oneIdParam = query[Flags.DISNEY_ENV] === 'stg' ? `${Flags.ONEID_ENV}=staging&` : '';\n const idParam = `id=${stream.id}`;\n const redirectParam = `redirectUrl=${encodeURIComponent(redirectUrl)}`;\n const url = `/watch/account-selector?${oneIdParam}${matchupParam}${idParam}&${redirectParam}`;\n dispatch(displayModalMessage(ModalType.PAYWALL, { src: url }));\n } else {\n const oneIdParam = query[Flags.DISNEY_ENV] === 'stg' ? `${Flags.ONEID_ENV}=staging&` : '';\n const idParam = `id=${content.id}`;\n const redirectParam = `redirectUrl=${encodeURIComponent(redirectUrl)}`;\n const url = `/watch/account-selector?${oneIdParam}${idParam}&${redirectParam}`;\n const promoEl = document.getElementById(BAM_PROMO_IFRAME_ID);\n if (promoEl) {\n promoEl.innerHTML = `<iframe src=\"${url}\"></iframe>`;\n }\n }\n } else {\n if (!isPromo) {\n dispatch(displayModalMessage(ModalType.PAYWALL, { content }));\n }\n const videoPlayer = new WatchESPNWebPlayer({\n bamPlayerOptions: query[Flags.BAM_ENV] ? { ...bam, env: query[Flags.BAM_ENV] } : bam\n });\n const contentId = getContentId(content);\n const eventIdOrId = contentId.eventId || contentId.id;\n const paywallConfig = {\n container: `#${containerId}`,\n customProps: {},\n ...getBamAuthConfig(oneIdToken, passOneIdToken, userAuth),\n redirectUrl,\n isPromo,\n analytics\n };\n\n // Only assign navmethod to analytics object if defined\n if (typeof navmethod === 'string' && navmethod !== '') {\n paywallConfig.analytics.navmethod = navmethod;\n }\n\n let idKey = 'id';\n if (!stream && contentId.eventId) {\n idKey = 'eventId';\n }\n\n if (!isPromo) {\n if (stream) {\n paywallConfig[idKey] = stream.id;\n /**\n * Set stream to `customProps` where DSS needs to handle paywall and playback\n * To handle the /schedule page which uses GraphQL, we must embed\n * the `content` object which has been updated to contain the `backgroundImageHref`\n * 1. var isContentInStream: check if stream has content props, if it is yes, use stream\n * 2. if isContentInStream returns false, get firstStream (stream[0]) from content\n * 3. if step 1 and step 2 fail, let's just pass content object along with stream\n */\n const isContentInStream = stream && stream.content;\n const firstStream = content.streams[0];\n let streamObject;\n if (isContentInStream) {\n streamObject = stream;\n } else if (firstStream && firstStream.content) {\n streamObject = firstStream;\n } else {\n streamObject = { ...stream, content };\n }\n paywallConfig.customProps.stream = streamObject;\n } else {\n paywallConfig[idKey] = eventIdOrId;\n // NOTE: In a multi-stream scenario we need to pass the event content to `customProps`\n // to ensure the generic paywall image is rendered.\n // The solution is to use the first stream which contains the `backgroundImageHref` as primary\n // and fallback to nesting the parent object with the content\n if (content) {\n const firstStream = content.streams[0];\n paywallConfig.customProps.stream = firstStream || { ...content, content };\n }\n }\n }\n\n if (query[Flags.DISNEY_ENV] === 'stg') {\n paywallConfig.oneIdEnv = 'stg';\n }\n if (!isPromo) {\n videoPlayer.once(WatchESPNWebPlayer.Events.LOGIN_REQUESTED, (event) => {\n const { success, body: { authType, redirectUrl: redirectUrlArg } = {} } = event;\n if (!success) {\n console.error('LOGIN_REQUESTED', event);\n }\n dispatch(closeModalMessage());\n if (authType === AuthTypes.BAM) {\n oneId.on('login', () => {\n let streamArg = stream;\n if (!streamArg) {\n streamArg = content.streams\n .filter((streamParam) => streamHasAuthType(streamParam, AuthTypes.BAM))[0];\n }\n const loginQuery = {\n [`login_with_content_${idKey}`]: eventIdOrId,\n login_with_pkg: streamArg && streamArg.packages && streamArg.packages.join(',')\n };\n // pass stream id only when it's different from content id\n if (streamArg && streamArg.id !== eventIdOrId) {\n loginQuery.login_with_id = streamArg.id;\n }\n // pass airingId that user selected from picker to login params\n // so that we know which stream to play in the player\n const { airingId } = query;\n if (airingId) {\n loginQuery.airingId = airingId;\n }\n window.location.href = addQueryToUrl(redirectUrlArg, loginQuery);\n });\n dispatch(launchLogin());\n } else if (authType === AuthTypes.MVPD) {\n dispatch(createAndPerformStartAuthenticationAction({ content, stream }))\n .then((isAuthenticated) => {\n if (!isAuthenticated) {\n dispatch(createDisplayProviderDialogAction());\n }\n });\n }\n });\n }\n try {\n console.log('paywallConfig', paywallConfig); // eslint-disable-line no-console\n await videoPlayer.renderPaywall(paywallConfig);\n } catch (err) {\n console.error(err);\n }\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/actions/authenticationActions.js","import { createSelector } from 'reselect';\n\nconst routingSelector = ({ routing = {} }) => routing;\n\nexport default createSelector(routingSelector, (routing) => routing);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/routingSelector.js","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 24\n// module chunks = 1","/**\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/invariant/browser.js\n// module id = 25\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.default = routerWarning;\nexports._resetWarned = _resetWarned;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction routerWarning(falseToWarn, message) {\n // Only issue deprecation warnings once.\n if (message.indexOf('deprecated') !== -1) {\n if (warned[message]) {\n return;\n }\n\n warned[message] = true;\n }\n\n message = '[react-router] ' + message;\n\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n _warning2.default.apply(undefined, [falseToWarn, message].concat(args));\n}\n\nfunction _resetWarned() {\n warned = {};\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/routerWarning.js\n// module id = 26\n// module chunks = 1","import { createSelector } from 'reselect';\nimport _uniq from 'lodash/uniq';\nimport cookie from 'cookie-cutter';\nimport { isEmpty } from 'lib/util';\nimport canUseDOM from 'lib/util/canUseDOM';\nimport { subscriptionsSelector } from 'common/selectors/authenticationSelectors';\nimport fanSelector from 'common/selectors/fanSelector';\n\nconst oneIdSelector = ({ oneId = {} }) => oneId;\n\nexport default createSelector(oneIdSelector, (oneId) => oneId);\n\nexport const oneIdInitializedSelector = createSelector(\n oneIdSelector,\n (oneId) => oneId && !!oneId.completeTime\n);\n\nexport const oneIdLoggedInSelector = createSelector(\n oneIdSelector,\n (oneId) => {\n if (canUseDOM && window.espn && window.espn.core && window.espn.core.loggedIn != null) {\n return window.espn.core.loggedIn;\n }\n return oneId && !isEmpty(oneId.data);\n }\n);\n\nexport const oneIdLangPrefSelector = createSelector(\n oneIdSelector,\n (oneId) => {\n let langPref;\n if (oneId && !isEmpty(oneId.data)) {\n langPref = oneId.data.profile.languagePreference;\n }\n return langPref;\n }\n);\n\nexport const oneIdEntitlementsSelector = createSelector(\n subscriptionsSelector,\n oneIdSelector,\n (subscriptions, oneId) => {\n let entitlements;\n if (subscriptions) {\n entitlements = _uniq(subscriptions.reduce((acc, { isActive, products = [], status: { type } = {} }) => {\n if (!isActive || type === 'UNSUBSCRIBED') {\n return acc;\n }\n const prdctEntitlements = products.reduce((acc2, { partner, entitlements: productEntitlements = [] }) => {\n if (partner !== 'ESPN' && partner !== 'disney') {\n return acc2;\n }\n return acc2.concat(productEntitlements.map(({ name }) => name));\n }, []);\n return acc.concat(prdctEntitlements);\n }, []));\n return entitlements;\n }\n // fall back to use info from OneID\n if (oneId && !isEmpty(oneId.data) && oneId.data.entitlements && oneId.data.entitlements.length) {\n entitlements = oneId.data.entitlements\n .filter(({ digitalAssetName }) => digitalAssetName === 'ESPNPLUS')\n .map(({ digitalAssetSourceName }) => digitalAssetSourceName);\n }\n return entitlements;\n }\n);\n\nexport const oneIdTokenSelector = createSelector(\n oneIdSelector,\n (oneId) => oneId && oneId.data && oneId.data.token\n);\n\nexport const oneIdEntitlementsParamsSelector = createSelector(\n oneIdEntitlementsSelector,\n (oneIdEntitlements) => oneIdEntitlements\n);\n\nfunction convertGender(gender) {\n return {\n 1: 'M',\n 2: 'F'\n }[gender] || 'not set';\n}\n\nexport const oneIdAnalyticsSelector = createSelector(\n fanSelector,\n oneIdSelector,\n (fan, oneId) => {\n const { data } = oneId || {};\n const swid = fan.id || (typeof document !== 'undefined' && cookie.get('SWID'));\n const unid = fan.id || (typeof document !== 'undefined' && cookie.get('UNID'));\n const tracking = { swid, unid };\n if (!isEmpty(data)) {\n const { profile: { status, gender = '', dateOfBirth = '' } = {} } = data;\n tracking.registrationtype = 'espn';\n if (status) {\n tracking.loginstatus = `Registered:Logged in ${status}`;\n }\n tracking.gender = convertGender(gender);\n if (dateOfBirth) {\n tracking.birthage = dateOfBirth.slice(0, 4);\n }\n }\n return tracking;\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/oneIdSelector.js","import { PropTypes } from 'react';\nimport { ContentType, ContentStatus, SourceType } from 'enums';\n\nconst { string, number, bool, array, object, shape, oneOf, arrayOf, oneOfType } = PropTypes;\n\nconst contentStatuses = Object.keys(ContentStatus).map(key => ContentStatus[key]);\n\nexport const bootstrapPropTypes = shape({\n version: string,\n env: string,\n bam: shape({\n sdkHost: string,\n env: string,\n playerVersion: string\n }),\n player: shape({\n logos: object\n }),\n syndicatedPlayer: shape({\n gatedAll: bool,\n gatedIE: bool\n }),\n preRoll: shape({\n editions: object\n }),\n adobePass: shape({\n preauthorizeNetworks: array,\n preauthorizeNetworksEnabled: bool\n })\n});\n\nexport const entitlementsPropTypes = shape({\n entitled: bool\n});\n\nexport const packagesPropTypes = array;\n\nexport const sourcePropTypes = shape({\n id: string,\n name: string,\n type: oneOf(Object.keys(SourceType).map(key => SourceType[key])),\n origination: string\n});\n\nexport const linksPropTypes = shape({\n play: string,\n web: string\n});\n\nexport const streamPropTypes = shape({\n id: string,\n name: string,\n status: oneOf(contentStatuses),\n duration: string,\n entitlements: entitlementsPropTypes,\n packages: packagesPropTypes,\n source: sourcePropTypes,\n score: number,\n authTypes: array,\n adobeRSS: string,\n links: linksPropTypes,\n blackoutText: string\n});\n\nexport const eventPropTypes = shape({\n type: string,\n gameState: string,\n teamOneName: string,\n teamTwoName: string,\n teamTwoRank: number,\n teamOneScore: string,\n teamTwoScore: string,\n teamOneIsWinner: bool,\n teamTwoIsWinner: bool,\n statusTextOne: string\n});\n\n// product content id is currently number\nexport const contentPropTypes = shape({\n id: oneOfType([string, number]),\n guid: string,\n type: oneOf(Object.keys(ContentType).map(key => ContentType[key])),\n status: oneOf(contentStatuses),\n name: string,\n subtitle: string,\n imageHref: string,\n date: string,\n shortDate: string,\n utc: string,\n time: string,\n score: number,\n streams: arrayOf(streamPropTypes),\n event: eventPropTypes,\n description: string,\n iconHref: string,\n blackoutText: string,\n // To be added\n duration: string\n});\n\nexport const bucketMetadataPropTypes = shape({\n totalCount: number,\n displayCount: number,\n scored: bool,\n grouped: bool\n});\n\nexport const bucketLinksPropTypes = shape({\n self: string,\n web: string\n});\n\nexport const bucketPropTypes = shape({\n id: number,\n name: string,\n type: string,\n style: string,\n metadata: bucketMetadataPropTypes,\n links: bucketLinksPropTypes,\n contents: arrayOf(contentPropTypes)\n});\n\nexport default {\n bootstrap: bootstrapPropTypes,\n source: sourcePropTypes,\n links: linksPropTypes,\n stream: streamPropTypes,\n content: contentPropTypes,\n bucketMetadata: bucketMetadataPropTypes,\n bucketLinks: bucketLinksPropTypes,\n bucket: bucketPropTypes\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/PropTypes.js","import { createSelector } from 'reselect';\n\nconst bootstrapSelector = ({ app = {} }) => {\n const { bootstrap = {} } = app;\n return bootstrap;\n};\n\nexport default createSelector(bootstrapSelector, (bootstrap) => bootstrap);\n\nexport const espnPlayerSrcFilesSelector = createSelector(\n bootstrapSelector,\n (bootstrap) => {\n const { player = {} } = bootstrap;\n return {\n espnPlayerJsUrl: player['espn-web-player-js-url'],\n espnPlayerCssUrl: player['espn-web-player-css-url']\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/bootstrapSelector.js","exports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _deepEqual = require(\"deep-equal\");\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n return String(str).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props[property]) {\n return props[property];\n }\n }\n return null;\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, \"title\");\n var innermostTemplate = getInnermostProperty(propsList, \"titleTemplate\");\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, \"defaultTitle\");\n\n return innermostTitle || innermostDefaultTitle || \"\";\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, \"onChangeClientState\") || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[_HelmetConstants.TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n return typeof props[tagName] !== \"undefined\";\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n document.title = title || document.title;\n updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var htmlTag = document.getElementsByTagName(tagName)[0];\n var helmetAttributeString = htmlTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n htmlTag.setAttribute(attribute, value);\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n htmlTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n htmlTag.removeAttribute(HELMET_ATTRIBUTE);\n } else {\n htmlTag.setAttribute(HELMET_ATTRIBUTE, helmetAttributes.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(\"head\");\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === \"innerHTML\") {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === \"cssText\") {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateHtmlAttributesAsString = function generateHtmlAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes) {\n var attributeString = generateHtmlAttributesAsString(attributes);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(title) + \"</\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(title) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === \"innerHTML\" || attribute === \"cssText\");\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute]) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = [_HelmetConstants.TAG_NAMES.NOSCRIPT, _HelmetConstants.TAG_NAMES.SCRIPT, _HelmetConstants.TAG_NAMES.STYLE].indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n }, \"\");\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n // assigning into an array to define toString function on it\n var initProps = _defineProperty({\n key: title\n }, HELMET_ATTRIBUTE, true);\n var props = Object.keys(attributes).reduce(function (obj, key) {\n obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n\n return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var mappedTag = _defineProperty({\n key: i\n }, HELMET_ATTRIBUTE, true);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === \"innerHTML\" || mappedAttribute === \"cssText\") {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return _react2.default.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags) {\n switch (type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes);\n }\n };\n case _HelmetConstants.TAG_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return tags;\n },\n toString: function toString() {\n return generateHtmlAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var htmlAttributes = _ref.htmlAttributes,\n title = _ref.title,\n titleAttributes = _ref.titleAttributes,\n baseTag = _ref.baseTag,\n metaTags = _ref.metaTags,\n linkTags = _ref.linkTags,\n scriptTags = _ref.scriptTags,\n noscriptTags = _ref.noscriptTags,\n styleTags = _ref.styleTags;\n return {\n htmlAttributes: getMethodsForTag(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes),\n title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }),\n base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags),\n link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n _inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n _classCallCheck(this, HelmetWrapper);\n\n return _possibleConstructorReturn(this, (HelmetWrapper.__proto__ || Object.getPrototypeOf(HelmetWrapper)).apply(this, arguments));\n }\n\n _createClass(HelmetWrapper, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return !(0, _deepEqual2.default)(this.props, nextProps);\n }\n }, {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(Component, this.props);\n }\n }], [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n set: function set(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n /**\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {String} title: \"Title\"\n * @param {String} defaultTitle: \"Default Title\"\n * @param {String} titleTemplate: \"MySite.com - %s\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div{ display: block; color: blue; }\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n */\n\n }]);\n\n return HelmetWrapper;\n }(_react2.default.Component), _class.propTypes = {\n htmlAttributes: _react2.default.PropTypes.object,\n title: _react2.default.PropTypes.string,\n defaultTitle: _react2.default.PropTypes.string,\n titleTemplate: _react2.default.PropTypes.string,\n titleAttributes: _react2.default.PropTypes.object,\n base: _react2.default.PropTypes.object,\n meta: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n link: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n script: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n noscript: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n style: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),\n onChangeClientState: _react2.default.PropTypes.func\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n htmlAttributes: {},\n title: \"\",\n titleAttributes: {},\n baseTag: [],\n metaTags: [],\n linkTags: [],\n scriptTags: [],\n noscriptTags: [],\n styleTags: []\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n htmlAttributes: getAttributesFromPropsList(_HelmetConstants.TAG_NAMES.HTML, propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(\"titleAttributes\", propsList),\n baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n onChangeClientState: getOnChangeClientState(propsList)\n };\n};\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n var htmlAttributes = newState.htmlAttributes,\n title = newState.title,\n titleAttributes = newState.titleAttributes,\n baseTag = newState.baseTag,\n metaTags = newState.metaTags,\n linkTags = newState.linkTags,\n scriptTags = newState.scriptTags,\n noscriptTags = newState.noscriptTags,\n styleTags = newState.styleTags,\n onChangeClientState = newState.onChangeClientState;\n\n\n updateAttributes(\"html\", htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nexports.default = Helmet(HelmetSideEffects);\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-helmet/lib/Helmet.js\n// module id = 30\n// module chunks = 1","/**\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\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/ExecutionEnvironment.js\n// module id = 31\n// module chunks = 1","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArray.js\n// module id = 32\n// module chunks = 1","/* jshint node:true */\n'use strict';\n\n// Date comparison taken from\n// http://stackoverflow.com/questions/492994/compare-two-dates-with-javascript\n\nconst moment = require('moment-timezone');\nconst selectn = require('selectn');\n\n// date time formatting related settings\nconst dateTime = {\n 'dateFormats': {\n 'time1': '',\n 'date1': 'D MMM, YYYY',\n 'date2': 'D/M/YYYY',\n 'date3': 'DD/MM/YYYY',\n 'date4': 'DDMMYYYY',\n 'date5': 'Do MMMM YYYY',\n 'date6': 'dddd, Do MMMM YYYY',\n 'date7': 'ddd, D MMM YYYY',\n 'date8': 'D/M',\n 'date9': 'ddd',\n 'date10': 'dddd, MMMM Do',\n 'date11': 'MMMM YYYY',\n 'date12': 'YYYYMMDD',\n 'date13': 'MMMM Do, YYYY',\n 'date14': 'M/D',\n 'date15': 'dddd, D [de] MMMM', // Brazil Edition\n 'date16': 'dddd, Do MMMM',\n 'dateTime1': 'h:mm A, MMMM D, YYYY',\n 'dateTime2': 'h:mm A',\n 'dateTime3': 'H:mm',\n 'dateTime4': 'MM/DD/YY HH:mm z',\n 'dateTime5': 'dddd, h:mm A',\n 'dateTime6': 'M/D h:mm A',\n 'dateTime7': 'dddd, MMMM DD YYYY - hh:mm A'\n },\n 'dayNamesLong': 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '),\n 'dayNamesMedium': 'Sun Mon Tue Wed Thu Fri Sat'.split(' '),\n 'dayNamesShort': 'Su Mo Tu We Th Fr Sa'.split(' '),\n 'monthNamesLong': 'January February March April May June July August September October November December'.split(' '),\n 'monthNamesShort': 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ')\n};\n\nexport default {\n\n getTimezone: function() {\n return moment.tz.guess() || 'UTC';\n },\n\n dateToKey: function (oDate) {\n return this.dateFormat(oDate, 'date12')\n },\n\n paramToCalendarDatesString: function (sParam) {\n if (!sParam) {\n return sParam;\n }\n return `${sParam.substr(0, 4)}-${sParam.substr(4, 2)}-${sParam.substr(6, 2)}`;\n },\n\n paramToDate: function (sParam) {\n const dateStr = this.paramToCalendarDatesString(sParam);\n\n if (!dateStr) {\n return dateStr;\n }\n\n return moment(dateStr).toDate();\n },\n\n dateDayNamesMedium: function () {\n return dateTime.dayNamesMedium\n },\n\n dateFormat: function (ISODate, dateFormat, showTimezone) {\n if (ISODate === undefined) {\n return ISODate\n }\n\n if (dateFormat === undefined) {\n dateFormat = 'date6'\n }\n\n showTimezone = showTimezone || false;\n\n const formatsMap = dateTime.dateFormats;\n const utcMoment = moment(ISODate);//, moment.ISO_8601\n const localMoment = moment(utcMoment.utc().toDate());\n\n dateFormat = formatsMap[dateFormat];\n\n const dateString = localMoment.format(dateFormat);\n //console.log(localMoment.format('z'))\n //window.moment().tz(window.jstz.determine().name()).format('z')\n //if ($(element).hasClass('time') && showTimezone === 'true') {\n // var currentTimezone = espn_ui.Helpers.timezones.getCurrentTimezone()\n // dateString += ' ' + espn_ui.Behaviors.date_timezone.replace(currentTimezone)\n //}\n\n return dateString\n },\n\n /**\n * Returns a formatted date string for events following the criteria below:\n * 1) Same day - 5:00 PM\n * 2) Next day - Tomorrow, 5:00 PM\n * 3) Between 2-6 days - Thursday, 5:00 PM\n * 4) past date & 7+ days - 5/29, 5:00 PM\n *\n * @param {ISODate} - Standardized date object\n * @param {dateFormat} - Format of output string\n * @param {timeZone} - Optional user timezone\n * @param {nextDayString} - i18n string representation for the the next day\n */\n eventDateFormat: function (ISODate, dateFormat, timeZone, nextDayString = 'Tomorrow') {\n if (ISODate === undefined) {\n return ISODate;\n }\n\n const { dateFormats } = dateTime;\n const currentDateFormat = dateFormat || 'dateTime2';\n const eventDate = timeZone ? moment.tz(ISODate, timeZone) : moment(ISODate);\n const momentInstance = timeZone ? moment.tz(timeZone) : moment();\n const tomorrow = momentInstance.clone().add(1, 'day');\n const sevenDaysFromToday = momentInstance.clone().add(7, 'days');\n const eventDateFormatted = eventDate.format(dateFormats[currentDateFormat]);\n\n // Same day event\n if (eventDate.isSame(momentInstance, 'day')) {\n return eventDateFormatted; // Output: 5:00 PM\n }\n // Tomorrow\n if (eventDate.isSame(tomorrow, 'day')) {\n return `${nextDayString}, ${eventDateFormatted}`; // Output: Tomorrow, 5:00 PM; i18n supported\n }\n // 2-6 day range\n if (eventDate.isAfter(tomorrow, 'day') && eventDate.isBefore(sevenDaysFromToday, 'day')) {\n return eventDate.format(dateFormats['dateTime5']); // Output: Friday, 5:00 PM\n }\n // Past event and 7+ days (base case)\n return eventDate.format(dateFormats['dateTime6']); // Output: 06/13 5:00 PM\n },\n\n /**\n * Converts the date in d to a date-object using moment-timezone\n * @param {String/object} d date in string/Object\n * @return {Object} date-object\n */\n dateToObject: function (d) {\n return moment(d).toDate()\n },\n\n /**\n * Compare two dates (could be of any type supported by the convert\n * function above) and returns:\n * -1 : if a < b\n * 0 : if a = b\n * 1 : if a > b\n * NaN : if a or b is an illegal date\n * NOTE: The code inside isFinite does an assignment (=).\n *\n * @param {String/object} a date in string/Object\n * @param {String/object} b date in string/Object\n * @return {Number} as described above\n **/\n dateCompare: function (a, b) {\n return (\n isFinite(a = this.dateToObject(a).valueOf()) &&\n isFinite(b = this.dateToObject(b).valueOf()) ?\n (a > b) - (a < b) :\n NaN\n )\n },\n\n /**\n * Checks if date in d is between dates in start and end.\n * Returns a boolean or NaN:\n * true : if d is between start and end (inclusive)\n * false : if d is before start or after end\n * NaN : if one or more of the dates is illegal.\n * NOTE: The code inside isFinite does an assignment (=).\n *\n * @param {String/object} d date in string/Object\n * @param {String/Object} start startdate\n * @param {String/Object} end startdate\n * @return {Boolean/NaN} As described above\n **/\n dateInRange: function (d, start, end) {\n return (\n isFinite(d = this.dateToObject(d).valueOf()) &&\n isFinite(start = this.dateToObject(start).valueOf()) &&\n isFinite(end = this.dateToObject(end).valueOf()) ?\n start <= d && d <= end :\n NaN\n )\n },\n\n /**\n * Convert date/time as per the passed options of timezone and formatting\n * @param {String} d date String in ISO 8601 format\n * @param {Object} options date formatting options\n * @return {String} formatted time as per the options\n */\n convertDateTime: function (d, options) {\n // default return type\n let displayTime = ''\n\n /**\n * default formatting options\n * UTC as time zone - 'Europe/London'\n * 24HR time format - HH:mm z\n */\n let timeZone = 'Europe/London'\n let timeFormat = 'h:mm A'\n // Override default options if options input has valid properties\n if (typeof selectn('timeZone', options) !== 'undefined') {\n timeZone = options.timeZone\n }\n\n if (typeof selectn('timeFormat', options) !== 'undefined') {\n timeFormat = options.timeFormat\n }\n\n if (typeof selectn('dateFormat', options) !== 'undefined') {\n const formatsMap = dateTime.dateFormats;\n const { dateFormat } = options;\n if (formatsMap[dateFormat]) {\n timeFormat = formatsMap[dateFormat];\n }\n }\n\n // Convert to moment object\n let startTime = moment(d)\n // Format the date only if valid\n if (startTime.isValid() === true) {\n displayTime = startTime.tz(timeZone).format(timeFormat)\n //console.log('original, convertDateTime', d, displayTime)\n }\n return displayTime\n },\n\n getTimezoneParam: function() {\n const tz = moment().utcOffset();\n const hour = Math.abs(Math.floor(tz / 60));\n const min = Math.abs(tz % 60);\n return `UTC${tz >= 0 ? '+' : '-'}${('0' + hour).slice(-2)}${('0' + min).slice(-2)}`;\n },\n\n /**\n * Convert date string from v1/listings API to the valid ISO string\n * @param {String} str A date string to convert\n * @return {String} ISO 8601 date string\n */\n toISOString: function (str = '') {\n return str.replace(/GMT$/, 'Z')\n .replace(/EST$/, '-05:00')\n .replace(/EDT$/, '-04:00');\n },\n\n /**\n * Convert date to ISO string with minute precision\n * @param {Date} Standardized date object\n * @return {String} ISO 8601 date string with minute precision\n */\n getISOStringWithMinPrecision: function (date = new Date()) {\n return date.toISOString().replace(/:\\d+\\.\\d+Z$/, '');\n },\n\n /**\n * Formats a standardized date by the format specified with optional timezone\n * @param {date} - Standardized date object\n * @param {dateFormat} - Format of output string\n * @param {timeZone} - Optional user timezone\n */\n getDateTimeString: function(date, dateFormat, timeZone, type, nextDayString) {\n if (type === 'schedule-event') {\n return this.eventDateFormat(date, dateFormat, timeZone, nextDayString);\n }\n\n if (timeZone) {\n return this.convertDateTime(date, { timeZone, dateFormat });\n }\n return this.dateFormat(date, dateFormat);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/dateFormat.js","import { Storage, ContentType, AdobePass } from 'enums';\nimport {\n getOmnitureAuthData,\n getOmnitureEntitlementsData,\n getOmniturePageData,\n getOmniturePageName,\n getVideoTypeFromContent,\n getVideoTypeFromStream,\n getOmnitureUserTrackingData\n} from './format';\nimport { dotComNielsenData } from 'constants';\nconst { METADATA: { UPSTREAM_USERID } } = AdobePass;\n\n// nielsen uses this as well to format pageName and videoType\nexport { \n getOmniturePageName, \n getVideoTypeFromContent, \n getVideoTypeFromStream, \n getOmnitureQuery,\n getOmnitureUserTrackingData\n} from './format';\n\nexport const OMNITURE_CONSTANTS = {\n Channel: 'web',\n Site: 'watchespn',\n ReportSuite: 'wdgespcom',\n ReportSuiteQA: 'wdgespncomdev',\n ReportSuiteIntl: 'wdgesp360international',\n ReportSuiteApp: 'wdgesp360netunoven',\n TrackingServer: 'w88.espn.com',\n SecureTrackingServer: 'sw88.espn.com'\n};\n\n// will be injected by the `init` call\nlet baseOmnitureData;\nlet initialized = false;\nlet initializing = false;\nlet trackingQueue = [];\nconst { Analytics: { IS_AUTHENTICATING } } = Storage;\n\n/**\n * This function calls the actual omniture page tracking\n */\nfunction _trackPage(omnitureData = {}, bootstrap = {}) {\n if (!Object.keys(omnitureData).length) {\n return;\n }\n if (window.espn && window.espn.track) {\n const espnTrack = window.espn.track;\n if (!initialized && espnTrack.init && espnTrack.trackPage) {\n initialized = true;\n initializing = true;\n\n const nielsenData = espnTrack.data && espnTrack.data.nielsen;\n espnTrack.init({ omniture: omnitureData, nielsen: nielsenData || dotComNielsenData });\n // espn.track.init() invokes async data fetch which we won't know when to complete\n // FIXME: we need to know when exactly all the remote data is ready w/o arbitrary timeout.\n setTimeout(() => {\n initializing = false;\n try {\n trackingQueue.forEach(queuedData => {\n espnTrack.trackPage(queuedData);\n });\n // TODO: DTC - remove this once https://code.espn.com/webdev/score/pull/9035 lands\n const { bam: { env, playerdomain: playerdomainArg } = {} } = bootstrap;\n if (window._sf_async_config && playerdomainArg) {\n let playerdomain = playerdomainArg;\n if (\n (env === 'beta' || /bamenv=beta($|[^_])/.test(window.location.search)) &&\n playerdomain.indexOf('espnqa') > -1\n ) {\n playerdomain = playerdomain.replace('espnqa', 'espn');\n }\n window._sf_async_config.playerdomain = playerdomain;\n }\n } catch (err) {\n console.error(err);\n }\n trackingQueue = [];\n }, 2000);\n } else if (initializing) {\n trackingQueue.push(omnitureData);\n } else if (espnTrack.trackPage) {\n espnTrack.trackPage(omnitureData);\n }\n } else {\n trackByIframe('page', omnitureData);\n }\n}\n\n/**\n * This function calls the actual omniture link tracking\n */\nfunction _trackLink(data = {}) {\n if (window.espn && window.espn.track && window.espn.track.clear && window.espn.track.trackLink) {\n window.espn.track.clear();\n const linkData = { ...data, link: 'true' };\n window.espn.track.userClicked = true;\n window.espn.track.trackLink(linkData);\n } else {\n trackByIframe('link', data);\n }\n}\n\nexport function trackByIframe(type, data) {\n const baseUrl = window.location.protocol === 'https:' ?\n 'https://secure.espn.com' : 'http://espn.com';\n\n data.type = type;\n data.content = data.contentType;\n data.source = data.site;\n data.pagename = data.pageName;\n\n const hash = Object.keys(data).reduce((acc, key) => (\n `${acc}${acc ? '&' : ''}${key}=${encodeURIComponent(data[key])}`\n ), '');\n const trackingUrl = `${baseUrl}/core/tracking/iframe#${hash}`;\n const id = 'espn-tracking-iframe';\n let iframe = document.getElementById(id);\n if (iframe && iframe.parentNode) {\n iframe.parentNode.removeChild(iframe);\n }\n iframe = document.createElement('iframe');\n iframe.id = id;\n iframe.src = trackingUrl;\n iframe.width = '0';\n iframe.height = '0';\n iframe.frameBorder = '0';\n document.body.appendChild(iframe);\n}\n\nexport function init(constants) {\n baseOmnitureData = {\n site: constants.Site,\n channel: constants.Channel,\n account: constants.ReportSuite,\n premium: 'premium-no',\n eVar1: 'DoNotSet',\n eVar12: constants.Edition,\n prop1: 'watchespn',\n prop16: constants.Edition\n };\n}\n\nexport function clearTrackingData() {\n localStorage.removeItem(IS_AUTHENTICATING);\n}\n\nexport function trackMvpdPicker({ isDomestic }) {\n const mvpdPickerData = {\n events: 'event3,event49,event67',\n pageName: 'mvpd picker',\n eVar13: 'mvpd picker',\n prop4: 'authentication',\n prop5: 'authentication',\n eVar11: `authentication:${baseOmnitureData.site}:authentication`,\n };\n const omnitureData = {\n ...baseOmnitureData,\n ...mvpdPickerData,\n ...getOmnitureAuthData([], {}, isDomestic)\n };\n _trackPage(omnitureData);\n}\n\nexport function trackProviderSelect({ userAuth, provider, entitlementsTracking, isDomestic }) {\n const providerName = provider.package ? provider.abbreviation : provider.name;\n const providerChosen = `provider chosen:${providerName}`;\n const providerSelectData = {\n events: 'event72',\n pev2: providerName,\n prop9: providerChosen,\n eVar74: providerChosen\n };\n const omnitureData = {\n ...baseOmnitureData,\n ...getOmnitureAuthData(userAuth, provider, isDomestic),\n ...getOmnitureEntitlementsData(entitlementsTracking),\n ...providerSelectData\n };\n _trackLink(omnitureData);\n localStorage.setItem(IS_AUTHENTICATING, 'true');\n}\n\nexport function trackAuthenticationComplete({ userAuth, provider, entitlementsTracking, isDomestic }) {\n const isAuthenticating = localStorage.getItem(IS_AUTHENTICATING);\n if (isAuthenticating === 'true' || isAuthenticating === true) {\n const authenticationComplete = 'authentication complete';\n const authenticationCompleteData = {\n events: 'event68',\n pev2: authenticationComplete,\n prop9: authenticationComplete,\n eVar74: authenticationComplete\n };\n const omnitureData = {\n ...baseOmnitureData,\n ...getOmnitureAuthData(userAuth, provider, isDomestic),\n ...getOmnitureEntitlementsData(entitlementsTracking),\n ...authenticationCompleteData\n };\n _trackLink(omnitureData);\n clearTrackingData();\n }\n}\n\nexport function trackAuthorizationStart({ userAuth, provider, entitlementsTracking, isDomestic }) {\n const authorizationStart = 'authorization start';\n const authorizationStartData = {\n events: 'event69',\n pev2: authorizationStart,\n prop9: authorizationStart,\n eVar74: authorizationStart\n };\n const omnitureData = {\n ...baseOmnitureData,\n ...getOmnitureAuthData(userAuth, provider, isDomestic),\n ...getOmnitureEntitlementsData(entitlementsTracking),\n ...authorizationStartData\n };\n setTimeout(() => {\n _trackLink(omnitureData);\n }, 1000);\n}\n\nexport function trackAuthorizationComplete({ userAuth, provider, entitlementsTracking, isDomestic }) {\n const authorizationComplete = 'authorization complete';\n const authorizationCompleteData = {\n events: 'event70',\n pev2: authorizationComplete,\n prop9: authorizationComplete,\n eVar74: authorizationComplete\n };\n const omnitureData = {\n ...baseOmnitureData,\n ...getOmnitureAuthData(userAuth, provider, isDomestic),\n ...getOmnitureEntitlementsData(entitlementsTracking),\n ...authorizationCompleteData\n };\n setTimeout(() => {\n _trackLink(omnitureData);\n }, 1000);\n\n}\n// https://espnjira.disney.com/browse/WEWEB-1174\nexport function trackSearch({\n fromHero = false,\n searchTerm = '',\n isSuggestion = false,\n isViewAllResults = false,\n type,\n status,\n entitlementsTracking\n}) {\n const context = (fromHero === true ? 'search-hero' : 'search-page');\n const searchType = isSuggestion ? 'pre' : 'man';\n let submitMethod = 'submit';\n if (isSuggestion) {\n submitMethod = 'suggested';\n if (isViewAllResults) {\n submitMethod = 'view+all+results'\n } else if (type === ContentType.VOD) {\n submitMethod = 'suggested-vod-clip';\n } else if (type && status) {\n submitMethod = `suggested-${status}-${type}`;\n }\n }\n const searchTrackData = {\n events: 'event2',\n eVar4: `${searchType}:${searchTerm}`,\n prop7: `${searchType}:${searchTerm}`,\n eVar5: `${submitMethod}`,\n eVar74: context,\n prop9: context\n };\n const omnitureData = {\n ...baseOmnitureData,\n ...searchTrackData,\n ...getOmnitureEntitlementsData(entitlementsTracking)\n };\n _trackLink(omnitureData);\n}\n\nexport function trackUntimelyLogout(actual = 'unknown', expected = 'unknown', provider, entitlementsTracking) {\n const untimelyLogout = 'Untimely Logout';\n\n let providerName = provider.name;\n let providerAbbreviation = provider.abbreviation;\n if (provider.package) {\n providerName = provider.abbreviation;\n providerAbbreviation = provider.package.name;\n }\n\n const authnData = {\n eVar17: providerName,\n prop42: providerName,\n eVar32: providerAbbreviation,\n prop43: providerAbbreviation\n };\n\n const untimelyLogoutData = {\n events: 'event123',\n eVar37: navigator.userAgent,\n eVar74: untimelyLogout,\n eVar81: `actual:${actual}|expected:${expected}`,\n prop37: navigator.userAgent,\n prop9: untimelyLogout\n };\n const omnitureData = {\n ...baseOmnitureData,\n ...authnData,\n ...untimelyLogoutData,\n ...getOmnitureEntitlementsData(entitlementsTracking)\n };\n _trackLink(omnitureData);\n}\n\nexport function trackLeavePageAlertShown() {\n const leavePageAlertShown = 'Leave Page Alert Shown';\n const leavePageData = {\n events: 'event120',\n eVar74: leavePageAlertShown,\n eVar72: leavePageAlertShown,\n prop9: leavePageAlertShown\n };\n const omnitureData= {\n ...baseOmnitureData,\n ...leavePageData\n };\n _trackLink(omnitureData);\n}\n\nexport function trackSocialShareClick(content, page, provider, socialPlatform, userAuth, entitlementsTracking, isDomestic) {\n const authData = getOmnitureAuthData(userAuth, provider, isDomestic);\n\n const socialShareValue = `social share:${getOmniturePageName(page)}:${socialPlatform}:${content.name}`;\n\n const omnitureData = {\n events: 'event62',\n pev2: socialShareValue,\n prop9: socialShareValue,\n eVar72: `social share:${socialPlatform}:${content.type}`,\n eVar74: socialShareValue,\n ...authData,\n ...getOmnitureEntitlementsData(entitlementsTracking)\n };\n\n _trackLink(omnitureData);\n}\n\nexport function trackReturnAfterLeavePageAlert() {\n const returnAfterLeavePageAlert = 'Return After Leave Page Alert';\n const leavePageData = {\n events: 'event121',\n eVar74: returnAfterLeavePageAlert,\n eVar72: returnAfterLeavePageAlert,\n prop9: returnAfterLeavePageAlert\n };\n const omnitureData= {\n ...baseOmnitureData,\n ...leavePageData\n };\n _trackLink(omnitureData);\n}\n\nexport function trackPage({ app, page, provider, userAuth, entitlementsTracking, promoTracking, adobePassMetadata = {}, isDomestic }) {\n const lang = (app.lang || '').toLowerCase();\n let { [UPSTREAM_USERID]: usid } = adobePassMetadata;\n const pageTrackData = {\n events: 'event3',\n prop17: lang,\n eVar9: lang,\n eVar85: usid\n };\n\n if (promoTracking) {\n pageTrackData.events = 'event3,prodView,event131';\n pageTrackData.products = promoTracking;\n }\n\n const omnitureData = {\n ...baseOmnitureData,\n ...getOmniturePageData(page),\n ...getOmnitureAuthData(userAuth, provider, isDomestic),\n ...getOmnitureEntitlementsData(entitlementsTracking),\n ...pageTrackData\n };\n _trackPage(omnitureData, app.bootstrap);\n}\n\nexport function trackActivatePage(lang, device = 'unknown') {\n const trackingLang = lang.toLowerCase();\n const pageTrackData = {\n events: 'event3,event90',\n prop5: device,\n prop17: trackingLang,\n eVar9: trackingLang,\n eVar11: `activate:watchespn:${device}`,\n pageName: `${device}:activate`\n };\n\n const omnitureData = {\n ...baseOmnitureData,\n ...pageTrackData\n };\n _trackPage(omnitureData);\n}\n\nexport function trackActivateCodeInvalid(device = 'unknown', provider = {}) {\n const { abbreviation: mvpdId, name: mvpdName } = provider;\n const invalidCode = `${device}:activate:invalidcode`;\n const invalidCodeData = {\n events: 'event90',\n prop9: invalidCode,\n eVar74: invalidCode,\n eVar32: mvpdId,\n prop43: mvpdId,\n eVar17: mvpdName,\n prop42: mvpdName,\n eVar79: `${device}:activationfail`\n\n };\n const omnitureData = {\n ...baseOmnitureData,\n ...invalidCodeData\n };\n _trackLink(omnitureData);\n}\n\nexport function trackActivateSuccess(device = 'unknown', provider = {}) {\n const { abbreviation: mvpdId, name: mvpdName } = provider;\n const success = `${device}:activate:success`;\n const successData = {\n pageName: `${device}:activate`,\n events: 'event90',\n eVar11: `activate:watchespn:${device}`,\n prop9: success,\n eVar74: success,\n eVar32: mvpdId,\n prop43: mvpdId,\n eVar17: mvpdName,\n prop42: mvpdName,\n eVar79: `${device}:activationsuccess`\n };\n const omnitureData = {\n ...baseOmnitureData,\n ...successData\n };\n _trackPage(omnitureData);\n}\n\n// prop9 translates to c9, and eVar74 translates to v74\nexport function trackEspnPlayerOnAdSkipped() {\n const omnitureData = {\n prop1: 'watchespn',\n prop9: 'preroll+ad+skip',\n eVar74: 'preroll+ad+skip',\n pev2: 'Preroll Ad Skip',\n };\n \n _trackLink(omnitureData);\n}\n\n\n// WEBPACK FOOTER //\n// ./app/lib/omniture/index.js","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObject.js\n// module id = 35\n// module chunks = 1","/* eslint-disable no-use-before-define, no-return-assign */\nimport Promise from 'bluebird';\nimport cookie from 'cookie-cutter';\nimport { AuthTypes } from 'enums';\nimport { SUB_KEY, BAM_PROXY_IFRAME_ID, SESSION_TOKEN_KEY, USER_TRACKING_KEY } from 'constants';\nimport canUseDOM from 'lib/util/canUseDOM';\nimport * as perf from 'lib/util/perf';\nimport {\n getGuest as oneIdGetGuest,\n launchLogin as oneIdLaunchLogin,\n launchReauth as oneIdLaunchReauth,\n forceTokenRefresh as oneIdForceTokenRefresh,\n logout as oneIdLogout,\n on as oneIdOn\n} from 'lib/oneId';\nimport { createSDKWrapper } from 'common/actions/appActions';\nimport {\n createGetBAMAuthenticationInfoAction,\n createGetBAMSessionTokenAction,\n createGetUserTrackingAction\n} from 'common/actions/authenticationActions';\nimport { hasPageShellSelector } from 'common/selectors/appSelector';\nimport {\n oneIdLoggedInSelector,\n oneIdEntitlementsSelector\n} from 'common/selectors/oneIdSelector';\nimport { remove } from 'lib/util/localStorage';\nimport {\n bamSessionTokenSelector,\n superBundleSelector,\n bamSubReadySelector\n} from 'common/selectors/authenticationSelectors';\nimport { hasTDA } from 'lib/auth';\n\nconst SWID_RE = /^\\{[\\w-]+\\}/;\n\nexport const START_CHECK_SWID_AUTHENTICATION = 'START_CHECK_SWID_AUTHENTICATION';\nexport const COMPLETE_CHECK_SWID_AUTHENTICATION = 'COMPLETE_CHECK_SWID_AUTHENTICATION';\nexport const START_CHECK_ONEID_AUTHENTICATION = 'START_CHECK_ONEID_AUTHENTICATION';\nexport const COMPLETE_CHECK_ONEID_AUTHENTICATION = 'COMPLETE_CHECK_ONEID_AUTHENTICATION';\nexport const GET_GUEST = 'GET_GUEST';\nexport const CLEAR_GUEST = 'CLEAR_GUEST';\nexport const LOGIN_START = 'LOGIN_START';\nexport const LOGIN_CLOSED = 'LOGIN_CLOSED';\n\nlet disneyIDReadyPromise;\n\nexport function startSWIDAuthentication() {\n return {\n type: START_CHECK_SWID_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nexport function completeSWIDAuthentication(isAuthenticated, swid) {\n return {\n type: COMPLETE_CHECK_SWID_AUTHENTICATION,\n isAuthenticated,\n swid,\n completeTime: Date.now()\n };\n}\n\nexport function startOneIDAuthentication() {\n return {\n type: START_CHECK_ONEID_AUTHENTICATION,\n startTime: Date.now()\n };\n}\n\nexport function createLoginAction(params) {\n return {\n type: LOGIN_START,\n params\n };\n}\n\nexport function loginClosed() {\n return {\n type: LOGIN_CLOSED\n };\n}\n\nexport function setOneIdData(data) {\n return {\n type: GET_GUEST,\n data,\n completeTime: Date.now()\n };\n}\n\nexport function completeOneIDAuthentication(\n isAuthenticated, entitlements, hasTDAEntitlement, hasSuperBundle, bamSubReady = false\n) {\n return {\n type: COMPLETE_CHECK_ONEID_AUTHENTICATION,\n isAuthenticated,\n entitlements,\n hasSuperBundle,\n bamSubReady,\n hasTDAEntitlement,\n directive: (isAuthenticated === true ? 'add' : 'remove'),\n authType: AuthTypes.BAM,\n completeTime: Date.now()\n };\n}\n\n// TODO: Maybe swid should come from some OneId library instead of the cookie\nexport function checkSWIDAuthentication() {\n return (dispatch) => {\n dispatch(startSWIDAuthentication());\n const swid = cookie.get('SWID');\n const isAuthenticated = SWID_RE.test(swid);\n\n dispatch(completeSWIDAuthentication(isAuthenticated, swid));\n return Promise.resolve(isAuthenticated);\n };\n}\n\nexport function getLoggedInStatus() {\n return (dispatch, getState) => {\n const isLoggedIn = oneIdLoggedInSelector(getState());\n return Promise.resolve(isLoggedIn);\n };\n}\n\nexport function logout() {\n return () => oneIdLogout();\n}\n\nexport function launchLogin(options, params) {\n return (dispatch) => {\n dispatch(createLoginAction(params));\n return oneIdLaunchLogin(options);\n };\n}\n\nexport function launchReauth(options, params) {\n return (dispatch) => {\n dispatch(createLoginAction(params));\n return oneIdLaunchReauth(options);\n };\n}\n\nexport function forceTokenRefresh() {\n return () => oneIdForceTokenRefresh();\n}\n\nexport function getGuest() {\n return (dispatch) => oneIdGetGuest()\n .then((data) => {\n dispatch(setOneIdData(data));\n return data;\n });\n}\n\nexport function clearGuest() {\n return {\n type: CLEAR_GUEST,\n directive: 'remove',\n isAuthenticated: false,\n authType: AuthTypes.BAM,\n completeTime: Date.now()\n };\n}\n\nlet disneyIDReady = false;\nlet transactionId = 0;\n\nexport function checkOneIDAuthentication() {\n return async (dispatch, getState) => {\n perf.markStart('checkOneIDAuthentication');\n dispatch(startOneIDAuthentication());\n const hasPageShell = hasPageShellSelector(getState());\n if (hasPageShell) {\n if (!disneyIDReadyPromise) {\n let data;\n try {\n data = await dispatch(disneyIDReadyAction());\n oneIdOn('refresh', async () => {\n // refresh oneId token in store\n await dispatch(getGuest());\n transactionId += 1;\n // use new oneId token to refresh BAM token by calling SDK Data\n dispatch(createSDKWrapper(\n BAM_PROXY_IFRAME_ID,\n ['geolocation', 'subscriptions', 'sessionToken', 'userTrackingInformation'],\n transactionId\n ));\n });\n oneIdOn('logout', () => {\n remove(SUB_KEY);\n remove(SESSION_TOKEN_KEY);\n remove(USER_TRACKING_KEY);\n dispatch(clearGuest());\n dispatch(createGetBAMAuthenticationInfoAction());\n dispatch(createGetBAMSessionTokenAction());\n dispatch(createGetUserTrackingAction({}));\n dispatch(completeOneIDAuthentication(false, []));\n });\n } catch (err) {\n console.error(err);\n data = await dispatch(getGuest());\n }\n dispatch(setOneIdData(data));\n disneyIDReady = true;\n } else if (!disneyIDReady) {\n return disneyIDReadyPromise;\n } else {\n await dispatch(getGuest());\n }\n } else {\n await dispatch(getGuest());\n }\n const state = getState();\n const isLoggedIn = oneIdLoggedInSelector(state);\n const entitlements = oneIdEntitlementsSelector(state);\n const bamSessionToken = bamSessionTokenSelector(state);\n const hasSuperBundle = superBundleSelector(state);\n const bamSubReady = bamSubReadySelector(state);\n const hasTDAEntitlement = hasTDA(bamSessionToken);\n const isAuthenticated = (entitlements && entitlements.length > 0) || hasTDAEntitlement;\n // TODO: DTC - move this to `createSDKWrapper` action once BAM side can sync user login state with OneID\n dispatch(completeOneIDAuthentication(isAuthenticated, entitlements, hasTDAEntitlement, hasSuperBundle, bamSubReady));\n perf.measureAndTime('checkOneIDAuthentication');\n return {\n isLoggedIn,\n entitlements\n };\n };\n}\n\nexport function disneyIDReadyAction() {\n return (dispatch) => {\n perf.markStart('disneyIDReadyAction');\n return disneyIDReadyPromise || (disneyIDReadyPromise = new Promise((resolve, reject) => {\n const timeout = 60 * 1000;\n let userCreated = false;\n let userInitialized = false;\n if (!canUseDOM) {\n reject(new Error('memberservices not available server side'));\n } else if (window.jQuery) {\n window.jQuery(document).one('user.created', () => {\n userCreated = true;\n if (window.espn && window.espn.memberservices && window.espn.memberservices.ready) {\n window.espn.memberservices.ready(() => {\n userInitialized = true;\n console.log('memberservices.ready'); // eslint-disable-line no-console\n });\n }\n console.log('user.created'); // eslint-disable-line no-console\n });\n window.jQuery(document).one('user.initialized', () => {\n userInitialized = true;\n console.log('user.initialized'); // eslint-disable-line no-console\n });\n const userParsedTimer = window.setTimeout(async () => {\n perf.measureAndTime('disneyIDReadyAction');\n if (userCreated && userInitialized) {\n const guest = await dispatch(getGuest());\n console.log('`user.parsed` timeout, retrieving guest'); // eslint-disable-line no-console\n perf.measureAndTime('disneyIDReadyAction');\n resolve(guest);\n return;\n }\n reject(new Error('user.parsed timeout'));\n }, timeout);\n window.jQuery(document).one('user.parsed', (event, guest) => {\n console.log('user.parsed'); // eslint-disable-line no-console\n window.clearTimeout(userParsedTimer);\n perf.measureAndTime('disneyIDReadyAction');\n resolve(typeof guest !== 'string' ? guest : undefined);\n });\n } else {\n reject(new Error('jQuery is not available with page shell'));\n }\n }));\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/actions/oneIdActions.js","\"use strict\";\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 */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 37\n// module chunks = 1","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactInstrumentation.js\n// module id = 38\n// module chunks = 1","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_root.js\n// module id = 39\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactReconciler = require('./ReactReconciler');\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactUpdates.js\n// module id = 40\n// module chunks = 1","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/node_modules/warning/browser.js\n// module id = 41\n// module chunks = 1","//\n// const request = require('superagent-bluebird-promise');\n// const cacheModuleConfig = { defaultExpiration: 60 };\n// require('superagent-cache')(request, cacheModuleConfig);\n// module.exports = request;\n\nimport request from 'superagent-bluebird-promise';\nimport SuperAgentCache from 'superagent-cache';\nimport cacheModule from './index';\n\nconst cacheModuleConfig = { defaultExpiration: 60 };\n\nexport default (function () {\n if (process.browser) {\n SuperAgentCache(request, cacheModuleConfig);\n return request;\n }\n SuperAgentCache(request, cacheModule);\n return request;\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/cache/requestCache.js","import config from '../../../config';\n\nconst { httpProxy, noProxy } = config;\nconst noProxyRegEx = (noProxy) ? new RegExp(noProxy) : null;\n\nlet httpProxyAgent = false;\nif (process.browser !== true && httpProxy) {\n const proxyAgent = require('http-proxy-agent');\n httpProxyAgent = new proxyAgent(httpProxy);\n}\n\nexport default (request) => {\n // if there's a proxy agent setup\n if (httpProxyAgent && 'agent' in request) {\n // if there's no noProxy regex or the url does not match the noProxy regex\n // then use the proxy\n if (!noProxyRegEx || noProxyRegEx.test(request.url) === false) {\n request.agent(httpProxyAgent);\n }\n }\n return request\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/requestProxy.js","export function set(key, value, expirationInSec) {\n try {\n const data = { value };\n if (expirationInSec) {\n data.expiration = Date.now() + (expirationInSec * 1000)\n }\n window.localStorage.setItem(key, JSON.stringify(data));\n } catch (err) {\n console.error(err);\n }\n}\n\nexport function get(key) {\n try {\n const value = window.localStorage.getItem(key);\n if (value === null) {\n return undefined;\n }\n const data = JSON.parse(value);\n if (data.expiration && data.expiration < Date.now()) {\n remove(key);\n return undefined;\n }\n return data.value;\n } catch (err) {\n return undefined;\n }\n}\n\nexport function remove(key) {\n try {\n window.localStorage.removeItem(key);\n } catch (err) {\n console.error(err);\n }\n}\n\n\nexport function setSessionItem(key, object) {\n try {\n window.sessionStorage.setItem(key, JSON.stringify(object));\n } catch(err) {\n return undefined;\n }\n}\n\nexport function getSessionItem(key) {\n try {\n const value = window.sessionStorage.getItem(key);\n return value && JSON.parse(value);\n } catch (err) {\n return undefined;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/localStorage.js","export default function streamHasAuthType(stream = {}, authType) {\n if (stream.authTypes && authType) {\n return stream.authTypes.filter((auth) => auth === authType).length > 0\n }\n return false;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/streamHasAuthType.js","import { createSelector } from 'reselect';\n\nconst selectedContentSelector = ({ app }) => app.selectedContent;\n\nexport default createSelector(selectedContentSelector, (selectedContent) => selectedContent);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/selectedContentSelector.js","import { createSelector } from 'reselect';\nimport whitelistSelector from './whitelistSelector';\nimport appSelector, {\n hideNavSelector,\n roadblockSelector,\n playerTechSelector,\n webviewSelector\n} from './appSelector';\nimport routingSelector from './routingSelector';\nimport { Flags } from 'enums';\n\nconst flagsSelector = createSelector(\n hideNavSelector,\n playerTechSelector,\n roadblockSelector,\n (hideNav, playerTech, roadblock) => ({\n hideNav,\n playerTech,\n roadblock: roadblock.toString()\n })\n);\n\nexport const persistentFlagsSelector = createSelector(\n appSelector,\n routingSelector,\n whitelistSelector,\n webviewSelector,\n ({ isMobile }, routing, inWhitelist, isWebview) => {\n // if flags were passed in the URL, persist them\n const { locationBeforeTransitions } = routing;\n // `locationBeforeTransitions` is set to `null` on the server side, so default value assignment doesn't work\n const { pathname = '', query = {} } = locationBeforeTransitions || {};\n\n // take all the query params that are also flags and persist through auth\n let persistentFlags = Object.keys(Flags)\n .reduce((acc, currentFlag) => {\n const queryKey = Flags[currentFlag];\n // if query param is a flag, accumulate it\n if (query[queryKey]) {\n acc[queryKey] = query[queryKey];\n }\n return acc;\n }, {});\n\n if (pathname === '/syndicated/player') {\n persistentFlags = {\n ...persistentFlags,\n type: query.type,\n dates: query.dates\n };\n }\n\n // special case to disable roadblock for those opted in to that experience\n if (isMobile && (inWhitelist || isWebview)) {\n persistentFlags[Flags.ROADBLOCK] = 'false';\n }\n\n return persistentFlags;\n }\n);\n\nexport default flagsSelector;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/flagsSelector.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 48\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactCurrentOwner.js\n// module id = 49\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else if (typeof event.returnValue !== 'unknown') {\n // eslint-disable-line valid-typeof\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (typeof event.cancelBubble !== 'unknown') {\n // eslint-disable-line valid-typeof\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticEvent.js\n// module id = 50\n// module chunks = 1","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArrayLike.js\n// module id = 51\n// module chunks = 1","import Promise from 'bluebird';\nimport { OneIdEnv } from 'enums';\n\nconst oneIdConfig = {\n clientId: 'ESPN-ONESITE.WEB',\n responderPage: 'https://www.espn.com/login/responder/index.html',\n cssOverride: 'https://secure.espncdn.com/combiner/c?css=disneyid/core.css'\n};\n\nexport const OneIdJs = {\n [OneIdEnv.STAGING]: 'https://stg.cdn.registerdisney.go.com/v2/outer/DisneyID.js',\n [OneIdEnv.PROD]: 'https://cdn.registerdisney.go.com/v2/outer/DisneyID.js'\n};\n\nlet disneyIdPromise;\nlet oneIdInstance;\nlet initialized;\nlet initializing;\n\nfunction get() {\n if (process.browser) {\n if (window.DisneyID) {\n if (oneIdInstance && (initialized || initializing)) {\n return Promise.resolve(oneIdInstance);\n }\n\n initializing = true;\n\n if (window.did) { // the page already provides initialized oneId instance\n initialized = true;\n initializing = false;\n oneIdInstance = window.did;\n return Promise.resolve(oneIdInstance);\n }\n\n if (window.location.pathname === '/watch/activate') {\n oneIdConfig.optionalConfigs = {\n reporting: {\n source: 'ott auth',\n context: 'ott auth'\n }\n };\n }\n\n // NOTE: Supports new subscribe activation code page\n // https://espnjira.disney.com/browse/WEWEB-2044\n if (window.location.pathname === '/watch/subscribe') {\n oneIdConfig.optionalConfigs = {\n reporting: {\n source: 'ott auth',\n context: 'dtc',\n subcontext1: 'subscribe'\n }\n };\n }\n\n if (!/\\.espn\\.com$/.test(window.location.hostname)) {\n oneIdConfig.responderPage = oneIdConfig.responderPage.replace('www.espn.com', window.location.hostname);\n }\n oneIdInstance = window.DisneyID.get(oneIdConfig);\n window.did = oneIdInstance;\n return oneIdInstance\n .init()\n .then(() => {\n initialized = true;\n initializing = false;\n return oneIdInstance;\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n // TODO: support passing `oneIdEnv`\n return loadDisneyID().then(get);\n }\n } else {\n return Promise.resolve(null);\n }\n}\n\nexport function loadDisneyID(oneIdEnv = OneIdEnv.PROD) {\n return disneyIdPromise || (disneyIdPromise = new Promise((resolve, reject) => {\n if (window.DisneyID) {\n resolve(window.DisneyID);\n } else {\n const url = OneIdJs[oneIdEnv];\n const script = document.createElement('script');\n script.async = true;\n\n script.onload = () => {\n if (window.DisneyID) {\n resolve(window.DisneyID);\n } else {\n reject(new Error('script loaded but window.DisneyID not found.'));\n }\n };\n\n script.onerror = () => {\n reject(new Error('failed to load DisneyID'));\n };\n\n script.src = url;\n document.head.appendChild(script);\n }\n }));\n}\n\n// `getGuest()` rejects when user is not logged in, make sure to catch\nexport const getGuest = () => get().then((oneId) => {\n if (!oneId) {\n return Promise.resolve();\n }\n return oneId.getGuest()\n .catch((err) => {\n // `GUEST_READ_FAILURE` when token is not valid,\n // but most likely `logout()` won't work either when this happens\n if (err === 'GUEST_READ_FAILURE') {\n return logout()\n .then(() => {\n return undefined;\n })\n .catch(() => {\n return undefined;\n });\n }\n // this means user is not logged in, e.g. `Session not established`\n return undefined;\n });\n});\n\nexport const getLoggedInStatus = (options) =>\n get().then((oneId) => oneId && oneId.getLoggedInStatus(options))\n .then((status) => status)\n .catch(() => false);\n\nexport const launchLogin = (options) =>\n get().then((oneId) => oneId && oneId.launchLogin(options));\n\nexport const launchReauth = (options) =>\n get().then((oneId) => oneId && oneId.launchReauth(options))\n .catch(() => launchLogin(options));\n\nexport const forceTokenRefresh = () =>\n get().then((oneId) => oneId && oneId.forceTokenRefresh())\n .catch(() => undefined);\n\nexport const logout = () =>\n get().then((oneId) => oneId && oneId.logout());\n\nexport const on = (eventName, callback) =>\n get().then((oneId) => oneId && oneId.on(eventName, callback));\n\nexport const off = (eventName, callback) =>\n get().then((oneId) => oneId && oneId.off(eventName, callback));\n\nexport const getLicensePlateDataBag = (options) =>\n get().then((oneId) => oneId && oneId.getLicensePlateDataBag(options));\n\nexport const launchLicensePlate = (options) =>\n get().then((oneId) => oneId && oneId.launchLicensePlate(options));\n\nexport const Error = {\n CANCEL_BY_USER: 'CANCEL_BY_USER',\n INVALID_PAIRING_CODE: 'INVALID_PAIRING_CODE',\n MISSING_PAIRING_CODE: 'MISSING_PAIRING_CODE',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/oneId/index.js","import { createSelector } from 'reselect';\nimport { adobePassInfoSelector, ipInfoSelector } from 'common/selectors/authenticationSelectors';\nimport { isEmpty } from 'lib/util';\n\nexport default createSelector(\n adobePassInfoSelector,\n ipInfoSelector,\n (adobePassInfo, ipInfo) => {\n if (!isEmpty(adobePassInfo)) {\n return adobePassInfo;\n } else if (!isEmpty(ipInfo)) {\n return ipInfo;\n }\n return {};\n }\n);\n\nexport const providerDialogSelector = ({ providerDialog = {} }) => providerDialog;\n\nexport const displayProviderDialogSelector = createSelector(\n providerDialogSelector,\n ({ display = false }) => display\n);\n\nexport const providersSelector = createSelector(\n providerDialogSelector,\n ({ providers = [] }) => providers\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/providerSelector.js","import { createSelector } from 'reselect';\nimport _uniq from 'lodash/uniq';\nimport _intersection from 'lodash/intersection';\nimport { AppEnvs, ContentType, AuthTypes, AdobePass, ComScoreC3, Entitlements } from 'enums';\nimport bootstrapSelector from 'common/selectors/bootstrapSelector';\nimport appSelector, {\n editionSelector,\n isDomesticSelector,\n isIntlSelector,\n intlAppSelector,\n isSecureSelector,\n playbackMetaSelector\n} from 'common/selectors/appSelector';\nimport providerSelector from 'common/selectors/providerSelector';\nimport { pageAPIParamsSelector } from 'common/selectors/apiParamsSelector';\nimport {\n adobePassInfoSelector,\n adobePassMetadataSelector,\n ipInfoSelector,\n userAuthSelector,\n subscriptionsSelector,\n userTrackingSelector,\n superBundleSelector\n} from 'common/selectors/authenticationSelectors';\nimport pageSelector, { showPromoSelector } from 'common/selectors/pageSelector';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport selectedStreamSelector from 'common/selectors/selectedStreamSelector';\nimport fanSelector from 'common/selectors/fanSelector';\nimport { oneIdLoggedInSelector, oneIdEntitlementsSelector } from 'common/selectors/oneIdSelector';\nimport routingSelector from 'common/selectors/routingSelector';\nimport { getAccessMethodFromAuthTypes, streamHasAuthType } from 'lib/auth';\nimport { isEmpty } from 'lib/util';\nimport {\n OMNITURE_CONSTANTS,\n getVideoTypeFromStream,\n getOmnitureUserTrackingData\n} from 'lib/omniture';\nimport cookie from 'cookie-cutter';\n\nconst { METADATA: { UPSTREAM_USERID } } = AdobePass;\n\n// utility functions to format data specifically for nielsen\nfunction yesOrNo(boolParam) {\n return (boolParam === true ? 'yes' : 'no');\n}\n\n/**\n * getNielsenValue - Returns the expected nielsen value. If no value is defined, the fallbackValue\n * will be returned. Ensures backwards compatibility when called without fallbackValue will result\n * as 'Not Applicable'\n *\n * @param {string} value - the expected value to be returned if defined\n * @param {string} fallbackValue = 'Not Applicable' - fallback value when value is not defined\n * @return {string}\n */\nexport const getNielsenValue = (value, fallbackValue = 'Not Applicable') => (\n (value && typeof value === 'string' && value.trim() !== '') ? value : fallbackValue\n);\n\n/**\n * getEventValueFromContent - Returns the proper NielsenValue if the content.type matches the\n * contentType parameter. Provides a fallback value option.\n *\n * @param {object} content - object containing the type property that is used to compare with contentType\n * @param {string} contentType - content type to match current content with\n * @param {string} value - Expected value to be returned if condition is truthy\n * @param {string} fallbackValue = 'Not Applicable' - fallback value when value is not defined\n * @return {string}\n */\nexport const getEventValueFromContent = (content = {}, contentType, value, fallbackValue = 'Not Applicable') => (\n (content && content.type === contentType ? getNielsenValue(value, fallbackValue) : fallbackValue)\n);\n\nfunction getNielsenPersonalizationData(fan) {\n if (Object.keys(fan).length > 0) {\n const { profile: { settings = {} } } = fan;\n const { activeProducts = {} } = settings;\n const { metaData = {} } = activeProducts;\n\n const hasFantasy = Object.keys(metaData).filter((key) => (metaData[key] === 'true'))\n .map((key) => (key.indexOf('lm_') !== -1)).length > 0;\n\n const hasFavorites = fan.preferences && (fan.preferences.length > 0);\n const hasNotifications = fan.profile && fan.profile.hasNotificationPreferences;\n const videoAutoStart = settings.videoAutoStart && (settings.videoAutoStart.value === '2');\n return `has favorites:${yesOrNo(hasFavorites)}|fantasy:${yesOrNo(hasFantasy)}|notifications:${hasNotifications}|docking:no-autostart:${yesOrNo(videoAutoStart)}`; // eslint-disable-line\n }\n return 'Not Applicable';\n}\n\nfunction getNielsenLoginStatusFromFan(fan) {\n if (Object.keys(fan).length > 0) {\n return 'Registered:Logged in Active';\n }\n return 'Not Applicable';\n}\n\nfunction getActiveSubscriptions(subscriptions = [], stream = {}) { // eslint-disable-line\n const { packages } = stream;\n const activeSubscriptions = subscriptions\n .filter(({ isActive, products: [product = {}] = [], status: { type } }) => {\n const { productEntitlements: [entitlement = {}] = [] } = product;\n return isActive && type === 'SUBSCRIBED' && (!packages || packages.indexOf(entitlement.name) > -1);\n });\n\n return activeSubscriptions;\n}\n\nfunction formatNielsenData(\n playbackMeta = {},\n fan = {},\n page = {},\n provider = {},\n selectedContent = {},\n selectedStream = {},\n userAuth = [],\n entitlementsTracking,\n adobePassMetadata = {},\n constants,\n navmethod,\n storyId,\n wasPersonalized\n) {\n const { Site, ReportSuite, Edition } = constants;\n const { playbackState = {}, tracking = {} } = playbackMeta;\n let { [UPSTREAM_USERID]: usid } = adobePassMetadata;\n if (provider.abbreviation === 'Comcast_SSO' || provider.abbreviation === 'YouTubeTV') {\n usid = undefined;\n }\n const Language = (page.lang || '').toLowerCase();\n const Placement = selectedContent.placement || 'player-direct';\n const PlayLocation = navmethod;\n const InsiderStatus = yesOrNo(fan.isInsider);\n\n // watch specific values\n const networkVal = (\n (selectedStream.source && selectedStream.source.dtc && selectedStream.source.dtc.toLowerCase()) ||\n (selectedStream.source && selectedStream.source.id && selectedStream.source.id.toLowerCase()) ||\n (selectedStream.source && selectedStream.source.name && selectedStream.source.name.toLowerCase())\n );\n const Network = getEventValueFromContent(selectedContent, ContentType.LISTING, networkVal);\n const AirDate = getEventValueFromContent(selectedContent, ContentType.LISTING, selectedContent.date);\n const AirTime = getEventValueFromContent(selectedContent, ContentType.LISTING, selectedContent.time);\n // TODO: DTC - `airingId` not available in stream\n const AiringID = getEventValueFromContent(selectedContent, ContentType.LISTING, playbackState.airingId || playbackState.id);\n const isStudio = selectedContent.type === ContentType.LISTING ? yesOrNo(tracking.isStudio) : 'Not Applicable';\n const trackingId = tracking.trackingId;\n const WasPersonalized = yesOrNo(wasPersonalized);\n const ProgramCode = getEventValueFromContent(selectedContent, ContentType.LISTING, tracking.programCode);\n const SegC = ProgramCode;\n const SegA = selectedStream.name;\n\n const AccessMethod = getEventValueFromContent(\n selectedContent,\n ContentType.LISTING,\n getAccessMethodFromAuthTypes(userAuth),\n 'Not Authenticated'\n );\n const AuthenticationStatus = AccessMethod;\n const AffiliateName = getEventValueFromContent(\n selectedContent,\n ContentType.LISTING,\n provider.package ? provider.abbreviation : provider.name,\n 'Not Authenticated'\n );\n const AffiliateID = getEventValueFromContent(\n selectedContent,\n ContentType.LISTING,\n provider.package ? provider.package.name : provider.abbreviation,\n 'Not Authenticated'\n );\n usid = getEventValueFromContent(selectedContent, ContentType.LISTING, usid);\n\n const LoginStatus = getNielsenLoginStatusFromFan(fan);\n const Personalization = getNielsenPersonalizationData(fan);\n const Embedded = 'no';\n\n const SWID = fan.id || (typeof document !== 'undefined' && cookie.get('SWID'));\n const unid = fan.id || (typeof document !== 'undefined' && cookie.get('UNID'));\n const UserAgent = (typeof window !== 'undefined') ? window.navigator.userAgent : 'Not Applicable';\n\n // Entitlements\n const { purchaseMethod, subscriberType, entitlements, oneIdLoggedIn, userTracking, hasSuperBundle } = entitlementsTracking;\n const PurchaseMethod = purchaseMethod || 'Not Applicable';\n const SubscriberType = subscriberType || 'Not Applicable';\n const DisneyPlusBundle = hasSuperBundle ? 'Yes' : 'No';\n const DTCEntitlements = entitlements || 'Not Applicable';\n const DSSID = getOmnitureUserTrackingData(oneIdLoggedIn, userTracking);\n\n // #TODO get real orientation when mobile player launches\n const Orientation = 'Desktop';\n const VideoType = getVideoTypeFromStream(selectedContent);\n const ContentDuration = tracking.duration || -1;\n const Sport = getNielsenValue(tracking.sport);\n let League = getNielsenValue(tracking.league);\n // if No League, set it equal to the sport, ask Hopkins.\n League = (League !== 'No League' ? League : Sport);\n // TODO: DTC - is this currently working?\n const GameID = getNielsenValue(selectedContent.gameId);\n let PlayerName = (VideoType === ContentType.VOD) ? 'Brightcove-vod' : 'Brightcove-live';\n if (selectedStream.authTypes && selectedStream.authTypes.indexOf(AuthTypes.BAM) > -1) {\n PlayerName = 'BAM-live';\n }\n\n const VideoTypeDetail = getNielsenValue(tracking.coverageType);\n // #TODO: get these values\n const isVOD = selectedContent.type === ContentType.VOD;\n const dateTimeArray = isVOD ? (tracking.originalPublishDate || '').split('T') : [];\n const PublishDate = isVOD ? dateTimeArray[0] : 'Not Applicable';\n const PublishTime = isVOD ? dateTimeArray[1] : 'Not Applicable';\n const ExpirationDate = isVOD ? tracking.expirationDate : 'Not Applicable';\n const DateLastModified = isVOD ? tracking.lastModified : 'Not Applicable';\n const CMSID = isVOD ? `${selectedContent.id}-${tracking.name}` : 'Not Applicable';\n const ShowCode = isVOD ? tracking.showCode : 'Not Applicable';\n const VideoPlaylist = 'Not Applicable';\n const isfullepisode = isVOD ? 'n' : 'y';\n const StoryID = storyId;\n\n return {\n Site,\n ReportSuite,\n SWID,\n UserAgent,\n Language,\n Placement,\n PlayLocation,\n Network,\n InsiderStatus,\n AirDate,\n AirTime,\n AiringID,\n isStudio,\n trackingId,\n WasPersonalized,\n SegA,\n SegC,\n ProgramCode,\n LoginStatus,\n Personalization,\n Embedded,\n Orientation,\n AccessMethod,\n AffiliateID,\n AffiliateName,\n AuthenticationStatus,\n PurchaseMethod,\n SubscriberType,\n Entitlements: DTCEntitlements,\n Edition,\n GameID,\n StoryID,\n VideoType,\n ContentDuration,\n Sport,\n League,\n PlayerName,\n VideoTypeDetail,\n PublishDate,\n PublishTime,\n ExpirationDate,\n DateLastModified,\n CMSID,\n ShowCode,\n VideoPlaylist,\n isfullepisode,\n unid,\n usid,\n navmethod,\n DSSID,\n DisneyPlusBundle\n };\n}\n\nconst analyticsSelector = ({ app: { analytics = null } = {} }) => analytics;\n\nexport const analyticsConstantsSelector = createSelector(\n appSelector,\n isSecureSelector,\n isIntlSelector,\n intlAppSelector,\n editionSelector,\n ({ env, location: { path = '' } }, isSecure, isIntl, intlApp, { edition }) => {\n const {\n Channel,\n Site,\n ReportSuite,\n ReportSuiteQA,\n ReportSuiteIntl,\n ReportSuiteApp,\n TrackingServer,\n SecureTrackingServer\n } = OMNITURE_CONSTANTS;\n const constants = {\n Channel,\n Site,\n ReportSuite,\n TrackingServer: isSecure ? SecureTrackingServer : TrackingServer,\n Edition: edition === 'us' ? 'en-us' : edition\n };\n if (intlApp) {\n constants.ReportSuite = ReportSuiteApp;\n } else if (isIntl) { // TODO: remove this on the 1st of the following month of the last intl. launch\n constants.ReportSuite = ReportSuiteIntl;\n } else if (env !== AppEnvs.prod) {\n constants.ReportSuite = ReportSuiteQA;\n }\n\n if (path.indexOf('/activate') !== -1) {\n constants.Channel = 'device:activation';\n }\n\n return constants;\n }\n);\n\nexport const storyIdSelector = createSelector(\n routingSelector,\n pageSelector,\n ({ locationBeforeTransitions }) => {\n const { query = {} } = locationBeforeTransitions || {};\n const storyId = query['om-storyid'] || 'Not Applicable';\n\n return storyId;\n }\n);\n\nexport const navmethodSelector = createSelector(\n routingSelector,\n selectedContentSelector,\n pageSelector,\n ({ locationBeforeTransitions }, selectedContent, page) => {\n const { isHero, placement, bucketName, pageId, pageName, 'om-navmethod': omNavmethod } = selectedContent || {};\n const { query = {} } = locationBeforeTransitions || {};\n let navmethod = query['om-navmethod'] || omNavmethod;\n // set navmethod on tile click, based on position\n if (!isEmpty(selectedContent) && !navmethod) {\n const _pageId = pageId || page.id;\n const _pageName = pageName || page.name;\n let path = 'watch';\n if (_pageId === 'collection') {\n path += `:${_pageName}`;\n } else if (_pageId !== 'home') {\n path += `:${_pageId}`;\n }\n\n let rowName = 'Not Applicable';\n if (isHero || placement === 'inline-hero') {\n rowName = 'hero';\n } else if (bucketName) {\n rowName = bucketName;\n }\n\n navmethod = `${path}:${rowName}`;\n }\n\n return navmethod;\n }\n);\n\nexport const entitlementsTrackingSelector = createSelector(\n isDomesticSelector,\n subscriptionsSelector,\n oneIdEntitlementsSelector,\n oneIdLoggedInSelector,\n userTrackingSelector,\n superBundleSelector,\n (isDomestic, subscriptions, entitlementsArg = [], oneIdLoggedIn, userTracking, hasSuperBundle) => {\n if (!isDomestic) {\n return {};\n }\n\n let purchaseMethod = [];\n let subscriberType = 'not subscribed';\n let entitlements = entitlementsArg;\n\n if (subscriptions) {\n purchaseMethod = _uniq(subscriptions\n .map(({ source: { provider } = {} }) => provider && provider.toLowerCase()));\n\n const subscriberTypes = _uniq(subscriptions\n .map(({ isActive }) => isActive));\n\n if (subscriberTypes.length) {\n subscriberType = (subscriberTypes.some(isActive => !!isActive)) ? 'active' : 'inactive';\n }\n }\n\n if (!purchaseMethod.length) {\n purchaseMethod = ['no entitlements'];\n }\n\n if (!entitlements.length) {\n entitlements = ['no entitlements'];\n }\n\n return {\n hasSuperBundle,\n subscriberType,\n oneIdLoggedIn,\n userTracking,\n purchaseMethod: purchaseMethod.join(','),\n entitlements: entitlements.join(',')\n };\n }\n);\n\nexport const promoTrackingSelector = createSelector(\n bootstrapSelector,\n pageSelector,\n showPromoSelector,\n ({ sku = [] }, { id }, showPromo) => {\n let productsVal;\n if (id !== 'espnplus' || !showPromo) {\n return productsVal;\n }\n const products = sku.filter(({ name = '' }) => name.toLowerCase().indexOf('base') > -1)\n .map(({ value }) => `;${value}`);\n productsVal = `D2C${products.join(',')}`;\n return productsVal;\n }\n);\n\nexport const wasPersonalizedSelector = createSelector(\n bootstrapSelector,\n pageAPIParamsSelector,\n ({ pageApi: { requireClientRenderParams = [] } = {} }, pageAPIParams) => {\n const hasPersonalizedParams = _intersection(Object.keys(pageAPIParams), requireClientRenderParams).length > 0;\n return hasPersonalizedParams;\n }\n);\n\n// last argument on the selector gets passed the previous arguments\nexport const nielsenTrackingSelector = createSelector(\n playbackMetaSelector,\n fanSelector,\n pageSelector,\n providerSelector,\n selectedContentSelector,\n selectedStreamSelector,\n userAuthSelector,\n entitlementsTrackingSelector,\n adobePassMetadataSelector,\n analyticsConstantsSelector,\n navmethodSelector,\n storyIdSelector,\n wasPersonalizedSelector,\n formatNielsenData\n);\n\nexport const comscoreTrackingSelector = createSelector(\n editionSelector,\n selectedStreamSelector,\n ({ edition }, selectedStream) => {\n let c3;\n let c4 = edition === 'brazil' ? '\"watchespncombr\"' : '\"watchespncom\"';\n if (streamHasAuthType(selectedStream, AuthTypes.BAM)) {\n c4 = `\"${ComScoreC3[Entitlements.ESPN_PLUS]}\"`;\n const { packages = [] } = selectedStream;\n if (packages.length) {\n if (packages.indexOf(Entitlements.ESPN_PLUS) > -1) {\n c3 = ComScoreC3[Entitlements.ESPN_PLUS];\n } else {\n c3 = ComScoreC3[packages[0]];\n }\n }\n }\n const labels = {\n c4\n };\n if (c3) {\n labels.c3 = `\"${c3}\"`;\n }\n return {\n labels\n };\n }\n);\n\nexport const pageTrackingSelector = createSelector(\n isDomesticSelector,\n adobePassInfoSelector,\n analyticsSelector,\n appSelector,\n ipInfoSelector,\n pageSelector,\n userAuthSelector,\n subscriptionsSelector,\n oneIdLoggedInSelector,\n entitlementsTrackingSelector,\n promoTrackingSelector,\n adobePassMetadataSelector,\n (\n isDomestic,\n adobePassInfo,\n analytics,\n app,\n ipInfo,\n page,\n userAuth,\n subscriptions,\n oneIdLoggedIn,\n entitlementsTracking,\n promoTracking,\n adobePassMetadata\n ) => ({\n isDomestic,\n adobePassInfo,\n analytics,\n app,\n ipInfo,\n page,\n userAuth,\n subscriptions,\n oneIdLoggedIn,\n entitlementsTracking,\n promoTracking,\n adobePassMetadata\n })\n);\n\nexport const placementPrefixSelector = createSelector(\n pageSelector,\n (page) => {\n let prefix = page.id;\n if (page.id === 'collection' || page.id === 'product') {\n prefix += `-${page.name}`;\n }\n prefix += '-';\n return prefix;\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/analyticsSelectors.js","import Promise from 'bluebird';\nimport { Bootstrap, GraphQL, PageAPI, SearchAPI } from 'lib/api';\nimport bootstrapSelector from 'common/selectors/bootstrapSelector';\nimport apiParamsSelector, {\n graphqlParamsSelector,\n pageAPIParamsSelector,\n pageAPILimitedParamsSelector,\n searchApiParamsSelector,\n suggestApiParamsSelector\n} from 'common/selectors/apiParamsSelector';\nimport { configEnvSelector } from 'common/selectors/appSelector';\nimport { bamSessionTokenSelector } from 'common/selectors/authenticationSelectors';\nimport {\n pickerStreamsSelect,\n pickerStreamsSelectError\n} from './appActions';\n// un-comment to debug multiple feeds scenario\n// import getTestFeed from 'lib/api/TestFeeds';\n\nexport const SEARCH_TYPES = {\n search: 'SEARCH',\n suggest: 'SUGGEST',\n competitors: 'COMPETITORS',\n listingsByCompetitor: 'LISTINGS_BY_COMPETITOR'\n};\n\nfunction addRecommendedConentIdsToContents(contents, recommendedContentIds = []) {\n // To each content containing `dss` object, we want to expose the `recommendedContentIds` array\n contents.forEach(content => {\n if (content.dss) {\n content.dss.recommendedContentIds = recommendedContentIds;\n }\n });\n}\n\nexport function addContentToStream(content) {\n const { streams, ...contentParams } = content;\n\n if (Array.isArray(streams) && streams.length > 0) {\n streams.forEach(stream => {\n // should we just add content id and look up content metadata on demand?\n stream.contentId = content.id;\n stream.content = contentParams;\n // adds dss object to top level content\n if (stream.dss) {\n content.dss = stream.dss;\n }\n });\n }\n\n return content;\n}\n\nexport function parseContents(contents) {\n if (!contents) {\n return contents;\n }\n const recommendedContentIds = [];\n\n if (!Array.isArray(contents)) {\n return addContentToStream(contents);\n }\n\n contents.forEach(content => {\n addContentToStream(content);\n // NOTE: For each given content containing `dss.contentId`, we want to keep track via\n // recommendedContentIds which is required when executing `sendContentReward()`.\n if (content.dss && content.dss.contentId) {\n recommendedContentIds.push(content.dss.contentId);\n }\n });\n\n if (recommendedContentIds.length) {\n addRecommendedConentIdsToContents(contents, recommendedContentIds);\n }\n\n return contents;\n}\n\nexport function graphql(api, variables) {\n return (dispatch, getState) => {\n const state = getState();\n const { apiEnv, lang, ...params } = graphqlParamsSelector(state);\n return GraphQL[api]({\n apiEnv,\n lang,\n variables: { ...params, ...variables }\n });\n };\n}\n\nexport function getSearchResults(query, apiEnv, endpoint = SEARCH_TYPES.search, sortBy, sortOrder) {\n if (query.length === 0) {\n return async () => Promise.reject('No Query Entered');\n }\n switch (endpoint) {\n case SEARCH_TYPES.suggest:\n return async (dispatch, getState) => {\n const state = getState();\n const suggestApiParams = suggestApiParamsSelector(state);\n const data = await SearchAPI.getSuggestion(query, apiEnv, { ...suggestApiParams });\n return data;\n };\n case SEARCH_TYPES.competitors:\n return async () => (SearchAPI.getAllCompetitors(apiEnv));\n case SEARCH_TYPES.listingsByCompetitor:\n return async () => (SearchAPI.getEventsForTeam(\n query,\n apiEnv,\n { size: 1000, includes: 'sid', sortBy, sortOrder }));\n case SEARCH_TYPES.search:\n default:\n return async (dispatch, getState) => {\n const state = getState();\n const searchApiParams = searchApiParamsSelector(state);\n const data = await SearchAPI.getSearchResults(query, apiEnv, { ...searchApiParams });\n return data;\n };\n }\n}\n\nexport function loadBootstrap() {\n return async (dispatch, getState) => {\n const configEnv = configEnvSelector(getState());\n const config = await Bootstrap.loadBootstrap({ configEnv });\n return config;\n };\n}\n\nlet testFeed; // eslint-disable-line prefer-const;\n\nexport function getPage({ name, ...paramsArg }) {\n return async (dispatch, getState) => {\n const state = getState();\n const { pageApi: { pages = [] } = {} } = bootstrapSelector(state);\n const sessionToken = bamSessionTokenSelector(getState());\n const isTopLevel = pages.some(({ id }) => id === name);\n const pageAPIParams = isTopLevel ? pageAPIParamsSelector(state) : pageAPILimitedParamsSelector(state);\n const data = await PageAPI.getPage({\n ...pageAPIParams,\n ...paramsArg,\n name,\n sessionToken\n });\n\n // un-comment to debug multiple feeds scenario\n // testFeed = getTestFeed('espn3', configEnvSelector(getState()));\n if (data && data.page && data.page.buckets) {\n if (testFeed && data.page.buckets[0].contents[0].streams) {\n data.page.buckets[0].contents[0].streams.push(testFeed);\n }\n data.page.buckets.forEach((bucket) => {\n const { contents } = bucket;\n bucket.contents = parseContents(contents);\n });\n }\n\n return data;\n };\n}\n\nexport function getEvent({ query, ...paramsArg }) {\n return async (dispatch, getState) => {\n const state = getState();\n const pageAPIParams = pageAPILimitedParamsSelector(state);\n const data = await PageAPI.getEvent({\n ...pageAPIParams,\n ...paramsArg,\n query\n });\n let notReplays;\n // un-comment to debug multiple feeds scenario\n // testFeed = getTestFeed('espn3', configEnvSelector(getState()));\n if (data && data.page && data.page.contents) {\n if (testFeed) {\n data.page.contents.streams.push(testFeed);\n }\n data.page.contents = parseContents(data.page.contents);\n\n const content = data.page.contents[0];\n if (content && !query.status) {\n notReplays = content.streams.filter(stream => stream.status !== 'upcoming');\n }\n }\n\n return notReplays || data;\n };\n}\n\nexport function getVideo({ pathParams, ...paramsArg }) {\n return async (dispatch, getState) => {\n const state = getState();\n const pageAPIParams = pageAPILimitedParamsSelector(state);\n const data = await PageAPI.getVideo({\n ...pageAPIParams,\n ...paramsArg,\n pathParams\n });\n\n if (data && data.page && data.page.contents) {\n data.page.contents = parseContents(data.page.contents);\n }\n\n return data;\n };\n}\n\nexport function getBucketPage({ bucketId, groupId, ignores, ...paramsArg }) {\n return async (dispatch, getState) => {\n const state = getState();\n const pageAPIParams = pageAPIParamsSelector(state);\n const sessionToken = bamSessionTokenSelector(getState());\n const data = await PageAPI.getBucketPage({\n ...pageAPIParams,\n ...paramsArg,\n bucketId,\n groupId,\n ignores,\n sessionToken\n });\n\n if (data && data.page && data.page.buckets) {\n data.page.buckets.forEach((bucket) => {\n const { contents } = bucket;\n bucket.contents = parseContents(contents);\n });\n }\n\n return data;\n };\n}\n\nexport function getPageWithPathId({ name, pathParams, ...paramsArg }) {\n return async (dispatch, getState) => {\n const state = getState();\n const pageAPIParams = pageAPILimitedParamsSelector(state);\n const sessionToken = bamSessionTokenSelector(getState());\n const data = await PageAPI.getPage({\n ...pageAPIParams,\n ...paramsArg,\n name,\n sessionToken,\n pathParams\n });\n\n if (data && data.page && data.page.buckets) {\n data.page.buckets.forEach((bucket) => {\n const { contents } = bucket;\n bucket.contents = (contents);\n });\n }\n\n return data;\n };\n}\n\nexport function getPageByFullUrl({ url, ...paramsArg }) {\n return async (dispatch, getState) => {\n const state = getState();\n const pageAPIParams = pageAPILimitedParamsSelector(state);\n const sessionToken = bamSessionTokenSelector(getState());\n const data = await PageAPI.getPageByFullUrl({\n ...pageAPIParams,\n ...paramsArg,\n url,\n sessionToken\n });\n\n if (data && data.page && data.page.buckets) {\n data.page.buckets.forEach((bucket) => {\n const { contents } = bucket;\n bucket.contents = parseContents(contents);\n });\n }\n\n return data;\n };\n}\n\nexport function getScoringInfluencers(paramsArg) {\n return (dispatch, getState) => {\n const params = apiParamsSelector(getState());\n return PageAPI.getScoringInfluencers({\n ...params,\n ...paramsArg\n });\n };\n}\n\nexport function fetchPickerStreams(pickerUrl, eventId) {\n return async (dispatch) => {\n try {\n const data = await PageAPI.getPickerStreams(pickerUrl);\n const { page: { buckets } = {} } = data;\n\n // NOTE: The `espn-web-player` is written to respect the nested `content` object\n // within the stream object (parent). In order to ensure backwards compatibility,\n // we need to maintain the same structure.\n // This happens when the new `stream picker` is displayed during an AuthZ error state\n // to allow the user to transition to a new stream\n if (Array.isArray(buckets) && buckets.length) {\n buckets.forEach(bucket => {\n const { contents } = bucket;\n bucket.contents = parseContents(contents);\n });\n\n dispatch(pickerStreamsSelect(buckets, eventId));\n } else {\n throw new Error('Picker buckets list is not an array or empty');\n }\n return buckets;\n } catch (error) {\n dispatch(pickerStreamsSelectError(error));\n return [];\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/actions/apiAction.js","import { createSelector } from 'reselect';\nimport pageSelector from './pageSelector';\n\nexport default createSelector(pageSelector, ({ hero = {} }) => hero);\n\n// Need to do this until the Page API can handle device specific images\n// Selector takes a content and returns the imageHref\nconst heroImageParams = '&templateId=espn.web.hero.1&size=xxl';\nconst contentSelector = (content = {}) => content;\nexport const heroImageSelector = createSelector(contentSelector, ({ imageHref = '' }) =>\n (imageHref.indexOf('espncdn.com/stitcher/artwork/collections') === -1 ? imageHref : `${imageHref}${heroImageParams}`)\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/heroSelector.js","import React, { PropTypes, Component } from 'react';\nimport {\n launchLogin as oneIdLaunchLogin,\n on as oneIdOn\n} from 'lib/oneId';\n\nclass MainContainer extends Component {\n componentDidMount() {\n const { showLogin } = this.props;\n // navigating between routes could have potentially wiped away espn_ui's reference to the main-container\n // this reinitializes that container after re-render\n if (window.espn_ui && window.espn_ui.Helpers && window.espn_ui.Helpers.page && window.jQuery) {\n window.espn_ui.Helpers.page.container = window.jQuery('#main-container');\n }\n\n if (showLogin) {\n try {\n oneIdOn('login', () => {\n /**\n * trigger page reload so that oneId login state will be refreshed\n * and user can see playback after logging in\n */\n window.location.reload();\n });\n oneIdLaunchLogin();\n } catch (err) {\n console.error(`Show login error: ${err}`);\n }\n }\n }\n\n render() {\n return (\n <div className={this.props.className}>\n {this.props.pre}\n <section id=\"main-container\">\n <div className=\"main-content layout-dbc\">\n {this.props.children}\n </div>\n </section>\n </div>\n );\n }\n}\n\nMainContainer.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n pre: PropTypes.array,\n showLogin: PropTypes.bool\n};\n\nexport default MainContainer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/common/MainContainer.js","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.isReactChildren = isReactChildren;\nexports.createRouteFromReactElement = createRouteFromReactElement;\nexports.createRoutesFromReactChildren = createRoutesFromReactChildren;\nexports.createRoutes = createRoutes;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isValidChild(object) {\n return object == null || _react2.default.isValidElement(object);\n}\n\nfunction isReactChildren(object) {\n return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);\n}\n\nfunction createRoute(defaultProps, props) {\n return _extends({}, defaultProps, props);\n}\n\nfunction createRouteFromReactElement(element) {\n var type = element.type;\n var route = createRoute(type.defaultProps, element.props);\n\n if (route.children) {\n var childRoutes = createRoutesFromReactChildren(route.children, route);\n\n if (childRoutes.length) route.childRoutes = childRoutes;\n\n delete route.children;\n }\n\n return route;\n}\n\n/**\n * Creates and returns a routes object from the given ReactChildren. JSX\n * provides a convenient way to visualize how routes in the hierarchy are\n * nested.\n *\n * import { Route, createRoutesFromReactChildren } from 'react-router'\n *\n * const routes = createRoutesFromReactChildren(\n * <Route component={App}>\n * <Route path=\"home\" component={Dashboard}/>\n * <Route path=\"news\" component={NewsFeed}/>\n * </Route>\n * )\n *\n * Note: This method is automatically used when you provide <Route> children\n * to a <Router> component.\n */\nfunction createRoutesFromReactChildren(children, parentRoute) {\n var routes = [];\n\n _react2.default.Children.forEach(children, function (element) {\n if (_react2.default.isValidElement(element)) {\n // Component classes may have a static create* method.\n if (element.type.createRouteFromReactElement) {\n var route = element.type.createRouteFromReactElement(element, parentRoute);\n\n if (route) routes.push(route);\n } else {\n routes.push(createRouteFromReactElement(element));\n }\n }\n });\n\n return routes;\n}\n\n/**\n * Creates and returns an array of routes from the given object which\n * may be a JSX route, a plain object route, or an array of either.\n */\nfunction createRoutes(routes) {\n if (isReactChildren(routes)) {\n routes = createRoutesFromReactChildren(routes);\n } else if (routes && !Array.isArray(routes)) {\n routes = [routes];\n }\n\n return routes;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/RouteUtils.js\n// module id = 58\n// module chunks = 1","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObjectLike.js\n// module id = 59\n// module chunks = 1","import { ContentStatus } from 'enums';\n\nexport default function getContentId({ id, eventId, status, isEvent, streams = [], isEventOverride = false } = {}) {\n let content = { id: (streams[0] && streams[0].id) || id };\n // if (streams.length > 1 || isEventOverride || (status === ContentStatus.UPCOMING && (isEvent))) {\n // content = { eventId: eventId || id };\n // }\n return content;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/getContentId.js","const canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nexport default canUseDOM;\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/canUseDOM.js","import { createSelector } from 'reselect';\n\nconst selectedStreamSelector = ({ app }) => app.selectedStream;\n\nexport default createSelector(selectedStreamSelector, (selectedStream) => selectedStream);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/selectedStreamSelector.js","import { getPage } from 'common/actions/apiAction';\nimport bootstrapSelector from 'common/selectors/bootstrapSelector';\nimport routingSelector from 'common/selectors/routingSelector';\nimport { getMinutesUntilStart } from 'lib/format';\nimport uniqBy from 'lodash/uniqBy';\nimport * as perf from 'lib/util/perf';\n\nexport const REQUEST_SCHEDULE_MODULE_DATA = 'REQUEST_SCHEDULE_MODULE_DATA';\nexport const RECEIVE_SCHEDULE_MODULE_DATA = 'RECEIVE_SCHEDULE_MODULE_DATA';\nexport const SCORE_SCHEDULE_MODULE_DATA = 'SCORE_SCHEDULE_MODULE_DATA';\n\nfunction decayContentScoreWithTime(content) {\n const DECAY_THRESHOLD = 30; // minutes until start time\n const minutesUntilStart = getMinutesUntilStart(content);\n\n if (minutesUntilStart >= DECAY_THRESHOLD) {\n content.score -= minutesUntilStart;\n }\n return content;\n}\n\nfunction dedupeBucketContents(buckets = []) {\n return buckets.map((bucket) => {\n const dedupedContents = uniqBy(bucket.contents || [], 'name');\n bucket.contents = dedupedContents;\n return bucket;\n });\n}\n\nfunction scoreBucketsWithTime(buckets = []) {\n return buckets.map((bucket) => {\n const scoredContents = bucket.contents.map((content) => decayContentScoreWithTime(content))\n .sort((aContent, bContent) => {\n if (aContent.score > bContent.score) {\n return -1;\n } else if (aContent.score < bContent.score) {\n return 1;\n }\n return 0;\n });\n bucket.contents = scoredContents;\n return bucket;\n });\n}\n\nexport function createReceiveScheduleModuleAction(name, buckets) {\n return {\n type: RECEIVE_SCHEDULE_MODULE_DATA,\n name,\n buckets,\n receivedTime: Date.now()\n };\n}\n\nexport function fetchScheduleModule(langArg) {\n return (dispatch, getState) => {\n perf.markStart('fetchScheduleModule');\n const lang = langArg || undefined;\n const state = getState();\n const bootstrap = bootstrapSelector(state);\n const { scheduleModule = {} } = bootstrap;\n const { locationBeforeTransitions } = routingSelector(state);\n const { pathname = '' } = locationBeforeTransitions || {};\n let pageName = 'scheduleModule';\n Object.keys(scheduleModule).some((key) => {\n const paths = scheduleModule[key].paths;\n if (paths.some((path) => pathname.indexOf(path) > -1)) {\n pageName = key;\n return true;\n }\n return false;\n });\n dispatch({\n type: REQUEST_SCHEDULE_MODULE_DATA,\n requestedTime: Date.now()\n });\n\n return dispatch(getPage({ name: pageName, lang })).then((response = {}) => {\n const { page: { buckets = [] } = {} } = response;\n if (buckets.length > 0) {\n const timeScoredBuckets = dedupeBucketContents(scoreBucketsWithTime(buckets));\n dispatch(createReceiveScheduleModuleAction(pageName, timeScoredBuckets));\n perf.measureAndTime('fetchScheduleModule');\n }\n });\n };\n}\n\nexport function completeScheduleModuleScoring(buckets) {\n return {\n type: SCORE_SCHEDULE_MODULE_DATA,\n buckets: buckets ? scoreBucketsWithTime(buckets) : undefined,\n receivedTime: Date.now()\n };\n}\n\nexport function scoreScheduleModule() {\n return (dispatch) => dispatch(completeScheduleModuleScoring());\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/scheduleModule/actions/index.js","export default function contentContainsStream({ streams = [] }, stream = {}) {\n return streams.some(({ id }) => id === stream.id);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/contentContainsStream.js","const scrollTo = (element, to, duration) => {\n if (duration <= 0) return;\n var difference = to - element.scrollTop;\n var perTick = difference / duration * 10;\n\n setTimeout(() => {\n element.scrollTop = element.scrollTop + perTick;\n if (element.scrollTop === to) return;\n scrollTo(element, to, duration - 10);\n }, 10);\n};\n\nexport default scrollTo;\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/ui/scrollTo.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport _flatMap from 'lodash/flatMap';\nimport WatchPropTypes from 'common/PropTypes';\nimport { contentSelect, displayModalMessage, sendContentReward } from 'common/actions/appActions';\nimport { roadblockSelector } from 'common/selectors/appSelector';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport playingStreamSelector from 'common/selectors/playingStreamSelector';\nimport {\n preauthorizedResourcesSelector,\n userLocationSelector,\n userAuthSelector,\n adobePassIsAuthorizedSelector\n} from 'common/selectors/authenticationSelectors';\nimport pageSelector from 'common/selectors/pageSelector';\nimport { oneIdEntitlementsSelector } from 'common/selectors/oneIdSelector';\nimport pickerStreamsSelector from 'common/selectors/pickerStreamsSelector';\nimport {\n canPlayContent,\n contentContainsStream,\n isContentLocked,\n getContentId\n} from 'lib/auth';\nimport { scrollTo } from 'lib/ui';\nimport { isEmpty } from 'lib/util';\nimport { getPlayerUrl, openStreamPicker } from 'lib/streamPicker';\nimport { queryString } from 'lib/format';\nimport { BucketLayout, ModalType, ContentType, ContentStatus, URLPath, Flags } from 'enums';\nimport globalVideoElement from 'webapp/player/globalVideoElement';\n\nexport default (WrappedComponent) => {\n class Playable extends Component {\n constructor(props) {\n super(props);\n this.blackoutClickHandler = this.blackoutClickHandler.bind(this);\n this.clickHandler = this.clickHandler.bind(this);\n this.isUserBlackedOut = this.isUserBlackedOut.bind(this);\n }\n\n /**\n * Generates a URL for content that does not go to the player page when clicked\n * @param {string} page - show|film|product\n * @param {boolean} seo - whether or not to put descriptive \"junk\" on the end of the url\n * @param {boolean} toURL - used in render function for right click -> open in new tab\n */\n getContentPageUrl(page, seo = false, toURL = false) {\n const {\n content: { id, name, type, suggestion },\n flags,\n routing\n } = this.props;\n\n const { basename } = (routing && routing.locationBeforeTransitions) || {};\n let junk = '';\n\n if (seo && typeof name === 'string') {\n const currentName = name.trim().toLowerCase();\n // catching edge case where URL ends with \"espn+\"\n if (currentName === 'espn+') {\n junk = `/${currentName}`;\n } else {\n // replace all special characters to include spaces with a \"-\"\n junk = `/${currentName.replace(/[^A-Z0-9]+/ig, '-')}`;\n }\n }\n\n // TODO: DTC - API to return `links.web`\n let pathname = '';\n if (ContentType.TERM === type) {\n pathname = `/${page}/${encodeURIComponent(suggestion)}`;\n } else {\n pathname = `/${page}/${id}${junk}`;\n }\n const query = {\n ...flags\n };\n\n if (toURL) {\n return `${basename}${pathname}${queryString(query)}`;\n }\n\n return {\n pathname,\n query\n };\n }\n\n isUserBlackedOut() {\n const { listing, userLocation, content: { streams = [] } = {} } = this.props;\n\n // do not label the content as `blackout` unless all the streams are blacked out\n if (streams.length && streams.every(stream => !!stream.blackoutText)) {\n return true;\n }\n\n // This logic is for schedule link only\n // FIXME: currently GraphQL doesn't support blackout info (it used to work when using V1 listings)\n const { blackouts = [] } = listing;\n let userIsBlackedOut = false;\n if (blackouts.length > 0) {\n // Return true if we don't have userLocation - this check is only for UI purposes\n if (!userLocation) {\n return true;\n }\n const { dma = '' } = userLocation || {};\n const dmaBlackout = blackouts.filter(({ type }) => (type === 'dma')).shift();\n userIsBlackedOut = dmaBlackout && dmaBlackout.detail.indexOf(dma.toString()) >= 0;\n }\n return userIsBlackedOut;\n }\n\n blackoutClickHandler(event) {\n event.preventDefault();\n this.props.dispatch(displayModalMessage(ModalType.BLACKOUT_MAP, { content: this.props.content }));\n }\n\n clickHandler(event) {\n if (event) {\n event.preventDefault();\n }\n const {\n bucketId,\n content,\n playingStream,\n dispatch,\n groupId,\n flags,\n isHero,\n isMobile,\n placement,\n bucketName,\n pageId,\n pageName,\n roadblock,\n router,\n routing = {},\n userAuth,\n entitlements,\n preauthorizedResources,\n country,\n lang,\n pickerStreams = [],\n isAuthorized\n } = this.props;\n\n const { pathname = '', query = {} } = (routing && routing.locationBeforeTransitions) || {};\n\n if (isEmpty(playingStream)) {\n globalVideoElement.prime();\n }\n\n if (roadblock === true && content.type === ContentType.LISTING) {\n const contentId = getContentId(content);\n // NOTE: Obtain the `ESPN_PLUS_*` packages as a flattened array\n const packages = (\n content.streams &&\n _flatMap(content.streams, stream => stream.packages)\n .filter(result => result) // Removes undefined values from the array\n ) || [];\n const isPurchasable = packages.length > 0;\n const isEntitled = packages.some(pkg => entitlements.indexOf(pkg) !== -1);\n\n let roadblockUrl = `/watch/roadblock${queryString(contentId)}`;\n if (query[Flags.ROADBLOCK_NO_UNIVERSAL_LINK] !== 'true' && !(isPurchasable && !isEntitled)) {\n // m.espn.com is enabled for Universal Link treatment on iOS, so use this domain\n roadblockUrl = `//m.espn.com${roadblockUrl}`;\n }\n window.location = roadblockUrl;\n return;\n }\n\n if (\n [\n ContentType.PRODUCT,\n ContentType.SHOW,\n ContentType.FILM,\n ContentType.PROGRAM,\n ContentType.TERM,\n ContentType.COMPILATION\n ].indexOf(content.type) !== -1\n ) {\n const contentPageUrl = this.getContentPageUrl(URLPath[content.type], true);\n router.push(contentPageUrl);\n return;\n }\n\n const enhancedContent = !isEmpty(content) ? {\n ...content,\n bucketId,\n groupId,\n isHero,\n placement,\n bucketName,\n pageId,\n pageName\n } : content;\n\n const onSyndicatedPlayerPage = pathname.indexOf('/syndicated/player') !== -1;\n const canPlay = canPlayContent(enhancedContent, userAuth, false);\n const isESPNPlus = enhancedContent.streams.some(({ source: { id, name } }) => (\n name === 'ESPN+' || ['ESPN_DTC', 'ESPN_PPV'].indexOf(id) > -1\n ));\n const {\n dss: {\n rewardToken = null,\n contentId: dssContentId = null,\n recommendedContentIds = null\n } = {}\n } = enhancedContent;\n\n if (rewardToken && dssContentId && recommendedContentIds) {\n dispatch(sendContentReward({\n rewardToken,\n contentId: dssContentId,\n recommendedContentIds\n }));\n }\n\n const syndicatedScheduleLink = (onSyndicatedPlayerPage && placement.indexOf('schedule') > -1);\n const syndicatedBigPlayButton = (onSyndicatedPlayerPage && !syndicatedScheduleLink);\n const playerUrlQueryProps = { bucketId, groupId, flags, routing };\n\n // Allow linear/TVE to display in-player provider picker, but open ESPN+/DTC in a new tab\n if (!canPlay && (syndicatedScheduleLink || (syndicatedBigPlayButton && isESPNPlus))) {\n // Force content to open in a new browser window/tab, minus the `/syndicated` path segment\n let target = '_blank';\n\n // Except for ESPN+ content embedded on a domain matching `/espn/`\n if ((syndicatedBigPlayButton && isESPNPlus) &&\n window.frameElement &&\n window.location.origin.match(/espn/)) {\n target = '_parent';\n }\n\n const playerUrl = getPlayerUrl({\n content: enhancedContent,\n toURL: true,\n absoluteUrl: true,\n ...playerUrlQueryProps\n });\n window.open(playerUrl, target);\n return;\n }\n\n if (syndicatedScheduleLink || canPlay) {\n const onPlayerPage = !syndicatedScheduleLink && (pathname.indexOf('/player') !== -1);\n // if you're not in a Hero or on the player or syndicated player page, route to it\n if (!onPlayerPage && !syndicatedBigPlayButton) {\n const urlParams = {\n isHero,\n content: enhancedContent,\n onSyndicatedPlayerPage,\n ...playerUrlQueryProps\n };\n const playerUrl = getPlayerUrl(urlParams);\n if (playerUrl) {\n // if a user selects upcoming content, direct to the player page with the upcoming alert badge\n const alertContent = (enhancedContent.status === ContentStatus.UPCOMING) ? enhancedContent : null;\n const rState = { alertContent, placement, bucketId, bucketName, pageId, pageName, userInitiated: true };\n const { links: { picker } = {} } = enhancedContent;\n const showPicker = picker !== undefined;\n /**\n * if user can play the content, we don't want to send it to the player right away; otherwise\n * player will pick the first stream and play it to the user.\n * We will show picker if links.picker is defined\n */\n if (showPicker) {\n enhancedContent.isOnTile = true;\n dispatch(contentSelect(enhancedContent));\n openStreamPicker({\n lang,\n country,\n dispatch,\n pickerStreams,\n content: enhancedContent,\n urlParams,\n route: {\n router,\n rState,\n locationBeforeTransitions: routing.locationBeforeTransitions\n },\n authRes: { userAuth, preauthorizedResources }\n });\n } else if (isHero && isAuthorized === false && pickerStreams.length) {\n /**\n * there are flaws how adobe authenticated user currently. User logs in with an authrized\n * MVPD account, it assumes user can play selected content, but it doesn't know\n * whether or not user can play single stream until doing another authentication check.\n * We need to handle usecase when user is authenticated and clicks on video hero compenent\n * and user is not isAuthorized to place selected stream, we will reload the page, so\n * the auth Z error will be handled in connectPlayer.js\n */\n window.location.reload();\n } else {\n // we may need to handle use case here when links.picker is not defined and if it is multi streams\n router.push({\n ...playerUrl,\n state: rState\n });\n }\n return;\n }\n } else if (isMobile === true && onPlayerPage) {\n scrollTo(document.body, 0, 250);\n }\n }\n\n dispatch(contentSelect(enhancedContent));\n }\n\n render() {\n const {\n content,\n playingStream,\n placement,\n bucketName,\n pageId,\n pageName,\n userAuth,\n preauthorizedResources\n } = this.props;\n\n const userAuthenticatedForContent = canPlayContent(content, userAuth);\n\n const showLock = isContentLocked(content, userAuth, preauthorizedResources);\n\n let playerHref;\n if (\n [\n ContentType.PRODUCT,\n ContentType.SHOW,\n ContentType.FILM,\n ContentType.PROGRAM,\n ContentType.TERM,\n ContentType.COMPILATION\n ].indexOf(content.type) !== -1\n ) {\n playerHref = this.getContentPageUrl(URLPath[content.type], true, true) || '#';\n } else {\n const {\n bucketId,\n groupId,\n flags,\n routing\n } = this.props;\n\n playerHref = getPlayerUrl({\n content,\n toURL: true,\n bucketId,\n groupId,\n flags,\n routing\n }) || '#';\n }\n\n const userIsBlackedOut = this.isUserBlackedOut();\n\n const newProps = {\n ...this.props,\n playerHref,\n content: !isEmpty(content) ? { ...content, placement, bucketName, pageId, pageName } : content,\n selected: contentContainsStream(content, playingStream),\n userAuthenticatedForContent,\n userIsBlackedOut,\n showLock\n };\n return (\n <WrappedComponent\n {...newProps}\n blackoutClickHandler={this.blackoutClickHandler}\n clickHandler={this.clickHandler}\n />\n );\n }\n }\n\n Playable.defaultProps = {\n featured: false,\n isMobile: false,\n layoutType: BucketLayout.DEFAULT,\n placement: 'unknown',\n bucketName: undefined,\n pageId: undefined,\n pageName: undefined,\n playingStream: {},\n listing: {},\n content: {},\n entitlements: []\n };\n\n Playable.propTypes = {\n bucketId: PropTypes.number,\n content: WatchPropTypes.content,\n listing: PropTypes.object,\n dispatch: PropTypes.func,\n groupId: PropTypes.number,\n isHero: PropTypes.bool,\n isMobile: PropTypes.bool,\n entitlements: PropTypes.array,\n flags: PropTypes.object,\n placement: PropTypes.string,\n bucketName: PropTypes.string,\n pageId: PropTypes.string,\n pageName: PropTypes.string,\n playingStream: WatchPropTypes.stream,\n roadblock: PropTypes.bool,\n routing: PropTypes.object,\n router: PropTypes.object,\n userAuth: PropTypes.array,\n userLocation: PropTypes.object,\n preauthorizedResources: PropTypes.array,\n lang: PropTypes.string,\n country: PropTypes.string,\n pickerStreams: PropTypes.array,\n isAuthorized: PropTypes.bool\n };\n\n const mapStateToProps = (state) => {\n const { routing } = state;\n const { id: pageId, name: pageName } = pageSelector(state);\n const { lang, country, isMobile } = state.app;\n return {\n routing,\n lang,\n isMobile,\n pageId,\n pageName,\n country,\n entitlements: oneIdEntitlementsSelector(state),\n flags: persistentFlagsSelector(state),\n playingStream: playingStreamSelector(state),\n preauthorizedResources: preauthorizedResourcesSelector(state),\n roadblock: roadblockSelector(state),\n userAuth: userAuthSelector(state),\n userLocation: userLocationSelector(state),\n pickerStreams: pickerStreamsSelector(state),\n isAuthorized: adobePassIsAuthorizedSelector(state)\n };\n };\n\n return withRouter(connect(mapStateToProps)(Playable), { withRef: true });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/playable.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/PooledClass.js\n// module id = 65\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.routes = exports.route = exports.components = exports.component = exports.history = undefined;\nexports.falsy = falsy;\n\nvar _react = require('react');\n\nvar func = _react.PropTypes.func;\nvar object = _react.PropTypes.object;\nvar arrayOf = _react.PropTypes.arrayOf;\nvar oneOfType = _react.PropTypes.oneOfType;\nvar element = _react.PropTypes.element;\nvar shape = _react.PropTypes.shape;\nvar string = _react.PropTypes.string;\nfunction falsy(props, propName, componentName) {\n if (props[propName]) return new Error('<' + componentName + '> should not have a \"' + propName + '\" prop');\n}\n\nvar history = exports.history = shape({\n listen: func.isRequired,\n push: func.isRequired,\n replace: func.isRequired,\n go: func.isRequired,\n goBack: func.isRequired,\n goForward: func.isRequired\n});\n\nvar component = exports.component = oneOfType([func, string]);\nvar components = exports.components = oneOfType([component, object]);\nvar route = exports.route = oneOfType([object, element]);\nvar routes = exports.routes = oneOfType([route, arrayOf(route)]);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/InternalPropTypes.js\n// module id = 66\n// module chunks = 1","/**\n * Indicates that navigation was caused by a call to history.push.\n */\n'use strict';\n\nexports.__esModule = true;\nvar PUSH = 'PUSH';\n\nexports.PUSH = PUSH;\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = 'REPLACE';\n\nexports.REPLACE = REPLACE;\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = 'POP';\n\nexports.POP = POP;\nexports['default'] = {\n PUSH: PUSH,\n REPLACE: REPLACE,\n POP: POP\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/Actions.js\n// module id = 67\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.extractPath = extractPath;\nexports.parsePath = parsePath;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction extractPath(string) {\n var match = string.match(/^https?:\\/\\/[^\\/]*/);\n\n if (match == null) return string;\n\n return string.substring(match[0].length);\n}\n\nfunction parsePath(path) {\n var pathname = extractPath(path);\n var search = '';\n var hash = '';\n\n process.env.NODE_ENV !== 'production' ? _warning2['default'](path === pathname, 'A path must be pathname + search + hash only, not a fully qualified URL like \"%s\"', path) : undefined;\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substring(hashIndex);\n pathname = pathname.substring(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substring(searchIndex);\n pathname = pathname.substring(0, searchIndex);\n }\n\n if (pathname === '') pathname = '/';\n\n return {\n pathname: pathname,\n search: search,\n hash: hash\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/PathUtils.js\n// module id = 68\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.routerMiddleware = exports.routerActions = exports.goForward = exports.goBack = exports.go = exports.replace = exports.push = exports.CALL_HISTORY_METHOD = exports.routerReducer = exports.LOCATION_CHANGE = exports.syncHistoryWithStore = undefined;\n\nvar _reducer = require('./reducer');\n\nObject.defineProperty(exports, 'LOCATION_CHANGE', {\n enumerable: true,\n get: function get() {\n return _reducer.LOCATION_CHANGE;\n }\n});\nObject.defineProperty(exports, 'routerReducer', {\n enumerable: true,\n get: function get() {\n return _reducer.routerReducer;\n }\n});\n\nvar _actions = require('./actions');\n\nObject.defineProperty(exports, 'CALL_HISTORY_METHOD', {\n enumerable: true,\n get: function get() {\n return _actions.CALL_HISTORY_METHOD;\n }\n});\nObject.defineProperty(exports, 'push', {\n enumerable: true,\n get: function get() {\n return _actions.push;\n }\n});\nObject.defineProperty(exports, 'replace', {\n enumerable: true,\n get: function get() {\n return _actions.replace;\n }\n});\nObject.defineProperty(exports, 'go', {\n enumerable: true,\n get: function get() {\n return _actions.go;\n }\n});\nObject.defineProperty(exports, 'goBack', {\n enumerable: true,\n get: function get() {\n return _actions.goBack;\n }\n});\nObject.defineProperty(exports, 'goForward', {\n enumerable: true,\n get: function get() {\n return _actions.goForward;\n }\n});\nObject.defineProperty(exports, 'routerActions', {\n enumerable: true,\n get: function get() {\n return _actions.routerActions;\n }\n});\n\nvar _sync = require('./sync');\n\nvar _sync2 = _interopRequireDefault(_sync);\n\nvar _middleware = require('./middleware');\n\nvar _middleware2 = _interopRequireDefault(_middleware);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports.syncHistoryWithStore = _sync2['default'];\nexports.routerMiddleware = _middleware2['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-redux/lib/index.js\n// module id = 69\n// module chunks = 1","import { convertQueryStringToObject, queryString } from './';\n\nexport default function addQueryToUrl(url = '', query = {}) {\n let finalQuery = query;\n\n const pathAndQuery = url.split('?');\n if (pathAndQuery.length > 1) {\n const urlQuery = convertQueryStringToObject(pathAndQuery[1]);\n finalQuery = { ...urlQuery, ...finalQuery };\n }\n return `${pathAndQuery[0]}${queryString(finalQuery)}`;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/addQueryToUrl.js","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseGetTag.js\n// module id = 71\n// module chunks = 1","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getNative.js\n// module id = 72\n// module chunks = 1","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n var noop = function() {};\n var undefinedType = \"undefined\";\n\n function realMethod(methodName) {\n if (typeof console === undefinedType) {\n return false; // We can't build a real method without a console to log to\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // these private functions always need `this` to be set properly\n\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n }\n\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public API\n *\n */\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Package-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n return defaultLogger;\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/loglevel/lib/loglevel.js\n// module id = 73\n// module chunks = 1","import Promise from 'bluebird';\nimport cache from './index';\nimport loglevel from 'loglevel';\n\nconst log = loglevel.getLogger('fallbackCache');\n\nconst EXPIRATION = 86400; // one day\n\nexport function getCacheFallback(url) {\n log.warn(`getCacheFallback: ${url}`);\n return Promise\n .fromCallback(cache.get.bind(null, `fallback:${url}`))\n .catch((err) => {\n console.error('Unable to get data from fallback cache');\n });\n}\n\nexport function setCacheFallback(url, value, expiration = EXPIRATION) {\n if (!!value) {\n cache.set(`fallback:${url}`, value, expiration);\n }\n}\n\nconst defaultExport = {\n get: getCacheFallback,\n set: setCacheFallback\n};\n\nexport default defaultExport;\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/cache/fallbackCache.js","import canUseDOM from 'lib/util/canUseDOM';\n\nexport const canUsePerformance = canUseDOM && typeof window.performance !== 'undefined';\nconst perfDebug = canUseDOM && window.location.search.indexOf('perf_debug=true') > -1;\nconst perfEnabled = canUsePerformance && perfDebug;\nconst logMark = perfEnabled && window.location.search.indexOf('perf_mark_log=true') > -1;\n\nexport function mark(name) {\n if (!perfEnabled) {\n return;\n }\n window.performance.mark(name);\n}\n\nexport function markStart(name) {\n if (logMark) {\n console.log(`perf: mark '${name}'`);\n }\n mark(`${name}_start`);\n}\n\nexport function markEnd(name) {\n mark(`${name}_end`);\n}\n\nexport function clear(name) {\n if (!perfEnabled) {\n return;\n }\n const startMark = `${name}_start`;\n const endMark = `${name}_end`;\n window.performance.clearMarks(startMark);\n window.performance.clearMarks(endMark);\n window.performance.clearMeasures(name);\n}\n\nexport function measure(name, startMarkArg, endMarkArg) {\n if (!perfEnabled) {\n return;\n }\n const startMark = startMarkArg || `${name}_start`;\n const endMark = endMarkArg || `${name}_end`;\n const [entry] = window.performance.getEntriesByName(endMark);\n if (!entry) {\n mark(endMark);\n }\n try {\n window.performance.measure(name, startMark, endMark);\n } catch (err) {}\n}\n\nexport function measureAndTime(name, startMark, endMark) {\n measure(name, startMark, endMark);\n time(name);\n clear(name);\n}\n\nexport function time(name, all = false, print = true) {\n if (!perfEnabled) {\n return;\n }\n let entries;\n if (name) {\n entries = window.performance.getEntriesByName(name);\n } else {\n entries = window.performance.getEntriesByType('measure');\n }\n if (!all) {\n entries = entries[0];\n if (print) {\n console.log(`perf: measure '${name}'`, entries);\n }\n } else if (print) {\n entries.forEach(entry => {\n console.log(`perf: measure '${entry.name}'`, entry);\n });\n }\n return entries;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/perf.js","import React, { PropTypes } from 'react';\nimport AdContainer from './AdContainer';\n\nconst BannerAd = (props) => (\n <AdContainer\n className=\"ad-slot-banner ad-wrapper\"\n kvps={{ pos: 'banner' }}\n slotType=\"banner\"\n {...props}\n />\n);\n\nBannerAd.defaultProps = {\n refreshOnLoad: false\n};\n\nBannerAd.propTypes = {\n refreshOnLoad: PropTypes.bool\n};\n\nexport default BannerAd;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ads/BannerAd.js","import { unknownAuthStates } from 'constants';\n\nexport default function authStateKnown(userAuth) {\n if (Array.isArray(userAuth) && userAuth.length) {\n return userAuth.every(auth => unknownAuthStates.indexOf(auth) === -1)\n }\n return false;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/authStateKnown.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactChildren = require('./ReactChildren');\nvar ReactComponent = require('./ReactComponent');\nvar ReactPureComponent = require('./ReactPureComponent');\nvar ReactClass = require('./ReactClass');\nvar ReactDOMFactories = require('./ReactDOMFactories');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypes = require('./ReactPropTypes');\nvar ReactVersion = require('./ReactVersion');\n\nvar onlyChild = require('./onlyChild');\nvar warning = require('fbjs/lib/warning');\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (process.env.NODE_ENV !== 'production') {\n var warned = false;\n __spread = function () {\n process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n warned = true;\n return _assign.apply(null, arguments);\n };\n}\n\nvar React = {\n\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactComponent,\n PureComponent: ReactPureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createFactory: createFactory,\n createMixin: function (mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\nmodule.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/React.js\n// module id = 78\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/reactProdInvariant.js\n// module id = 79\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar warning = require('fbjs/lib/warning');\nvar canDefineProperty = require('./canDefineProperty');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactElement.js\n// module id = 80\n// module chunks = 1","'use strict';\n\nmodule.exports = require('./lib/ReactDOM');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/index.js\n// module id = 81\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function (attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/DOMProperty.js\n// module id = 82\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactRef = require('./ReactRef');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n ) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function (internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (internalInstance, safely) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function (internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n\n};\n\nmodule.exports = ReactReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactReconciler.js\n// module id = 83\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = require('./DOMNamespaces');\nvar setInnerHTML = require('./setInnerHTML');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setTextContent = require('./setTextContent');\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some <object> plugins (like Flash Player) will read\n // <param> nodes immediately upon insertion into the DOM, so <object>\n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/DOMLazyTree.js\n// module id = 84\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.createMemoryHistory = exports.hashHistory = exports.browserHistory = exports.applyRouterMiddleware = exports.formatPattern = exports.useRouterHistory = exports.match = exports.routerShape = exports.locationShape = exports.PropTypes = exports.RoutingContext = exports.RouterContext = exports.createRoutes = exports.useRoutes = exports.RouteContext = exports.Lifecycle = exports.History = exports.Route = exports.Redirect = exports.IndexRoute = exports.IndexRedirect = exports.withRouter = exports.IndexLink = exports.Link = exports.Router = undefined;\n\nvar _RouteUtils = require('./RouteUtils');\n\nObject.defineProperty(exports, 'createRoutes', {\n enumerable: true,\n get: function get() {\n return _RouteUtils.createRoutes;\n }\n});\n\nvar _PropTypes2 = require('./PropTypes');\n\nObject.defineProperty(exports, 'locationShape', {\n enumerable: true,\n get: function get() {\n return _PropTypes2.locationShape;\n }\n});\nObject.defineProperty(exports, 'routerShape', {\n enumerable: true,\n get: function get() {\n return _PropTypes2.routerShape;\n }\n});\n\nvar _PatternUtils = require('./PatternUtils');\n\nObject.defineProperty(exports, 'formatPattern', {\n enumerable: true,\n get: function get() {\n return _PatternUtils.formatPattern;\n }\n});\n\nvar _Router2 = require('./Router');\n\nvar _Router3 = _interopRequireDefault(_Router2);\n\nvar _Link2 = require('./Link');\n\nvar _Link3 = _interopRequireDefault(_Link2);\n\nvar _IndexLink2 = require('./IndexLink');\n\nvar _IndexLink3 = _interopRequireDefault(_IndexLink2);\n\nvar _withRouter2 = require('./withRouter');\n\nvar _withRouter3 = _interopRequireDefault(_withRouter2);\n\nvar _IndexRedirect2 = require('./IndexRedirect');\n\nvar _IndexRedirect3 = _interopRequireDefault(_IndexRedirect2);\n\nvar _IndexRoute2 = require('./IndexRoute');\n\nvar _IndexRoute3 = _interopRequireDefault(_IndexRoute2);\n\nvar _Redirect2 = require('./Redirect');\n\nvar _Redirect3 = _interopRequireDefault(_Redirect2);\n\nvar _Route2 = require('./Route');\n\nvar _Route3 = _interopRequireDefault(_Route2);\n\nvar _History2 = require('./History');\n\nvar _History3 = _interopRequireDefault(_History2);\n\nvar _Lifecycle2 = require('./Lifecycle');\n\nvar _Lifecycle3 = _interopRequireDefault(_Lifecycle2);\n\nvar _RouteContext2 = require('./RouteContext');\n\nvar _RouteContext3 = _interopRequireDefault(_RouteContext2);\n\nvar _useRoutes2 = require('./useRoutes');\n\nvar _useRoutes3 = _interopRequireDefault(_useRoutes2);\n\nvar _RouterContext2 = require('./RouterContext');\n\nvar _RouterContext3 = _interopRequireDefault(_RouterContext2);\n\nvar _RoutingContext2 = require('./RoutingContext');\n\nvar _RoutingContext3 = _interopRequireDefault(_RoutingContext2);\n\nvar _PropTypes3 = _interopRequireDefault(_PropTypes2);\n\nvar _match2 = require('./match');\n\nvar _match3 = _interopRequireDefault(_match2);\n\nvar _useRouterHistory2 = require('./useRouterHistory');\n\nvar _useRouterHistory3 = _interopRequireDefault(_useRouterHistory2);\n\nvar _applyRouterMiddleware2 = require('./applyRouterMiddleware');\n\nvar _applyRouterMiddleware3 = _interopRequireDefault(_applyRouterMiddleware2);\n\nvar _browserHistory2 = require('./browserHistory');\n\nvar _browserHistory3 = _interopRequireDefault(_browserHistory2);\n\nvar _hashHistory2 = require('./hashHistory');\n\nvar _hashHistory3 = _interopRequireDefault(_hashHistory2);\n\nvar _createMemoryHistory2 = require('./createMemoryHistory');\n\nvar _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Router = _Router3.default; /* components */\n\nexports.Link = _Link3.default;\nexports.IndexLink = _IndexLink3.default;\nexports.withRouter = _withRouter3.default;\n\n/* components (configuration) */\n\nexports.IndexRedirect = _IndexRedirect3.default;\nexports.IndexRoute = _IndexRoute3.default;\nexports.Redirect = _Redirect3.default;\nexports.Route = _Route3.default;\n\n/* mixins */\n\nexports.History = _History3.default;\nexports.Lifecycle = _Lifecycle3.default;\nexports.RouteContext = _RouteContext3.default;\n\n/* utils */\n\nexports.useRoutes = _useRoutes3.default;\nexports.RouterContext = _RouterContext3.default;\nexports.RoutingContext = _RoutingContext3.default;\nexports.PropTypes = _PropTypes3.default;\nexports.match = _match3.default;\nexports.useRouterHistory = _useRouterHistory3.default;\nexports.applyRouterMiddleware = _applyRouterMiddleware3.default;\n\n/* histories */\n\nexports.browserHistory = _browserHistory3.default;\nexports.hashHistory = _hashHistory3.default;\nexports.createMemoryHistory = _createMemoryHistory3.default;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/index.js\n// module id = 85\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.compilePattern = compilePattern;\nexports.matchPattern = matchPattern;\nexports.getParamNames = getParamNames;\nexports.getParams = getParams;\nexports.formatPattern = formatPattern;\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction _compilePattern(pattern) {\n var regexpSource = '';\n var paramNames = [];\n var tokens = [];\n\n var match = void 0,\n lastIndex = 0,\n matcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|\\*\\*|\\*|\\(|\\)/g;\n while (match = matcher.exec(pattern)) {\n if (match.index !== lastIndex) {\n tokens.push(pattern.slice(lastIndex, match.index));\n regexpSource += escapeRegExp(pattern.slice(lastIndex, match.index));\n }\n\n if (match[1]) {\n regexpSource += '([^/]+)';\n paramNames.push(match[1]);\n } else if (match[0] === '**') {\n regexpSource += '(.*)';\n paramNames.push('splat');\n } else if (match[0] === '*') {\n regexpSource += '(.*?)';\n paramNames.push('splat');\n } else if (match[0] === '(') {\n regexpSource += '(?:';\n } else if (match[0] === ')') {\n regexpSource += ')?';\n }\n\n tokens.push(match[0]);\n\n lastIndex = matcher.lastIndex;\n }\n\n if (lastIndex !== pattern.length) {\n tokens.push(pattern.slice(lastIndex, pattern.length));\n regexpSource += escapeRegExp(pattern.slice(lastIndex, pattern.length));\n }\n\n return {\n pattern: pattern,\n regexpSource: regexpSource,\n paramNames: paramNames,\n tokens: tokens\n };\n}\n\nvar CompiledPatternsCache = Object.create(null);\n\nfunction compilePattern(pattern) {\n if (!CompiledPatternsCache[pattern]) CompiledPatternsCache[pattern] = _compilePattern(pattern);\n\n return CompiledPatternsCache[pattern];\n}\n\n/**\n * Attempts to match a pattern on the given pathname. Patterns may use\n * the following special characters:\n *\n * - :paramName Matches a URL segment up to the next /, ?, or #. The\n * captured string is considered a \"param\"\n * - () Wraps a segment of the URL that is optional\n * - * Consumes (non-greedy) all characters up to the next\n * character in the pattern, or to the end of the URL if\n * there is none\n * - ** Consumes (greedy) all characters up to the next character\n * in the pattern, or to the end of the URL if there is none\n *\n * The function calls callback(error, matched) when finished.\n * The return value is an object with the following properties:\n *\n * - remainingPathname\n * - paramNames\n * - paramValues\n */\nfunction matchPattern(pattern, pathname) {\n // Ensure pattern starts with leading slash for consistency with pathname.\n if (pattern.charAt(0) !== '/') {\n pattern = '/' + pattern;\n }\n\n var _compilePattern2 = compilePattern(pattern);\n\n var regexpSource = _compilePattern2.regexpSource;\n var paramNames = _compilePattern2.paramNames;\n var tokens = _compilePattern2.tokens;\n\n\n if (pattern.charAt(pattern.length - 1) !== '/') {\n regexpSource += '/?'; // Allow optional path separator at end.\n }\n\n // Special-case patterns like '*' for catch-all routes.\n if (tokens[tokens.length - 1] === '*') {\n regexpSource += '$';\n }\n\n var match = pathname.match(new RegExp('^' + regexpSource, 'i'));\n if (match == null) {\n return null;\n }\n\n var matchedPath = match[0];\n var remainingPathname = pathname.substr(matchedPath.length);\n\n if (remainingPathname) {\n // Require that the match ends at a path separator, if we didn't match\n // the full path, so any remaining pathname is a new path segment.\n if (matchedPath.charAt(matchedPath.length - 1) !== '/') {\n return null;\n }\n\n // If there is a remaining pathname, treat the path separator as part of\n // the remaining pathname for properly continuing the match.\n remainingPathname = '/' + remainingPathname;\n }\n\n return {\n remainingPathname: remainingPathname,\n paramNames: paramNames,\n paramValues: match.slice(1).map(function (v) {\n return v && decodeURIComponent(v);\n })\n };\n}\n\nfunction getParamNames(pattern) {\n return compilePattern(pattern).paramNames;\n}\n\nfunction getParams(pattern, pathname) {\n var match = matchPattern(pattern, pathname);\n if (!match) {\n return null;\n }\n\n var paramNames = match.paramNames;\n var paramValues = match.paramValues;\n\n var params = {};\n\n paramNames.forEach(function (paramName, index) {\n params[paramName] = paramValues[index];\n });\n\n return params;\n}\n\n/**\n * Returns a version of the given pattern with params interpolated. Throws\n * if there is a dynamic segment of the pattern for which there is no param.\n */\nfunction formatPattern(pattern, params) {\n params = params || {};\n\n var _compilePattern3 = compilePattern(pattern);\n\n var tokens = _compilePattern3.tokens;\n\n var parenCount = 0,\n pathname = '',\n splatIndex = 0;\n\n var token = void 0,\n paramName = void 0,\n paramValue = void 0;\n for (var i = 0, len = tokens.length; i < len; ++i) {\n token = tokens[i];\n\n if (token === '*' || token === '**') {\n paramValue = Array.isArray(params.splat) ? params.splat[splatIndex++] : params.splat;\n\n !(paramValue != null || parenCount > 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Missing splat #%s for path \"%s\"', splatIndex, pattern) : (0, _invariant2.default)(false) : void 0;\n\n if (paramValue != null) pathname += encodeURI(paramValue);\n } else if (token === '(') {\n parenCount += 1;\n } else if (token === ')') {\n parenCount -= 1;\n } else if (token.charAt(0) === ':') {\n paramName = token.substring(1);\n paramValue = params[paramName];\n\n !(paramValue != null || parenCount > 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Missing \"%s\" parameter for path \"%s\"', paramName, pattern) : (0, _invariant2.default)(false) : void 0;\n\n if (paramValue != null) pathname += encodeURIComponent(paramValue);\n } else {\n pathname += token;\n }\n }\n\n return pathname.replace(/\\/+/g, '/');\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/PatternUtils.js\n// module id = 86\n// module chunks = 1","var arrayMap = require('./_arrayMap'),\n baseIntersection = require('./_baseIntersection'),\n baseRest = require('./_baseRest'),\n castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nmodule.exports = intersection;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/intersection.js\n// module id = 87\n// module chunks = 1","import loglevel from 'loglevel';\nimport { appEnv, secureCdnHost } from 'config';\nimport { AppEnvs } from 'enums';\nimport { newRelicEmitter, UNFULFILLED_PROMISE_EVENT} from 'lib/metrics/newRelicEventBus';\nimport request from './cache/requestCache';\nimport proxy from './requestProxy';\nimport fallback from './cache/fallbackCache';\nimport staticConfigQa from 'config/watchespn-web-1.0.config.qa.json';\nimport staticConfig from 'config/watchespn-web-1.0.config.json';\n\nconst log = loglevel.getLogger('Bootstrap');\n\nconst DEFAULT_EXPIRATION = 300;\nconst DEFAULT_TIMEOUT = 5000;\nconst BOOTSTRAP_URL = {\n [AppEnvs.dev]: `${secureCdnHost}/connected-devices/app-configurations/watchespn-web-3.0_dev.config.json`,\n [AppEnvs.qa]: `${secureCdnHost}/connected-devices/app-configurations/watchespn-web-3.0_qa.config.json`,\n [AppEnvs.prod]: `${secureCdnHost}/connected-devices/app-configurations/watchespn-web-3.0.config.json`\n};\n\nexport function getUrl(env = appEnv) {\n let url = BOOTSTRAP_URL[env];\n if (!process.browser) { // use non ssl domain for server side\n url = url.replace(secureCdnHost, 'http://proxy.espn.com');\n }\n return url;\n}\n\nexport function getFallbackConfig(env = appEnv) {\n return env === AppEnvs.prod ? staticConfig : staticConfigQa;\n}\n\nexport function loadBootstrap({ configEnv } = {}) {\n const url = getUrl(configEnv);\n return request.get(url)\n .expiration(DEFAULT_EXPIRATION)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n })\n .catch((err) => {\n log.error(`loadBootstrap: ${url}`, err.status, err.originalError);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n return fallback.get(url)\n .then(config => {\n if (!config) {\n log.error('loadBootstrap: using fallbackConfig');\n const fallbackConfig = getFallbackConfig(configEnv);\n return fallbackConfig;\n }\n return config;\n });\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/Bootstrap.js","import loglevel from 'loglevel';\nimport request from './cache/requestCache';\nimport proxy from './requestProxy';\nimport fallback from './cache/fallbackCache';\nimport toAbsoluteURL from 'lib/url-adapter/toAbsoluteURL';\nimport Provider from 'lib/auth/Provider';\nimport { AdobePass } from 'enums';\nimport { queryString } from 'lib/format';\n\nconst { Env: AdobePassEnv } = AdobePass;\n\nconst log = loglevel.getLogger('ClientAPI');\n\nconst ONE_HOUR = 3600;\n\nconst CONFIGURATION = {\n baseUrl: '//api-app.espn.com',\n baseInternalUrl: '//sports-bc.prod.espninfra.starwave.com',\n endPoint: '/v1/watch/clients/',\n apiKey: '',\n intlProviderServiceUrl: 'https://affiliate.api.espn.com/affiliateApi/affiliates'\n};\n\nconst QA_CONFIGURATION = {\n baseUrl: '//broadband.espnqa.com/espn360/apis',\n baseInternalUrl: '//sports-bc.qa.espninfra.starwave.com/espn360/apis',\n endPoint: '/v1/watch/clients/',\n apiKey: '',\n intlProviderServiceUrl: 'https://affiliate.api.qa.espn.com/affiliateApi/affiliates'\n}\n\nconst INTL_QUERY = {\n includeProperties: true,\n rows: 1000,\n apikey: 'iay88gnrz4un1jiaclo88df33'\n};\n\nexport const FULL_PREAUTH_PROVIDERS = [\n 'Comcast_SSO',\n 'ATT',\n 'Charter_Direct',\n 'TWC',\n 'Brighthouse',\n 'Cablevision',\n 'Verizon',\n 'Bend',\n 'WOW',\n 'Suddenlink',\n 'Mediacom',\n 'Dish',\n 'Grande',\n 'HTC',\n 'RCN'\n];\n\nfunction getServiceUrl({ passenv, platform = 'web', partner = 'watchespn' } = {}) {\n let config = CONFIGURATION;\n if (passenv === AdobePassEnv.STAGING) {\n config = QA_CONFIGURATION;\n }\n return `${toAbsoluteURL(config.baseUrl)}${config.endPoint}${partner}-${platform}`;\n}\n\nfunction getProviderServiceUrl ({ country, passenv, platform }) {\n let config = CONFIGURATION;\n if (passenv === AdobePassEnv.STAGING) {\n config = QA_CONFIGURATION;\n }\n if (country === 'US') {\n return `${getServiceUrl({ passenv, platform })}/providers?country=${country}`;\n }\n\n return `${config.intlProviderServiceUrl}${queryString({ ...INTL_QUERY, country })}`;\n}\n\nexport function getClient({ passenv = AdobePassEnv.PROD, platform = 'web' } = {}) {\n const url = `${getServiceUrl({ passenv, platform })}?enable=providers,channels`;\n\n log.debug(`getClient: ${url}`);\n\n return request(url)\n .expiration(ONE_HOUR)\n .use(proxy)\n .then(({ body }) => {\n const client = body.clients[0];\n const result = {\n channels: client.channels,\n providers: client.providers\n };\n\n fallback.set(url, result);\n return result;\n })\n .catch((err) => {\n log.error('getClient:', err.originalError);\n return fallback.get(url);\n });\n}\n\nexport function getProviders({ country, passenv = AdobePassEnv.PROD, partner, platform, version } = {}) {\n const url = getProviderServiceUrl({ country, passenv, platform });\n log.debug(`getProviders: ${url}`);\n\n return request.get(url)\n .expiration(ONE_HOUR)\n .use(proxy)\n .then(({ body }) => {\n const { clients } = body;\n if (clients) {\n const client = clients[0];\n const providers = client.providers.map((provider) => (Provider.createProviderDomestic(provider, partner, platform, version)));\n fallback.set(url, providers);\n return providers;\n }\n\n const { rows } = body;\n if (rows) {\n const intlProviders = rows.map(({ data }) => (Provider.createProviderIntl(data, country)));\n fallback.set(url, intlProviders);\n return intlProviders;\n }\n })\n .catch((err) => {\n log.error('getProviders:', err.originalError);\n return fallback.get(url);\n });\n}\n\nexport function getProvider({ abbreviation, country = 'US', passenv = AdobePassEnv.PROD, partner = 'watchespn', platform = 'flash' } = {}) {\n if (country === 'US') {\n const url = `${getServiceUrl({ passenv, platform })}/providers/${abbreviation}`;\n\n log.debug(`getProviders: ${url}`);\n\n return request.get(url)\n .expiration(ONE_HOUR)\n .use(proxy)\n .then(({ body }) => {\n const { clients } = body;\n if (clients) {\n const client = clients[0];\n const provider = Provider.createProviderDomestic(client.providers[0], partner, platform);\n fallback.set(url, provider);\n return provider;\n }\n })\n .catch((err) => {\n log.error('getProvider:', err.originalError);\n return fallback.get(url);\n });\n }\n return Promise.resolve();\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/ClientAPI.js","// Only allow Alpha-numeric, spaces, #, () and - in query\n\nconst emojiRegExp = /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|\\ud83c[\\udd70-\\udd71]|\\ud83c[\\udd7e-\\udd7f]|\\ud83c\\udd8e|\\ud83c[\\udd91-\\udd9a]|\\ud83c[\\udde6-\\uddff]|[\\ud83c[\\ude01-\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|[\\ud83c[\\ude32-\\ude3a]|[\\ud83c[\\ude50-\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff])/;\n\nexport function sanitizeQueryString(queryString) {\n const decodedQuery = decodeURIComponent(queryString);\n if (emojiRegExp.test(decodedQuery)) {\n return decodedQuery.codePointAt(0).toString(16);\n }\n return encodeURIComponent(decodedQuery.replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"$%*+,\\\\/:;<=>?@\\[\\]^_`{|}~]/gim, ''));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/sanitizeQuery.js","import Promise from 'bluebird';\nimport { queryString } from 'lib/format';\nimport request from './cache/requestCache';\nimport proxy from './requestProxy';\nimport fallback from './cache/fallbackCache';\nimport toAbsoluteURL from 'lib/url-adapter/toAbsoluteURL';\nimport { sanitizeQueryString } from 'lib/format/sanitizeQuery';\nimport { Api, Device } from 'enums';\nimport { searchApi as SearchAPIConfig } from '../../../config';\n\nconst DEFAULT_TIMEOUT = 10000;\nconst { Env: ApiEnv } = Api;\n\nexport const ERROR_PAGE_RESPONSE = {\n page : {\n name: 'Search API Error',\n buckets: []\n }\n};\nconst ENVIRONMENT_CONFIGURATION = {\n dev: {\n serviceUrl: '//watch-search.espnsb.com'\n },\n qa: {\n serviceUrl: '//watch-search.espnqa.com'\n },\n staging: {\n serviceUrl: '//watch-search.espnqa.com'\n },\n prod: {\n serviceUrl: '//watch-search.espn.com'\n }\n};\n\nexport const DEFAULT_CONFIGURATION = {\n serviceUrl : ENVIRONMENT_CONFIGURATION.qa.serviceUrl,\n paths: {\n base: '/api/product/v3/watchespn/web/',\n search: '/api/product/v3/watchespn/web/search',\n suggest: '/api/product/v3/watchespn/web/suggest',\n keyword: {\n base: '/api/product/v3/watchespn/web/keywords',\n listings: '/listings'\n }\n }\n};\n\nconst config = { ...DEFAULT_CONFIGURATION, ...SearchAPIConfig };\n\nconst getServiceUrl = (env = ApiEnv.PROD) => {\n if (process.browser) {\n const browserEnvironment = env; //global.watchGlobals && global.watchGlobals.env;\n return ENVIRONMENT_CONFIGURATION[browserEnvironment || env].serviceUrl;\n\n }\n return toAbsoluteURL(ENVIRONMENT_CONFIGURATION[env].serviceUrl);\n};\n\nexport function getSuggestion(query = '', apiEnv, {\n authNetworks,\n countryCode,\n deviceType = Device.DESKTOP,\n zipcode,\n lang,\n tz\n} = {}) {\n if (query.length === 0) {\n return Promise.reject(new Error('No query to get a suggestion.'));\n }\n const sanitizedQuery = sanitizeQueryString(query);\n if (!sanitizedQuery) {\n return Promise.reject(new Error('No Valid Query Entered'));\n }\n const qs = queryString({\n q: sanitizedQuery,\n size: 3,\n authNetworks,\n countryCode,\n deviceType,\n zipcode,\n lang,\n tz,\n includeDtcContent: true\n });\n const url = `${getServiceUrl(apiEnv)}${config.paths.suggest}${qs}`;\n\n return request.get(url)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n }, (err) => {\n if (err.status === 404) {\n return ERROR_PAGE_RESPONSE;\n }\n return fallback.get(url);\n });\n}\n\nexport function getSearchResults(query = '', apiEnv, {\n authNetworks,\n countryCode,\n deviceType = Device.DESKTOP,\n zipcode,\n lang,\n tz\n} = {}) {\n if (query.length === 0) {\n return Promise.reject(new Error('No params to get a search result.'));\n }\n\n const sanitizedQuery = sanitizeQueryString(query);\n if (!sanitizedQuery) {\n return Promise.reject(new Error('No Valid Query Entered'));\n }\n const qs = queryString({\n q: sanitizedQuery,\n size: 50,\n authNetworks,\n countryCode,\n deviceType,\n zipcode,\n lang,\n tz,\n includeDtcContent: true\n });\n const url = `${getServiceUrl(apiEnv)}${config.paths.search}${qs}`;\n\n return request.get(url)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n }, (err) => {\n if (err.status === 404) {\n return ERROR_PAGE_RESPONSE;\n }\n return fallback.get(url);\n });\n}\n\nexport function getAllCompetitors(apiEnv) {\n const url = `${getServiceUrl(apiEnv)}${config.paths.keyword.base}`;\n return request.get(url)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n }, (err) => {\n if (err.status === 404) {\n return [];\n }\n return fallback.get(url);\n });\n}\n\n\nexport function getEventsForTeam(team, apiEnv, { size, includes, sortBy, sortOrder } = {}) {\n const qs = queryString({\n size,\n includes,\n sortBy,\n sortOrder\n });\n const url = `${getServiceUrl(apiEnv)}${config.paths.keyword.base}/${encodeURIComponent(team)}/listings${qs}`;\n return request.get(url)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n }, (err) => {\n if (err.status === 404) {\n return ERROR_PAGE_RESPONSE;\n }\n return fallback.get(url);\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/SearchAPI.js","import request from './cache/requestCache';\nimport proxy from './requestProxy';\nimport toAbsoluteURL from 'lib/url-adapter/toAbsoluteURL';\nimport appConfig from '../../../config';\n\nconst videoApiConfig = appConfig.videoApi;\n\nconst DEFAULT_CONFIGURATION = {\n serviceUrl: '//api-app.espn.com/v1/video',\n internalServiceUrl: '//sports-bc.prod.espninfra.starwave.com/allsports/apis/v1/video',\n apiKey: ''\n};\n\nconst config = { ...DEFAULT_CONFIGURATION, ...videoApiConfig };\n\nexport function getChannels() {\n const url = `${toAbsoluteURL(config.serviceUrl)}/channels`;\n\n return request(url)\n .use(proxy)\n .then((response) => response.body, () => {\n throw new Error('Could not retrieve video api data.');\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/VideoAPI.js","import loglevel from 'loglevel';\nimport { apiDateFormatter, queryString } from 'lib/format';\nimport toAbsoluteURL from 'lib/url-adapter/toAbsoluteURL';\nimport { LISTINGS_API_CONFIGURATION } from 'constants';\nimport request from './cache/requestCache';\nimport proxy from './requestProxy';\nimport fallback from './cache/fallbackCache';\nimport appConfig from '../../../config';\nimport { Api } from 'enums';\n\nconst { Env: ApiEnv } = Api;\n\nconst log = loglevel.getLogger('WatchAPI');\nconst watchApiConfig = appConfig.watchApi;\n\nconst DEFAULT_CONFIGURATION = {\n apiKey: '',\n networks: 'espn1,espn2,espn3,espnu,sec,secplus,espnews,espndeportes,longhorn,goalline,buzzerbeater,acc,accextra,secplus',\n resultsLimit: 200\n};\n\nexport const getServiceUrl = (env = ApiEnv.PROD) => toAbsoluteURL(LISTINGS_API_CONFIGURATION[env].serviceUrl);\n\nconst config = { ...DEFAULT_CONFIGURATION, ...watchApiConfig };\n\nexport function getListings({ types, networks, id, eventId, airingId, categories, subcategories, dates, limit = config.resultsLimit, apiEnv = ApiEnv.PROD }, listingsHref) {\n const typesQuery = types ? types.join(',') : '';\n const networksQuery = (networks === '') ? config.networks : null;\n const categoriesQuery = categories ? categories.join(',') : '';\n const subcategoriesQuery = subcategories ? subcategories.join(',') : '';\n const datesQuery = dates ? apiDateFormatter(...dates) : 0;\n const limitQuery = limit;\n // Need ability to pass in listingsHref for conference channels (from state)\n const baseUrl = listingsHref || `${getServiceUrl(apiEnv)}/listings`;\n\n const qs = queryString({\n types: typesQuery,\n networks: networksQuery,\n id,\n eventId,\n airingId,\n categories: categoriesQuery,\n subcategories: subcategoriesQuery,\n dates: datesQuery,\n limit: limitQuery\n });\n // if a baseUrl is passed in, it could potentially already have queryParamters. Need to replace ? with & if so\n const url = (baseUrl.indexOf('?') !== -1) ? `${baseUrl}${qs.replace('?', '&')}` : `${baseUrl}${qs}`;\n\n log.debug(`getClient: ${url}`);\n return request(url)\n .use(proxy)\n .then((response) => {\n const listings = response.body.listings || [];\n fallback.set(url, listings);\n return listings;\n })\n .catch((err) => {\n log.error('getListings:', err.originalError);\n return fallback.get(url);\n });\n}\n\nexport function getListingsBySubcategory({ types, networks, id, eventId, airingId, subcategory, dates, limit = config.resultsLimit, apiEnv = ApiEnv.PROD }) {\n const typesQuery = types ? types.join(',') : '';\n const networksQuery = (networks === '') ? config.networks : networks.join(',');\n let datesQuery = 0;\n if (typeof dates === 'string' && /^\\d{8}/.test(dates)) {\n datesQuery = dates;\n } else if (Array.isArray(dates)) {\n datesQuery = apiDateFormatter(...dates);\n }\n const limitQuery = limit;\n const baseUrl = `${getServiceUrl(apiEnv)}/subcategories/${subcategory}/listings`;\n\n const qs = queryString({\n types: typesQuery,\n networks: networksQuery,\n id,\n eventId,\n airingId,\n dates: datesQuery,\n limit: limitQuery\n });\n // if a baseUrl is passed in, it could potentially already have queryParamters. Need to replace ? with & if so\n const url = (baseUrl.indexOf('?') !== -1) ? `${baseUrl}${qs.replace('?', '&')}` : `${baseUrl}${qs}`;\n\n return request(url)\n .use(proxy)\n .then((response) => {\n const subcategories = response.body.subcategories || [];\n const listings = subcategories[0] && subcategories[0].listings;\n fallback.set(url, listings);\n return listings;\n })\n .catch((err) => {\n log.error('getListingsBySubcategory:', err.originalError);\n return fallback.get(url);\n });\n}\n\nexport function getTopCategories(apiEnv = ApiEnv.PROD) {\n const url = `${getServiceUrl(apiEnv)}/categories/top`;\n\n return request(url)\n .use(proxy)\n .then((response) => {\n const categories = response.body.categories || [];\n fallback.set(url, categories);\n return categories;\n })\n .catch((err) => {\n log.error('getTopCategories:', err.originalError);\n return fallback.get(url);\n });\n}\n\nexport function getPrioritizedEventFromListings(listings, lang) {\n let event;\n let matchedLangLiveNonE3;\n let matchedLiveE3;\n let matchedLangLiveE3;\n let matchedLiveNonE3;\n let matchedLangNonE3;\n let matchedLangE3;\n let matchedLangReplay;\n let index = 0;\n const len = listings.length;\n\n for (; index < len; index += 1) {\n const content = listings[index];\n const { type, lang: sourceLang, broadcasts: [{ ncsId }] } = content;\n event = content;\n if (len === 1) {\n break;\n }\n // prefer same lang, live and non-E3\n if (sourceLang === lang) {\n if (type === 'live') {\n if (ncsId !== 'n360') {\n matchedLangLiveNonE3 = event;\n break;\n } else if (!matchedLangLiveE3) {\n matchedLangLiveE3 = event;\n }\n } else if (type === 'replay') {\n if (!matchedLangReplay) {\n matchedLangReplay = event;\n }\n } else if (ncsId !== 'n360') {\n if (!matchedLangNonE3) {\n matchedLangNonE3 = event;\n }\n } else if (!matchedLangE3) {\n matchedLangE3 = event;\n }\n } else if (type === 'live') {\n if (ncsId !== 'n360') {\n if (!matchedLiveNonE3) {\n matchedLiveNonE3 = event;\n }\n } else if (!matchedLiveE3) {\n matchedLiveE3 = event;\n }\n }\n }\n\n return (\n matchedLangLiveNonE3 ||\n matchedLangLiveE3 ||\n matchedLiveNonE3 ||\n matchedLiveE3 ||\n matchedLangReplay ||\n matchedLangNonE3 ||\n matchedLangE3 ||\n event\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/WatchAPI.js","import loglevel from 'loglevel';\nimport { GRAPHQL_API_CONFIGURATION, GRAPHQL_API_KEY } from 'constants';\nimport { AIRINGS, AIRING, VOD, NETWORKS } from 'queries';\nimport { Api } from 'enums';\nimport { queryString } from 'lib/format';\nimport toAbsoluteURL from 'lib/url-adapter/toAbsoluteURL';\nimport { newRelicEmitter, UNFULFILLED_PROMISE_EVENT} from 'lib/metrics/newRelicEventBus';\nimport request from './cache/requestCache';\nimport proxy from './requestProxy';\nimport fallback from './cache/fallbackCache';\n\nconst { Env: ApiEnv } = Api;\n\nconst log = loglevel.getLogger('GraphQL');\n\nexport const config = {\n basePath: '/api'\n};\n\nexport const getServiceUrl = (env = ApiEnv.PROD) => {\n return toAbsoluteURL(GRAPHQL_API_CONFIGURATION[env].serviceUrl);\n};\n\nexport const getBaseUrl = (env = ApiEnv.PROD) => {\n return `${getServiceUrl(env)}${config.basePath}`;\n};\n\nexport function getNetworks({\n lang,\n apiEnv,\n variables\n}) {\n return makeRequest({\n lang,\n apiEnv,\n query: NETWORKS,\n variables\n });\n}\n\nexport function getAirings({\n lang,\n apiEnv,\n variables\n}) {\n return makeRequest({\n lang,\n apiEnv,\n query: AIRINGS,\n variables\n });\n}\n\nexport function getAiring({\n lang,\n apiEnv,\n variables\n}) {\n return makeRequest({\n lang,\n apiEnv,\n query: AIRING,\n variables\n });\n}\n\nexport function getVideo({\n lang,\n apiEnv,\n variables\n}) {\n return makeRequest({\n lang,\n apiEnv,\n query: VOD,\n variables\n });\n}\n\nexport function makeRequest({\n lang,\n apiEnv,\n query,\n variables\n}) {\n const qs = queryString({\n query: query.replace(/\\n/g, '').replace(/^(\\s+)|(\\s+)$/g, '').replace(/(\\s+)/g, ' '),\n variables: JSON.stringify(variables),\n apiKey: GRAPHQL_API_KEY\n }, true);\n const url = `${getBaseUrl(apiEnv)}${qs}`;\n log.debug(`makeRequest: ${url}`);\n\n return request.get(url)\n .set('Accept-Language', lang)\n .use(proxy)\n .then(({ body }) => {\n if (body.errors) {\n if (body.errors[0]) {\n const err = new Error(body.errors[0].message);\n log.error(`makeRequest: ${url}`, err.message);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n }\n return body;\n }\n fallback.set(url, body);\n return body;\n })\n .catch((err) => {\n log.error(`makeRequest: ${url}`, err.status);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n // make sure response is not `null`, so we can use default assignment\n return fallback.get(url).then(response => response || {});\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/GraphQL.js","import { queryString } from 'lib/format';\n\nconst appLinkBase = 'espnapi://espnnetworks.AdobePassProviderChosen';\n\nexport default class Provider {\n constructor({\n id,\n name,\n abbreviation,\n ispId,\n tier = 2,\n rank,\n links,\n images,\n analytics = {},\n streamLimiting = {},\n countries = [{countryCode: 'US'}],\n packages = []\n }, partner = 'espn', platform = 'web', version) {\n this.id = id;\n this.name = name;\n this.abbreviation = abbreviation || ispId;\n this.ispId = ispId;\n this.tier = tier;\n this.rank = rank,\n this.links = links;\n this.images = images;\n this.analytics = analytics;\n this.streamLimiting = streamLimiting;\n this.countries = countries;\n this.packages = packages;\n const appLinkQuery = queryString({ partner, platform, version, mvpd: abbreviation });\n this.appLink = `${appLinkBase}${appLinkQuery}`\n }\n\n /**\n * Provider\n * @Param {Object} domesticProvider - A domestic provider from /watch/clients/watchespn-web/providers\n */\n static createProviderDomestic(provider, partner, platform, version) {\n return new Provider(provider, partner, platform, version);\n }\n\n /**\n * Provider\n * @Param {Object} intlProvider - An international affiliate from the intl provider feed\n */\n static createProviderIntl({\n name,\n adobeId,\n analyticsId,\n ispId,\n logos: {\n desktop,\n mobile,\n settop,\n pickerImage,\n negativebgcolorImage,\n positivebgcolorImage\n },\n websiteUrl,\n countries = [],\n packages\n }, countryCode = '') {\n const providerCountry = countries.filter((country) => country.countryCode.toLowerCase() === countryCode.toLowerCase());\n const tier = (providerCountry.length > 0 && providerCountry[0].tier === 1) ? 1 : 2;\n const rank = (providerCountry.length > 0 && providerCountry[0].rank) ? providerCountry[0].rank : null;\n\n return new Provider({\n id: adobeId,\n name,\n abbreviation: adobeId,\n ispId,\n links: { web: { href: websiteUrl } },\n images: {\n logo: { href: desktop },\n mobile: { href: mobile },\n settop: { href: settop },\n picker: { href: pickerImage },\n whiteBackground: { href: positivebgcolorImage },\n colorWithPositiveBackground: { href: positivebgcolorImage },\n colorWithNegativeBackground: { href: negativebgcolorImage }\n },\n analytics: { id: analyticsId },\n countries,\n tier,\n rank,\n packages\n })\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/Provider.js","export const AIRINGS = `\n query Airings (\n $countryCode: String!,\n $deviceType: DeviceType!,\n $tz: String!,\n $type: AiringType,\n $categories: [String],\n $networks: [String],\n $packages: [String],\n $eventId: String,\n $packageId: String,\n $start: String,\n $end: String,\n $day: String,\n $limit: Int\n ) {\n airings(\n countryCode: $countryCode,\n deviceType: $deviceType,\n tz: $tz,\n type: $type,\n categories: $categories,\n networks: $networks,\n packages: $packages,\n eventId: $eventId,\n packageId: $packageId,\n start: $start,\n end: $end,\n day: $day,\n limit: $limit\n ) {\n id\n airingId\n simulcastAiringId\n name\n type\n startDateTime\n shortDate: startDate(style: SHORT)\n authTypes\n adobeRSS\n duration\n feedName\n purchaseImage {\n url\n }\n image {\n url\n }\n network {\n id\n type\n abbreviation\n name\n shortName\n adobeResource\n isIpAuth\n }\n source {\n url\n authorizationType\n hasPassThroughAds\n hasNielsenWatermarks\n hasEspnId3Heartbeats\n commercialReplacement\n }\n packages {\n name\n }\n category {\n id\n name\n }\n subcategory {\n id\n name\n }\n sport {\n id\n name\n abbreviation\n code\n }\n league {\n id\n name\n abbreviation\n code\n }\n franchise {\n id\n name\n }\n program {\n id\n code\n categoryCode\n isStudio\n }\n tracking {\n nielsenCrossId1\n nielsenCrossId2\n comscoreC6\n trackingId\n }\n }\n }\n`;\n\nexport const AIRING = `\n query Airing (\n $id: ID!,\n $countryCode: String!,\n $deviceType: DeviceType!,\n $tz: String!\n ) {\n airing(\n id: $id,\n countryCode: $countryCode,\n deviceType: $deviceType,\n tz: $tz\n ) {\n id\n airingId\n simulcastAiringId\n name\n type\n startDateTime\n shortDate: startDate(style: SHORT)\n authTypes\n adobeRSS\n duration\n feedName\n image {\n url\n }\n network {\n id\n type\n abbreviation\n name\n shortName\n adobeResource\n isIpAuth\n }\n source {\n url\n authorizationType\n hasPassThroughAds\n hasNielsenWatermarks\n hasEspnId3Heartbeats\n commercialReplacement\n }\n packages {\n name\n }\n category {\n id\n name\n }\n subcategory {\n id\n name\n }\n sport {\n id\n name\n abbreviation\n code\n }\n league {\n id\n name\n abbreviation\n code\n }\n franchise {\n id\n name\n }\n program {\n id\n code\n categoryCode\n isStudio\n }\n tracking {\n nielsenCrossId1\n nielsenCrossId2\n comscoreC6\n trackingId\n }\n }\n }\n`;\n\nexport const VOD = `\n query VOD(\n $countryCode: String!,\n $deviceType: DeviceType!,\n $tz: String!,\n $packageId: String,\n $id: ID!\n ) {\n VOD(\n countryCode: $countryCode,\n deviceType: $deviceType,\n tz: $tz,\n $packageId: String,\n id: $id\n ) {\n id\n name\n origination\n originalPublishDate\n embargoDate\n expirationDate\n lastModifiedDate\n image {\n url\n }\n description\n source {\n url\n authorizationType\n }\n category {\n id\n name\n }\n subcategory {\n id\n name\n }\n sport {\n id\n name\n abbreviation\n code\n }\n league {\n id\n name\n abbreviation\n code\n }\n links {\n web\n }\n tracking {\n name\n sportName\n leagueName\n }\n ad {\n sport\n bundle\n }\n coverageType\n authTypes\n duration\n }\n }\n`;\n\nexport const NETWORKS = `\n query Networks(\n $countryCode: String!\n ) {\n networks(\n countryCode: $countryCode\n ) {\n id\n name\n abbreviation\n shortName\n adobeResource\n type\n isActive\n isIpAuth\n }\n }\n`;\n\n\n\n// WEBPACK FOOTER //\n// ./app/queries.js","import * as Bootstrap from './Bootstrap';\nimport * as ClientAPI from './ClientAPI';\nimport * as PageAPI from './PageAPI';\nimport * as SearchAPI from './SearchAPI';\nimport * as VideoAPI from './VideoAPI';\nimport * as WatchAPI from './WatchAPI';\nimport * as GraphQL from './GraphQL';\n\nexport {\n Bootstrap,\n ClientAPI,\n PageAPI,\n SearchAPI,\n VideoAPI,\n WatchAPI,\n GraphQL\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/index.js","export default function toAbsoluteURL(url) {\n if (url && url.indexOf('//') === 0 && !process.browser) { // protocol relative and server side\n return `http:${url}`;\n } else if (url && url.indexOf('//') === 0 && process.browser) {\n return `https:${url}`;\n }\n return url;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/url-adapter/toAbsoluteURL.js","import { createSelector } from 'reselect';\n\nconst fanSelector = ({ fan = {} }) => fan;\n\nexport default createSelector(fanSelector, (fan) => fan);\n\nexport const favoriteTeamSelector = createSelector(\n fanSelector,\n ({ preferences }) => {\n let uids;\n if (!preferences || !preferences.metaData) {\n return uids;\n }\n\n uids = preferences\n .filter(({ metaData }) => !!metaData.team)\n .map(({ metaData }) => {\n const { sportId, teamId } = metaData;\n let value = '';\n // do not grab `uid` since it includes the league info we never supports\n if (sportId) {\n value = `s:${sportId}`;\n if (teamId) {\n value += `~t:${teamId}`;\n }\n }\n return value;\n });\n return uids.join(',');\n }\n);\n\nexport const favoriteSportSelector = createSelector(\n fanSelector,\n ({ preferences }) => {\n let uids;\n if (!preferences || !preferences.metaData) {\n return uids;\n }\n\n uids = preferences\n .filter(({ metaData }) => !!metaData.sport)\n .map(({ metaData }) => {\n const { sportId } = metaData;\n let value = '';\n // do not grab `uid` since it includes the league info we never supports\n if (sportId) {\n value = `s:${sportId}`;\n }\n return value;\n });\n return uids.join(',');\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/fanSelector.js","import { adEditionSelector } from 'common/selectors/appSelector';\nimport { adSiteSelector } from 'common/selectors/adsSelector';\n\nexport const ADS_CONFIG = 'ADS_CONFIG';\nexport const ADS_CONFIG_INVALIDATED = 'ADS_CONFIG_INVALIDATED';\nexport const ADS_INITIALIZED = 'ADS_INITIALIZED';\nexport const ADS_REFRESHED = 'ADS_REFRESHED';\n\nfunction normalizePageId(id) {\n return id === 'home' ? 'index' : id;\n}\n\nexport function setAdsConfig(id, config) {\n return {\n type: ADS_CONFIG,\n id,\n config\n };\n}\n\nexport function initAdsConfig(id = '', tracking, kvps = {}, query = {}) {\n return (dispatch, getState) => {\n const pageId = normalizePageId(id);\n const state = getState();\n const adSite = adSiteSelector(state);\n const adEdition = adEditionSelector(state);\n const pgn = normalizePageId(((tracking && tracking.context && tracking.context.PageName) || '').toLowerCase());\n const { adprodtest, adtar, tstAdTar } = query;\n // NOTE: The `adtar`, `adprodtest` and `tstAdTar` query params are used to test Content|Overlay|Banner Ads\n // Example: ?adprodtest=usuaptest01 will return test Ad placeholders\n const adtarParam = (adprodtest || adtar || null);\n const tstAdTarParam = (tstAdTar || null);\n\n kvps.pgtyp = pageId;\n kvps.ed = adEdition;\n if (pgn) {\n kvps.pgn = pgn;\n }\n\n // NOTE: New key as of 05/2019\n // SEE: https://espnjira.disney.com/browse/WEWEB-2308\n if (tstAdTarParam) {\n kvps.tstAdTar = tstAdTarParam;\n } else if (adtarParam) {\n kvps.adtar = adtarParam;\n }\n\n const config = { level: `${adSite}/watch/${pageId}`, kvps };\n return dispatch(setAdsConfig(id, config));\n };\n}\n\nexport function invalidateAdsConfig() {\n return {\n type: ADS_CONFIG_INVALIDATED\n };\n}\n\nexport function adsInitialized() {\n return {\n type: ADS_INITIALIZED\n };\n}\n\nexport function adsRefreshed() {\n return {\n type: ADS_REFRESHED\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ads/actions/index.js","var exports = module.exports = function (doc) {\n if (!doc) doc = {};\n if (typeof doc === 'string') doc = { cookie: doc };\n if (doc.cookie === undefined) doc.cookie = '';\n \n var self = {};\n self.get = function (key) {\n var splat = doc.cookie.split(/;\\s*/);\n for (var i = 0; i < splat.length; i++) {\n var ps = splat[i].split('=');\n var k = unescape(ps[0]);\n if (k === key) return unescape(ps[1]);\n }\n return undefined;\n };\n \n self.set = function (key, value, opts) {\n if (!opts) opts = {};\n var s = escape(key) + '=' + escape(value);\n if (opts.expires) s += '; expires=' + opts.expires;\n if (opts.path) s += '; path=' + escape(opts.path);\n if (opts.domain) s += '; domain=' + escape(opts.domain);\n if (opts.secure) s += '; secure';\n doc.cookie = s;\n return s;\n };\n return self;\n};\n\nif (typeof document !== 'undefined') {\n var cookie = exports(document);\n exports.get = cookie.get;\n exports.set = cookie.set;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/cookie-cutter/index.js\n// module id = 93\n// module chunks = 1","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/uniq.js\n// module id = 94\n// module chunks = 1","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nvar RelativeTimeFormat;\n// -- Utilities ----------------------------------------------------------------\nfunction getCacheId(inputs) {\n return JSON.stringify(inputs.map(function (input) {\n return input && typeof input === 'object' ? orderedProps(input) : input;\n }));\n}\nfunction orderedProps(obj) {\n return Object.keys(obj)\n .sort()\n .map(function (k) {\n var _a;\n return (_a = {}, _a[k] = obj[k], _a);\n });\n}\nvar memoizeFormatConstructor = function (FormatConstructor, cache) {\n if (cache === void 0) { cache = {}; }\n return function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var cacheId = getCacheId(args);\n var format = cacheId && cache[cacheId];\n if (!format) {\n format = new ((_a = FormatConstructor).bind.apply(_a, [void 0].concat(args)))();\n if (cacheId) {\n cache[cacheId] = format;\n }\n }\n return format;\n };\n};\nexport default memoizeFormatConstructor;\n//# sourceMappingURL=index.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-format-cache/lib/index.js\n// module id = null\n// module chunks = ","/*\n * Copyright 2019, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport allLocaleData from '../locale-data/index.js';\nimport IntlMessageFormat from 'intl-messageformat';\nimport IntlRelativeFormat from 'intl-relativeformat';\nimport PropTypes from 'prop-types';\nimport React, { Children, Component, createElement, isValidElement } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport memoizeIntlConstructor from 'intl-format-cache';\n\n// GENERATED FILE\nvar defaultLocaleData = { \"locale\": \"en\", \"pluralRuleFunction\": function pluralRuleFunction(n, ord) {\n var s = String(n).split(\".\"),\n v0 = !s[1],\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2);if (ord) return n10 == 1 && n100 != 11 ? \"one\" : n10 == 2 && n100 != 12 ? \"two\" : n10 == 3 && n100 != 13 ? \"few\" : \"other\";return n == 1 && v0 ? \"one\" : \"other\";\n }, \"fields\": { \"year\": { \"displayName\": \"year\", \"relative\": { \"0\": \"this year\", \"1\": \"next year\", \"-1\": \"last year\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} year\", \"other\": \"in {0} years\" }, \"past\": { \"one\": \"{0} year ago\", \"other\": \"{0} years ago\" } } }, \"year-short\": { \"displayName\": \"yr.\", \"relative\": { \"0\": \"this yr.\", \"1\": \"next yr.\", \"-1\": \"last yr.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} yr.\", \"other\": \"in {0} yr.\" }, \"past\": { \"one\": \"{0} yr. ago\", \"other\": \"{0} yr. ago\" } } }, \"month\": { \"displayName\": \"month\", \"relative\": { \"0\": \"this month\", \"1\": \"next month\", \"-1\": \"last month\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} month\", \"other\": \"in {0} months\" }, \"past\": { \"one\": \"{0} month ago\", \"other\": \"{0} months ago\" } } }, \"month-short\": { \"displayName\": \"mo.\", \"relative\": { \"0\": \"this mo.\", \"1\": \"next mo.\", \"-1\": \"last mo.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} mo.\", \"other\": \"in {0} mo.\" }, \"past\": { \"one\": \"{0} mo. ago\", \"other\": \"{0} mo. ago\" } } }, \"day\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"day-short\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"hour\": { \"displayName\": \"hour\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hour\", \"other\": \"in {0} hours\" }, \"past\": { \"one\": \"{0} hour ago\", \"other\": \"{0} hours ago\" } } }, \"hour-short\": { \"displayName\": \"hr.\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hr.\", \"other\": \"in {0} hr.\" }, \"past\": { \"one\": \"{0} hr. ago\", \"other\": \"{0} hr. ago\" } } }, \"minute\": { \"displayName\": \"minute\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} minute\", \"other\": \"in {0} minutes\" }, \"past\": { \"one\": \"{0} minute ago\", \"other\": \"{0} minutes ago\" } } }, \"minute-short\": { \"displayName\": \"min.\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} min.\", \"other\": \"in {0} min.\" }, \"past\": { \"one\": \"{0} min. ago\", \"other\": \"{0} min. ago\" } } }, \"second\": { \"displayName\": \"second\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} second\", \"other\": \"in {0} seconds\" }, \"past\": { \"one\": \"{0} second ago\", \"other\": \"{0} seconds ago\" } } }, \"second-short\": { \"displayName\": \"sec.\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} sec.\", \"other\": \"in {0} sec.\" }, \"past\": { \"one\": \"{0} sec. ago\", \"other\": \"{0} sec. ago\" } } } } };\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction addLocaleData() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var locales = Array.isArray(data) ? data : [data];\n\n locales.forEach(function (localeData) {\n if (localeData && localeData.locale) {\n IntlMessageFormat.__addLocaleData(localeData);\n IntlRelativeFormat.__addLocaleData(localeData);\n }\n });\n}\n\nfunction hasLocaleData(locale) {\n var localeParts = (locale || '').split('-');\n\n while (localeParts.length > 0) {\n if (hasIMFAndIRFLocaleData(localeParts.join('-'))) {\n return true;\n }\n\n localeParts.pop();\n }\n\n return false;\n}\n\nfunction hasIMFAndIRFLocaleData(locale) {\n var normalizedLocale = locale && locale.toLowerCase();\n\n return !!(IntlMessageFormat.__localeData__[normalizedLocale] && IntlRelativeFormat.__localeData__[normalizedLocale]);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\nvar asyncGenerator = function () {\n function AwaitValue(value) {\n this.value = value;\n }\n\n function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n\n if (value instanceof AwaitValue) {\n Promise.resolve(value.value).then(function (arg) {\n resume(\"next\", arg);\n }, function (arg) {\n resume(\"throw\", arg);\n });\n } else {\n settle(result.done ? \"return\" : \"normal\", result.value);\n }\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== \"function\") {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n\n AsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n };\n\n AsyncGenerator.prototype.throw = function (arg) {\n return this._invoke(\"throw\", arg);\n };\n\n AsyncGenerator.prototype.return = function (arg) {\n return this._invoke(\"return\", arg);\n };\n\n return {\n wrap: function (fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n },\n await: function (value) {\n return new AwaitValue(value);\n }\n };\n}();\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (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\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar bool = PropTypes.bool;\nvar number = PropTypes.number;\nvar string = PropTypes.string;\nvar func = PropTypes.func;\nvar object = PropTypes.object;\nvar oneOf = PropTypes.oneOf;\nvar shape = PropTypes.shape;\nvar any = PropTypes.any;\nvar oneOfType = PropTypes.oneOfType;\n\nvar localeMatcher = oneOf(['best fit', 'lookup']);\nvar narrowShortLong = oneOf(['narrow', 'short', 'long']);\nvar numeric2digit = oneOf(['numeric', '2-digit']);\nvar funcReq = func.isRequired;\n\nvar intlConfigPropTypes = {\n locale: string,\n timeZone: string,\n formats: object,\n messages: object,\n textComponent: any,\n\n defaultLocale: string,\n defaultFormats: object,\n\n onError: func\n};\n\nvar intlFormatPropTypes = {\n formatDate: funcReq,\n formatTime: funcReq,\n formatRelative: funcReq,\n formatNumber: funcReq,\n formatPlural: funcReq,\n formatMessage: funcReq,\n formatHTMLMessage: funcReq\n};\n\nvar intlShape = shape(_extends({}, intlConfigPropTypes, intlFormatPropTypes, {\n formatters: object,\n now: funcReq\n}));\n\nvar messageDescriptorPropTypes = {\n id: string.isRequired,\n description: oneOfType([string, object]),\n defaultMessage: string\n};\n\nvar dateTimeFormatPropTypes = {\n localeMatcher: localeMatcher,\n formatMatcher: oneOf(['basic', 'best fit']),\n\n timeZone: string,\n hour12: bool,\n\n weekday: narrowShortLong,\n era: narrowShortLong,\n year: numeric2digit,\n month: oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: numeric2digit,\n hour: numeric2digit,\n minute: numeric2digit,\n second: numeric2digit,\n timeZoneName: oneOf(['short', 'long'])\n};\n\nvar numberFormatPropTypes = {\n localeMatcher: localeMatcher,\n\n style: oneOf(['decimal', 'currency', 'percent']),\n currency: string,\n currencyDisplay: oneOf(['symbol', 'code', 'name']),\n useGrouping: bool,\n\n minimumIntegerDigits: number,\n minimumFractionDigits: number,\n maximumFractionDigits: number,\n minimumSignificantDigits: number,\n maximumSignificantDigits: number\n};\n\nvar relativeFormatPropTypes = {\n style: oneOf(['best fit', 'numeric']),\n units: oneOf(['second', 'minute', 'hour', 'day', 'month', 'year', 'second-short', 'minute-short', 'hour-short', 'day-short', 'month-short', 'year-short'])\n};\n\nvar pluralFormatPropTypes = {\n style: oneOf(['cardinal', 'ordinal'])\n};\n\n/*\nHTML escaping and shallow-equals implementations are the same as React's\n(on purpose.) Therefore, it has the following Copyright and Licensing:\n\nCopyright 2013-2014, Facebook, Inc.\nAll rights reserved.\n\nThis source code is licensed under the BSD-style license found in the LICENSE\nfile in the root directory of React's source tree.\n*/\n\nvar intlConfigPropNames = Object.keys(intlConfigPropTypes);\n\nvar ESCAPED_CHARS = {\n '&': '&',\n '>': '>',\n '<': '<',\n '\"': '"',\n \"'\": '''\n};\n\nvar UNSAFE_CHARS_REGEX = /[&><\"']/g;\n\nfunction escape(str) {\n return ('' + str).replace(UNSAFE_CHARS_REGEX, function (match) {\n return ESCAPED_CHARS[match];\n });\n}\n\nfunction filterProps(props, whitelist) {\n var defaults$$1 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n return whitelist.reduce(function (filtered, name) {\n if (props.hasOwnProperty(name)) {\n filtered[name] = props[name];\n } else if (defaults$$1.hasOwnProperty(name)) {\n filtered[name] = defaults$$1[name];\n }\n\n return filtered;\n }, {});\n}\n\nfunction invariantIntlContext() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n intl = _ref.intl;\n\n invariant(intl, '[React Intl] Could not find required `intl` object. ' + '<IntlProvider> needs to exist in the component ancestry.');\n}\n\nfunction shallowEquals(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n for (var i = 0; i < keysA.length; i++) {\n if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction shouldIntlComponentUpdate(_ref2, nextProps, nextState) {\n var props = _ref2.props,\n state = _ref2.state,\n _ref2$context = _ref2.context,\n context = _ref2$context === undefined ? {} : _ref2$context;\n var nextContext = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _context$intl = context.intl,\n intl = _context$intl === undefined ? {} : _context$intl;\n var _nextContext$intl = nextContext.intl,\n nextIntl = _nextContext$intl === undefined ? {} : _nextContext$intl;\n\n\n return !shallowEquals(nextProps, props) || !shallowEquals(nextState, state) || !(nextIntl === intl || shallowEquals(filterProps(nextIntl, intlConfigPropNames), filterProps(intl, intlConfigPropNames)));\n}\n\nfunction createError(message, exception) {\n var eMsg = exception ? '\\n' + exception : '';\n return '[React Intl] ' + message + eMsg;\n}\n\nfunction defaultErrorHandler(error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(error);\n }\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// Inspired by react-redux's `connect()` HOC factory function implementation:\n// https://github.com/rackt/react-redux\n\nfunction getDisplayName(Component$$1) {\n return Component$$1.displayName || Component$$1.name || 'Component';\n}\n\nfunction injectIntl(WrappedComponent) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$intlPropName = options.intlPropName,\n intlPropName = _options$intlPropName === undefined ? 'intl' : _options$intlPropName,\n _options$withRef = options.withRef,\n withRef = _options$withRef === undefined ? false : _options$withRef;\n\n var InjectIntl = function (_Component) {\n inherits(InjectIntl, _Component);\n\n function InjectIntl(props, context) {\n classCallCheck(this, InjectIntl);\n\n var _this = possibleConstructorReturn(this, (InjectIntl.__proto__ || Object.getPrototypeOf(InjectIntl)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(InjectIntl, [{\n key: 'getWrappedInstance',\n value: function getWrappedInstance() {\n invariant(withRef, '[React Intl] To access the wrapped instance, ' + 'the `{withRef: true}` option must be set when calling: ' + '`injectIntl()`');\n\n return this._wrappedInstance;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return React.createElement(WrappedComponent, _extends({}, this.props, defineProperty({}, intlPropName, this.context.intl), {\n ref: withRef ? /* istanbul ignore next */function (ref) {\n return _this2._wrappedInstance = ref;\n } : null\n }));\n }\n }]);\n return InjectIntl;\n }(Component);\n\n InjectIntl.displayName = 'InjectIntl(' + getDisplayName(WrappedComponent) + ')';\n InjectIntl.contextTypes = {\n intl: intlShape\n };\n InjectIntl.WrappedComponent = WrappedComponent;\n\n\n return hoistNonReactStatics(InjectIntl, WrappedComponent);\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction defineMessages(messageDescriptors) {\n // This simply returns what's passed-in because it's meant to be a hook for\n // babel-plugin-react-intl.\n return messageDescriptors;\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// This is a \"hack\" until a proper `intl-pluralformat` package is created.\n\nfunction resolveLocale(locales) {\n // IntlMessageFormat#_resolveLocale() does not depend on `this`.\n return IntlMessageFormat.prototype._resolveLocale(locales);\n}\n\nfunction findPluralFunction(locale) {\n // IntlMessageFormat#_findPluralFunction() does not depend on `this`.\n return IntlMessageFormat.prototype._findPluralRuleFunction(locale);\n}\n\nvar IntlPluralFormat = function IntlPluralFormat(locales) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, IntlPluralFormat);\n\n var useOrdinal = options.style === 'ordinal';\n var pluralFn = findPluralFunction(resolveLocale(locales));\n\n this.format = function (value) {\n return pluralFn(value, useOrdinal);\n };\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar DATE_TIME_FORMAT_OPTIONS = Object.keys(dateTimeFormatPropTypes);\nvar NUMBER_FORMAT_OPTIONS = Object.keys(numberFormatPropTypes);\nvar RELATIVE_FORMAT_OPTIONS = Object.keys(relativeFormatPropTypes);\nvar PLURAL_FORMAT_OPTIONS = Object.keys(pluralFormatPropTypes);\n\nvar RELATIVE_FORMAT_THRESHOLDS = {\n second: 60, // seconds to minute\n minute: 60, // minutes to hour\n hour: 24, // hours to day\n day: 30, // days to month\n month: 12 };\n\nfunction updateRelativeFormatThresholds(newThresholds) {\n var thresholds = IntlRelativeFormat.thresholds;\n thresholds.second = newThresholds.second;\n thresholds.minute = newThresholds.minute;\n thresholds.hour = newThresholds.hour;\n thresholds.day = newThresholds.day;\n thresholds.month = newThresholds.month;\n thresholds['second-short'] = newThresholds['second-short'];\n thresholds['minute-short'] = newThresholds['minute-short'];\n thresholds['hour-short'] = newThresholds['hour-short'];\n thresholds['day-short'] = newThresholds['day-short'];\n thresholds['month-short'] = newThresholds['month-short'];\n}\n\nfunction getNamedFormat(formats, type, name, onError) {\n var format = formats && formats[type] && formats[type][name];\n if (format) {\n return format;\n }\n\n onError(createError('No ' + type + ' format named: ' + name));\n}\n\nfunction formatDate(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats,\n timeZone = config.timeZone;\n var format = options.format;\n\n\n var onError = config.onError || defaultErrorHandler;\n var date = new Date(value);\n var defaults$$1 = _extends({}, timeZone && { timeZone: timeZone }, format && getNamedFormat(formats, 'date', format, onError));\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n try {\n return state.getDateTimeFormat(locale, filteredOptions).format(date);\n } catch (e) {\n onError(createError('Error formatting date.', e));\n }\n\n return String(date);\n}\n\nfunction formatTime(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats,\n timeZone = config.timeZone;\n var format = options.format;\n\n\n var onError = config.onError || defaultErrorHandler;\n var date = new Date(value);\n var defaults$$1 = _extends({}, timeZone && { timeZone: timeZone }, format && getNamedFormat(formats, 'time', format, onError));\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n if (!filteredOptions.hour && !filteredOptions.minute && !filteredOptions.second) {\n // Add default formatting options if hour, minute, or second isn't defined.\n filteredOptions = _extends({}, filteredOptions, { hour: 'numeric', minute: 'numeric' });\n }\n\n try {\n return state.getDateTimeFormat(locale, filteredOptions).format(date);\n } catch (e) {\n onError(createError('Error formatting time.', e));\n }\n\n return String(date);\n}\n\nfunction formatRelative(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats;\n var format = options.format;\n\n\n var onError = config.onError || defaultErrorHandler;\n var date = new Date(value);\n var now = new Date(options.now);\n var defaults$$1 = format && getNamedFormat(formats, 'relative', format, onError);\n var filteredOptions = filterProps(options, RELATIVE_FORMAT_OPTIONS, defaults$$1);\n\n // Capture the current threshold values, then temporarily override them with\n // specific values just for this render.\n var oldThresholds = _extends({}, IntlRelativeFormat.thresholds);\n updateRelativeFormatThresholds(RELATIVE_FORMAT_THRESHOLDS);\n\n try {\n return state.getRelativeFormat(locale, filteredOptions).format(date, {\n now: isFinite(now) ? now : state.now()\n });\n } catch (e) {\n onError(createError('Error formatting relative time.', e));\n } finally {\n updateRelativeFormatThresholds(oldThresholds);\n }\n\n return String(date);\n}\n\nfunction formatNumber(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats;\n var format = options.format;\n\n\n var onError = config.onError || defaultErrorHandler;\n var defaults$$1 = format && getNamedFormat(formats, 'number', format, onError);\n var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults$$1);\n\n try {\n return state.getNumberFormat(locale, filteredOptions).format(value);\n } catch (e) {\n onError(createError('Error formatting number.', e));\n }\n\n return String(value);\n}\n\nfunction formatPlural(config, state, value) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale;\n\n\n var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n var onError = config.onError || defaultErrorHandler;\n\n try {\n return state.getPluralFormat(locale, filteredOptions).format(value);\n } catch (e) {\n onError(createError('Error formatting plural.', e));\n }\n\n return 'other';\n}\n\nfunction formatMessage(config, state) {\n var messageDescriptor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var values = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var locale = config.locale,\n formats = config.formats,\n messages = config.messages,\n defaultLocale = config.defaultLocale,\n defaultFormats = config.defaultFormats;\n var id = messageDescriptor.id,\n defaultMessage = messageDescriptor.defaultMessage;\n\n // Produce a better error if the user calls `intl.formatMessage(element)`\n\n if (process.env.NODE_ENV !== 'production') {\n invariant(!isValidElement(config), '[React Intl] Don\\'t pass React elements to ' + 'formatMessage(), pass `.props`.');\n }\n\n // `id` is a required field of a Message Descriptor.\n invariant(id, '[React Intl] An `id` must be provided to format a message.');\n\n var message = messages && messages[id];\n var hasValues = Object.keys(values).length > 0;\n\n // Avoid expensive message formatting for simple messages without values. In\n // development messages will always be formatted in case of missing values.\n if (!hasValues && process.env.NODE_ENV === 'production') {\n return message || defaultMessage || id;\n }\n\n var formattedMessage = void 0;\n var onError = config.onError || defaultErrorHandler;\n\n if (message) {\n try {\n var formatter = state.getMessageFormat(message, locale, formats);\n\n formattedMessage = formatter.format(values);\n } catch (e) {\n onError(createError('Error formatting message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : ''), e));\n }\n } else {\n // This prevents warnings from littering the console in development\n // when no `messages` are passed into the <IntlProvider> for the\n // default locale, and a default message is in the source.\n if (!defaultMessage || locale && locale.toLowerCase() !== defaultLocale.toLowerCase()) {\n onError(createError('Missing message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : '')));\n }\n }\n\n if (!formattedMessage && defaultMessage) {\n try {\n var _formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats);\n\n formattedMessage = _formatter.format(values);\n } catch (e) {\n onError(createError('Error formatting the default message for: \"' + id + '\"', e));\n }\n }\n\n if (!formattedMessage) {\n onError(createError('Cannot format message: \"' + id + '\", ' + ('using message ' + (message || defaultMessage ? 'source' : 'id') + ' as fallback.')));\n }\n\n return formattedMessage || message || defaultMessage || id;\n}\n\nfunction formatHTMLMessage(config, state, messageDescriptor) {\n var rawValues = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n // Process all the values before they are used when formatting the ICU\n // Message string. Since the formatted message might be injected via\n // `innerHTML`, all String-based values need to be HTML-escaped.\n var escapedValues = Object.keys(rawValues).reduce(function (escaped, name) {\n var value = rawValues[name];\n escaped[name] = typeof value === 'string' ? escape(value) : value;\n return escaped;\n }, {});\n\n return formatMessage(config, state, messageDescriptor, escapedValues);\n}\n\n\n\nvar format = Object.freeze({\n\tformatDate: formatDate,\n\tformatTime: formatTime,\n\tformatRelative: formatRelative,\n\tformatNumber: formatNumber,\n\tformatPlural: formatPlural,\n\tformatMessage: formatMessage,\n\tformatHTMLMessage: formatHTMLMessage\n});\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar intlConfigPropNames$1 = Object.keys(intlConfigPropTypes);\nvar intlFormatPropNames = Object.keys(intlFormatPropTypes);\n\n// These are not a static property on the `IntlProvider` class so the intl\n// config values can be inherited from an <IntlProvider> ancestor.\nvar defaultProps = {\n formats: {},\n messages: {},\n timeZone: null,\n textComponent: 'span',\n\n defaultLocale: 'en',\n defaultFormats: {},\n\n onError: defaultErrorHandler\n};\n\nvar IntlProvider = function (_Component) {\n inherits(IntlProvider, _Component);\n\n function IntlProvider(props) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, IntlProvider);\n\n var _this = possibleConstructorReturn(this, (IntlProvider.__proto__ || Object.getPrototypeOf(IntlProvider)).call(this, props, context));\n\n invariant(typeof Intl !== 'undefined', '[React Intl] The `Intl` APIs must be available in the runtime, ' + 'and do not appear to be built-in. An `Intl` polyfill should be loaded.\\n' + 'See: http://formatjs.io/guides/runtime-environments/');\n\n var intlContext = context.intl;\n\n // Used to stabilize time when performing an initial rendering so that\n // all relative times use the same reference \"now\" time.\n\n var initialNow = void 0;\n if (isFinite(props.initialNow)) {\n initialNow = Number(props.initialNow);\n } else {\n // When an `initialNow` isn't provided via `props`, look to see an\n // <IntlProvider> exists in the ancestry and call its `now()`\n // function to propagate its value for \"now\".\n initialNow = intlContext ? intlContext.now() : Date.now();\n }\n\n // Creating `Intl*` formatters is expensive. If there's a parent\n // `<IntlProvider>`, then its formatters will be used. Otherwise, this\n // memoize the `Intl*` constructors and cache them for the lifecycle of\n // this IntlProvider instance.\n\n var _ref = intlContext || {},\n _ref$formatters = _ref.formatters,\n formatters = _ref$formatters === undefined ? {\n getDateTimeFormat: memoizeIntlConstructor(Intl.DateTimeFormat),\n getNumberFormat: memoizeIntlConstructor(Intl.NumberFormat),\n getMessageFormat: memoizeIntlConstructor(IntlMessageFormat),\n getRelativeFormat: memoizeIntlConstructor(IntlRelativeFormat),\n getPluralFormat: memoizeIntlConstructor(IntlPluralFormat)\n } : _ref$formatters;\n\n _this.state = _extends({}, formatters, {\n\n // Wrapper to provide stable \"now\" time for initial render.\n now: function now() {\n return _this._didDisplay ? Date.now() : initialNow;\n }\n });\n return _this;\n }\n\n createClass(IntlProvider, [{\n key: 'getConfig',\n value: function getConfig() {\n var intlContext = this.context.intl;\n\n // Build a whitelisted config object from `props`, defaults, and\n // `context.intl`, if an <IntlProvider> exists in the ancestry.\n\n var config = filterProps(this.props, intlConfigPropNames$1, intlContext);\n\n // Apply default props. This must be applied last after the props have\n // been resolved and inherited from any <IntlProvider> in the ancestry.\n // This matches how React resolves `defaultProps`.\n for (var propName in defaultProps) {\n if (config[propName] === undefined) {\n config[propName] = defaultProps[propName];\n }\n }\n\n if (!hasLocaleData(config.locale)) {\n var _config = config,\n locale = _config.locale,\n defaultLocale = _config.defaultLocale,\n defaultFormats = _config.defaultFormats,\n onError = _config.onError;\n\n\n onError(createError('Missing locale data for locale: \"' + locale + '\". ' + ('Using default locale: \"' + defaultLocale + '\" as fallback.')));\n\n // Since there's no registered locale data for `locale`, this will\n // fallback to the `defaultLocale` to make sure things can render.\n // The `messages` are overridden to the `defaultProps` empty object\n // to maintain referential equality across re-renders. It's assumed\n // each <FormattedMessage> contains a `defaultMessage` prop.\n config = _extends({}, config, {\n locale: defaultLocale,\n formats: defaultFormats,\n messages: defaultProps.messages\n });\n }\n\n return config;\n }\n }, {\n key: 'getBoundFormatFns',\n value: function getBoundFormatFns(config, state) {\n return intlFormatPropNames.reduce(function (boundFormatFns, name) {\n boundFormatFns[name] = format[name].bind(null, config, state);\n return boundFormatFns;\n }, {});\n }\n }, {\n key: 'getChildContext',\n value: function getChildContext() {\n var config = this.getConfig();\n\n // Bind intl factories and current config to the format functions.\n var boundFormatFns = this.getBoundFormatFns(config, this.state);\n\n var _state = this.state,\n now = _state.now,\n formatters = objectWithoutProperties(_state, ['now']);\n\n\n return {\n intl: _extends({}, config, boundFormatFns, {\n formatters: formatters,\n now: now\n })\n };\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._didDisplay = true;\n }\n }, {\n key: 'render',\n value: function render() {\n return Children.only(this.props.children);\n }\n }]);\n return IntlProvider;\n}(Component);\n\nIntlProvider.displayName = 'IntlProvider';\nIntlProvider.contextTypes = {\n intl: intlShape\n};\nIntlProvider.childContextTypes = {\n intl: intlShape.isRequired\n};\nprocess.env.NODE_ENV !== \"production\" ? IntlProvider.propTypes = _extends({}, intlConfigPropTypes, {\n children: PropTypes.element.isRequired,\n initialNow: PropTypes.any\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedDate = function (_Component) {\n inherits(FormattedDate, _Component);\n\n function FormattedDate(props, context) {\n classCallCheck(this, FormattedDate);\n\n var _this = possibleConstructorReturn(this, (FormattedDate.__proto__ || Object.getPrototypeOf(FormattedDate)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedDate, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatDate = _context$intl.formatDate,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n children = _props.children;\n\n\n var formattedDate = formatDate(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedDate);\n }\n\n return React.createElement(\n Text,\n null,\n formattedDate\n );\n }\n }]);\n return FormattedDate;\n}(Component);\n\nFormattedDate.displayName = 'FormattedDate';\nFormattedDate.contextTypes = {\n intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedDate.propTypes = _extends({}, dateTimeFormatPropTypes, {\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedTime = function (_Component) {\n inherits(FormattedTime, _Component);\n\n function FormattedTime(props, context) {\n classCallCheck(this, FormattedTime);\n\n var _this = possibleConstructorReturn(this, (FormattedTime.__proto__ || Object.getPrototypeOf(FormattedTime)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedTime, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatTime = _context$intl.formatTime,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n children = _props.children;\n\n\n var formattedTime = formatTime(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedTime);\n }\n\n return React.createElement(\n Text,\n null,\n formattedTime\n );\n }\n }]);\n return FormattedTime;\n}(Component);\n\nFormattedTime.displayName = 'FormattedTime';\nFormattedTime.contextTypes = {\n intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedTime.propTypes = _extends({}, dateTimeFormatPropTypes, {\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar SECOND = 1000;\nvar MINUTE = 1000 * 60;\nvar HOUR = 1000 * 60 * 60;\nvar DAY = 1000 * 60 * 60 * 24;\n\n// The maximum timer delay value is a 32-bit signed integer.\n// See: https://mdn.io/setTimeout\nvar MAX_TIMER_DELAY = 2147483647;\n\nfunction selectUnits(delta) {\n var absDelta = Math.abs(delta);\n\n if (absDelta < MINUTE) {\n return 'second';\n }\n\n if (absDelta < HOUR) {\n return 'minute';\n }\n\n if (absDelta < DAY) {\n return 'hour';\n }\n\n // The maximum scheduled delay will be measured in days since the maximum\n // timer delay is less than the number of milliseconds in 25 days.\n return 'day';\n}\n\nfunction getUnitDelay(units) {\n switch (units) {\n case 'second':\n return SECOND;\n case 'minute':\n return MINUTE;\n case 'hour':\n return HOUR;\n case 'day':\n return DAY;\n default:\n return MAX_TIMER_DELAY;\n }\n}\n\nfunction isSameDate(a, b) {\n if (a === b) {\n return true;\n }\n\n var aTime = new Date(a).getTime();\n var bTime = new Date(b).getTime();\n\n return isFinite(aTime) && isFinite(bTime) && aTime === bTime;\n}\n\nvar FormattedRelative = function (_Component) {\n inherits(FormattedRelative, _Component);\n\n function FormattedRelative(props, context) {\n classCallCheck(this, FormattedRelative);\n\n var _this = possibleConstructorReturn(this, (FormattedRelative.__proto__ || Object.getPrototypeOf(FormattedRelative)).call(this, props, context));\n\n invariantIntlContext(context);\n\n var now = isFinite(props.initialNow) ? Number(props.initialNow) : context.intl.now();\n\n // `now` is stored as state so that `render()` remains a function of\n // props + state, instead of accessing `Date.now()` inside `render()`.\n _this.state = { now: now };\n return _this;\n }\n\n createClass(FormattedRelative, [{\n key: 'scheduleNextUpdate',\n value: function scheduleNextUpdate(props, state) {\n var _this2 = this;\n\n // Cancel and pending update because we're scheduling a new update.\n clearTimeout(this._timer);\n\n var value = props.value,\n units = props.units,\n updateInterval = props.updateInterval;\n\n var time = new Date(value).getTime();\n\n // If the `updateInterval` is falsy, including `0` or we don't have a\n // valid date, then auto updates have been turned off, so we bail and\n // skip scheduling an update.\n if (!updateInterval || !isFinite(time)) {\n return;\n }\n\n var delta = time - state.now;\n var unitDelay = getUnitDelay(units || selectUnits(delta));\n var unitRemainder = Math.abs(delta % unitDelay);\n\n // We want the largest possible timer delay which will still display\n // accurate information while reducing unnecessary re-renders. The delay\n // should be until the next \"interesting\" moment, like a tick from\n // \"1 minute ago\" to \"2 minutes ago\" when the delta is 120,000ms.\n var delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);\n\n this._timer = setTimeout(function () {\n _this2.setState({ now: _this2.context.intl.now() });\n }, delay);\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.scheduleNextUpdate(this.props, this.state);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(_ref) {\n var nextValue = _ref.value;\n\n // When the `props.value` date changes, `state.now` needs to be updated,\n // and the next update can be rescheduled.\n if (!isSameDate(nextValue, this.props.value)) {\n this.setState({ now: this.context.intl.now() });\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps, nextState) {\n this.scheduleNextUpdate(nextProps, nextState);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n clearTimeout(this._timer);\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatRelative = _context$intl.formatRelative,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n children = _props.children;\n\n\n var formattedRelative = formatRelative(value, _extends({}, this.props, this.state));\n\n if (typeof children === 'function') {\n return children(formattedRelative);\n }\n\n return React.createElement(\n Text,\n null,\n formattedRelative\n );\n }\n }]);\n return FormattedRelative;\n}(Component);\n\nFormattedRelative.displayName = 'FormattedRelative';\nFormattedRelative.contextTypes = {\n intl: intlShape\n};\nFormattedRelative.defaultProps = {\n updateInterval: 1000 * 10\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedRelative.propTypes = _extends({}, relativeFormatPropTypes, {\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n updateInterval: PropTypes.number,\n initialNow: PropTypes.any,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedNumber = function (_Component) {\n inherits(FormattedNumber, _Component);\n\n function FormattedNumber(props, context) {\n classCallCheck(this, FormattedNumber);\n\n var _this = possibleConstructorReturn(this, (FormattedNumber.__proto__ || Object.getPrototypeOf(FormattedNumber)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedNumber, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatNumber = _context$intl.formatNumber,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n children = _props.children;\n\n\n var formattedNumber = formatNumber(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedNumber);\n }\n\n return React.createElement(\n Text,\n null,\n formattedNumber\n );\n }\n }]);\n return FormattedNumber;\n}(Component);\n\nFormattedNumber.displayName = 'FormattedNumber';\nFormattedNumber.contextTypes = {\n intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedNumber.propTypes = _extends({}, numberFormatPropTypes, {\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedPlural = function (_Component) {\n inherits(FormattedPlural, _Component);\n\n function FormattedPlural(props, context) {\n classCallCheck(this, FormattedPlural);\n\n var _this = possibleConstructorReturn(this, (FormattedPlural.__proto__ || Object.getPrototypeOf(FormattedPlural)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedPlural, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n next[_key] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatPlural = _context$intl.formatPlural,\n Text = _context$intl.textComponent;\n var _props = this.props,\n value = _props.value,\n other = _props.other,\n children = _props.children;\n\n\n var pluralCategory = formatPlural(value, this.props);\n var formattedPlural = this.props[pluralCategory] || other;\n\n if (typeof children === 'function') {\n return children(formattedPlural);\n }\n\n return React.createElement(\n Text,\n null,\n formattedPlural\n );\n }\n }]);\n return FormattedPlural;\n}(Component);\n\nFormattedPlural.displayName = 'FormattedPlural';\nFormattedPlural.contextTypes = {\n intl: intlShape\n};\nFormattedPlural.defaultProps = {\n style: 'cardinal'\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedPlural.propTypes = _extends({}, pluralFormatPropTypes, {\n value: PropTypes.any.isRequired,\n\n other: PropTypes.node.isRequired,\n zero: PropTypes.node,\n one: PropTypes.node,\n two: PropTypes.node,\n few: PropTypes.node,\n many: PropTypes.node,\n\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar defaultFormatMessage = function defaultFormatMessage(descriptor, values) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('[React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry. Using default message as fallback.');\n }\n return formatMessage({}, { getMessageFormat: memoizeIntlConstructor(IntlMessageFormat) }, descriptor, values);\n};\n\nvar FormattedMessage = function (_Component) {\n inherits(FormattedMessage, _Component);\n\n function FormattedMessage(props, context) {\n classCallCheck(this, FormattedMessage);\n\n var _this = possibleConstructorReturn(this, (FormattedMessage.__proto__ || Object.getPrototypeOf(FormattedMessage)).call(this, props, context));\n\n if (!props.defaultMessage) {\n invariantIntlContext(context);\n }\n return _this;\n }\n\n createClass(FormattedMessage, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n var values = this.props.values;\n var nextValues = nextProps.values;\n\n\n if (!shallowEquals(nextValues, values)) {\n return true;\n }\n\n // Since `values` has already been checked, we know they're not\n // different, so the current `values` are carried over so the shallow\n // equals comparison on the other props isn't affected by the `values`.\n var nextPropsToCheck = _extends({}, nextProps, {\n values: values\n });\n\n for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n next[_key - 1] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _ref = this.context.intl || {},\n _ref$formatMessage = _ref.formatMessage,\n formatMessage$$1 = _ref$formatMessage === undefined ? defaultFormatMessage : _ref$formatMessage,\n _ref$textComponent = _ref.textComponent,\n Text = _ref$textComponent === undefined ? 'span' : _ref$textComponent;\n\n var _props = this.props,\n id = _props.id,\n description = _props.description,\n defaultMessage = _props.defaultMessage,\n values = _props.values,\n _props$tagName = _props.tagName,\n Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n children = _props.children;\n\n\n var tokenDelimiter = void 0;\n var tokenizedValues = void 0;\n var elements = void 0;\n\n var hasValues = values && Object.keys(values).length > 0;\n if (hasValues) {\n // Creates a token with a random UID that should not be guessable or\n // conflict with other parts of the `message` string.\n var uid = Math.floor(Math.random() * 0x10000000000).toString(16);\n\n var generateToken = function () {\n var counter = 0;\n return function () {\n return 'ELEMENT-' + uid + '-' + (counter += 1);\n };\n }();\n\n // Splitting with a delimiter to support IE8. When using a regex\n // with a capture group IE8 does not include the capture group in\n // the resulting array.\n tokenDelimiter = '@__' + uid + '__@';\n tokenizedValues = {};\n elements = {};\n\n // Iterates over the `props` to keep track of any React Element\n // values so they can be represented by the `token` as a placeholder\n // when the `message` is formatted. This allows the formatted\n // message to then be broken-up into parts with references to the\n // React Elements inserted back in.\n Object.keys(values).forEach(function (name) {\n var value = values[name];\n\n if (isValidElement(value)) {\n var token = generateToken();\n tokenizedValues[name] = tokenDelimiter + token + tokenDelimiter;\n elements[token] = value;\n } else {\n tokenizedValues[name] = value;\n }\n });\n }\n\n var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n var formattedMessage = formatMessage$$1(descriptor, tokenizedValues || values);\n\n var nodes = void 0;\n\n var hasElements = elements && Object.keys(elements).length > 0;\n if (hasElements) {\n // Split the message into parts so the React Element values captured\n // above can be inserted back into the rendered message. This\n // approach allows messages to render with React Elements while\n // keeping React's virtual diffing working properly.\n nodes = formattedMessage.split(tokenDelimiter).filter(function (part) {\n return !!part;\n }).map(function (part) {\n return elements[part] || part;\n });\n } else {\n nodes = [formattedMessage];\n }\n\n if (typeof children === 'function') {\n return children.apply(undefined, toConsumableArray(nodes));\n }\n\n // Needs to use `createElement()` instead of JSX, otherwise React will\n // warn about a missing `key` prop with rich-text message formatting.\n return createElement.apply(undefined, [Component$$1, null].concat(toConsumableArray(nodes)));\n }\n }]);\n return FormattedMessage;\n}(Component);\n\nFormattedMessage.displayName = 'FormattedMessage';\nFormattedMessage.contextTypes = {\n intl: intlShape\n};\nFormattedMessage.defaultProps = {\n values: {}\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n values: PropTypes.object,\n tagName: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedHTMLMessage = function (_Component) {\n inherits(FormattedHTMLMessage, _Component);\n\n function FormattedHTMLMessage(props, context) {\n classCallCheck(this, FormattedHTMLMessage);\n\n var _this = possibleConstructorReturn(this, (FormattedHTMLMessage.__proto__ || Object.getPrototypeOf(FormattedHTMLMessage)).call(this, props, context));\n\n invariantIntlContext(context);\n return _this;\n }\n\n createClass(FormattedHTMLMessage, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n var values = this.props.values;\n var nextValues = nextProps.values;\n\n\n if (!shallowEquals(nextValues, values)) {\n return true;\n }\n\n // Since `values` has already been checked, we know they're not\n // different, so the current `values` are carried over so the shallow\n // equals comparison on the other props isn't affected by the `values`.\n var nextPropsToCheck = _extends({}, nextProps, {\n values: values\n });\n\n for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n next[_key - 1] = arguments[_key];\n }\n\n return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n }\n }, {\n key: 'render',\n value: function render() {\n var _context$intl = this.context.intl,\n formatHTMLMessage = _context$intl.formatHTMLMessage,\n Text = _context$intl.textComponent;\n var _props = this.props,\n id = _props.id,\n description = _props.description,\n defaultMessage = _props.defaultMessage,\n rawValues = _props.values,\n _props$tagName = _props.tagName,\n Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n children = _props.children;\n\n\n var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n var formattedHTMLMessage = formatHTMLMessage(descriptor, rawValues);\n\n if (typeof children === 'function') {\n return children(formattedHTMLMessage);\n }\n\n // Since the message presumably has HTML in it, we need to set\n // `innerHTML` in order for it to be rendered and not escaped by React.\n // To be safe, all string prop values were escaped when formatting the\n // message. It is assumed that the message is not UGC, and came from the\n // developer making it more like a template.\n //\n // Note: There's a perf impact of using this component since there's no\n // way for React to do its virtual DOM diffing.\n var html = { __html: formattedHTMLMessage };\n return React.createElement(Component$$1, { dangerouslySetInnerHTML: html });\n }\n }]);\n return FormattedHTMLMessage;\n}(Component);\n\nFormattedHTMLMessage.displayName = 'FormattedHTMLMessage';\nFormattedHTMLMessage.contextTypes = {\n intl: intlShape\n};\nFormattedHTMLMessage.defaultProps = {\n values: {}\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedHTMLMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n values: PropTypes.object,\n tagName: PropTypes.string,\n children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(defaultLocaleData);\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(allLocaleData);\n\nexport { addLocaleData, intlShape, injectIntl, defineMessages, IntlProvider, FormattedDate, FormattedTime, FormattedRelative, FormattedNumber, FormattedPlural, FormattedMessage, FormattedHTMLMessage };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-intl/lib/index.es.js\n// module id = null\n// module chunks = ","import {\n PageAPI\n} from 'lib/api';\nimport {\n dateFormat,\n apiDateFormatter\n} from 'lib/format';\nimport {\n apiEnvSelector,\n isDomesticSelector\n} from 'common/selectors/appSelector';\nimport { collectionParamsSelector } from 'common/selectors/apiParamsSelector';\nimport {\n graphql\n} from 'common/actions/apiAction';\nimport StatusFilter from '../StatusFilter';\n\nexport const START_GET_SCHEDULE = 'START_GET_SCHEDULE';\nexport const COMPLETE_GET_SCHEDULE = 'COMPLETE_GET_SCHEDULE';\nexport const START_GET_CATEGORIES = 'START_GET_CATEGORIES';\nexport const COMPLETE_GET_CATEGORIES = 'COMPLETE_GET_CATEGORIES';\nexport const SET_STATUS_FILTER = 'SET_STATUS_FILTER';\nexport const SET_SPORTS_FILTER = 'SET_SPORTS_FILTER';\nexport const SET_NETWORK_FILTER = 'SET_NETWORK_FILTER';\nexport const SET_DATE_FILTER = 'SET_DATE_FILTER';\nexport const SET_REPLAY_DATE_FILTER = 'SET_REPLAY_DATE_FILTER';\n\nexport function startGetSchedule() {\n return {\n type: START_GET_SCHEDULE,\n startTime: Date.now()\n };\n}\n\nexport function completeGetSchedule(listings) {\n return {\n type: COMPLETE_GET_SCHEDULE,\n completeTime: Date.now(),\n listings\n };\n}\n\nexport function setStatusFilter(status) {\n return {\n type: SET_STATUS_FILTER,\n status\n };\n}\n\nexport function getQueryFromParams({\n type = StatusFilter.Options.LIVE,\n categoryId,\n channel,\n startDate,\n endDate\n}) {\n const categories = categoryId && [categoryId.toString()];\n\n const packageMap = {\n espn_plus: 'espn_plus',\n espn_plus_mlb: 'espn_plus_mlb',\n espn_plus_nhl: 'espn_plus_nhl'\n };\n\n let packages = null;\n let networks = null;\n\n // ESPN+, MLB.TV, and NHL.TV are treated as packages, and not networks\n if (channel && packageMap[channel.toLowerCase()]) {\n packages = [channel.toLowerCase()];\n } else {\n networks = channel && [channel.toLowerCase()];\n }\n\n let dates = [startDate];\n\n // end date is only used for replays, and should always reflect current time of today\n const end = new Date();\n\n if (endDate) {\n dates.push(end);\n }\n if (type === StatusFilter.Options.REPLAY && !startDate) { // set default date range\n const start = new Date();\n dates = [apiDateFormatter(start)];\n }\n\n return {\n type: type.toUpperCase(),\n networks,\n packages,\n categories,\n dates\n };\n}\n\nexport function fetchSchedule(params) {\n return (dispatch, getState) => {\n dispatch(startGetSchedule());\n const state = getState();\n const isDomestic = isDomesticSelector(state);\n\n const {\n type: typeArg,\n categories,\n networks,\n packages,\n dates\n } = getQueryFromParams(params);\n let day;\n let start;\n let end;\n if (dates.length === 1) {\n day = dateFormat.paramToCalendarDatesString(dates[0]);\n } else if (dates.length === 2) {\n // API only allows the date to be down to minute precision:(\n start = dates && dates[0] && dateFormat.getISOStringWithMinPrecision(dateFormat.paramToDate(dates[0]));\n end = dates && dates[1] && dateFormat.getISOStringWithMinPrecision(dates[1]);\n }\n const limit = 500;\n\n return dispatch(graphql('getAirings', {\n type: typeArg,\n categories,\n networks,\n packages,\n start,\n end,\n day,\n limit\n }))\n .then(({\n data = {}\n }) => {\n let {\n airings\n } = data;\n airings = airings || []; // response could return `null` for `airings` node when there is an error\n const listings = airings.map(({\n id,\n name,\n type,\n startDateTime,\n shortDate,\n mediumTime,\n network,\n category,\n subcategory,\n feedName,\n purchaseImage: {\n url: backgroundImageHref\n },\n image: {\n url: imageUrl\n } = {},\n packages: packageArray\n }) => {\n const mapped = {\n id,\n name,\n feedName,\n type: type.toLowerCase(),\n startTime: startDateTime,\n startDate: shortDate,\n mediumTime,\n backgroundImageHref,\n broadcasts: network ? [{\n abbreviation: isDomestic ? network.abbreviation.toLowerCase() : network.adobeResource,\n adobeResource: network.adobeResource,\n name: network.name,\n code: network.id.toUpperCase(),\n type: network.type,\n shortName: network.shortName,\n ipAuth: network.isIpAuth,\n packages: packageArray ? packageArray.map(({\n name: nameArg\n }) => nameArg) : []\n }] : [{}],\n thumbnails: {\n large: {\n width: 640,\n height: 360,\n href: imageUrl\n }\n },\n categories: [category],\n subcategories: subcategory ? [subcategory] : []\n };\n return mapped;\n });\n\n dispatch(completeGetSchedule(listings));\n\n return listings;\n });\n };\n}\nexport function fetchSyndicatedSchedule(params) {\n return (dispatch, getState) => {\n dispatch(startGetSchedule());\n const state = getState();\n const isDomestic = isDomesticSelector(state);\n\n const {\n type: typeArg,\n categories,\n networks,\n packages\n } = getQueryFromParams(params);\n const dates = params.dates || apiDateFormatter(new Date());\n\n let day;\n let start;\n let end;\n\n if (params.dates && params.dates.match(/-/)) {\n [start, end] = params.dates.split('-');\n // API only allows the date to be down to minute precision:(\n start = dateFormat.getISOStringWithMinPrecision(dateFormat.paramToDate(start));\n end = dateFormat.getISOStringWithMinPrecision(dateFormat.paramToDate(end));\n } else {\n day = dateFormat.paramToCalendarDatesString(dates);\n }\n const limit = 500;\n\n return dispatch(graphql('getAirings', {\n type: typeArg,\n categories,\n networks,\n packages,\n start,\n end,\n day,\n limit\n }))\n .then(({\n data = {}\n }) => {\n let {\n airings\n } = data;\n airings = airings || []; // response could return `null` for `airings` node when there is an error\n // TODO: update schedule page to reflect the data structure from GraphQL API so that this mapping is not necessary\n const listings = airings.map(({\n id,\n name,\n type,\n startDateTime,\n shortDate,\n mediumTime,\n network,\n category,\n subcategory,\n feedName,\n purchaseImage: {\n url: backgroundImageHref\n } = {},\n image: {\n url: imageUrl\n } = {},\n packages: packageArray\n }) => {\n const mapped = {\n id,\n name,\n feedName,\n type: type.toLowerCase(),\n startTime: startDateTime,\n startDate: shortDate,\n mediumTime,\n backgroundImageHref,\n broadcasts: network ? [{\n abbreviation: isDomestic ? network.abbreviation.toLowerCase() : network.adobeResource,\n adobeResource: network.adobeResource,\n name: network.name,\n code: network.id.toUpperCase(),\n type: network.type,\n shortName: network.shortName,\n ipAuth: network.isIpAuth,\n packages: packageArray ? packageArray.map(({\n name: nameArg\n }) => nameArg) : []\n }] : [{}],\n thumbnails: {\n large: {\n width: 640,\n height: 360,\n href: imageUrl\n }\n },\n categories: [category],\n subcategories: subcategory ? [subcategory] : []\n };\n\n return mapped;\n });\n\n dispatch(completeGetSchedule(listings));\n\n return listings;\n });\n };\n}\n\nexport function startGetCategories() {\n return {\n type: START_GET_CATEGORIES,\n startTime: Date.now()\n };\n}\n\nexport function completeGetCategories(categories) {\n return {\n type: COMPLETE_GET_CATEGORIES,\n completeTime: Date.now(),\n categories\n };\n}\n\nexport function fetchCategories() {\n return (dispatch, getState) => {\n const state = getState();\n const apiEnv = apiEnvSelector(state);\n const params = collectionParamsSelector(state);\n dispatch(startGetCategories);\n return PageAPI.getCategories(apiEnv, params).then((categories) => {\n dispatch(completeGetCategories(categories));\n return categories;\n });\n };\n}\n\nexport function setSportsFilter(option) {\n return {\n type: SET_SPORTS_FILTER,\n value: option.value,\n filterType: option.type,\n label: option.label\n };\n}\n\nexport function setNetworkFilter(option) {\n return {\n type: SET_NETWORK_FILTER,\n value: option.value,\n label: option.label\n };\n}\n\nexport function setDateFilter(date) {\n return {\n type: SET_DATE_FILTER,\n date\n };\n}\n\nexport function setReplayDateFilter(startDate, endDate) {\n return {\n type: SET_REPLAY_DATE_FILTER,\n startDate,\n endDate\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/actions/index.js","import React, { PropTypes } from 'react';\n\nconst StatusFilter = ({\n handleClick,\n selected,\n labels\n}) => {\n const onClick = (event) => {\n event.preventDefault();\n const status = event.target.getAttribute('data-status');\n handleClick(status);\n };\n\n const options = Object.keys(StatusFilter.Options).map(key => {\n const option = StatusFilter.Options[key];\n return (\n <a\n key={option}\n className={`button-filter-alt med ${selected === option ? 'active' : ''}`}\n data-status={option}\n onClick={onClick}\n >\n {labels[option]}\n </a>\n );\n });\n\n return (\n <div className=\"form-group button-group tabbed\" data-behavior=\"tabs\">\n {options}\n </div>\n );\n};\n\nStatusFilter.Options = {\n LIVE: 'live',\n UPCOMING: 'upcoming',\n REPLAY: 'replay'\n};\n\nStatusFilter.propTypes = {\n selected: PropTypes.string,\n handleClick: PropTypes.func,\n labels: PropTypes.shape({\n [StatusFilter.Options.LIVE]: PropTypes.string,\n [StatusFilter.Options.UPCOMING]: PropTypes.string,\n [StatusFilter.Options.REPLAY]: PropTypes.string\n })\n};\n\nStatusFilter.defaultProps = {\n selected: StatusFilter.Options.LIVE\n};\n\nexport default StatusFilter;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/StatusFilter.js","import { BlackoutTypes } from 'enums';\n\n/**\n * @param {object} location\n * @param {array} blackouts - destrctured from content {object}\n * Destructures a blackout array from content and checks for blackouts\n * against user location\n*/\nexport default function locationBlackedOutForContent(location = {}, { blackouts = [] }) {\n return blackouts.filter((blackout) => {\n switch (blackout.type) {\n case BlackoutTypes.DMA:\n return ((blackout.detail || []).indexOf(location.dma) !== -1);\n break;\n case BlackoutTypes.DEVICE:\n // #TODO: implement when live content is support on mobile\n return false;\n break;\n default:\n return false;\n }\n }).length > 0;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/locationBlackedOutForContent.js","import Cookie from 'cookie-cutter';\nimport { contentSelect, streamSelect } from 'common/actions/appActions';\nimport { getEvent, getVideo } from 'common/actions/apiAction';\nimport { userLocationSelector } from 'common/selectors/authenticationSelectors';\nimport fanAutoStartSelector from 'common/selectors/fanAutoStartSelector';\nimport routingSelector from 'common/selectors/routingSelector';\nimport pageSelector from 'common/selectors/pageSelector';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport { nielsenTrackingSelector } from 'common/selectors/analyticsSelectors';\nimport { roadblockSelector } from 'common/selectors/appSelector';\nimport { PlayerPlacement } from 'enums';\nimport { locationBlackedOutForContent } from 'lib/auth';\n\nexport const AUTHORIZATION_ERROR = 'AUTHORIZATION_ERROR';\nexport const AUTOPLAY_UPDATED = 'AUTOPLAY_UPDATED';\nexport const AUTOEMBED_TIMER_COMPLETE = 'AUTOEMBED_TIMER_COMPLETE';\nexport const CLEAR_PLAYING_STREAM = 'CLEAR_PLAYING_STREAM';\nexport const STREAM_PLAYING = 'STREAM_PLAYING';\nexport const PLAYER_EMBEDDING = 'PLAYER_EMBEDDING';\nexport const PLAYER_EMBEDDED = 'PLAYER_EMBEDDED';\nexport const PLAYER_INITIALIZED = 'PLAYER_INITIALIZED';\nexport const PLAYER_READY = 'PLAYER_READY';\nexport const PROGRAM_CHANGE = 'PROGRAM_CHANGE';\nexport const RECEIVER_AVAILABLE = 'RECEIVER_AVAILABLE';\nexport const REGISTER_PLAYER = 'REGISTER_PLAYER';\nexport const RESET_PLAYER = 'RESET_PLAYER';\nexport const FEED_SELECT = 'FEED_SELECT';\nexport const FEED_RESET = 'FEED_RESET';\n\nexport function createRegisterPlayerAction() {\n return {\n type: REGISTER_PLAYER,\n ready: false\n };\n}\n\nexport function createPlayerEmbeddingAction(embedding = false) {\n return {\n type: PLAYER_EMBEDDING,\n embedding\n };\n}\n\nexport function createPlayerEmbeddedAction(embedded = false) {\n return {\n type: PLAYER_EMBEDDED,\n embedded\n };\n}\n\nexport function createPlayerInitializedAction(initialized = false) {\n return {\n type: PLAYER_INITIALIZED,\n initialized\n };\n}\n\n\nexport function createResetPlayerAction() {\n return {\n type: RESET_PLAYER\n };\n}\n\nexport function createAutoEmbedTimerCompleteAction() {\n return {\n type: AUTOEMBED_TIMER_COMPLETE\n };\n}\n\nexport function createAutoplayUpdatedAction(autoplay = true) {\n return {\n type: AUTOPLAY_UPDATED,\n autoplay\n };\n}\n\nexport function createStreamPlayingAction({ stream, error = false }) {\n return {\n type: STREAM_PLAYING,\n stream,\n error\n };\n}\n\nexport function createClearPlayingStreamAction() {\n return {\n type: CLEAR_PLAYING_STREAM\n };\n}\n\nexport function createFeedSelectAction(streamId) {\n return (dispatch, getState) => {\n const content = selectedContentSelector(getState());\n dispatch({\n type: FEED_SELECT,\n content,\n streamId\n });\n };\n}\n\nexport function createFeedResetAction() {\n return {\n type: FEED_RESET\n };\n}\n\nexport function createPlayerReadyAction(playerPlacement, content = {}) {\n return (dispatch, getState) => {\n const state = getState();\n const { app: { isMobile = false } } = state;\n const { id: pageId } = pageSelector(state);\n const { locationBeforeTransitions: { query: { id, autoStart } = {} } = {} } = routingSelector(state);\n const roadblock = roadblockSelector(state);\n const fanAutoStart = fanAutoStartSelector(state);\n\n let autoEmbed = true;\n // always autoEmbed if an id is passed, or user is on player page\n if (!id && pageId !== 'player') {\n const videoAutoStartCookie = Cookie.get('VAS');\n if (fanAutoStart !== null) {\n autoEmbed = (fanAutoStart === '1' || fanAutoStart === 1);\n } else if (videoAutoStartCookie) {\n // check for cookie autoplay (1=on, anything else=off)\n autoEmbed = (videoAutoStartCookie === '1' || videoAutoStartCookie === 1);\n }\n }\n\n // don't autoembed users who are blacked out for content\n if (playerPlacement === PlayerPlacement.HERO) {\n const userLocation = userLocationSelector(state);\n autoEmbed = !locationBlackedOutForContent(userLocation, content);\n }\n\n // don't autoEmbed if it's authenticated content on mobile (only respect this if roadblock is enabled)\n if (roadblock) {\n const { authTypes = [] } = content;\n if (isMobile && authTypes.length > 0) {\n autoEmbed = false;\n }\n }\n\n if (autoStart === 'false') {\n autoEmbed = false;\n }\n\n const action = {\n type: PLAYER_READY,\n autoEmbed,\n ready: true\n };\n\n dispatch(action);\n return action;\n };\n}\n\nexport function createReceiverAvailableAction() {\n return {\n type: RECEIVER_AVAILABLE\n };\n}\n\nexport function createAuthorizationErrorAction(message) {\n return {\n type: AUTHORIZATION_ERROR,\n message\n };\n}\n\n// TODO: We should be able to check if content is already available in bucket and not get from network\nexport function createProgramChangeAction(query, streamId) {\n return async (dispatch, getState) => {\n dispatch({ type: PROGRAM_CHANGE, query });\n const resp = await dispatch(getEvent({ query }));\n let trackingData;\n if (resp && resp.page && resp.page.contents) {\n // preserve custom \"placement\" property by merging the next content rather than replacing\n const selectedContent = selectedContentSelector(getState());\n const content = { ...selectedContent, ...resp.page.contents };\n content.reEmbed = false; // don't initiate reEmbed for program changes or playlists\n const stream = (content.streams && content.streams.filter(({ id }) => id === streamId)[0]) || content.streams[0];\n dispatch(contentSelect(content));\n await dispatch(streamSelect(stream));\n dispatch(createStreamPlayingAction({ stream }));\n trackingData = nielsenTrackingSelector(getState());\n return trackingData;\n }\n\n return trackingData;\n };\n}\n\n// TODO: We should be able to check if content is already available in bucket and not get from network\nexport function createContinuousPlayAction(streamId) {\n return (dispatch, getState) => dispatch(getVideo({ pathParams: streamId })).then((resp) => {\n if (resp && resp.page && resp.page.contents) {\n // preserve custom \"placement\" property by merging the next content rather than replacing\n const selectedContent = selectedContentSelector(getState());\n const content = { ...selectedContent, ...resp.page.contents };\n content.reEmbed = false; // don't initiate reEmbed for program changes or playlists\n const stream = (content.streams && content.streams.filter(({ id }) => id === streamId)[0]) || content.streams[0];\n dispatch(contentSelect(content));\n dispatch(streamSelect(stream));\n dispatch(createStreamPlayingAction({ stream }));\n }\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/actions/index.js","import { createSelector } from 'reselect';\nimport fanSelector from 'common/selectors/fanSelector';\n\nexport default createSelector(\n fanSelector,\n ({ profile: { settings = {} } = {} }) => {\n const { videoAutoStart: { value = null } = {} } = settings;\n return value;\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/fanAutoStartSelector.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport _intersection from 'lodash/intersection';\nimport WatchPropTypes from 'common/PropTypes';\nimport ScheduleModuleContainer from '@alias/ScheduleModuleContainer';\nimport { BucketLayout, BucketStatus, PageType } from 'enums';\nimport Bucket from './Bucket';\nimport { bamSubReadySelector } from 'common/selectors/authenticationSelectors';\nimport pageSelector, { showPromoSelector } from 'common/selectors/pageSelector';\n\nexport function insertScheduleModuleIntoBuckets(buckets, pageType) {\n const clonedBuckets = buckets.slice();\n // on the home page, find the live bucket, and insert the schedule module right after it\n if (pageType === PageType.HOME) {\n let insertIndex = -1;\n buckets.forEach((bucket, index) => {\n const { tags = [] } = bucket;\n if (tags.indexOf(BucketStatus.WEB_LIVE) !== -1) {\n insertIndex = index;\n }\n });\n // if we found the live buckets, insert right after it, otherwise, push it on the end\n if (insertIndex !== -1) {\n clonedBuckets.splice(insertIndex + 1, 0, { __schedule_module_placeholder__: true });\n return clonedBuckets;\n }\n }\n\n clonedBuckets.push({ __schedule_module_placeholder__: true });\n return clonedBuckets;\n}\n\n// these are the buckets we don't want to render below the hero\nconst heroExcludeTags = [\n BucketLayout.HERO,\n BucketLayout.SCHEDULE_MODULE\n];\n\nclass BucketListContainer extends Component {\n\n constructor(props) {\n super(props);\n this.showPromoOnHero = this.showPromoOnHero.bind(this);\n }\n\n showPromoOnHero() {\n const { page: { id }, showPromo } = this.props;\n return showPromo && id === 'espnplus';\n }\n\n render() {\n const {\n buckets,\n heroContentId,\n renderHeroInBucket,\n layoutOverride,\n pageType,\n hideHeaderLink: origHideHeaderLink,\n bamSubReady,\n page\n } = this.props;\n\n const curatedBuckets = insertScheduleModuleIntoBuckets(buckets.filter(({ type }) => (type !== 'hero')), pageType);\n const showPromo = this.showPromoOnHero();\n const { id } = page;\n\n return (\n <div className=\"bucket-list\">\n <Helmet\n style={[{\n cssText: `\n .dtc-watch__row--showAll .dtc-watch__item{\n display:block !important;\n }\n `\n }]}\n />\n {curatedBuckets.map((bucket, index) => {\n // inserts the schedule module into a mobile only container depending on what page we're on\n if (bucket.__schedule_module_placeholder__ === true) {\n return <div className=\"mobile-tablet-only\"><ScheduleModuleContainer contentLimit={3} /></div>;\n }\n\n // some pages such as the /watch/shows page do not have a hero\n const bucketContents = bucket.contents.filter((content) =>\n renderHeroInBucket || (id === 'espnplus' &&\n ((bamSubReady && !showPromo && heroContentId !== content.id) ||\n ((bamSubReady && showPromo) && content.id) ||\n (!bamSubReady && content.id))) ||\n (id !== 'espnplus' && heroContentId !== content.id)\n );\n\n const contentLength = bucketContents.length; // same as displayCount\n if (!renderHeroInBucket && !showPromo &&\n (\n (contentLength === 1 && bucketContents[0].id === heroContentId) ||\n (bucket.tags && _intersection(heroExcludeTags, bucket.tags).length > 0)\n )\n ) {\n return null;\n }\n\n const hideHeaderLink = origHideHeaderLink && index === 0;\n\n // make the link relative by chopping off the host\n const { links: { web = '' } = {}, metadata } = bucket || {};\n const link = web.replace(/https?:\\/\\/[^\\/]*(?:\\/watch)?/, '');\n const bucketId = (metadata && metadata.bucketId) || bucket.id;\n const groupId = metadata && metadata.groupId;\n // Avoids duplicate key assignment error\n const uniqueKey = `${bucket.id}${index}`;\n\n return (\n <Bucket\n bucketId={bucketId}\n hideHeaderLink={hideHeaderLink}\n contents={bucketContents}\n groupId={groupId}\n iconHref={bucket.iconHref}\n key={uniqueKey}\n layout={bucket.layout}\n layoutOverride={layoutOverride}\n link={link}\n metadata={bucket.metadata}\n name={bucket.name}\n pageType={pageType}\n tags={bucket.tags}\n type={bucket.type}\n tier={index + 1}\n />\n );\n })}\n </div>\n );\n }\n}\n\nBucketListContainer.propTypes = {\n buckets: PropTypes.arrayOf(WatchPropTypes.bucket),\n heroContentId: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string\n ]),\n renderHeroInBucket: PropTypes.bool,\n pageType: PropTypes.string,\n layoutOverride: PropTypes.string,\n hideHeaderLink: PropTypes.bool,\n bamSubReady: PropTypes.bool,\n showPromo: PropTypes.bool,\n page: PropTypes.object\n};\n\nBucketListContainer.defaultProps = {\n buckets: [],\n renderHeroInBucket: false\n};\n\nconst mapStateToProps = (state) => ({\n buckets: (state.page && state.page.buckets) || [],\n heroContentId: state.page.hero && state.page.hero.id,\n page: pageSelector(state),\n bamSubReady: bamSubReadySelector(state),\n showPromo: showPromoSelector(state)\n});\n\nexport default connect(mapStateToProps)(BucketListContainer);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/buckets/BucketListContainer.js","/**\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\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyObject.js\n// module id = 100\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar warning = require('fbjs/lib/warning');\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/EventPropagators.js\n// module id = 101\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function (inst, registrationName, listener) {\n !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function (inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function (inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function (inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function (events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function (simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function () {\n listenerBank = {};\n },\n\n __getListenerBank: function () {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/EventPluginHub.js\n// module id = 102\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function (event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function (event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticUIEvent.js\n// module id = 103\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function (key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function (key) {\n return key._reactInternalInstance;\n },\n\n has: function (key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function (key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactInstanceMap.js\n// module id = 104\n// module chunks = 1","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n arguments: true,\n arity: true\n};\n\nvar isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';\n\nmodule.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n var keys = Object.getOwnPropertyNames(sourceComponent);\n\n /* istanbul ignore else */\n if (isGetOwnPropertySymbolsAvailable) {\n keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {\n try {\n targetComponent[keys[i]] = sourceComponent[keys[i]];\n } catch (error) {\n\n }\n }\n }\n }\n\n return targetComponent;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/hoist-non-react-statics/index.js\n// module id = 105\n// module chunks = 1","import moment from 'moment';\n\nexport default function apiDateFormatter(startDate, endDate) {\n const startDateToFormat = startDate ? moment(startDate) : moment();\n const formattedStartDate = startDateToFormat.format('YYYYMMDD');\n let apiDate = '';\n if (endDate) {\n const endDateToFormat = moment(endDate);\n const formattedEndDate = endDateToFormat.format('YYYYMMDD');\n if(formattedEndDate === formattedStartDate) {\n apiDate = formattedEndDate;\n } else if(formattedEndDate > formattedStartDate) {\n apiDate = `${formattedStartDate}-${formattedEndDate}`\n } else {\n apiDate = `${formattedEndDate}-${formattedStartDate}`\n }\n } else {\n apiDate = `${formattedStartDate}`;\n }\n\n return apiDate;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/apiDateFormatter.js","//! moment.js\n//! version : 2.15.2\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, function () { 'use strict';\n\n var hookCallback;\n\n function utils_hooks__hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function create_utc__createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function valid__isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function valid__createInvalid (flags) {\n var m = create_utc__createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = utils_hooks__hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n utils_hooks__hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (utils_hooks__hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (utils_hooks__hooks.deprecationHandler != null) {\n utils_hooks__hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (utils_hooks__hooks.deprecationHandler != null) {\n utils_hooks__hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n utils_hooks__hooks.suppressDeprecationWarnings = false;\n utils_hooks__hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function locale_set__set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function locale_calendar__calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relative__relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n get_set__set(this, unit, value);\n utils_hooks__hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get_set__get(this, unit);\n }\n };\n }\n\n function get_set__get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function get_set__set (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (typeof callback === 'number') {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return this._months;\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return this._monthsShort;\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function units_month__handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = create_utc__createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return units_month__handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = create_utc__createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (typeof value !== 'number') {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n utils_hooks__hooks.updateOffset(this, true);\n return this;\n } else {\n return get_set__get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = create_utc__createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n utils_hooks__hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n //the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return this._weekdays;\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function day_of_week__handleStrictParse(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = create_utc__createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return day_of_week__handleStrictParse.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = create_utc__createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = create_utc__createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour he wants. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n ordinalParse: defaultOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n locale_locales__getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function locale_locales__getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = locale_locales__getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n // treat as if there is no base config\n deprecateSimple('parentLocaleUndefined',\n 'specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/');\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n // backwards compat for now: also set the locale\n locale_locales__getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n locale_locales__getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function locale_locales__getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function locale_locales__listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n utils_hooks__hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(utils_hooks__hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);\n week = defaults(w.w, 1);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n utils_hooks__hooks.ISO_8601 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === utils_hooks__hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!valid__isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || locale_locales__getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return valid__createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (isDate(input)) {\n config._d = input;\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!valid__isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date(utils_hooks__hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (typeof(input) === 'object') {\n configFromObject(config);\n } else if (typeof(input) === 'number') {\n // from milliseconds\n config._d = new Date(input);\n } else {\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (typeof(locale) === 'boolean') {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function local__createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = local__createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return valid__createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = local__createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return valid__createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return local__createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = locale_locales__getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = ((string || '').match(matcher) || []);\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : local__createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n utils_hooks__hooks.updateOffset(res, false);\n return res;\n } else {\n return local__createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n utils_hooks__hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n } else if (Math.abs(input) < 16) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n utils_hooks__hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n\n if (tZone === 0) {\n this.utcOffset(0, true);\n } else {\n this.utcOffset(offsetFromString(matchOffset, this._i));\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? local__createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\n function create__createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (typeof input === 'number') {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n create__createDuration.fn = Duration.prototype;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = create__createDuration(val, period);\n add_subtract__addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n utils_hooks__hooks.updateOffset(mom, days || months);\n }\n }\n\n var add_subtract__add = createAdder(1, 'add');\n var add_subtract__subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function moment_calendar__calendar (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || local__createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = utils_hooks__hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, local__createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : local__createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : local__createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : local__createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n utils_hooks__hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function moment_format__toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n local__createLocal(time).isValid())) {\n return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(local__createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n local__createLocal(time).isValid())) {\n return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(local__createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = locale_locales__getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function to_type__valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function moment_valid__isValid () {\n return valid__isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = utils_hooks__hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIOROITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var momentPrototype__proto = Moment.prototype;\n\n momentPrototype__proto.add = add_subtract__add;\n momentPrototype__proto.calendar = moment_calendar__calendar;\n momentPrototype__proto.clone = clone;\n momentPrototype__proto.diff = diff;\n momentPrototype__proto.endOf = endOf;\n momentPrototype__proto.format = format;\n momentPrototype__proto.from = from;\n momentPrototype__proto.fromNow = fromNow;\n momentPrototype__proto.to = to;\n momentPrototype__proto.toNow = toNow;\n momentPrototype__proto.get = stringGet;\n momentPrototype__proto.invalidAt = invalidAt;\n momentPrototype__proto.isAfter = isAfter;\n momentPrototype__proto.isBefore = isBefore;\n momentPrototype__proto.isBetween = isBetween;\n momentPrototype__proto.isSame = isSame;\n momentPrototype__proto.isSameOrAfter = isSameOrAfter;\n momentPrototype__proto.isSameOrBefore = isSameOrBefore;\n momentPrototype__proto.isValid = moment_valid__isValid;\n momentPrototype__proto.lang = lang;\n momentPrototype__proto.locale = locale;\n momentPrototype__proto.localeData = localeData;\n momentPrototype__proto.max = prototypeMax;\n momentPrototype__proto.min = prototypeMin;\n momentPrototype__proto.parsingFlags = parsingFlags;\n momentPrototype__proto.set = stringSet;\n momentPrototype__proto.startOf = startOf;\n momentPrototype__proto.subtract = add_subtract__subtract;\n momentPrototype__proto.toArray = toArray;\n momentPrototype__proto.toObject = toObject;\n momentPrototype__proto.toDate = toDate;\n momentPrototype__proto.toISOString = moment_format__toISOString;\n momentPrototype__proto.toJSON = toJSON;\n momentPrototype__proto.toString = toString;\n momentPrototype__proto.unix = unix;\n momentPrototype__proto.valueOf = to_type__valueOf;\n momentPrototype__proto.creationData = creationData;\n\n // Year\n momentPrototype__proto.year = getSetYear;\n momentPrototype__proto.isLeapYear = getIsLeapYear;\n\n // Week Year\n momentPrototype__proto.weekYear = getSetWeekYear;\n momentPrototype__proto.isoWeekYear = getSetISOWeekYear;\n\n // Quarter\n momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;\n\n // Month\n momentPrototype__proto.month = getSetMonth;\n momentPrototype__proto.daysInMonth = getDaysInMonth;\n\n // Week\n momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;\n momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;\n momentPrototype__proto.weeksInYear = getWeeksInYear;\n momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;\n\n // Day\n momentPrototype__proto.date = getSetDayOfMonth;\n momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;\n momentPrototype__proto.weekday = getSetLocaleDayOfWeek;\n momentPrototype__proto.isoWeekday = getSetISODayOfWeek;\n momentPrototype__proto.dayOfYear = getSetDayOfYear;\n\n // Hour\n momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;\n\n // Minute\n momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;\n\n // Second\n momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;\n\n // Millisecond\n momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;\n\n // Offset\n momentPrototype__proto.utcOffset = getSetOffset;\n momentPrototype__proto.utc = setOffsetToUTC;\n momentPrototype__proto.local = setOffsetToLocal;\n momentPrototype__proto.parseZone = setOffsetToParsedOffset;\n momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;\n momentPrototype__proto.isDST = isDaylightSavingTime;\n momentPrototype__proto.isLocal = isLocal;\n momentPrototype__proto.isUtcOffset = isUtcOffset;\n momentPrototype__proto.isUtc = isUtc;\n momentPrototype__proto.isUTC = isUtc;\n\n // Timezone\n momentPrototype__proto.zoneAbbr = getZoneAbbr;\n momentPrototype__proto.zoneName = getZoneName;\n\n // Deprecations\n momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n momentPrototype__proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n var momentPrototype = momentPrototype__proto;\n\n function moment__createUnix (input) {\n return local__createLocal(input * 1000);\n }\n\n function moment__createInZone () {\n return local__createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var prototype__proto = Locale.prototype;\n\n prototype__proto.calendar = locale_calendar__calendar;\n prototype__proto.longDateFormat = longDateFormat;\n prototype__proto.invalidDate = invalidDate;\n prototype__proto.ordinal = ordinal;\n prototype__proto.preparse = preParsePostFormat;\n prototype__proto.postformat = preParsePostFormat;\n prototype__proto.relativeTime = relative__relativeTime;\n prototype__proto.pastFuture = pastFuture;\n prototype__proto.set = locale_set__set;\n\n // Month\n prototype__proto.months = localeMonths;\n prototype__proto.monthsShort = localeMonthsShort;\n prototype__proto.monthsParse = localeMonthsParse;\n prototype__proto.monthsRegex = monthsRegex;\n prototype__proto.monthsShortRegex = monthsShortRegex;\n\n // Week\n prototype__proto.week = localeWeek;\n prototype__proto.firstDayOfYear = localeFirstDayOfYear;\n prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;\n\n // Day of Week\n prototype__proto.weekdays = localeWeekdays;\n prototype__proto.weekdaysMin = localeWeekdaysMin;\n prototype__proto.weekdaysShort = localeWeekdaysShort;\n prototype__proto.weekdaysParse = localeWeekdaysParse;\n\n prototype__proto.weekdaysRegex = weekdaysRegex;\n prototype__proto.weekdaysShortRegex = weekdaysShortRegex;\n prototype__proto.weekdaysMinRegex = weekdaysMinRegex;\n\n // Hours\n prototype__proto.isPM = localeIsPM;\n prototype__proto.meridiem = localeMeridiem;\n\n function lists__get (format, index, field, setter) {\n var locale = locale_locales__getLocale();\n var utc = create_utc__createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return lists__get(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = lists__get(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = locale_locales__getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return lists__get(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = lists__get(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function lists__listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function lists__listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function lists__listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function lists__listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function lists__listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n locale_locales__getSetGlobalLocale('en', {\n ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);\n utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);\n\n var mathAbs = Math.abs;\n\n function duration_abs__abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function duration_add_subtract__addSubtract (duration, input, value, direction) {\n var other = create__createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function duration_add_subtract__add (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function duration_add_subtract__subtract (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function duration_as__valueOf () {\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function duration_get__get (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n }\n\n function makeGetter(name) {\n return function () {\n return this._data[name];\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {\n var duration = create__createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds < thresholds.s && ['s', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function duration_humanize__getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n return true;\n }\n\n function humanize (withSuffix) {\n var locale = this.localeData();\n var output = duration_humanize__relativeTime(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var iso_string__abs = Math.abs;\n\n function iso_string__toISOString() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n var seconds = iso_string__abs(this._milliseconds) / 1000;\n var days = iso_string__abs(this._days);\n var months = iso_string__abs(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n }\n\n var duration_prototype__proto = Duration.prototype;\n\n duration_prototype__proto.abs = duration_abs__abs;\n duration_prototype__proto.add = duration_add_subtract__add;\n duration_prototype__proto.subtract = duration_add_subtract__subtract;\n duration_prototype__proto.as = as;\n duration_prototype__proto.asMilliseconds = asMilliseconds;\n duration_prototype__proto.asSeconds = asSeconds;\n duration_prototype__proto.asMinutes = asMinutes;\n duration_prototype__proto.asHours = asHours;\n duration_prototype__proto.asDays = asDays;\n duration_prototype__proto.asWeeks = asWeeks;\n duration_prototype__proto.asMonths = asMonths;\n duration_prototype__proto.asYears = asYears;\n duration_prototype__proto.valueOf = duration_as__valueOf;\n duration_prototype__proto._bubble = bubble;\n duration_prototype__proto.get = duration_get__get;\n duration_prototype__proto.milliseconds = milliseconds;\n duration_prototype__proto.seconds = seconds;\n duration_prototype__proto.minutes = minutes;\n duration_prototype__proto.hours = hours;\n duration_prototype__proto.days = days;\n duration_prototype__proto.weeks = weeks;\n duration_prototype__proto.months = months;\n duration_prototype__proto.years = years;\n duration_prototype__proto.humanize = humanize;\n duration_prototype__proto.toISOString = iso_string__toISOString;\n duration_prototype__proto.toString = iso_string__toISOString;\n duration_prototype__proto.toJSON = iso_string__toISOString;\n duration_prototype__proto.locale = locale;\n duration_prototype__proto.localeData = localeData;\n\n // Deprecations\n duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);\n duration_prototype__proto.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n utils_hooks__hooks.version = '2.15.2';\n\n setHookCallback(local__createLocal);\n\n utils_hooks__hooks.fn = momentPrototype;\n utils_hooks__hooks.min = min;\n utils_hooks__hooks.max = max;\n utils_hooks__hooks.now = now;\n utils_hooks__hooks.utc = create_utc__createUTC;\n utils_hooks__hooks.unix = moment__createUnix;\n utils_hooks__hooks.months = lists__listMonths;\n utils_hooks__hooks.isDate = isDate;\n utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;\n utils_hooks__hooks.invalid = valid__createInvalid;\n utils_hooks__hooks.duration = create__createDuration;\n utils_hooks__hooks.isMoment = isMoment;\n utils_hooks__hooks.weekdays = lists__listWeekdays;\n utils_hooks__hooks.parseZone = moment__createInZone;\n utils_hooks__hooks.localeData = locale_locales__getLocale;\n utils_hooks__hooks.isDuration = isDuration;\n utils_hooks__hooks.monthsShort = lists__listMonthsShort;\n utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;\n utils_hooks__hooks.defineLocale = defineLocale;\n utils_hooks__hooks.updateLocale = updateLocale;\n utils_hooks__hooks.locales = locale_locales__listLocales;\n utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;\n utils_hooks__hooks.normalizeUnits = normalizeUnits;\n utils_hooks__hooks.relativeTimeRounding = duration_humanize__getSetRelativeTimeRounding;\n utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;\n utils_hooks__hooks.calendarFormat = getCalendarFormat;\n utils_hooks__hooks.prototype = momentPrototype;\n\n var _moment = utils_hooks__hooks;\n\n return _moment;\n\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment/moment.js\n// module id = 107\n// module chunks = 1","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 108\n// module chunks = 1","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Symbol.js\n// module id = 109\n// module chunks = 1","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/eq.js\n// module id = 110\n// module chunks = 1","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_toKey.js\n// module id = 111\n// module chunks = 1","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArguments.js\n// module id = 112\n// module chunks = 1","'use strict'\n\nvar curry2 = require('curry2')\nvar debug = require('debug')('selectn')\nvar dotted = require('brackets2dots')\nvar splits = require('dotsplit.js')\nvar string = Object.prototype.toString\n\nmodule.exports = curry2(selectn)\n\n/**\n * Curried property accessor function that resolves deeply-nested object properties via dot/bracket-notation\n * string path while mitigating `TypeErrors` via friendly and composable API.\n *\n * @param {String|Array} path\n * Dot/bracket-notation string path or array.\n *\n * @param {Object} object\n * Object to access.\n *\n * @return {Function|*|undefined}\n * (1) returns `selectn/1` when partially applied.\n * (2) returns value at path if path exists.\n * (3) returns undefined if path does not exist.\n */\nfunction selectn (path, object) {\n debug('arguments:', {\n path: path,\n object: object\n })\n\n var idx = -1\n var seg = string.call(path) === '[object Array]' ? path : splits(dotted(path))\n var end = seg.length\n var ref = end ? object : void 0\n\n while (++idx < end) {\n if (Object(ref) !== ref) return void 0\n ref = ref[seg[idx]]\n }\n\n debug('ref:', ref)\n return typeof ref === 'function' ? ref() : ref\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/selectn/index.js\n// module id = 113\n// module chunks = 1","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIteratee.js\n// module id = 114\n// module chunks = 1","import { createSelector } from 'reselect';\nimport { DeviceType } from 'enums';\nimport bootstrapSelector from 'common/selectors/bootstrapSelector';\nimport appSelector, {\n apiEnvSelector,\n apiVersionSelector,\n editionSelector,\n isDomesticSelector\n} from 'common/selectors/appSelector';\nimport {\n zipcodeSelector,\n authStatesSelector,\n preauthorizedResourcesSelector\n} from 'common/selectors/authenticationSelectors';\nimport { oneIdEntitlementsParamsSelector } from 'common/selectors/oneIdSelector';\nimport { favoriteTeamSelector, favoriteSportSelector } from 'common/selectors/fanSelector';\nimport { dateFormat } from 'lib/format';\n\nconst apiConfigParams = ['apiEnv', 'apiVersion'];\n\nconst apiParamsSelector = createSelector(\n appSelector,\n apiEnvSelector,\n apiVersionSelector,\n (app, apiEnv, apiVersion) => {\n const { device: deviceType, country, lang, sourceLang, packageId, tier, edition } = app;\n const tz = dateFormat.getTimezoneParam();\n return {\n apiEnv,\n apiVersion,\n countryCode: country,\n deviceType,\n lang,\n sourceLang,\n tz,\n packageId,\n tier,\n edition\n };\n }\n);\n\nexport const shieldApiKeySelector = createSelector(\n appSelector,\n editionSelector,\n (\n { bootstrap: { shieldApiKey: shieldApiKeys } },\n { edition }\n ) => {\n if (shieldApiKeys[edition]) {\n return shieldApiKeys[edition];\n }\n\n // If we haven't returned, go with domestic/US.\n return shieldApiKeys.domestic;\n }\n);\n\nexport const graphqlParamsSelector = createSelector(\n appSelector,\n apiEnvSelector,\n (app, apiEnv) => {\n const { device, country: countryCode, lang, packageId } = app;\n const tz = dateFormat.getTimezoneParam();\n return {\n apiEnv,\n countryCode,\n deviceType: DeviceType[device],\n lang,\n tz,\n packageId\n };\n }\n);\n\nexport const collectionParamsSelector = createSelector(\n appSelector,\n (app) => {\n const { country, lang } = app;\n return {\n countryCode: country,\n lang\n };\n }\n);\n\nexport function getWhitelistedParams(paramsArg, queryParameters) {\n let params = paramsArg;\n if (queryParameters) {\n const whitelisted = queryParameters.concat(apiConfigParams);\n params = Object.keys(params).reduce((acc, key) => {\n if (whitelisted.indexOf(key) > -1) {\n acc[key] = params[key];\n }\n return acc;\n }, {});\n }\n\n return params;\n}\n\nexport const searchApiParamsSelector = createSelector(\n bootstrapSelector,\n isDomesticSelector,\n apiParamsSelector,\n preauthorizedResourcesSelector,\n zipcodeSelector,\n (\n { pageApi: { queryParameters } = {} },\n isDomestic,\n apiParams,\n authNetworks,\n zipcode\n ) => {\n let params = isDomestic ? {\n ...apiParams,\n authNetworks,\n zipcode\n } : apiParams;\n\n params = getWhitelistedParams(params, queryParameters);\n\n return params;\n }\n);\n\nexport const suggestApiParamsSelector = createSelector(\n bootstrapSelector,\n isDomesticSelector,\n apiParamsSelector,\n preauthorizedResourcesSelector,\n zipcodeSelector,\n (\n { pageApi: { queryParameters } = {} },\n isDomestic,\n apiParams,\n authNetworks,\n zipcode\n ) => {\n let params = isDomestic ? {\n ...apiParams,\n authNetworks,\n zipcode\n } : apiParams;\n\n params = getWhitelistedParams(params, queryParameters);\n\n return params;\n }\n);\n\nexport const pageApiFeatureFlagsSelector = createSelector(\n bootstrapSelector,\n (\n { pageApi: { featureFlags = [] } = {} },\n ) => {\n const features = featureFlags.length ? featureFlags.join(',') : undefined;\n\n return {\n features\n };\n }\n);\n\nexport const pageAPIParamsSelector = createSelector(\n bootstrapSelector,\n isDomesticSelector,\n apiParamsSelector,\n authStatesSelector,\n preauthorizedResourcesSelector,\n oneIdEntitlementsParamsSelector,\n zipcodeSelector,\n favoriteTeamSelector,\n favoriteSportSelector,\n pageApiFeatureFlagsSelector,\n (\n { pageApi: { queryParameters } = {} },\n isDomestic,\n apiParams,\n authStates,\n authNetworks,\n entitlements,\n zipcode,\n favoriteTeam,\n favoriteSport,\n features,\n ) => {\n let params = isDomestic ? {\n ...apiParams,\n ...features,\n authStates,\n authNetworks,\n entitlements,\n zipcode,\n favoriteTeam,\n favoriteSport\n } : {\n ...apiParams,\n ...features\n };\n\n params = getWhitelistedParams(params, queryParameters);\n\n return params;\n }\n);\n\n// `/web/event` and `/web/video`\nexport const pageAPILimitedParamsSelector = createSelector(\n bootstrapSelector,\n isDomesticSelector,\n apiParamsSelector,\n zipcodeSelector,\n oneIdEntitlementsParamsSelector,\n pageApiFeatureFlagsSelector,\n (\n { pageApi: { queryParameters } = {} },\n isDomestic,\n apiParams,\n zipcode,\n entitlements,\n features\n ) => {\n let params = isDomestic ? {\n ...apiParams,\n ...features,\n entitlements,\n zipcode\n } : {\n ...apiParams,\n ...features\n };\n\n params = getWhitelistedParams(params, queryParameters);\n\n return params;\n }\n);\n\nexport default apiParamsSelector;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/apiParamsSelector.js","/* eslint-disable class-methods-use-this, no-return-assign */\nimport Promise from 'bluebird';\nimport { PlayerTech } from '../../constants';\nimport PlayerBase from '../PlayerBase';\n\nclass BrightcovePlayer extends PlayerBase {\n constructor({ playerTech, ...options } = {}) {\n super();\n this._playerTech = playerTech;\n this._options = options;\n }\n\n get tech() {\n return PlayerTech.BRIGHTCOVE;\n }\n\n get container() {\n return this._player && this._player.bundle.element.parentNode;\n }\n\n get player() {\n return this._player && this._player.player;\n }\n\n get analytics() {\n return this._player && this._player.analytics;\n }\n\n get advertising() {\n return this._player && this._player.advertising;\n }\n\n currentTime(value) {\n return new Promise((resolve, reject) => {\n try {\n if (value && this._player) {\n this._player.currentTime(value);\n resolve(this);\n return;\n }\n resolve(this._player && this._player.currentTime());\n } catch (err) {\n reject(err);\n }\n });\n }\n\n createPlayer() {\n const ESPNVideoPlayer = window.ESPNVideoPlayer;\n return (\n this._playerPromise ||\n (this._playerPromise = new Promise((resolve, reject) => {\n if (ESPNVideoPlayer) {\n this._player = new ESPNVideoPlayer(this._playerTech, this._options);\n this._player.ready(resolve);\n } else {\n setTimeout(() => {\n reject(new Error('ESPN web player bunlde JS not available.'));\n }, 1000);\n }\n }))\n );\n }\n\n addPlayerListeners() {\n const { player } = this._player || {};\n if (player) {\n this._unsubscribes = Object.keys(BrightcovePlayer.Events).map(key => {\n const callback = (...args) => {\n this.emit(BrightcovePlayer.Events[key], ...args);\n };\n player.on(BrightcovePlayer.Events[key], callback);\n return () => {\n player.off(BrightcovePlayer.Events[key], callback);\n };\n });\n }\n }\n\n removePlayerListeners() {\n if (this._unsubscribes) {\n while (this._unsubscribes.length) {\n this._unsubscribes.pop()();\n }\n this._unsubscribes = null;\n }\n }\n\n create(options) {\n return this.createPlayer().then(() => {\n const { guid, el, options: playOptions } = options;\n return new Promise(resolve => {\n this._player.embed(guid, el, playOptions, () => {\n this.addPlayerListeners();\n resolve(this);\n });\n });\n });\n }\n\n delete() {\n this.removePlayerListeners();\n this._player.unembed();\n return Promise.resolve(this);\n }\n\n play() {\n return new Promise((resolve, reject) => {\n try {\n this._player.play();\n resolve(this);\n } catch (err) {\n reject(err);\n }\n });\n }\n\n pause() {\n return new Promise((resolve, reject) => {\n try {\n this._player.pause();\n resolve(this);\n } catch (err) {\n reject(err);\n }\n });\n }\n\n mute() {\n return new Promise((resolve, reject) => {\n try {\n this._player.muted(true);\n resolve(this);\n } catch (err) {\n reject(err);\n }\n });\n }\n\n unmute() {\n return new Promise((resolve, reject) => {\n try {\n this._player.muted(false);\n resolve(this);\n } catch (err) {\n reject(err);\n }\n });\n }\n\n requestFullscreen() {\n return new Promise((resolve, reject) => {\n try {\n this._player.requestFullscreen();\n resolve(this);\n } catch (err) {\n reject(err);\n }\n });\n }\n\n exitFullscreen() {\n return new Promise((resolve, reject) => {\n try {\n this._player.exitFullscreen();\n resolve(this);\n } catch (err) {\n reject(err);\n }\n });\n }\n\n error(err, content) {\n return new Promise((resolve, reject) => {\n try {\n this._player.error(err, content);\n resolve(this);\n } catch (err2) {\n reject(err2);\n }\n });\n }\n\n getPlayerConfigs() {\n return Promise.resolve(this._player.bundle.options);\n }\n\n updatePlayerConfigs(newConfigs) {\n return Promise.resolve(newConfigs);\n }\n}\n\nBrightcovePlayer.Events = {\n ESPN_PLAYING: 'espn.playing',\n ESPN_PLAY: 'espn.play',\n ESPN_PAUSE: 'espn.pause',\n ESPN_AD_POD_STARTED: 'espn.ads-pod-started',\n ESPN_AD_POD_ENDED: 'espn.ads-pod-ended',\n ESPN_AD_STARTED: 'espn.ads-ad-started',\n ESPN_AD_ENDED: 'espn.ads-ad-ended',\n ESPN_CONTENT_ENDED: 'espn.contentended',\n ESPN_CONTENT_LOADED: 'espn.contentloaded',\n ESPN_PROGRAM_CHANGE: 'espn.programchange',\n ESPN_AUTOPLAY_TOGGLED: 'espn.autoplaytoggled',\n ESPN_SOCIAL_OPENED: 'socialopened',\n ESPN_SOCIAL_CLOSED: 'socialclosed',\n ESPN_CAPTION_OPENED: 'captionopened',\n ESPN_CAPTION_CLOSED: 'captionclosed',\n ESPN_ERROR: 'espn.error',\n ESPN_DRM_ERROR: 'espn.drm.error',\n ESPN_ADS_AD_SKIPPED: 'ads-ad-skipped'\n};\n\nexport default BrightcovePlayer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/video-player/player-tech/BrightcovePlayer/index.js","/* eslint-disable class-methods-use-this */\nimport Promise from 'bluebird';\nimport { PlayerTech } from './constants';\nimport PlayerBase from './player-tech/PlayerBase';\nimport BAMPlayer from './player-tech/BAMPlayer';\nimport BrightcovePlayer from './player-tech/BrightcovePlayer';\n\nclass WatchESPNWebPlayer extends PlayerBase {\n constructor({ bamPlayerOptions = {}, brightcovePlayerOptions = {} } = {}) {\n super();\n this._bamPlayer = null;\n this._brightcovePlayer = null;\n this._bamPlayerOptions = bamPlayerOptions;\n this._brightcovePlayerOptions = brightcovePlayerOptions;\n }\n create({ playerTech, container, ...options }) {\n let promise = Promise.resolve();\n if (playerTech === PlayerTech.BAM) {\n if (!this._bamPlayer) {\n this._bamPlayer = new BAMPlayer(this._bamPlayerOptions);\n Object.keys(BAMPlayer.Events).forEach(event => {\n this._bamPlayer.on(\n BAMPlayer.Events[event],\n this.proxyEvent.bind(this, BAMPlayer.Events[event])\n );\n });\n }\n if (this._player && this._player.tech !== PlayerTech.BAM) {\n promise = this.delete();\n }\n this._player = this._bamPlayer;\n } else if (playerTech === PlayerTech.BRIGHTCOVE) {\n if (!this._brightcovePlayer) {\n this._brightcovePlayer = new BrightcovePlayer(this._brightcovePlayerOptions);\n Object.keys(BrightcovePlayer.Events).forEach(event => {\n this._brightcovePlayer.on(\n BrightcovePlayer.Events[event],\n this.proxyEvent.bind(this, BrightcovePlayer.Events[event])\n );\n });\n }\n if (this._player && this._player.tech !== PlayerTech.BRIGHTCOVE) {\n promise = this.delete();\n }\n this._player = this._brightcovePlayer;\n }\n if (!this._player) {\n return Promise.reject(new Error('cannot create player.'));\n }\n\n let containerEl;\n try {\n if (typeof container === 'string') {\n containerEl = document.querySelector(container);\n } else {\n containerEl = container;\n }\n } catch (err) {\n return Promise.reject(err);\n }\n\n const playerOptions = {\n ...options,\n selector: container,\n el: containerEl\n };\n\n return promise.then(() => this._player.create(playerOptions)).then(() => {\n this.emit(WatchESPNWebPlayer.Events.READY);\n });\n }\n\n destroy() {\n if (!this._player) {\n return Promise.resolve(this);\n }\n\n if (this._bamPlayer && this._player.destroyPlayer) {\n return this._player.destroyPlayer().then(() => {\n this._bamPlayer.removeAllListeners();\n });\n }\n\n return this.delete().then(() => {\n this._brightcovePlayer.removeAllListeners();\n this._brightcovePlayer = null;\n });\n }\n\n getPlayer(tech) {\n switch (tech) {\n case PlayerTech.BRIGHTCOVE:\n return this._brightcovePlayer;\n case PlayerTech.BAM:\n return this._bamPlayer;\n default: // return currently active player\n return this._player;\n }\n }\n\n getGeoLocation(options) {\n const player = new BAMPlayer(this._bamPlayerOptions);\n player.once(\n BAMPlayer.Events.GEOLOCATION_READY,\n this.proxyEvent.bind(this, BAMPlayer.Events.GEOLOCATION_READY)\n );\n return player.getGeoLocation({ ...options, selector: options.container });\n }\n\n renderPaywall(options) {\n const player = new BAMPlayer(this._bamPlayerOptions);\n player.once(\n BAMPlayer.Events.LOGIN_REQUESTED,\n this.proxyEvent.bind(this, BAMPlayer.Events.LOGIN_REQUESTED)\n );\n return player.renderPaywall({ ...options, selector: options.container });\n }\n\n createSDKWrapper(options) {\n const player = new BAMPlayer(this._bamPlayerOptions);\n player.once(\n BAMPlayer.Events.SUBSCRIPTIONS_READY,\n this.proxyEvent.bind(this, BAMPlayer.Events.SUBSCRIPTIONS_READY)\n );\n player.once(\n BAMPlayer.Events.GEOLOCATION_READY,\n this.proxyEvent.bind(this, BAMPlayer.Events.GEOLOCATION_READY)\n );\n player.once(\n BAMPlayer.Events.SESSIONTOKEN_READY,\n this.proxyEvent.bind(this, BAMPlayer.Events.SESSIONTOKEN_READY)\n );\n\n player.once(\n BAMPlayer.Events.USER_TRACKING_INFORMATION_READY,\n this.proxyEvent.bind(this, BAMPlayer.Events.USER_TRACKING_INFORMATION_READY)\n );\n\n window.sdkWrapper = player;\n return player.createSDKWrapper({ ...options, selector: options.container });\n }\n\n sendContentReward({ selector, rewardToken, contentId, userActivityAction, recommendedContentIds }) {\n if (window.sdkWrapper) {\n return window.sdkWrapper.sendContentReward(\n selector,\n rewardToken,\n contentId,\n userActivityAction,\n recommendedContentIds\n );\n }\n\n return Promise.resolve(this);\n }\n\n delete() {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.delete()\n .then(() => {\n this._player = null;\n });\n }\n\n loadMedia(options) {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.loadMedia({ ...options, selector: options.container });\n }\n\n changeFeed(options) {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.changeFeed({ ...options, selector: options.container });\n }\n\n deactivate(...args) {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.deactivate(...args);\n }\n\n play() {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.play();\n }\n\n pause() {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.pause();\n }\n\n mute() {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.mute();\n }\n\n unmute() {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.unmute();\n }\n\n error(...args) {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.error(...args);\n }\n\n getPlayerConfigs() {\n if (!this._player) {\n return Promise.resolve();\n }\n return this._player.getPlayerConfigs();\n }\n\n updatePlayerConfigs(...args) {\n if (!this._player) {\n return Promise.resolve(this);\n }\n return this._player.updatePlayerConfigs(...args);\n }\n\n proxyEvent(type, ...args) {\n this.emit(type, ...args);\n }\n}\n\nWatchESPNWebPlayer.Events = {\n READY: 'READY',\n ...BrightcovePlayer.Events,\n ...BAMPlayer.Events\n};\n\nWatchESPNWebPlayer.PlayerTech = PlayerTech;\n\nexport default WatchESPNWebPlayer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/video-player/index.js","import canPlayStream from './canPlayStream';\n\nexport default function canPlayContent({ status, streams = [] } = {}, userAuth, optimisitic = true) {\n return status != 'upcoming' && streams.some(stream => canPlayStream(stream, userAuth, optimisitic));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/canPlayContent.js","import shallowCheckAuthentication from './shallowCheckAuthentication';\nimport isEmpty from 'lodash/isEmpty';\n\nexport default function canPlayStream(stream = {}, userAuth, optimisitic = true) {\n // theoretically should be able to use `showKey` field\n return shallowCheckAuthentication(stream, userAuth, optimisitic);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/canPlayStream.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function () {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function () {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function (method, scope, a, b, c, d, e, f) {\n !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function (startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function (startIndex) {\n !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/Transaction.js\n// module id = 119\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function (event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function (event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function (event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function (event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticMouseEvent.js\n// module id = 120\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar DOMNamespaces = require('./DOMNamespaces');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function (node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/setInnerHTML.js\n// module id = 121\n// module chunks = 1","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n'use strict';\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/escapeTextContentForBrowser.js\n// module id = 122\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactEventEmitterMixin = require('./ReactEventEmitterMixin');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getVendorPrefixedEventName = require('./getVendorPrefixedEventName');\nvar isEventSupported = require('./isEventSupported');\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function (ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function (enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function () {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function (registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function () {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function () {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactBrowserEventEmitter.js\n// module id = 123\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.canUseMembrane = undefined;\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar canUseMembrane = exports.canUseMembrane = false;\n\n// No-op by default.\nvar deprecateObjectProperties = function deprecateObjectProperties(object) {\n return object;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n try {\n if (Object.defineProperty({}, 'x', {\n get: function get() {\n return true;\n }\n }).x) {\n exports.canUseMembrane = canUseMembrane = true;\n }\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n if (canUseMembrane) {\n deprecateObjectProperties = function deprecateObjectProperties(object, message) {\n // Wrap the deprecated object in a membrane to warn on property access.\n var membrane = {};\n\n var _loop = function _loop(prop) {\n if (!Object.prototype.hasOwnProperty.call(object, prop)) {\n return 'continue';\n }\n\n if (typeof object[prop] === 'function') {\n // Can't use fat arrow here because of use of arguments below.\n membrane[prop] = function () {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;\n return object[prop].apply(object, arguments);\n };\n return 'continue';\n }\n\n // These properties are non-enumerable to prevent React dev tools from\n // seeing them and causing spurious warnings when accessing them. In\n // principle this could be done with a proxy, but support for the\n // ownKeys trap on proxies is not universal, even among browsers that\n // otherwise support proxies.\n Object.defineProperty(membrane, prop, {\n get: function get() {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;\n return object[prop];\n }\n });\n };\n\n for (var prop in object) {\n var _ret = _loop(prop);\n\n if (_ret === 'continue') continue;\n }\n\n return membrane;\n };\n }\n}\n\nexports.default = deprecateObjectProperties;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/deprecateObjectProperties.js\n// module id = 124\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexports.canUseDOM = canUseDOM;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/ExecutionEnvironment.js\n// module id = 125\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _queryString = require('query-string');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nvar SEARCH_BASE_KEY = '$searchBase';\n\nfunction defaultStringifyQuery(query) {\n return _queryString.stringify(query).replace(/%20/g, '+');\n}\n\nvar defaultParseQueryString = _queryString.parse;\n\nfunction isNestedObject(object) {\n for (var p in object) {\n if (Object.prototype.hasOwnProperty.call(object, p) && typeof object[p] === 'object' && !Array.isArray(object[p]) && object[p] !== null) return true;\n }return false;\n}\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know how to handle URL queries.\n */\nfunction useQueries(createHistory) {\n return function () {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var history = createHistory(options);\n\n var stringifyQuery = options.stringifyQuery;\n var parseQueryString = options.parseQueryString;\n\n if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;\n\n if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;\n\n function addQuery(location) {\n if (location.query == null) {\n var search = location.search;\n\n location.query = parseQueryString(search.substring(1));\n location[SEARCH_BASE_KEY] = { search: search, searchBase: '' };\n }\n\n // TODO: Instead of all the book-keeping here, this should just strip the\n // stringified query from the search.\n\n return location;\n }\n\n function appendQuery(location, query) {\n var _extends2;\n\n var searchBaseSpec = location[SEARCH_BASE_KEY];\n var queryString = query ? stringifyQuery(query) : '';\n if (!searchBaseSpec && !queryString) {\n return location;\n }\n\n process.env.NODE_ENV !== 'production' ? _warning2['default'](stringifyQuery !== defaultStringifyQuery || !isNestedObject(query), 'useQueries does not stringify nested query objects by default; ' + 'use a custom stringifyQuery function') : undefined;\n\n if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n var searchBase = undefined;\n if (searchBaseSpec && location.search === searchBaseSpec.search) {\n searchBase = searchBaseSpec.searchBase;\n } else {\n searchBase = location.search || '';\n }\n\n var search = searchBase;\n if (queryString) {\n search += (search ? '&' : '?') + queryString;\n }\n\n return _extends({}, location, (_extends2 = {\n search: search\n }, _extends2[SEARCH_BASE_KEY] = { search: search, searchBase: searchBase }, _extends2));\n }\n\n // Override all read methods with query-aware versions.\n function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n _runTransitionHook2['default'](hook, addQuery(location), callback);\n });\n }\n\n function listen(listener) {\n return history.listen(function (location) {\n listener(addQuery(location));\n });\n }\n\n // Override all write methods with query-aware versions.\n function push(location) {\n history.push(appendQuery(location, location.query));\n }\n\n function replace(location) {\n history.replace(appendQuery(location, location.query));\n }\n\n function createPath(location, query) {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](!query, 'the query argument to createPath is deprecated; use a location descriptor instead') : undefined;\n\n return history.createPath(appendQuery(location, query || location.query));\n }\n\n function createHref(location, query) {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](!query, 'the query argument to createHref is deprecated; use a location descriptor instead') : undefined;\n\n return history.createHref(appendQuery(location, query || location.query));\n }\n\n function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var fullLocation = history.createLocation.apply(history, [appendQuery(location, location.query)].concat(args));\n if (location.query) {\n fullLocation.query = location.query;\n }\n return addQuery(fullLocation);\n }\n\n // deprecated\n function pushState(state, path, query) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n push(_extends({ state: state }, path, { query: query }));\n }\n\n // deprecated\n function replaceState(state, path, query) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n replace(_extends({ state: state }, path, { query: query }));\n }\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation,\n\n pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n });\n };\n}\n\nexports['default'] = useQueries;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/useQueries.js\n// module id = 126\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _deprecateObjectProperties = require('./deprecateObjectProperties');\n\nvar _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);\n\nvar _getRouteParams = require('./getRouteParams');\n\nvar _getRouteParams2 = _interopRequireDefault(_getRouteParams);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar array = _React$PropTypes.array;\nvar func = _React$PropTypes.func;\nvar object = _React$PropTypes.object;\n\n/**\n * A <RouterContext> renders the component tree for a given router state\n * and sets the history object and the current location in context.\n */\n\nvar RouterContext = _react2.default.createClass({\n displayName: 'RouterContext',\n\n\n propTypes: {\n history: object,\n router: object.isRequired,\n location: object.isRequired,\n routes: array.isRequired,\n params: object.isRequired,\n components: array.isRequired,\n createElement: func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n createElement: _react2.default.createElement\n };\n },\n\n\n childContextTypes: {\n history: object,\n location: object.isRequired,\n router: object.isRequired\n },\n\n getChildContext: function getChildContext() {\n var _props = this.props;\n var router = _props.router;\n var history = _props.history;\n var location = _props.location;\n\n if (!router) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, '`<RouterContext>` expects a `router` rather than a `history`') : void 0;\n\n router = _extends({}, history, {\n setRouteLeaveHook: history.listenBeforeLeavingRoute\n });\n delete router.listenBeforeLeavingRoute;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n location = (0, _deprecateObjectProperties2.default)(location, '`context.location` is deprecated, please use a route component\\'s `props.location` instead. http://tiny.cc/router-accessinglocation');\n }\n\n return { history: history, location: location, router: router };\n },\n createElement: function createElement(component, props) {\n return component == null ? null : this.props.createElement(component, props);\n },\n render: function render() {\n var _this = this;\n\n var _props2 = this.props;\n var history = _props2.history;\n var location = _props2.location;\n var routes = _props2.routes;\n var params = _props2.params;\n var components = _props2.components;\n\n var element = null;\n\n if (components) {\n element = components.reduceRight(function (element, components, index) {\n if (components == null) return element; // Don't create new children; use the grandchildren.\n\n var route = routes[index];\n var routeParams = (0, _getRouteParams2.default)(route, params);\n var props = {\n history: history,\n location: location,\n params: params,\n route: route,\n routeParams: routeParams,\n routes: routes\n };\n\n if ((0, _RouteUtils.isReactChildren)(element)) {\n props.children = element;\n } else if (element) {\n for (var prop in element) {\n if (Object.prototype.hasOwnProperty.call(element, prop)) props[prop] = element[prop];\n }\n }\n\n if ((typeof components === 'undefined' ? 'undefined' : _typeof(components)) === 'object') {\n var elements = {};\n\n for (var key in components) {\n if (Object.prototype.hasOwnProperty.call(components, key)) {\n // Pass through the key as a prop to createElement to allow\n // custom createElement functions to know which named component\n // they're rendering, for e.g. matching up to fetched data.\n elements[key] = _this.createElement(components[key], _extends({\n key: key }, props));\n }\n }\n\n return elements;\n }\n\n return _this.createElement(components, props);\n }, element);\n }\n\n !(element === null || element === false || _react2.default.isValidElement(element)) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'The root route must render a single element') : (0, _invariant2.default)(false) : void 0;\n\n return element;\n }\n});\n\nexports.default = RouterContext;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/RouterContext.js\n// module id = 127\n// module chunks = 1","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_castPath.js\n// module id = 128\n// module chunks = 1","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isSymbol.js\n// module id = 129\n// module chunks = 1","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nativeCreate.js\n// module id = 130\n// module chunks = 1","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_ListCache.js\n// module id = 131\n// module chunks = 1","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_assocIndexOf.js\n// module id = 132\n// module chunks = 1","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getMapData.js\n// module id = 133\n// module chunks = 1","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayMap.js\n// module id = 134\n// module chunks = 1","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseAssignValue.js\n// module id = 135\n// module chunks = 1","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isIndex.js\n// module id = 136\n// module chunks = 1","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isPrototype.js\n// module id = 137\n// module chunks = 1","const NOOP = function() {};\nconst env = process.env;\nlet nrEmitter;\nif (!process.browser && env.NEW_RELIC_APP_NAME && env.NEW_RELIC_LICENSE_KEY) {\n const newRelic = require('newrelic');\n const EventEmitter = require('events');\n nrEmitter = new EventEmitter();\n // newRelicEmitter.on(UNFULFILLED_PROMISE_EVENT, (err) => {\n // newRelic.noticeError(err);\n // });\n} else {\n nrEmitter = {emit: NOOP };\n}\n\nexport const UNFULFILLED_PROMISE_EVENT = 'unfulfilledPromise';\nexport { nrEmitter as newRelicEmitter };\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/metrics/newRelicEventBus.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = $getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n ReflectApply(this.listener, this.target, args);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/events/events.js\n// module id = 139\n// module chunks = 1","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/keys.js\n// module id = 140\n// module chunks = 1","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isBuffer.js\n// module id = 141\n// module chunks = 1","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isTypedArray.js\n// module id = 142\n// module chunks = 1","export default function streamHasDTCPackage(stream = {}, packageName) {\n if (stream.packages && packageName) {\n return stream.packages.indexOf(packageName) > -1;\n }\n return false;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/streamHasDTCPackage.js","/**\n * getBamAuthConfig - returns a proper formatted auth object containing the token and swid keys.\n * Defaults to null values if id_token and swid values are undefined\n * @param {boolean} oneIdTokenObject = {} - Object containing both token and swid data\n * @param {object} passOneIdToken = false - Boolean flag to determine if a oneIdToken was passed\n * @param {array} userAuth = [] or array list of user auth types\n * @return {object}\n */\nexport default function getBamAuthConfig(oneIdTokenObject = {}, passOneIdToken = false, userAuth=[]) {\n let authObject = {\n auth: {\n token: null,\n swid: null,\n userAuth\n }\n };\n\n if (passOneIdToken === true && typeof oneIdTokenObject === 'object') {\n const { id_token = null, swid = null } = oneIdTokenObject;\n authObject = {...authObject, auth: { token: id_token, swid, userAuth }};\n }\n\n return authObject;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/getBamAuthConfig.js","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/uniqBy.js\n// module id = 145\n// module chunks = 1","import _intersection from 'lodash/intersection';\nimport { AuthTypes, Entitlements } from 'enums';\n\n/**\n * Verifies if the user's authenticated entitlements contain the Exectuive entitlement.\n * @param {array} userAuth - array of entitlements\n * @returns {boolean}\n */\nexport function isEspnPlusExecAccount(userAuth = []) {\n return !!userAuth.length && (userAuth.indexOf(Entitlements.ESPN_EXEC) !== -1);\n}\n\n/**\n * Verifies if the user's authenticated entitlements contain TDA entitlement.\n * @param {array} userAuth - array of entitlements\n * @returns {boolean}\n */\nexport function isEspnPlusTDA(userAuth = []) {\n return !!userAuth.length && (userAuth.indexOf(Entitlements.ESPN_TDA) !== -1);\n}\n\nexport function checkESPNPlusAuthentication(stream = {}, userAuth = []) {\n const { authTypes, packages = [] } = stream;\n if (authTypes.indexOf(AuthTypes.BAM) === -1) {\n return false;\n }\n\n if (packages.length === 0) {\n return true;\n }\n\n const userAuthForESPNPlus = userAuth\n .filter(auth => auth.indexOf(AuthTypes.MVPD) === -1 && auth.indexOf(AuthTypes.ISP) === -1);\n\n // NOTE: For `Executive` accounts we always allow access to all content\n if (isEspnPlusExecAccount(userAuth)) {\n return true;\n }\n\n // For TDA accounts, allow access to all content\n if (isEspnPlusTDA(userAuth)) {\n return true;\n }\n\n if (packages.length === 1 && userAuthForESPNPlus.indexOf(packages[0]) > -1) {\n return true;\n }\n\n if (_intersection(packages, userAuthForESPNPlus).length > 0) {\n return true;\n }\n\n return false;\n}\n/**\n * Checks a user's authentication status for a given content based on what is available in state.\n * It is shallow because it doesn't fetch any additional data, just calculates based on what we have already.\n *\n * @param {array} authTypes - Destructured from content object. The authTypes required to watch this content\n * @param {array} userAuth - The authTypes a user has at this given moment\n * @param {boolean} optimistic - Returns true if a user's authTypes are currently unknown\n */\n\nexport default function shallowCheckAuthentication(stream = {}, userAuth = [], optimisitic = true) {\n const { authTypes, source = '' } = stream;\n // if a content does not have authTypes, it's available for everyone\n if (!authTypes || authTypes.length === 0 || authTypes.some(authType => authType === AuthTypes.OPEN)) {\n return true;\n }\n\n // E+ content in legacy app\n if (authTypes.indexOf(AuthTypes.MVPD) > -1 && source === 'ESPN+') {\n return false;\n }\n\n // check if a user's authTypes intersects with a content's authTypes\n if (userAuth && authTypes) {\n const ESPNPlusAuthentication = checkESPNPlusAuthentication(stream, userAuth);\n\n return ESPNPlusAuthentication || (authTypes.some(authType => userAuth.indexOf(authType) !== -1 ||\n (userAuth.indexOf(`unknown_${authType}`) !== -1 && optimisitic)));\n }\n\n // if we got here, we didn't have all the information to shallow check auth\n return optimisitic;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/shallowCheckAuthentication.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport { addQueryToUrl } from 'lib/format';\n\nconst LinkWithFlags = (props) => {\n const { ownProps, flags, to: toArg } = props;\n let to;\n if (typeof toArg === 'object') {\n to = {\n ...toArg,\n query: { ...toArg.query, ...flags }\n };\n } else {\n to = addQueryToUrl(toArg, flags);\n }\n const newProps = {\n ...ownProps,\n to\n };\n return <Link {...newProps} />;\n};\n\nLinkWithFlags.defaultProps = Link.defaultProps;\n\nLinkWithFlags.propTypes = {\n ...Link.propTypes,\n ownProps: PropTypes.object,\n flags: PropTypes.object\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n ownProps,\n flags: persistentFlagsSelector(state)\n});\n\nexport default connect(mapStateToProps)(LinkWithFlags);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/LinkWithFlags.js","import { createSelector } from 'reselect';\n\nconst playingStreamSelector = ({ app }) => app.playingStream || {};\n\nexport default createSelector(playingStreamSelector, (playingStream) => playingStream);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/playingStreamSelector.js","\nimport { createSelector } from 'reselect';\nimport _find from 'lodash/find';\nimport _merge from 'lodash/merge';\n\nconst pickerStreamsSelector = ({ app }) => app.pickerStreams;\n\nexport default createSelector(pickerStreamsSelector, (pickerStreams = []) => {\n if (pickerStreams.length > 0) {\n pickerStreams.forEach(item => {\n if (Array.isArray(item.contents) && item.contents.length > 0) {\n item.contents.forEach(content => {\n // NOTE: Merges first matching nested `stream` object to the parent to ensure we have\n // all the metadata the players need for UI and playback such as `authTypes` and `packages`\n if (Array.isArray(content.streams) && content.streams.length > 0 && content.id) {\n const { id, streams } = content;\n const matchingStream = _find(streams, { id });\n\n if (matchingStream) {\n _merge(content, matchingStream);\n }\n }\n });\n }\n });\n }\n\n return pickerStreams;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/pickerStreamsSelector.js","import React, { PropTypes } from 'react';\nimport classNames from 'classnames';\nimport AdContainer from './AdContainer';\n\nconst InContentAd = (props) => {\n const className = classNames('ad-slot-incontent ad-wrapper', props.adClassName);\n return (\n <AdContainer\n className={className}\n slotType=\"incontent\"\n kvps={{ pos: 'incontent' }}\n render={InContentAd.render}\n {...props}\n />\n );\n};\n\n// This pattern is for AdContainer to give control to disable ads based on global state\nInContentAd.render = (children) => (\n <div className=\"ad-wrapper\">\n <article className=\"ad-300\">\n <div className=\"ad-center\">\n {children}\n </div>\n </article>\n </div>\n);\n\nInContentAd.propTypes = {\n adClassName: PropTypes.string\n};\n\nexport default InContentAd;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ads/InContentAd.js","/* eslint-disable import/prefer-default-export */\nexport { default as contentSubtitle } from './contentSubtitle';\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/lib/format/index.js","import React, { PropTypes, Component } from 'react';\nimport classNames from 'classnames';\nimport { ContentStatus } from 'enums';\nimport WatchPropTypes from 'common/PropTypes';\nimport { heroImageSelector } from 'common/selectors/heroSelector';\nimport ResponsiveThumbnail from 'common/ResponsiveThumbnail';\nimport connectPlayer from 'webapp/player/connectPlayer';\nimport ContentMetadataLarge from 'common/page/hero/ContentMetadataLarge';\nimport { contentSubtitle } from '@alias/lib/format';\nimport { isEmpty } from 'lib/util';\n\nconst IMAGE_WIDTHS = [400, 640, 1200, 1800];\n\n// this needs to be a class because we're connecting a player to it\nclass Hero extends Component {\n render() {\n const {\n content,\n selectedStream,\n playingStream,\n clickHandler,\n userIsBlackedOut,\n showLock\n } = this.props;\n const stream = !isEmpty(playingStream) ? playingStream : selectedStream;\n const { id: contentId, name: contentName, score: contentScore, status: contentStatus } = content;\n\n const imageHref = heroImageSelector(content);\n const { id = contentId, name = contentName, score = contentScore, status = contentStatus } = stream;\n const isPlayable = !userIsBlackedOut;\n const title = content.name;\n const subtitle = contentSubtitle(content);\n\n const playButtonClasses = classNames({\n 'button-play button-play--video': isPlayable,\n 'button-play--live': isPlayable && status === ContentStatus.LIVE\n });\n\n const blurredImage = (\n <ResponsiveThumbnail\n className=\"hero_img hero_img--blurred\"\n src={imageHref}\n srcSetWidths={IMAGE_WIDTHS}\n sizes=\"100vw\"\n alt={name}\n />\n );\n\n const hero = id ? (\n <article className=\"hero--super\" data-score={score}>\n <figure className=\"hero_wrapper\" ref=\"playerContainer\">\n <a className=\"col-a\">\n <div onClick={isPlayable && clickHandler} id={`hero-${id}`}>\n <ResponsiveThumbnail\n className=\"hero_img\"\n src={imageHref}\n srcSetWidths={IMAGE_WIDTHS}\n sizes=\"100vw\"\n alt={name}\n />\n <div className={playButtonClasses} />\n </div>\n </a>\n </figure>\n <ContentMetadataLarge\n blurredImage={blurredImage}\n title={title}\n subtitle={subtitle}\n content={content}\n isHero\n showLock={showLock}\n userIsBlackedOut={userIsBlackedOut}\n />\n </article>\n ) : null;\n\n return <div>{hero}</div>;\n }\n}\n\nHero.defaultProps = {\n clickHandler: (event) => {\n event.preventDefault();\n }\n};\n\nHero.propTypes = {\n clickHandler: PropTypes.func,\n content: WatchPropTypes.content,\n selectedStream: WatchPropTypes.stream,\n playingStream: WatchPropTypes.stream,\n userIsBlackedOut: PropTypes.bool,\n showLock: PropTypes.bool\n};\n\nexport default connectPlayer(Hero);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/hero/Hero.js","import React, { PropTypes } from 'react';\n\nconst BAMIFrame = ({ id, src }) => {\n const content = src && <iframe src={src} />;\n return (\n <div id={id}>\n {content}\n </div>\n );\n};\n\nBAMIFrame.propTypes = {\n id: PropTypes.string,\n src: PropTypes.string\n};\n\nexport default BAMIFrame;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/BAMIFrame.js","import React, { PropTypes, PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { BAM_PROMO_IFRAME_ID } from 'constants';\nimport Hero from '@alias/Hero';\nimport SearchContainer from 'common/search/SearchContainer';\nimport ScheduleModuleContainer from '@alias/ScheduleModuleContainer';\nimport playable from '@alias/Playable';\nimport BAMIFrame from 'webapp/common/BAMIFrame';\nimport heroSelector from 'common/selectors/heroSelector';\nimport { enableSearchSelector, apiEnvSelector } from 'common/selectors/appSelector';\nimport pageSelector, { showPromoSelector } from 'common/selectors/pageSelector';\nimport { entitlementsTrackingSelector } from 'common/selectors/analyticsSelectors';\nimport { isEmpty } from 'lib/util';\nimport { PlayerPlacement, PageType } from 'enums';\nimport { createDTCPaywallAction } from 'common/actions/authenticationActions';\n\nconst PlayableHero = playable(Hero);\n\nclass TopLayoutContainer extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n promoShown: false\n };\n }\n\n componentDidUpdate() {\n const { promoShown } = this.state;\n const { dispatch } = this.props;\n // can't use `ref` for stateless component(BAMIFrame), so checking against real DOM element\n if (!promoShown && this.showPromo && document.getElementById(BAM_PROMO_IFRAME_ID)) {\n dispatch(createDTCPaywallAction({\n containerId: BAM_PROMO_IFRAME_ID\n }));\n if (!this.state.promoShown) {\n this.promoShown();\n }\n }\n }\n get showPromo() {\n const { page: { id }, showPromo: showPromoArg } = this.props;\n return showPromoArg && id === 'espnplus';\n }\n promoShown() {\n this.setState({ promoShown: true });\n }\n render() {\n const { hero: heroArg, apiEnv, showSearch, entitlementsTracking } = this.props;\n let hero = null;\n let search = null;\n let scheduleModule = null;\n\n if (this.showPromo) {\n hero = (\n <BAMIFrame id={BAM_PROMO_IFRAME_ID} />\n );\n } else if (!isEmpty(heroArg)) {\n hero = (\n <PlayableHero\n content={heroArg}\n playerPlacement={PlayerPlacement.HERO}\n placement=\"inline-hero\"\n isHero\n />\n );\n }\n if (hero) {\n search = (\n <SearchContainer\n apiEnv={apiEnv}\n entitlementsTracking={entitlementsTracking}\n pageType={PageType.HOME}\n enabled={showSearch}\n />\n );\n scheduleModule = <ScheduleModuleContainer />;\n }\n const colCClassName = showSearch ? 'col-c' : 'col-c no-search';\n return (\n <div className=\"layout-bc\">\n <section className=\"mobile-tablet-only\">\n {search}\n </section>\n <section className=\"col-b\">\n {hero}\n </section>\n <section className={colCClassName}>\n {search}\n {scheduleModule}\n </section>\n </div>\n );\n }\n}\n\nTopLayoutContainer.propTypes = {\n dispatch: PropTypes.func,\n page: PropTypes.object,\n hero: PropTypes.object,\n showSearch: PropTypes.bool,\n showPromo: PropTypes.bool,\n apiEnv: PropTypes.string,\n entitlementsTracking: PropTypes.object\n};\n\nconst mapStateToProps = (state) => ({\n page: pageSelector(state),\n hero: heroSelector(state),\n showSearch: enableSearchSelector(state),\n showPromo: showPromoSelector(state),\n apiEnv: apiEnvSelector(state),\n entitlementsTracking: entitlementsTrackingSelector(state)\n});\n\nexport default connect(mapStateToProps)(TopLayoutContainer);\nexport { TopLayoutContainer as BaseTopLayoutContainer };\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/common/TopLayoutContainer.js","import { createSelector } from 'reselect';\nimport { ContentType, Flags } from 'enums';\nimport appSelector, { intlAppSelector, editionSelector } from './appSelector';\nimport { pagePathWithPageId } from './pageSelector';\nimport selectedStreamSelector from './selectedStreamSelector';\nimport bootstrapSelector from './bootstrapSelector';\nimport { oneIdEntitlementsSelector } from './oneIdSelector';\nimport { adSiteSelector } from './adsSelector';\nimport {\n getAndroidVersionFromUserAgent,\n getPrerollConfigByEdition,\n getAdsConfigByEdition,\n getAdsConfigByAdProvider,\n hasTier\n} from 'lib/util';\n\nconst playerSelector = ({ player = {} }) => player;\n\nexport default createSelector(playerSelector, (player) => player);\n\nexport const autoPlaySelector = createSelector(\n appSelector,\n selectedStreamSelector,\n ({ isMobile, location: { query: { autoplay } = {} } = {} }, selectedStream = {}) => {\n // set `autoplay` to false for the first mobile/tablet playback\n // until Brightcove fixes the issue where the player incorrectly detects the device is auto-playable.\n // TODO: remove this once Brightcove player fixes the mobile/tablet playback.\n if (isMobile) {\n return false;\n }\n\n if (autoplay != null) {\n return autoplay;\n }\n\n // The selectedStream used for playback does not get autoplayed if the tier property is not primary\n if (!hasTier(selectedStream, 'primary') && (selectedStream.content && selectedStream.content.type !== ContentType.VOD)) {\n return false;\n }\n\n return true;\n }\n);\n\nexport const lastFeedsSelector = createSelector(\n playerSelector,\n ({ feeds }) => feeds\n);\n\nexport const playerAdsConfigSelector = createSelector(\n adSiteSelector,\n pagePathWithPageId,\n bootstrapSelector,\n appSelector,\n editionSelector,\n (\n adSite,\n pathWithId,\n { syndicatedPlayer: { adsConfig = {} } = {} },\n { location: { query = {} } = {} },\n { edition = 'us' }\n ) => {\n const adProviderOverride = query[Flags.VIDEO_ADS_PROVIDER];\n const configByEdition = getAdsConfigByEdition(edition, adsConfig);\n let configByAdProvider = getAdsConfigByAdProvider(adProviderOverride, configByEdition);\n const isActiveAdProviderGoogle = (\n typeof configByAdProvider.activeAdProvider === 'string' &&\n configByAdProvider.activeAdProvider.toLowerCase().indexOf('google') !== -1\n );\n // NOTE: Appending `adUnit` only for Google Ad Manager\n if (adSite && isActiveAdProviderGoogle) {\n configByAdProvider = {\n ...configByAdProvider,\n ...{ adUnit: `${adSite}${pathWithId}` }\n };\n }\n\n if (isActiveAdProviderGoogle) {\n const cmsidOverride = query[Flags.VIDEO_ADS_CMSID];\n const networkCodeOverride = query[Flags.VIDEO_ADS_NETWORK_CODE];\n const adUnitOverride = query[Flags.VIDEO_ADS_AD_UNIT];\n\n configByAdProvider.cmsid = cmsidOverride || configByAdProvider.cmsid;\n configByAdProvider.networkCode = networkCodeOverride || configByAdProvider.networkCode;\n configByAdProvider.adUnit = adUnitOverride || configByAdProvider.adUnit;\n }\n\n return configByAdProvider;\n }\n);\n\nexport const prerollConfigSelector = createSelector(\n bootstrapSelector,\n oneIdEntitlementsSelector,\n editionSelector,\n selectedStreamSelector,\n ({\n preRoll: { editions: prerollConfigEditionMap = {} } = {} },\n entitlements = [],\n { edition = 'us' },\n selectedStream = {}\n ) => {\n let defaultInterval = 0;\n let intervals = {};\n let exportedConfig = {};\n const { content = {} } = selectedStream;\n const contentType = content.type || null;\n const prerollEditionConfig = getPrerollConfigByEdition(edition, prerollConfigEditionMap);\n const prerollContentTypeConfig = contentType ? prerollEditionConfig[contentType] : null;\n\n if (prerollContentTypeConfig) {\n // Use defaults from contentType match\n intervals = prerollContentTypeConfig.intervals;\n if (intervals && intervals.default) {\n defaultInterval = intervals.default;\n }\n\n // Merge initial config with new contentType config\n exportedConfig.contentType = content.type;\n exportedConfig = { ...exportedConfig, ...prerollContentTypeConfig };\n }\n\n const rate = entitlements\n .map((packageName) => intervals[packageName])\n .reduce((minRate, packageRate = 1) => Math.min(minRate, packageRate), defaultInterval);\n\n // Add numerical rate and boolean flag to enable/disable preroll\n exportedConfig.calculatedRate = rate;\n exportedConfig.enablePreroll = (rate >= 1);\n\n return exportedConfig;\n }\n);\n\nexport const recommendMobileWebSelector = createSelector(\n intlAppSelector,\n (intlApp) => intlApp && getAndroidVersionFromUserAgent() < 5.0\n);\n\nexport const dssPlayerMutedSelector = createSelector(\n bootstrapSelector,\n ({ syndicatedPlayer: { dssPlayer: { muted } = {} } = {} }) => (muted)\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/playerSelector.js","import React, { PropTypes } from 'react';\nimport classNames from 'classnames';\nimport { ContentStatus, ContentType } from 'enums';\nimport injectIntl, { intlShape } from 'common/injectIntl';\n\nconst Tag = ({\n content,\n intl: { formatMessage },\n messages,\n userIsBlackedOut\n}) => {\n const { status, streams, type } = content;\n\n const classes = classNames('search__results__bug',\n { 'search__results__bug--live': (status === ContentStatus.LIVE) },\n { 'search__results__bug--blackout': userIsBlackedOut });\n\n let tagContent = null;\n\n if (userIsBlackedOut) {\n tagContent = formatMessage(messages.blackout).toUpperCase();\n } else if (type === ContentType.VOD) {\n tagContent = streams[0].duration;\n } else {\n tagContent = status.toUpperCase();\n }\n\n return (\n <span className={classes}>{tagContent}</span>\n );\n};\n\nTag.propTypes = {\n content: PropTypes.object,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired,\n userIsBlackedOut: PropTypes.bool\n};\n\nexport default injectIntl(Tag);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/Tag.js","import React, { PropTypes, Component } from 'react';\nimport classNames from 'classnames';\nimport { ContentType } from 'enums';\nimport Tag from 'common/Tag';\nimport { contentSubtitle } from '@alias/lib/format';\nimport playable from '@alias/Playable';\n\nconst liStyle = {\n textAlign: 'left',\n position: 'relative'\n};\n\nclass SuggestionItem extends Component {\n constructor(props) {\n super(props);\n this.handleSuggestionOnClick = this.handleSuggestionOnClick.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n const { enterPressed, isSelected } = this.props;\n if (nextProps.enterPressed && enterPressed !== nextProps.enterPressed && isSelected) {\n this.handleSuggestionOnClick();\n }\n }\n\n handleMouseEnter() {\n this.props.handleItemEnter(this.props.index);\n }\n\n isUserBlackedOut() {\n const { content: { streams = [] } = {} } = this.props;\n\n // do not label the content as `blackout` unless all the streams are blacked out\n if (streams.length && streams.every(stream => !!stream.blackoutText)) {\n return true;\n }\n return false;\n }\n\n handleSuggestionOnClick() {\n this.props.handleClick(this.props.content);\n this.props.clickHandler();\n }\n\n// const SuggestionItem = ({ content, handleClick, hideKey, pageType, isSelected }) => {\n render() {\n const { content, pageType, isSelected, handleItemLeave } = this.props;\n const formattedSubtitle = contentSubtitle(content);\n const subtitleEl = formattedSubtitle ? <span>{formattedSubtitle}</span> : null;\n const userIsBlackedOut = this.isUserBlackedOut();\n\n let status = '';\n let tag;\n let metaDataClass;\n const { type } = content;\n switch (type) {\n case ContentType.LISTING:\n status = content.status;\n tag = <Tag content={content} pageType={pageType} userIsBlackedOut={userIsBlackedOut} />;\n metaDataClass = classNames('collection_item_meta', 'icon-font-before', {\n 'icon-lock-solid-before': content.isLocked\n });\n break;\n case ContentType.TERM:\n break;\n case ContentType.VOD:\n tag = <Tag content={content} pageType={pageType} />;\n break;\n default:\n break;\n }\n const liClass = classNames('search_results__item', { focused: isSelected });\n\n return (\n <li\n value={content.name}\n type={type}\n data-status={status}\n id={content.id}\n onClick={!userIsBlackedOut && this.handleSuggestionOnClick}\n onMouseEnter={!userIsBlackedOut && this.handleMouseEnter}\n onMouseLeave={!userIsBlackedOut && handleItemLeave}\n className={liClass}\n style={liStyle}\n >\n <div>\n <a className=\"search_results__link\">\n <div className=\"search__results__linkContent\">\n <span className=\"search_results__keyword\">\n {content.name}\n </span>\n <div className={metaDataClass}>\n <div className=\"collection_item_truncate\">\n {subtitleEl}\n </div>\n </div>\n </div>\n {tag}\n </a>\n </div>\n </li>\n );\n }\n}\n\nSuggestionItem.propTypes = {\n handleClick: PropTypes.func,\n clickHandler: PropTypes.func,\n content: PropTypes.object,\n pageType: PropTypes.string,\n isSelected: PropTypes.bool,\n index: PropTypes.number,\n handleItemEnter: PropTypes.func,\n handleItemLeave: PropTypes.func,\n enterPressed: PropTypes.bool\n};\n\nexport default playable(SuggestionItem);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/search/SuggestionItem.js","import React, { PropTypes } from 'react';\n\nimport SuggestionItem from './SuggestionItem';\n\n\nconst SearchSuggestionGroup = ({\n suggestion,\n handleClick,\n pageType,\n offset,\n selectedIndex,\n handleItemEnter,\n handleItemLeave,\n enterPressed\n}) => {\n const { name, type, contents } = suggestion;\n const suggestionHeader = type !== 'terms' ? (<div className=\"search_results__header\">{name}</div>) : null;\n const classNames = type !== 'terms' ?\n 'search_results__suggestions search_results__suggestions--cat' :\n 'search_results__autocomplete';\n const suggestionText = contents.map((content, index) => (\n <SuggestionItem\n content={content}\n handleClick={handleClick}\n isSelected={offset + index === selectedIndex}\n handleItemEnter={handleItemEnter}\n handleItemLeave={handleItemLeave}\n index={offset + index}\n pageType={pageType}\n enterPressed={enterPressed}\n />\n ));\n return (\n <div>\n {suggestionHeader}\n <ul className={classNames}>\n {suggestionText}\n </ul>\n </div>\n );\n};\n\nSearchSuggestionGroup.propTypes = {\n handleClick: PropTypes.func,\n suggestion: PropTypes.object,\n pageType: PropTypes.string,\n offset: PropTypes.number,\n selectedIndex: PropTypes.number,\n handleItemEnter: PropTypes.func,\n handleItemLeave: PropTypes.func,\n enterPressed: PropTypes.bool\n};\n\nexport default SearchSuggestionGroup;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/search/SearchSuggestionGroup.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport { PageType, ContentType, ContentStatus } from 'enums';\nimport { withRouter } from 'react-router';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport { getSearchResults, SEARCH_TYPES } from 'common/actions/apiAction';\nimport SearchSuggestionGroup from './SearchSuggestionGroup';\nimport { competitorSelector } from 'common/selectors/pageSelector';\nimport { apiEnvSelector } from 'common/selectors/appSelector';\nimport { trackSearch } from 'lib/omniture';\n\nclass SearchComponent extends Component {\n constructor(props) {\n super(props);\n this.handleSearchSubmit = this.handleSearchSubmit.bind(this);\n this.handleSearchTermChange = this.handleSearchTermChange.bind(this);\n this.handleInputOnBlur = this.handleInputOnBlur.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleArrowKeyDown = this.handleArrowKeyDown.bind(this);\n this.handleSuggestionSelected = this.handleSuggestionSelected.bind(this);\n this.routeToSearchTerm = this.routeToSearchTerm.bind(this);\n this.setStateSearchTerm = this.setStateSearchTerm.bind(this);\n this.handleFooterClick = this.handleFooterClick.bind(this);\n this.handleMouseEnterItem = this.handleMouseEnterItem.bind(this);\n this.handleMouseLeaveItem = this.handleMouseLeaveItem.bind(this);\n\n this.state = {\n searchTerm: '',\n userEnteredText: '',\n suggestionBuckets: [],\n canCollapse: true,\n displaySuggestions: false,\n selectedIndex: -1,\n suggestionCount: 0,\n enterPressed: false,\n showFooter: true\n };\n }\n\n componentDidMount() {\n document.addEventListener('keydown', this.handleArrowKeyDown);\n }\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this.handleArrowKeyDown);\n }\n\n setStateSearchTerm(term) {\n this.setState({ searchTerm: term, suggestionBuckets: [], displaySuggestions: false });\n }\n\n handleSuggestionSelected({ type, name, status }, enterPressed = false) {\n const { pageType, entitlementsTracking } = this.props;\n const fromHero = (pageType !== PageType.SEARCH);\n if ((type === ContentType.VOD) ||\n (type === ContentType.LISTING && (status === ContentStatus.REPLAY || status === ContentStatus.LIVE))) {\n const placement = pageType === PageType.SEARCH ? 'search-page' : 'search-hero';\n trackSearch({\n type,\n status,\n isSuggestion: true,\n fromHero,\n searchTerm: name,\n entitlementsTracking\n });\n this.setState({ placement, userInitiated: true, enterPressed });\n return;\n }\n trackSearch({\n isSuggestion: true,\n fromHero,\n searchTerm: name,\n entitlementsTracking\n });\n this.routeToSearchTerm(name);\n }\n\n handleMouseEnter() {\n this.setState({ canCollapse: false });\n }\n\n handleMouseLeave() {\n this.setState({ canCollapse: true });\n }\n\n handleFooterClick() {\n const searchTerm = this.state.userEnteredText;\n trackSearch({\n isSuggestion: true,\n fromHero: (this.props.pageType !== PageType.SEARCH),\n searchTerm,\n isViewAllResults: true,\n entitlementsTracking: this.props.entitlementsTracking\n });\n this.routeToSearchTerm(searchTerm);\n }\n\n handleMouseEnterItem(index) {\n this.setState({ searchTerm: this.state.userEnteredText, selectedIndex: index });\n }\n\n handleMouseLeaveItem() {\n this.setState({ selectedIndex: -1 });\n }\n\n routeToSearchTerm(term) {\n this.setStateSearchTerm(term);\n if (this.props.pageType === PageType.SID) {\n this.props.router.push(`/sid/${encodeURIComponent(term)}`);\n } else {\n this.props.router.push(`/search/${encodeURIComponent(term)}`);\n }\n }\n\n handleSearchSubmit(event) {\n event.preventDefault();\n if (this.state.selectedIndex !== -1) {\n const contents = this.state.suggestionBuckets\n .map(suggestion => suggestion.contents)\n .reduce((cur, result) => [...cur, ...result], []);\n const content = contents[this.state.selectedIndex];\n this.handleSuggestionSelected(content, true);\n return;\n }\n if (this.state.searchTerm) {\n trackSearch({\n fromHero: (this.props.pageType !== PageType.SEARCH),\n searchTerm: this.state.searchTerm,\n entitlementsTracking: this.props.entitlementsTracking\n });\n this.routeToSearchTerm(this.state.searchTerm);\n }\n }\n\n handleArrowKeyDown(event) {\n const { keyCode } = event;\n if (!this.state.displaySuggestions || (keyCode !== 38 && keyCode !== 40)) {\n return;\n }\n event.preventDefault();\n const contents = this.state.suggestionBuckets\n .map(suggestion => suggestion.contents)\n .reduce((cur, result) => [...cur, ...result], []);\n // 38 is UP\n if (keyCode === 38) {\n const newIndex = Math.max(this.state.selectedIndex - 1, 0);\n const content = contents[newIndex];\n this.setState({ selectedIndex: newIndex, searchTerm: content.suggestion });\n } else if (keyCode === 40) {\n const newIndex = Math.min(this.state.suggestionCount - 1, this.state.selectedIndex + 1);\n const content = contents[newIndex];\n this.setState({ selectedIndex: newIndex, searchTerm: content.suggestion });\n }\n }\n\n handleSearchTermChange(event) {\n const searchTermQuery = event.target.value;\n // Updating the searchTerm to be used while searching by pressing 'enter' key,\n // and resetting suggestions to 0 for rendering\n // if somebody backspacspaces in the textbox\n this.setState({ userEnteredText: searchTermQuery, searchTerm: searchTermQuery, selectedIndex: -1 });\n\n // Suggestions are only returned when the query is 3 char or more long\n if (this.props.pageType === PageType.SID) {\n const typeAhead = this.props.typeAhead;\n const teamSearchQuery = searchTermQuery.toLowerCase();\n const contents = typeAhead\n .filter((term) => term.toLowerCase().indexOf(teamSearchQuery) !== -1)\n .map((term, index) => ({ name: term, id: index }));\n const sugBuckets = [{ name: 'Teams', type: 'terms', contents }];\n this.setState({ suggestionBuckets: sugBuckets, displaySuggestions: true, suggestionCount: typeAhead.length });\n } else if (searchTermQuery.length > 2) {\n const { dispatch, apiEnv } = this.props;\n dispatch(getSearchResults(searchTermQuery, apiEnv, SEARCH_TYPES.suggest)).then(({ page: { buckets = [] } }) => {\n const count = buckets.reduce((sum, bucket) => (sum + bucket.contents.length), 0);\n this.setState({ suggestionBuckets: buckets, displaySuggestions: true, suggestionCount: count });\n }).catch(() => {});\n } else {\n this.setState({ displaySuggestions: false, suggestionBuckets: [] });\n }\n }\n\n handleInputOnBlur() {\n if (this.state.canCollapse) {\n this.setState({ displaySuggestions: false });\n }\n }\n\n render() {\n const { enabled, messages, intl: { formatMessage }, pageType } = this.props;\n const searchClasses = classNames('search-section', 'icon-font-before', 'icon-search-solid-before');\n const style = pageType === PageType.SEARCH ?\n { width: '100%', margin: '0 auto 16px' }\n : { width: '100%', margin: '0 auto' };\n const suggestions = this.state.suggestionBuckets;\n let offset = 0;\n const suggestionElements = suggestions.map((suggestion) => {\n const element = (\n <SearchSuggestionGroup\n offset={offset}\n selectedIndex={this.state.selectedIndex}\n key={suggestion.name}\n suggestion={suggestion}\n handleClick={this.handleSuggestionSelected}\n handleItemEnter={this.handleMouseEnterItem}\n handleItemLeave={this.handleMouseLeaveItem}\n pageType={pageType}\n enterPressed={this.state.enterPressed}\n />\n );\n offset += suggestion.contents.length;\n return element;\n });\n const footer = this.props.showFooter ? (\n <footer>\n <a onClick={this.handleFooterClick}>\n View All Results for {this.state.userEnteredText}\n </a>\n </footer>\n ) : null;\n const suggestionsNode = this.state.displaySuggestions ? (\n <div className=\"search_results search_results--active\">\n <div className=\"search_results__wrapper\">\n {suggestionElements}\n </div>\n {footer}\n </div>\n ) : null;\n\n return enabled ? (\n <section\n style={style}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n className={searchClasses}\n >\n <form onSubmit={this.handleSearchSubmit} >\n <input\n type=\"text\"\n autoComplete=\"off\"\n placeholder={formatMessage(messages['search.placeholder'])}\n name=\"search-section\"\n value={this.state.searchTerm}\n onChange={this.handleSearchTermChange}\n onBlur={this.handleInputOnBlur}\n />\n </form>\n {suggestionsNode}\n </section>\n ) : null;\n }\n}\n\nSearchComponent.propTypes = {\n dispatch: PropTypes.func.isRequired,\n pageType: PropTypes.string,\n enabled: PropTypes.bool,\n router: PropTypes.object,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired,\n apiEnv: PropTypes.string,\n entitlementsTracking: PropTypes.object,\n typeAhead: PropTypes.array,\n showFooter: PropTypes.bool\n};\n\nSearchComponent.defaultProps = {\n enabled: false,\n typeAhead: [],\n showFooter: true\n};\n\nconst mapStateToProps = (state) => ({\n apiEnv: apiEnvSelector(state),\n typeAhead: competitorSelector(state)\n});\n\nexport default withRouter(injectIntl(connect(mapStateToProps)(SearchComponent)));\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/search/SearchContainer.js","import React, { PropTypes } from 'react';\nimport Modal from 'react-modal';\nimport classNames from 'classnames';\nimport { ModalType } from 'enums';\nimport Popup from './PopUpBlockerWarning';\nimport Flash from './FlashWarning';\nimport BlackoutMap from './BlackoutMap';\nimport BroadcastPicker from './BroadcastPicker';\nimport IframeAuth from '../activation/IframeAuth';\nimport Paywall from './Paywall';\n\n// empty the modal's default styles\nModal.defaultStyles = {};\n\n// TODO: any way we can sync this with the css value?\nexport const HEADER_HEIGHT = 50;\n\nexport function getModalContent(type, data = {}, { headerHeight }) {\n let body = '';\n let title = '';\n let bodyClass = '';\n let modalStyles = {\n height: 500\n };\n let bodyStyles = {\n marginLeft: '5%'\n };\n let titleStyles = {};\n let closeBtnStyles = {};\n let lightboxClass;\n switch (type) {\n case ModalType.POPUP:\n title = 'Pop-up Blocked';\n body = <Popup />;\n break;\n case ModalType.FLASH:\n title = 'Flash not Enabled';\n body = <Flash />;\n break;\n case ModalType.BLACKOUT_MAP:\n title = 'Blackout Map';\n body = <BlackoutMap content={data.content} />;\n break;\n case ModalType.BROADCAST_PICKER:\n title = 'Choose Broadcast';\n body = <BroadcastPicker content={data} />;\n bodyClass = 'watchProvider__scroll watchBroadcast__scroll';\n bodyStyles = {};\n lightboxClass = 'watch-broadcast-modal';\n break;\n case ModalType.IFRAME_AUTH:\n title = 'Authentication';\n body = <IframeAuth src={data.src} />;\n modalStyles = {\n width: data.width,\n height: data.height + headerHeight,\n marginLeft: -(data.width / 2)\n };\n bodyStyles = {\n width: '100%',\n height: '100%',\n marginTop: -22\n };\n break;\n case ModalType.PAYWALL:\n title = 'ESPN+';\n body = <Paywall src={data.src} />;\n modalStyles = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: '100%',\n height: '100%',\n padding: 0,\n margin: 0,\n background: 'rgba(0, 0, 0, 0.7)',\n borderRadius: 0,\n boxShadow: 'none'\n };\n bodyStyles = {\n width: '100%',\n height: '100%',\n margin: 0,\n padding: 0\n };\n titleStyles = {\n display: 'none'\n };\n closeBtnStyles = {\n right: 20,\n top: 20,\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n WebkitBackdropFilter: 'blur(10px)',\n backdropFilter: 'blur(10px)',\n width: 36,\n height: 36,\n borderRadius: 18\n };\n lightboxClass = 'lightbox-paywall';\n break;\n default:\n break;\n }\n return {\n title,\n body,\n modalStyles,\n bodyStyles,\n bodyClass,\n titleStyles,\n closeBtnStyles,\n lightboxClass\n };\n}\n\nconst renderTransparentMask = (shouldShowModal = false, modalType) => (\n (shouldShowModal && modalType === ModalType.BROADCAST_PICKER) ?\n <div className=\"js-feed-item-mask active\" /> : null\n);\n\nconst ModalMessaging = ({\n showModalMessage,\n closeModal,\n messageType,\n messageData\n}) => {\n const {\n title,\n body,\n modalStyles,\n bodyStyles,\n bodyClass,\n titleStyles,\n closeBtnStyles,\n lightboxClass\n } = getModalContent(messageType, messageData, { headerHeight: HEADER_HEIGHT });\n\n const containerClass = classNames(lightboxClass, 'lightbox-watch', 'watch-provider-modal', 'js-bloomed');\n\n return (\n // emulates the same mask used on .com when lightbox is opened\n <div>\n {renderTransparentMask(showModalMessage, messageType)}\n <Modal\n isOpen={showModalMessage}\n onRequestClose={closeModal}\n overlayClassName=\"lightbox-container\"\n >\n <article className={containerClass} style={modalStyles}>\n <div\n className=\"btn-close icon-font-before icon-close-solid-before\"\n style={closeBtnStyles}\n onClick={closeModal}\n />\n <section className=\"watchProvider--modal\">\n <h1 className=\"watchProvider__title\" style={titleStyles}>\n <span>{title}</span>\n </h1>\n <div style={bodyStyles} className={bodyClass}>\n {body}\n </div>\n </section>\n </article>\n </Modal>\n </div>\n );\n};\n\nModalMessaging.propTypes = {\n closeModal: PropTypes.func,\n messageData: PropTypes.object,\n messageType: PropTypes.string,\n showModalMessage: PropTypes.bool\n};\n\nModalMessaging.defaultProps = {\n showModalMessage: false,\n messageData: null\n};\n\nexport default ModalMessaging;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/modal/messaging/ModalMessaging.js","import React from 'react';\n\nconst PopupBlockerWarning = () => (\n <div>\n <p>It appears you have a pop-up blocker on that kept the video player from launching.</p>\n <p>Please allow pop-ups from www.espn.com in your browser settings\n or contact Customer Care at 888-549-ESPN if you need assistance.</p>\n </div>\n);\n\nexport default PopupBlockerWarning;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/modal/messaging/PopUpBlockerWarning.js","import React from 'react';\n\nconst FlashWarning = () => (\n <div>\n <h2 style={{ color: 'black' }}>Insufficient Flash Player Requirements</h2>\n <div className=\"clr\" />\n <div>\n <p>Click below to download the latest version of Flash</p>\n <p>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://get.adobe.com/flashplayer/\">\n <img style={{ display: 'block', marginLeft: 'auto', marginRight: 'auto', paddingTop: '10px' }} alt=\"Get Adobe Flash Player\" src=\"http://a.espncdn.com/espn3/images/watchespn/get_adobe_flash_player.png\" />\n </a>\n </p>\n </div>\n </div>\n);\n\nexport default FlashWarning;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/modal/messaging/FlashWarning.js","import React, { PropTypes } from 'react';\nimport appConfig from 'config';\n\nconst {\n secureCdnHost\n} = appConfig;\n\nconst fallbackUrl = `${secureCdnHost}/espn3/images/watchespn/blackout-default-map.png`;\n\nconst BlackoutMap = (props) => {\n const content = props.content;\n const fallbackImgStyle = {\n backgroundImage: `url(${fallbackUrl})`,\n height: '315px',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat'\n };\n const mapUrl = `${secureCdnHost}/espn3/images/2010/blackout/${content.id}.jpg`;\n return (\n <div>\n <div style={fallbackImgStyle}>\n <img style={{ height: '315px' }} src={mapUrl} alt=\"Blackout map\" />\n </div>\n <div>{content.name} - {content.date}</div>\n <div id=\"blackout-key\">\n <div className=\"channel\" id=\"espn\">\n <img\n src={`${secureCdnHost}/espn3/images/watchespn/key_lin_e3_available.png`}\n alt={`Available on ${content.source}`}\n />\n  Available on <span id=\"linOnlyChan\">{content.source}</span>\n </div>\n <div className=\"channel\" id=\"not-available\">\n <img\n src={`${secureCdnHost}/espn3/images/watchespn/key_notavailable.png`}\n alt=\"Not available\"\n /> Not available\n </div>\n </div>\n </div>\n );\n};\n\nBlackoutMap.propTypes = {\n content: PropTypes.object\n};\n\nexport default BlackoutMap;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/modal/messaging/BlackoutMap.js","import React, { PropTypes, Component } from 'react';\nimport classNames from 'classnames';\nimport { streamSelect, streamUnSelect, closeModalMessage } from 'common/actions/appActions';\nimport authenticationAware from 'webapp/common/authenticationAware';\n\nclass BroadcastPicker extends Component {\n constructor(props) {\n super(props);\n this.getMetadataClass = this.getMetadataClass.bind(this);\n this.renderMetaSource = this.renderMetaSource.bind(this);\n this.renderBlackoutPill = this.renderBlackoutPill.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n getMetadataClass(showLock = false) {\n const { baseClass } = this.props;\n\n return classNames(`${baseClass}__meta`, {\n 'icon-font-before icon-lock-solid-before': showLock\n });\n }\n\n handleClick(stream, event) {\n event.preventDefault();\n\n const { dispatch, onSelectStreamTracking } = this.props;\n\n // Avoids the `reselected` return logic when clicking the same stream\n dispatch(streamUnSelect());\n // In a multiple modal scenario, we need to dispatch a closeModal prior to stream selection\n dispatch(closeModalMessage());\n stream.feedSwitch = true;\n dispatch(streamSelect(stream));\n\n /**\n * onSelectStreamTracking is passed down from authenticationAware HOC component\n * When user selects the stream, onSelectStreamTracking in authenticationAware\n * HOC component got triggered. We need to check onSelectStreamTracking nil\n * value before calling it since if newrelic tracking is turned off in config,\n * onSelectStreamTracking will be passed as null value from HOC component\n */\n if (onSelectStreamTracking !== null) {\n onSelectStreamTracking(stream);\n }\n }\n\n renderMetaSource(stream = {}) {\n const { source: { name } = {} } = stream;\n\n return name ? (\n <div className={this.getMetadataClass(stream.isLocked)}>\n <span>{name}</span>\n </div>\n ) : null;\n }\n\n renderBlackoutPill(stream = {}, text = 'BLACKOUT') { // eslint-disable-line class-methods-use-this\n const { blackoutText = '', status = '' } = stream;\n const className = classNames('media-duration media-duration--blackout', {\n 'media-duration--live': (status === 'live')\n });\n\n return (blackoutText && blackoutText !== '') ? (\n <div className={className}>{text}</div>\n ) : null;\n }\n\n render() {\n const { content, baseClass } = this.props;\n const { streams = [] } = content;\n\n return streams.length ? (\n <div className={`${baseClass}__wrapper`}>\n {streams.map(stream =>\n <div\n className={`${baseClass}__item`}\n key={stream.id}\n onClick={(event) => this.handleClick(stream, event)}\n >\n <div className={`${baseClass}__item__name`}>\n <h2 className={`${baseClass}__item__text`}>{stream.name}</h2>\n {this.renderBlackoutPill(stream)}\n </div>\n {this.renderMetaSource(stream)}\n </div>\n )}\n </div>\n ) : null;\n }\n}\n\nBroadcastPicker.propTypes = {\n dispatch: PropTypes.func,\n content: PropTypes.object,\n baseClass: PropTypes.string,\n onSelectStreamTracking: PropTypes.object\n};\n\nBroadcastPicker.defaultProps = {\n baseClass: 'watchBroadcast'\n};\n\nexport default authenticationAware()(BroadcastPicker);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/modal/messaging/BroadcastPicker.js","import React, { PropTypes } from 'react';\n\nconst IframeAuth = ({\n src,\n width = '100%',\n height = '100%'\n}) => (\n <iframe\n src={src}\n style={{ width, height }}\n />\n);\n\nIframeAuth.propTypes = {\n src: PropTypes.string.isRequired,\n width: PropTypes.string,\n height: PropTypes.string\n};\n\nexport default IframeAuth;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/modal/activation/IframeAuth.js","import React, { PropTypes } from 'react';\nimport { BAM_PAYWALL_IFRAME_ID } from 'constants';\n\nconst Paywall = (props) => {\n const { src } = props;\n const content = src && <iframe src={src} />;\n\n return (\n <div id={BAM_PAYWALL_IFRAME_ID} style={{ width: '100%', height: '100%', overflow: 'auto' }}>\n {content}\n </div>\n );\n};\n\nPaywall.propTypes = {\n src: PropTypes.string\n};\n\nexport default Paywall;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/modal/messaging/Paywall.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport { closeModalMessage } from 'common/actions/appActions';\nimport ModalMessaging from './ModalMessaging';\n\nclass MessagingContainer extends Component {\n constructor(props) {\n super(props);\n this.closeModal = this.closeModal.bind(this);\n }\n\n closeModal() {\n this.props.dispatch(closeModalMessage());\n }\n\n render() {\n return (\n <ModalMessaging\n showModalMessage={this.props.showModalMessage}\n closeModal={this.closeModal}\n messageType={this.props.messageType}\n messageData={this.props.messageData}\n />\n );\n }\n}\n\nMessagingContainer.propTypes = {\n dispatch: PropTypes.func,\n showModalMessage: PropTypes.bool,\n messageType: PropTypes.string,\n messageData: PropTypes.object\n};\n\nconst mapStateToProps = (state) => {\n const { app: { showModalMessage = false, messageType = '', messageData = null } } = state;\n\n return {\n showModalMessage,\n messageType,\n messageData\n };\n};\n\nexport default connect(mapStateToProps)(MessagingContainer);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/modal/messaging/MessagingContainer.js","\"use strict\";\n\nexports.__esModule = true;\nexports.canUseDOM = exports.slidesOnLeft = exports.slidesOnRight = exports.siblingDirection = exports.getTotalSlides = exports.getPostClones = exports.getPreClones = exports.getTrackLeft = exports.getTrackAnimateCSS = exports.getTrackCSS = exports.checkSpecKeys = exports.getSlideCount = exports.checkNavigable = exports.getNavigableIndexes = exports.swipeEnd = exports.swipeMove = exports.swipeStart = exports.keyHandler = exports.changeSlide = exports.slideHandler = exports.initializedState = exports.extractObject = exports.canGoNext = exports.getSwipeDirection = exports.getHeight = exports.getWidth = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.lazyStartIndex = exports.getRequiredLazySlides = exports.getOnDemandLazySlides = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getOnDemandLazySlides = exports.getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n return onDemandSlides;\n};\n\n// return list of slides that need to be present\nvar getRequiredLazySlides = exports.getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n return requiredSlides;\n};\n\n// startIndex that needs to be present\nvar lazyStartIndex = exports.lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\nvar lazyEndIndex = exports.lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\nvar lazySlidesOnLeft = exports.lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\nvar lazySlidesOnRight = exports.lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n};\n\n// get width of an element\nvar getWidth = exports.getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\nvar getHeight = exports.getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\nvar getSwipeDirection = exports.getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n};\n\n// whether or not we can go next\nvar canGoNext = exports.canGoNext = function canGoNext(spec) {\n var canGo = true;\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n return canGo;\n};\n\n// given an object and a list of keys, return new object with given keys\nvar extractObject = exports.extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n};\n\n// get initialized state\nvar initializedState = exports.initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react2.default.Children.count(spec.children);\n var listWidth = Math.ceil(getWidth(_reactDom2.default.findDOMNode(spec.listRef)));\n var trackWidth = Math.ceil(getWidth(_reactDom2.default.findDOMNode(spec.trackRef)));\n var slideWidth = void 0;\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n var slideHeight = _reactDom2.default.findDOMNode(spec.listRef) && getHeight(_reactDom2.default.findDOMNode(spec.listRef).querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides({ currentSlide: currentSlide, lazyLoadedList: lazyLoadedList }, spec);\n lazyLoadedList.concat(slidesToLoad);\n\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nvar slideHandler = exports.slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoadedList = spec.lazyLoadedList,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide = void 0,\n animationLeft = void 0,\n finalLeft = void 0;\n var state = {},\n nextState = {};\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList.push(animationSlide);\n }\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList\n };\n nextState = { animating: false };\n } else {\n finalSlide = animationSlide;\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n animationLeft = getTrackLeft(_extends({}, spec, { slideIndex: animationSlide }));\n finalLeft = getTrackLeft(_extends({}, spec, { slideIndex: finalSlide }));\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n lazyLoad && lazyLoadedList.concat(getOnDemandLazySlides(_extends({}, spec, { currentSlide: animationSlide })));\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_extends({}, spec, { left: finalLeft })),\n lazyLoadedList: lazyLoadedList\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_extends({}, spec, { left: animationLeft })),\n lazyLoadedList: lazyLoadedList\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_extends({}, spec, { left: finalLeft })),\n swipeLeft: null\n };\n }\n }\n return { state: state, nextState: nextState };\n};\n\nvar changeSlide = exports.changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n if (targetSlide === options.currentSlide) {\n return null;\n }\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n if (targetSlide === options.currentSlide) {\n return null;\n }\n if (infinite) {\n var direction = siblingDirection(_extends({}, spec, { targetSlide: targetSlide }));\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n if (targetSlide === options.currentSlide) {\n return null;\n }\n }\n return targetSlide;\n};\nvar keyHandler = exports.keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nvar swipeStart = exports.swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && e.preventDefault();\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\nvar swipeMove = exports.swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n\n if (scrolling) return;\n if (animating) return e.preventDefault();\n if (vertical && swipeToSlide && verticalSwiping) e.preventDefault();\n var swipeLeft = void 0,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return { scrolling: true };\n }\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n if (!infinite) {\n if (currentSlide === 0 && swipeDirection === \"right\" || currentSlide + 1 >= dotCount && swipeDirection === \"left\" || !canGoNext(spec) && swipeDirection === \"left\") {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n state = _extends({}, state, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_extends({}, spec, { left: swipeLeft }))\n });\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n e.preventDefault();\n }\n return state;\n};\nvar swipeEnd = exports.swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n currentSlide = spec.currentSlide,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe;\n\n if (!dragging) {\n if (swipe) e.preventDefault();\n return {};\n }\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping);\n // reset the state of touch related state variables.\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n if (scrolling) {\n return state;\n }\n if (!touchObject.swipeLength) {\n return state;\n }\n if (touchObject.swipeLength > minSwipe) {\n e.preventDefault();\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n var slideCount = void 0,\n newSlide = void 0;\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = currentSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n case \"right\":\n case \"down\":\n newSlide = currentSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n default:\n slideCount = currentSlide;\n }\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_extends({}, spec, { left: currentLeft }));\n }\n return state;\n};\nvar getNavigableIndexes = exports.getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n return indexes;\n};\nvar checkNavigable = exports.checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n prevNavigable = navigables[n];\n }\n }\n return index;\n};\nvar getSlideCount = exports.getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n if (spec.swipeToSlide) {\n var swipedSlide = void 0;\n var slickList = _reactDom2.default.findDOMNode(spec.listRef);\n var slides = slickList.querySelectorAll(\".slick-slide\");\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nvar checkSpecKeys = exports.checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nvar getTrackCSS = exports.getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth = void 0,\n trackHeight = void 0;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _extends({}, style, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n if (spec.fade) style = { opacity: 1 };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight;\n\n // Fallback for IE8\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\nvar getTrackAnimateCSS = exports.getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec);\n // useCSS is true by default so it can be undefined\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n return style;\n};\nvar getTrackLeft = exports.getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n\n\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n }\n // shift current slide to center of the frame\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = _reactDom2.default.findDOMNode(trackRef);\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nvar getPreClones = exports.getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nvar getPostClones = exports.getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n return spec.slideCount;\n};\n\nvar getTotalSlides = exports.getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\nvar siblingDirection = exports.siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n return \"left\";\n }\n};\n\nvar slidesOnRight = exports.slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n if (rtl) {\n return 0;\n }\n return slidesToShow - 1;\n};\n\nvar slidesOnLeft = exports.slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n if (rtl) {\n return slidesToShow - 1;\n }\n return 0;\n};\n\nvar canUseDOM = exports.canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-slick/lib/utils/innerSliderUtils.js\n// module id = 156\n// module chunks = 1","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/util/util.js\n// module id = 157\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactComponent.js\n// module id = 158\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactNoopUpdateQueue.js\n// module id = 159\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/EventPluginRegistry.js\n// module id = 160\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/EventPluginUtils.js\n// module id = 161\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = func.bind(null, a);\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n // $FlowFixMe https://github.com/facebook/flow/issues/2336\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactErrorUtils.js\n// module id = 162\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG <use> element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getEventTarget.js\n// module id = 163\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/isEventSupported.js\n// module id = 164\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getEventModifierState.js\n// module id = 165\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar Danger = require('./Danger');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setInnerHTML = require('./setInnerHTML');\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== 'production') {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (process.env.NODE_ENV !== 'production') {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: { toIndex: update.toIndex, content: update.content.toString() }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/DOMChildrenOperations.js\n// module id = 166\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/DOMNamespaces.js\n// module id = 167\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals MSApp */\n\n'use strict';\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/createMicrosoftUnsafeLocalFunction.js\n// module id = 168\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: React.PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/LinkedValueUtils.js\n// module id = 169\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactComponentEnvironment.js\n// module id = 170\n// module chunks = 1","/**\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 * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/shallowEqual.js\n// module id = 171\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/shouldUpdateReactComponent.js\n// module id = 172\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/KeyEscapeUtils.js\n// module id = 173\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactUpdateQueue.js\n// module id = 174\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example, <b><div></div></b> is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n // <p> tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for <title>, including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n\n case 'pre':\n case 'listing':\n\n case 'table':\n\n case 'hr':\n\n case 'xmp':\n\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = ' Make sure you don\\'t have any extra whitespace between tags on ' + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/validateDOMNesting.js\n// module id = 175\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getEventCharCode.js\n// module id = 176\n// module chunks = 1","/**\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 177\n// module chunks = 1","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/es/utils/warning.js\n// module id = 178\n// module chunks = 1","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-is/index.js\n// module id = 179\n// module chunks = 1","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_getRawTag.js\n// module id = null\n// module chunks = ","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_objectToString.js\n// module id = null\n// module chunks = ","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_baseGetTag.js\n// module id = null\n// module chunks = ","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_overArg.js\n// module id = null\n// module chunks = ","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/isObjectLike.js\n// module id = null\n// module chunks = ","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/isPlainObject.js\n// module id = null\n// module chunks = ","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n};\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} enhancer The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/zenparsing/es-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/createStore.js\n// module id = null\n// module chunks = ","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerSanity(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n if (process.env.NODE_ENV !== 'production') {\n var unexpectedKeyCache = {};\n }\n\n var sanityError;\n try {\n assertReducerSanity(finalReducers);\n } catch (e) {\n sanityError = e;\n }\n\n return function combination() {\n var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var action = arguments[1];\n\n if (sanityError) {\n throw sanityError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var i = 0; i < finalReducerKeys.length; i++) {\n var key = finalReducerKeys[i];\n var reducer = finalReducers[key];\n var previousStateForKey = state[key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(key, action);\n throw new Error(errorMessage);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/combineReducers.js\n// module id = null\n// module chunks = ","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/bindActionCreators.js\n// module id = null\n// module chunks = ","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n var last = funcs[funcs.length - 1];\n var rest = funcs.slice(0, -1);\n return function () {\n return rest.reduceRight(function (composed, f) {\n return f(composed);\n }, last.apply(undefined, arguments));\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/compose.js\n// module id = null\n// module chunks = ","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/applyMiddleware.js\n// module id = null\n// module chunks = ","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_root.js\n// module id = null\n// module chunks = ","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_Symbol.js\n// module id = null\n// module chunks = ","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_getPrototype.js\n// module id = null\n// module chunks = ","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/index.js\n// module id = null\n// module chunks = ","'use strict';\n\nexports.__esModule = true;\nexports.router = exports.routes = exports.route = exports.components = exports.component = exports.location = exports.history = exports.falsy = exports.locationShape = exports.routerShape = undefined;\n\nvar _react = require('react');\n\nvar _deprecateObjectProperties = require('./deprecateObjectProperties');\n\nvar _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nvar InternalPropTypes = _interopRequireWildcard(_InternalPropTypes);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar func = _react.PropTypes.func;\nvar object = _react.PropTypes.object;\nvar shape = _react.PropTypes.shape;\nvar string = _react.PropTypes.string;\nvar routerShape = exports.routerShape = shape({\n push: func.isRequired,\n replace: func.isRequired,\n go: func.isRequired,\n goBack: func.isRequired,\n goForward: func.isRequired,\n setRouteLeaveHook: func.isRequired,\n isActive: func.isRequired\n});\n\nvar locationShape = exports.locationShape = shape({\n pathname: string.isRequired,\n search: string.isRequired,\n state: object,\n action: string.isRequired,\n key: string\n});\n\n// Deprecated stuff below:\n\nvar falsy = exports.falsy = InternalPropTypes.falsy;\nvar history = exports.history = InternalPropTypes.history;\nvar location = exports.location = locationShape;\nvar component = exports.component = InternalPropTypes.component;\nvar components = exports.components = InternalPropTypes.components;\nvar route = exports.route = InternalPropTypes.route;\nvar routes = exports.routes = InternalPropTypes.routes;\nvar router = exports.router = routerShape;\n\nif (process.env.NODE_ENV !== 'production') {\n (function () {\n var deprecatePropType = function deprecatePropType(propType, message) {\n return function () {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;\n return propType.apply(undefined, arguments);\n };\n };\n\n var deprecateInternalPropType = function deprecateInternalPropType(propType) {\n return deprecatePropType(propType, 'This prop type is not intended for external use, and was previously exported by mistake. These internal prop types are deprecated for external use, and will be removed in a later version.');\n };\n\n var deprecateRenamedPropType = function deprecateRenamedPropType(propType, name) {\n return deprecatePropType(propType, 'The `' + name + '` prop type is now exported as `' + name + 'Shape` to avoid name conflicts. This export is deprecated and will be removed in a later version.');\n };\n\n exports.falsy = falsy = deprecateInternalPropType(falsy);\n exports.history = history = deprecateInternalPropType(history);\n exports.component = component = deprecateInternalPropType(component);\n exports.components = components = deprecateInternalPropType(components);\n exports.route = route = deprecateInternalPropType(route);\n exports.routes = routes = deprecateInternalPropType(routes);\n\n exports.location = location = deprecateRenamedPropType(location, 'location');\n exports.router = router = deprecateRenamedPropType(router, 'router');\n })();\n}\n\nvar defaultExport = {\n falsy: falsy,\n history: history,\n location: location,\n component: component,\n components: components,\n route: route,\n // For some reason, routes was never here.\n router: router\n};\n\nif (process.env.NODE_ENV !== 'production') {\n defaultExport = (0, _deprecateObjectProperties2.default)(defaultExport, 'The default export from `react-router/lib/PropTypes` is deprecated. Please use the named exports instead.');\n}\n\nexports.default = defaultExport;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/PropTypes.js\n// module id = 181\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.getHashPath = getHashPath;\nexports.replaceHashPath = replaceHashPath;\nexports.getWindowPath = getWindowPath;\nexports.go = go;\nexports.getUserConfirmation = getUserConfirmation;\nexports.supportsHistory = supportsHistory;\nexports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash;\n\nfunction addEventListener(node, event, listener) {\n if (node.addEventListener) {\n node.addEventListener(event, listener, false);\n } else {\n node.attachEvent('on' + event, listener);\n }\n}\n\nfunction removeEventListener(node, event, listener) {\n if (node.removeEventListener) {\n node.removeEventListener(event, listener, false);\n } else {\n node.detachEvent('on' + event, listener);\n }\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n return window.location.href.split('#')[1] || '';\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(window.location.pathname + window.location.search + '#' + path);\n}\n\nfunction getWindowPath() {\n return window.location.pathname + window.location.search + window.location.hash;\n}\n\nfunction go(n) {\n if (n) window.history.go(n);\n}\n\nfunction getUserConfirmation(message, callback) {\n callback(window.confirm(message));\n}\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n return false;\n }\n return window.history && 'pushState' in window.history;\n}\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n var ua = navigator.userAgent;\n return ua.indexOf('Firefox') === -1;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/DOMUtils.js\n// module id = 182\n// module chunks = 1","/*eslint-disable no-empty */\n'use strict';\n\nexports.__esModule = true;\nexports.saveState = saveState;\nexports.readState = readState;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar KeyPrefix = '@@History/';\nvar QuotaExceededErrors = ['QuotaExceededError', 'QUOTA_EXCEEDED_ERR'];\n\nvar SecurityError = 'SecurityError';\n\nfunction createKey(key) {\n return KeyPrefix + key;\n}\n\nfunction saveState(key, state) {\n try {\n if (state == null) {\n window.sessionStorage.removeItem(createKey(key));\n } else {\n window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n }\n } catch (error) {\n if (error.name === SecurityError) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined;\n\n return;\n }\n\n if (QuotaExceededErrors.indexOf(error.name) >= 0 && window.sessionStorage.length === 0) {\n // Safari \"private mode\" throws QuotaExceededError.\n process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined;\n\n return;\n }\n\n throw error;\n }\n}\n\nfunction readState(key) {\n var json = undefined;\n try {\n json = window.sessionStorage.getItem(createKey(key));\n } catch (error) {\n if (error.name === SecurityError) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined;\n\n return null;\n }\n }\n\n if (json) {\n try {\n return JSON.parse(json);\n } catch (error) {\n // Ignore invalid JSON.\n }\n }\n\n return null;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/DOMStateStorage.js\n// module id = 183\n// module chunks = 1","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/define-properties/index.js\n// module id = 184\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction runTransitionHook(hook, location, callback) {\n var result = hook(location, callback);\n\n if (hook.length < 2) {\n // Assume the hook runs synchronously and automatically\n // call the callback with the return value.\n callback(result);\n } else {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](result === undefined, 'You should not \"return\" in a transition hook with a callback argument; call the callback instead') : undefined;\n }\n}\n\nexports['default'] = runTransitionHook;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/runTransitionHook.js\n// module id = 185\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction deprecate(fn, message) {\n return function () {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] ' + message) : undefined;\n return fn.apply(this, arguments);\n };\n}\n\nexports['default'] = deprecate;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/deprecate.js\n// module id = 186\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = createTransitionManager;\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _computeChangedRoutes2 = require('./computeChangedRoutes');\n\nvar _computeChangedRoutes3 = _interopRequireDefault(_computeChangedRoutes2);\n\nvar _TransitionUtils = require('./TransitionUtils');\n\nvar _isActive2 = require('./isActive');\n\nvar _isActive3 = _interopRequireDefault(_isActive2);\n\nvar _getComponents = require('./getComponents');\n\nvar _getComponents2 = _interopRequireDefault(_getComponents);\n\nvar _matchRoutes = require('./matchRoutes');\n\nvar _matchRoutes2 = _interopRequireDefault(_matchRoutes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hasAnyProperties(object) {\n for (var p in object) {\n if (Object.prototype.hasOwnProperty.call(object, p)) return true;\n }return false;\n}\n\nfunction createTransitionManager(history, routes) {\n var state = {};\n\n // Signature should be (location, indexOnly), but needs to support (path,\n // query, indexOnly)\n function isActive(location) {\n var indexOnlyOrDeprecatedQuery = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n var deprecatedIndexOnly = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n var indexOnly = void 0;\n if (indexOnlyOrDeprecatedQuery && indexOnlyOrDeprecatedQuery !== true || deprecatedIndexOnly !== null) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, '`isActive(pathname, query, indexOnly) is deprecated; use `isActive(location, indexOnly)` with a location descriptor instead. http://tiny.cc/router-isActivedeprecated') : void 0;\n location = { pathname: location, query: indexOnlyOrDeprecatedQuery };\n indexOnly = deprecatedIndexOnly || false;\n } else {\n location = history.createLocation(location);\n indexOnly = indexOnlyOrDeprecatedQuery;\n }\n\n return (0, _isActive3.default)(location, indexOnly, state.location, state.routes, state.params);\n }\n\n var partialNextState = void 0;\n\n function match(location, callback) {\n if (partialNextState && partialNextState.location === location) {\n // Continue from where we left off.\n finishMatch(partialNextState, callback);\n } else {\n (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n if (error) {\n callback(error);\n } else if (nextState) {\n finishMatch(_extends({}, nextState, { location: location }), callback);\n } else {\n callback();\n }\n });\n }\n }\n\n function finishMatch(nextState, callback) {\n var _computeChangedRoutes = (0, _computeChangedRoutes3.default)(state, nextState);\n\n var leaveRoutes = _computeChangedRoutes.leaveRoutes;\n var changeRoutes = _computeChangedRoutes.changeRoutes;\n var enterRoutes = _computeChangedRoutes.enterRoutes;\n\n\n (0, _TransitionUtils.runLeaveHooks)(leaveRoutes, state);\n\n // Tear down confirmation hooks for left routes\n leaveRoutes.filter(function (route) {\n return enterRoutes.indexOf(route) === -1;\n }).forEach(removeListenBeforeHooksForRoute);\n\n // change and enter hooks are run in series\n (0, _TransitionUtils.runChangeHooks)(changeRoutes, state, nextState, function (error, redirectInfo) {\n if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n (0, _TransitionUtils.runEnterHooks)(enterRoutes, nextState, finishEnterHooks);\n });\n\n function finishEnterHooks(error, redirectInfo) {\n if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n // TODO: Fetch components after state is updated.\n (0, _getComponents2.default)(nextState, function (error, components) {\n if (error) {\n callback(error);\n } else {\n // TODO: Make match a pure function and have some other API\n // for \"match and update state\".\n callback(null, null, state = _extends({}, nextState, { components: components }));\n }\n });\n }\n\n function handleErrorOrRedirect(error, redirectInfo) {\n if (error) callback(error);else callback(null, redirectInfo);\n }\n }\n\n var RouteGuid = 1;\n\n function getRouteID(route) {\n var create = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];\n\n return route.__id__ || create && (route.__id__ = RouteGuid++);\n }\n\n var RouteHooks = Object.create(null);\n\n function getRouteHooksForRoutes(routes) {\n return routes.reduce(function (hooks, route) {\n hooks.push.apply(hooks, RouteHooks[getRouteID(route)]);\n return hooks;\n }, []);\n }\n\n function transitionHook(location, callback) {\n (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n if (nextState == null) {\n // TODO: We didn't actually match anything, but hang\n // onto error/nextState so we don't have to matchRoutes\n // again in the listen callback.\n callback();\n return;\n }\n\n // Cache some state here so we don't have to\n // matchRoutes() again in the listen callback.\n partialNextState = _extends({}, nextState, { location: location });\n\n var hooks = getRouteHooksForRoutes((0, _computeChangedRoutes3.default)(state, partialNextState).leaveRoutes);\n\n var result = void 0;\n for (var i = 0, len = hooks.length; result == null && i < len; ++i) {\n // Passing the location arg here indicates to\n // the user that this is a transition hook.\n result = hooks[i](location);\n }\n\n callback(result);\n });\n }\n\n /* istanbul ignore next: untestable with Karma */\n function beforeUnloadHook() {\n // Synchronously check to see if any route hooks want\n // to prevent the current window/tab from closing.\n if (state.routes) {\n var hooks = getRouteHooksForRoutes(state.routes);\n\n var message = void 0;\n for (var i = 0, len = hooks.length; typeof message !== 'string' && i < len; ++i) {\n // Passing no args indicates to the user that this is a\n // beforeunload hook. We don't know the next location.\n message = hooks[i]();\n }\n\n return message;\n }\n }\n\n var unlistenBefore = void 0,\n unlistenBeforeUnload = void 0;\n\n function removeListenBeforeHooksForRoute(route) {\n var routeID = getRouteID(route, false);\n if (!routeID) {\n return;\n }\n\n delete RouteHooks[routeID];\n\n if (!hasAnyProperties(RouteHooks)) {\n // teardown transition & beforeunload hooks\n if (unlistenBefore) {\n unlistenBefore();\n unlistenBefore = null;\n }\n\n if (unlistenBeforeUnload) {\n unlistenBeforeUnload();\n unlistenBeforeUnload = null;\n }\n }\n }\n\n /**\n * Registers the given hook function to run before leaving the given route.\n *\n * During a normal transition, the hook function receives the next location\n * as its only argument and can return either a prompt message (string) to show the user,\n * to make sure they want to leave the page; or `false`, to prevent the transition.\n * Any other return value will have no effect.\n *\n * During the beforeunload event (in browsers) the hook receives no arguments.\n * In this case it must return a prompt message to prevent the transition.\n *\n * Returns a function that may be used to unbind the listener.\n */\n function listenBeforeLeavingRoute(route, hook) {\n // TODO: Warn if they register for a route that isn't currently\n // active. They're probably doing something wrong, like re-creating\n // route objects on every location change.\n var routeID = getRouteID(route);\n var hooks = RouteHooks[routeID];\n\n if (!hooks) {\n var thereWereNoRouteHooks = !hasAnyProperties(RouteHooks);\n\n RouteHooks[routeID] = [hook];\n\n if (thereWereNoRouteHooks) {\n // setup transition & beforeunload hooks\n unlistenBefore = history.listenBefore(transitionHook);\n\n if (history.listenBeforeUnload) unlistenBeforeUnload = history.listenBeforeUnload(beforeUnloadHook);\n }\n } else {\n if (hooks.indexOf(hook) === -1) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'adding multiple leave hooks for the same route is deprecated; manage multiple confirmations in your own code instead') : void 0;\n\n hooks.push(hook);\n }\n }\n\n return function () {\n var hooks = RouteHooks[routeID];\n\n if (hooks) {\n var newHooks = hooks.filter(function (item) {\n return item !== hook;\n });\n\n if (newHooks.length === 0) {\n removeListenBeforeHooksForRoute(route);\n } else {\n RouteHooks[routeID] = newHooks;\n }\n }\n };\n }\n\n /**\n * This is the API for stateful environments. As the location\n * changes, we update state and call the listener. We can also\n * gracefully handle errors and redirects.\n */\n function listen(listener) {\n // TODO: Only use a single history listener. Otherwise we'll\n // end up with multiple concurrent calls to match.\n return history.listen(function (location) {\n if (state.location === location) {\n listener(null, state);\n } else {\n match(location, function (error, redirectLocation, nextState) {\n if (error) {\n listener(error);\n } else if (redirectLocation) {\n history.replace(redirectLocation);\n } else if (nextState) {\n listener(null, nextState);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'Location \"%s\" did not match any routes', location.pathname + location.search + location.hash) : void 0;\n }\n });\n }\n });\n }\n\n return {\n isActive: isActive,\n match: match,\n listenBeforeLeavingRoute: listenBeforeLeavingRoute,\n listen: listen\n };\n}\n\n//export default useRoutes\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/createTransitionManager.js\n// module id = 187\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\nexports.loopAsync = loopAsync;\nexports.mapAsync = mapAsync;\nfunction loopAsync(turns, work, callback) {\n var currentTurn = 0,\n isDone = false;\n var sync = false,\n hasNext = false,\n doneArgs = void 0;\n\n function done() {\n isDone = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n doneArgs = [].concat(Array.prototype.slice.call(arguments));\n return;\n }\n\n callback.apply(this, arguments);\n }\n\n function next() {\n if (isDone) {\n return;\n }\n\n hasNext = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n return;\n }\n\n sync = true;\n\n while (!isDone && currentTurn < turns && hasNext) {\n hasNext = false;\n work.call(this, currentTurn++, next, done);\n }\n\n sync = false;\n\n if (isDone) {\n // This means the loop finished synchronously.\n callback.apply(this, doneArgs);\n return;\n }\n\n if (currentTurn >= turns && hasNext) {\n isDone = true;\n callback();\n }\n }\n\n next();\n}\n\nfunction mapAsync(array, work, callback) {\n var length = array.length;\n var values = [];\n\n if (length === 0) return callback(null, values);\n\n var isDone = false,\n doneCount = 0;\n\n function done(index, error, value) {\n if (isDone) return;\n\n if (error) {\n isDone = true;\n callback(error);\n } else {\n values[index] = value;\n\n isDone = ++doneCount === length;\n\n if (isDone) callback(null, values);\n }\n }\n\n array.forEach(function (item, index) {\n work(item, index, function (error, value) {\n done(index, error, value);\n });\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/AsyncUtils.js\n// module id = 188\n// module chunks = 1","'use strict';\nmodule.exports = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/util/inDOM.js\n// module id = 189\n// module chunks = 1","import { AuthTypes } from 'enums';\n\nexport default function getAccessMethodFromAuthTypes(userAuth = []) {\n if (userAuth.indexOf(AuthTypes.MVPD) !== -1) {\n return 'Authenticated - ESPN';\n } else if (userAuth.indexOf(AuthTypes.ISP) !== -1) {\n return 'ISP';\n }\n return 'Not Authenticated';\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/getAccessMethodFromAuthTypes.js","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/path-browserify/index.js\n// module id = 191\n// module chunks = 1","/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n root = self;\n} else { // Other environments\n console.warn(\"Using browser-only version of superagent in non-browser environment\");\n root = this;\n}\n\nvar Emitter = require('emitter');\nvar requestBase = require('./request-base');\nvar isObject = require('./is-object');\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Expose `request`.\n */\n\nvar request = module.exports = require('./request').bind(null, Request);\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest\n && (!root.location || 'file:' != root.location.protocol\n || !root.ActiveXObject)) {\n return new XMLHttpRequest;\n } else {\n try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n }\n throw Error(\"Browser-only verison of superagent could not find XHR\");\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n ? function(s) { return s.trim(); }\n : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n var pairs = [];\n for (var key in obj) {\n if (null != obj[key]) {\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n }\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (Array.isArray(val)) {\n return val.forEach(function(v) {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n } else if (isObject(val)) {\n for(var subkey in val) {\n pushEncodedKeyValuePair(pairs, key + '[' + subkey + ']', val[subkey]);\n }\n return;\n }\n pairs.push(encodeURIComponent(key)\n + '=' + encodeURIComponent(val));\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n var obj = {};\n var pairs = str.split('&');\n var pair;\n var pos;\n\n for (var i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n if (pos == -1) {\n obj[decodeURIComponent(pair)] = '';\n } else {\n obj[decodeURIComponent(pair.slice(0, pos))] =\n decodeURIComponent(pair.slice(pos + 1));\n }\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'application/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n 'form': 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\n request.serialize = {\n 'application/x-www-form-urlencoded': serialize,\n 'application/json': JSON.stringify\n };\n\n /**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n var lines = str.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var val;\n\n lines.pop(); // trailing CRLF\n\n for (var i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n return str.split(/ *; */).reduce(function(obj, str){\n var parts = str.split(/ *= */),\n key = parts.shift(),\n val = parts.shift();\n\n if (key && val) obj[key] = val;\n return obj;\n }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n options = options || {};\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n this._setStatusProperties(this.xhr.status);\n this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this._setHeaderProperties(this.header);\n this.body = this.req.method != 'HEAD'\n ? this._parseBody(this.text ? this.text : this.xhr.response)\n : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype._setHeaderProperties = function(header){\n // content-type\n var ct = this.header['content-type'] || '';\n this.type = type(ct);\n\n // params\n var obj = params(ct);\n for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function(str){\n var parse = request.parse[this.type];\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n return parse && str && (str.length || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype._setStatusProperties = function(status){\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n var type = status / 100 | 0;\n\n // status / class\n this.status = this.statusCode = status;\n this.statusType = type;\n\n // basics\n this.info = 1 == type;\n this.ok = 2 == type;\n this.clientError = 4 == type;\n this.serverError = 5 == type;\n this.error = (4 == type || 5 == type)\n ? this.toError()\n : false;\n\n // sugar\n this.accepted = 202 == status;\n this.noContent = 204 == status;\n this.badRequest = 400 == status;\n this.unauthorized = 401 == status;\n this.notAcceptable = 406 == status;\n this.notFound = 404 == status;\n this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n var req = this.req;\n var method = req.method;\n var url = req.url;\n\n var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n var err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n this._header = {}; // coerces header names to lowercase\n this.on('end', function(){\n var err = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch(e) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = e;\n // issue #675: return the raw response if the response parsing fails\n err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n // issue #876: return the http status code if the response parsing fails\n err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null;\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n var new_err;\n try {\n if (res.status < 200 || res.status >= 300) {\n new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n }\n } catch(e) {\n new_err = e; // #985 touching res may cause INVALID_STATE_ERR on old Android\n }\n\n // #1000 don't catch errors from the callback to avoid double calling it\n if (new_err) {\n self.callback(new_err, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n\n/**\n * Mixin `Emitter` and `requestBase`.\n */\n\nEmitter(Request.prototype);\nfor (var key in requestBase) {\n Request.prototype[key] = requestBase[key];\n}\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Set responseType to `val`. Presently valid responseTypes are 'blob' and\n * 'arraybuffer'.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.responseType = function(val){\n this._responseType = val;\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass, options){\n if (!options) {\n options = {\n type: 'basic'\n }\n }\n\n switch (options.type) {\n case 'basic':\n var str = btoa(user + ':' + pass);\n this.set('Authorization', 'Basic ' + str);\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n }\n return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n* request.get('/shoes')\n* .query('size=10')\n* .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n if ('string' != typeof val) val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['<a id=\"a\"><b id=\"b\">hey!</b></a>'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n this._getFormData().append(field, file, filename || file.name);\n return this;\n};\n\nRequest.prototype._getFormData = function(){\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n return this._formData;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n var fn = this._callback;\n this.clearTimeout();\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype._timeoutError = function(){\n var timeout = this._timeout;\n var err = new Error('timeout of ' + timeout + 'ms exceeded');\n err.timeout = timeout;\n this.callback(err);\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\n\nRequest.prototype._appendQueryString = function(){\n var query = this._query.join('&');\n if (query) {\n this.url += ~this.url.indexOf('?')\n ? '&' + query\n : '?' + query;\n }\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n var self = this;\n var xhr = this.xhr = request.getXHR();\n var timeout = this._timeout;\n var data = this._formData || this._data;\n\n // store callback\n this._callback = fn || noop;\n\n // state change\n xhr.onreadystatechange = function(){\n if (4 != xhr.readyState) return;\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n var status;\n try { status = xhr.status } catch(e) { status = 0; }\n\n if (0 == status) {\n if (self.timedout) return self._timeoutError();\n if (self._aborted) return;\n return self.crossDomainError();\n }\n self.emit('end');\n };\n\n // progress\n var handleProgress = function(e){\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n e.direction = 'download';\n self.emit('progress', e);\n };\n if (this.hasListeners('progress')) {\n xhr.onprogress = handleProgress;\n }\n try {\n if (xhr.upload && this.hasListeners('progress')) {\n xhr.upload.onprogress = handleProgress;\n }\n } catch(e) {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n\n // timeout\n if (timeout && !this._timer) {\n this._timer = setTimeout(function(){\n self.timedout = true;\n self.abort();\n }, timeout);\n }\n\n // querystring\n this._appendQueryString();\n\n // initiate request\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !this._isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n var serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (var field in this.header) {\n if (null == this.header[field]) continue;\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data !== 'undefined' ? data : null);\n return this;\n};\n\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n var req = request('GET', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n var req = request('HEAD', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.options = function(url, data, fn){\n var req = request('OPTIONS', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n var req = request('DELETE', url);\n if (fn) req.end(fn);\n return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n var req = request('PATCH', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n var req = request('POST', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n var req = request('PUT', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/client.js\n// module id = 192\n// module chunks = 1","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseGet.js\n// module id = 193\n// module chunks = 1","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isKey.js\n// module id = 194\n// module chunks = 1","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_MapCache.js\n// module id = 195\n// module chunks = 1","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isFunction.js\n// module id = 196\n// module chunks = 1","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Map.js\n// module id = 197\n// module chunks = 1","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isLength.js\n// module id = 198\n// module chunks = 1","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/identity.js\n// module id = 199\n// module chunks = 1","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseKeys.js\n// module id = 200\n// module chunks = 1","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getTag.js\n// module id = 201\n// module chunks = 1","/* eslint-disable */\n// not using this anymore now that utc has offset from GMT accounted for\nfunction getTimezoneOffsetFromGMT() {\n const offset = (new Date()).getTimezoneOffset() / 60;\n\n // American locations are east of GMT so default to negative\n let formattedOffset = '-';\n if (offset < 0) {\n formattedOffset = '+';\n }\n\n // pad the offset in the front with 0s if needed\n if (Math.abs(offset) >= 10) {\n return `${formattedOffset}${offset}00`;\n }\n return `${formattedOffset}0${offset}00`;\n}\n/* eslint-enable */\n\nexport default function getMinutesUntilStart({ utc }, targetDate = new Date()) {\n const now = targetDate.getTime();\n const eventTime = (new Date(utc)).getTime();\n\n return Math.floor(((eventTime - now) / 1000) / 60);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/getMinutesUntilStart.js","// this function will convert string booleans to boolean types\n// it will also normalize any overloaded query params the app can receive - eg: eventId/gameId\nexport default function normalizeQueryString(queryObj = {}) {\n const convertedQuery = {};\n for (const key in queryObj) {\n if (queryObj.hasOwnProperty(key)) {\n let convertedVal = queryObj[key];\n\n if (convertedVal === 'true') {\n convertedVal = true;\n } else if (convertedVal === 'false') {\n convertedVal = false;\n }\n\n // legacy value support\n if ((key === 'channel' || key === 'network') && convertedVal === 'espn1') {\n convertedVal = 'espn';\n }\n\n if (key === 'eventCalendarId') {\t\n convertedQuery['eventId'] = convertedVal;\n } else {\n convertedQuery[key] = convertedVal;\n }\n }\n }\n return convertedQuery;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/normalizeQueryString.js","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_SetCache.js\n// module id = 204\n// module chunks = 1","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_cacheHas.js\n// module id = 205\n// module chunks = 1","import { WatchAPI } from 'lib/api';\nimport appSelector from 'common/selectors/appSelector';\n\nexport function getListingsByType(type, query) {\n return async (dispatch, getState) => {\n const listings = await WatchAPI.getListings({ ...query, types: [type] });\n const { lang } = appSelector(getState());\n const { league } = query;\n // inherited from the legacy logic\n const hasLeague = league && league !== 'tennis' && league !== 'golf';\n const filtered = hasLeague ? listings.filter(listing => listing.subcategories\n .filter(({ name, shortName, abbreviation, id }) => (\n league === name ||\n league === shortName ||\n league === abbreviation ||\n league === id\n )).length > 0) : listings;\n return WatchAPI.getPrioritizedEventFromListings(filtered, lang);\n };\n}\n\nexport function getListingsBySubcategory(type, query) {\n return async () => {\n const listings = await WatchAPI.getListingsBySubcategory({ ...query, types: [type] });\n return listings;\n };\n}\n\nexport function getEventByQuery(query = {}) {\n return async (dispatch) => {\n const { partner, dates } = query;\n let liveData;\n let upcomingData;\n let replayData;\n\n if (partner) {\n const newQuery = { subcategory: partner, networks: ['espn3'], dates };\n liveData = dispatch(getListingsBySubcategory('live', newQuery));\n upcomingData = dispatch(getListingsBySubcategory('upcoming', newQuery));\n replayData = dispatch(getListingsBySubcategory('replay', newQuery));\n [liveData, upcomingData, replayData] = [await liveData, await upcomingData, await replayData];\n return (liveData && liveData[0]) || (upcomingData && upcomingData[0]) || (replayData && replayData[0]);\n }\n\n liveData = dispatch(getListingsByType('live', query));\n upcomingData = dispatch(getListingsByType('upcoming', query));\n replayData = dispatch(getListingsByType('replay', query));\n [liveData, upcomingData, replayData] = [await liveData, await upcomingData, await replayData];\n return liveData || replayData || upcomingData;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/actions/listingsActions.js","import Promise from 'bluebird';\nimport loglevel from 'loglevel';\nimport { PRODUCT_API_CONFIGURATION } from 'constants';\nimport { queryString } from 'lib/format';\nimport toAbsoluteURL from 'lib/url-adapter/toAbsoluteURL';\nimport { newRelicEmitter, UNFULFILLED_PROMISE_EVENT} from 'lib/metrics/newRelicEventBus';\nimport request from './cache/requestCache';\nimport proxy from './requestProxy';\nimport fallback from './cache/fallbackCache';\nimport { Api, Device } from 'enums';\nimport appConfig from '../../../config';\n\nconst { Env: ApiEnv } = Api;\n\nconst log = loglevel.getLogger('PageAPI');\n\nconst pageApiConfig = appConfig.pageApi;\n\nconst DEFAULT_EXPIRATION = 60;\nconst DEFAULT_TIMEOUT = 10000;\nconst ONE_HOUR = 3600;\n\n// we can set catalogPageTypes in app config if it is needed to be more manageable. \nconst catalogPageTypes = new Set ([\n \"competitionGroup\",\n \"compilation\",\n \"conference\",\n \"event\",\n \"film\",\n \"franchise\",\n \"institution\",\n \"league\",\n \"organizer\",\n \"other\",\n \"qualifier\",\n \"season\",\n \"series\",\n \"short\",\n \"sport\",\n \"tour\",\n \"tournament\",\n \"network\"\n]);\n\nexport const ERROR_CODES = {\n GENERIC_ERROR: 'GENERIC_ERROR',\n PAGE_NOT_CONFIGURED: 'PAGE_NOT_CONFIGURED',\n COUNTRY_NOT_SUPPORTED: 'COUNTRY_NOT_SUPPORTED',\n COUNTRY_AND_EDITION_CONFLICT: 'COUNTRY_AND_EDITION_CONFLICT'\n};\n// TODO: This could be something more elegant, like a bucket for the linear channels\nexport const ERROR_PAGE_RESPONSE = {\n page: {\n error: {\n errorCode: ERROR_CODES.GENERIC_ERROR,\n message: 'Page data not found'\n }\n }\n};\n\nconst DEFAULT_CONFIGURATION = {\n paths: {\n base: '/api/product/{version}/watchespn/web',\n home: '/api/product/{version}/watchespn/web/home',\n event: '/api/product/{version}/watchespn/web/event',\n video: '/api/product/{version}/watchespn/web/video'\n }\n};\n\nexport const config = { ...DEFAULT_CONFIGURATION, ...pageApiConfig };\n\nexport const getServiceUrl = (env = ApiEnv.PROD) => {\n return toAbsoluteURL(PRODUCT_API_CONFIGURATION[env].serviceUrl);\n};\n\nexport const getPath = (path = 'base', version = 'v3') => {\n return `${config.paths[path].replace('{version}', version)}`;\n};\n\nexport const getPageBaseUrl = (env = ApiEnv.PROD, version = 'v3') => {\n return `${getServiceUrl(env)}${getPath('base', version)}`;\n};\n\nexport function getPageApiUrl(params) {\n const {name, qs, apiEnv, apiVersion, pathParamsArg} = params;\n /**\n * Jira ticket: WEWEB-2141\n * Please see comments in refreshBuckets where pageName has been overridden to be correct page name\n * refreshBuckets is called when user is logged in which is triggered down getPage being called.\n * When user logged in to collection page, pageApi url returns \".../collection/5060?...\"\n * and causes 404 from the api. We need to update name from 'collection' to 'bucket' and append \n * bucketId in the url\n */\n if (name === 'bucket' && pathParamsArg) {\n return `${getPageBaseUrl(apiEnv, apiVersion)}/${name}${qs}&bucketId=${pathParamsArg}`;\n } \n\n let type = name;\n if (catalogPageTypes.has(name)) {\n type = 'catalog'\n }\n const pathParams = pathParamsArg ? `/${pathParamsArg}` : '';\n return`${getPageBaseUrl(apiEnv, apiVersion)}/${type}${pathParams}${qs}`;\n}\n\nexport function getPage({\n apiEnv,\n apiVersion,\n authStates,\n authNetworks,\n entitlements,\n favoriteTeam,\n favoriteSport,\n countryCode,\n deviceType = Device.DESKTOP,\n zipcode,\n pathParams: pathParamsArg,\n lang,\n tz,\n name,\n packageId,\n tier,\n edition, // Optional query param, will override app edition\n sessionToken,\n features\n}) {\n const isShortStopLive = (name === 'shortstoplive');\n const ssBust = isShortStopLive ? (Math.floor(Math.random() * 1000)) : null;\n const qs = queryString({\n authStates,\n authNetworks,\n entitlements,\n favoriteTeam,\n favoriteSport,\n lang,\n tz,\n deviceType,\n ssBust,\n countryCode,\n zipcode,\n packageId,\n tier,\n edition,\n features\n });\n\n const url = getPageApiUrl({name, qs, apiEnv, apiVersion, pathParamsArg});\n\n log.debug(`getPage: ${url}`);\n\n return request.get(url)\n .set('Accept-Language', `${lang}-${countryCode}`)\n .set('dss-session-token', sessionToken)\n .expiration(isShortStopLive ? 0 : DEFAULT_EXPIRATION)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n })\n .catch((err) => {\n log.error(`getPage: ${url}`, err.status);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n if (err.status >= 400 && err.status < 500) {\n return (err.body && err.body.page && err.body.page.error) ? err.body : ERROR_PAGE_RESPONSE;\n }\n return fallback.get(url).then(response => response || undefined);\n });\n}\n\nexport function getEvent({\n apiEnv,\n apiVersion,\n countryCode,\n authStates,\n authNetworks,\n entitlements,\n favoriteTeam,\n favoriteSport,\n deviceType = Device.DESKTOP,\n zipcode,\n lang,\n tz,\n packageId,\n tier,\n query = {},\n features\n}) {\n // essentially our schema for event page requests\n const { airingId, eventId, id, network, sourceLang, status } = query;\n const eventQuery = { airingId, eventId, id, network, sourceLang, status };\n\n const qs = queryString({\n ...eventQuery,\n authStates,\n authNetworks,\n entitlements,\n favoriteTeam,\n favoriteSport,\n lang,\n tz,\n deviceType,\n countryCode,\n zipcode,\n packageId,\n tier,\n features\n });\n const url = `${getServiceUrl(apiEnv)}${getPath('event', apiVersion)}${qs}`;\n\n if (!Object.keys(query || {}).length) {\n return Promise.reject(new Error('No query params to get an event.'));\n }\n\n log.debug(`getEvent: ${url}`);\n\n return request.get(url)\n .set('Accept-Language', `${lang}-${countryCode}`)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n })\n .catch((err) => {\n log.error(`getEvent: ${url}`, err.originalError);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n return fallback.get(url).then(response => response || undefined);\n });\n}\n\n// video endpoint is slightly different and uses a path param\nexport function getVideo({\n apiEnv,\n apiVersion,\n countryCode,\n deviceType = Device.DESKTOP,\n authStates,\n authNetworks,\n entitlements,\n favoriteTeam,\n favoriteSport,\n lang,\n sourceLang,\n tz,\n packageId,\n tier,\n pathParams: pathParamsArg,\n query = {},\n features\n}) {\n const qs = queryString({\n ...query,\n authStates,\n authNetworks,\n entitlements,\n favoriteTeam,\n favoriteSport,\n lang,\n sourceLang,\n tz,\n deviceType,\n countryCode,\n packageId,\n tier,\n features\n });\n const pathParams = pathParamsArg ? `/${pathParamsArg}` : '';\n const url = `${getServiceUrl(apiEnv)}${getPath('video', apiVersion)}${pathParams}${qs}`;\n\n if (!pathParamsArg) {\n return Promise.reject(new Error('No params to get a video.'));\n }\n\n log.debug(`getVideo: ${url}`);\n\n return request.get(url)\n .set('Accept-Language', `${lang}-${countryCode}`)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n })\n .catch((err) => {\n log.error(`getVideo: ${url}`, err);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n return fallback.get(url).then(response => response || undefined);\n });\n}\n\nexport function getBucketPage({\n apiEnv,\n apiVersion,\n authStates,\n authNetworks,\n entitlements,\n favoriteTeam,\n favoriteSport,\n bucketId,\n countryCode,\n deviceType = Device.DESKTOP,\n zipcode,\n groupId,\n ignores,\n lang,\n tz,\n packageId,\n tier,\n sessionToken,\n features\n}) {\n const qs = queryString({\n authStates,\n authNetworks,\n entitlements,\n favoriteTeam,\n favoriteSport,\n bucketId,\n countryCode,\n deviceType,\n zipcode,\n groupId,\n ignores,\n lang,\n tz,\n packageId,\n tier,\n features\n });\n\n const url = `${getPageBaseUrl(apiEnv, apiVersion)}/bucket${qs}`;\n\n log.debug(`getBucketPage: ${url}`);\n\n return request.get(url)\n .set('Accept-Language', `${lang}-${countryCode}`)\n .set('dss-session-token', sessionToken)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n })\n .catch((err) => {\n log.error(`getBucketPage: ${url}`, err.message);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n return fallback.get(url).then(response => response || undefined);\n });\n}\n\n// #TODO: check the format of the url param and reject if invalid\nexport function getPageByFullUrl({\n countryCode,\n deviceType = Device.DESKTOP,\n url: urlArg,\n sessionToken,\n features\n}) {\n const qs = queryString({ deviceType, countryCode, features });\n const url = `${urlArg}${qs}`;\n\n log.debug(`getUrl: ${url}`);\n\n if (url) {\n return request.get(url)\n .use(proxy)\n .set('dss-session-token', sessionToken)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n })\n .catch(err => {\n log.error(`getUrl: ${url}`, err.status);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n if (err.status === 404) {\n return ERROR_PAGE_RESPONSE;\n }\n return fallback.get(url).then(response => response || undefined);\n });\n }\n return Promise.reject(new Error('No url supplied'));\n}\n\nexport function getPlaybackMeta(urlArg) {\n let url = urlArg;\n // Replacing the playback url with https due to server side making request with http and dehydrated to the client side.\n if (process.browser && url.indexOf('http://') === 0) {\n url = url.replace('http://', 'https://');\n }\n\n log.debug(`getPlaybackMeta: ${url}`);\n\n return request.get(`${url}${url.indexOf('?') === -1 ? '?' : '&'}rand=${Date.now()}`)\n .expiration(0)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n })\n .catch((err) => {\n log.error(`getPlaybackMeta: ${url}`, err.originalError);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n return fallback.get(url).then(response => response || undefined);\n });\n}\n\nexport function getCategories(apiEnv = ApiEnv.PROD, { countryCode = 'US', lang = 'en'}) {\n const qs = queryString({ countryCode, lang });\n const url = `${getServiceUrl(apiEnv)}/api/product/v3/watchespn/web/collection/alias/schedule_categories${qs}`;\n return request(url)\n .use(proxy)\n .then((response) => {\n const categories = response.body.nodes || [];\n fallback.set(url, categories);\n return categories;\n })\n .catch((err) => {\n log.error('getCategories:', err.originalError);\n return fallback.get(url);\n });\n}\n\nexport function getNetworks(apiEnv = ApiEnv.PROD, { countryCode = 'US', lang = 'en'}) {\n const qs = queryString({ countryCode, lang });\n const url = `${getServiceUrl(apiEnv)}/api/product/v3/watchespn/web/collection/alias/schedule_networks${qs}`;\n return request(url)\n .use(proxy)\n .then((response) => {\n const networks = response.body.nodes || [];\n fallback.set(url, networks);\n return networks;\n })\n .catch((err) => {\n log.error('getNetworks:', err.originalError);\n return fallback.get(url);\n });\n}\n\nexport function getPickerStreams(url) {\n if (url && typeof url === 'string') {\n if (window.location.protocol === 'https:') {\n url = url.replace('http://', 'https://');\n }\n return request.get(url)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n })\n .catch((err) => {\n log.error(`getPicker: ${url}`, err.originalError);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n return fallback.get(url).then(response => response || undefined);\n });\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/PageAPI.js","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/findIndex.js\n// module id = 208\n// module chunks = 1","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Stack.js\n// module id = 209\n// module chunks = 1","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_setToArray.js\n// module id = 210\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable no-unused-vars */\n\n/**\n * Abstract Authenticator class.\n * @class Authenticator\n */\nfunction Authenticator() {\n if (!(this instanceof Authenticator)) {\n return new Authenticator();\n }\n}\n\n/**\n * initializes the Authenticator\n */\nAuthenticator.prototype.initialize = function initialize(callback) {};\n\n/**\n * returns the authentication status\n * @abstract\n * @returns {Boolean}\n */\nAuthenticator.prototype.isAuthenticated = function isAuthenticated() {\n return false;\n};\n\n/**\n * check if the user is authenticated\n * @abstract\n * @param {Authenticator~checkAuthenticationCallback} callback -\n * The callback to be executed when authentication is complete.\n * @returns {Promise.<Boolean>} - A Promise that will be resolved with a Boolean\n * value indicating the authentication status.\n */\nAuthenticator.prototype.checkAuthentication = function checkAuthentication(callback) {\n throw new Error('checkAuthentication is not implemented.');\n};\n\n/**\n * Authenticate the user\n * @abstract\n * @param {Object} identity - The identity to be authenticated.\n * @param {Authenticator~authenticateCallback} callback -\n * The callback to be executed when authentication is complete.\n * @returns {Promise.<Boolean>} - A Promise that will be resolved with a Boolean\n * value indicating the authentication status.\n */\nAuthenticator.prototype.authenticate = function authenticate(identity, callback) {\n throw new Error('authenticate is not implemented.');\n};\n\n/**\n * Deauthenticate the user\n * @abstract\n * @param {Authenticator~deauthenticateCallback} callback -\n * The callback to be executed when deauthentication is complete.\n * @returns {Promise.<Boolean>}\n */\nAuthenticator.prototype.deauthenticate = function deauthenticate(callback) {\n throw new Error('deauthenticate is not implemented.');\n};\n\n/**\n * Retrieve the current authentication information.\n * Response will be null if the identity has not be authenticated.\n * @abstract\n * @param {Authenticator~getAuthenticationInfoCallback} callback -\n * The callback to be executed when the authentication info has been retrieved.\n * @returns {Promise.<Object>}\n */\nAuthenticator.prototype.getAuthenticationInfo = function getAuthenticationInfo(callback) {\n throw new Error('getAuthenticationInfo is not implemented.');\n};\n\nexports.default = Authenticator;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-authenticators/build/Authenticator.js\n// module id = 211\n// module chunks = 1","import Promise from 'bluebird';\nimport { completePageLoad } from 'common/page/actions';\nimport { scoreScheduleModule } from 'common/scheduleModule/actions';\n\nexport function scoreAll() { // eslint-disable-line\n return (dispatch) => Promise.all([\n dispatch(completePageLoad()),\n dispatch(scoreScheduleModule())\n ]);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/actions/scoringActions.js","export const PlayerTech = {\n BAM: 'bam',\n BRIGHTCOVE: 'brightcove'\n};\n\nexport default {\n PlayerTech\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/video-player/constants.js","/* eslint-disable class-methods-use-this */\nimport EventEmitter from 'eventemitter3';\nimport Promise from 'bluebird';\n\nclass PlayerBase extends EventEmitter {\n create(options) {\n return Promise.resolve(options);\n }\n\n insert() {\n return Promise.resolve();\n }\n\n delete() {\n return Promise.resolve();\n }\n\n play() {\n return Promise.resolve();\n }\n\n pause() {\n return Promise.resolve();\n }\n\n mute() {\n return Promise.resolve();\n }\n\n unmute() {\n return Promise.resolve();\n }\n\n error() {\n return Promise.resolve();\n }\n\n getPlayerConfigs() {\n return Promise.resolve();\n }\n\n updatePlayerConfigs(newConfigs) {\n return Promise.resolve(newConfigs);\n }\n\n getGeoLocation() {\n return Promise.resolve();\n }\n}\n\nexport default PlayerBase;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/video-player/player-tech/PlayerBase.js","import jwtDecode from 'jwt-decode';\n\nexport default function jwtDecodeToken(token = '') {\n let res = {};\n try {\n // need replace the Bearer header to avoid Uncaught InvalidTokenError {message: \"Invalid token specified: Cannot read property 'replace' of undefined\"} \n const jwtToken = jwtDecode(token.replace('Bearer ', ''));\n if (typeof jwtToken === 'object') {\n res = { jwtToken, decodeSuccess: true}\n }\n \n } catch (e) {\n res = { decodeSuccess: false, decodeErr: e}\n }\n return res;\n};\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/jwtDecodeToken.js","import { jwtDecodeToken } from 'lib/auth';\nimport { Entitlements } from 'enums';\nexport default function hasTDA(bamSessionToken) {\n const res = jwtDecodeToken(bamSessionToken);\n if (res.decodeSuccess) {\n const { context: { subscriptions = [] } = {} } = res.jwtToken || {};\n const hasTDA = subscriptions.some(sub => sub.entitlements.some(val => val === Entitlements.ESPN_TDA));\n if (hasTDA) {\n return true;\n }\n }\n return false;\n}\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/hasTDA.js","import FanAPI from 'watch-fanapi';\nimport fanSelector from 'common/selectors/fanSelector';\nimport { checkSWIDAuthentication } from 'common/actions/oneIdActions';\nimport { isEmpty } from 'lib/util';\nimport * as perf from 'lib/util/perf';\n\nexport const START_GET_FAN = 'START_GET_FAN';\nexport const COMPLETE_GET_FAN = 'COMPLETE_GET_FAN';\n\nconst fanApi = new FanAPI({ sourceHeader: 'espncom-watch' });\n\nexport function startGetFan() {\n return {\n type: START_GET_FAN,\n startTime: Date.now()\n };\n}\n\nexport function completeGetFan(fan) {\n return {\n type: COMPLETE_GET_FAN,\n completeTime: Date.now(),\n fan\n };\n}\n\nexport function getFan(swid) {\n return (dispatch) => {\n dispatch(startGetFan());\n return fanApi.getFanForId(swid).then((fan) => {\n dispatch(completeGetFan(fan));\n return fan;\n }).catch(() => {\n dispatch(completeGetFan({}));\n return {};\n });\n };\n}\n\nexport function createSmartFanAction() {\n return async (dispatch, getState) => {\n perf.markStart('createSmartFanAction');\n let fan = fanSelector(getState());\n if (isEmpty(fan)) {\n let { oneId: { isLoggedIn } = {} } = getState();\n if (!isLoggedIn) {\n isLoggedIn = await dispatch(checkSWIDAuthentication());\n }\n\n if (isLoggedIn) {\n const { oneId: { swid } = {} } = getState();\n fan = await dispatch(getFan(swid));\n }\n }\n perf.measureAndTime('createSmartFanAction');\n return fan;\n };\n}\n\n/**\n Update the \"uid\" in the preferences for this fan to test scoring\n */\n// const myFan = {\n// \"id\":\"{AEDB5BCC-173D-49BD-9B0B-77DFD5964C19}\",\n// \"profile\":{\n// \"createDate\":1422286205898,\n// \"lastUpdateDate\":1502446881443,\n// \"lastUpdateSource\":\"fuse-v2-batch\",\n// \"isInsider\":true,\n// \"gender\":\"M\",\n// \"hasNotificationPreferences\":false,\n// \"useSortGlobal\":true,\n// \"age\":30,\n// \"countryCode\":\"US\",\n// \"postalCode\":\"11501\",\n// \"dmaId\":\"501\",\n// \"registrationSource\":\"espn_video\",\n// \"registrationDate\":1271055600000\n// },\n// \"lastAccessDate\":\"2017-08-11T18:56:19Z\",\n// \"createDate\":\"2010-07-21T02:33:45Z\",\n// \"lastUpdateDate\":\"2017-08-11T22:23:27Z\",\n// \"createSource\":null,\n// \"lastUpdateSource\":\"ESPN.com - FAM\",\n// \"lastAccessSource\":\"ESPN.com - FAM\",\n// \"preferences\":[\n// {\n// \"id\": \"14315045-A46A-478F-BEAE-8ACD3F36B8CD\",\n// \"createDate\": 1502490872419,\n// \"createSource\": \"ESPN.com - FAM\",\n// \"metaData\": {\n// \"sportId\": \"54\",\n// \"teamId\": \"251\",\n// \"team\": {\n// \"uid\": \"s:600~l:602\"\n// }\n// },\n// \"sortGlobal\": 109\n// }\n// ]\n// };\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/actions/fanActions.js","export default function concatAll(theArray = []) {\n const results = [];\n theArray.forEach((subArray) => {\n subArray.forEach((value) => {\n results.push(value);\n });\n });\n return results;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/concatAll.js","import { concatAll } from 'lib/util';\n\n// creates an array of arrays of content (only if content exists in that bucket)\n// flattens that array of arrays using \"concatAll\"\nexport default function getContentPlaylistFromBuckets(content = {}, buckets = []) {\n let contentIndex = 0; // this should really never be used, but default to 0\n // if there are no buckets, create a single item playlist of the content\n if (buckets.length === 0) {\n return [{\n id: content.guid,\n headline: content.name,\n poster: content.imageHref\n }];\n }\n return concatAll(\n buckets.filter((bucket) => {\n let contains = false;\n bucket.contents.forEach((bucketContent, index) => {\n if (bucketContent.id === content.id) {\n if (content.bucketName) {\n if (content.bucketName === bucket.name) {\n contains = true;\n contentIndex = index;\n }\n } else {\n contains = true;\n contentIndex = index;\n }\n }\n });\n return contains;\n }).map((bucket) => bucket.contents.slice(contentIndex, bucket.contents.length)\n .map((bucketContent) => {\n const { guid: id = null, name: headline = null, imageHref: poster = null } = bucketContent;\n if (id && headline && poster) {\n return {\n id,\n headline,\n poster\n };\n }\n return {};\n })\n )\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/util/getContentPlaylistFromBuckets.js","import { setSessionItem, getSessionItem } from 'lib/util/localStorage';\n\nfunction initializePrerollHistory() {\n if (!getSessionItem('playedItems')) {\n setSessionItem('playedItems', []);\n }\n}\n\n/**\n * getPrerollSetting - Returns a boolean flag used to set `opts.preroll` in player options.\n * If `savePrerollHistory` is defined along with the `contentId` parameter,\n * this function will initialize played items session storage to keep track of already played streams.\n * If a stream has been played (stored in storage), it will return false to avoid preroll.\n *\n * @param {object} prerollConfig = {} - Object containing contentType specific preroll properties such\n * as `enablePreroll` and `savePrerollHistory`.\n * @param {string} contentId - contentId of the given stream to be played\n *\n * @return {boolean}\n */\nexport default (prerollConfig = {}, contentId) => {\n const { savePrerollHistory = false, enablePreroll = false } = prerollConfig;\n\n if (savePrerollHistory && typeof contentId === 'string' && contentId.trim() !== '') {\n initializePrerollHistory();\n const playedItemsInSession = getSessionItem('playedItems');\n\n if (playedItemsInSession.indexOf(contentId) === -1) {\n setSessionItem('playedItems', [...playedItemsInSession, ...[contentId]]);\n return true;\n }\n\n return false;\n }\n\n return enablePreroll;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/util/getPrerollSetting.js","/**\n * getSiteSectionId - Returns a properly formatted string representing the site section id for BrightCove Player\n *\n * @param {string} platformType - String parameter representing the platform (i.e. android, ios, unknown)\n * @param {string} deviceType - String parameter representing the device type (i.e. desktop, tablet, handset)\n * @param {string} contentType - String parameter representing the content type (i.e. clips, vod)\n * @param {string} rootName - Optional string parameter representing the root name assignment for the SSID; defaults to `watchespn`\n *\n * @return {string} - Concatenated string value generated by platform type, device type and content type.\n */\nexport default function getSiteSectionId(platformType = '', deviceType, contentType, rootName) {\n let ssid = (typeof rootName === 'string' && rootName !== '') ? rootName : 'watchespn';\n\n // Client side user-agent detection is used for platformType;\n // unknown is the default assignment when no matches are found\n if (platformType !== '' && platformType !== 'unknown') {\n ssid = `${ssid}:${platformType}`;\n }\n\n if (typeof deviceType === 'string' && deviceType !== '') {\n ssid = `${ssid}:${deviceType}`;\n }\n\n if (typeof contentType === 'string' && contentType !== '') {\n ssid = `${ssid}:${contentType}`;\n }\n\n return ssid;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/getSiteSectionId.js","import { SHIELD_API_KEY } from 'constants';\nimport { Api, AppEnvs, AuthTypes, ContentType, ContentStatus, SourceType } from 'enums';\nimport { Authenticator, streamHasAuthType } from 'lib/auth';\nimport { getPlaybackMeta } from 'lib/api/PageAPI';\nimport cookie from 'cookie-cutter';\nimport getAdobeDCRConfig from './getAdobeDCRConfig';\nimport getPrerollSetting from './getPrerollSetting';\nimport {\n isEmpty,\n getDeviceTypeFromUA,\n getSiteSectionId\n} from 'lib/util/index';\nimport WatchESPNWebPlayer from 'webapp/common/video-player';\n\nconst { Env: ApiEnv } = Api;\nlet listing;\n\nfunction isGoogleAdProvider(providerName) {\n return typeof providerName === 'string' && providerName.toLowerCase().indexOf('google') !== -1;\n}\n\nfunction appendToken(url, { token, tokenType, resource } = {}, apiKey = SHIELD_API_KEY) {\n let newUrl = url;\n if (\n token &&\n url &&\n url.indexOf('startSession') === -1\n ) {\n let tokenParam = `&token=${token}`;\n let resourceParam = '';\n\n if (tokenType === 'ADOBEPASS') {\n tokenParam = `&adobeToken=${token}`;\n resourceParam = `&adobeResource=${resource}`;\n }\n\n // TODO: remove once `videoHref` points to `https`\n newUrl = newUrl.replace('http:', 'https:');\n newUrl += `${newUrl.indexOf('?') === -1 ? '?' : '&'}apikey=${apiKey}${tokenParam}${resourceParam}`;\n }\n\n return newUrl;\n}\n\nexport default ({\n apiEnv,\n stream,\n authorization = {},\n streamlimiter,\n nielsenTrackingData = {},\n comscoreTrackingData,\n isMobile = false,\n device,\n error = null,\n env,\n lang,\n provider = {},\n isDomestic,\n social,\n logo,\n settingsMenu,\n feedsMenu,\n userInitiated,\n playbackMeta,\n prerollConfig,\n adsConfig,\n userAuth = [],\n shieldApiKey\n}) => {\n const { content } = stream;\n const { name: affiliate } = provider;\n\n const autoplay = 'on';\n // always user initiated on mobile\n // TODO: perhaps Hero should be wrapped in connectPlayer as well as playable\n const wasUserInitiated = isMobile ? true : !!userInitiated;\n let conviva = null;\n\n const playerTech = streamHasAuthType(stream, AuthTypes.BAM) ?\n WatchESPNWebPlayer.PlayerTech.BAM : WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE;\n const analytics = {\n adobeDCR: getAdobeDCRConfig(nielsenTrackingData, {}, env, playerTech),\n comscore: comscoreTrackingData,\n chartbeat: {\n uid: '22222',\n domain: 'espn.com'\n }\n };\n\n // for easy debugging\n let opts = null;\n let auth;\n\n const authToken = authorization.token;\n if (authToken) {\n auth = {\n token: authorization.encoded ? authToken : window.btoa(unescape(encodeURIComponent(authToken))),\n resource: window.btoa(unescape(encodeURIComponent(authorization.resourceId || ''))),\n tokenType: authorization.tokenType || 'ADOBEPASS',\n partnerName: authorization.partnerName,\n userAuth\n };\n }\n\n if (content.type === ContentType.VOD) {\n const moreOptions = {};\n if (stream.playlist && stream.playlist.length > 0) {\n moreOptions.playlist = stream.playlist;\n } else {\n moreOptions.clipId = stream.id;\n }\n\n if (env === AppEnvs.prod) {\n conviva = {\n customerKey: 'fc8dbfdc5da519f576628f619306a357f31bd006'\n };\n }\n\n opts = {\n ...moreOptions,\n affiliate,\n language: lang,\n advertising: {\n siteSectionId: getSiteSectionId(getDeviceTypeFromUA(), device, 'clips')\n },\n analytics: {\n ...analytics,\n conviva\n },\n auth,\n autoplay,\n social,\n logo,\n settingsMenu,\n feedsMenu,\n endcard: true,\n streamlimiter,\n wasUserInitiated\n };\n } else if (content.type === ContentType.LISTING) {\n const { source: { type: sourceType, id: sourceId }, id, status } = stream;\n const asset = {\n channelId: sourceId\n };\n if (sourceType === SourceType.ONLINE || status === ContentStatus.REPLAY) {\n asset.watchId = id;\n }\n\n if (env === AppEnvs.prod) {\n conviva = {\n customerKey: '766ee8daa5d5deaeeeab4481239072ea53f6f1cc'\n };\n }\n\n const api = (apiEnv === ApiEnv.QA) ? {\n WATCH_BASE_URL: '//broadband.espnqa.com/espn360/apis/v1/watch'\n } : {};\n\n opts = {\n affiliate,\n language: lang,\n autoplay,\n social,\n logo,\n settingsMenu,\n feedsMenu,\n advertising: {\n assetId: stream.id\n },\n analytics: {\n ...analytics,\n conviva\n },\n api,\n wasUserInitiated,\n ...asset,\n auth,\n streamlimiter,\n error\n };\n }\n\n if (!isEmpty(prerollConfig)) {\n opts.preroll = getPrerollSetting(prerollConfig, content.id);\n }\n\n if (!opts) {\n return opts;\n }\n\n opts.api = opts.api || {};\n opts.api.shieldApiKey = shieldApiKey || SHIELD_API_KEY;\n\n const shouldOverrideListings = (\n !error &&\n stream.authTypes && stream.authTypes.length &&\n stream.authTypes.some(authType => [AuthTypes.MVPD, AuthTypes.OPEN].indexOf(authType) > -1) &&\n stream.links && stream.links.play\n );\n\n let initialPlaybackMeta = { ...playbackMeta };\n\n const listings = shouldOverrideListings ? async (callback, context = false) => {\n const { auth: { tokenType } = {} } = opts;\n if (listing && context && tokenType === 'ADOBEPASS') {\n // the very initial Authenticator factory call sends the configuration\n const authenticator = Authenticator.adobe();\n const { adobeRSS, origVideoHref } = listing;\n if (!adobeRSS) {\n callback(null, listing);\n return;\n }\n try {\n const response = await authenticator.authorize(adobeRSS);\n const token = window.btoa(unescape(encodeURIComponent(response.token)));\n const resource = window.btoa(unescape(encodeURIComponent(response.resourceId || '')));\n opts.auth = { token, resource, tokenType };\n const videoHref = appendToken(origVideoHref, opts.auth, shieldApiKey);\n listing = { ...listing, videoHref };\n callback(null, listing);\n } catch (err) {\n callback(err);\n }\n return;\n }\n\n try {\n // re-use the `playbackMeta` data that's retrieved upon `streamSelect` for the first time\n const response = !isEmpty(initialPlaybackMeta) ? initialPlaybackMeta : await getPlaybackMeta(stream.links.play);\n // `fallbackCache` returns `null` instead of `undefined`, so can't use default value\n const { playbackState, adobeRSS } = response || {};\n const { videoHref: origVideoHref } = playbackState || {};\n if (!origVideoHref) {\n callback('No playback URL found', null); // TODO: localize message or move this check in the player\n return;\n }\n const videoHref = appendToken(origVideoHref, opts.auth, shieldApiKey);\n listing = { ...playbackState, origVideoHref, videoHref, adobeRSS };\n initialPlaybackMeta = null;\n callback(null, listing);\n } catch (err) {\n callback(err);\n }\n } : null;\n\n const programChangePollingInterval = (\n shouldOverrideListings &&\n !isDomestic &&\n stream.source.type === SourceType.LINEAR\n ) ? 60 * 1000 : null;\n\n // this won't technically happen right now,\n // but remove `playlist` and `clipId` so that `listings` value is respected in the player\n if (listings) {\n opts.playlist = null;\n opts.clipId = null;\n }\n\n // NOTE: The adsConfig is handled by the external app-configuration file via Bootstrap\n // See: https://code.espn.com/connected-devices/app-configurations/blob/master/configurations/watchespn-web-3.0.config.json\n if (!isEmpty(adsConfig)) {\n const usPrivacyCookie = cookie.get('usprivacy') || '';\n const { activeAdProvider, allowAdSkip, useNewUI, iphoneplaysinline } = adsConfig;\n // NOTE: Sets the Ad Provider for the Player instance\n opts.adProviderOrder = activeAdProvider;\n opts.advertising.allowAdSkip = allowAdSkip;\n opts.advertising.useNewUI = useNewUI;\n opts.iphoneplaysinline = iphoneplaysinline;\n\n if (isGoogleAdProvider(activeAdProvider)) {\n const { cmsid, networkCode, pp, adUnit } = adsConfig;\n\n opts.advertising.googleIMA = (_options) => {\n const options = _options || {};\n const imaParams = options.imaParams || {};\n const custParams = imaParams.cust_params || {};\n\n if (cmsid) {\n options.cmsid = cmsid;\n }\n\n // NOTE: `adUnit` and `networkCode` will be used for MOAT tracking\n if (networkCode) {\n options.networkCode = networkCode;\n }\n\n if (adUnit) {\n options.adUnit = adUnit;\n }\n\n // NOTE: INTL editions will have `pp` property from config\n if (pp) {\n options.pp = (isMobile) ? pp.mobile : pp.desktop;\n }\n\n if (usPrivacyCookie) {\n custParams.d_us_privacy = usPrivacyCookie;\n imaParams.us_privacy = usPrivacyCookie;\n if (usPrivacyCookie === '1YYY') {\n imaParams.rdp = '1';\n }\n imaParams.cust_params = custParams;\n options.imaParams = imaParams;\n }\n\n return options;\n };\n\n if (content.type === ContentType.LISTING && opts.auth) {\n opts.auth.adEnv = (env === AppEnvs.prod) ? 'prod' : 'dev';\n opts.auth.adProvider = activeAdProvider;\n }\n }\n }\n\n // Hardcoding to false for now since the config affects both v2 and v3 player\n opts.enableDRM = false; // playerOpts.enableDRM;\n\n return {\n ...opts,\n listings,\n programChangePollingInterval,\n newStreamPicker: true\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/util/getPlayerOptions.js","import { isEmpty } from 'lib/util';\nimport { getImageUrlWithParams, removeDimensions } from 'lib/url-adapter';\n\nexport default function getPlayerBackgroundStyle(content) {\n if (!isEmpty(content)) {\n const bgUrl = getImageUrlWithParams(removeDimensions(content.imageHref), { cquality: 40 });\n const backgroundImage = `url(${bgUrl})`;\n return { backgroundImage, backgroundSize: 'cover' };\n }\n return {};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/util/getPlayerBackgroundStyle.js","import { AppEnvs } from 'enums';\nimport {\n NIELSEN_APPID_EPLUS,\n NIELSEN_APPID_TVE\n} from 'constants';\n\nexport default (nielsenTrackingData, moreCustomMetadata = {}, env = AppEnvs.prod, player) => {\n const { ReportSuite } = nielsenTrackingData;\n delete nielsenTrackingData.ReportSuite;\n\n let apid = NIELSEN_APPID_TVE;\n if (player === 'bam') {\n apid = NIELSEN_APPID_EPLUS;\n }\n\n const isSecureProtocol = (\n window &&\n window.location &&\n window.location.protocol &&\n window.location.protocol.indexOf('https') > -1\n );\n\n const data = {\n APP_MEASUREMENT: {\n RSID: `${ReportSuite}${env === AppEnvs.prod ? ',wdgespge' : ''}`,\n TRACKING_SERVER: isSecureProtocol ? 'sw88.espn.com' : 'w88.espn.com',\n TRACKING_SERVER_SECURE: 'sw88.espn.com'\n },\n ESPN_CUSTOM_METADATA: { ...nielsenTrackingData, ...moreCustomMetadata },\n HEARTBEAT: {\n DEBUG_LOGGING: false\n },\n NIELSEN_DATA: {\n APP_INFO: {\n apid,\n clientId: 'us-600140',\n sfcode: 'dcr',\n DEV: {\n apid,\n clientId: 'us-600140',\n sfcode: 'dcr'\n },\n PROD: {\n apid,\n clientId: 'us-600140',\n sfcode: 'dcr'\n }\n },\n CONTENT_METADATA: {\n segA: nielsenTrackingData.SegA,\n segC: nielsenTrackingData.SegC,\n isfullepisode: nielsenTrackingData.isfullepisode\n }\n }\n };\n return data;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/util/getAdobeDCRConfig.js","import getContentPlaylistFromBuckets from './getContentPlaylistFromBuckets';\nimport getAdobeDCRConfig from './getAdobeDCRConfig';\nimport getPlayerOptions from './getPlayerOptions';\nimport getPlayerBackgroundStyle from './getPlayerBackgroundStyle';\nimport getPrerollSetting from './getPrerollSetting';\n\nexport {\n getAdobeDCRConfig,\n getContentPlaylistFromBuckets,\n getPlayerOptions,\n getPlayerBackgroundStyle,\n getPrerollSetting\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/util/index.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport { isAdDisabled } from 'common/selectors/appSelector';\n\nclass AdContainer extends Component {\n constructor(props) {\n super(props);\n // state is maintained by AdManager\n this.state = {\n refreshed: false\n };\n }\n\n componentDidMount() {\n if (!this.props.disabled && this.context.watchAdManager) {\n this.context.watchAdManager.addInstance(this);\n }\n }\n\n shouldComponentUpdate(nextProps) {\n if (this.props.ads.id === nextProps.ads.id) {\n return false;\n }\n return true;\n }\n\n componentWillUnmount() {\n if (!this.props.disabled) {\n this.context.watchAdManager.removeInstance(this);\n }\n }\n\n render() {\n const {\n className,\n collapseBeforeLoad,\n exclude,\n id,\n include,\n inView,\n isOutOfPage,\n kvps,\n refreshWhenVisible,\n slotType,\n disabled,\n render\n } = this.props;\n\n const slotKvps = [];\n const adProps = { id, key: id };\n\n /* no type no ad */\n if (disabled || slotType === null) {\n return null;\n }\n\n /* default if pos not specified */\n if (typeof kvps.pos === 'undefined') {\n kvps.pos = slotType;\n }\n\n /* build key value pair string */\n Object.keys(kvps).forEach((key) => {\n if (key !== null && kvps.k !== null) {\n slotKvps.push(`${key}=${kvps[key]}`);\n }\n });\n\n /* build up the div properties */\n adProps.className = classNames('react-ad', className, {\n 'ad-slot': !inView\n });\n\n adProps['data-slot-type'] = slotType;\n\n if (isOutOfPage) {\n adProps['data-out-of-page'] = 'true';\n }\n\n if (collapseBeforeLoad) {\n adProps['data-collapse-before-load'] = 'true';\n }\n\n if (include.length > 0) {\n const includeStr = include.join(',');\n adProps['data-include-bp'] = includeStr;\n }\n\n if (exclude.length > 0) {\n const excludeStr = exclude.join(',');\n adProps['data-exclude-bp'] = excludeStr;\n }\n\n if (slotKvps.length > 0) {\n const kvpsStr = slotKvps.join(',');\n adProps['data-slot-kvps'] = kvpsStr;\n }\n\n if (refreshWhenVisible === false) {\n adProps['data-refresh-on-pageload'] = 'true';\n }\n\n return (\n render(<div ref=\"adSlot\" {...adProps} />)\n );\n }\n}\n\nAdContainer.defaultProps = {\n className: '',\n exclude: [],\n include: [],\n inView: false,\n kvps: {},\n refreshWhenVisible: false,\n slotType: null,\n disabled: false,\n render: children => children\n};\n\nAdContainer.propTypes = {\n ads: PropTypes.object,\n refreshWhenVisible: PropTypes.bool,\n className: PropTypes.string,\n collapseBeforeLoad: PropTypes.bool,\n exclude: PropTypes.array,\n id: PropTypes.string,\n include: PropTypes.array,\n inView: PropTypes.bool,\n isOutOfPage: PropTypes.bool,\n kvps: PropTypes.object,\n slotType: PropTypes.string,\n disabled: PropTypes.bool,\n render: PropTypes.func\n};\n\nAdContainer.contextTypes = {\n watchAdManager: PropTypes.object\n};\n\nconst mapStateToProps = (state) => ({\n ads: state.ads,\n disabled: isAdDisabled(state)\n});\n\nexport default connect(mapStateToProps)(AdContainer);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ads/AdContainer.js","import React, { PropTypes } from 'react';\n\nconst DEFAULT_ICON = 'espn-default';\n\nconst Logo = ({ className, iconHref = DEFAULT_ICON }) => {\n if (iconHref.indexOf('http://') === -1) {\n return <div className={`${className} icon-font-before icon-${iconHref || DEFAULT_ICON}-solid-before`} />;\n }\n return (\n <div className={className}>\n <img src={iconHref} className=\"imageLoaded\" alt=\"sport icon\" />\n </div>\n );\n};\n\nLogo.propTypes = {\n className: PropTypes.string,\n iconHref: PropTypes.string\n};\n\nexport default Logo;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/Logo.js","import { AuthTypes } from 'enums';\nimport isEmpty from 'lodash/isEmpty';\n\nexport default function isContentLocked({ streams = [] }, userAuth, preauthorizedResources = []) {\n if (isEmpty(streams) || isEmpty(userAuth) || isEmpty(preauthorizedResources)) {\n return false;\n }\n\n const isLocked = (\n userAuth.indexOf(AuthTypes.MVPD) > -1 &&\n streams.some(({ authTypes = [], adobeRSS = '', adobeResource: adobeResourceArg }) => {\n let adobeResource = adobeResourceArg;\n if (!adobeResource) {\n const result = /<title>([^<]+)<\\/title>/.exec(adobeRSS);\n if (result && result[1]) {\n adobeResource = result[1];\n }\n }\n return (\n adobeResource &&\n authTypes.indexOf(AuthTypes.MVPD) > -1 &&\n preauthorizedResources.indexOf(adobeResource) === -1\n );\n })\n );\n\n return isLocked;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/isContentLocked.js","/**\n * isStreamStatus - Returns a boolean flag determined by an exact string match between the\n * stream.status property and the statusType string parameter.\n *\n * @param {object} streamObject - Object containing the status string property\n * @param {string} statusType - Represents the statusType to match\n *\n * @return {boolean} Returns true if the stream.status property matches the statusType; false otherwise.\n */\nexport default function isStreamStatus({ status } = {}, statusType = '') {\n return (typeof status === 'string' && status.trim() !== '' && statusType !== '' && statusType === status);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/isStreamStatus.js","import { AuthTypes } from 'enums';\n\n/**\n * isUserAuthenticated - Verifies if the current userAuth array matches a given provider.\n * For `ESPN_PLUS`, we rely that the match is not `MVPD` and not `ISP`. If the result of .find returns\n * a non-empty array we assume a match is found.\n *\n * @param {array} userAuth - An array holding the current user authentication state; can have more than one\n * @param {string} provider - A string used to represent the authentication provider (MVPD, BAM or ISP)\n *\n * @return {boolean} Returns a boolean flag based on finding a match between the userAuth array and given provider\n */\nexport default function isUserAuthenticated(userAuth = [], provider = '') {\n if (userAuth.length === 0 || typeof provider !== 'string' || provider.trim() === '') {\n return false;\n }\n\n let userIsAuthenticated;\n if (provider === AuthTypes.BAM) { \n userIsAuthenticated = userAuth.filter(auth => auth.indexOf(AuthTypes.MVPD) === -1 && auth.indexOf(AuthTypes.ISP) === -1); \n } else { \n userIsAuthenticated = userAuth.filter(auth => auth.indexOf(provider) !== -1);\n }\n\n if (userIsAuthenticated.length) {\n return true;\n }\n\n return false;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/isUserAuthenticated.js","import { AuthTypes } from 'enums';\nimport {\n streamHasAuthType,\n isUserAuthenticated\n} from 'lib/auth';\nexport default function getFirstStreamUserAuth(streams, userAuth) {\n for (let stream of streams) {\n const isTVEAuthenticated = isUserAuthenticated(userAuth, AuthTypes.MVPD) || isUserAuthenticated(userAuth, AuthTypes.ISP);\n const isBAMAuthenticated = isUserAuthenticated(userAuth, AuthTypes.BAM);\n const isBAMStream = streamHasAuthType(stream, AuthTypes.BAM);\n const isTVEStream = streamHasAuthType(stream, AuthTypes.MVPD) || streamHasAuthType(stream, AuthTypes.ISP);\n \n if ((isTVEAuthenticated && isTVEStream) || (isBAMAuthenticated && isBAMStream )) {\n return stream;\n }\n }\n return null;\n}\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/getFirstStreamUserAuth.js","import { MVPD_PREVIOUS_KEY, BAM_PAYWALL_IFRAME_ID } from 'constants';\nimport { AuthTypes } from 'enums';\nimport { isStreamStatus } from 'lib/auth';\nimport {\n createAndPerformStartAuthenticationAction,\n createDisplayProviderDialogAction,\n createDTCPaywallAction\n} from 'common/actions/authenticationActions';\nimport { get } from 'lib/util/localStorage';\n\nexport function fetchTVEAuthAction(dispatch, nextSelectedContent, stream) {\n dispatch(createAndPerformStartAuthenticationAction({\n content: nextSelectedContent,\n stream\n }))\n .then((isAuthenticated) => {\n if (!isAuthenticated) {\n return dispatch(createDisplayProviderDialogAction());\n }\n });\n}\n/**\n * Single stream authentication rules\n * 1. if stream is upcoming or stream requires DTC, show DSS paywall\n * 2. if stream requires MVPD or ISP, 'tve is passed in query string, or\n MVPD_PREVIOUS_KEY is set in localStorage\n * 3. if 1 and 2 conditions are not met, show DSS paywall\n *\n * @param {args} object list of requiredAuths, nextSelectedContent, query and dispatch \n requiredAuths - Array containing all authTypes for the stream\n nextSelectedContent - Parent object containing the selected content with streams array\n query - React Router query object containing all possible query params\n dispatch - redux store dispatch\n */\nexport async function handleSingleStreamAuthentication(args) {\n const { requiredAuths, nextSelectedContent, query={}, dispatch, stream } = args;\n const chooseTVEAuth = (query.auth === 'tve');\n const userHasAuthedMVPD = get(MVPD_PREVIOUS_KEY);\n\n if (requiredAuths.every(authType => authType === AuthTypes.BAM) || isStreamStatus(stream, 'upcoming')) {\n dispatch(createDTCPaywallAction({\n containerId: BAM_PAYWALL_IFRAME_ID,\n content: nextSelectedContent,\n stream\n }));\n } else if (requiredAuths.every(authType => (authType === AuthTypes.MVPD || authType === AuthTypes.ISP)) ||\n chooseTVEAuth || userHasAuthedMVPD) {\n fetchTVEAuthAction(dispatch, nextSelectedContent, stream);\n } else {\n dispatch(createDTCPaywallAction({\n containerId: BAM_PAYWALL_IFRAME_ID,\n content: nextSelectedContent,\n stream\n }));\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/streamPicker/handleSingleStreamAuthentication.js","import { getContentId } from 'lib/auth';\nimport { queryString } from 'lib/format';\n\nexport function getPlayerUrl(props) {\n const {\n content,\n toURL = false,\n onSyndicatedPlayerPage = false,\n absoluteUrl = false,\n airingId = null,\n useLocationPathname = false,\n isHero = false,\n bucketId,\n groupId,\n flags,\n routing\n } = props;\n\n if (content) {\n const { basename, query: queryParams, pathname } = (routing && routing.locationBeforeTransitions) || {};\n const { categoryId, id } = queryParams || {};\n\n let contentId;\n if (isHero && id) {\n contentId = {id}\n } else if (airingId) {\n contentId = {id: airingId}\n } else {\n contentId = getContentId(content);\n }\n \n const query = {\n bucketId,\n groupId,\n ...contentId,\n ...flags\n };\n\n let routePath = onSyndicatedPlayerPage ? '/syndicated/player' : '/player';\n if ( useLocationPathname) {\n routePath = pathname\n }\n \n if (categoryId) {\n query.categoryId = categoryId;\n }\n\n if (toURL) {\n\n if (absoluteUrl) {\n const domain = window && window.location && window.location.hostname;\n if (domain) {\n let port = window.location.port || '';\n if (port !== '') {\n port = `:${port}`;\n }\n return `http://${domain}${port}${basename}${routePath}${queryString(query)}`;\n }\n }\n return `${basename}${routePath}${queryString(query)}`;\n }\n\n return {\n pathname: routePath,\n query\n };\n }\n\n return null;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/streamPicker/getPlayerUrl.js","import { hasObj } from 'lib/util';\nimport { queryString } from 'lib/format';\nimport { ContentStatus } from 'enums';\nimport pickerStreamsSelector from 'common/selectors/pickerStreamsSelector';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport { getPlayerUrl, filterPickerStreamsById } from 'lib/streamPicker';\nimport { fetchPickerStreams } from 'common/actions/apiAction';\nimport {\n streamUnSelect,\n streamSelect,\n openPickerSuccess,\n openPickerError,\n pickerStateClear,\n closeModalMessage,\n pickerStreamsUnSelect\n} from 'common/actions/appActions';\nimport { getFirstStreamUserAuth, canPlayStream, authStateKnown } from 'lib/auth';\n\nconst MAX_RETRIES = 5;\nconst RETRY_WAIT_TIME = 1000;\n\nexport function getPickerStreams(content, pickerStreams) {\n return async (dispatch, getState) => {\n const state = getState();\n const nextSelectedContent = selectedContentSelector(state);\n let selectPickerStreams = pickerStreams;\n // new content is selected\n if (nextSelectedContent.id !== content.id) {\n selectPickerStreams = pickerStreamsSelector(state);\n }\n const { links = {}, eventId } = nextSelectedContent; \n const { pickerStreamsEventId } = state.app;\n\n // if id is equal to pickerStreamsEventId, than means we had pickerStreams\n if ( selectPickerStreams && selectPickerStreams.length && pickerStreamsEventId === eventId ) {\n return {\n nextSelectedContent,\n nextPickerStreams: selectPickerStreams\n }\n }\n // otherwise; let's trigger a new picker pageApi call and fetch pickerStreams data \n const pickerApiUrl = links.picker;\n if (pickerApiUrl) {\n dispatch(pickerStreamsUnSelect());\n await dispatch(fetchPickerStreams(pickerApiUrl, eventId));\n const nextStreams = pickerStreamsSelector(getState());\n return {\n nextSelectedContent,\n nextPickerStreams: nextStreams\n }\n }\n return {};\n }\n}\nexport async function handleSelectedStream(props) { \n const {\n content, \n route, \n urlParams, \n pickerStreams, \n airingId, \n dispatch, \n authRes: { userAuth = [] }\n } = props\n const { router, rState, locationBeforeTransitions = {} } = route;\n const { basename, pathname = '', query = {} } = locationBeforeTransitions;\n \n const { useqa, id, _spHost, eventCalendarId, ...resQs, } = query;\n let qs = {};\n if (useqa) {\n /**\n * if useqa is passed in the query, we want to keep the rest of query string\n * except _spHost for testing purpose in QA\n */\n qs = { useqa, ...resQs };\n }\n const { nextPickerStreams, nextSelectedContent } = await dispatch(getPickerStreams(content, pickerStreams));\n const streamFromPicker = filterPickerStreamsById(nextPickerStreams, airingId);\n const { placement, status } = content;\n const onHero = placement === 'inline-hero';\n if (streamFromPicker && Array.isArray(streamFromPicker.streams)) {\n // Avoids the `reselected` return logic when clicking the same stream\n const stream = streamFromPicker.streams[0]\n const canPlay = canPlayStream(stream, userAuth, false);\n if ( !canPlay && (onHero || eventCalendarId && nextSelectedContent.id === eventCalendarId)) {\n /**\n * ticket: https://jira.disney.com/browse/WEWEB-2684\n * When multicast eventCalendarId is passed in the url, user is logged to MVPD,\n * BC player is embed and user is not logged to E+ and select E+ content, or if user is\n * logged to E+, DSS player is embed and user is not logged to MVPD and select TVE content,\n * we need to trigger url update with selected stream id from the picker.\n * Auth flow will be triggered in handleSingleStreamAuthentication (selectStreamForAuthUsers.js)\n */\n qs.id = stream.id;\n window.location.href = `${basename}${pathname}${queryString(qs)}`;\n } else {\n dispatch(streamUnSelect());\n stream.feedSwitch = true;\n dispatch(closeModalMessage());\n dispatch(streamSelect(stream));\n\n /**\n * urlParams is passed when user clicks on tiles from\n * clickHandler event, file app/webapp/common/playable.js.\n * Before this update, for all multi streams, user didn't give an option to\n * select the streams after they logged it, so we will enforce to open the picker\n * even if user is logged it.\n */\n if (urlParams) {\n const useLocationPathname = (onHero || ((id || eventCalendarId) && !urlParams)) && status !== ContentStatus.UPCOMING;\n urlParams.content = nextSelectedContent; \n const playerUrl = getPlayerUrl({ useLocationPathname, ...urlParams }); \n // if playerUrl is set, re-route the page to the playerUrl\n if (playerUrl.query) {\n playerUrl.query = {\n ...qs,\n ...playerUrl.query,\n airingId\n } \n }\n router.push({\n ...playerUrl,\n state: {pickerStreams: nextPickerStreams, ...rState}\n });\n }\n }\n } else {\n handleStreamPickerOnError(props);\n } \n}\n\nexport function onRowClickCallback(props) {\n // close the picker as soon as use clicks on the row.\n espn_ui.Helpers.streamPicker.closePicker();\n handleSelectedStream(props);\n \n window.jQuery.unsubscribe && window.jQuery.unsubscribe(window.espn_ui.Helpers.streamPicker.evts.ON_ROW_CLICK);\n}\n\nexport function isPickerReady() {\n const hasSubscribe = hasObj(window, 'jQuery.subscribe');\n const hasRowClick = hasObj(window, 'espn_ui.Helpers.streamPicker.evts.ON_ROW_CLICK');\n const hasOpenPicker = hasObj(window, 'espn_ui.Helpers.streamPicker.openPicker');\n return hasSubscribe && hasRowClick && hasOpenPicker;\n}\n\nexport function handleStreamPickerOnError(props) {\n const {\n content,\n dispatch,\n urlParams,\n route,\n authRes: { userAuth = [] }\n } = props;\n const { streams = [] } = content;\n const selectedStream = getFirstStreamUserAuth(streams, userAuth) || streams[0]; \n if (selectedStream) {\n dispatch(streamUnSelect());\n selectedStream.feedSwitch = true;\n dispatch(closeModalMessage());\n dispatch(streamSelect(selectedStream));\n\n if (urlParams) {\n const { router, rState } = route;\n const playerUrl = getPlayerUrl({...urlParams });\n router.push({\n ...playerUrl,\n state: {...rState}\n });\n }\n }\n}\n\n// check .com stream picker script functions are available in the dom\nexport async function waitUntilPickerScriptReady(isPickerReady, maxReTries, waitTime) {\n let retry = 0;\n return await new Promise(resolve => {\n const reTryOpenPicker = setInterval(() => {\n if (retry < maxReTries) {\n const isReady = isPickerReady();\n if (isReady ) {\n resolve(true);\n clearInterval(reTryOpenPicker);\n }\n \n } else {\n clearInterval(reTryOpenPicker);\n resolve(false);\n }\n retry += 1;\n }, waitTime);\n });\n}\n\n/**\n * @description:\n * Open .com stream picker which is an iframe that uses jQuery pub/sub.\n * We need to check if .com jQuery events are available before calling it.\n * We check every 500ms up to 4 times, total of 3 seconds. If .com jQuery events\n * are available, we call window.espn_ui.Helpers.streamPicker.openPicker and\n * dispatch openPickerSuccess; otherwise, dispatch openPickerError\n * \n * @param {object} content // content.id will be needed for the triggering stream picker\n * @param {object} route // empty object or route state object of { router, playerUrl, rState }\n * @param {object} dispatch // store dispatch\n * @param {object} authRes // empty object or includes userAuth and preauthorizedResources props\n */\nexport async function openStreamPicker(props) {\n const {\n content, \n route = {}, \n dispatch,\n country = '',\n lang = '',\n pickerStreams = [],\n authRes: {\n userAuth = [], \n preauthorizedResources = []\n }\n } = props;\n \n let retry = 0;\n dispatch(pickerStateClear()); // clear previous picker state \n\n const { pathname = '', query: { eventCalendarId } } = route.locationBeforeTransitions;\n const darkmode = pathname.indexOf('/player') !== -1;\n \n /**\n * we need to fetch pickerStreams data for in-player stream picker, \n * in case when user closes stream picker without picking a stream on pageload\n */\n if (eventCalendarId && pickerStreams && !pickerStreams.length) {\n const { links = {}, eventId } = content;\n // use == not === to compare value only between eventCalendarId and eventId\n if (eventCalendarId == eventId && links.picker) {\n const { nextPickerStreams } = await dispatch(getPickerStreams(content, pickerStreams));\n props.pickerStreams = nextPickerStreams; \n }\n }\n\n let pickerScriptReady;\n await waitUntilPickerScriptReady(isPickerReady, MAX_RETRIES, RETRY_WAIT_TIME).then( res => (pickerScriptReady = res))\n\n if (pickerScriptReady) {\n try { \n if (content && content.id) {\n \n window.espn_ui.Helpers.streamPicker.openPicker({\n eventId: content.id,\n triggerEvtOnNav: true,\n entitlements: userAuth,\n tvePreauthResources: preauthorizedResources,\n countryCode: country,\n lang,\n darkmode\n }).then(function() {\n window.jQuery.subscribe(\n window.espn_ui.Helpers.streamPicker.evts.ON_ROW_CLICK, res => onRowClickCallback({airingId: res.airing.id, ...props})\n );\n dispatch(openPickerSuccess({id: content.id, retryTime: retry}));\n }).catch(function() {\n dispatch(openPickerError(`Open picker error: openPicker failed, retryTime ${retry}`));\n window.espn_ui.Helpers.streamPicker.closePicker();\n handleStreamPickerOnError(props);\n });\n }\n } catch(err) {\n dispatch(openPickerError(`Open picker error: ${err.message}`));\n }\n } else {\n handleStreamPickerOnError(props);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./app/lib/streamPicker/openStreamPicker.js","import { BAM_PAYWALL_IFRAME_ID } from 'constants';\nimport { AuthTypes } from 'enums';\nimport { contentSelect, streamSelect } from 'common/actions/appActions';\nimport { createDTCPaywallAction } from 'common/actions/authenticationActions';\nimport {\n streamHasAuthType,\n isStreamStatus,\n isUserAuthenticated,\n getFirstStreamUserAuth\n} from 'lib/auth';\nimport { openStreamPicker } from 'lib/streamPicker';\n\n/**\n * Multi stream authentication rules\n * 1. stream is upcoming, show DSS paywall\n * 2. show picker if showPicker is set to true\n * 3. select first stream for authentication\n */\nexport async function handleMultipleStreamAuthentication(args) {\n const { \n nextSelectedContent,\n dispatch,\n showPicker,\n pickerStreams = [],\n authRes= {},\n locationBeforeTransitions,\n lang,\n country\n } = args;\n \n const { streams = [] } = nextSelectedContent;\n const firstStream = streams[0] || {};\n \n if (isStreamStatus(firstStream, 'upcoming')) {\n dispatch(createDTCPaywallAction({\n containerId: BAM_PAYWALL_IFRAME_ID,\n content: nextSelectedContent,\n stream: firstStream\n }));\n } else if (showPicker) {\n openStreamPicker({\n lang,\n country,\n dispatch,\n pickerStreams,\n authRes,\n content: nextSelectedContent,\n route: { locationBeforeTransitions }\n });\n } else {\n /**\n * if showPicker is not true and this is multi streams content, we will first\n * check if user is authenticated any of the streams, getFirstStreamUserAuth will\n * returns first stream user is authenticated. If user is not authenticated any of\n * streams, we will get the first stream (streams[0]) from streams\n */\n const { userAuth = [] } = authRes;\n const selectedFirstStream = getFirstStreamUserAuth(streams, userAuth) || firstStream; \n dispatch(contentSelect(selectedFirstStream));\n } \n};\n\n\n// WEBPACK FOOTER //\n// ./app/lib/streamPicker/handleMultipleStreamAuthentication.js","import { getFirstStreamUserAuth, getContentId, canPlayStream } from 'lib/auth';\nimport { isEmpty } from 'lib/util';\nimport { streamSelect, pickerStreamsUnSelect } from 'common/actions/appActions';\nimport {\n filterPickerStreamsById,\n handleSingleStreamAuthentication\n} from 'lib/streamPicker';\nimport { getPickerStreams } from './openStreamPicker';\n\nexport async function selectStreamForAuthUsers (payload) {\n const {\n dispatch,\n authRes,\n pickerStreams = [],\n content,\n feeds = {},\n locationBeforeTransitions = {}\n } = payload;\n \n const { streams = [], placement = '', isEvent } = content;\n const playerSideBarContent = placement.indexOf('playback-page-recommended') !== -1;\n const { query, query: { id, airingId } = {} } = locationBeforeTransitions; \n \n const { userAuth = [] } = authRes;\n let contentId = airingId || id;\n let nextPickerStreams = pickerStreams;\n // playerSideBarContent will be true when user clicks on sidebar content on player page\n if (playerSideBarContent) {\n contentId = getContentId(content);\n dispatch(pickerStreamsUnSelect());\n if ( isEvent ) {\n nextPickerStreams = await dispatch(getPickerStreams(content, pickerStreams));\n }\n }\n\n let filteredStreams = filterPickerStreamsById(nextPickerStreams, contentId);\n if (filteredStreams && Array.isArray(filteredStreams.streams)) {\n filteredStreams = filteredStreams.streams[0]\n }\n // if airing content is not found in pickerStreams, get it from content.streams\n if (!filteredStreams) {\n filteredStreams = streams.filter(stream => stream.id === contentId)[0];\n }\n\n if (!filteredStreams && !isEmpty(feeds)) {\n const lastFeeds = Object.keys(feeds).map((key) => feeds[key]);\n const lastSelectedStream = streams.filter(({ id }) => lastFeeds.indexOf(contentId) > -1)[0];\n if (lastSelectedStream) {\n filteredStreams = lastSelectedStream;\n }\n }\n\n // last fallback\n if (!filteredStreams) {\n filteredStreams = getFirstStreamUserAuth(streams, userAuth) || streams[0]; \n }\n\n // add missing content props that we need to pass to DSS \n if (filteredStreams && !filteredStreams.content) {\n filteredStreams = { ...filteredStreams, content }\n }\n \n if (canPlayStream(filteredStreams, userAuth, false) && filteredStreams.status !== 'upcoming') {\n dispatch(streamSelect(filteredStreams));\n } else {\n handleSingleStreamAuthentication({\n query,\n dispatch,\n stream: filteredStreams,\n requiredAuths: filteredStreams.authTypes,\n nextSelectedContent: content\n });\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/streamPicker/selectStreamForAuthUsers.js","export const filterPickerStreamsById = (pickerStreams, id) => {\n if (pickerStreams && pickerStreams.length) {\n const contents = pickerStreams.map(streams => streams.contents);\n const streams = contents.filter(content => content.filter(stream => stream.id === id).length > 0)[0]; \n if (streams && streams.length) {\n return streams.filter(stream => stream.id === id)[0];\n }\n }\n return null;\n};\n\n\n// WEBPACK FOOTER //\n// ./app/lib/streamPicker/filterPickerStreamsById.js","export { handleMultipleStreamAuthentication } from './handleMultipleStreamAuthentication';\nexport { handleSingleStreamAuthentication } from './handleSingleStreamAuthentication';\nexport { getPlayerUrl } from './getPlayerUrl';\nexport { openStreamPicker } from './openStreamPicker';\nexport { selectStreamForAuthUsers } from './selectStreamForAuthUsers';\nexport { filterPickerStreamsById } from './filterPickerStreamsById';\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/streamPicker/index.js","import React, { PropTypes } from 'react';\nimport { secureLoadingImageUrl } from 'constants';\nimport { getImageUrlWithParams } from 'lib/url-adapter';\n\nconst COMPRESSION_RATE = 40;\n\n/**\n * Generates a single srcSet entry\n * @param {string} url\n * @param {number} width\n */\nfunction getSrcSetEntry(url, width) {\n return `${url} ${width}w`;\n}\n\n/**\n * Take an image url and returns full srcSet value\n * @param {string} url - Either an artwork or CDN url\n * @return {array} - array of size numbers\n */\nfunction getSrcSet(url, cquality, sizes = []) {\n return sizes.map((width) => {\n const sizedUrl = getImageUrlWithParams(url, { cquality, width });\n return getSrcSetEntry(sizedUrl, width);\n }).reduce((acc, srcSetEntry) => `${srcSetEntry}, ${acc}`);\n}\n\nconst ResponsiveThumbnail = ({\n alt,\n className,\n style,\n lazyload,\n srcSetWidths,\n src: srcProp,\n sizes,\n cquality\n}) => {\n if (!srcProp) {\n return null;\n }\n // compress combiner urls\n const src = getImageUrlWithParams(srcProp, { cquality });\n const srcSet = (srcSetWidths.length > 0) ? getSrcSet(srcProp, cquality, srcSetWidths) : null;\n\n let imgProps = {\n src,\n srcSet,\n className,\n style\n };\n\n if (lazyload) {\n imgProps = {\n src: secureLoadingImageUrl,\n 'data-src': src,\n 'data-srcset': srcSet,\n className: `${className} lazyload`\n };\n }\n\n return (\n <picture>\n <img {...imgProps} sizes={sizes} alt={alt} />\n </picture>\n );\n};\n\nResponsiveThumbnail.propTypes = {\n alt: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n src: PropTypes.string,\n srcSetWidths: PropTypes.array,\n sizes: PropTypes.string,\n lazyload: PropTypes.bool,\n cquality: PropTypes.number\n};\n\nResponsiveThumbnail.defaultProps = {\n src: '',\n srcSetWidths: [],\n sizes: '25vw',\n className: 'media-wrapper_image',\n lazyload: false,\n cquality: COMPRESSION_RATE\n};\n\nexport default ResponsiveThumbnail;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ResponsiveThumbnail.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport Promise from 'bluebird';\nimport hoistStatics from 'hoist-non-react-statics';\nimport selectn from 'selectn';\nimport uniqBy from 'lodash/uniqBy';\nimport cookie from 'cookie-cutter';\nimport {\n BAM_PAYWALL_IFRAME_ID,\n FORCE_REFRESH_TOKEN_RETRY_KEY\n} from 'constants';\nimport WatchESPNWebPlayer from 'webapp/common/video-player';\nimport FeedsSelector from 'webapp/player/FeedsSelector';\nimport WatchPropTypes from 'common/PropTypes';\nimport { AdobePass, PlayerEvents, PlayerError, PlayerPlacement, Flags, AuthTypes, /* SourceType, */ Entitlements } from 'enums';\nimport {\n contentSelect,\n contentUnSelect,\n streamSelect,\n streamUnSelect,\n pickerStreamsUnSelect,\n closeModalMessage\n} from 'common/actions/appActions';\nimport {\n createAndPerformStartAuthorizationAction,\n createAsyncGetMetadataAction,\n createAndPerformLogoutAction,\n createDTCPaywallAction,\n createCompletePreauthCheckAction\n} from 'common/actions/authenticationActions';\nimport { forceTokenRefresh, logout } from 'common/actions/oneIdActions';\nimport bootstrapSelector from 'common/selectors/bootstrapSelector';\nimport { nielsenTrackingSelector, comscoreTrackingSelector } from 'common/selectors/analyticsSelectors';\nimport {\n apiEnvSelector,\n playerTechSelector,\n bypassTokenSelector,\n isDomesticSelector,\n editionSelector,\n intlAppSelector,\n locationSelector,\n playbackMetaSelector,\n newRelicTrackingSelector,\n hideNavSelector,\n playerOptionsSelector\n} from 'common/selectors/appSelector';\nimport {\n autoPlaySelector,\n prerollConfigSelector,\n lastFeedsSelector,\n recommendMobileWebSelector,\n playerAdsConfigSelector,\n dssPlayerMutedSelector\n} from 'common/selectors/playerSelector';\nimport initialEmbedSelector from 'common/selectors/initialEmbedSelector';\nimport onDeckContentSelector from 'common/selectors/onDeckContentSelector';\nimport pageSelector from 'common/selectors/pageSelector';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport selectedStreamSelector from 'common/selectors/selectedStreamSelector';\nimport playingStreamSelector from 'common/selectors/playingStreamSelector';\nimport pickerStreamsSelector from 'common/selectors/pickerStreamsSelector';\nimport providerSelector from 'common/selectors/providerSelector';\nimport {\n userAuthSelector,\n preauthorizedResourcesSelector,\n passOneIdTokenSelector\n} from 'common/selectors/authenticationSelectors';\nimport { oneIdTokenSelector } from 'common/selectors/oneIdSelector';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport {\n authStateKnown,\n streamHasAuthType,\n streamHasDTCPackage,\n shallowCheckAuthentication,\n canPlayContent,\n PreAuthZ\n} from 'lib/auth';\nimport { newRelicTrackEvent } from 'lib/api/newRelicApi';\nimport { isEmpty, getBamAuthConfig } from 'lib/util';\nimport { addQueryToUrl } from 'lib/format';\nimport { getOmnitureQuery, trackEspnPlayerOnAdSkipped } from 'lib/omniture';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport { getAdobeDCRConfig, getPlayerOptions } from './util';\nimport {\n createContinuousPlayAction,\n createAutoEmbedTimerCompleteAction,\n createAutoplayUpdatedAction,\n createAuthorizationErrorAction,\n createStreamPlayingAction,\n createPlayerReadyAction,\n createProgramChangeAction,\n createPlayerEmbeddingAction,\n createPlayerEmbeddedAction,\n createFeedSelectAction\n} from './actions';\nimport globalVideoElement from './globalVideoElement';\nimport { set, get, remove } from 'lib/util/localStorage';\nimport {\n openStreamPicker,\n selectStreamForAuthUsers\n} from 'lib/streamPicker';\nimport { getAppLink } from 'lib/native-bridge/espnapp';\nimport { shieldApiKeySelector } from 'common/selectors/apiParamsSelector';\n\nconst { METADATA } = AdobePass;\n\n// Begin Higher Order Component definition\nfunction connectPlayer(WrappedComponent) {\n class ESPNPlayer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n autoEmbedCountDown: this.props.initialAutoEmbedCountDown,\n deferPlayerInitialization: false, // if we have nothing to play yet\n deferInitialStreamSelect: false,\n initialized: false,\n initializedWithAuthZError: false,\n socialOpened: false,\n showFeedsSelector: false,\n feedsSelectorMessage: ''\n };\n this.onToggleAutoPlay = this.onToggleAutoPlay.bind(this);\n this.onContentLoaded = this.onContentLoaded.bind(this);\n this.onSocialOpened = this.onSocialOpened.bind(this);\n this.onSocialClosed = this.onSocialClosed.bind(this);\n this.onProgramChange = this.onProgramChange.bind(this);\n this.onPlaybackError = this.onPlaybackError.bind(this);\n this.onDrmError = this.onDrmError.bind(this);\n this.onBAMAuthrizeUser = this.onBAMAuthrizeUser.bind(this);\n this.onBAMFeedChange = this.onBAMFeedChange.bind(this);\n this.onBAMSettingsChanged = this.onBAMSettingsChanged.bind(this);\n this.onBAMMediaLoaded = this.onBAMMediaLoaded.bind(this);\n this.onBAMPlaybackError = this.onBAMPlaybackError.bind(this);\n this.onFeedClick = this.onFeedClick.bind(this);\n this.hasUserFeedSwitchedStream = this.hasUserFeedSwitchedStream.bind(this);\n this.playerReady = this.playerReady.bind(this);\n this.initializePlayer = this.initializePlayer.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.unregisterEvents = this.unregisterEvents.bind(this);\n this.registerEvents = this.registerEvents.bind(this);\n this.startAutoEmbedTimer = this.startAutoEmbedTimer.bind(this);\n this.unembedPlayer = this.unembedPlayer.bind(this);\n this.embedPlayer = this.embedPlayer.bind(this);\n this.throwError = this.throwError.bind(this);\n this.newRelicTrackingOnPlayer = this.newRelicTrackingOnPlayer.bind(this);\n this.onFeedCloseModal = this.onFeedCloseModal.bind(this);\n // reference to the BrightCove player\n this.player = null;\n // is the component mounted?\n this._isMounted = false;\n // unmounting if we detect a route chage\n this._isUnMounting = false;\n // hold a reference to the timer to clear later\n this._autoEmbedTimer = null;\n this._isAuthorizing = false;\n }\n\n componentDidMount() {\n this._isMounted = true;\n this.startAutoEmbedTimer();\n /**\n Initialize the player on mount if:\n 1 - It's the player page\n 2 - The player has already been primed\n 3 - It's not a mobile device\n */\n if (\n (this.props.playerPlacement === PlayerPlacement.PLAYER) ||\n globalVideoElement.primed ||\n !this.props.isMobile\n ) {\n this.initializePlayer();\n }\n\n // comment out newrelic tracking until tracking is required for new stream picker\n // const { isNewrelicTrackingOn, selectedStream } = this.props;\n // if (isNewrelicTrackingOn && selectedStream.length) {\n // // send newrelic track for selected stream that is presented to the users\n // this.newRelicTrackingOnPlayer(selectedStream);\n // }\n }\n\n componentWillReceiveProps(nextProps) {\n if (this._isMounted === false || this._isUnMounting === true) {\n return;\n }\n\n const {\n lang,\n country,\n dispatch,\n selectedContent,\n selectedStream,\n playingStream,\n userAuth,\n onDeckContent,\n routing: { locationBeforeTransitions }\n } = this.props;\n const {\n selectedContent: nextSelectedContent,\n playingStream: nextPlayingStream,\n userAuth: nextUserAuth,\n onDeckContent: nextOnDeckContent,\n pickerStreams: nextPickerStreams,\n recommendMobileWeb: nextRecommendMobileWeb,\n routing: { locationBeforeTransitions: nextLocationBeforeTransitions },\n lastFeeds: nextLastFeeds,\n preauthorizedResources: nextPreauthorizedResources\n } = nextProps;\n\n // if the user is no longer authd for the playing content, unembed the player\n if (\n shallowCheckAuthentication(playingStream, userAuth, false) &&\n !shallowCheckAuthentication(nextPlayingStream, nextUserAuth, false)\n ) {\n this.unembedPlayer();\n return;\n }\n\n if (this.state.feedsSelectorMessage && selectedContent.id === nextSelectedContent.id) {\n return;\n }\n\n // player initialization is deferred if there's no selected content, and page api has not yet returned\n if (\n this.state.deferPlayerInitialization &&\n nextProps.scoringComplete &&\n !isEmpty(nextProps.initialEmbedContent)\n ) {\n this.setState({ deferPlayerInitialization: false });\n this.initializePlayer(nextProps);\n }\n\n /*\n * The following logic handles:\n * 1) Verifying a valid authentication state (i.e. 'mvpd')\n * 2) Checking if the call to playerReady() updated the state to deferInitialStreamSelect as a truthy value.\n * Occurs when the page has not fully loaded and will be caught in componentDidMount()\n * 3) If deferInitialStreamSelect is `false`, the logic verifies that the `selectedContent`\n * and `selectedStream` are both empty or both non-empty or the boolean initializedWithAuthZError\n * is `true` and the `selectedStream` is empty then it will proceed to select the preferred stream\n * 4) If content is 'vod', user can play\n */\n const isVod = nextSelectedContent.type === 'vod';\n if (\n (authStateKnown(nextUserAuth) || isVod || !nextUserAuth.length) &&\n (\n this.state.deferInitialStreamSelect ||\n (\n (\n (isEmpty(selectedContent) && isEmpty(selectedStream)) ||\n (!isEmpty(selectedContent) && !isEmpty(selectedStream)) ||\n (isEmpty(selectedStream) && (this.state.initializedWithAuthZError ||\n isVod || !nextUserAuth.length))\n ) &&\n selectedContent.id !== nextSelectedContent.id // this is for the subsequent content change\n )\n )\n ) {\n if (this.state.deferInitialStreamSelect) {\n this.setState({ deferInitialStreamSelect: false });\n }\n\n /* Verifies that a user can play the selected content by:\n * 1) Ensuring the `selectedContent` status is not `upcoming`\n * 2) Ensuring that there is no program change in progress via `onProgramChange`\n */\n if (canPlayContent(nextSelectedContent, nextUserAuth, false) && !this.state.programChanging) {\n const { links: { picker } = {}, isOnTile } = nextSelectedContent;\n const { query: { eventCalendarId } = {}, pathname } = nextLocationBeforeTransitions;\n const authRes = { userAuth: nextUserAuth, preauthorizedResources: nextPreauthorizedResources };\n\n if (isOnTile && playingStream && pathname.indexOf('/player') === -1) {\n /**\n * when user is logged in and clicks on the tiles, we dispatch contentSelect in playable.js so\n * that the new selected content will be updated and passed to stream picker; If it is on hero\n * component and content is playing, we don't want to trigger new stream select.\n */\n return;\n }\n\n if (eventCalendarId && picker) {\n openStreamPicker({\n lang,\n country,\n dispatch,\n authRes,\n pickerStreams: nextPickerStreams,\n content: nextSelectedContent,\n route: { locationBeforeTransitions: nextLocationBeforeTransitions }\n });\n } else {\n selectStreamForAuthUsers({\n dispatch,\n authRes,\n pickerStreams: nextPickerStreams,\n content: nextSelectedContent,\n feeds: nextLastFeeds,\n locationBeforeTransitions: nextLocationBeforeTransitions\n });\n }\n if (this.state.feedsSelectorMessage) {\n this.setState({ feedsSelectorMessage: '' });\n }\n return;\n }\n }\n\n // if the route has changed, anticipate the component unmounting\n if (locationBeforeTransitions.pathname !==\n nextLocationBeforeTransitions.pathname) {\n this._isUnMounting = true;\n this.unembedPlayer();\n return;\n }\n\n if (isEmpty(nextOnDeckContent) || (onDeckContent.id === nextOnDeckContent.id) ||\n nextProps.player.embedding === true || this._isAuthorizing === true) {\n return;\n }\n\n // NOTE: The logic below handles 1) embedding the player and commencing playback 2) error scenarios\n // Based on the selectedStream AuthType (BAM, MVPD/TVE, ISP) it will execute embedPlayer() with the\n // correct properties\n if (nextRecommendMobileWeb) {\n this.throwError(\n nextOnDeckContent,\n PlayerError.UNSUPPORTED,\n 'player.error.recommendMobileWeb',\n nextProps\n );\n } else if (nextOnDeckContent.sourceId === 'SHORTSTOPLIVE') {\n this.embedPlayer(nextProps, nextOnDeckContent, { token: 'xbox_watch', tokenType: 'DEVICE' });\n } else if (nextProps.bypassToken) {\n this.embedPlayer(nextProps, nextOnDeckContent, {\n token: decodeURIComponent(nextProps.bypassToken),\n tokenType: 'GATEKEEPER',\n encoded: true\n });\n } else if (!nextOnDeckContent.authTypes || nextOnDeckContent.authTypes.length === 0) {\n this.embedPlayer(nextProps, nextOnDeckContent);\n } else if (streamHasAuthType(nextOnDeckContent, AuthTypes.OPEN)) {\n this.embedPlayer(nextProps, nextOnDeckContent, { token: 'open', tokenType: 'OPEN' });\n } else if (streamHasAuthType(nextOnDeckContent, AuthTypes.ISP) && nextProps.userAuth.indexOf(AuthTypes.ISP) !== -1) {\n this.embedPlayer(nextProps, nextOnDeckContent, { token: 'online', tokenType: 'DEVICE' });\n } else if (streamHasAuthType(nextOnDeckContent, AuthTypes.MVPD)) {\n const adobePassInfo = nextOnDeckContent.adobePassInfo;\n if (adobePassInfo) {\n const { messages, intl: { formatMessage }, preauthorizedResources } = nextProps;\n this._isAuthorizing = true;\n dispatch(createAndPerformStartAuthorizationAction(nextOnDeckContent.adobeRSS))\n .then((authorization) => {\n if (locationBeforeTransitions && locationBeforeTransitions.query &&\n locationBeforeTransitions.query.prePlayPicker) {\n return Promise.reject(new Error(formatMessage(messages['player.error.unexpectedMessage'])));\n }\n if (authorization.resourceId && authorization.token) {\n // in case preauthz rsource info is incorrect, add the network to the list when\n // the playback is successful\n const { adobeRSS = '' } = nextOnDeckContent;\n const result = /<title>([^<]+)<\\/title>/.exec(adobeRSS);\n if (result && result[1]) {\n const adobeResource = result[1];\n if (adobeResource) {\n if (preauthorizedResources && preauthorizedResources.indexOf(adobeResource) === -1) {\n const resources = preauthorizedResources.concat(adobeResource);\n PreAuthZ.setResources(resources, 1);\n dispatch(createCompletePreauthCheckAction(resources));\n }\n }\n }\n return dispatch(createAsyncGetMetadataAction(METADATA.UPSTREAM_USERID))\n .then(accountId => { // eslint-disable-line arrow-body-style\n // if accountId doesn't exist, use a random number to avoid stream limiting everyone\n return this.embedPlayer(nextProps, nextOnDeckContent, authorization, {\n mvpd: adobePassInfo.abbreviation,\n accountId\n });\n });\n }\n return Promise.reject(new Error(formatMessage(messages['player.error.unexpectedMessage'])));\n })\n .catch(({ message }) => {\n const { playerPlacement, pickerStreams = [] } = this.props;\n // On non-player page (i.e. hero), don't embed the player with an error\n // If the user is on a hero player scenario and selects an additional feed\n // from the feed selector, ensure error handling is in place only after\n // the user has initiated the click event\n if (\n !this.state.initializedWithAuthZError &&\n playerPlacement !== PlayerPlacement.PLAYER &&\n !this.hasUserFeedSwitchedStream(nextOnDeckContent)\n ) {\n if (pickerStreams.length) {\n this.unregisterEvents();\n this.unembedPlayer();\n // TODO: localize message\n this.setState({\n showFeedsSelector: true,\n feedsSelectorMessage: message,\n initializedWithAuthZError: true\n });\n } else {\n // if the user clicks on the event, don't do this logic again\n this.setState({\n initializedWithAuthZError: true\n });\n dispatch(contentUnSelect());\n dispatch(streamUnSelect());\n }\n return;\n }\n\n dispatch(createAuthorizationErrorAction(message));\n dispatch(createStreamPlayingAction({ stream: nextOnDeckContent, error: true }));\n\n this.throwError(\n nextOnDeckContent,\n PlayerError.AUTHORIZATION,\n message && message !== 'null' ? message : 'player.error.defaultMessage',\n nextProps\n );\n // Fixes undhandled promise rejection error in console\n return null; // eslint-disable-line consistent-return\n }).finally(() => {\n this._isAuthorizing = false;\n });\n }\n } else if (streamHasAuthType(nextOnDeckContent, AuthTypes.BAM)) {\n // TODO: DTC - need authorization\n this.embedPlayer(nextProps, nextOnDeckContent);\n }\n }\n\n shouldComponentUpdate() {\n return (this._isMounted === true && this._isUnMounting === false);\n }\n\n componentWillUnmount() {\n const { dispatch } = this.props;\n this._isMounted = false;\n clearTimeout(this._autoEmbedTimer);\n this.unregisterEvents();\n this.unembedPlayer(true);\n dispatch(pickerStreamsUnSelect());\n }\n\n onToggleAutoPlay(event, { autoplay = true }) {\n this.props.dispatch(createAutoplayUpdatedAction(autoplay));\n }\n\n onContentLoaded(event, { id, clipId, mediainfo = {} } = {}) {\n if (event.type === PlayerEvents.ESPN_CONTENT_LOADED) {\n // `clipId` is for domestic and `sourceId=intlvod` is for intl VOD\n if (clipId || mediainfo.sourceId === 'intlvod') {\n this.props.dispatch(createContinuousPlayAction(clipId || id));\n } else {\n const { dispatch, selectedStream } = this.props;\n if (selectedStream.feedSwitch) {\n dispatch(createFeedSelectAction(id));\n delete selectedStream.feedSwitch;\n }\n }\n // update nielsen tracking info with the new content\n this.videoPlayer.getPlayer(WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE).analytics.configure({\n adobeDCR: getAdobeDCRConfig(this.props.nielsenTrackingData, {}, this.props.env, 'brightcove')\n });\n }\n }\n\n onSocialOpened() {\n this.setState({ socialOpened: true });\n if (this.props.onSocialOpened) {\n this.props.onSocialOpened();\n }\n }\n\n onSocialClosed() {\n this.setState({ socialOpened: false });\n if (this.props.onSocialClosed) {\n this.props.onSocialClosed();\n }\n }\n\n onCaptionOpened() {\n this.setState({ captionOpened: true });\n if (this.props.onCaptionOpened) {\n this.props.onCaptionOpened();\n }\n }\n\n onCaptionClosed() {\n this.setState({ captionOpened: false });\n if (this.props.onCaptionClosed) {\n this.props.onCaptionClosed();\n }\n }\n\n onBAMAuthrizeUser(event) { // eslint-disable-line\n const { success } = event;\n if (!success) {\n console.error('onBAMAuthrizeUser', event);\n const { dispatch, selectedContent, selectedStream, oneIdToken } = this.props;\n // when there is a token and still trigger an auth error, consider it's token expiration\n if (oneIdToken.id_token) {\n let retryCount = get(FORCE_REFRESH_TOKEN_RETRY_KEY);\n if (retryCount) {\n retryCount = parseInt(retryCount, 10);\n if (retryCount >= 1) {\n remove(FORCE_REFRESH_TOKEN_RETRY_KEY, retryCount);\n dispatch(logout());\n return;\n }\n retryCount += 1;\n } else {\n retryCount = 1;\n }\n set(FORCE_REFRESH_TOKEN_RETRY_KEY, retryCount);\n dispatch(forceTokenRefresh())\n .then(() => {\n window.location.reload();\n })\n .catch(err => {\n console.error(err);\n dispatch(logout());\n });\n return;\n }\n dispatch(createDTCPaywallAction({\n containerId: BAM_PAYWALL_IFRAME_ID,\n content: selectedContent,\n stream: selectedStream\n }));\n }\n }\n\n onBAMFeedChange(event) {\n console.log('onBAMFeedChange', event); // eslint-disable-line no-console\n const { body: { stream } = {} } = event;\n if (stream) {\n const { dispatch, selectedContent } = this.props;\n dispatch(contentSelect({ ...selectedContent, reEmbed: true }));\n // TODO: set this in the event when BAM player fires successful playback event\n if (streamHasAuthType(stream, AuthTypes.BAM)) {\n dispatch(createFeedSelectAction(stream.id));\n }\n stream.feedSwitch = true;\n dispatch(streamSelect(stream));\n }\n }\n\n onBAMSettingsChanged(event) { // eslint-disable-line\n console.log('onBAMSettingsChanged', event); // eslint-disable-line no-console\n // TODO: implement logic to reflect settings change from BAM player to BC player\n }\n\n onBAMMediaLoaded(event) { // eslint-disable-line\n console.log('onBAMMediaLoaded', event); // eslint-disable-line no-console\n }\n\n onBAMPlaybackError(event) { // eslint-disable-line\n console.log('onBAMPlaybackError', event); // eslint-disable-line no-console\n const { exception: { message = '' } = {} } = event;\n const { dispatch, selectedContent, selectedStream, pickerStreams = [] } = this.props;\n if (message === 'NotEntitled') {\n dispatch(createDTCPaywallAction({\n containerId: BAM_PAYWALL_IFRAME_ID,\n content: selectedContent,\n stream: selectedStream\n }));\n } else {\n const isBlackout = message.toLowerCase().indexOf('blackout') > -1;\n const isStreamConcurrencyViolation = message.toLowerCase().indexOf('streamconcurrencyviolation') > -1;\n let feedsSelectorMessage = message;\n\n if (isBlackout) {\n selectedStream.blackoutText = 'BLACKOUT';\n feedsSelectorMessage = 'This event has been blacked out in your area.';\n } else if (isStreamConcurrencyViolation) {\n feedsSelectorMessage = `You have reached your device limit for streaming.\n To continue viewing on this device, please stop streaming on another device.`;\n }\n\n const { streams = [] } = selectedContent;\n\n // on first embed, embed with an error\n if (streams.length > 1 || pickerStreams.length) {\n this.unregisterEvents();\n this.unembedPlayer();\n // TODO: localize message\n this.setState({\n showFeedsSelector: true,\n feedsSelectorMessage\n });\n }\n }\n }\n\n onProgramChange(event, { id, eventId, callback }) {\n if (event.type === PlayerEvents.ESPN_PROGRAM_CHANGE) {\n // guard against program change called with the same id\n const { playingStream = {} } = this.props;\n if (playingStream.id === id) {\n return;\n }\n this.setState({ programChanging: true });\n const query = eventId ? { eventId } : { id };\n this.props.dispatch(createProgramChangeAction(query, id)).then((trackingData) => {\n this.setState({ programChanging: false });\n // update nielsen tracking info with the new\n this.videoPlayer.getPlayer(WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE).analytics.configure({\n adobeDCR: getAdobeDCRConfig(\n trackingData || this.props.nielsenTrackingData,\n { startType: 'live-show-boundary' },\n this.props.env,\n 'brightcove'\n )\n });\n // this actually triggers the analytics call for program changes\n if (callback && typeof callback === 'function') {\n callback();\n }\n });\n }\n }\n\n onPlaybackError(event, error) {\n console.log('onPlaybackError', error); // eslint-disable-line no-console\n if (error) {\n let customErrorMessage;\n const { selectedStream, selectedContent: { streams = [] }, pickerStreams = [] } = this.props;\n if ((error.code === 'BLACKOUT' || error.message.indexOf('blacked out') > -1)) {\n selectedStream.blackoutText = 'BLACKOUT';\n }\n\n if (\n (error.code === 403 || (error.type && error.type.indexOf('authorization'))) &&\n typeof error.message === 'string' &&\n error.message.trim() === ''\n ) {\n customErrorMessage = 'You are not authorized to view this event';\n }\n\n // on first embed, embed with an error\n if (streams.length > 1 || pickerStreams.length) {\n this.unregisterEvents();\n this.unembedPlayer();\n this.setState({\n showFeedsSelector: true,\n feedsSelectorMessage: customErrorMessage || error.message\n });\n }\n }\n }\n\n onDrmError(event, error) {\n console.log('onDrmError', error); // eslint-disable-line no-console\n\n const { selectedStream, appName, hideNav, apiEnv, flags } = this.props;\n const isEditions = (appName === 'watcheditions' || appName === 'webapp') && hideNav;\n const appDrmSupport = flags[Flags.APP_DRM_SUPPORT];\n const appSupportsDrm = appDrmSupport !== null && appDrmSupport !== undefined;\n\n if (!isEditions || !selectedStream || !appSupportsDrm) {\n return;\n }\n\n // target url is:\n // watchespn-editions://x-callback-url/openBrowser?url=https://www.espn.com/watch/player?id=1d405c1b-481a-4804-9f21-4595a0073a72\n\n let url = `https://${window.location.host}/watch/player?id=${selectedStream.id}&roadblock=false`;\n if (apiEnv) {\n url = `${url}&apienv=${apiEnv}`;\n }\n const params = {\n url: encodeURIComponent(url)\n };\n\n let appLink = getAppLink('openBrowser', params, false);\n appLink = appLink.replace('sportscenter://', 'watchespn-editions://');\n\n window.location = appLink;\n }\n\n onFeedClick(feed) {\n const { dispatch, selectedContent } = this.props;\n const { streams = [] } = feed;\n let feedStream = feed;\n let feedContent = selectedContent;\n\n if (streams && streams.length) {\n feedStream = streams[0];\n feedContent = feed;\n }\n\n if (feedStream) {\n this.setState({\n feedsSelectorMessage: ''\n });\n\n dispatch(contentSelect({ ...feedContent, reEmbed: true }));\n dispatch(streamUnSelect());\n dispatch(closeModalMessage());\n feedStream.feedSwitch = true;\n dispatch(streamSelect(feedStream));\n }\n }\n\n onFeedCloseModal() {\n this.setState({ showFeedsSelector: false });\n }\n\n getDSSPlayerMutedOnAuthPlay(mutedQuery, authPlay) {\n if (authPlay === true || authPlay === 'true') {\n const { dssPlayerMuted } = this.props;\n let muted = dssPlayerMuted;\n if (mutedQuery !== undefined) {\n if (mutedQuery === false || mutedQuery === 'false') {\n muted = false;\n } else if (mutedQuery === true || mutedQuery === 'true') {\n muted = true;\n }\n }\n return muted;\n }\n return null;\n }\n\n /**\n * hasUserFeedSwitchedStream - Handles returning a boolean flag which determines\n if the\n * current stream has been triggered via a feedSwitch (i.e. click from feed selector dialog)\n *\n * @param {Object} currentStream - Stream object containing the feedSwitch property\n *\n * @return {Boolean}\n */\n hasUserFeedSwitchedStream(currentStream) { // eslint-disable-line class-methods-use-this\n return currentStream && currentStream.feedSwitch ? currentStream.feedSwitch : false;\n }\n\n // fire actions and set state to indicate the player is ready for embed\n playerReady(initialEmbedContent = null) {\n const {\n disableAuthPrompt,\n dispatch,\n placement,\n bucketId,\n bucketName,\n pageId,\n pageName,\n playerPlacement,\n userAuth,\n lastFeeds,\n routing: { locationBeforeTransitions }\n } = this.props;\n const { query = {}, pathname } = locationBeforeTransitions || {};\n const playerReadyAction = dispatch(\n createPlayerReadyAction(playerPlacement, initialEmbedContent)\n );\n\n const omnitureQuery = getOmnitureQuery(query);\n\n if (playerReadyAction.autoEmbed === true) {\n dispatch(contentSelect({\n ...initialEmbedContent,\n disableAuthPrompt,\n placement,\n bucketId,\n bucketName,\n pageId,\n pageName,\n ...omnitureQuery\n }));\n\n const { preauthorizedResources, pickerStreams } = this.props;\n const authRes = { userAuth, preauthorizedResources };\n const isVod = initialEmbedContent && initialEmbedContent.type === 'vod';\n\n if (authStateKnown(userAuth) || isVod || !userAuth.length) {\n if (canPlayContent(initialEmbedContent, userAuth, false)) {\n selectStreamForAuthUsers({\n dispatch,\n authRes,\n pickerStreams,\n content: initialEmbedContent,\n feeds: lastFeeds,\n locationBeforeTransitions\n });\n }\n } else {\n /**\n * when user is not authenticated. We don't want to trigger auth flow\n * for non-player pages\n */\n if (pathname.indexOf('/player') === -1 && initialEmbedContent.id === query.id) {\n dispatch(contentSelect(initialEmbedContent));\n }\n this.setState({ deferInitialStreamSelect: true });\n }\n }\n }\n\n async newRelicTrackingOnPlayer(stream) {\n const {\n env,\n device,\n newrelicInsertKey,\n newrelicAccountId,\n oneId\n } = this.props;\n const { id, content, streams } = stream;\n const param = {\n newrelicInsertKey,\n newrelicAccountId,\n trackingData: {\n env,\n device,\n eventId: content ? content.eventId : null,\n action: 'SelectedStreamOnPlayer',\n streams: id,\n streamCount: streams ? streams.length : 1,\n swid: oneId.swid,\n eventType: 'PlaybackFlow',\n devicePlatform: 'watchWeb'\n }\n };\n\n await newRelicTrackEvent(param);\n }\n\n // called on componentDidMount (if autoplay), handleClick, or componentWillReceiveProps for deferred initialization.\n // takes props as a parameter for when called from componentWillReceiveProps, which passes \"nextProps\" in\n initializePlayer(nextProps) {\n const props = nextProps || this.props;\n if (this.state.initialized === false) {\n if (this._isMounted === false) {\n return;\n }\n\n const {\n bootstrap: { bam },\n initialEmbedContent,\n scoringComplete,\n playerTech,\n routing: { locationBeforeTransitions }\n } = props;\n const { query = {} } = locationBeforeTransitions || {};\n\n // if there is no content yet (no selected event and page request hasn't completed),\n // defer player initialization to componentWillReceiveProps\n if ((!initialEmbedContent || isEmpty(initialEmbedContent)) || !scoringComplete) {\n this.setState({ deferPlayerInitialization: true });\n return;\n }\n\n this.videoPlayer = new WatchESPNWebPlayer({\n bamPlayerOptions: query[Flags.BAM_ENV] ? { ...bam, env: query[Flags.BAM_ENV] } : bam,\n brightcovePlayerOptions: {\n playerTech,\n optimizeLive: true,\n // Enables the Brightcove player to use the native HTML5 video player when set to true\n // The `native` value is passed via query parameter (playertech=native)\n native: (playerTech === 'native')\n }\n });\n this.playerReady(initialEmbedContent);\n this.setState({ initialized: true });\n }\n }\n\n handleClick(event) {\n event.preventDefault();\n globalVideoElement.prime();\n\n if (this.props.clickHandler) {\n this.props.clickHandler(event);\n }\n\n // only initialize player if it hasn't been already\n if (this.props.player.embedded === false) {\n this.initializePlayer(this.props);\n }\n }\n\n unregisterEvents() {\n if (!this.videoPlayer) {\n return;\n }\n // Brightcove Player Events\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_AUTOPLAY_TOGGLED, this.onToggleAutoPlay);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_PROGRAM_CHANGE, this.onProgramChange);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_CONTENT_LOADED, this.onContentLoaded);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_SOCIAL_OPENED, this.onSocialOpened);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_SOCIAL_CLOSED, this.onSocialClosed);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_CAPTION_OPENED, this.onCaptionOpened);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_CAPTION_CLOSED, this.onCaptionClosed);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_ERROR, this.onPlaybackError);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_DRM_ERROR, this.onDrmError);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.ESPN_ADS_AD_SKIPPED, trackEspnPlayerOnAdSkipped);\n\n // BAM Player Events\n this.videoPlayer.off(WatchESPNWebPlayer.Events.AUTHORIZE_USER, this.onBAMAuthrizeUser);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.FEED_CHANGE_REQUEST, this.onBAMFeedChange);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.SETTINGS_CHANGED, this.onBAMSettingsChanged);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.MEDIA_LOADED, this.onBAMMediaLoaded);\n this.videoPlayer.off(WatchESPNWebPlayer.Events.PLAYBACK_ERROR, this.onBAMPlaybackError);\n }\n\n registerEvents() {\n if (!this.videoPlayer) {\n return;\n }\n // Brightcove Player Events\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_AUTOPLAY_TOGGLED, this.onToggleAutoPlay);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_PROGRAM_CHANGE, this.onProgramChange);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_CONTENT_LOADED, this.onContentLoaded);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_SOCIAL_OPENED, this.onSocialOpened);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_SOCIAL_CLOSED, this.onSocialClosed);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_CAPTION_OPENED, this.onCaptionOpened);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_CAPTION_CLOSED, this.onCaptionClosed);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_ERROR, this.onPlaybackError);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_DRM_ERROR, this.onDrmError);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.ESPN_ADS_AD_SKIPPED, trackEspnPlayerOnAdSkipped);\n\n // BAM Player Events\n this.videoPlayer.on(WatchESPNWebPlayer.Events.AUTHORIZE_USER, this.onBAMAuthrizeUser);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.FEED_CHANGE_REQUEST, this.onBAMFeedChange);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.SETTINGS_CHANGED, this.onBAMSettingsChanged);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.MEDIA_LOADED, this.onBAMMediaLoaded);\n this.videoPlayer.on(WatchESPNWebPlayer.Events.PLAYBACK_ERROR, this.onBAMPlaybackError);\n }\n\n startAutoEmbedTimer() {\n if (this.state.autoEmbedCountDown <= 0) {\n this.props.dispatch(createAutoEmbedTimerCompleteAction());\n clearTimeout(this._autoEmbedTimer);\n return;\n }\n if (this._isMounted === true && this.state.autoEmbedCountDown > 0) {\n this.setState({ autoEmbedCountDown: this.state.autoEmbedCountDown - 1 });\n this._autoEmbedTimer = setTimeout(this.startAutoEmbedTimer, 1000);\n }\n }\n\n /**\n * Display an internationalized error message within the player.\n * Embeds with an error if not embedded, otherwise calls error on the player object.\n * @param {object} stream\n * @param {string} type\n * @param {string} messageKey\n * @param {object} props\n */\n throwError(stream, type = PlayerError.DEFAULT, messageArg, props = this.props) {\n const {\n messages,\n intl: { formatMessage },\n player,\n selectedContent,\n routing: { locationBeforeTransitions }\n } = props;\n const { query = {} } = locationBeforeTransitions || {};\n let message = messageArg;\n if (message.indexOf('player.error') === 0) {\n message = formatMessage(messages[message]);\n }\n\n const errorObj = {\n type,\n message\n };\n let { streams = [] } = selectedContent;\n // ensure to remove dupes, avoids FeedsSelector component from re-rendering duplicate streams\n streams = streams.length && uniqBy(streams, 'id');\n\n if (query.prePlayPicker && streams.length === 1) {\n streams.push({ ...streams[0], tier: 'primary', id: `${streams[0].id}1`, test: true });\n streams.push({ ...streams[0], tier: 'primary', id: `${streams[0].id}2`, test: true });\n streams.push({ ...streams[0], tier: 'secondary', id: `${streams[0].id}3`, test: true });\n }\n\n // on first embed, embed with an error\n if (streams.length > 1) {\n this.unregisterEvents();\n this.unembedPlayer();\n this.setState({\n showFeedsSelector: true,\n feedsSelectorMessage: message\n });\n } else if (player.embedded === false) {\n this.embedPlayer(props, stream, {}, {}, errorObj);\n } else {\n this.videoPlayer.error(errorObj);\n }\n }\n\n async unembedPlayer(destroy) {\n const { dispatch } = this.props;\n if (this.videoPlayer) {\n // removes flickering of previous thumbnail\n globalVideoElement.poster = '';\n try {\n if (destroy) {\n await this.videoPlayer.destroy();\n } else {\n await this.videoPlayer.delete();\n }\n } catch (err) {\n console.error(err);\n }\n }\n dispatch(createStreamPlayingAction({ stream: {} }));\n dispatch(createPlayerEmbeddedAction(false));\n }\n\n createSettingsMenuConfig(stream, props = this.props) {\n const {\n dispatch,\n isDomestic,\n provider,\n userAuth,\n messages,\n intl: { formatMessage }\n } = props;\n const menuItems = [];\n\n if (\n isDomestic &&\n streamHasAuthType(stream, AuthTypes.MVPD) &&\n userAuth.indexOf(AuthTypes.MVPD) > -1 &&\n provider.name\n ) {\n menuItems.push({\n label: formatMessage(messages['player.menu.logout'], { providerName: provider.name }),\n fn: () => {\n dispatch(createAndPerformLogoutAction(this.props.onDeckContent));\n }\n });\n }\n\n return {\n menuItems\n };\n }\n\n createLogoConfig(stream, props = this.props) {\n const {\n bootstrap: { player: { logos = {} } = {} },\n isDomestic,\n provider,\n routing: { locationBeforeTransitions },\n flags,\n location: { origin }\n } = props;\n const { pathname } = locationBeforeTransitions || {};\n let logo;\n if (!isDomestic || pathname === '/syndicated/player') { // syndicated player has its header to show logo\n return logo;\n }\n if (streamHasAuthType(stream, AuthTypes.MVPD) || streamHasAuthType(stream, AuthTypes.ISP)) {\n logo = {\n src: selectn('images.colorWithNegativeBackground.href', provider) ||\n selectn('images.logo.href', provider),\n href: selectn('links.web.href', provider)\n };\n } else if (streamHasAuthType(stream, AuthTypes.BAM)) {\n if (streamHasDTCPackage(stream, Entitlements.ESPN_PLUS_NHL)) {\n logo = logos[Entitlements.ESPN_PLUS_NHL];\n } else if (streamHasDTCPackage(stream, Entitlements.ESPN_PLUS_MLB)) {\n logo = logos[Entitlements.ESPN_PLUS_MLB];\n } else if (streamHasDTCPackage(stream, Entitlements.ESPN_PLUS)) {\n logo = logos[Entitlements.ESPN_PLUS];\n }\n }\n if (logo && logo.href && logo.href.indexOf('http') !== 0) {\n logo.href = `${addQueryToUrl(`${origin}${logo.href}`, flags)}`;\n }\n return logo;\n }\n\n createFeedsMenuConfig(stream, props = this.props) {\n const { feedsSelectorMessage } = this.state;\n const {\n messages,\n intl: { formatMessage },\n pickerStreams\n } = props;\n\n const feeds = (pickerStreams.length > 0) && pickerStreams.map(streamItem => {\n const streamData = { ...streamItem };\n if (Array.isArray(streamData.contents) && streamData.contents.length > 0) {\n streamData.contents.forEach(item => {\n const selected = (item && typeof item.id === 'string' && item.id === stream.id);\n\n item.selected = selected;\n item.playbackErrorMessage = selected && feedsSelectorMessage;\n });\n }\n\n return {\n ...streamData,\n fn: (feed) => {\n this.onFeedClick(feed);\n }\n };\n });\n\n const feedsMenu = pickerStreams.length > 0 && {\n title: formatMessage(messages['player.feeds.title']),\n feeds\n };\n return feedsMenu;\n }\n\n async embedPlayer(props = this.props, stream, authorization = {}, streamlimiter = {}, error = null, callback = () => {}) {\n // the playerContainer is the container in which we embed the player\n // (its DOM is not manipulated by the ESPNVideoPlayer)\n const { wrappedComponent: { refs: wrappedComponentRefs = {} } = {} } = this.refs || {};\n const { playerContainer } = wrappedComponentRefs;\n\n if (playerContainer) {\n this.setState({\n showFeedsSelector: false,\n feedsSelectorMessage: ''\n });\n\n const {\n apiEnv,\n env,\n lang,\n nielsenTrackingData,\n comscoreTrackingData,\n dispatch,\n isMobile,\n device,\n provider,\n isDomestic,\n edition,\n autoPlay,\n intlApp,\n oneIdToken,\n passOneIdToken,\n selectedContent,\n userInitiated,\n location,\n routing: { locationBeforeTransitions },\n playbackMeta,\n prerollConfig,\n playerAdsConfig,\n userAuth,\n pickerStreams,\n shieldApiKey,\n playerOpts\n } = props;\n const { query = {} } = locationBeforeTransitions || {};\n const { query: locationQueryParams, host, protocol } = location || {};\n const auth = {\n ...authorization,\n partnerName: query[Flags.PARTNER]\n };\n const social = !intlApp ? {\n url: 'http://www.espn.com/watch?id={{ID}}'\n } : false;\n const playerTech = streamHasAuthType(stream, AuthTypes.BAM) ?\n WatchESPNWebPlayer.PlayerTech.BAM : WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE;\n let currentPlayerTech;\n\n if (this.videoPlayer) {\n const player = this.videoPlayer.getPlayer();\n if (player && player.tech === WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE) {\n currentPlayerTech = WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE;\n } else if (player && player.tech === WatchESPNWebPlayer.PlayerTech.BAM) {\n currentPlayerTech = WatchESPNWebPlayer.PlayerTech.BAM;\n }\n }\n\n try {\n if (currentPlayerTech === WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE) {\n // always destroy Brightcove player\n await this.videoPlayer.delete();\n } else if (\n currentPlayerTech === WatchESPNWebPlayer.PlayerTech.BAM &&\n playerTech === WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE\n ) {\n // once BAM player is created, let's not destroy it but just deactivate\n // await this.videoPlayer.deactivate();\n await this.videoPlayer.delete();\n }\n } catch (err) {\n console.error(err);\n }\n\n // create `logo`\n const logo = this.createLogoConfig(stream, props);\n // create `settingsMenu`\n const settingsMenu = this.createSettingsMenuConfig(stream, props);\n // create `feedsMenu`\n const feedsMenu = this.createFeedsMenuConfig(stream, props);\n\n const opts = getPlayerOptions({\n apiEnv,\n stream,\n authorization: auth,\n streamlimiter,\n nielsenTrackingData,\n comscoreTrackingData,\n isMobile,\n device,\n error,\n env,\n lang,\n provider,\n isDomestic,\n social,\n userInitiated,\n logo,\n settingsMenu,\n feedsMenu,\n playbackMeta,\n prerollConfig,\n adsConfig: playerAdsConfig,\n edition,\n userAuth,\n pickerStreams,\n shieldApiKey,\n playerOpts\n });\n console.log('ESPN PLAYER FEEDS MENU:', feedsMenu); // eslint-disable-line\n console.log('ESPN PLAYER OPTIONS:', opts); // eslint-disable-line\n\n // `autoPlay` flag only applies to the initial playback.\n const autoplay = autoPlay || !!globalVideoElement.primed;\n const isBamPlayer = playerTech === WatchESPNWebPlayer.PlayerTech.BAM;\n const isBrightCovePlayer = playerTech === WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE;\n\n dispatch(createPlayerEmbeddingAction(true));\n\n if (isBrightCovePlayer) {\n globalVideoElement.poster = stream.content.imageHref;\n globalVideoElement.className = 'vjs-tech';\n }\n\n const elementId = isBrightCovePlayer ? 'watchespn-player' : 'watchespn-bam-player';\n let wrapperEl;\n\n if (\n currentPlayerTech !== WatchESPNWebPlayer.PlayerTech.BAM ||\n playerTech !== WatchESPNWebPlayer.PlayerTech.BAM\n ) {\n // create a wrapper element so the video player doesn't manipulate the DOM that is registered with React\n wrapperEl = document.createElement('div');\n wrapperEl.setAttribute('data-vjs-player', '');\n wrapperEl.id = elementId;\n wrapperEl.style.display = 'none'; // to avoid FOUC\n if (playerTech === WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE) {\n wrapperEl.appendChild(globalVideoElement);\n }\n\n playerContainer.appendChild(wrapperEl);\n wrapperEl.style.display = 'block';\n }\n\n let playerOptions = {\n playerTech,\n container: isBamPlayer ? `#${elementId}` : globalVideoElement\n };\n\n if (isBamPlayer) {\n // test stream url: `ml=https://qa-espn-edge.bamgrid.com/media/052c5f81-4a57-4b9b-8d51-080c3730fabf/scenarios/{scenario}`\n const streamObj = {\n id: stream.id\n };\n // Derive the root url from react-router; default to production base url\n const shareBaseUrl = (host && protocol) ? `${protocol}//${host}/watch/player` : 'http://www.espn.com/watch/player';\n streamObj.shareUrl = `${shareBaseUrl}?id=${stream.id}`;\n\n if (query.ml) { // test param\n streamObj.mediaLocation = query.ml;\n }\n\n // Handles query parameter `t` for video startTime\n if (query.t) {\n streamObj.startTime = query.t;\n } else if (locationQueryParams.t) {\n streamObj.startTime = locationQueryParams.t;\n delete locationQueryParams.t; // Prevent `t` from showing up in subsequent media loads\n }\n\n const muted = this.getDSSPlayerMutedOnAuthPlay(query[Flags.MUTED], autoPlay);\n const usPrivacyCookie = cookie.get('usprivacy') || '';\n const { activeAdProvider, dssAdsConfig } = playerAdsConfig;\n\n let customProps = {\n autoPlay: autoplay,\n muted,\n analytics: opts.analytics,\n poster: stream.content.imageHref,\n logo,\n hudson: true,\n adsConfig: {\n activeAdProvider,\n cmsid: dssAdsConfig ? dssAdsConfig.cmsid : '',\n networkCode: dssAdsConfig ? dssAdsConfig.networkCode : ''\n }\n };\n\n if (usPrivacyCookie) {\n customProps.adsConfig.usPrivacy = usPrivacyCookie;\n customProps.adsConfig.dUsPrivacy = usPrivacyCookie;\n customProps.adsConfig.rdp = usPrivacyCookie === '1YYY' ? '1' : '0';\n }\n\n if (stream.feedSwitch && currentPlayerTech === WatchESPNWebPlayer.PlayerTech.BAM) {\n customProps = {\n ...customProps,\n playlistItem: stream\n };\n } else {\n customProps = {\n ...customProps,\n pageApiMeta: {\n ...selectedContent,\n ...{ pickerStreams }\n }\n };\n }\n\n playerOptions = {\n ...playerOptions,\n ...getBamAuthConfig(oneIdToken, passOneIdToken, userAuth),\n language: {\n ui: 'en',\n audio: 'en'\n },\n playlist: [streamObj],\n autoPlay: autoplay,\n customProps\n };\n } else if (isBrightCovePlayer) {\n playerOptions = {\n ...playerOptions,\n options: { ...opts, autoplay }\n };\n }\n\n try {\n if (\n stream.feedSwitch &&\n currentPlayerTech === WatchESPNWebPlayer.PlayerTech.BAM &&\n playerTech === WatchESPNWebPlayer.PlayerTech.BAM\n ) {\n delete stream.feedSwitch;\n await this.videoPlayer.changeFeed(playerOptions);\n } else {\n await this.videoPlayer.create(playerOptions);\n }\n } catch (err) {\n console.error(err);\n }\n\n dispatch(createPlayerEmbeddingAction(false));\n if (this._isMounted === false || this._isUnMounting === true) {\n this.videoPlayer.delete();\n return;\n }\n\n if (wrapperEl) {\n wrapperEl.style.display = 'block';\n }\n this.unregisterEvents();\n this.registerEvents();\n\n dispatch(createPlayerEmbeddedAction(true));\n dispatch(createStreamPlayingAction({ stream, error: !!error }));\n callback();\n // comment out newrelic tracking until tracking is required for new stream picker\n // if (isNewrelicTrackingOn &&\n // (currentPlayerTech === WatchESPNWebPlayer.PlayerTech.BAM ||\n // playerTech === WatchESPNWebPlayer.PlayerTech.BAM)) {\n // // send newrelic track for selected stream that is presented to the users\n // await this.newRelicTrackingOnPlayer(stream);\n // }\n } else {\n console.error(`Cannot embed player. ${WrappedComponent.displayName} is missing \"playerElement\" ref`); // eslint-disable-line\n }\n }\n\n render() {\n const { showFeedsSelector } = this.state;\n // const showFeedsSelector = true;\n const { selectedStream, userAuth } = this.props;\n let feedsMenu;\n if (showFeedsSelector) {\n feedsMenu = this.createFeedsMenuConfig(selectedStream, this.props, true);\n }\n return (\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n <WrappedComponent\n ref=\"wrappedComponent\"\n {...this.props}\n {...this.state}\n clickHandler={this.handleClick}\n />\n {showFeedsSelector && feedsMenu && (\n <FeedsSelector\n title={feedsMenu.title}\n feeds={feedsMenu.feeds}\n userAuth={userAuth}\n onClick={this.onFeedClick}\n onClose={this.onFeedCloseModal}\n />\n )}\n </div>\n );\n }\n }\n\n ESPNPlayer.propTypes = {\n bootstrap: WatchPropTypes.bootstrap,\n apiEnv: PropTypes.string,\n clickHandler: PropTypes.func,\n onSocialOpened: PropTypes.func,\n onSocialClosed: PropTypes.func,\n onCaptionOpened: PropTypes.func,\n onCaptionClosed: PropTypes.func,\n disableAuthPrompt: PropTypes.bool, // ability to turn off auth prompt when selecting content\n dispatch: PropTypes.func,\n env: PropTypes.string,\n lang: PropTypes.string,\n initialAutoEmbedCountDown: PropTypes.number, // time until autoplay\n initialEmbedContent: PropTypes.object, // from selector, prefer selectedContent, fallback to hero,\n intl: intlShape.isRequired,\n isMobile: PropTypes.bool, // eslint-disable-line react/no-unused-prop-types\n messages: PropTypes.object.isRequired,\n nielsenTrackingData: PropTypes.object, // from selector\n comscoreTrackingData: PropTypes.object, // from selector\n onDeckContent: PropTypes.object, // from selector, the content to be played next ()\n playerPlacement: PropTypes.string, // placement of the actual player\n placement: PropTypes.string, // original placement of selected content for nielsen tracking\n bucketId: PropTypes.number,\n bucketName: PropTypes.string,\n pageId: PropTypes.string,\n pageName: PropTypes.string,\n player: PropTypes.object, // from selector, player state\n playerTech: PropTypes.string,\n autoPlay: PropTypes.bool,\n dssPlayerMuted: PropTypes.bool,\n selectedContent: PropTypes.object, // from selector, currently selected content\n selectedStream: PropTypes.object, // from selector, currently selected stream\n playingStream: PropTypes.object, // from selector, currently playing stream\n provider: PropTypes.object, // from selector, provider to pass to Conviva\n routing: PropTypes.object, // mapped from react-redux-router\n scoringComplete: PropTypes.bool, // from selector, indicates scoring status\n userAuth: PropTypes.array, // from selector\n preauthorizedResources: PropTypes.array,\n userInitiated: PropTypes.bool, // from router location \"state\", used for analytics\n oneIdToken: PropTypes.object,\n bypassToken: PropTypes.string, // eslint-disable-line react/no-unused-prop-types\n isDomestic: PropTypes.bool,\n intlApp: PropTypes.bool,\n recommendMobileWeb: PropTypes.bool, // eslint-disable-line react/no-unused-prop-types\n flags: PropTypes.object,\n location: PropTypes.object,\n playbackMeta: PropTypes.object,\n prerollConfig: PropTypes.object,\n playerAdsConfig: PropTypes.object,\n device: PropTypes.string,\n edition: PropTypes.string,\n pickerStreams: PropTypes.array,\n country: PropTypes.string,\n lastFeeds: PropTypes.object,\n appName: PropTypes.string,\n hideNav: PropTypes.bool,\n shieldApiKey: PropTypes.string,\n playerOpts: PropTypes.object\n };\n\n ESPNPlayer.defaultProps = {\n disableAuthPrompt: true,\n initialAutoEmbedCountDown: 2,\n initialEmbedContent: {},\n recommendMobileWeb: false,\n userAuth: [],\n oneIdToken: {}\n };\n\n const mapStateToProps = (state) => {\n const {\n app: { isMobile = false, env, lang, country, device, openPicker, appName },\n player,\n routing\n } = state;\n const page = pageSelector(state);\n const edition = editionSelector(state).edition;\n const shieldApiKey = shieldApiKeySelector(state, edition);\n const playerOpts = playerOptionsSelector(state);\n\n return {\n bootstrap: bootstrapSelector(state),\n apiEnv: apiEnvSelector(state),\n env,\n lang,\n country,\n initialEmbedContent: initialEmbedSelector(state),\n isMobile,\n device,\n openPicker,\n nielsenTrackingData: nielsenTrackingSelector(state),\n comscoreTrackingData: comscoreTrackingSelector(state),\n onDeckContent: onDeckContentSelector(state),\n player,\n playerTech: playerTechSelector(state),\n autoPlay: autoPlaySelector(state),\n dssPlayerMuted: dssPlayerMutedSelector(state),\n selectedContent: selectedContentSelector(state),\n selectedStream: selectedStreamSelector(state),\n playingStream: playingStreamSelector(state),\n provider: providerSelector(state),\n routing,\n scoringComplete: page.scored,\n userAuth: userAuthSelector(state),\n preauthorizedResources: preauthorizedResourcesSelector(state),\n oneIdToken: oneIdTokenSelector(state),\n passOneIdToken: passOneIdTokenSelector(state),\n bypassToken: bypassTokenSelector(state),\n isDomestic: isDomesticSelector(state),\n edition,\n intlApp: intlAppSelector(state),\n recommendMobileWeb: recommendMobileWebSelector(state),\n flags: persistentFlagsSelector(state),\n location: locationSelector(state),\n playbackMeta: playbackMetaSelector(state),\n prerollConfig: prerollConfigSelector(state),\n lastFeeds: lastFeedsSelector(state),\n playerAdsConfig: playerAdsConfigSelector(state),\n oneId: state.oneId,\n newrelicInsertKey: state.app.newrelicInsertKey,\n newrelicAccountId: state.app.newrelicAccountId,\n isNewrelicTrackingOn: newRelicTrackingSelector(state),\n pickerStreams: pickerStreamsSelector(state),\n appName,\n hideNav: hideNavSelector(state),\n shieldApiKey,\n playerOpts\n };\n };\n\n return connect(\n mapStateToProps,\n null,\n null,\n { withRef: true }\n )(injectIntl(hoistStatics(ESPNPlayer, WrappedComponent), { withRef: true }));\n}\n\nexport default connectPlayer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/connectPlayer.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport uniq from 'lodash/uniq';\nimport { BAM_PAYWALL_IFRAME_ID } from 'constants';\nimport { AuthTypes } from 'enums';\nimport WatchPropTypes from 'common/PropTypes';\nimport {\n createSelectProviderAction,\n createAndPerformStartAuthenticationAction,\n createDisplayProviderDialogAction,\n createAndPerformLogoutAction,\n createDTCPaywallAction\n} from 'common/actions/authenticationActions';\nimport { updateRoute } from 'common/actions/appActions';\nimport { newRelicTrackEvent } from 'lib/api/newRelicApi';\nimport { isEmpty } from 'lib/util';\nimport {\n authStateKnown,\n canPlayContent,\n canPlayStream,\n streamHasAuthType\n} from 'lib/auth';\nimport {\n handleMultipleStreamAuthentication,\n handleSingleStreamAuthentication\n} from 'lib/streamPicker';\nimport {\n adobePassSelector,\n authenticationEnabledSelector,\n checkAuthenticationCompleteSelector,\n preauthorizedResourcesSelector,\n userAuthSelector,\n bamSubReadySelector\n} from 'common/selectors/authenticationSelectors';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport selectedStreamSelector from 'common/selectors/selectedStreamSelector';\nimport routingSelector from 'common/selectors/routingSelector';\n// import { newRelicTrackingSelector } from 'common/selectors/appSelector';\nimport pickerStreamsSelector from 'common/selectors/pickerStreamsSelector';\nimport { oneIdTokenSelector } from 'common/selectors/oneIdSelector';\n\nexport default function authenticationAware(options = {}) {\n /**\n * Currently options is not being passed from authenticationAware caller.\n * createDisplayProviderDialogAction is just assigned to nonAuthedActionCreator\n * We don't need to do the following assignment if we remove options arg\n */\n const { nonAuthedActionCreator = createDisplayProviderDialogAction } = options;\n\n return function wrap(WrappedComponent) {\n class AuthenticationAware extends Component {\n constructor(props) {\n super(props);\n this.providerSelect = this.providerSelect.bind(this);\n this.adobePassLogout = this.adobePassLogout.bind(this);\n this.newRelicTrackingOnStreamAuth = this.newRelicTrackingOnStreamAuth.bind(this);\n this.newRelicTrackingOnSelectStream = this.newRelicTrackingOnSelectStream.bind(this);\n this.state = {\n isPaywallRendered: false\n };\n }\n\n componentWillReceiveProps({\n adobePass: nextAdobePass = {},\n authenticationEnabled,\n checkAuthenticationComplete,\n selectedContent: nextSelectedContent,\n selectedStream: nextSelectedStream,\n oneIdToken,\n userAuth,\n bamSubReady: nextBamSubReady\n }) {\n const {\n dispatch,\n adobePass: {\n checkAuthentication: { completeTime } = {}\n } = {},\n selectedContent,\n selectedStream,\n routing: { locationBeforeTransitions }\n } = this.props;\n const { query = {}, pathname } = locationBeforeTransitions || {};\n const { checkAuthentication: { completeTime: nextCompleteTime } = {} } = nextAdobePass;\n const { status } = nextSelectedContent;\n const isUpcoming = status === 'upcoming';\n\n if (isEmpty(nextSelectedContent)) {\n return;\n }\n\n const loginWithContentID = query.login_with_content_eventId || query.login_with_content_id;\n // logic for realoding page after OneID login triggered by Paywall(`LOGIN_REQUESTED`)\n // trigger paywall again and updateRoute if following condition is met after user is logged in\n if (loginWithContentID) {\n const authTypes = [AuthTypes.BAM];\n const packages = query.login_with_pkg && query.login_with_pkg.split(',');\n const streamPlaywableAfterLogin = canPlayStream({ authTypes, packages }, userAuth, false);\n const cannotPlay = isUpcoming || (authStateKnown(userAuth) && !streamPlaywableAfterLogin);\n\n if (cannotPlay || authStateKnown(userAuth) || (nextBamSubReady && !userAuth.length)) {\n if (!packages || !packages.length) {\n return;\n }\n\n // trigger paywall if it is upcoming event and if user\n // can't play the content after DSS sub check is complete\n if (!this.state.isPaywallRendered && (cannotPlay || (nextBamSubReady && !streamPlaywableAfterLogin))) {\n const contentId = query.login_with_content_eventId || query.login_with_content_id;\n const streamId = query.login_with_id || contentId;\n const stream = streamId && { id: streamId };\n /**\n * https://espnjira.disney.com/browse/WEWEB-2501\n * Fix background image missing in paywallConfig for unpaid E+ user on login\n * pass nextSelectedContent to paywall instead of just contentId,\n * so that DSS can get the background image from paywallConfig\n */\n dispatch(createDTCPaywallAction({\n containerId: BAM_PAYWALL_IFRAME_ID,\n content: nextSelectedContent,\n stream\n }));\n this.setState({\n isPaywallRendered: true\n });\n }\n // trigger route change: removing login params.\n const newQuery = { ...query };\n newQuery.login_with_content_eventId = undefined;\n newQuery.login_with_content_id = undefined;\n newQuery.login_with_id = undefined;\n newQuery.login_with_pkg = undefined;\n dispatch(updateRoute(newQuery));\n return;\n }\n }\n\n let checkAuthenticationStateComplete = completeTime !== nextCompleteTime;\n\n /**\n * ticket: https://jira.disney.com/browse/WEWEB-2745\n * When users right click open on upcoming content on a new tab, we need to check if oneId getGuest\n * event is completed (oneIdToken not undefined). We need to pass oneId token along with auth state to DSS so that\n * they can render the paywall without sign up button on the paywall if users are entitled\n * add isPaywallRendered state check to prevent paywall rendering more than one\n */\n\n if (isUpcoming && !this.state.isPaywallRendered) {\n if (oneIdToken || (checkAuthenticationStateComplete && !userAuth.length)) {\n checkAuthenticationStateComplete = true;\n this.setState({\n isPaywallRendered: true\n });\n } else {\n checkAuthenticationStateComplete = false;\n }\n }\n\n const newContentSelected = selectedContent !== nextSelectedContent;\n const newStreamSelected = (\n !newContentSelected &&\n (!isEmpty(nextSelectedStream) && selectedStream !== nextSelectedStream)\n );\n const chooseTVEAuth = query.auth === 'tve';\n const eventOnHero = query.eventCalendarId && pathname.indexOf('/player') === -1;\n // if check authentication completes and a piece of content was already selected,\n // or if check authentication has completed already and user clicked on content, perform authentication\n // add loginWithContentID check to prevent rendering authentication flow again\n // because of getting entitlement deplay from DSS\n const newContentClick = (\n // user clicked playable item(hero, tile, schedule link, etc), or eventCalendarId is passed on non-player page\n (!nextSelectedContent.disableAuthPrompt || chooseTVEAuth || eventOnHero) &&\n !loginWithContentID && !canPlayContent(nextSelectedContent, userAuth, false) &&\n (\n checkAuthenticationStateComplete ||\n (newContentSelected && checkAuthenticationComplete)\n )\n );\n const newStreamFeedSelect = (\n !canPlayStream(nextSelectedStream, userAuth, false) && // no streams are playable with user's auth state\n (newStreamSelected && checkAuthenticationComplete)\n );\n\n if (\n authenticationEnabled && // authentication is enabled\n (newContentClick || newStreamFeedSelect)\n ) {\n if (newStreamFeedSelect) {\n if (\n streamHasAuthType(nextSelectedStream, AuthTypes.MVPD) ||\n streamHasAuthType(nextSelectedStream, AuthTypes.ISP)\n ) { // TVE-only content\n dispatch(createAndPerformStartAuthenticationAction({\n content: nextSelectedContent,\n stream: nextSelectedStream\n }))\n .then((isAuthenticated) => {\n if (!isAuthenticated) {\n dispatch(nonAuthedActionCreator());\n }\n });\n } else if (streamHasAuthType(nextSelectedStream, AuthTypes.BAM)) {\n if (!this.state.isPaywallRendered) {\n dispatch(createDTCPaywallAction({\n containerId: BAM_PAYWALL_IFRAME_ID,\n content: nextSelectedContent,\n stream: nextSelectedStream\n }));\n }\n }\n\n return;\n }\n\n const { streams = [], links: { picker } = {} } = nextSelectedContent;\n if (!streams.length) {\n return;\n }\n\n // comment out newrelic tracking until tracking is required for new stream picker\n // const newRelicTrackFields = {\n // eventId,\n // userAuth: userAuth.length ? userAuth.join('|') : userAuth,\n // action: 'MultipleStreamAuth',\n // streams: streams.length ? streams.map(item => item.id).join('|') : '',\n // streamCount: streams.length\n // };\n\n const showPicker = picker !== undefined;\n /*\n * NOTE: Handles multiple streams scenario without `id` query parameter.\n * If the `id` query parameter is defined, we match by single stream\n */\n if (showPicker && !query.id) {\n const { preauthorizedResources, country, lang, pickerStreams } = this.props;\n const authRes = { userAuth, preauthorizedResources };\n handleMultipleStreamAuthentication({\n lang,\n country,\n nextSelectedContent,\n dispatch,\n showPicker,\n pickerStreams,\n authRes,\n locationBeforeTransitions\n });\n // newRelicTrackFields.action = 'MultipleStreamAuth';\n } else {\n let singleStream = streams;\n if (query.id && streams.length > 1) {\n singleStream = streams.filter(item => item.id === query.id);\n }\n const requiredAuths = uniq(singleStream.reduce((acc, { authTypes }) => (acc.concat(authTypes)), []));\n\n handleSingleStreamAuthentication({\n requiredAuths,\n nextSelectedContent,\n query,\n dispatch,\n stream: singleStream[0]\n });\n // newRelicTrackFields.action = 'SingleStreamAuth';\n }\n\n // comment out newrelic tracking until tracking is required for new stream picker\n // if (isNewrelicTrackingOn) {\n // this.newRelicTrackingOnStreamAuth(newRelicTrackFields);\n // }\n }\n }\n\n providerSelect(provider) {\n this.props.dispatch(createSelectProviderAction(provider));\n }\n\n adobePassLogout() {\n const { selectedStream, dispatch } = this.props;\n return dispatch(createAndPerformLogoutAction(selectedStream));\n }\n\n async newRelicTrackingOnStreamAuth(data) {\n const {\n env,\n device,\n newrelicInsertKey,\n newrelicAccountId,\n oneId\n } = this.props;\n\n const param = {\n newrelicInsertKey,\n newrelicAccountId,\n trackingData: {\n env,\n device,\n ...data,\n swid: oneId.swid,\n eventType: 'PlaybackFlow',\n devicePlatform: 'watchWeb'\n }\n };\n await newRelicTrackEvent(param);\n }\n\n // we pass down this method to the child component (BroadcastPicker) via props\n async newRelicTrackingOnSelectStream(stream) {\n const {\n env,\n device,\n newrelicInsertKey,\n newrelicAccountId,\n oneId\n } = this.props;\n const { id, content, streams } = stream;\n const param = {\n newrelicInsertKey,\n newrelicAccountId,\n trackingData: {\n env,\n device,\n eventId: content ? content.eventId : null,\n action: 'UserSelectedStream',\n streams: id,\n streamCount: streams ? streams.length : 1,\n swid: oneId.swid,\n eventType: 'PlaybackFlow',\n devicePlatform: 'watchWeb'\n }\n };\n await newRelicTrackEvent(param);\n }\n\n render() {\n const { isNewrelicTrackingOn } = this.props;\n const onSelectStreamTracking = isNewrelicTrackingOn ? this.newRelicTrackingOnSelectStream : null;\n return (\n <WrappedComponent\n {...this.props}\n providerSelect={this.providerSelect}\n adobePassLogout={this.adobePassLogout}\n onSelectStreamTracking={onSelectStreamTracking}\n />\n );\n }\n }\n\n AuthenticationAware.defaultProps = {\n selectedContent: {}\n };\n\n AuthenticationAware.propTypes = {\n adobePass: PropTypes.object,\n authenticationEnabled: PropTypes.bool,\n checkAuthenticationComplete: PropTypes.bool,\n dispatch: PropTypes.func,\n selectedContent: WatchPropTypes.content,\n selectedStream: WatchPropTypes.stream,\n routing: PropTypes.object,\n oneId: PropTypes.object,\n device: PropTypes.string,\n newrelicInsertKey: PropTypes.string,\n newrelicAccountId: PropTypes.string,\n env: PropTypes.string,\n isNewrelicTrackingOn: PropTypes.bool,\n preauthorizedResources: PropTypes.array,\n userAuth: PropTypes.array,\n lang: PropTypes.string,\n country: PropTypes.string,\n pickerStreams: PropTypes.array,\n bamSubReady: PropTypes.bool,\n oneIdToken: PropTypes.object\n };\n\n const mapStateToProps = (state) => {\n const {\n env,\n lang,\n country,\n device,\n newrelicInsertKey,\n newrelicAccountId\n } = state.app;\n return {\n env,\n lang,\n country,\n device,\n newrelicInsertKey,\n newrelicAccountId,\n adobePass: adobePassSelector(state),\n oneIdToken: oneIdTokenSelector(state),\n authenticationEnabled: authenticationEnabledSelector(state),\n checkAuthenticationComplete: checkAuthenticationCompleteSelector(state),\n selectedContent: selectedContentSelector(state),\n selectedStream: selectedStreamSelector(state),\n providerDialog: state.providerDialog,\n userAuth: userAuthSelector(state),\n routing: routingSelector(state),\n oneId: state.oneId,\n // isNewrelicTrackingOn: newRelicTrackingSelector(state),\n preauthorizedResources: preauthorizedResourcesSelector(state),\n pickerStreams: pickerStreamsSelector(state),\n bamSubReady: bamSubReadySelector(state)\n };\n };\n\n return connect(mapStateToProps)(AuthenticationAware);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/authenticationAware.js","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/assert/assert.js\n// module id = 225\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== 'production') {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/canDefineProperty.js\n// module id = 226\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactElementSymbol.js\n// module id = 227\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/getIteratorFn.js\n// module id = 228\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactPropTypeLocationNames.js\n// module id = 229\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMComponentFlags.js\n// module id = 230\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/accumulateInto.js\n// module id = 231\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/forEachAccumulated.js\n// module id = 232\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getTextContentAccessor.js\n// module id = 233\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/CallbackQueue.js\n// module id = 234\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactFeatureFlags.js\n// module id = 235\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/isTextInputElement.js\n// module id = 236\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ViewportMetrics.js\n// module id = 237\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar setInnerHTML = require('./setInnerHTML');\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/setTextContent.js\n// module id = 238\n// module chunks = 1","/**\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\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/focusNode.js\n// module id = 239\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/CSSProperty.js\n// module id = 240\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/DOMPropertyOperations.js\n// module id = 241\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMSelect.js\n// module id = 242\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactHostComponent = require('./ReactHostComponent');\n\nvar getNextDebugID = require('./getNextDebugID');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (process.env.NODE_ENV !== 'production') {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + 'it\\'s defined in.';\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\nmodule.exports = instantiateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/instantiateReactComponent.js\n// module id = 243\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactNodeTypes.js\n// module id = 244\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactEmptyComponent.js\n// module id = 245\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactHostComponent.js\n// module id = 246\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/traverseAllChildren.js\n// module id = 247\n// module chunks = 1","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty)\n // Strip regex characters so we can use it for regex\n .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n // Remove hasOwnProperty from the template to make it generic\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactComponentTreeHook.js\n// module id = 248\n// module chunks = 1","'use strict';\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 * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/EventListener.js\n// module id = 249\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactInputSelection.js\n// module id = 250\n// module chunks = 1","'use strict';\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 * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/getActiveElement.js\n// module id = 251\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMProperty = require('./DOMProperty');\nvar React = require('react/lib/React');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\nvar setInnerHTML = require('./setInnerHTML');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactMount.js\n// module id = 252\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getHostComponentFromComposite.js\n// module id = 253\n// module chunks = 1","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux/es/utils/warning.js\n// module id = 254\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = require('./Actions');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _createDOMHistory = require('./createDOMHistory');\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\nfunction isAbsolutePath(path) {\n return typeof path === 'string' && path.charAt(0) === '/';\n}\n\nfunction ensureSlash() {\n var path = _DOMUtils.getHashPath();\n\n if (isAbsolutePath(path)) return true;\n\n _DOMUtils.replaceHashPath('/' + path);\n\n return false;\n}\n\nfunction addQueryStringValueToPath(path, key, value) {\n return path + (path.indexOf('?') === -1 ? '?' : '&') + (key + '=' + value);\n}\n\nfunction stripQueryStringValueFromPath(path, key) {\n return path.replace(new RegExp('[?&]?' + key + '=[a-zA-Z0-9]+'), '');\n}\n\nfunction getQueryStringValueFromPath(path, key) {\n var match = path.match(new RegExp('\\\\?.*?\\\\b' + key + '=(.+?)\\\\b'));\n return match && match[1];\n}\n\nvar DefaultQueryKey = '_k';\n\nfunction createHashHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Hash history needs a DOM') : _invariant2['default'](false) : undefined;\n\n var queryKey = options.queryKey;\n\n if (queryKey === undefined || !!queryKey) queryKey = typeof queryKey === 'string' ? queryKey : DefaultQueryKey;\n\n function getCurrentLocation() {\n var path = _DOMUtils.getHashPath();\n\n var key = undefined,\n state = undefined;\n if (queryKey) {\n key = getQueryStringValueFromPath(path, queryKey);\n path = stripQueryStringValueFromPath(path, queryKey);\n\n if (key) {\n state = _DOMStateStorage.readState(key);\n } else {\n state = null;\n key = history.createKey();\n _DOMUtils.replaceHashPath(addQueryStringValueToPath(path, queryKey, key));\n }\n } else {\n key = state = null;\n }\n\n var location = _PathUtils.parsePath(path);\n\n return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n }\n\n function startHashChangeListener(_ref) {\n var transitionTo = _ref.transitionTo;\n\n function hashChangeListener() {\n if (!ensureSlash()) return; // Always make sure hashes are preceeded with a /.\n\n transitionTo(getCurrentLocation());\n }\n\n ensureSlash();\n _DOMUtils.addEventListener(window, 'hashchange', hashChangeListener);\n\n return function () {\n _DOMUtils.removeEventListener(window, 'hashchange', hashChangeListener);\n };\n }\n\n function finishTransition(location) {\n var basename = location.basename;\n var pathname = location.pathname;\n var search = location.search;\n var state = location.state;\n var action = location.action;\n var key = location.key;\n\n if (action === _Actions.POP) return; // Nothing to do.\n\n var path = (basename || '') + pathname + search;\n\n if (queryKey) {\n path = addQueryStringValueToPath(path, queryKey, key);\n _DOMStateStorage.saveState(key, state);\n } else {\n // Drop key and state.\n location.key = location.state = null;\n }\n\n var currentHash = _DOMUtils.getHashPath();\n\n if (action === _Actions.PUSH) {\n if (currentHash !== path) {\n window.location.hash = path;\n } else {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'You cannot PUSH the same path using hash history') : undefined;\n }\n } else if (currentHash !== path) {\n // REPLACE\n _DOMUtils.replaceHashPath(path);\n }\n }\n\n var history = _createDOMHistory2['default'](_extends({}, options, {\n getCurrentLocation: getCurrentLocation,\n finishTransition: finishTransition,\n saveState: _DOMStateStorage.saveState\n }));\n\n var listenerCount = 0,\n stopHashChangeListener = undefined;\n\n function listenBefore(listener) {\n if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n var unlisten = history.listenBefore(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopHashChangeListener();\n };\n }\n\n function listen(listener) {\n if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n var unlisten = history.listen(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopHashChangeListener();\n };\n }\n\n function push(location) {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n history.push(location);\n }\n\n function replace(location) {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n history.replace(location);\n }\n\n var goIsSupportedWithoutReload = _DOMUtils.supportsGoWithoutReloadUsingHash();\n\n function go(n) {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : undefined;\n\n history.go(n);\n }\n\n function createHref(path) {\n return '#' + history.createHref(path);\n }\n\n // deprecated\n function registerTransitionHook(hook) {\n if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n history.registerTransitionHook(hook);\n }\n\n // deprecated\n function unregisterTransitionHook(hook) {\n history.unregisterTransitionHook(hook);\n\n if (--listenerCount === 0) stopHashChangeListener();\n }\n\n // deprecated\n function pushState(state, path) {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n history.pushState(state, path);\n }\n\n // deprecated\n function replaceState(state, path) {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n history.replaceState(state, path);\n }\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n go: go,\n createHref: createHref,\n\n registerTransitionHook: registerTransitionHook, // deprecated - warning is in createHistory\n unregisterTransitionHook: unregisterTransitionHook, // deprecated - warning is in createHistory\n pushState: pushState, // deprecated - warning is in createHistory\n replaceState: replaceState // deprecated - warning is in createHistory\n });\n}\n\nexports['default'] = createHashHistory;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/createHashHistory.js\n// module id = 255\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createDOMHistory(options) {\n var history = _createHistory2['default'](_extends({\n getUserConfirmation: _DOMUtils.getUserConfirmation\n }, options, {\n go: _DOMUtils.go\n }));\n\n function listen(listener) {\n !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined;\n\n return history.listen(listener);\n }\n\n return _extends({}, history, {\n listen: listen\n });\n}\n\nexports['default'] = createDOMHistory;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/createDOMHistory.js\n// module id = 256\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _deepEqual = require('deep-equal');\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _Actions = require('./Actions');\n\nvar _createLocation2 = require('./createLocation');\n\nvar _createLocation3 = _interopRequireDefault(_createLocation2);\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction createRandomKey(length) {\n return Math.random().toString(36).substr(2, length);\n}\n\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search &&\n //a.action === b.action && // Different action !== location change.\n a.key === b.key && _deepEqual2['default'](a.state, b.state);\n}\n\nvar DefaultKeyLength = 6;\n\nfunction createHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var getCurrentLocation = options.getCurrentLocation;\n var finishTransition = options.finishTransition;\n var saveState = options.saveState;\n var go = options.go;\n var getUserConfirmation = options.getUserConfirmation;\n var keyLength = options.keyLength;\n\n if (typeof keyLength !== 'number') keyLength = DefaultKeyLength;\n\n var transitionHooks = [];\n\n function listenBefore(hook) {\n transitionHooks.push(hook);\n\n return function () {\n transitionHooks = transitionHooks.filter(function (item) {\n return item !== hook;\n });\n };\n }\n\n var allKeys = [];\n var changeListeners = [];\n var location = undefined;\n\n function getCurrent() {\n if (pendingLocation && pendingLocation.action === _Actions.POP) {\n return allKeys.indexOf(pendingLocation.key);\n } else if (location) {\n return allKeys.indexOf(location.key);\n } else {\n return -1;\n }\n }\n\n function updateLocation(newLocation) {\n var current = getCurrent();\n\n location = newLocation;\n\n if (location.action === _Actions.PUSH) {\n allKeys = [].concat(allKeys.slice(0, current + 1), [location.key]);\n } else if (location.action === _Actions.REPLACE) {\n allKeys[current] = location.key;\n }\n\n changeListeners.forEach(function (listener) {\n listener(location);\n });\n }\n\n function listen(listener) {\n changeListeners.push(listener);\n\n if (location) {\n listener(location);\n } else {\n var _location = getCurrentLocation();\n allKeys = [_location.key];\n updateLocation(_location);\n }\n\n return function () {\n changeListeners = changeListeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function confirmTransitionTo(location, callback) {\n _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) {\n _runTransitionHook2['default'](transitionHooks[index], location, function (result) {\n if (result != null) {\n done(result);\n } else {\n next();\n }\n });\n }, function (message) {\n if (getUserConfirmation && typeof message === 'string') {\n getUserConfirmation(message, function (ok) {\n callback(ok !== false);\n });\n } else {\n callback(message !== false);\n }\n });\n }\n\n var pendingLocation = undefined;\n\n function transitionTo(nextLocation) {\n if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do.\n\n pendingLocation = nextLocation;\n\n confirmTransitionTo(nextLocation, function (ok) {\n if (pendingLocation !== nextLocation) return; // Transition was interrupted.\n\n if (ok) {\n // treat PUSH to current path like REPLACE to be consistent with browsers\n if (nextLocation.action === _Actions.PUSH) {\n var prevPath = createPath(location);\n var nextPath = createPath(nextLocation);\n\n if (nextPath === prevPath && _deepEqual2['default'](location.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;\n }\n\n if (finishTransition(nextLocation) !== false) updateLocation(nextLocation);\n } else if (location && nextLocation.action === _Actions.POP) {\n var prevIndex = allKeys.indexOf(location.key);\n var nextIndex = allKeys.indexOf(nextLocation.key);\n\n if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL.\n }\n });\n }\n\n function push(location) {\n transitionTo(createLocation(location, _Actions.PUSH, createKey()));\n }\n\n function replace(location) {\n transitionTo(createLocation(location, _Actions.REPLACE, createKey()));\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function createKey() {\n return createRandomKey(keyLength);\n }\n\n function createPath(location) {\n if (location == null || typeof location === 'string') return location;\n\n var pathname = location.pathname;\n var search = location.search;\n var hash = location.hash;\n\n var result = pathname;\n\n if (search) result += search;\n\n if (hash) result += hash;\n\n return result;\n }\n\n function createHref(location) {\n return createPath(location);\n }\n\n function createLocation(location, action) {\n var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n\n if (typeof action === 'object') {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'The state (2nd) argument to history.createLocation is deprecated; use a ' + 'location descriptor instead') : undefined;\n\n if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n location = _extends({}, location, { state: action });\n\n action = key;\n key = arguments[3] || createKey();\n }\n\n return _createLocation3['default'](location, action, key);\n }\n\n // deprecated\n function setState(state) {\n if (location) {\n updateLocationState(location, state);\n updateLocation(location);\n } else {\n updateLocationState(getCurrentLocation(), state);\n }\n }\n\n function updateLocationState(location, state) {\n location.state = _extends({}, location.state, state);\n saveState(location.key, location.state);\n }\n\n // deprecated\n function registerTransitionHook(hook) {\n if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook);\n }\n\n // deprecated\n function unregisterTransitionHook(hook) {\n transitionHooks = transitionHooks.filter(function (item) {\n return item !== hook;\n });\n }\n\n // deprecated\n function pushState(state, path) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n push(_extends({ state: state }, path));\n }\n\n // deprecated\n function replaceState(state, path) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n replace(_extends({ state: state }, path));\n }\n\n return {\n listenBefore: listenBefore,\n listen: listen,\n transitionTo: transitionTo,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n createKey: createKey,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation,\n\n setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'),\n registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'),\n unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'),\n pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n };\n}\n\nexports['default'] = createHistory;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/createHistory.js\n// module id = 257\n// module chunks = 1","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-keys/index.js\n// module id = 258\n// module chunks = 1","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-keys/isArguments.js\n// module id = 259\n// module chunks = 1","'use strict';\n\nvar toObject = Object;\nvar TypeErr = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== toObject(this)) {\n\t\tthrow new TypeErr('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/regexp.prototype.flags/implementation.js\n// module id = 260\n// module chunks = 1","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar TypeErr = TypeError;\n\nmodule.exports = function getPolyfill() {\n\tif (!supportsDescriptors) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tif (/a/mig.flags === 'gim') {\n\t\tvar descriptor = gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/regexp.prototype.flags/polyfill.js\n// module id = 261\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = makeStateWithLocation;\n\nvar _deprecateObjectProperties = require('./deprecateObjectProperties');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction makeStateWithLocation(state, location) {\n if (process.env.NODE_ENV !== 'production' && _deprecateObjectProperties.canUseMembrane) {\n var stateWithLocation = _extends({}, state);\n\n // I don't use deprecateObjectProperties here because I want to keep the\n // same code path between development and production, in that we just\n // assign extra properties to the copy of the state object in both cases.\n\n var _loop = function _loop(prop) {\n if (!Object.prototype.hasOwnProperty.call(location, prop)) {\n return 'continue';\n }\n\n Object.defineProperty(stateWithLocation, prop, {\n get: function get() {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'Accessing location properties directly from the first argument to `getComponent`, `getComponents`, `getChildRoutes`, and `getIndexRoute` is deprecated. That argument is now the router state (`nextState` or `partialNextState`) rather than the location. To access the location, use `nextState.location` or `partialNextState.location`.') : void 0;\n return location[prop];\n }\n });\n };\n\n for (var prop in location) {\n var _ret = _loop(prop);\n\n if (_ret === 'continue') continue;\n }\n\n return stateWithLocation;\n }\n\n return _extends({}, state, location);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/makeStateWithLocation.js\n// module id = 262\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.createRouterObject = createRouterObject;\nexports.createRoutingHistory = createRoutingHistory;\n\nvar _deprecateObjectProperties = require('./deprecateObjectProperties');\n\nvar _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createRouterObject(history, transitionManager) {\n return _extends({}, history, {\n setRouteLeaveHook: transitionManager.listenBeforeLeavingRoute,\n isActive: transitionManager.isActive\n });\n}\n\n// deprecated\nfunction createRoutingHistory(history, transitionManager) {\n history = _extends({}, history, transitionManager);\n\n if (process.env.NODE_ENV !== 'production') {\n history = (0, _deprecateObjectProperties2.default)(history, '`props.history` and `context.history` are deprecated. Please use `context.router`. http://tiny.cc/router-contextchanges');\n }\n\n return history;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/RouterUtils.js\n// module id = 263\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _PropTypes = require('./PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar bool = _React$PropTypes.bool;\nvar object = _React$PropTypes.object;\nvar string = _React$PropTypes.string;\nvar func = _React$PropTypes.func;\nvar oneOfType = _React$PropTypes.oneOfType;\n\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n// TODO: De-duplicate against hasAnyProperties in createTransitionManager.\nfunction isEmptyObject(object) {\n for (var p in object) {\n if (Object.prototype.hasOwnProperty.call(object, p)) return false;\n }return true;\n}\n\nfunction createLocationDescriptor(to, _ref) {\n var query = _ref.query;\n var hash = _ref.hash;\n var state = _ref.state;\n\n if (query || hash || state) {\n return { pathname: to, query: query, hash: hash, state: state };\n }\n\n return to;\n}\n\n/**\n * A <Link> is used to create an <a> element that links to a route.\n * When that route is active, the link gets the value of its\n * activeClassName prop.\n *\n * For example, assuming you have the following route:\n *\n * <Route path=\"/posts/:postID\" component={Post} />\n *\n * You could use the following component to link to that route:\n *\n * <Link to={`/posts/${post.id}`} />\n *\n * Links may pass along location state and/or query string parameters\n * in the state/query props, respectively.\n *\n * <Link ... query={{ show: true }} state={{ the: 'state' }} />\n */\nvar Link = _react2.default.createClass({\n displayName: 'Link',\n\n\n contextTypes: {\n router: _PropTypes.routerShape\n },\n\n propTypes: {\n to: oneOfType([string, object]),\n query: object,\n hash: string,\n state: object,\n activeStyle: object,\n activeClassName: string,\n onlyActiveOnIndex: bool.isRequired,\n onClick: func,\n target: string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onlyActiveOnIndex: false,\n style: {}\n };\n },\n handleClick: function handleClick(event) {\n if (this.props.onClick) this.props.onClick(event);\n\n if (event.defaultPrevented) return;\n\n !this.context.router ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<Link>s rendered outside of a router context cannot navigate.') : (0, _invariant2.default)(false) : void 0;\n\n if (isModifiedEvent(event) || !isLeftClickEvent(event)) return;\n\n // If target prop is set (e.g. to \"_blank\"), let browser handle link.\n /* istanbul ignore if: untestable with Karma */\n if (this.props.target) return;\n\n event.preventDefault();\n\n var _props = this.props;\n var to = _props.to;\n var query = _props.query;\n var hash = _props.hash;\n var state = _props.state;\n\n var location = createLocationDescriptor(to, { query: query, hash: hash, state: state });\n\n this.context.router.push(location);\n },\n render: function render() {\n var _props2 = this.props;\n var to = _props2.to;\n var query = _props2.query;\n var hash = _props2.hash;\n var state = _props2.state;\n var activeClassName = _props2.activeClassName;\n var activeStyle = _props2.activeStyle;\n var onlyActiveOnIndex = _props2.onlyActiveOnIndex;\n\n var props = _objectWithoutProperties(_props2, ['to', 'query', 'hash', 'state', 'activeClassName', 'activeStyle', 'onlyActiveOnIndex']);\n\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(!(query || hash || state), 'the `query`, `hash`, and `state` props on `<Link>` are deprecated, use `<Link to={{ pathname, query, hash, state }}/>. http://tiny.cc/router-isActivedeprecated') : void 0;\n\n // Ignore if rendered outside the context of router, simplifies unit testing.\n var router = this.context.router;\n\n\n if (router) {\n // If user does not specify a `to` prop, return an empty anchor tag.\n if (to == null) {\n return _react2.default.createElement('a', props);\n }\n\n var location = createLocationDescriptor(to, { query: query, hash: hash, state: state });\n props.href = router.createHref(location);\n\n if (activeClassName || activeStyle != null && !isEmptyObject(activeStyle)) {\n if (router.isActive(location, onlyActiveOnIndex)) {\n if (activeClassName) {\n if (props.className) {\n props.className += ' ' + activeClassName;\n } else {\n props.className = activeClassName;\n }\n }\n\n if (activeStyle) props.style = _extends({}, props.style, activeStyle);\n }\n }\n }\n\n return _react2.default.createElement('a', _extends({}, props, { onClick: this.handleClick }));\n }\n});\n\nexports.default = Link;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/Link.js\n// module id = 264\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _PatternUtils = require('./PatternUtils');\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar string = _React$PropTypes.string;\nvar object = _React$PropTypes.object;\n\n/**\n * A <Redirect> is used to declare another URL path a client should\n * be sent to when they request a given URL.\n *\n * Redirects are placed alongside routes in the route configuration\n * and are traversed in the same manner.\n */\n\nvar Redirect = _react2.default.createClass({\n displayName: 'Redirect',\n\n\n statics: {\n createRouteFromReactElement: function createRouteFromReactElement(element) {\n var route = (0, _RouteUtils.createRouteFromReactElement)(element);\n\n if (route.from) route.path = route.from;\n\n route.onEnter = function (nextState, replace) {\n var location = nextState.location;\n var params = nextState.params;\n\n\n var pathname = void 0;\n if (route.to.charAt(0) === '/') {\n pathname = (0, _PatternUtils.formatPattern)(route.to, params);\n } else if (!route.to) {\n pathname = location.pathname;\n } else {\n var routeIndex = nextState.routes.indexOf(route);\n var parentPattern = Redirect.getRoutePattern(nextState.routes, routeIndex - 1);\n var pattern = parentPattern.replace(/\\/*$/, '/') + route.to;\n pathname = (0, _PatternUtils.formatPattern)(pattern, params);\n }\n\n replace({\n pathname: pathname,\n query: route.query || location.query,\n state: route.state || location.state\n });\n };\n\n return route;\n },\n getRoutePattern: function getRoutePattern(routes, routeIndex) {\n var parentPattern = '';\n\n for (var i = routeIndex; i >= 0; i--) {\n var route = routes[i];\n var pattern = route.path || '';\n\n parentPattern = pattern.replace(/\\/*$/, '/') + parentPattern;\n\n if (pattern.indexOf('/') === 0) break;\n }\n\n return '/' + parentPattern;\n }\n },\n\n propTypes: {\n path: string,\n from: string, // Alias for path\n to: string.isRequired,\n query: object,\n state: object,\n onEnter: _InternalPropTypes.falsy,\n children: _InternalPropTypes.falsy\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n !false ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<Redirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = Redirect;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/Redirect.js\n// module id = 265\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.default = createMemoryHistory;\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _useBasename = require('history/lib/useBasename');\n\nvar _useBasename2 = _interopRequireDefault(_useBasename);\n\nvar _createMemoryHistory = require('history/lib/createMemoryHistory');\n\nvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createMemoryHistory(options) {\n // signatures and type checking differ between `useRoutes` and\n // `createMemoryHistory`, have to create `memoryHistory` first because\n // `useQueries` doesn't understand the signature\n var memoryHistory = (0, _createMemoryHistory2.default)(options);\n var createHistory = function createHistory() {\n return memoryHistory;\n };\n var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n history.__v2_compatible__ = true;\n return history;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/createMemoryHistory.js\n// module id = 266\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction useBasename(createHistory) {\n return function () {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var history = createHistory(options);\n\n var basename = options.basename;\n\n var checkedBaseHref = false;\n\n function checkBaseHref() {\n if (checkedBaseHref) {\n return;\n }\n\n // Automatically use the value of <base href> in HTML\n // documents as basename if it's not explicitly given.\n if (basename == null && _ExecutionEnvironment.canUseDOM) {\n var base = document.getElementsByTagName('base')[0];\n var baseHref = base && base.getAttribute('href');\n\n if (baseHref != null) {\n basename = baseHref;\n\n process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'Automatically setting basename using <base href> is deprecated and will ' + 'be removed in the next major release. The semantics of <base href> are ' + 'subtly different from basename. Please pass the basename explicitly in ' + 'the options to createHistory') : undefined;\n }\n }\n\n checkedBaseHref = true;\n }\n\n function addBasename(location) {\n checkBaseHref();\n\n if (basename && location.basename == null) {\n if (location.pathname.indexOf(basename) === 0) {\n location.pathname = location.pathname.substring(basename.length);\n location.basename = basename;\n\n if (location.pathname === '') location.pathname = '/';\n } else {\n location.basename = '';\n }\n }\n\n return location;\n }\n\n function prependBasename(location) {\n checkBaseHref();\n\n if (!basename) return location;\n\n if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n var pname = location.pathname;\n var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';\n var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;\n var pathname = normalizedBasename + normalizedPathname;\n\n return _extends({}, location, {\n pathname: pathname\n });\n }\n\n // Override all read methods with basename-aware versions.\n function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n _runTransitionHook2['default'](hook, addBasename(location), callback);\n });\n }\n\n function listen(listener) {\n return history.listen(function (location) {\n listener(addBasename(location));\n });\n }\n\n // Override all write methods with basename-aware versions.\n function push(location) {\n history.push(prependBasename(location));\n }\n\n function replace(location) {\n history.replace(prependBasename(location));\n }\n\n function createPath(location) {\n return history.createPath(prependBasename(location));\n }\n\n function createHref(location) {\n return history.createHref(prependBasename(location));\n }\n\n function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));\n }\n\n // deprecated\n function pushState(state, path) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n push(_extends({ state: state }, path));\n }\n\n // deprecated\n function replaceState(state, path) {\n if (typeof path === 'string') path = _PathUtils.parsePath(path);\n\n replace(_extends({ state: state }, path));\n }\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation,\n\n pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n });\n };\n}\n\nexports['default'] = useBasename;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/useBasename.js\n// module id = 267\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.default = useRouterHistory;\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _useBasename = require('history/lib/useBasename');\n\nvar _useBasename2 = _interopRequireDefault(_useBasename);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction useRouterHistory(createHistory) {\n return function (options) {\n var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n history.__v2_compatible__ = true;\n return history;\n };\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/useRouterHistory.js\n// module id = 268\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function (createHistory) {\n var history = void 0;\n if (canUseDOM) history = (0, _useRouterHistory2.default)(createHistory)();\n return history;\n};\n\nvar _useRouterHistory = require('./useRouterHistory');\n\nvar _useRouterHistory2 = _interopRequireDefault(_useRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/createRouterHistory.js\n// module id = 269\n// module chunks = 1","'use strict';\n\nmodule.exports = function getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/isWindow.js\n// module id = 270\n// module chunks = 1","import { AuthTypes, ContentType, ContentStatus } from 'enums';\nimport { getAccessMethodFromAuthTypes } from 'lib/auth';\n/**\n * Utility functions to format tracking data\n */\n\nfunction isCollectionsPage({ id: pageId = '', name: pageName = ''}) {\n return (pageId !== 'espnplus' && pageId !== pageName.toLowerCase());\n}\n\nexport function getVideoTypeFromContent(content = {}) {\n if (content.status) {\n // if the status of the event is over, it's linear, and the previous event was selected, so actually live\n if (content.status === ContentStatus.OVER) {\n return ContentStatus.LIVE;\n }\n return content.status;\n }\n return ContentType.VOD;\n}\n\nexport function getVideoTypeFromStream(stream = {}) {\n if (stream.status) {\n // if the status of the event is over, it's linear, and the previous event was selected, so actually live\n if (stream.status === ContentStatus.OVER) {\n return ContentStatus.LIVE;\n }\n return stream.status;\n }\n return ContentType.VOD;\n}\n\nexport function getOmniturePageName(page) {\n const { id: pageId = '', name: pageName = '' } = page;\n const formattedPageName = pageName.toLowerCase();\n const formattedPageId = pageId.toLowerCase();\n return (!isCollectionsPage(page) ? formattedPageId : `${formattedPageId}:${formattedPageName}`);\n}\n\nexport function getOmniturePageData(page) {\n const { name: pageName = '' } = page;\n const formattedPageName = pageName.toLowerCase();\n\n const omniturePageName = getOmniturePageName(page);\n // if collections page, add prop35\n const collectionsPageData = {};\n if (isCollectionsPage(page)) {\n collectionsPageData.prop35 = formattedPageName;\n }\n\n const pageData = {\n pageName: omniturePageName,\n sections: omniturePageName,\n section: omniturePageName,\n // only the schedule page has a different contentType... just do as we're told\n contentType: (formattedPageName === 'schedule') ? 'schedule' : 'index'\n };\n\n return { ...pageData, ...collectionsPageData };\n}\n\nexport function getOmnitureAuthData(userAuth = [], provider = {}, isDomestic = true) {\n const authenticated = (userAuth.indexOf(AuthTypes.MVPD) !== -1 || userAuth.indexOf(AuthTypes.ISP) !== -1);\n const authenticationStatus = getAccessMethodFromAuthTypes(userAuth);\n const pathname = window && window.location && window.location.pathname\n const notOnSyndicatedPlayerPage = pathname.indexOf('/syndicated/player') === -1;\n let providerName = 'not authenticated';\n let providerPackageName = 'not authenticated';\n\n if (authenticated === true) {\n // Only assign once authenticated and the `provider` object contains the `name` property\n if (provider.name) {\n providerName = provider.name;\n }\n\n // NOTE: Domestic Providers use the `abbreviation` property, it should never be `unavailable`\n if (isDomestic) {\n if (provider.abbreviation) {\n providerPackageName = provider.abbreviation;\n }\n } else {\n const { package: providerPackage = {} } = provider;\n // NOTE: The only instance `providerPackageName` will be `unavailable` is if there is no match found\n // via a mismatch with the `consumerKey` property in the packages array and the Adobe `packageId`.\n // See: `authenticationActions.js - createSmartAdobePassInitializeAction` function.\n providerPackageName = providerPackage.packageName || providerPackage.name || 'unavailable';\n }\n }\n\n const authnData = {\n eVar17: providerName,\n prop42: providerName,\n prop43: providerPackageName,\n eVar68: authenticationStatus\n };\n\n if (notOnSyndicatedPlayerPage) {\n authnData.eVar32 = providerPackageName\n }\n\n return authnData;\n}\n\nexport function getOmnitureUserTrackingData(isLoggedIn, userTracking) {\n const {sessionId = 'No Device ID', deviceId = 'No Session ID', accountId = 'No Account ID'} = userTracking || {};\n let eVar102 = '';\n if (isLoggedIn) {\n eVar102 = `${deviceId},${sessionId},${accountId}`\n } else {\n eVar102 = `${deviceId},${sessionId}`\n }\n return eVar102;\n}\n\nexport function getOmnitureEntitlementsData( payload ) {\n const { purchaseMethod, subscriberType, entitlements, oneIdLoggedIn, userTracking, hasSupderSundle } = payload || {};\n // get eVar102 user tracking string\n const eVar102 = getOmnitureUserTrackingData(oneIdLoggedIn, userTracking);\n if (!entitlements) {\n return {\n eVar102\n };\n }\n\n const eVar104 = hasSupderSundle ? 'Yes' : 'No';\n const data = {\n eVar104,\n eVar102,\n eVar87: subscriberType,\n list1: entitlements,\n list2: purchaseMethod\n };\n return data;\n}\n\nexport function getOmnitureQuery(query = {}) {\n const omnitureQuery = Object.keys(query).filter((key) => key.indexOf('om-') === 0).reduce((acc, key) => {\n acc[key] = query[key];\n return acc;\n }, {});\n\n return omnitureQuery;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/omniture/format.js","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.routerReducer = routerReducer;\n/**\n * This action type will be dispatched when your history\n * receives a location change.\n */\nvar LOCATION_CHANGE = exports.LOCATION_CHANGE = '@@router/LOCATION_CHANGE';\n\nvar initialState = {\n locationBeforeTransitions: null\n};\n\n/**\n * This reducer will update the state with the most recent location history\n * has transitioned to. This may not be in sync with the router, particularly\n * if you have asynchronously-loaded routes, so reading from and relying on\n * this state is discouraged.\n */\nfunction routerReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n type = _ref.type,\n payload = _ref.payload;\n\n if (type === LOCATION_CHANGE) {\n return _extends({}, state, { locationBeforeTransitions: payload });\n }\n\n return state;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-redux/lib/reducer.js\n// module id = 272\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * This action type will be dispatched by the history actions below.\n * If you're writing a middleware to watch for navigation events, be sure to\n * look for actions of this type.\n */\nvar CALL_HISTORY_METHOD = exports.CALL_HISTORY_METHOD = '@@router/CALL_HISTORY_METHOD';\n\nfunction updateLocation(method) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return {\n type: CALL_HISTORY_METHOD,\n payload: { method: method, args: args }\n };\n };\n}\n\n/**\n * These actions correspond to the history API.\n * The associated routerMiddleware will capture these events before they get to\n * your reducer and reissue them as the matching function on your history.\n */\nvar push = exports.push = updateLocation('push');\nvar replace = exports.replace = updateLocation('replace');\nvar go = exports.go = updateLocation('go');\nvar goBack = exports.goBack = updateLocation('goBack');\nvar goForward = exports.goForward = updateLocation('goForward');\n\nvar routerActions = exports.routerActions = { push: push, replace: replace, go: go, goBack: goBack, goForward: goForward };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-redux/lib/actions.js\n// module id = 273\n// module chunks = 1","// From https://gist.github.com/epeli/11209665\n\nvar Promise = require(\"bluebird\");\n\n// So you can `var request = require(\"superagent-bluebird-promise\")`\nvar superagent = module.exports = require(\"superagent\");\nvar Request = superagent.Request;\n\nPromise.config({\n // Enable cancellation.\n cancellation: true\n});\n// Create custom error type.\n// Create a new object, that prototypally inherits from the Error constructor.\nvar SuperagentPromiseError = function(message, originalError) {\n var stack;\n this.message = message;\n this.name = 'SuperagentPromiseError';\n this.originalError = originalError;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n stack = this.stack;\n }\n else {\n stack = (new Error(message)).stack;\n }\n\n if (Object.defineProperty) {\n Object.defineProperty(this, 'stack', {\n get: function() {\n if (this.originalError) {\n return stack + '\\nCaused by: ' + this.originalError.stack;\n }\n\n return stack;\n }\n });\n }\n};\n\nSuperagentPromiseError.prototype = new Error();\nSuperagentPromiseError.prototype.constructor = SuperagentPromiseError;\nsuperagent.SuperagentPromiseError = SuperagentPromiseError;\n\n/**\n * @namespace utils\n * @class Superagent\n */\n\n/**\n *\n * Add promise support for superagent/supertest\n *\n * Call .promise() to return promise for the request\n *\n * @method then\n * @return {Bluebird.Promise}\n */\nRequest.prototype.promise = function() {\n var req = this;\n var error;\n\n return new Promise(function(resolve, reject, onCancel) {\n req.end(function(err, res) {\n if (typeof res !== \"undefined\" && res.status >= 400) {\n var msg = 'cannot ' + req.method + ' ' + req.url + ' (' + res.status + ')';\n error = new SuperagentPromiseError(msg);\n error.status = res.status;\n error.body = res.body;\n error.res = res;\n reject(error);\n } else if (err) {\n reject(new SuperagentPromiseError('Bad request', err));\n } else {\n resolve(res);\n }\n });\n onCancel(function() {\n req.abort();\n });\n\n });\n};\n\n/**\n *\n * Make superagent requests Promises/A+ conformant\n *\n * Call .then([onFulfilled], [onRejected]) to register callbacks\n *\n * @method then\n * @param {function} [onFulfilled]\n * @param {function} [onRejected]\n * @return {Bluebird.Promise}\n */\nRequest.prototype.then = function() {\n var promise = this.promise();\n return promise.then.apply(promise, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent-bluebird-promise/index.js\n// module id = 274\n// module chunks = 1","/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return null !== obj && 'object' === typeof obj;\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/is-object.js\n// module id = 275\n// module chunks = 1","import { convertQueryStringToObject, queryString } from './';\n\nexport default function removeQueryFromUrl(url = '', params) {\n let finalQuery = {};\n const pathAndQuery = url.split('?');\n if (pathAndQuery.length > 1) {\n finalQuery = convertQueryStringToObject(pathAndQuery[1]);\n }\n\n params.split(',').forEach((param) => {\n if (finalQuery[param]) {\n delete finalQuery[param];\n }\n });\n return `${pathAndQuery[0]}${queryString(finalQuery)}`;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/removeQueryFromUrl.js","import { ContentType } from 'enums';\n\nexport default function streamSubtitle({ authTypes = [], content: { type, subtitle = '' } }) {\n // no subtitle with non-auth vod\n if (type === ContentType.VOD && authTypes.length === 0) {\n return null;\n }\n\n return subtitle;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/streamSubtitle.js","\nconst usTerritories = ['GU', 'PR', 'VI'];\n\n/**\n * This function determines if a country is part of the US and returns US if so\n * @param {string} country\n */\nexport default function normalizeCountry(country) {\n return usTerritories.indexOf(country) === -1 ? country : 'US';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/normalizeCountry.js","/**\n * getQueryParamsFromString - Given a url containing query parameters,\n * it will return only the query parameters as a string. Optionally takes an includeOnlyList array\n * that will only return matchingQueryParams or a default empty string\n *\n * @param {string} url - url to extract query parameters from\n * @param {array} includeOnlyList - optional array parameter used to filter query params included in the array\n * @return {string} - properly formatted query parameters or defaults to an empty string\n */\n\nexport default function getQueryParamsFromString(url, includeOnlyList) {\n if (typeof url === 'string' && url.split('?').length > 1) {\n const queryParams = url.split('?')[1];\n\n if (!queryParams || queryParams.trim() === '') {\n return '';\n }\n\n // Handle the optional includeOnlyList array\n if (includeOnlyList && Array.isArray(includeOnlyList) && includeOnlyList.length) {\n const matchingQueryParams = [];\n let sanitizedQueryParams = '';\n includeOnlyList.forEach((item, index) => {\n const queryParamName = item.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n const regex = new RegExp('[\\\\?&]' + queryParamName + '=([^&#]*)');\n const result = regex.exec(queryParams);\n\n if (result && Array.isArray(result) && result[0]) {\n matchingQueryParams.push(result[0].replace('&', '')); // remove prepended `&`\n }\n });\n\n if (matchingQueryParams.length === 1) {\n sanitizedQueryParams += matchingQueryParams.join('');\n } else if (matchingQueryParams.length > 1) {\n sanitizedQueryParams += matchingQueryParams.join('&');\n }\n\n return sanitizedQueryParams;\n }\n\n return queryParams;\n }\n\n return '';\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/getQueryParamsFromString.js","import { ContentType } from 'enums';\n\nexport default function convertV1ToV3(content) {\n let v3Content;\n if (content.type === 'event') {\n v3Content = {\n id: `${content.id}`,\n status: content.status,\n type: ContentType.LISTING,\n name: content.name,\n description: content.description,\n imageHref: content.imageHref,\n subtitle: content.subtitle,\n date: content.date,\n shortDate: content.shortDate,\n utc: content.rawDate,\n time: content.time,\n streams: [{\n id: `${content.id}`,\n name: content.name,\n status: content.status,\n duration: content.duration,\n source: {\n id: content.sourceId,\n name: content.source,\n type: content.sourceType\n },\n score: content.score,\n authTypes: content.authTypes,\n adobeRSS: content.adobeRSS,\n links: content.links\n }],\n iconHref: content.iconHref\n };\n } else if(content.type === 'video') {\n v3Content = {\n id: `${content.id}`,\n guid: content.guid,\n type: ContentType.VOD,\n name: content.name,\n description: content.description,\n imageHref: content.imageHref,\n subtitle: content.subtitle,\n streams: [{\n id: `${content.id}`,\n name: content.name,\n duration: content.duration,\n source: {\n name: content.source\n },\n links: content.links\n }]\n };\n }\n return v3Content;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/convertV1ToV3.js","/**\n * getStreamForContent\n * @description return stream which `id` matches with content's `id`, otherwise return the first stream item\n * @param content\n * @returns {Stream}\n */\nexport default function getStreamForContent(content) {\n const { id, streams = [] } = content;\n let stream = streams.filter(streamItem => streamItem.id === id)[0];\n if (!streams) {\n stream = streams[0];\n }\n return stream;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/getStreamForContent.js","import { ContentType } from 'enums';\nimport { getStreamForContent } from 'lib/format';\n\nexport default function convertV3ToV1(content) {\n const stream = getStreamForContent(content);\n const contentId = isNaN(parseInt(content.id, 10)) ? content.id : parseInt(content.id, 10);\n let v1Content;\n if (content.type === ContentType.LISTING) {\n v1Content = {\n id: contentId,\n status: content.status,\n type: 'event',\n name: content.name,\n description: content.description,\n imageHref: content.imageHref,\n duration: stream.duration,\n subtitle: content.subtitle,\n date: content.date,\n shortDate: content.shortDate,\n rawDate: content.utc,\n time: content.time,\n authTypes: stream.authTypes,\n airings: [\n {\n\n }\n ],\n source: stream.source.name,\n sourceId: stream.source.id,\n sourceType: stream.source.type,\n adobeRSS: stream.adobeRSS,\n links: stream.links,\n tracking: {\n // TODO: check if ESPN App uses this\n },\n iconHref: content.iconHref\n };\n } else if(content.type === ContentType.VOD) {\n v1Content = {\n id: contentId,\n guid: content.guid,\n type: 'video',\n name: content.name,\n description: content.description,\n imageHref: content.imageHref,\n duration: stream.duration,\n subtitle: content.subtitle,\n airings: [\n {\n airingId: content.id\n }\n ],\n source: stream.source.name,\n links: stream.links,\n tracking: {\n // TODO: check if ESPN App uses this\n }\n };\n }\n return v1Content;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/convertV3ToV1.js","export { default as addQueryToUrl } from './addQueryToUrl';\nexport { default as apiDateFormatter } from './apiDateFormatter';\nexport { default as streamSubtitle } from './streamSubtitle';\nexport { default as convertQueryStringToObject } from './convertQueryStringToObject';\nexport { default as convertObjectToQueryString } from './convertObjectToQueryString';\nexport { default as dateFormat } from './dateFormat';\nexport { default as getContentFromListing } from './getContentFromListing';\nexport { default as getMinutesUntilStart } from './getMinutesUntilStart';\nexport { default as getSiteUrlForPath } from './getSiteUrlForPath';\nexport { default as getI18nInclude } from './getI18nInclude';\nexport { default as getMobileGameCastUrlForContent } from './getMobileGameCastUrlForContent';\nexport { default as normalizeCountry } from './normalizeCountry';\nexport { default as normalizeQueryString } from './normalizeQueryString';\nexport { default as queryString } from './queryString';\nexport { default as getQueryParamsFromString } from './getQueryParamsFromString';\nexport { default as removeQueryFromUrl } from './removeQueryFromUrl';\nexport { default as convertV1ToV3 } from './convertV1ToV3';\nexport { default as convertV3ToV1 } from './convertV3ToV1';\nexport { default as getStreamForContent } from './getStreamForContent';\nexport { default as getAdobePassRedirectUrl } from './getAdobePassRedirectUrl';\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/index.js","export default function convertQueryStringToObject(queryString = '') {\n const queryParams = queryString.split('&');\n return queryParams.reduce((acc, next) => {\n const keyAndValue = next.split('=');\n if (keyAndValue.length > 0) {\n const key = keyAndValue[0];\n acc[key] = keyAndValue[1];\n }\n return acc;\n }, {});\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/convertQueryStringToObject.js","import _pick from 'lodash/pick';\nimport _size from 'lodash/size';\n\n/**\n * convertObjectToQueryString - Converts a given object with matching keys (keysArray) as a query formatted string.\n *\n * @param {object} object - object containing N amount of properties to be matched by the keysArray\n * @param {array} keysArray - array containing keys that should match the passed object\n * @return {string} - returns a properly formatted query string (i.e. id=123&lang=pt...); defaults to an empty string\n */\nexport default function convertObjectToQueryString(object, keysArray) {\n if (!object || !keysArray || Array.isArray(keysArray) === false || keysArray.length < 1) {\n return '';\n }\n\n let convertedString = '';\n const matchingObject = _pick(object, keysArray);\n\n if (matchingObject) {\n let currentObjectCount = 0;\n let lengthOfMatchingObject = _size(matchingObject);\n\n Object.keys(matchingObject).forEach(key => {\n let value = matchingObject[key];\n currentObjectCount++;\n convertedString += `${key}=${value}`;\n\n if (currentObjectCount !== lengthOfMatchingObject) {\n convertedString += '&';\n }\n });\n }\n\n return convertedString;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/convertObjectToQueryString.js","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_freeGlobal.js\n// module id = 280\n// module chunks = 1","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_toSource.js\n// module id = 281\n// module chunks = 1","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_assignValue.js\n// module id = 282\n// module chunks = 1","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_defineProperty.js\n// module id = 283\n// module chunks = 1","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/hasIn.js\n// module id = 284\n// module chunks = 1","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseFlatten.js\n// module id = 285\n// module chunks = 1","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayPush.js\n// module id = 286\n// module chunks = 1","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_overRest.js\n// module id = 287\n// module chunks = 1","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_setToString.js\n// module id = 288\n// module chunks = 1","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_overArg.js\n// module id = 289\n// module chunks = 1","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Set.js\n// module id = 290\n// module chunks = 1","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseProperty.js\n// module id = 291\n// module chunks = 1","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate (y) {\n var date;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays (ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays :\n this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n : (m) ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month': return months;\n case 'quarter': return months / 3;\n case 'year': return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.24.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment-timezone/node_modules/moment/moment.js\n// module id = 292\n// module chunks = 1","import { AuthTypes, ContentType } from 'enums';\n\nfunction getAuthTypesFromBroadcasts(broadcasts = []) {\n const authTypes = [];\n if (broadcasts.length > 0) {\n if (['espn_dtc', 'bam_dtc', 'espn_ppv'].indexOf(broadcasts[0].adobeResource) !== -1) {\n authTypes.push(AuthTypes.BAM);\n } else {\n authTypes.push(AuthTypes.MVPD);\n }\n if (broadcasts[0].ipAuth === true) {\n authTypes.push(AuthTypes.ISP);\n }\n }\n return authTypes;\n}\n\nfunction getPackagesFromBroadcasts(broadcasts = []) {\n let packages = [];\n if (broadcasts.length > 0 && broadcasts[0].packages) {\n packages = broadcasts[0].packages;\n }\n return packages;\n}\n\nfunction getSourceTypeFromBroadcasts(broadcasts = []) {\n let sourceType;\n if (broadcasts.length > 0) {\n sourceType = broadcasts[0].type;\n }\n return sourceType;\n}\n\nfunction getSourceIdFromBroadcasts(broadcasts = []) {\n let sourceId;\n if (broadcasts.length > 0) {\n sourceId = broadcasts[0].code;\n }\n return sourceId;\n}\n\nfunction getSourceFromBroadcasts(broadcasts = []) {\n let source;\n if (broadcasts.length > 0) {\n source = broadcasts[0].shortName;\n }\n return source;\n}\n\nfunction getAdobeResourceFromBroadcasts(broadcasts = []) {\n let adobeResource;\n if (broadcasts.length > 0) {\n adobeResource = broadcasts[0].adobeResource;\n }\n return adobeResource;\n}\n\nfunction getImageHrefFromBroadcasts(thumbnails = {}) {\n let imageHref;\n if (thumbnails.large) {\n imageHref = thumbnails.large.href;\n }\n return imageHref;\n}\n\n/**\n * Takes a listing from the v1 api and converts it to a content item\n */\n// TODO: DTC - make sure this works for both 5.x and 6.x app\nexport default function getContentFromListing(listing = {}) {\n return {\n id: listing.id.toString(),\n type: ContentType.LISTING,\n name: listing.name,\n status: listing.type,\n imageHref: getImageHrefFromBroadcasts(listing.thumbnails),\n backgroundImageHref: listing.backgroundImageHref,\n streams: [{\n id: listing.id.toString(),\n status: listing.type,\n name: listing.name,\n source: {\n id: getSourceIdFromBroadcasts(listing.broadcasts),\n name: getSourceFromBroadcasts(listing.broadcasts),\n type: getSourceTypeFromBroadcasts(listing.broadcasts)\n },\n authTypes: getAuthTypesFromBroadcasts(listing.broadcasts),\n adobeResource: getAdobeResourceFromBroadcasts(listing.broadcasts),\n packages: getPackagesFromBroadcasts(listing.broadcasts)\n }]\n };\n};\n\nexport function getV1ContentFromListing(listing = {}) {\n return {\n id: listing.id,\n type: ContentType.EVENT,\n name: listing.name,\n status: listing.type,\n source: getSourceFromBroadcasts(listing.broadcasts),\n sourceId: getSourceIdFromBroadcasts(listing.broadcasts),\n sourceType: getSourceTypeFromBroadcasts(listing.broadcasts),\n authTypes: getAuthTypesFromBroadcasts(listing.broadcasts),\n packages: getPackagesFromBroadcasts(listing.broadcasts),\n imageHref: getImageHrefFromBroadcasts(listing.thumbnails)\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/getContentFromListing.js","/**\n * Returns the fully qualified site base url\n */\n\nconst ROOT = '/watch';\n\nexport default function getSiteUrlForPath(pathArg = '') {\n // prepend a slash if the path doesn't have it\n const path = (pathArg.indexOf('/') === 0) ? pathArg : `/${pathArg}`;\n let url = path;\n if (window) {\n const { location: { hostname, port, protocol } } = window;\n url = `${protocol}//${hostname}${port ? `:${port}` : port}${ROOT}${path}`;\n }\n return url;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/getSiteUrlForPath.js","import queryString from './queryString';\nimport appConfig from '../../../config';\n\nconst baseUrl = 'https://secure.espn.com/core/format/modules/head/i18n';\n\nexport default function getI18nInclude() {\n const query = {\n 'edition-host': 'espn.com',\n lang: 'en',\n region: 'us',\n site: 'espn',\n 'site=type': 'full',\n type: 'ext',\n build: '0.362.4.1',\n 'edition-view': 'espn-en-us',\n edition: 'espn-en-us'\n };\n return `${baseUrl}${queryString(query)}`;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/getI18nInclude.js","import { getContentId } from 'lib/auth';\n/**\n * Generates a gamecast url for a given content object\n * @param {object} content - Destructured an eventId from content\n */\n\nconst scoresHost = \"http://scores.espn.com\";\nconst mobileHost = \"http://m.espn.com\";\n\nconst leagueCodePathMap = {\n ncaam: 'ncb',\n nba: 'nba',\n nfl: 'nfl',\n ncaaf: 'ncaaf'\n};\n\nexport default function getMobileGameCastUrlForContent(content, { leagueCode } = {}) {\n const { eventId } = getContentId(content);\n if (eventId && leagueCode) {\n const lowerLeagueCode = leagueCode.toLowerCase();\n if (lowerLeagueCode === 'mlb') {\n return `${mobileHost}/mlb/gamecast?eventId=${eventId}`\n } else if (leagueCodePathMap[lowerLeagueCode]) {\n return `${scoresHost}/${leagueCodePathMap[lowerLeagueCode]}/gamecast?version=mobile&gameId=${eventId}`;\n }\n }\n return null;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/getMobileGameCastUrlForContent.js","import { queryString } from 'lib/format';\nimport { getContentId } from 'lib/auth';\nimport { getOmnitureQuery } from 'lib/omniture';\n\nexport function getId(content, stream, query) {\n let contentId;\n const {id, airingId} = query;\n if (airingId && airingId === id) {\n contentId = {id: airingId};\n } else {\n contentId = stream ? { id: stream.id } : getContentId(content);\n }\n return contentId;\n}\n\nexport default function getAdobePassRedirectUrl({ content, stream, flags = {}, query = {}, pathname = '' }) {\n if (content == null || global.location.pathname === '/watch/syndicated/player') {\n return '';\n }\n const { bucketId, groupId, network, placement = '' } = content;\n const contentId = getId(content, stream, query);\n \n const omnitureQuery = getOmnitureQuery(query);\n \n const qs = queryString({\n bucketId,\n groupId,\n network,\n ...contentId,\n ...flags,\n ...omnitureQuery\n });\n // if it should play in hero, don't re-route to player page\n const { id } = query;\n const playInHero = content.isHero || placement === 'inline-hero' || (id === content.id && pathname !== '/player');\n // if entering via SEO friendly parameter URL, chop all the path params off and use straight query params for redirectUrl\n const path = playInHero ? global.location.pathname.replace(/\\/_\\/?.+/, '') : '/watch/player';\n const port = (global.location.port !== '' ? `:${global.location.port}` : '');\n return `${global.location.protocol}//${global.location.hostname}${port}${path}${qs}`;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/getAdobePassRedirectUrl.js","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayIncludes.js\n// module id = 298\n// module chunks = 1","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseFindIndex.js\n// module id = 299\n// module chunks = 1","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayIncludesWith.js\n// module id = 300\n// module chunks = 1","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseUnary.js\n// module id = 301\n// module chunks = 1","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseRest.js\n// module id = 302\n// module chunks = 1","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArrayLikeObject.js\n// module id = 303\n// module chunks = 1","import { cache as cacheConfig } from '../../../../config';\nconst cacheModuleConfig = { verbose: false, defaultExpiration: 30, memcached: cacheConfig || {} };\n\nexport default (() => {\n if (process.browser) {\n const CacheService = require('cache-service-cache-module');\n return new CacheService({ defaultExpiration: 30 });\n }\n return require('./memcachedCacheService')(cacheModuleConfig);\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/cache/index.js","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/buffer/index.js\n// module id = 305\n// module chunks = 1","\"use strict\";\n\nvar createHash = require('crypto').createHash\n , toString = Object.prototype.toString;\n\nexports.validateArg = function validateArg (args, config) {\n var err;\n\n args.validate.forEach(function (tokens) {\n var key = tokens[0]\n , value = args[key];\n\n switch(tokens[1]){\n case Number:\n if (toString.call(value) !== '[object Number]') {\n err = 'Argument \"' + key + '\" is not a valid Number.';\n }\n\n break;\n\n case Boolean:\n if (toString.call(value) !== '[object Boolean]') {\n err = 'Argument \"' + key + '\" is not a valid Boolean.';\n }\n\n break;\n\n case Array:\n if (toString.call(value) !== '[object Array]') {\n err = 'Argument \"' + key + '\" is not a valid Array.';\n }\n if (!err && key === 'key') {\n for (var vKey=0; vKey<value.length; vKey++) {\n var vValue = value[vKey];\n var result = validateKeySize(config, vKey, vValue);\n if (result.err) {\n err = result.err;\n } else {\n args.command = args.command.replace(vValue, result['value']);\n }\n }\n }\n break;\n\n case Object:\n if (toString.call(value) !== '[object Object]') {\n err = 'Argument \"' + key + '\" is not a valid Object.';\n }\n\n break;\n\n case Function:\n if (toString.call(value) !== '[object Function]') {\n err = 'Argument \"' + key + '\" is not a valid Function.';\n }\n\n break;\n\n case String:\n if (toString.call(value) !== '[object String]') {\n err = 'Argument \"' + key + '\" is not a valid String.';\n }\n\n if (!err && key === 'key') {\n var result = validateKeySize(config, key, value);\n if (result.err) {\n err = result.err;\n } else {\n args.command = reallocString(args.command).replace(value, result['value']);\n }\n }\n break;\n\n default:\n if (toString.call(value) === '[object global]' && !tokens[2]) {\n err = 'Argument \"' + key + '\" is not defined.';\n }\n }\n });\n\n if (err){\n if (args.callback) args.callback(new Error(err));\n return false;\n }\n\n return true;\n};\n\nvar validateKeySize = function validateKeySize(config, key, value) {\n if (value.length > config.maxKeySize) {\n if (config.keyCompression){\n return { err: false, value: createHash('md5').update(value).digest('hex') };\n } else {\n return { err: 'Argument \"' + key + '\" is longer than the maximum allowed length of ' + config.maxKeySize };\n }\n } else if (/[\\s\\n\\r]/.test(value)) {\n return { err: 'The key should not contain any whitespace or new lines' };\n } else {\n return { err: false, value: value };\n }\n};\n\n// a small util to use an object for eventEmitter\nexports.fuse = function fuse (target, handlers) {\n for (var i in handlers)\n if (handlers.hasOwnProperty(i)){\n target.on(i, handlers[i]);\n }\n};\n\n// merges a object's proppertys / values with a other object\nexports.merge = function merge (target, obj) {\n for (var i in obj) {\n target[i] = obj[i];\n }\n\n return target;\n};\n\n// curry/bind functions\nexports.curry = function curry (context, fn) {\n var copy = Array.prototype.slice\n , args = copy.call(arguments, 2);\n\n return function bowlofcurry () {\n return fn.apply(context || this, args.concat(copy.call(arguments)));\n };\n};\n\n// a small items iterator\nexports.Iterator = function iterator (collection, callback) {\n var arr = Array.isArray(collection)\n , keys = !arr ? Object.keys(collection) : false\n , index = 0\n , maximum = arr ? collection.length : keys.length\n , self = this;\n\n // returns next item\n this.next = function next () {\n var obj = arr ? collection[index] : { key: keys[index], value: collection[keys[index]] };\n callback(obj, index++, collection, self);\n };\n\n // check if we have more items\n this.hasNext = function hasNext () {\n return index < maximum;\n };\n};\n\n//Escapes values by putting backslashes before line breaks\nexports.escapeValue = function(value) {\n return value.replace(/(\\r|\\n)/g, '\\\\$1');\n};\n\n//Unescapes escaped values by removing backslashes before line breaks\nexports.unescapeValue = function(value) {\n return value.replace(/\\\\(\\r|\\n)/g, '$1');\n};\n\nvar reallocString = exports.reallocString = function(value) {\n // Reallocate string to fix slow string operations in node 0.10\n // see https://code.google.com/p/v8/issues/detail?id=2869 for details\n return (' ' + value).substr(1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/memcached/lib/utils.js\n// module id = 306\n// module chunks = 1","const whitelistedSwids = [\n '{AEDB5BCC-173D-49BD-9B0B-77DFD5964C19}', // rob wong\n '{CAF029A0-42FD-4A72-A3B4-225A523BB6F8}', // alex murp\n '{41806771-14BA-4372-8067-7114BA137205}', // paul ferrug\n '{83557C90-D1C1-48E5-BD25-C180CF1A843C}', // takashi aoki\n '{3D4B6DA0-89C1-4061-93BE-4DF366407219}', // mike andrews\n '{64BFB324-993C-11D2-94D2-00A0C9E596A0}', // aaron laberge\n '{DC6D6CAB-31D6-47A9-B570-E388A23E82DE}', // john racz\n '{340CE85D-75A3-4266-B2EA-20442C0C9DCB}', // jesse pringle\n '{83CA9BE6-3078-460B-9104-BD7F202524E6}' // mike kidd\n];\n\nexport default function isSwidInWhitelist(swid) {\n if (swid) {\n return (whitelistedSwids.indexOf(swid) !== -1);\n }\n return false;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/whitelist/index.js","import { createSelector } from 'reselect';\nimport fanSelector from './fanSelector';\nimport isSwidInWhitelist from 'lib/whitelist';\n\nexport default createSelector(\n fanSelector,\n ({ id }) => isSwidInWhitelist(id)\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/whitelistSelector.js","/**\n * Each app results in a separate bundle\n */\nmodule.exports = {\n WEBAPP: 'webapp',\n ESPNAPP: 'espnapp'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./config/appNames.js","import { createSelector } from 'reselect';\nimport { editionSelector, intlAppSelector } from 'common/selectors/appSelector';\n\nconst adsSelector = ({ ads = {} }) => ads;\n\nexport default createSelector(adsSelector, (ads) => ads);\n\nexport const adSiteSelector = createSelector(\n editionSelector,\n intlAppSelector,\n ({ ad }, intlApp) => (\n intlApp ? 'm.app.espnplay' : ad.site\n )\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/adsSelector.js","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsEqual.js\n// module id = 310\n// module chunks = 1","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_equalArrays.js\n// module id = 311\n// module chunks = 1","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Uint8Array.js\n// module id = 312\n// module chunks = 1","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayLikeKeys.js\n// module id = 313\n// module chunks = 1","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isStrictComparable.js\n// module id = 314\n// module chunks = 1","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_matchesStrictComparable.js\n// module id = 315\n// module chunks = 1","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/toInteger.js\n// module id = 316\n// module chunks = 1","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/toNumber.js\n// module id = 317\n// module chunks = 1","import { IpAuthenticator, AdobePassAuthenticator } from 'watch-authenticators';\nimport { AdobePass } from 'enums';\n\nconst { Env: AdobePassEnv } = AdobePass;\n\nlet ipAuthenticator;\nlet adobePassAuthenticator;\n\nexport const adobe = (opts) => {\n if (adobePassAuthenticator) {\n return adobePassAuthenticator;\n }\n\n if (!opts) {\n throw new Error(\"Must specify opts the first time Adobe Authenticator is retrieved\");\n }\n\n adobePassAuthenticator = new AdobePassAuthenticator(opts);\n return adobePassAuthenticator;\n};\n\nexport const ip = (opts = { partner: 'watchespn', platform: 'web' }) => {\n if (ipAuthenticator) {\n return ipAuthenticator;\n }\n\n if (!opts) {\n throw new Error(\"Must specify opts the first time IP Authenticator is retrieved\");\n }\n\n ipAuthenticator = new IpAuthenticator(opts);\n return ipAuthenticator;\n};\n\nexport default {\n adobe,\n ip\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/Authenticator.js","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-authenticators/node_modules/lodash.assign/index.js\n// module id = 319\n// module chunks = 1","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n nullTag = '[object Null]',\n proxyTag = '[object Proxy]',\n undefinedTag = '[object Undefined]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.isfunction/index.js\n// module id = 320\n// module chunks = 1","import { set, get, remove } from 'lib/util/localStorage';\nimport { PREAUTH_LOCALSTORAGE_KEY } from 'constants';\n\nexport const PREAUTH_MAX_LENGTH = 5;\n\nexport function getResources() {\n const resources = get(PREAUTH_LOCALSTORAGE_KEY);\n return resources;\n}\n\n// expiration in days\nexport function setResources(resources, expiration = 1) {\n set(PREAUTH_LOCALSTORAGE_KEY, resources, expiration * 60 * 60 * 24);\n}\n\nexport function clear() {\n remove(PREAUTH_LOCALSTORAGE_KEY);\n}\n\nexport default {\n PREAUTH_MAX_LENGTH,\n getResources,\n setResources,\n clear\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/PreAuthZ.js","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseUniq.js\n// module id = 322\n// module chunks = 1","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isIterateeCall.js\n// module id = 323\n// module chunks = 1","import React, { PropTypes, PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport { OneIdEnv, Entitlements, Flags, AuthTypes } from 'enums';\nimport * as oneId from 'lib/oneId';\nimport { streamHasDTCPackage } from 'lib/auth';\nimport { checkESPNPlusAuthentication } from 'lib/auth/shallowCheckAuthentication';\nimport { addQueryToUrl } from 'lib/format';\nimport { clearGuest, launchLogin, launchReauth, checkOneIDAuthentication } from 'common/actions/oneIdActions';\nimport { getAiring } from 'common/page/actions';\nimport { oneIdEnvSelector } from 'common/selectors/appSelector';\nimport oneIdSelector, { oneIdLoggedInSelector, oneIdEntitlementsSelector } from 'common/selectors/oneIdSelector';\nimport { userAuthSelector } from 'common/selectors/authenticationSelectors';\n\nconst { OneIdJs } = oneId;\n\nexport class AccountSelectorComponent extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n purchaseFlow: false,\n mode: AccountSelectorComponent.MODE.UNKNOWN\n };\n this.getGuest = this.getGuest.bind(this);\n this.clearGuest = this.clearGuest.bind(this);\n this.onTVEClick = this.onTVEClick.bind(this);\n this.onPurchaseClick = this.onPurchaseClick.bind(this);\n this.onLogin = this.onLogin.bind(this);\n this.onCancelClick = this.onCancelClick.bind(this);\n this.processRedirect = this.processRedirect.bind(this);\n this.processRedirectBySkip = this.processRedirectBySkip.bind(this);\n this.navigateToESPNPlus = this.navigateToESPNPlus.bind(this);\n }\n\n async componentDidMount() {\n const { dispatch, location: { query: { id } } } = this.props;\n oneId.on('login', this.getGuest);\n oneId.on('logout', this.clearGuest);\n const { isLoggedIn } = await dispatch(checkOneIDAuthentication());\n if (id) {\n try {\n const airing = await dispatch(getAiring({ id }));\n this.setContent(airing);\n } catch (err) {\n console.error(err);\n }\n\n if (!isLoggedIn) {\n this.onLogin();\n }\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { packages } = this.state;\n const notEntitledForContent = this.isNotEntitledForContent();\n const nextNotEntitledForContent = this.isNotEntitledForContent(nextProps);\n if (packages && notEntitledForContent && !nextNotEntitledForContent) {\n this.processRedirect();\n }\n }\n\n componentDidUpdate(prevProps, { packages: prevPackages }) {\n const { packages } = this.state;\n if (!prevPackages && packages) {\n const notEntitledForContent = this.isNotEntitledForContent();\n if (!notEntitledForContent) {\n this.processRedirect();\n }\n }\n }\n\n componentWillUnmount() {\n oneId.off('login', this.getGuest);\n oneId.off('logout', this.clearGuest);\n }\n\n onTVEClick() {\n const { location: { query: { redirectUrl } = {} } } = this.props;\n if (redirectUrl) {\n const win = window.parent !== window.self ? window.parent : window;\n win.location.href = `${redirectUrl}${redirectUrl.indexOf('?') > -1 ? '&' : '?'}auth=tve`;\n }\n }\n\n onLogin() {\n const { dispatch, isLoggedIn } = this.props;\n if (isLoggedIn) {\n dispatch(launchReauth());\n return;\n }\n dispatch(launchLogin());\n }\n\n onPurchaseClick() { // eslint-disable-line\n alert('Purchase flow'); // eslint-disable-line no-alert\n }\n\n onCancelClick() {\n this.navigateToESPNPlus();\n }\n\n setContent(airing = {}) {\n const packages = airing.packages && airing.packages.map(({ name }) => name);\n if (!packages) {\n return;\n }\n console.log('ariging', airing); // eslint-disable-line no-console\n this.setState({ packages });\n }\n\n getMode() {\n let mode = AccountSelectorComponent.MODE.UNKNOWN;\n const { packages } = this.state;\n const { location: { query: { mode: modeArg, matchup: isMatchup } }, entitlements } = this.props;\n if (modeArg !== undefined) { // override\n mode = parseInt(modeArg, 10);\n } else if (packages) {\n const hasMLB = streamHasDTCPackage({ packages }, Entitlements.ESPN_PLUS_MLB);\n const isVertical = hasMLB || streamHasDTCPackage({ packages }, Entitlements.ESPN_PLUS_NHL);\n const hasESPNPlusBase = entitlements && entitlements.indexOf(Entitlements.ESPN_PLUS) > -1;\n\n if (!isVertical) {\n if (isMatchup) { // TODO: how do we know from graphql response that the steream is matchup?\n mode = AccountSelectorComponent.MODE.PURCHASE_BASE_MATCHUP;\n } else {\n mode = AccountSelectorComponent.MODE.PURCHASE_BASE;\n }\n } else if (!hasMLB) {\n mode = AccountSelectorComponent.MODE.PURCHASE_NHL;\n } else if (hasESPNPlusBase) {\n mode = AccountSelectorComponent.MODE.PURCHASE_MLB_ADDON;\n } else {\n mode = AccountSelectorComponent.MODE.PURCHASE_MLB_BUNDLE;\n }\n }\n\n return mode;\n }\n\n getGuest() {\n this.props.dispatch(checkOneIDAuthentication());\n }\n\n clearGuest() {\n return this.props.dispatch(clearGuest());\n }\n\n processRedirect(isSkip = false) {\n const { location: { query: { redirectUrl } = {} } } = this.props;\n if (redirectUrl) {\n const win = window.parent !== window.self ? window.parent : window;\n win.location.href = `${redirectUrl}${isSkip ? '&bypassAuth=true' : ''}`;\n }\n }\n\n processRedirectBySkip() {\n // this.processRedirect(true);\n this.navigateToESPNPlus();\n }\n\n navigateToESPNPlus() {\n const { location: { query = {} } } = this.props;\n const newQuery = {};\n if (query[Flags.ONEID_ENV] === OneIdEnv.STAGING) {\n newQuery.debug = true;\n newQuery.disneyid = 'stg';\n }\n const win = window.parent !== window.self ? window.parent : window;\n win.location.href = addQueryToUrl(`${window.location.origin}/watch/espnplus`, newQuery);\n }\n\n isNotEntitledForContent(props = this.props) {\n const { packages } = this.state;\n const {\n userAuth\n } = props;\n\n const authTypes = [AuthTypes.BAM];\n if (!packages) {\n return true;\n }\n const ESPNPlusAuthentication = checkESPNPlusAuthentication({ authTypes, packages }, userAuth);\n\n return !ESPNPlusAuthentication;\n }\n\n render() {\n const {\n oneIdEnv,\n isLoggedIn,\n oneIdData,\n entitlements\n } = this.props;\n\n const mode = this.getMode();\n const notEntitledForContent = this.isNotEntitledForContent();\n const modeKnown = mode !== AccountSelectorComponent.MODE.UNKNOWN;\n const title = AccountSelectorComponent.TITLE[mode];\n const label = AccountSelectorComponent.LABEL[mode];\n const entitlementsInfo = entitlements && entitlements.length ? `(${entitlements.join(',')})` : '(No entitlements)';\n const loginLabel = isLoggedIn ? (\n <span className=\"login-label\">\n Hi, <a className=\"login-btn\" onClick={this.onLogin}>{oneIdData.profile.firstName}</a>{entitlementsInfo}\n </span>\n ) : (\n <span className=\"login-label\"><a className=\"login-btn\" onClick={this.onLogin}>Log In</a></span>\n );\n\n return (\n <div>\n <Helmet\n meta={[\n { name: 'robots', content: 'noindex, nofollow' }\n ]}\n script={[{\n src: OneIdJs[oneIdEnv]\n }]}\n style={[{\n cssText: `\n body {\n background: url(https://secure.espncdn.com/redesign/assets/img/dtc/auth-bg-1280x728.png) no-repeat;\n background-attachment: fixed;\n background-size: cover;\n min-height: 100vh;\n margin: 0;\n color: #fff;\n font-family: SFProText, sans-serif;\n text-align: center;\n }\n\n .account-selector {\n margin: 0 auto;\n padding: 0 0 0 50px;\n }\n .selection-wrap {\n margin: 0 auto;\n }\n .account-selector .title {\n font-size: 48px;\n }\n .account-selector button {\n display: inline-block;\n padding: 10px 20px;\n border: none;\n font-size: 16px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 0 rgba(198, 132, 6, 0.5);\n width: 250px;\n height: 48px;\n border-radius: 100px;\n background-image: linear-gradient(to top, #cc8804, #eba114 46%, #f9b300);\n margin: 0 5px 20px 5px;\n cursor: pointer;\n }\n .account-selector button.tve-btn {\n display: block;\n margin: 0 auto 10px auto;\n background-image: linear-gradient(to bottom, #0f73d7, #0066cc 47%, #045cb4);\n }\n .account-selector button.eplus-btn {\n display: block;\n margin: 0 auto 10px auto;\n }\n .account-selector a {\n color: #f9b300;\n cursor: pointer;\n margin-right: 20px;\n }\n .account-selector .head-section {\n height: 50px;\n padding-top: 28px;\n }\n\n .account-selector .head-section .logo {\n float: left;\n width: 100px;\n height: auto;\n }\n .account-selector .head-section .login-label {\n float: right;\n margin-right: 20px;\n }\n .account-selector .head-section .login-btn {\n margin-right: 0;\n }\n .account-selector .head-section .login-btn:hover {\n text-decoration: underline;\n }\n `\n }]}\n />\n {modeKnown && (\n <div className=\"account-selector\">\n <section className=\"head-section\">\n <a onClick={this.navigateToESPNPlus}>\n <img\n className=\"logo\"\n src=\"https://secure.espncdn.com/espn360/images/affiliates/svg/ESPN_PLUS/ESPN-PLUS_CLR-NEG.svg\"\n alt=\"ESPN+\"\n />\n </a>\n {loginLabel}\n </section>\n <h1 className=\"title\">{title}</h1>\n <section className=\"selection-wrap\">\n {mode === AccountSelectorComponent.MODE.ACCOUNT_SELECTOR && (\n <div>\n <button className=\"tve-btn\" onClick={this.onTVEClick}>Log In with TV Provider</button>\n <button className=\"eplus-btn\" onClick={this.onLogin}>Log In to ESPN Account</button>\n <button className=\"eplus-btn\" onClick={this.onPurchaseClick}>{label}</button>\n </div>\n )}\n {notEntitledForContent && (\n <div>\n <button onClick={this.onPurchaseClick}>{label}</button>\n <a\n onClick={this.processRedirectBySkip}\n style={{ marginLeft: 20 }}\n >\n Skip Purchase\n </a>\n </div>\n )}\n\n </section>\n </div>\n )}\n </div>\n );\n }\n}\n\nAccountSelectorComponent.propTypes = {\n dispatch: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n oneIdEnv: PropTypes.string,\n isLoggedIn: PropTypes.bool,\n oneIdData: PropTypes.object,\n entitlements: PropTypes.array\n};\n\nAccountSelectorComponent.MODE = {\n UNKNOWN: -1,\n ACCOUNT_SELECTOR: 0,\n PURCHASE_NHL: 1,\n PURCHASE_MLB_BUNDLE: 2,\n PURCHASE_MLB_ADDON: 3,\n PURCHASE_BASE: 4,\n PURCHASE_BASE_MATCHUP: 5\n};\n\nAccountSelectorComponent.TITLE = {\n [AccountSelectorComponent.MODE.UNKNOWN]: '',\n [AccountSelectorComponent.MODE.ACCOUNT_SELECTOR]: 'Account Selector',\n [AccountSelectorComponent.MODE.PURCHASE_NHL]: 'Add NHL.TV to ESPN+',\n [AccountSelectorComponent.MODE.PURCHASE_MLB_BUNDLE]: 'MLB.TV & ESPN+',\n [AccountSelectorComponent.MODE.PURCHASE_MLB_ADDON]: 'Add MLB.TV to ESPN+',\n [AccountSelectorComponent.MODE.PURCHASE_BASE]: 'More Sports. More Leagues.',\n [AccountSelectorComponent.MODE.PURCHASE_BASE_MATCHUP]: 'Matchup Paywall'\n};\n\nAccountSelectorComponent.LABEL = {\n [AccountSelectorComponent.MODE.UNKNOWN]: '',\n [AccountSelectorComponent.MODE.ACCOUNT_SELECTOR]: 'Start My 7 Day Trial',\n [AccountSelectorComponent.MODE.PURCHASE_NHL]: '$24.99/monthly',\n [AccountSelectorComponent.MODE.PURCHASE_MLB_BUNDLE]: '$29.98/monthly',\n [AccountSelectorComponent.MODE.PURCHASE_MLB_ADDON]: '$29.98/monthly',\n [AccountSelectorComponent.MODE.PURCHASE_BASE]: '$4.99/monthly',\n [AccountSelectorComponent.MODE.PURCHASE_BASE_MATCHUP]: 'Start My 7 Day Trial'\n};\n\nconst mapStateToProps = (state) => {\n const oneIdState = oneIdSelector(state);\n return {\n oneIdEnv: oneIdEnvSelector(state),\n isLoggedIn: oneIdLoggedInSelector(state),\n entitlements: oneIdEntitlementsSelector(state),\n oneIdData: oneIdState && oneIdState.data,\n userAuth: userAuthSelector(state)\n };\n};\n\nexport default connect(mapStateToProps)(AccountSelectorComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/AccountSelector.js","export default function getDeviceTypeFromUA() {\n let device = null;\n if (typeof window !== 'undefined') {\n const { navigator } = window;\n if (typeof navigator !== 'undefined') {\n const { userAgent = '' } = navigator;\n const lowerUa = userAgent.toLowerCase();\n\n device = 'unknown';\n if (\n lowerUa.match(/windows phone/) ||\n (lowerUa.match(/windows/) && lowerUa.match(/tablet/))\n ) {\n device = 'windowsphone';\n } else if (userAgent.match(/iPad/i) || userAgent.match(/iP(od|hone)/i)) {\n device = 'ios';\n } else if (userAgent.match(/Android/i)) {\n device = \"android\";\n }\n }\n }\n return device;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/getDeviceTypeFromUA.js","export default function isSafariBrowser() {\n let isSafari = false;\n if (typeof window !== 'undefined' && window.navigator) {\n const { navigator } = window;\n isSafari = (\n navigator.vendor && navigator.vendor.indexOf('Apple') > -1 &&\n navigator.userAgent &&\n navigator.userAgent.indexOf('CriOS') == -1 &&\n navigator.userAgent.indexOf('FxiOS') == -1\n );\n }\n\n return isSafari;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/isSafariBrowser.js","export default function getAndroidVersionFromUserAgent() {\n let androidVersion;\n if (typeof window !== 'undefined') {\n const { userAgent } = window.navigator;\n if (userAgent.indexOf(\"Android\") >= 0 ) {\n androidVersion = parseFloat(userAgent.slice(userAgent.indexOf(\"Android\") + 8));\n }\n }\n return androidVersion;\n};\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/getAndroidVersionFromUserAgent.js","/**\n * sortByRank - Utilizes the rank object property to sort in ascending order.\n *\n * @param {Object} firstElement - First object to compare via rank property\n * @param {Object} secondElement - Second object to compare via rank property\n *\n * @return {Integer} - Returns the proper integer value to sort elements.\n */\nexport default function sortByRank(firstElement, secondElement) {\n const { rank: firstRank } = firstElement;\n const { rank: secondRank } = secondElement;\n return (firstRank === secondRank) ? 0 : (firstRank < secondRank) ? -1 : 1; // eslint-disable-line no-nested-ternary\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/sortByRank.js","/**\n * getAdsConfigByEdition - Returns the proper edition adsConfig object from the external `app-configurations`\n * JSON; defaults to an empty object for easier destructuring.\n *\n * @param {string} edition - Top level app edition obtained from editionMapping\n * @param {object} adsConfig = {} - External adsConfig object supporting multiple editions\n *\n * @return {object} - Config object mapped to `edition`\n */\nexport default function getAdsConfigByEdition(edition, adsConfig = {}) {\n // catches null or undefined\n if (!edition || !adsConfig) {\n return {};\n }\n\n if (adsConfig[edition]) {\n return adsConfig[edition];\n }\n\n if (edition === 'us' && adsConfig.domestic) {\n return adsConfig.domestic;\n }\n\n // no mapping found from external config object\n return {};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/getAdsConfigByEdition.js","/**\n * getPrerollConfigByEdition - Returns the proper edition prerollConfig object from the external `app-configurations`\n * JSON; defaults to an empty object for easier destructuring.\n *\n * @param {string} edition - edition obtained from editionSelector()\n * @param {object} prerollConfig = {} - External app-configurations prerollConfig object supporting\n * multiple editions\n *\n * @return {object} - Config object containing contentType rules (`intervals`, `savePrerollHistory`)\n */\nexport default function getPrerollConfigByEdition(edition, prerollConfig = {}) {\n // catches null or undefined\n if (!edition || !prerollConfig) {\n return {};\n }\n\n if (prerollConfig && prerollConfig[edition] && prerollConfig[edition].contentTypeRules) {\n return prerollConfig[edition].contentTypeRules;\n }\n\n return {};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/getPrerollConfigByEdition.js","/**\n * getAdsConfigByAdProvider - Returns the proper adsConfig object from the external `app-configurations`\n * JSON containing Ad Provider specific properties; defaults to an empty object for easier destructuring.\n *\n * @param {string} provider - Video Ads Provider either `freewheel` or `google`\n * @param {object} adsConfig - External adsConfig object supporting multiple editions\n *\n * @return {object} - Config object containing client specific properties for `freewheel` or `google`\n */\nexport default function getAdsConfigByAdProvider(provider, adsConfig) {\n const activeAdProvider = provider || (adsConfig && adsConfig.activeAdProvider);\n const config = adsConfig || {};\n const defaultProvider = 'google';\n\n if (activeAdProvider && config[activeAdProvider]) {\n return {\n activeAdProvider,\n ...config,\n ...config[activeAdProvider]\n };\n }\n\n // Safety to ensure we return `freewheel` as the default\n if (config[defaultProvider]) {\n return {\n activeAdProvider: defaultProvider,\n ...config,\n ...config[defaultProvider]\n };\n }\n\n return {};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/getAdsConfigByAdProvider.js","export default function hasTier({ tier } = {}, tierType = '') {\n return (typeof tier === 'string') && tierType !== '' && tier.trim().toLowerCase() === tierType;\n}\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/hasTier.js","export default function hasObj(obj, strProps) { \n const props = strProps.split('.');\n for (let i = 0, l=props.length; i < l; i++) {\n if (!obj || !obj.hasOwnProperty(props[i])) {\n return false;\n }\n obj = obj[props[i]];\n }\n return true;\n }\n\n\n// WEBPACK FOOTER //\n// ./app/lib/util/hasObj.js","export default function isStitcherUrl(url = '') {\n return (url.indexOf('/stitcher/') !== -1);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/url-adapter/isStitcherUrl.js","import isStitcherUrl from './isStitcherUrl';\n\nexport default function isArtworkUrl(url = '') {\n return (url.indexOf('artwork.') !== -1 && !isStitcherUrl(url));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/url-adapter/isArtworkUrl.js","import isStitcherUrl from './isStitcherUrl';\n\nexport default function isCombinerUrl(url = '') {\n return (url.indexOf('/combiner/') !== -1 && !isStitcherUrl(url));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/url-adapter/isCombinerUrl.js","export default function canUseCombiner(url = '') {\n return (url.indexOf('espncdn.com') !== -1);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/url-adapter/canUseCombiner.js","import isArtworkUrl from './isArtworkUrl';\nimport isCombinerUrl from './isCombinerUrl';\nimport isStitcherUrl from './isStitcherUrl';\nimport canUseCombiner from './canUseCombiner';\nimport { queryString } from 'lib/format';\n\n// This is the threshold in which we shouldn't request a resized image, but the natural one instead\nconst NATURAL_THRESHOLD = 1800;\n\nexport function toSecureCombinerUrl(url) {\n if (isCombinerUrl(url)) {\n return url.replace('http://a.espncdn.com', 'https://secure.espncdn.com');\n }\n return url;\n}\n\n/**\n * Converts an eligible url to a combiner url\n * @param {string} url\n */\nexport function convertToCombinerUrl(url) {\n if (url && !isCombinerUrl(url) && !isStitcherUrl(url)) {\n return url.replace(/(http:\\/\\/a\\.espncdn\\.com|https:\\/\\/secure\\.espncdn\\.com)/, 'https://secure.espncdn.com/combiner/i?img=');\n }\n // TODO: remove once page api starts to return secure combiner url\n return toSecureCombinerUrl(url);\n}\n\n/**\n * For now, the only params to replace are width and height. If more params are needed, a more algorithmic\n * approach should be used\n * @param {string} query - Query string\n */\nexport function convertToCombinerQueryString(query) {\n return query.replace('width=', 'w=').replace('height=', 'h=');\n}\n\n/**\n * Removes all sizing dimension parameters from an image\n * @param {string} url\n */\nexport function removeDimensions(url) {\n if (url && typeof url === 'string') {\n return url.replace(/(?:width|height|[wh])=\\d*&?/g, '');\n }\n return url;\n}\n\n/**\n * Removes a given parameter from the url\n * @param {string} url\n * @param {string} param\n */\nexport function removeParam(url = '', param) {\n if (param) {\n const paramRegex = new RegExp(`${param}=[a-zA-Z0-9_]*`, 'g');\n return url.replace(paramRegex, '');\n }\n return url;\n}\n\n/**\n * This function will replace/remove dimensions of an image if specified in params.\n * It will also add any other params specified.\n * Note: This will add any parameters that are not height/width dimensions\n * @param {string} urlArg\n * @param {object} params - Supports { width, cquality, height }\n */\nexport function getImageUrlWithParams(urlArg, paramsArg = {}) {\n if (!isArtworkUrl(urlArg) && !canUseCombiner(urlArg)) {\n return urlArg;\n }\n let url = !isArtworkUrl(urlArg) ? convertToCombinerUrl(urlArg) : urlArg;\n\n let params = paramsArg;\n const { width, height } = params;\n\n // if the dimensions are altered, remove all existing dimension params\n if (width || height) {\n url = removeDimensions(url);\n\n // if the width of the image is larger than a defined threshold, just use the natural image\n if (isCombinerUrl(url) && width >= NATURAL_THRESHOLD) {\n // remove width by destructure and spread\n const { width: omittedWidth, ...cleansedParams } = params;\n params = cleansedParams;\n }\n }\n\n let qs = queryString(params, false, url.indexOf('?') > -1);\n if (isCombinerUrl(url)) {\n qs = convertToCombinerQueryString(qs);\n }\n return `${url}${qs}`;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/url-adapter/index.js","/* jshint node:true */\n\n'use strict';\n\nvar IntlMessageFormat = require('./lib/main')['default'];\n\n// Add all locale data to `IntlMessageFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\nrequire('./lib/locales');\n\n// Re-export `IntlMessageFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlMessageFormat;\nexports['default'] = exports;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/index.js\n// module id = 335\n// module chunks = 1","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nexports.extend = extend;\nvar hop = Object.prototype.hasOwnProperty;\n\nfunction extend(obj) {\n var sources = Array.prototype.slice.call(arguments, 1),\n i, len, source, key;\n\n for (i = 0, len = sources.length; i < len; i += 1) {\n source = sources[i];\n if (!source) { continue; }\n\n for (key in source) {\n if (hop.call(source, key)) {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\nexports.hop = hop;\n\n//# sourceMappingURL=utils.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/utils.js\n// module id = 336\n// module chunks = 1","import { createSelector } from 'reselect';\n\nconst scheduleModuleSelector = ({ scheduleModule = {} }) => scheduleModule;\n\nexport default createSelector(\n scheduleModuleSelector,\n ({ buckets = [] }) => buckets\n);\n\nexport const scheduleModuleNameSelector = createSelector(\n scheduleModuleSelector,\n ({ name = 'scheduleModule' }) => name\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/scheduleModuleBucketsSelector.js","import { createSelector } from 'reselect';\nimport appSelector from './appSelector';\n\nexport default createSelector(\n appSelector,\n ({ location = {} }) => {\n const { host, protocol, baseUrl } = location;\n return `${protocol}://${host}${baseUrl}`;\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/appBaseUrlSelector.js","import { createSelector } from 'reselect';\nimport queryString from 'lib/format/queryString';\nimport appSelector from './appSelector';\nimport routingSelector from './routingSelector';\n\nexport default createSelector(\n appSelector,\n routingSelector,\n ({ location = {} }, { locationBeforeTransitions = {} }) => {\n const { host, protocol, baseUrl, query: origQuery } = location;\n const { basename = baseUrl, pathname = '/', query = origQuery } = locationBeforeTransitions || {};\n return `${protocol}://${host}${basename}${pathname}${queryString(query)}`;\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/currentUrlSelector.js","import React, { PropTypes } from 'react';\nimport { queryString } from 'lib/format';\n\nconst shareBaseUrl = 'mailto:';\n\nconst EmailShare = ({ appBaseUrl, content }) => {\n const { id, name: subject } = content;\n const query = queryString({\n body: `${appBaseUrl}?id=${id}`,\n subject\n }, true);\n const shareUrl = `${shareBaseUrl}${query}`;\n\n return (\n <a\n className=\"btn-social sm icon-font-before icon-email-solid-before\"\n data-notrack=\"true\"\n data-route=\"false\"\n href={shareUrl}\n />\n );\n};\n\nEmailShare.propTypes = {\n appBaseUrl: PropTypes.string,\n content: PropTypes.object\n};\n\nexport default EmailShare;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/social/EmailShare.js","import React, { PropTypes } from 'react';\nimport { queryString } from 'lib/format';\n\nconst shareBaseUrl = 'https://www.facebook.com/sharer/sharer.php';\n\nconst FacebookShare = ({ appBaseUrl, content, lang, country }) => {\n const { id, name: title } = content;\n const langParam = (lang && lang !== '') ? `&lang=${lang}` : '';\n const countryParam = (country && country !== '') ? `&country=${country.toLowerCase()}` : '';\n const query = queryString({\n title,\n u: `${appBaseUrl}?id=${id}${langParam}${countryParam}`\n }, true);\n const shareUrl = `${shareBaseUrl}${query}`;\n\n return (\n <a\n className=\"btn-social sm icon-font-before icon-facebook-solid-before\"\n data-notrack=\"true\"\n data-route=\"false\"\n href={shareUrl}\n />\n );\n};\n\nFacebookShare.propTypes = {\n appBaseUrl: PropTypes.string,\n lang: PropTypes.string,\n country: PropTypes.string,\n content: PropTypes.object\n};\n\nexport default FacebookShare;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/social/FacebookShare.js","import React, { PropTypes } from 'react';\nimport { queryString } from 'lib/format';\n\nconst shareBaseUrl = 'https://twitter.com/intent/tweet';\n\nconst TwitterShare = ({ appBaseUrl, content, currentUrl }) => {\n const { id, name: text } = content;\n const query = queryString({\n lang: 'en',\n original_referer: currentUrl,\n text,\n url: `${appBaseUrl}?id=${id}`\n }, true);\n const shareUrl = `${shareBaseUrl}${query}`;\n\n return (\n <a\n className=\"btn-social sm icon-font-before icon-twitter-solid-before\"\n data-notrack=\"true\"\n data-route=\"false\"\n href={shareUrl}\n />\n );\n};\n\nTwitterShare.propTypes = {\n appBaseUrl: PropTypes.string,\n content: PropTypes.object,\n currentUrl: PropTypes.string\n};\n\nexport default TwitterShare;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/social/TwitterShare.js","/* eslint react/no-unused-prop-types: 0 */\nimport React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport { trackSocialShareClick } from 'lib/omniture';\nimport appBaseUrlSelector from 'common/selectors/appBaseUrlSelector';\nimport currentUrlSelector from 'common/selectors/currentUrlSelector';\nimport pageSelector from 'common/selectors/pageSelector';\nimport providerSelector from 'common/selectors/providerSelector';\nimport { userAuthSelector } from 'common/selectors/authenticationSelectors';\nimport { entitlementsTrackingSelector } from 'common/selectors/analyticsSelectors';\nimport { intlAppSelector, intlSelector, countrySelector, isDomesticSelector } from 'common/selectors/appSelector';\nimport EmailShare from './EmailShare';\nimport FacebookShare from './FacebookShare';\nimport TwitterShare from './TwitterShare';\n\nconst shareOutlets = [\n { key: 'email', Component: EmailShare },\n { key: 'facebook', Component: FacebookShare },\n { key: 'twitter', Component: TwitterShare }\n];\n\n// curry the tracking to bind to presentational click handlers\nconst generateClickHandler = (content, page, provider, socialPlatform, userAuth, entitlementsTracking, isDomestic) => (event) => {\n if (event.preventDefault) {\n event.preventDefault();\n }\n\n trackSocialShareClick(content, page, provider, socialPlatform, userAuth, entitlementsTracking, isDomestic);\n};\n\n/**\n * The pageShell provided JS provides share functionality, by binding click handlers to the rendered DOM of this components.\n * The implementation of share functionality pprevents React Synthetic Events from firing. As a result, we are maintaining\n * event listeners on the references to the DOM elements.\n *\n * Here is the external JavaScript from the pageShell: https://code.espn.com/webdev/score/blob/develop/static/js/helpers/social_clicks.js\n */\nclass SharePalette extends Component {\n constructor(props) {\n super(props);\n this.clickHandlers = {}; // reference to click handlers so we may unbind\n this.removeClickHandlers = this.removeClickHandlers.bind(this);\n this.setupClickHandlers = this.setupClickHandlers.bind(this);\n }\n\n componentDidMount() {\n this.setupClickHandlers();\n }\n\n componentWillReceiveProps(nextProps) {\n // update event listeners with latest data from store\n this.removeClickHandlers();\n this.setupClickHandlers(nextProps);\n }\n\n componentWillUnmount() {\n this.removeClickHandlers();\n }\n\n setupClickHandlers(props = this.props) {\n const { content, page, provider, userAuth, entitlementsTracking, isDomestic } = props;\n shareOutlets.forEach((outlet) => {\n this.clickHandlers[outlet.key] = generateClickHandler(\n content, page, provider, outlet.key, userAuth, entitlementsTracking, isDomestic\n );\n this.refs[outlet.key].addEventListener('click', this.clickHandlers[outlet.key]);\n });\n }\n\n removeClickHandlers() {\n Object.keys(this.clickHandlers).forEach((key) => {\n this.refs[key].removeEventListener('click', this.clickHandlers[key]);\n });\n }\n\n render() {\n return (\n <div className=\"shareMenu\" style={{ display: this.props.intlApp ? 'none' : 'block' }}>\n <span className=\"shareMenu__toggle icon-font-after icon-share-solid-after\" />\n <ul className=\"shareMenu__list\">\n {shareOutlets.map((outlet) => (\n <li ref={outlet.key} key={`social-share-${outlet.key}`}>\n <outlet.Component {...this.props} />\n </li>\n ))}\n </ul>\n </div>\n );\n }\n}\n\nSharePalette.propTypes = {\n appBaseUrl: PropTypes.string,\n content: PropTypes.object,\n currentUrl: PropTypes.string,\n lang: PropTypes.string,\n country: PropTypes.string,\n page: PropTypes.object,\n provider: PropTypes.object,\n entitlementsTracking: PropTypes.object,\n userAuth: PropTypes.array,\n intlApp: PropTypes.bool,\n isDomestic: PropTypes.bool\n};\n\nconst mapStateToProps = (state) => ({\n appBaseUrl: appBaseUrlSelector(state),\n currentUrl: currentUrlSelector(state),\n country: countrySelector(state),\n page: pageSelector(state),\n provider: providerSelector(state),\n userAuth: userAuthSelector(state),\n entitlementsTracking: entitlementsTrackingSelector(state),\n intlApp: intlAppSelector(state),\n lang: intlSelector(state).lang,\n isDomestic: isDomesticSelector(state)\n});\n\nexport default connect(mapStateToProps)(SharePalette);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/social/SharePalette.js","import React, { PropTypes, Component } from 'react';\nimport { ContentStatus } from 'enums';\nimport Logo from 'common/Logo';\nimport SharePalette from 'common/social/SharePalette';\nimport UpcomingAlert from '@alias/UpcomingAlert';\nimport playable from '@alias/Playable';\nimport { getMinutesUntilStart, dateFormat } from 'lib/format';\n\nconst DEFAULT_DISPLAY_ALERT_UNTIL = 30; // minutes prior to the event startTime\nconst IS_BLACKED_OUT_MESSAGE = 'Not available in your area';\n\nclass ScheduleEventCard extends Component {\n constructor(props) {\n super(props);\n this.state = {\n displayAlert: false\n };\n this.toggleAlert = this.toggleAlert.bind(this);\n }\n\n getAlertEl(displayTime) {\n const { content } = this.props;\n if (this.state.displayAlert) {\n return (\n <UpcomingAlert\n align=\"center\"\n animation=\"slide\"\n content={content}\n displayTime={displayTime}\n onClick={this.toggleAlert}\n onClose={this.toggleAlert}\n />\n );\n }\n return null;\n }\n\n getDisplayTime() {\n const {\n content: { utc },\n dateFormat: dateFormatStr,\n userLocation,\n nextDayString\n } = this.props;\n const timeZone = userLocation && userLocation.timeZone;\n\n return dateFormat.getDateTimeString(\n utc,\n dateFormatStr,\n timeZone,\n 'schedule-event',\n nextDayString\n );\n }\n\n shouldAlertOnClick() {\n const { content, alertThreshold } = this.props;\n if (content.status === ContentStatus.UPCOMING) {\n const minUntilStart = getMinutesUntilStart(content);\n return (minUntilStart <= 0 || minUntilStart >= alertThreshold);\n }\n return false;\n }\n\n toggleAlert(event) {\n event.preventDefault();\n this.setState({ displayAlert: !this.state.displayAlert });\n }\n\n render() {\n const {\n content,\n clickHandler,\n userIsBlackedOut,\n showLock\n } = this.props;\n\n const { id, name, source: sourceArg, subtitle: subtitleArg } = content;\n let source = sourceArg;\n let subtitle = subtitleArg;\n if (!source && subtitle) {\n const tmpArr = subtitle.split(' • ');\n source = tmpArr.shift();\n subtitle = tmpArr.join(' • ');\n }\n\n let footerText = subtitle;\n const subtitleClickHandler = null;\n\n if (userIsBlackedOut) {\n footerText = IS_BLACKED_OUT_MESSAGE;\n // it wasn't working before and not sure if the blackout map will always work, so disabled\n // subtitleClickHandler = blackoutClickHandler;\n }\n\n const keyClass = showLock ? ' icon-lock-solid-before' : '';\n const displayTime = this.getDisplayTime();\n // don't use the injected clickHandler if we should alert instead\n const handleClick = this.shouldAlertOnClick() ? this.toggleAlert : clickHandler;\n\n return (\n <article className=\"contentItem contentItem--module contentItem--hasAlert\" data-id={id}>\n {this.getAlertEl(displayTime)}\n <header className=\"contentItem__header contentItem__header--module\">\n <div href=\"#\" className=\"contentItem__header__wrapper\">\n <Logo iconHref={content.iconHref} className={'contentItem__logo'} />\n </div>\n </header>\n <a onClick={handleClick}>\n <section className=\"contentItem__content contentItem__content--module\">\n <div className={`collection_item_meta icon-font-before${keyClass}`}>\n <div className=\"collection_item_truncate\">\n <span>{displayTime}</span>\n <span>{source}</span>\n </div>\n </div>\n <h1 className=\"contentItem__title\">{name}</h1>\n </section>\n </a>\n <footer className=\"contentItem__footer contentItem__footer--module\">\n <div onClick={subtitleClickHandler} className=\"metaData\">\n <span>{footerText}</span>\n </div>\n <SharePalette content={content} />\n </footer>\n </article>\n );\n }\n}\n\nScheduleEventCard.propTypes = {\n alertThreshold: PropTypes.number,\n content: PropTypes.object,\n clickHandler: PropTypes.func,\n userIsBlackedOut: PropTypes.bool,\n dateFormat: PropTypes.string,\n showLock: PropTypes.bool,\n userLocation: PropTypes.object,\n nextDayString: PropTypes.string\n};\n\nScheduleEventCard.defaultProps = {\n alertThreshold: DEFAULT_DISPLAY_ALERT_UNTIL\n};\n\nexport { ScheduleEventCard as BaseScheduleEventCard };\nexport default playable(ScheduleEventCard);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/scheduleModule/ScheduleEventCard.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport BucketHeaderContainer from '@alias/BucketHeaderContainer';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport bootstrapSelector from 'common/selectors/bootstrapSelector';\nimport { dateFormatSelector } from 'common/selectors/appSelector';\nimport pageSelector from 'common/selectors/pageSelector';\nimport heroSelector from 'common/selectors/heroSelector';\nimport { placementPrefixSelector } from 'common/selectors/analyticsSelectors';\nimport scheduleModuleBucketsSelector, { scheduleModuleNameSelector } from 'common/selectors/scheduleModuleBucketsSelector';\nimport { BucketStatus, ContentType, ContentStatus } from 'enums';\nimport ScheduleEventCard from './ScheduleEventCard';\n\nconst CONTENT_LIMIT = 4;\n\nexport const ScheduleModule = ({\n buckets,\n scheduleModuleName,\n contentLimit = CONTENT_LIMIT,\n bootstrap: { scheduleModule = {} },\n page,\n hero,\n placementPrefix,\n messages,\n intl: { formatMessage },\n intlDateFormat\n}) => {\n const { noHero } = page;\n let classes = 'contentCollection contentCollection--watchSchedule sub-module';\n let headerTitle = formatMessage(messages['schedule.module.header.live']); // should never actually use this default\n let logo;\n let alertThreshold;\n let schedPageHref = 'schedule';\n let placement = placementPrefix; // nielsen placement\n let targetBucket;\n let unSortedContents = [];\n\n if (buckets.length === 1) {\n const bucket = buckets[0];\n const { tags: origTags = [] } = bucket;\n const tags = [...origTags];\n const upcomingTagIndex = tags.indexOf(BucketStatus.WEB_UPCOMING);\n const liveTagIndex = tags.indexOf(BucketStatus.WEB_LIVE);\n if (upcomingTagIndex !== -1) {\n headerTitle = formatMessage(messages['schedule.module.header.upcoming.on']);\n tags.splice(upcomingTagIndex, 1);\n } else if (liveTagIndex !== -1) {\n headerTitle = formatMessage(messages['schedule.module.header.live']);\n tags.splice(liveTagIndex, 1);\n }\n\n const pageName = tags.pop();\n const scheduleModuleConfig = scheduleModule[scheduleModuleName];\n let channel = '';\n if (scheduleModuleConfig) {\n channel = scheduleModuleConfig.channel;\n logo = {\n src: scheduleModuleConfig.logo,\n alt: pageName\n };\n }\n alertThreshold = 0;\n placement += 'upcoming';\n schedPageHref += `?type=upcoming${channel ? `&channel=${channel}` : ''}`;\n targetBucket = bucket;\n }\n\n // page specific schedule module not found, now find the default live or upcoming schedule module feed\n if (!targetBucket) {\n buckets.some((bucket) => {\n const { tags = [] } = bucket;\n if (\n (noHero || (hero && (hero.type === ContentType.VOD || hero.status === ContentStatus.REPLAY))) &&\n tags.indexOf(BucketStatus.WEB_LIVE) !== -1\n ) {\n headerTitle = formatMessage(messages['schedule.module.header.live']);\n placement += 'top-live';\n classes += ' live';\n targetBucket = bucket;\n return true;\n } else if (\n (noHero || (hero && (hero.type === ContentType.LISTING && hero.status !== ContentStatus.REPLAY))) &&\n tags.indexOf(BucketStatus.WEB_UPCOMING) !== -1\n ) {\n headerTitle = formatMessage(messages['schedule.module.header.upcoming']);\n placement += 'upcoming';\n schedPageHref += '?type=upcoming';\n targetBucket = bucket;\n return true;\n }\n return false;\n });\n }\n\n if (targetBucket) {\n unSortedContents = targetBucket.contents;\n }\n\n const eventDateNextDayString = formatMessage(messages['schedule.module.eventDate.tomorrow']);\n\n const contents = unSortedContents\n .slice(0, contentLimit)\n .sort((contentA, contentB) => {\n const aDate = new Date(contentA.utc || contentA.time);\n const bDate = new Date(contentB.utc || contentB.time);\n return aDate.getTime() - bDate.getTime();\n });\n\n const cards = contents.map((content) =>\n <ScheduleEventCard\n key={`eventcard-${content.name}`}\n content={content}\n placement={placement}\n dateFormat={intlDateFormat}\n alertThreshold={alertThreshold}\n formatMessage={formatMessage}\n messages={messages}\n nextDayString={eventDateNextDayString}\n />\n );\n\n return (contents.length > 0) ? (\n <section style={{ zIndex: 300 }} className={classes}>\n <BucketHeaderContainer\n appPageTitle={'Schedule'}\n name={headerTitle}\n logo={logo}\n link={schedPageHref}\n />\n {cards}\n </section>\n ) : null;\n};\n\nScheduleModule.propTypes = {\n buckets: PropTypes.array,\n scheduleModuleName: PropTypes.string,\n contentLimit: PropTypes.number,\n bootstrap: PropTypes.object,\n page: PropTypes.object,\n hero: PropTypes.object,\n placementPrefix: PropTypes.string,\n intl: intlShape.isRequired,\n intlDateFormat: PropTypes.string,\n messages: PropTypes.object.isRequired\n};\n\nconst mapStateToProps = (state) => ({\n buckets: scheduleModuleBucketsSelector(state),\n scheduleModuleName: scheduleModuleNameSelector(state),\n bootstrap: bootstrapSelector(state),\n page: pageSelector(state),\n hero: heroSelector(state),\n placementPrefix: placementPrefixSelector(state),\n intlDateFormat: dateFormatSelector(state)\n});\n\nexport default connect(mapStateToProps)(injectIntl(ScheduleModule));\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/scheduleModule/ScheduleModuleContainer.js","import React, { PropTypes } from 'react';\n\nconst BucketHeader = ({ title, logo: { src, alt } = {}, seeAllText }) => (\n <div className=\"collection__headerWrap\">\n <h1>\n {title}\n {src && (\n <img\n className=\"collection__headerWrap__logo\"\n src={src}\n alt={alt}\n />\n )}\n </h1>\n <span className=\"see-all\">\n {seeAllText}\n </span>\n </div>\n);\n\nBucketHeader.propTypes = {\n title: PropTypes.string,\n logo: PropTypes.object,\n seeAllText: PropTypes.string\n};\n\nexport default BucketHeader;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/BucketHeader.js","import React, { PropTypes } from 'react';\nimport BucketHeader from 'common/BucketHeader';\nimport LinkWithFlags from 'common/LinkWithFlags';\nimport injectIntl, { intlShape } from 'common/injectIntl';\n\nconst BucketHeaderContainer = ({\n className,\n displaySize,\n intl: { formatMessage },\n name,\n logo,\n link,\n messages,\n size\n}) => {\n const title = `${name}${(displaySize && size) ? ` (${size})` : ''}`;\n return (\n <header className={className}>\n {link ? (\n <LinkWithFlags to={link} className=\"collection_title_link\" data-route=\"false\">\n <BucketHeader title={title} logo={logo} seeAllText={formatMessage(messages['page.bucket.header.seeAll'])} />\n </LinkWithFlags>\n ) : (\n <span>\n <BucketHeader title={title} logo={logo} seeAllText=\"\" />\n </span>\n )}\n </header>\n );\n};\n\nBucketHeaderContainer.propTypes = {\n className: PropTypes.string,\n displaySize: PropTypes.bool,\n name: PropTypes.string,\n logo: PropTypes.object,\n size: PropTypes.number,\n link: PropTypes.string,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nexport default injectIntl(BucketHeaderContainer);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/buckets/BucketHeaderContainer.js","import React, { PropTypes } from 'react';\nimport classNames from 'classnames';\n\nconst classModifiers = {\n center: 'alert--center',\n fade: 'alert__animateFadeIn alert__animateFadeIn--run',\n slide: 'alert__animateSlideIn alert__animateSlideIn--run'\n};\n\n/**\n * Generic alert UI component\n */\nconst Alert = ({\n align,\n animation,\n className,\n message,\n style,\n onClose\n}) => {\n const finalClassName = classNames(\n 'alert',\n classModifiers[align],\n classModifiers[animation],\n className\n );\n return (\n <div className=\"alert__isOverlay\" style={style}>\n <div className={finalClassName}>\n {message}\n <a onClick={onClose} className=\"alert_button--close icon-font-after icon-close-solid-after\" />\n </div>\n </div>\n );\n};\n\nAlert.propTypes = {\n align: PropTypes.oneOf(['left', 'center']),\n animation: PropTypes.oneOf(['fade', 'slide']),\n className: PropTypes.string,\n message: PropTypes.string,\n style: PropTypes.object,\n onClose: PropTypes.func\n};\n\nexport default Alert;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/alert/Alert.js","import React, { PropTypes } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport injectIntl from 'common/injectIntl';\nimport WatchPropTypes from 'common/PropTypes';\nimport Alert from 'common/alert/Alert';\nimport { dateFormat } from 'lib/format';\nimport { dateFormatSelector } from 'common/selectors/appSelector';\nimport { userLocationSelector } from 'common/selectors/authenticationSelectors';\n\n/**\n * Upcoming Alert UI component\n */\nconst UpcomingAlert = ({\n align,\n animation,\n className,\n content,\n displayTime,\n dateFormatStr,\n messages,\n moreText,\n onClose,\n style,\n userLocation\n}) => {\n const { name, utc, source: sourceArg, subtitle } = content;\n const timeZone = userLocation && userLocation.timeZone;\n const startTime = displayTime || dateFormat.getDateTimeString(utc, dateFormatStr, timeZone);\n let source = sourceArg;\n if (!source && subtitle.indexOf(' • ') > -1) {\n const tmpArr = subtitle.split(' • ');\n source = tmpArr.shift();\n }\n const message = (\n <FormattedMessage\n {...messages['schedule.module.alert.upcoming']}\n tagName=\"p\"\n values={{\n name,\n startTime: <span>{startTime}</span>,\n source,\n moreText\n }}\n />\n );\n return (\n <Alert\n align={align}\n animation={animation}\n className={className}\n message={message}\n style={style}\n onClose={onClose}\n />\n );\n};\n\nUpcomingAlert.propTypes = {\n ...Alert.propTypes,\n content: WatchPropTypes.content,\n displayTime: PropTypes.string,\n dateFormatStr: PropTypes.string,\n moreText: PropTypes.string,\n userLocation: PropTypes.object\n};\n\nUpcomingAlert.defaultProps = {\n content: {},\n moreText: ''\n};\n\nconst mapStateToProps = (state) => ({\n dateFormatStr: dateFormatSelector(state),\n userLocation: userLocationSelector(state)\n});\n\nexport default connect(mapStateToProps)(injectIntl(UpcomingAlert));\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/alert/UpcomingAlert.js","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseEach.js\n// module id = 340\n// module chunks = 1","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseFor.js\n// module id = 341\n// module chunks = 1","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_assignMergeValue.js\n// module id = 342\n// module chunks = 1","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getPrototype.js\n// module id = 343\n// module chunks = 1","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_safeGet.js\n// module id = 344\n// module chunks = 1","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/keysIn.js\n// module id = 345\n// module chunks = 1","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isEmpty.js\n// module id = 346\n// module chunks = 1","import canUseDOM from 'lib/util/canUseDOM';\n\nconst globalVideoElement = canUseDOM ? document.createElement('video') : null;\n\n// click handlers will \"prime\" the video element to allow for \"one-click play\" by calling \"load\"\n// we only want to do this once\nif (canUseDOM) {\n globalVideoElement.prime = () => {\n if (!globalVideoElement.primed) {\n globalVideoElement.load();\n globalVideoElement.primed = true;\n }\n };\n}\n\nexport default globalVideoElement;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/globalVideoElement.js","import React, { PropTypes, Component } from 'react';\nimport Helmet from 'react-helmet';\nimport InContentAd from 'common/ads/InContentAd';\nimport classNames from 'classnames';\nimport {\n BucketLayout,\n PageType,\n BucketRatio,\n BucketRatioCols,\n LayoutThresholds,\n LayoutVariant,\n BreakPoints\n} from 'enums';\nimport WatchPropTypes from 'common/PropTypes';\nimport SearchBucketsHeader from 'common/page/search/SearchBucketsHeader';\nimport BucketHeaderContainer from '@alias/BucketHeaderContainer';\nimport CollectionBucketHeader from './CollectionBucketHeader';\nimport Tile from './Tile';\n\nconst getExpandableThresholds = (maxToDisplay = 100) => (\n {\n [BucketLayout.DEFAULT_EXPANDABLE]: [4, maxToDisplay],\n [BucketLayout.LARGE_EXPANDABLE]: [8, maxToDisplay]\n }\n);\n\nconst collectionRowClassMap = {\n [BucketLayout.FiveTwo]: 'dtc-watch__row--promos',\n [BucketLayout.TwoThree]: 'dtc-watch__row--films',\n [BucketLayout.FourThree]: 'dtc-watch__row--shows'\n};\n\nconst dtcItemLayouts = [\n BucketLayout.FiveTwo,\n BucketLayout.TwoThree,\n BucketLayout.FourThree\n];\n\nconst featureLayouts = [\n BucketLayout['feature-left'],\n BucketLayout['feature-right'],\n BucketLayout.TAPESTRY_LEFT,\n BucketLayout.TAPESTRY_RIGHT\n];\n\nconst featureLeftLayout = [\n BucketLayout['feature-left'],\n BucketLayout.TAPESTRY_LEFT\n];\n\nconst featureRightLayout = [\n BucketLayout['feature-right'],\n BucketLayout.TAPESTRY_RIGHT\n];\n\nconst breakPointMqMap = {\n mobile: '@media screen and (max-width: 597px)',\n 'mobile-lg': '@media screen and (min-width: 598px) and (max-width: 767px)',\n tablet: '@media screen and (min-width: 768px) and (max-width: 1023px)',\n desktop: '@media screen and (min-width: 1024px) and (max-width: 1259px)',\n 'desktop-lg': '@media screen and (min-width: 1260px)'\n};\n\nconst ratioBreakPointMap = {\n [BucketRatio.SixteenNine]: ['tablet', 'desktop', 'desktop-lg'],\n [BucketRatio.FourThree]: ['mobile', 'mobile-lg', 'tablet', 'desktop', 'desktop-lg'],\n [BucketRatio.FiveTwo]: ['tablet', 'desktop', 'desktop-lg'],\n [BucketRatio.TwoThree]: ['mobile', 'mobile-lg', 'tablet', 'desktop', 'desktop-lg']\n};\n\n/**\n * Calculates the dimension of bucket\n *\n * @param {string} ratio - tile ratio\n * @param {string} mq - media query break point\n * @param {number} contentLength - number of contents in bucket\n * @param {boolean} calculateRows - a flag to indicate whether we retrieve the maximum rows to display\n * @return {object} - dimension of bucket\n */\nexport function getBucketDimension(\n ratio = BucketRatio.SixteenNine,\n mq = BreakPoints.DESKTOP_LARGE,\n contentLength = 0,\n calculateRows = false\n) {\n const columns = BucketRatioCols[mq][ratio];\n let rows;\n if (columns) {\n if (calculateRows) {\n rows = Math.max(1, Math.floor(contentLength / columns));\n } else {\n rows = contentLength >= 2 * columns ? 2 : 1;\n }\n }\n return { rows, columns };\n}\n\nexport function generateBucketCss(row, ratio = BucketRatio.SixteenNine, pageType) {\n // NOTE: For catalog template pages (i.e. /watch/series) we do not want to hide tiles via css\n // This prevents the bucketCssCache from saving upon client side route transitions.\n if (pageType === PageType.CATALOG) {\n return '';\n }\n\n const breakPoints = ratioBreakPointMap[ratio];\n let css = '';\n /* eslint-disable max-len */\n breakPoints.forEach(key => {\n const mediaFeatures = breakPointMqMap[key];\n if (!mediaFeatures) {\n return;\n }\n\n const col = BucketRatioCols[key][ratio];\n if (ratio === BucketRatio.SixteenNine) {\n css += `\n ${mediaFeatures} {\n .watch-home .collection--watch .collection_row--${row} article.collection_item--one:nth-of-type(1n+${(col * row) + 1}){\n display:none;\n }\n }\n `;\n } else {\n const layoutKey = Object.keys(BucketRatio).filter(ratioKey => BucketRatio[ratioKey] === ratio)[0];\n const layoutType = BucketLayout[layoutKey];\n css += `\n ${mediaFeatures} {\n .watch-home .${collectionRowClassMap[layoutType]}.dtc-watch__row--${row} .dtc-watch__item:nth-of-type(1n+${(col * row) + 1}){\n display:none;\n }\n }\n `;\n }\n });\n\n return css;\n}\n\n\nclass Bucket extends Component {\n constructor(props) {\n super(props);\n this.getImageFormat = this.getImageFormat.bind(this);\n this.getLayoutType = this.getLayoutType.bind(this);\n this.getBucketLink = this.getBucketLink.bind(this);\n this.isTileFeatured = this.isTileFeatured.bind(this);\n this.isPagePreview = this.isPagePreview.bind(this);\n this.shouldShowAllTiles = this.shouldShowAllTiles.bind(this);\n this.showMoreClickHandler = this.showMoreClickHandler.bind(this);\n this.state = {\n expanded: false\n };\n }\n\n /**\n * getImageFormat - Returns the proper image format that depends on the medata. Secondary\n * fallback value is derived from the contents.imageFormat. Final fallback is '16x9'\n *\n * @return {String}\n */\n getImageFormat() {\n const {\n contents,\n metadata: { imageFormat: imageFormatBucket }\n } = this.props;\n const { imageFormat: imageFormatContent } = contents[0] || {};\n\n return (imageFormatBucket || imageFormatContent || BucketRatio.SixteenNine);\n }\n\n /**\n * getLayoutType - Returns the type of layout to be used for the bucket. Utilizes the pageType\n * and imageFormat to obtain the proper value. It can be overwritten by the prop.layoutType.\n *\n * @param {string} pageType\n * @param {string} imageFormat\n *\n * @return {string}\n */\n getLayoutType(pageType, imageFormat = '') {\n const { layoutOverride, layout } = this.props;\n const apiLayout = layout || '';\n let finalLayout;\n\n if (apiLayout !== '' && BucketLayout[apiLayout]) {\n // API match found (i.e. feature-left, feature-right)\n finalLayout = BucketLayout[apiLayout];\n } else if (imageFormat === BucketRatio.TwoThree) {\n finalLayout = BucketLayout.TwoThree;\n } else if (imageFormat === BucketRatio.FourThree) {\n finalLayout = BucketLayout.FourThree;\n } else if (imageFormat === BucketRatio.FiveTwo) {\n finalLayout = BucketLayout.FiveTwo;\n } else if (imageFormat === BucketRatio.SixteenNine) {\n finalLayout = BucketLayout.SixteenNine;\n } else {\n finalLayout = (pageType === PageType.COLLECTION) ?\n BucketLayout.COLLECTION : BucketLayout.DEFAULT;\n }\n\n // Override all predefined layouts; dependent on `this.props.layoutOverride`\n if (layoutOverride) {\n finalLayout = layoutOverride;\n }\n\n return finalLayout;\n }\n\n /**\n * getBucketLink - Returns the proper bucket link to be used based on the following conditions:\n * 1) If the page is on preview mode, it uses the props.name to generate the bucket link.\n * 2) If the props.link is defined and shouldShowAllTiles() is false, it uses the props.link value\n * @return {string} - Bucket URL\n */\n getBucketLink() {\n const { link, name } = this.props;\n let bucketLink;\n // TODO: Fix this when the correct url is coming back from the page api.\n // Also note the condition in !this.shouldShowAllTiles() below\n if (this.isPagePreview()) {\n bucketLink = `/${name.toLowerCase()}`;\n } else if (link && !this.shouldShowAllTiles()) {\n bucketLink = link;\n }\n\n return bucketLink;\n }\n\n /**\n * isPagePreview - Returns a boolean flag value that determine if the page is a preview page\n * based on the existence of `page_preview` in the tags prop.\n *\n * @return {boolean}\n */\n isPagePreview() {\n const { tags } = this.props;\n return tags && (tags.indexOf('page_preview') !== -1);\n }\n\n /**\n * isTileFeatured - Returns a boolean flag value that verifies the existence of the contents\n * in addition to matching the index and layoutType.\n *\n * @param {number} index - current index of the array for the given tile\n * @param {string} layoutType - the type of layout to determine if the tile should be featured\n *\n * @return {boolean}\n */\n isTileFeatured(index, layoutType, featureLayoutsList = []) {\n const { contents } = this.props;\n\n return (contents && index === 0 && featureLayoutsList.indexOf(layoutType) !== -1);\n }\n\n /**\n * shouldShowAllTiles - Returns a boolean flag that only returns true if the pageType is `COLLECTION`\n * or if the layoutType is 1) TwoThree or 2) FourThree and the hideHeaderLink boolean is true.\n *\n * @return {boolean}\n */\n shouldShowAllTiles() {\n const { hideHeaderLink, pageType } = this.props;\n const layoutType = this.getLayoutType(pageType, this.getImageFormat());\n\n return pageType === PageType.COLLECTION ||\n (\n (layoutType === BucketLayout.TwoThree || layoutType === BucketLayout.FourThree) &&\n hideHeaderLink\n );\n }\n\n showMoreClickHandler() {\n this.setState({ expanded: !this.state.expanded });\n }\n\n render() {\n const {\n bucketId,\n contents,\n groupId,\n iconHref,\n metadata: { totalCount, displayCount },\n name,\n pageType,\n tags,\n tier\n } = this.props;\n const imageFormat = this.getImageFormat();\n const layoutType = this.getLayoutType(pageType, imageFormat);\n const layoutTypeHasDefinedShreshhold = {}.hasOwnProperty.call(LayoutThresholds, layoutType);\n const bucketLink = this.getBucketLink();\n const isFeaturedLeftLayout = (featureLeftLayout.indexOf(layoutType) !== -1);\n const isFeaturedRightLayout = (featureRightLayout.indexOf(layoutType) !== -1);\n // There are 2 reasons to distinguish between the legacy layout and ones introduced for DTC\n // 1. tiles in DTC layout is not playable, but navigable (5x2, 4x3 and 2x3)\n // 2. css class works differently\n const layoutVariant = dtcItemLayouts.indexOf(layoutType) !== -1 ? LayoutVariant.DTC : LayoutVariant.COLLECTION;\n const isDTCLayout = layoutVariant === LayoutVariant.DTC;\n const isTileNavigable = isDTCLayout;\n const displaySize = !this.isPagePreview() && !isTileNavigable;\n let layoutThreshold;\n let rows;\n\n if (layoutTypeHasDefinedShreshhold) { // use the static threshold for the `layoutType` when defined\n layoutThreshold = LayoutThresholds[layoutType];\n } else {\n // by default, `displayCount` matches with `totalCount` when not entered or\n // set larger than `totalCount` in admin console, use the default layout logic which is 1 row and\n // 2 when tiles are enough to fill 2 rows on non show/film pages.\n // Otherwise, calculate maximum rows that can fill up with tiles.\n const calculateRows = (displayCount < totalCount);\n // retrieve the maximum `layoutThreshold` using the largest break point, then hide tiles accordingly with css\n // for the smaller break point, that's more performant than re-rendering the exact tiles per break points.\n const {\n rows: bucketRows,\n columns\n } = getBucketDimension(imageFormat, 'desktop-lg', contents.length, calculateRows);\n\n if (bucketRows && !this.shouldShowAllTiles()) {\n rows = bucketRows;\n // For catalog template pages such as show/film pages we want to show all content only when the `see all` link\n // is not defined. Threshold should be calculated for all other page types\n if (pageType === PageType.CATALOG) {\n layoutThreshold = bucketLink ? (bucketRows * columns) : undefined;\n } else {\n layoutThreshold = (bucketRows * columns);\n }\n }\n }\n\n // Applying `*--showAll` class overrides the tile css to always appear on all break points\n const collectionRowClassName = classNames(\n collectionRowClassMap[layoutType],\n layoutType === BucketLayout.SixteenNine && rows && `collection_row--${rows}`,\n isDTCLayout && rows && `dtc-watch__row--${rows}`,\n {\n collection_row: !isDTCLayout,\n 'dtc-watch__row': isDTCLayout,\n 'dtc-watch__row--showAll': isDTCLayout && this.shouldShowAllTiles(),\n 'collection_row--collections': (pageType === PageType.COLLECTION),\n 'collection_row--showAll': (pageType === PageType.COLLECTION)\n }\n );\n\n // Add classes based on the layoutType\n const collectionClassName = classNames('collection', {\n 'collection--watch': (featureLayouts.indexOf(layoutType) === -1 && !isDTCLayout),\n 'collection--featured-left': isFeaturedLeftLayout,\n 'collection--featured-right': isFeaturedRightLayout\n });\n\n // Check tags to determine if bucket should be expandable\n let footer;\n const expandThresholds = getExpandableThresholds(contents.length);\n const layoutTags = tags.filter((tag) => Object.keys(expandThresholds).indexOf(tag) !== -1);\n\n if (layoutTags.length > 0) {\n const { expanded } = this.state;\n const layoutTag = layoutTags[0];\n const minimumToDisplay = expandThresholds[layoutTag][0];\n const maximumToDisplay = expandThresholds[layoutTag][1];\n layoutThreshold = expanded ? maximumToDisplay : minimumToDisplay;\n\n if (contents.length > minimumToDisplay) {\n const text = expanded ? 'Show Fewer' : 'Show More';\n const footerClass = classNames('showMore__link', 'icon-font-before', { active: expanded });\n footer = (\n <footer className=\"showMore\">\n <a onClick={this.showMoreClickHandler} className={footerClass}>\n <span>{text}</span>\n </a>\n </footer>\n );\n }\n }\n\n // `placement` is used for `playable` HOC\n let placement = `home-${name}-grid`;\n let header = (\n <BucketHeaderContainer\n className={'collection_header'}\n name={name}\n placement={placement}\n tier={tier}\n size={totalCount}\n link={bucketLink}\n displaySize={displaySize}\n isDTCLayout={isDTCLayout}\n />\n );\n\n switch (pageType) {\n case PageType.COLLECTION:\n header = <CollectionBucketHeader name={name} iconHref={iconHref} tags={tags} />;\n placement = `collections-${name}-grid`;\n break;\n case PageType.FEATURES:\n placement = `features-${name}-grid`;\n break;\n case PageType.SEARCH:\n placement = `search-${this.props.name}-grid`;\n header = <SearchBucketsHeader name={this.props.name} logoUrl={this.props.logoUrl} tags={this.props.tags} />;\n break;\n default:\n break;\n }\n\n const collectionContents = layoutThreshold ? contents.slice(0, layoutThreshold) : contents;\n /* eslint-disable */\n const collectionRowChildren = collectionContents.map((content, index) => {\n return (\n <Tile\n bucketId={bucketId}\n content={content}\n groupId={groupId}\n featured={this.isTileFeatured(index, layoutType, featureLayouts)}\n key={`tile-${bucketId}-${index}:${content.id}:`}\n layoutType={layoutType}\n isNavigable={isTileNavigable}\n placement={placement}\n bucketName={name}\n tier={tier}\n />\n );\n });\n /* eslint-enable */\n\n // TODO: is there a better way to do this?\n if (pageType === PageType.COLLECTION) {\n collectionRowChildren.splice(6, 0,\n <InContentAd\n key=\"collection_row_in_content_ad\"\n include={['s']}\n adClassName=\"ad-slot-incontent2\"\n refreshWhenVisible\n />\n );\n }\n\n let bucket = null;\n if (collectionRowChildren && collectionRowChildren.length > 0) {\n // creates media query css for given ratio(layout) and # of rows on demand\n const bucketCss = imageFormat && rows && generateBucketCss(rows, imageFormat, pageType);\n bucket = (\n <div className={collectionClassName}>\n {bucketCss && (\n <Helmet\n style={[{\n cssText: bucketCss\n }]}\n />\n )}\n {header}\n <div className={collectionRowClassName}>\n {collectionRowChildren}\n </div>\n {footer}\n </div>\n );\n }\n\n return bucket;\n }\n}\n\nBucket.propTypes = {\n bucketId: PropTypes.number,\n contents: PropTypes.arrayOf(WatchPropTypes.content),\n groupId: PropTypes.number,\n iconHref: PropTypes.string,\n layout: PropTypes.string,\n layoutOverride: PropTypes.string,\n link: PropTypes.string,\n logoUrl: PropTypes.string,\n metadata: PropTypes.object,\n name: PropTypes.string,\n pageType: PropTypes.string,\n tags: PropTypes.array,\n tier: PropTypes.number,\n hideHeaderLink: PropTypes.bool\n};\n\nBucket.defaultProps = {\n contents: [],\n metadata: {},\n name: '',\n tags: []\n};\n\nexport default Bucket;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/buckets/Bucket.js","import React, { PropTypes } from 'react';\nimport Logo from 'common/Logo';\n\nconst SearchBucketsHeader = (props) => {\n if (props.logoUrl) {\n return (\n <header className=\"section-header\">\n <Logo logoUrl={props.logoUrl} tags={props.tags} className={'section-header_logo'} />\n <h1 className=\"section-header_title\">{props.name}</h1>\n </header>\n );\n }\n\n return (\n <header className=\"section-header\">\n <h1 className=\"section-header_title\">{props.name}</h1>\n </header>\n );\n};\n\nSearchBucketsHeader.propTypes = {\n name: PropTypes.string,\n logoUrl: PropTypes.string,\n tags: PropTypes.array\n};\n\nexport default SearchBucketsHeader;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/search/SearchBucketsHeader.js","import React, { PropTypes } from 'react';\nimport Logo from 'common/Logo';\n\nconst CollectionBucketHeader = ({ iconHref, name }) => (\n <header className=\"section-header\">\n { iconHref ? <Logo iconHref={iconHref} className={'section-header_logo'} /> : null }\n <h1 className=\"section-header_title\">{name}</h1>\n </header>\n);\n\nCollectionBucketHeader.propTypes = {\n name: PropTypes.string,\n iconHref: PropTypes.string\n};\n\nexport default CollectionBucketHeader;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/buckets/CollectionBucketHeader.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport { addQueryToUrl } from 'lib/format';\n\nconst AnchorWithFlags = (props) => {\n const { ownProps, flags, href } = props;\n if (!href) {\n return <span {...ownProps} />;\n }\n const newProps = {\n ...ownProps,\n href: addQueryToUrl(href, flags)\n };\n return <a {...newProps} />;\n};\n\nAnchorWithFlags.propTypes = {\n href: PropTypes.string,\n ownProps: PropTypes.object,\n flags: PropTypes.object\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n ownProps,\n flags: persistentFlagsSelector(state)\n});\n\nexport default connect(mapStateToProps)(AnchorWithFlags);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/AnchorWithFlags.js","import React, { PropTypes } from 'react';\nimport classNames from 'classnames';\nimport WatchPropTypes from 'common/PropTypes';\nimport Stamp from '@alias/Stamp';\nimport AnchorWithFlags from 'common/AnchorWithFlags';\nimport ResponsiveThumbnail from 'common/ResponsiveThumbnail';\nimport playable from '@alias/Playable';\nimport { BucketLayout, ContentStatus } from 'enums';\nimport { contentSubtitle } from '@alias/lib/format';\n\nconst FEATURED_IMAGE_WIDTHS = [640, 900, 1200];\nconst IMAGE_WIDTHS = [280, 640, 1200];\n\nconst collectionItemOneLayouts = [\n BucketLayout.DEFAULT,\n BucketLayout.DEFAULT_UNLIMITED,\n BucketLayout['feature-left'],\n BucketLayout['feature-right'],\n BucketLayout.TAPESTRY_LEFT, // NOTE: will be deprecated\n BucketLayout.TAPESTRY_RIGHT, // NOTE: will be deprecated\n BucketLayout.SixteenNine\n];\n\nconst Tile = ({\n clickHandler,\n content,\n featured,\n playerHref,\n layoutType,\n isNavigable,\n userIsBlackedOut,\n selected,\n showLock,\n userLocation,\n tileClassNames\n}) => {\n const { id, description, imageHref, name, score, status } = content;\n const formattedSubtitle = contentSubtitle(content);\n const isContentUpcoming = (status === ContentStatus.UPCOMING);\n const isContentLive = (status === ContentStatus.LIVE);\n const isContentClickable = !isNavigable;\n\n const tileClassName = classNames(tileClassNames, {\n collection_item: !isNavigable,\n 'dtc-watch__item': isNavigable,\n 'collection_item--one': (collectionItemOneLayouts.indexOf(layoutType) !== -1) && !featured,\n 'collection_item--three': layoutType === BucketLayout.COLLECTION,\n 'collection_item--featured': featured\n });\n\n const metaDataClass = classNames('collection_item_meta', 'icon-font-before', {\n 'icon-lock-solid-before': showLock\n });\n\n const playButtonClass = classNames({\n 'button-play button-play--video': isContentClickable,\n 'button-play--live': (isContentClickable && isContentLive)\n });\n\n const activeClass = classNames('collection__link', {\n 'collection__link--active': selected,\n 'collection__link--upcoming': (!isContentClickable && isContentUpcoming)\n });\n\n // TODO: the \"isNew\" property doesn't actually exist yet\n const newStamp = content.isNew ? <div className=\"new\">NEW</div> : '';\n const descriptionEl = (featured && description) ? <p className=\"collection_item_desc\">{description}</p> : '';\n let href;\n let tileClickHandler;\n\n if (isContentClickable || isNavigable) {\n tileClickHandler = clickHandler;\n href = playerHref;\n }\n\n const subtitleEl = formattedSubtitle ? <span>{formattedSubtitle}</span> : null;\n const timeZone = userLocation && userLocation.timeZone;\n return isNavigable ? (\n <AnchorWithFlags\n data-route=\"false\"\n data-id={id}\n data-score={score}\n className={tileClassName}\n href={href}\n onClick={tileClickHandler}\n >\n <div className=\"dtc-watch__item__content\">\n <img className=\"dtc-watch__film__image\" src={imageHref} alt={name} />\n </div>\n </AnchorWithFlags>\n ) : (\n <article onClick={tileClickHandler} className={tileClassName} data-id={id} data-score={score}>\n <AnchorWithFlags data-route=\"false\" className={activeClass} href={href}>\n <figure className=\"collection_item_media\">\n {newStamp}\n <div className=\"media-wrapper media-wrapper--16x9\">\n <ResponsiveThumbnail\n src={imageHref}\n srcSetWidths={featured ? FEATURED_IMAGE_WIDTHS : IMAGE_WIDTHS}\n sizes={'33vw'}\n alt={name}\n />\n <div className={playButtonClass} />\n <Stamp timeZone={timeZone} content={content} userIsBlackedOut={userIsBlackedOut} isTile />\n </div>\n <figcaption>\n <h1 className=\"collection_item_title\">{name}</h1>\n <div className={metaDataClass}>\n <div className=\"collection_item_truncate\">\n {subtitleEl}\n </div>\n </div>\n {descriptionEl}\n </figcaption>\n </figure>\n </AnchorWithFlags>\n </article>\n );\n};\n\nTile.propTypes = {\n clickHandler: PropTypes.func,\n content: WatchPropTypes.content,\n featured: PropTypes.bool,\n layoutType: PropTypes.string,\n isNavigable: PropTypes.bool,\n userIsBlackedOut: PropTypes.bool,\n playerHref: PropTypes.string,\n selected: PropTypes.bool,\n userLocation: PropTypes.object,\n showLock: PropTypes.bool,\n tileClassNames: PropTypes.string\n};\n\nexport default playable(Tile);\nexport { Tile as BaseTile };\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/buckets/Tile.js","import React, { PropTypes } from 'react';\nimport classNames from 'classnames';\nimport { ContentType, ContentStatus } from 'enums';\nimport WatchPropTypes from 'common/PropTypes';\nimport injectIntl, { intlShape } from 'common/injectIntl';\n\nconst Stamp = ({\n isTile,\n content,\n intl: { formatMessage },\n messages,\n userIsBlackedOut\n}) => {\n const { type, status, duration, shortDate } = content;\n const stampClass = classNames('media-duration', {\n 'media-duration--item': isTile, // gotta pass in the parent doing the embedding because of this class, not cool\n 'media-duration--live': status === ContentStatus.LIVE,\n 'media-duration--blackout': userIsBlackedOut\n });\n\n let stampContent = null;\n if (userIsBlackedOut) {\n stampContent = formatMessage(messages.blackout);\n } else if (type === ContentType.VOD) {\n // TODO: DTC - remove fallback once `content` has `duration` for VOD\n stampContent = duration || content.streams[0].duration;\n } else {\n switch (status) {\n case ContentStatus.LIVE:\n stampContent = formatMessage(messages.live);\n break;\n case ContentStatus.UPCOMING: {\n stampContent = shortDate;\n break;\n }\n case ContentStatus.REPLAY:\n // TODO: DTC - remove fallback once `content` has `duration` for VOD\n stampContent = duration || content.streams[0].duration;\n break;\n default:\n stampContent = duration || null;\n }\n }\n\n if (stampContent) {\n return (<div className={stampClass}>{stampContent}</div>);\n }\n return null;\n};\n\nStamp.propTypes = {\n isTile: PropTypes.bool,\n content: WatchPropTypes.content,\n userIsBlackedOut: PropTypes.bool,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nexport default injectIntl(Stamp);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/Stamp.js","import { ContentType } from 'enums';\n\nexport default function contentSubtitle({ type, subtitle = '', streams = [] }) {\n // no subtitle with non-auth vod\n if (type === ContentType.VOD && streams[0] && !streams[0].authTypes) {\n return null;\n }\n\n return subtitle;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/lib/format/contentSubtitle.js","import request from './cache/requestCache';\nimport proxy from './requestProxy';\n\nexport function newRelicTrackEvent(payload) {\n const { newrelicInsertKey, newrelicAccountId, trackingData } = payload;\n const url = `https://insights-collector.newrelic.com/v1/accounts/${newrelicAccountId}/events`;\n\n return request.post(url)\n .send(trackingData)\n .set('X-Insert-Key', newrelicInsertKey)\n .set('Accept', 'application/json')\n .use(proxy)\n .then(res => {\n return JSON.stringify(res.body);\n })\n .catch((err) => {\n return {\n \"success\": false,\n \"err\": err\n }\n });\n}\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/newRelicApi.js","import createNativeBridge from './index';\nimport { getSiteUrlForPath, queryString } from 'lib/format';\n\n/**\n * This library uses the native-bridge library to formulate ESPN App specific link language calls\n */\n\nconst nativeBridge = createNativeBridge();\n\nconst PROTOCOL = 'sportscenter://';\nconst DIRECTIVE = 'x-callback-url';\nconst BASE_URL = `${PROTOCOL}${DIRECTIVE}`;\n\nfunction sendTakeActionMessage(action, urlParams) {\n if (nativeBridge && action && urlParams) {\n nativeBridge.sendMessage('takeAction', {\n url: escape(getAppLink(action, urlParams))\n });\n }\n}\n\nexport function getAppLink(action, urlParams = {}, useProtocolOnly = false) {\n let appLink;\n\n // NOTE: Only redirect with PROTOCOL -- `sportscenter://`\n // SEE: https://espnjira.disney.com/browse/WEWEB-2071\n if (useProtocolOnly) {\n return PROTOCOL;\n }\n\n if (action && urlParams) {\n const actionPath = `${action}${queryString(urlParams, true)}`;\n appLink =`${BASE_URL}/${actionPath}`;\n }\n\n return appLink;\n}\n\nexport function appReady() {\n nativeBridge && nativeBridge.sendMessage('onLoadComplete');\n}\n\nexport function sendLoadVideosMessage(videos = [], tracking = {}) {\n if (nativeBridge && videos.length > 0) {\n nativeBridge.sendMessage('loadVideos', { videos, tracking });\n }\n}\n\nexport const showWatchStreamByCmsId = (playID, tracking = {}, imageHref, name, network) => {\n if (playID) {\n sendTakeActionMessage('showWatchStream', { ...tracking, playID, imageHref, name, network });\n }\n};\n\nexport const showWatchStreamByChannel = (playChannel, tracking = {}, imageHref, name, network) => {\n if (playChannel) {\n sendTakeActionMessage('showWatchStream', { ...tracking, playChannel: playChannel.toLowerCase(), imageHref, name, network });\n }\n};\n\nexport const navigateToPage = (path, title, tracking = {}) => {\n if (path) {\n // app teams request we pass a full URL\n const url = getSiteUrlForPath(path);\n sendTakeActionMessage('navigateToPage', { ...tracking, title, url });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/native-bridge/espnapp.js","import React, { PropTypes } from 'react';\nimport Stamp from '@alias/Stamp';\nimport classNames from 'classnames';\nimport WatchPropTypes from 'common/PropTypes';\n\n// The description has the exact html for the Hero and Playback items, but different classnames\nconst HtmlClassMap = {\n HERO: {\n figcaption: 'hero_detail',\n wrapper: 'hero_detail-wrap',\n title: 'hero_title',\n meta: 'hero_meta',\n truncate: 'hero_truncate',\n network: 'hero_network',\n event: 'hero_event'\n },\n PLAYBACK: {\n figcaption: 'playback__figcaption',\n wrapper: 'playback__wrapper',\n title: 'playback__title',\n meta: 'playback__meta',\n truncate: 'playback_truncate',\n network: '',\n event: ''\n }\n};\n\nconst ContentMetadataLarge = ({\n blurredImage,\n title,\n subtitle,\n content,\n isHero,\n showLock,\n userIsBlackedOut\n}) => {\n const context = isHero ? 'HERO' : 'PLAYBACK';\n const metaDataClass = classNames(HtmlClassMap[context].meta, 'icon-font-before', {\n 'icon-lock-solid-before': showLock\n });\n\n return (\n <figcaption className={HtmlClassMap[context].figcaption}>\n <Stamp content={content} userIsBlackedOut={userIsBlackedOut} />\n {blurredImage}\n <div className={HtmlClassMap[context].wrapper}>\n <div className={HtmlClassMap[context].title}>{title}</div>\n <div className={metaDataClass}>\n <div className={HtmlClassMap[context].truncate}>\n {subtitle && <span>{subtitle}</span>}\n </div>\n </div>\n </div>\n </figcaption>\n );\n};\n\nContentMetadataLarge.propTypes = {\n blurredImage: PropTypes.element,\n title: PropTypes.string,\n subtitle: PropTypes.string,\n content: WatchPropTypes.content,\n isHero: PropTypes.bool,\n showLock: PropTypes.bool,\n userIsBlackedOut: PropTypes.bool\n};\n\nContentMetadataLarge.defaultProps = {\n blurredImage: null,\n title: '',\n subtitle: ''\n};\n\nexport default ContentMetadataLarge;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/hero/ContentMetadataLarge.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport { enableSearchSelector, apiEnvSelector } from 'common/selectors/appSelector';\nimport pageSelector from 'common/selectors/pageSelector';\nimport SearchResultAsList from 'common/search/SearchResultAsList';\nimport { PageType, BucketLayout, Api, SortOrder } from 'enums';\nimport { FormattedMessage } from 'react-intl';\nimport Bucket from 'common/page/buckets/Bucket';\nimport injectIntl from 'common/injectIntl';\nimport DownloadLink from 'common/DownloadLink';\nimport { getSearchResults, SEARCH_TYPES } from 'common/actions/apiAction';\n\nconst overflowStyle = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n};\n\nclass SearchResultsContainer extends Component {\n constructor(props) {\n super(props);\n this.appendScore = this.appendScore.bind(this);\n this.fillBuckets = this.fillBuckets.bind(this);\n this.changeSortOrder = this.changeSortOrder.bind(this);\n this.state = { buckets: [] };\n }\n\n componentWillReceiveProps(nextProps) {\n if ((nextProps.scored && !this.props.scored) || (nextProps.searchTerm !== this.props.searchTerm)) {\n let searchType = SEARCH_TYPES.search;\n if (PageType.SID === nextProps.pageType) {\n searchType = SEARCH_TYPES.listingsByCompetitor;\n }\n this.fillBuckets(nextProps.searchTerm, searchType);\n }\n }\n\n getContainerHeader() {\n const { messages, searchTerm, pageType } = this.props;\n let downloadLink;\n\n if (pageType === PageType.SID && searchTerm.length > 0) {\n const fileName = `${this.state.pageName}-Schedule.csv`;\n downloadLink = (\n <DownloadLink\n buckets={this.state.buckets}\n text=\"Download Schedule\"\n fileName={fileName}\n mimeType=\"text/csv\"\n />);\n }\n\n return (\n <div className=\"search-results-header\" style={{ textAlign: 'center', padding: '16px' }}>\n <h1>\n <FormattedMessage\n {...messages['search.results.message']}\n values={{\n query: <strong style={overflowStyle}>{searchTerm}</strong>\n }}\n />\n </h1>\n {downloadLink}\n <hr width=\"98%\" />\n </div>\n );\n }\n\n appendScore(contents) {\n if (this.props.apiEnv !== Api.Env.DEV) {\n return contents;\n }\n return contents.map((content) => {\n if (content.name) {\n if (!content.name.match(/\\(\\d*\\)/g)) {\n content.name = `(${content.score}) - ${content.name}`;\n }\n }\n return content;\n });\n }\n\n fillBuckets(query, queryType = SEARCH_TYPES.search, sortBy = 'startTime', sortOrder = SortOrder.DESC) {\n const { dispatch, apiEnv } = this.props;\n dispatch(getSearchResults(query, apiEnv, queryType, sortBy, sortOrder))\n .then(({ page: { buckets = [], name: pageName } }) => (this.setState({ buckets, pageName })))\n .catch((err) => console.warn(err));\n }\n\n changeSortOrder(sortBy, sortOrder) {\n const { searchTerm } = this.props;\n this.fillBuckets(searchTerm, SEARCH_TYPES.listingsByCompetitor, sortBy, sortOrder);\n }\n\n render() {\n if (!this.props.enableSearch) {\n return null;\n }\n const { pageType } = this.props;\n const containerHeader = this.getContainerHeader();\n\n let bucketResults;\n const buckets = this.state.buckets || [];\n if (buckets.length > 0 && pageType !== PageType.SID) {\n bucketResults = buckets.map((bucket, index) => {\n const { id, name, metadata, contents = [], tags = [] } = bucket;\n const tag = name === 'Videos' ? BucketLayout.LARGE_EXPANDABLE : BucketLayout.DEFAULT_EXPANDABLE;\n return (\n <Bucket\n contents={(this.appendScore(contents))}\n index={index}\n key={`${id}-${name}`}\n layoutType={BucketLayout.DEFAULT_UNLIMITED}\n metadata={metadata}\n name={name}\n pageType={pageType}\n tags={[tag, ...tags]}\n />);\n });\n } else if (pageType === PageType.SID) {\n bucketResults = buckets.map((bucket) => {\n const { contents = [] } = bucket;\n return (<SearchResultAsList\n contents={contents}\n sortContents={this.changeSortOrder}\n />);\n });\n }\n return (\n <div className=\"search-result-container\" style={{ backgroundColor: 'white' }}>\n {containerHeader}\n {bucketResults}\n </div>\n );\n }\n}\n\nSearchResultsContainer.propTypes = {\n dispatch: PropTypes.func.isRequired,\n searchTerm: PropTypes.string,\n messages: PropTypes.object.isRequired,\n enableSearch: PropTypes.bool,\n apiEnv: PropTypes.string,\n scored: PropTypes.bool,\n pageType: PropTypes.string\n};\n\nconst mapStateToProps = (state) => ({\n apiEnv: apiEnvSelector(state),\n enableSearch: enableSearchSelector(state),\n scored: pageSelector(state).scored\n});\n\nexport default injectIntl(connect(mapStateToProps)(SearchResultsContainer));\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/search/SearchResultsContainer.js","export default function isChromeOrSafari() {\n if (typeof window !== 'undefined') {\n const isSafari = /safari|applewebkit/i.test(navigator.userAgent);\n const isChrome = !!window.chrome && !!window.chrome.webstore;\n return isSafari || isChrome;\n }\n return false;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/ui/isChromeOrSafari.js","import React, { PropTypes } from 'react';\nimport selectn from 'selectn';\nimport isChromeOrSafari from 'lib/ui/isChromeOrSafari';\nimport ProviderSettings from './ProviderSettings';\n\nfunction BrandingElement(props) {\n if (!props.branding) {\n return null;\n }\n const { name: brandingName, logoUrl: brandingLogoUrl } = props.branding;\n return (\n <div>\n <a\n className=\"sportbrand__watch\"\n onClick={(event) => {\n event.preventDefault();\n window.location = '/watch/';\n }}\n >\n <img src={brandingLogoUrl} className=\"imageLoaded\" alt={brandingName} />\n </a>\n </div>\n );\n}\nBrandingElement.propTypes = {\n branding: PropTypes.shape({\n name: PropTypes.string,\n logoUrl: PropTypes.string\n })\n};\n\n\nconst ProviderLogo = ({ displayLogout, handleLogout, providerInfo, branding }) => {\n const imgSrc = selectn('images.colorWithPositiveBackground.href', providerInfo) ||\n selectn('images.logo.href', providerInfo) || '';\n const webLink = selectn('links.web.href', providerInfo) || '/watch';\n let target = '';\n const imgStyle = {\n borderLeftWidth: 0\n };\n // hack for browser inconsistencies of rendering svgs in images\n if (isChromeOrSafari()) {\n imgStyle.width = 'auto';\n }\n const providerImg = imgSrc ? <img src={imgSrc} className=\"imageLoaded\" style={imgStyle} alt=\"Provider\" /> : null;\n if (providerImg !== null) {\n target = '_blank';\n }\n const loggedInClass = 'playback__header--loggedIn';\n return (\n <div className={`sportbrand ${loggedInClass}`}>\n <BrandingElement branding={branding} />\n <a className=\"playback__provider sportbrand__provider\" target={target} href={webLink}>\n {providerImg}\n </a>\n <ProviderSettings\n displayLogout={displayLogout}\n handleLogout={handleLogout}\n providerInfo={providerInfo}\n providerName={providerInfo.name}\n />\n </div>\n );\n};\n\nProviderLogo.propTypes = {\n displayLogout: PropTypes.bool,\n handleLogout: PropTypes.func,\n providerInfo: PropTypes.object,\n branding: PropTypes.shape({\n name: PropTypes.string,\n logoUrl: PropTypes.string\n })\n};\n\nProviderLogo.defaultProps = {\n providerInfo: {}\n};\n\nexport default ProviderLogo;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/branding/ProviderLogo.js","import React, { PropTypes } from 'react';\nimport LinkWithFlags from 'common/LinkWithFlags';\nimport selectn from 'selectn';\nimport classNames from 'classnames';\nimport ProviderSettings from './ProviderSettings';\n\nfunction BrandingElement(props) {\n if (!props.branding) {\n const backArrowStyle = {\n fontSize: '16px',\n color: '#FFFFFF'\n };\n\n const backTextStyle = {\n font: 'SF UI Text Regular',\n fontSize: '14px',\n color: '#FFFFFF'\n };\n\n const backStyle = {\n marginBottom: '10px'\n };\n return (\n <a style={backStyle} onClick={() => window.history.back()}>\n <span className=\"icon-font-before icon-caret-left-solid-before\" style={backArrowStyle} />\n <span style={backTextStyle}>Back</span>\n </a>\n );\n }\n const { name: brandingName, logoUrl: brandingLogoUrl } = props.branding;\n return (\n <div className=\"playback__logo\">\n <LinkWithFlags data-route=\"false\" className=\"playback__logo__link\" to=\"/\">\n <picture>\n <img\n src={brandingLogoUrl}\n className=\"imageLoaded\"\n alt={brandingName}\n style={{ width: 'auto', maxWidth: 150 }}\n />\n </picture>\n </LinkWithFlags>\n </div>\n );\n}\nBrandingElement.propTypes = {\n branding: PropTypes.shape({\n name: PropTypes.string,\n logoUrl: PropTypes.string\n })\n};\n\nconst ProviderLogoPlayback = ({\n displayLogout,\n handleLogin,\n handleLogout,\n hideProviderLogo,\n loggedIn,\n providerInfo,\n branding\n}) => {\n const headerClass = classNames('playback__header', {\n 'playback__header--loggedIn': loggedIn\n });\n const imgSrc = selectn('images.colorWithNegativeBackground.href', providerInfo) ||\n selectn('images.logo.href', providerInfo) || '';\n const webLink = selectn('links.web.href', providerInfo) || '/watch';\n let target = '';\n let providerLogoEl = null;\n let providerSettingsEl = null;\n const providerImg = (imgSrc !== '') ?\n <img src={imgSrc} className=\"imageLoaded\" style={{ verticalAlign: '2px' }} alt=\"Provider\" /> : null;\n\n if (providerImg !== null) {\n target = '_blank';\n }\n\n if (!hideProviderLogo) {\n // PageShell CSS enforces a `display: none` rule on provider logos.\n // To avoid clashes with PageShell CSS, we overwrite styles here via JS inline styles\n providerLogoEl = (\n <div className=\"playback__provider\" style={{ display: 'inline-block' }}>\n <a className=\"playback__logo__link\" target={target} href={webLink}>\n <picture>\n {providerImg}\n </picture>\n </a>\n </div>\n );\n\n providerSettingsEl = (\n <ProviderSettings\n displayLogout={displayLogout}\n handleLogin={handleLogin}\n handleLogout={handleLogout}\n providerInfo={providerInfo}\n />\n );\n }\n\n return (\n <header className={headerClass}>\n <BrandingElement branding={branding} />\n {providerLogoEl}\n {providerSettingsEl}\n </header>\n );\n};\n\nProviderLogoPlayback.propTypes = {\n displayLogout: PropTypes.bool,\n handleLogin: PropTypes.func,\n handleLogout: PropTypes.func,\n hideProviderLogo: PropTypes.bool,\n loggedIn: PropTypes.bool,\n providerInfo: PropTypes.object,\n branding: PropTypes.shape({\n name: PropTypes.string,\n logoUrl: PropTypes.string\n })\n};\n\nProviderLogoPlayback.defaultProps = {\n providerInfo: {}\n};\n\nexport default ProviderLogoPlayback;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/branding/ProviderLogoPlayback.js","import React, { PropTypes } from 'react';\n\nconst logoutStyle = {\n boxShadow: '0 0 6px rgba(0,0,0,0.2)'\n};\n\nconst Logout = ({ handleLogout, message, buttonLabel }) => (\n <div className=\"playback__logout\" style={logoutStyle}>\n <h2>{message}</h2>\n <a className=\"button med stand-alone\" onClick={handleLogout}>{buttonLabel}</a>\n </div>\n);\n\nLogout.propTypes = {\n handleLogout: PropTypes.func,\n message: PropTypes.string,\n buttonLabel: PropTypes.string\n};\n\nexport default Logout;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/branding/Logout.js","import React, { PropTypes } from 'react';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport Logout from './Logout';\n\nconst ProviderSettings = ({\n displayLogout,\n handleLogin,\n handleLogout,\n providerInfo,\n messages,\n intl: { formatMessage }\n}) => {\n const logoutEl = displayLogout ? (\n <Logout\n handleLogout={handleLogout}\n message={formatMessage(messages['signout.message'], { providerName: providerInfo.name })}\n buttonLabel={formatMessage(messages['signout.label'])}\n />\n ) : null;\n const logoutClass = displayLogout === true ? 'playback__settingsLink icon-font-before icon-caret-down-solid-before' :\n 'playback__settingsLink icon-font-before';\n\n return (\n <div className=\"playback__settings playback__settings--active\">\n <a className={logoutClass} onClick={handleLogin}>\n <span className=\"playback__settingsText\">\n {formatMessage(messages['provider.dialog.title'])}\n </span>\n </a>\n {logoutEl}\n </div>\n );\n};\n\nProviderSettings.defaultProps = {\n providerInfo: {}\n};\n\nProviderSettings.propTypes = {\n displayLogout: PropTypes.bool,\n handleLogout: PropTypes.func,\n handleLogin: PropTypes.func,\n providerInfo: PropTypes.object,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nexport default injectIntl(ProviderSettings);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/branding/ProviderSettings.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport { AuthTypes } from 'enums';\nimport { isEmpty } from 'lib/util';\nimport {\n createAndPerformStartAuthenticationAction,\n createAndPerformLogoutAction,\n createDisplayProviderDialogAction\n} from 'common/actions/authenticationActions';\nimport { roadblockSelector, isDomesticSelector } from 'common/selectors/appSelector';\nimport { brandingSelector } from 'common/selectors/pageSelector';\nimport providerSelector from 'common/selectors/providerSelector';\nimport ProviderLogo from './ProviderLogo';\nimport ProviderLogoPlayback from './ProviderLogoPlayback';\n\nclass BrandingContainer extends Component {\n constructor(props, context) {\n super(props, context);\n this.handleLogout = this.handleLogout.bind(this);\n this.handleLogoutFromPlaybackPage = this.handleLogoutFromPlaybackPage.bind(this);\n this.handleLogin = this.handleLogin.bind(this);\n }\n\n // for homepage, after user logs out, refresh page to avoid DOM maintainance (since player bundle manipulates DOM directly)\n handleLogout(event) {\n event.preventDefault();\n const { stream, dispatch } = this.props;\n dispatch(createAndPerformLogoutAction(stream))\n .finally(() => {\n window.location = window.location;\n });\n }\n\n // from the playback page, we're able to logout without refreshing\n handleLogoutFromPlaybackPage(event) {\n event.preventDefault();\n const { stream, dispatch } = this.props;\n dispatch(createAndPerformLogoutAction(stream));\n }\n\n handleLogin(event) {\n event.preventDefault();\n this.props.dispatch(createAndPerformStartAuthenticationAction(null))\n .then((isAuthenticated) => {\n if (isAuthenticated === false) {\n this.props.dispatch(createDisplayProviderDialogAction());\n }\n });\n }\n\n render() {\n const { branding, isDomestic, isMobile, location, providerInfo, roadblock, userAuth } = this.props;\n const loggedIn = (userAuth.indexOf(AuthTypes.MVPD) !== -1 || userAuth.indexOf(AuthTypes.ISP) !== -1);\n const displayLogout = (!isEmpty(providerInfo) && userAuth.indexOf(AuthTypes.MVPD) !== -1);\n const isPlayerPage = location && location.pathname === '/player';\n const hideProviderLogo = (isDomestic && isPlayerPage) || (roadblock && isMobile);\n // different logo for player page, watch logo also visible while authd\n if (isPlayerPage) {\n return (\n <ProviderLogoPlayback\n displayLogout={displayLogout}\n handleLogin={this.handleLogin}\n handleLogout={this.handleLogoutFromPlaybackPage}\n hideProviderLogo={hideProviderLogo}\n loggedIn={loggedIn}\n providerInfo={providerInfo}\n userAuth={userAuth}\n branding={isDomestic ? null : branding}\n />\n );\n }\n\n if (hideProviderLogo) {\n return null;\n }\n\n return (\n <ProviderLogo\n displayLogout={displayLogout}\n handleLogout={this.handleLogout}\n providerInfo={providerInfo}\n userAuth={userAuth}\n branding={isDomestic ? null : branding}\n />\n );\n }\n}\n\nBrandingContainer.propTypes = {\n branding: PropTypes.object,\n stream: PropTypes.object,\n dispatch: PropTypes.func,\n isDomestic: PropTypes.bool,\n isMobile: PropTypes.bool,\n location: PropTypes.object,\n providerInfo: PropTypes.object,\n roadblock: PropTypes.bool,\n userAuth: PropTypes.array\n};\n\nBrandingContainer.defaultProps = {\n userAuth: [],\n providerInfo: {}\n};\n\nconst mapStateToProps = (state) => {\n const { app: { isMobile = false } = {} } = state;\n const { authTypes: userAuth } = state.authentication;\n return {\n branding: brandingSelector(state),\n isDomestic: isDomesticSelector(state),\n isMobile,\n providerInfo: providerSelector(state),\n roadblock: roadblockSelector(state),\n userAuth\n };\n};\n\nexport default connect(mapStateToProps)(BrandingContainer);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/branding/BrandingContainer.js","// eslint-disable-next-line no-unused-vars\nimport React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { replace } from 'react-router-redux';\nimport injectIntl from 'common/injectIntl';\nimport { apiDateFormatter, dateFormat } from 'lib/format';\nimport { fetchSchedule, setStatusFilter } from './actions';\nimport FilterGroup from './FilterGroup';\nimport { isIntlSelector } from 'common/selectors/appSelector';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport routingSelector from 'common/selectors/routingSelector';\n\nexport function updateQuery(dispatch, ownProps, newQuery) {\n const { flags, location, fetchAction } = ownProps;\n let { query = {} } = location;\n query = { ...query, ...newQuery, ...flags };\n dispatch(replace({ ...location, query }));\n dispatch(fetchAction(query));\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n onSportsFilterChange(option) {\n updateQuery(dispatch, ownProps, {\n categoryId: option.value ? option.value : undefined\n });\n },\n onReplayDateSelectorChange(option) {\n const startDate = new Date();\n const date = startDate.getDate();\n startDate.setDate(date - option.value);\n const endDate = new Date();\n\n updateQuery(dispatch, ownProps, {\n startDate: apiDateFormatter(startDate),\n endDate: apiDateFormatter(endDate)\n });\n },\n onNetworkFilterChange(option) {\n updateQuery(dispatch, ownProps, {\n channel: option.value || undefined\n });\n },\n onDateSelectorChange(date) {\n updateQuery(dispatch, ownProps, {\n startDate: apiDateFormatter(date)\n });\n },\n onStatusFilterChange(status) {\n dispatch(setStatusFilter(status));\n\n const { location: { query: { dates } = {} } } = ownProps;\n const hasDatesParam = dates && /^\\d{8}/.test(dates);\n let startDate;\n let endDate;\n if (status === 'upcoming' && hasDatesParam) { // for syndicated player\n const start = dates.split('-')[0];\n const today = dateFormat.dateToKey(new Date());\n startDate = start > today ? start : today;\n }\n\n updateQuery(dispatch, ownProps, {\n type: status,\n startDate,\n endDate\n });\n }\n});\n\nconst mapStateToProps = (state) => {\n const { locationBeforeTransitions } = routingSelector(state);\n const { pathname = '' } = locationBeforeTransitions || {};\n const isResponsive = pathname !== '/syndicated/player';\n return {\n isIntl: isIntlSelector(state),\n flags: persistentFlagsSelector(state),\n isResponsive\n };\n};\n\nconst FilterGroupContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(injectIntl(FilterGroup));\n\nFilterGroupContainer.defaultProps = {\n fetchAction: fetchSchedule\n};\n\nFilterGroupContainer.propTypes = {\n fetchAction: PropTypes.func\n};\n\nexport default FilterGroupContainer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/FilterGroupContainer.js","import React, { PropTypes } from 'react';\nimport Select from 'common/Select';\nimport { intlShape } from 'common/injectIntl';\nimport findIndex from 'lodash/findIndex';\nimport { dateFormat } from 'lib/format';\nimport DateSlider from './DateSlider';\nimport StatusFilter from './StatusFilter';\n\nconst FilterGroup = ({\n isIntl,\n location,\n isResponsive,\n categories,\n channels,\n onDateSelectorChange,\n onStatusFilterChange,\n onSportsFilterChange,\n onNetworkFilterChange,\n showSportOptions,\n showNetworkOptions,\n messages,\n intl: { formatMessage }\n}) => {\n const query = location.query;\n const statusDefaultSelection = query.type || StatusFilter.Options.LIVE;\n const watchRegion = query.watchRegion;\n const sportOptions = showSportOptions ?\n [{ label: formatMessage(messages['schedule.allSports']), value: undefined, type: 'category' }]\n .concat(categories.map((cat) => ({ label: cat.name || cat.guid, value: cat.guid, type: cat.type, id: cat.id }))) : null;\n\n const networkOptions = showNetworkOptions ? [{ label: formatMessage(messages['schedule.allNetworks']), value: '' }]\n .concat(\n [...channels]\n .map((channel) => ({\n label: channel.name,\n value: channel.guid,\n id: channel.guid\n }))\n ) : null;\n const sportDefaultSelection = sportOptions &&\n findIndex(sportOptions, (option) => (option.value === query.categoryId));\n const networkDefaultSelection = networkOptions && findIndex(networkOptions, (option) => (option.value === query.channel));\n\n const hasDatesParam = query.dates && /^\\d{8}/.test(query.dates); // This is meant to be for syndicated player\n let startDateStr = query.startDate;\n let sliderDateStr;\n let maxDaysInFuture;\n if (hasDatesParam) {\n const [start, end] = query.dates.split('-');\n const today = dateFormat.dateToKey(new Date());\n startDateStr = today < start ? start : today;\n if (end && end > startDateStr) {\n const endDateStr = end;\n maxDaysInFuture = (parseInt(endDateStr, 10) - parseInt(startDateStr, 10)) + 1;\n }\n sliderDateStr = startDateStr;\n }\n const sliderDate = dateFormat.paramToDate(sliderDateStr) || new Date();\n const dateSelector = statusDefaultSelection === StatusFilter.Options.UPCOMING ? (\n <DateSlider\n date={sliderDate}\n onDateSelected={onDateSelectorChange}\n maxDaysInFuture={maxDaysInFuture}\n isResponsive={isResponsive}\n isIntl={isIntl}\n messages={messages}\n formatMessage={formatMessage}\n watchRegion={watchRegion}\n />\n ) : null;\n let replayDateSelector = null;\n if (statusDefaultSelection === StatusFilter.Options.REPLAY) {\n const isReplaySlider = true;\n replayDateSelector = (\n <DateSlider\n date={sliderDate}\n onDateSelected={onDateSelectorChange}\n maxDaysInFuture={0}\n maxDaysInPast={30}\n isResponsive={isResponsive}\n isReplaySlider={isReplaySlider}\n isIntl={isIntl}\n messages={messages}\n formatMessage={formatMessage}\n watchRegion={watchRegion}\n />\n );\n }\n\n const needSeparator = sportOptions || networkOptions || replayDateSelector;\n\n return (\n <div className=\"filter-group-wrap\">\n <StatusFilter\n selected={statusDefaultSelection}\n handleClick={onStatusFilterChange}\n labels={{\n [StatusFilter.Options.LIVE]: formatMessage(messages['schedule.live']),\n [StatusFilter.Options.UPCOMING]: formatMessage(messages['schedule.upcoming']),\n [StatusFilter.Options.REPLAY]: formatMessage(messages['schedule.replay'])\n }}\n />\n\n <div className={needSeparator ? 'filters' : ''}>\n {sportOptions ? <Select\n defaultSelection={sportDefaultSelection}\n options={sportOptions}\n onChange={onSportsFilterChange}\n /> : null}\n {networkOptions ? <Select\n defaultSelection={networkDefaultSelection}\n options={networkOptions}\n onChange={onNetworkFilterChange}\n /> : null}\n </div>\n <div className=\"replaydate-wrap\">\n {replayDateSelector}\n </div>\n <div className=\"datepicker-wrap\">\n {dateSelector}\n </div>\n </div>\n );\n};\n\nFilterGroup.propTypes = {\n categories: PropTypes.array,\n channels: PropTypes.array,\n onSportsFilterChange: PropTypes.func,\n onNetworkFilterChange: PropTypes.func,\n onDateSelectorChange: PropTypes.func,\n onStatusFilterChange: PropTypes.func,\n location: PropTypes.object,\n isIntl: PropTypes.bool,\n showSportOptions: PropTypes.bool,\n showNetworkOptions: PropTypes.bool,\n isResponsive: PropTypes.bool,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nFilterGroup.defaultProps = {\n categories: [],\n channels: [],\n showSportOptions: true,\n showNetworkOptions: true\n};\n\nexport default FilterGroup;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/FilterGroup.js","import React, { PropTypes, Component } from 'react';\nimport classnames from 'classnames';\n\nclass Select extends Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.state = { selected: this.getDefaultSelection() };\n }\n\n /**\n * componentWillReceiveProps has been deprecate since React 16.3.\n * It needs to be replaced with getDerivedStateFromProps if we update\n * to React 16.3+\n */\n componentWillReceiveProps(nextProps) {\n if (nextProps.defaultSelection !== this.props.defaultSelection) {\n this.setState({ selected: nextProps.defaultSelection });\n }\n }\n\n getDefaultSelection() {\n const { defaultSelection } = this.props;\n return defaultSelection >= 0 ? defaultSelection : 0;\n }\n\n handleClick(index, option, event) {\n this.setState({ selected: index });\n this.props.onChange(option);\n event.preventDefault();\n event.stopPropagation();\n }\n\n handleChange(event) {\n let index = null;\n const { target: { value: eventValue } } = event;\n const selectedValue = eventValue && eventValue.toString();\n const { options, onChange } = this.props;\n index = options.map(({ value, label }) => (value || label)).indexOf(selectedValue);\n\n if (index !== null) {\n /**\n * first option value in the dropdown is -1, option[-1] returns undefined,\n * so we need to reset it to 0 to avoid array out of bounds exception.\n * We can't setState selected to 0 directly, since setState({selected: -1}) will trigger\n * companonent rerender, in app/espnapp/schedule/ScheduleCategorySection.js which is\n * what we expected\n */\n const option = index > 0 ? options[index] : options[0];\n this.setState({ selected: index });\n onChange(option);\n }\n }\n\n render() {\n const { options = [], menuSizeClass, name } = this.props;\n const { selected } = this.state;\n const menuClassName = classnames('dropdown-menu', menuSizeClass);\n const selectedOption = selected > 0 ? options[selected] : options[0];\n\n return (\n <span className=\"dropdown-wrapper-container\">\n <div className=\"dropdown-wrapper display-desktop hoverable\" data-behavior=\"button_dropdown\">\n <button type=\"button\" className=\"button-filter med dropdown-toggle\">{selectedOption.label}</button>\n <ul className={menuClassName} role=\"menu\">\n {options.map((option, index) => (\n <li key={`select-${option.label}-${option.id}`}>\n <a onClick={(event) => { this.handleClick(index, option, event); }}>{option.label}</a>\n </li>\n ))}\n </ul>\n </div>\n <div className=\"dropdown-wrapper display-mobile mobile-dropdown\">\n <span className=\"mobile-arrow\" />\n <select onChange={this.handleChange} value={selectedOption.value} name={name}>\n {options.map((opt) => (\n <option\n value={opt.value || opt.label}\n key={`selectmobile-${opt.label}-${opt.id}`}\n >\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n </span>\n );\n }\n}\n\nSelect.propTypes = {\n name: PropTypes.string,\n options: PropTypes.array,\n onChange: PropTypes.func,\n menuSizeClass: PropTypes.string,\n defaultSelection: PropTypes.number\n};\n\nSelect.defaultProps = {\n onChange: () => {},\n menuSizeClass: 'med',\n defaultSelection: 0\n};\n\nexport default Select;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/Select.js","export default function isPacRimOrCarib(regionCode) {\n return regionCode === 'pacrim' || regionCode === 'caribbean';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/isPacRimOrCarib.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport groupBy from 'lodash/groupBy';\nimport uniqBy from 'lodash/uniqBy';\nimport { NO_CATEGORY_ID_MAPPINGS } from 'constants';\nimport { apiDateFormatter, dateFormat } from 'lib/format';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport { dateFormatSelector, upcomingScheduleDateFormatSelector, intlSelector } from 'common/selectors/appSelector';\nimport { preauthorizedResourcesSelector } from 'common/selectors/authenticationSelectors';\nimport darkThemeSelector from 'common/selectors/darkThemeSelector';\nimport ScheduleCategorySection from '@alias/ScheduleCategorySection';\nimport StatusFilter from './StatusFilter';\nimport isPacRimOrCarib from './isPacRimOrCarib';\n\nconst compareObjectsByName = (noCategoryMapping) => (\n (objA, objB) => {\n const aName = objA.name.trim().toLowerCase();\n const bName = objB.name.trim().toLowerCase();\n\n if (aName === noCategoryMapping) {\n return 1;\n }\n if (bName === noCategoryMapping) {\n return -1;\n }\n if (aName > bName) {\n return 1;\n } else if (aName < bName) {\n return -1;\n }\n return 0;\n }\n);\n\nconst getTranslatedTab = (messages, formatMessageFn) => (\n (selectedTab = '', type = '') => {\n let key = `schedule.${selectedTab.toLowerCase()}`;\n if (type === 'selectedTabError') {\n key = `${key}.selectedTabError`;\n }\n\n const translatedSelectedTab = formatMessageFn(messages[key]) || '';\n\n if (translatedSelectedTab === '') {\n return selectedTab;\n }\n\n return translatedSelectedTab;\n }\n);\n\nconst getTranslatedDate = (date, formatMessage, messages, lang) => {\n if (lang === 'en') {\n return date;\n }\n try {\n const arr = date.split(' ');\n let weekDay = arr[0].replace(',', '');\n weekDay = formatMessage(messages[`schedule.calendar.day.${weekDay}`]);\n const month = formatMessage(messages[`schedule.calendar.month.${arr[3]}`]);\n return `${weekDay} ${arr[1]} ${arr[2]} ${month}`;\n } catch (err) {\n console.error(err.messages);\n return date;\n }\n};\n\nconst ScheduleCategoryContainer = ({\n listings,\n preauthorizedResources,\n selectedTab,\n startDateValue,\n userAuth,\n showSectionCaption,\n darkTheme,\n intl: { formatMessage },\n messages,\n intlDateFormat,\n upcomingDateFormat,\n bucketName,\n lang = 'en',\n watchRegion\n}) => {\n if (listings.length === 0) {\n // Utility function used to tranlate specific tab by type\n const translateTab = getTranslatedTab(messages, formatMessage);\n const translatedSelectedTab = translateTab(selectedTab, 'selectedTabError');\n const otherTabs = [\n StatusFilter.Options.LIVE,\n StatusFilter.Options.UPCOMING,\n StatusFilter.Options.REPLAY\n ].filter((tab) => (tab !== selectedTab));\n\n return (\n <p>\n <FormattedMessage\n {...messages['schedule.message.empty']}\n values={{\n br: <br />,\n selectedTab: translatedSelectedTab,\n otherTabs1: translateTab(otherTabs[0]).toLocaleLowerCase(),\n otherTabs2: translateTab(otherTabs[1]).toLocaleLowerCase()\n }}\n />\n </p>\n );\n }\n\n const renderTableCaption = (dateValue, formatOfDate, showCaption = false) => {\n /**\n * For isIntl, formatOfDate value is 'date15' as 'Weekday, number de month',\n * and formatOfDate default value is 'date10' as 'dddd, MMMM Do' for US.\n * We will check if watchRegion is PacRim or caribbean, and if it is true,\n * use 'date16' date formate as 'dddd, Do MMMM'\n */\n let date;\n if (isPacRimOrCarib(watchRegion)) {\n date = dateFormat.dateFormat(dateValue, 'date16');\n } else {\n const isNLEdition = lang && lang.toLowerCase() === 'nl';\n date = dateFormat.dateFormat(dateValue, formatOfDate);\n date = getTranslatedDate(date, formatMessage, messages, lang);\n if (isNLEdition) {\n date = date.replace('de', '').toLocaleLowerCase();\n }\n }\n // Handles the removal of `text-transform: capitalize` enforced by pageShell.css for Brazil\n const dateStyles = (formatOfDate === 'date15') ? { textTransform: 'none' } : {};\n\n return (showCaption === true) && <h2 style={dateStyles} className=\"table-caption\">{date}</h2>;\n };\n\n // TODO: roll back to use `id` as key once category id is populated for E+ content from graphql\n const categories = uniqBy(listings.map((listing) => listing.categories[0]), 'name')\n .sort(compareObjectsByName(NO_CATEGORY_ID_MAPPINGS[lang]));\n const listingsGroupedByCategory = groupBy(listings, (listing) => listing.categories[0].name);\n const sections = categories.map((category) => {\n const categoryListings = listingsGroupedByCategory[category.name];\n return (\n <ScheduleCategorySection\n category={category}\n listings={categoryListings}\n userAuth={userAuth}\n key={`sched-category-${category.name}`}\n selectedTab={selectedTab}\n preauthorizedResources={preauthorizedResources}\n defaultLabel={formatMessage(messages['schedule.allLeagues'])}\n blackoutMessage={formatMessage(messages['schedule.blackout'])}\n dateFormat={intlDateFormat}\n showSectionCaption={showSectionCaption}\n darkTheme={darkTheme}\n bucketName={bucketName}\n />\n );\n });\n\n return (\n <div>\n {renderTableCaption(startDateValue, upcomingDateFormat, selectedTab === StatusFilter.Options.UPCOMING)}\n <div>{sections}</div>\n </div>\n );\n};\n\nScheduleCategoryContainer.defaultProps = {\n selectedTab: StatusFilter.Options.LIVE,\n preauthorizedResources: [],\n startDateValue: apiDateFormatter(new Date())\n};\n\nScheduleCategoryContainer.propTypes = {\n listings: PropTypes.array,\n userAuth: PropTypes.array,\n selectedTab: PropTypes.string,\n startDateValue: PropTypes.string,\n preauthorizedResources: PropTypes.array,\n showSectionCaption: PropTypes.bool,\n darkTheme: PropTypes.bool,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired,\n intlDateFormat: PropTypes.string,\n upcomingDateFormat: PropTypes.string,\n bucketName: PropTypes.string,\n lang: PropTypes.string,\n watchRegion: PropTypes.string\n};\n\nconst mapStateToProps = (state) => ({\n preauthorizedResources: preauthorizedResourcesSelector(state),\n intlDateFormat: dateFormatSelector(state),\n upcomingDateFormat: upcomingScheduleDateFormatSelector(state),\n darkTheme: darkThemeSelector(state),\n lang: intlSelector(state).lang\n});\n\nexport default connect(mapStateToProps)(injectIntl(ScheduleCategoryContainer));\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/ScheduleCategoryContainer.js","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/groupBy.js\n// module id = 361\n// module chunks = 1","import { createSelector } from 'reselect';\nimport routingSelector from './routingSelector';\n\nexport default createSelector(\n routingSelector,\n ({ locationBeforeTransitions: { query: { darkmode } } }) => darkmode === 'true'\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/darkThemeSelector.js","module.exports = require('./components/Modal');\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-modal/lib/index.js\n// module id = 363\n// module chunks = 1","/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n return (/input|select|textarea|button|object/.test(nodeName) ?\n !element.disabled :\n \"a\" === nodeName ?\n element.href || isTabIndexNotNaN :\n isTabIndexNotNaN) && visible(element);\n}\n\nfunction hidden(el) {\n return (el.offsetWidth <= 0 && el.offsetHeight <= 0) ||\n el.style.display === 'none';\n}\n\nfunction visible(element) {\n while (element) {\n if (element === document.body) break;\n if (hidden(element)) return false;\n element = element.parentNode;\n }\n return true;\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute('tabindex');\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n return [].slice.call(element.querySelectorAll('*'), 0).filter(function(el) {\n return tabbable(el);\n });\n}\n\nmodule.exports = findTabbableDescendants;\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-modal/lib/helpers/tabbable.js\n// module id = 364\n// module chunks = 1","/**\n * lodash 3.2.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar baseAssign = require('lodash._baseassign'),\n createAssigner = require('lodash._createassigner'),\n keys = require('lodash.keys');\n\n/**\n * A specialized version of `_.assign` for customizing assigned values without\n * support for argument juggling, multiple sources, and `this` binding `customizer`\n * functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n */\nfunction assignWith(object, source, customizer) {\n var index = -1,\n props = keys(source),\n length = props.length;\n\n while (++index < length) {\n var key = props[index],\n value = object[key],\n result = customizer(value, source[key], key, object, source);\n\n if ((result === result ? (result !== value) : (value === value)) ||\n (value === undefined && !(key in object))) {\n object[key] = result;\n }\n }\n return object;\n}\n\n/**\n * Assigns own enumerable properties of source object(s) to the destination\n * object. Subsequent sources overwrite property assignments of previous sources.\n * If `customizer` is provided it is invoked to produce the assigned values.\n * The `customizer` is bound to `thisArg` and invoked with five arguments:\n * (objectValue, sourceValue, key, object, source).\n *\n * **Note:** This method mutates `object` and is based on\n * [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).\n *\n * @static\n * @memberOf _\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });\n * // => { 'user': 'fred', 'age': 40 }\n *\n * // using a customizer callback\n * var defaults = _.partialRight(_.assign, function(value, other) {\n * return _.isUndefined(value) ? other : value;\n * });\n *\n * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\nvar assign = createAssigner(function(object, source, customizer) {\n return customizer\n ? assignWith(object, source, customizer)\n : baseAssign(object, source);\n});\n\nmodule.exports = assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.assign/index.js\n// module id = 365\n// module chunks = 1","/**\n * lodash 3.1.2 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar getNative = require('lodash._getnative'),\n isArguments = require('lodash.isarguments'),\n isArray = require('lodash.isarray');\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object != 'function' && isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n isProto = typeof Ctor == 'function' && Ctor.prototype === object,\n result = Array(length),\n skipIndexes = length > 0;\n\n while (++index < length) {\n result[index] = (index + '');\n }\n for (var key in object) {\n if (!(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.keys/index.js\n// module id = 366\n// module chunks = 1","/* eslint-disable react/no-danger */\nimport React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport SearchFilter from 'common/search/SearchFilter';\nimport ProviderList from './ProviderList';\nimport Tier1ProviderGrid from './Tier1ProviderGrid';\nimport DMVPDButton from './DMVPDButton';\nimport { sortByRank as sortProvidersByRank } from 'lib/util';\nimport { providersSelector } from 'common/selectors/providerSelector';\nimport {\n showDMVPDUpsellSelector,\n isESPNAppSelector,\n faqUrlSelector,\n isIntlSelector,\n upsellUrlSelector\n} from 'common/selectors/appSelector';\n\n/**\n * getTier1Providers - Returns a list of filtered providers whose tier property is 1.\n * For international providers, the list is sorted by rank.\n *\n * @param {Array} providers - Array of provider objects to be filtered\n * @param {boolean} isIntl = false - Flag to determine if app is international\n *\n * @return {Array} - Array of filtered/sorted providers\n */\nfunction getTier1Providers(providers, isIntl = false) {\n const tierOneProviders = providers.filter((provider) => (provider.tier === 1));\n // Tier 1 Providers will only be sorted if 1) isInternational 2) the `rank` property is defined\n return (isIntl === true) ? tierOneProviders.sort(sortProvidersByRank) : tierOneProviders;\n}\n\nclass ProviderDialog extends Component {\n constructor(props) {\n super(props);\n this.state = { searchFilter: '', showTierOne: true };\n this.onFilterInputChange = this.onFilterInputChange.bind(this);\n this.onFilterInputFocus = this.onFilterInputFocus.bind(this);\n }\n\n onFilterInputChange(event) {\n const searchFilter = event.target.value;\n const { isESPNApp } = this.props;\n // Show tier one if is web picker or if user has backspaced and search filter is empty\n const showTierOne = (!isESPNApp) || searchFilter === '';\n this.setState({ searchFilter, showTierOne });\n }\n\n onFilterInputFocus() {\n if (this.props.isESPNApp) {\n this.setState({ showTierOne: false, searchFilter: 'zzzzz' });\n }\n }\n\n render() {\n const { messages,\n faqUrl,\n upsellUrl,\n intl: { formatMessage },\n providers,\n providerSelect,\n showDMVPDUpsell,\n showTierOneProviders,\n isESPNApp,\n isIntl,\n providerStyle,\n providerClass\n } = this.props;\n\n // FIXME: Supposed to use `FormattedMessage` from `react-intl` but can't use it because of css `>span`\n const description = formatMessage(messages['provider.dialog.description'], {\n noCost: `<span>${formatMessage(messages['provider.dialog.description.noCost'])}</span>`,\n faq: `<a target=\"_blank\" href=\"${faqUrl}\" class=\"watchProvider__link\">\n ${formatMessage(messages['provider.dialog.faq.label'])}</a>`,\n help: `<a target=\"_blank\" href=\"${formatMessage(messages['provider.dialog.help.link'])}\" class=\"watchProvider__link\">\n ${formatMessage(messages['provider.dialog.help.label'])}</a>`\n });\n const tier1Providers = getTier1Providers(providers, isIntl);\n const tier1Grid = (showTierOneProviders && tier1Providers.length > 0) ? (\n <div>\n <Tier1ProviderGrid isIntl={isIntl} providers={tier1Providers} providerSelect={providerSelect} />\n </div>\n ) : null;\n\n let preSearch;\n let postSearch;\n let modalTitle;\n let tierOne;\n let subtitle;\n const searchFilter = (\n <SearchFilter\n handleChange={this.onFilterInputChange}\n handleInputFocus={this.onFilterInputFocus}\n placeholder={formatMessage(messages['search.filter.placeholder'])}\n />\n );\n\n if (isESPNApp) {\n preSearch = searchFilter;\n subtitle = formatMessage(messages['provider.dialog.subtitle']);\n } else {\n modalTitle = (\n <h1 className=\"watchProvider__title\">\n <span>{formatMessage(messages['provider.dialog.title'])}</span>\n </h1>\n );\n postSearch = searchFilter;\n }\n\n const dmvpdButton = showDMVPDUpsell ?\n (\n <DMVPDButton\n text={formatMessage(messages['provider.dialog.button.text'])}\n link={upsellUrl}\n />\n ) : null;\n\n if (this.state.showTierOne) {\n tierOne = (\n <div>\n <p\n className=\"watchProvider__desc\"\n dangerouslySetInnerHTML={{ __html: description }}\n />\n {tier1Grid}\n {dmvpdButton}\n </div>\n );\n }\n\n return (\n <div>\n {modalTitle}\n <div style={providerStyle} className={providerClass}>\n {preSearch}\n {tierOne}\n {postSearch}\n <ProviderList\n filter={this.state.searchFilter}\n header={subtitle}\n providers={providers}\n providerSelect={providerSelect}\n />\n </div>\n </div>\n );\n }\n}\n\nProviderDialog.propTypes = {\n providers: PropTypes.array,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired,\n providerSelect: PropTypes.func,\n showDMVPDUpsell: PropTypes.bool,\n isESPNApp: PropTypes.bool,\n isIntl: PropTypes.bool,\n showTierOneProviders: PropTypes.bool,\n providerStyle: PropTypes.object,\n providerClass: PropTypes.string,\n faqUrl: PropTypes.string,\n upsellUrl: PropTypes.string\n};\n\nProviderDialog.defaultProps = {\n providers: [],\n showProviderDialog: false,\n isESPNApp: false,\n isIntl: false,\n showTierOneProviders: true\n};\n\nconst mapStateToProps = (state) => ({\n providers: providersSelector(state),\n isESPNApp: isESPNAppSelector(state),\n isIntl: isIntlSelector(state),\n showDMVPDUpsell: showDMVPDUpsellSelector(state),\n upsellUrl: upsellUrlSelector(state),\n faqUrl: faqUrlSelector(state)\n});\n\nexport default (connect(mapStateToProps)(injectIntl(ProviderDialog)));\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/chooseProvider/ProviderDialog.js","import React, { PropTypes } from 'react';\n\nconst SearchFilter = ({ placeholder, handleChange, handleInputFocus }) => (\n <section className=\"search-section icon-font-before icon-search-solid-before search-section--provider\">\n <input\n name=\"search-section\"\n type=\"text\"\n autoComplete=\"off\"\n placeholder={placeholder}\n onChange={handleChange}\n onFocus={handleInputFocus}\n />\n </section>\n);\n\nSearchFilter.propTypes = {\n handleChange: PropTypes.func,\n placeholder: PropTypes.string.isRequired,\n handleInputFocus: PropTypes.func\n};\n\nexport default SearchFilter;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/search/SearchFilter.js","import React, { PropTypes } from 'react';\n\nconst Provider = ({ provider, providerSelect }) => {\n const { id, name, appLink } = provider;\n let clickHandler;\n let href = appLink;\n if (providerSelect) {\n clickHandler = (event) => { event.preventDefault(); return providerSelect(provider); };\n href = null;\n }\n return (\n <li key={id}>\n <a\n href={href}\n onClick={clickHandler}\n >\n {name}\n </a>\n </li>\n );\n};\n\nProvider.propTypes = {\n provider: PropTypes.object,\n providerSelect: PropTypes.func\n};\n\nexport default Provider;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/chooseProvider/Provider.js","import React, { PropTypes } from 'react';\nimport Provider from './Provider';\n\nconst headerStyle = {\n cursor: 'default',\n fontSize: '13px'\n};\n\nconst ProviderList = ({ filter, providers, providerSelect, header }) => {\n const listHeader = header && !filter ? (\n <li className=\"watchProvider__list-header\">\n <a style={headerStyle}>{header}</a>\n </li>\n ) : null;\n return (\n <ul className=\"watchProvider__list-items\">\n {listHeader}\n {providers\n .filter((provider) => (provider.name.toLowerCase().indexOf(filter.toLowerCase()) >= 0))\n .map((provider) => (\n <Provider\n key={provider.id}\n provider={provider}\n providerSelect={providerSelect}\n />\n ))\n }\n </ul>\n );\n};\n\nProviderList.propTypes = {\n filter: PropTypes.string,\n providerSelect: PropTypes.func,\n providers: PropTypes.array,\n header: PropTypes.string\n};\n\nProviderList.defaultProps = {\n providers: []\n};\n\nexport default ProviderList;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/chooseProvider/ProviderList.js","import React, { PropTypes } from 'react';\n\nconst intlImgStyle = {\n maxWidth: '65%',\n maxHeight: '55%',\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n};\n\nconst intlAnchorStyle = {\n height: '50px',\n display: 'block'\n};\n\nconst Tier1Provider = ({ isIntl, provider, providerSelect }) => {\n const { images: { picker: { href: providerImageUrl = '' } }, appLink } = provider;\n let clickHandler;\n let href = appLink;\n let anchorStyle;\n let imgStyle;\n if (providerSelect) {\n clickHandler = (event) => { event.preventDefault(); return providerSelect(provider); };\n href = null;\n }\n // Override style for intl tier one providers\n if (isIntl) {\n anchorStyle = intlAnchorStyle;\n imgStyle = intlImgStyle;\n }\n\n return (\n <li onClick={clickHandler}>\n <a style={anchorStyle} href={href}><img style={imgStyle} src={providerImageUrl} alt={provider.name} /></a>\n </li>\n );\n};\n\nTier1Provider.propTypes = {\n isIntl: PropTypes.bool,\n provider: PropTypes.object,\n providerSelect: PropTypes.func\n};\n\nexport default Tier1Provider;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/chooseProvider/Tier1Provider.js","import React, { PropTypes } from 'react';\nimport Tier1Provider from './Tier1Provider';\n\nconst Tier1ProviderGrid = ({ isIntl, providers, providerSelect }) => (\n <ul className=\"watchProvider__list-items--is-premier\">\n {providers.map((provider) => (\n <Tier1Provider\n key={`tier1provider${provider.name}`}\n isIntl={isIntl}\n provider={provider}\n providerSelect={providerSelect}\n />\n ))}\n </ul>\n);\n\nTier1ProviderGrid.propTypes = {\n isIntl: PropTypes.bool,\n providers: PropTypes.array,\n providerSelect: PropTypes.func\n};\n\nexport default Tier1ProviderGrid;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/chooseProvider/Tier1ProviderGrid.js","import React, { PropTypes } from 'react';\n\nconst DMVPDButton = ({ text, link = 'http://www.espninstantaccess.com' }) => (\n <section className=\"watchProvider__btn\">\n <a className=\"button-alt full-width lg\" target=\"_blank\" rel=\"noopener noreferrer\" href={link}>\n <span>{text}</span>\n </a>\n </section>\n);\n\nDMVPDButton.propTypes = {\n text: PropTypes.string,\n link: PropTypes.string\n};\n\nexport default DMVPDButton;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/chooseProvider/DMVPDButton.js","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/enquire.js/src/Util.js\n// module id = 368\n// module chunks = 1","/* eslint-disable import/prefer-default-export */\nimport Promise from 'bluebird';\nimport {\n getAdobePassAuthenticationInfo,\n createGetAuthenticationInfoAction,\n createAndPerformStartAuthenticationAction\n} from 'common/actions/authenticationActions';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport selectedStreamSelector from 'common/selectors/selectedStreamSelector';\n\nexport function domainCheck(key) { // client only action\n return () => new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = `https://broadband.espn.com/espn3/auth/watchespn/userData?format=json&product=syndicated&rand=${Date.now()}&key=${key}`;\n script.async = true;\n script.onload = () => {\n resolve(window.ud || {});\n };\n script.onerror = (err) => {\n reject(err);\n };\n document.body.appendChild(script);\n });\n}\n\nexport function updateAdobeAuthentication() {\n return async (dispatch, getState) => {\n const state = getState();\n const content = selectedContentSelector(state);\n const stream = selectedStreamSelector(state);\n const isAuthenticated = await dispatch(createAndPerformStartAuthenticationAction({ content, stream }));\n if (isAuthenticated) {\n const info = await dispatch(getAdobePassAuthenticationInfo());\n const { providerDialog: { providers: providersFromApi } } = state;\n const providerInfo = providersFromApi.filter(({ abbreviation }) =>\n abbreviation === info.mvpd\n ).shift();\n if (providerInfo) {\n dispatch(createGetAuthenticationInfoAction(providerInfo));\n }\n }\n return isAuthenticated;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/actions/index.js","import React, { PropTypes, PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { SyndicatedPlayerLoginOptions, PlayerPlacement, ContentStatus, Flags } from 'enums';\nimport WatchPropTypes from 'common/PropTypes';\nimport { authStateKnown } from 'lib/auth';\nimport { isEmpty } from 'lib/util';\nimport ResponsiveThumbnail from 'common/ResponsiveThumbnail';\nimport authenticationAware from 'webapp/common/authenticationAware';\nimport { contentUnSelect } from 'common/actions/appActions';\nimport { createClearPlayingStreamAction, createResetPlayerAction } from 'webapp/player/actions';\nimport { createDisplayProviderDialogAction, createCloseProviderDialogAction } from 'common/actions/authenticationActions';\nimport ProviderDialog from '../ProviderDialog';\nimport ConnectedPlayer from '../ConnectedPlayer';\nimport styles from './style';\nimport playable from '@alias/Playable';\nimport SyndicatedPlayerAPIProxy from '../SyndicatedPlayerAPIProxy';\n\nconst { SELF, NEW_WINDOW, NEW_WINDOW_MANAGED } = SyndicatedPlayerLoginOptions;\nconst IMAGE_WIDTHS = [400, 640, 1200, 1800];\n\nexport const domainAuthStatus = {\n UNKNOWN: 0,\n NOT_ALLOWED: 1,\n ALLOWED: 2\n};\n\nclass SyndicatedPlayer extends PureComponent {\n constructor(props) {\n super(props);\n this.onContinueClick = this.onContinueClick.bind(this);\n this.onReloadClick = this.onReloadClick.bind(this);\n this.state = {\n isAuthenticated: false,\n authRetry: props.authRetry,\n xdomainBlocked: props.xdomainBlocked\n };\n }\n\n componentDidMount() {\n this.apiProxy = new SyndicatedPlayerAPIProxy(this);\n }\n\n componentWillReceiveProps(nextProps) {\n this.apiProxy.componentWillReceiveProps(nextProps);\n const {\n canPlayContent: nextCanPlayContent,\n userAuth: nextUserAuth,\n errorMessage: nextErrorMessage\n } = nextProps;\n const { dispatch, canPlayContent, userAuth, location: { query } } = this.props;\n if (\n query[Flags.AUTO_DISPLAY_PROVIDER_DIALOG] === 'true' &&\n !nextErrorMessage &&\n !authStateKnown(userAuth) &&\n authStateKnown(nextUserAuth) &&\n nextUserAuth.indexOf('mvpd') === -1\n ) {\n dispatch(createDisplayProviderDialogAction());\n }\n if (!nextCanPlayContent && canPlayContent) {\n dispatch(contentUnSelect());\n dispatch(createClearPlayingStreamAction());\n dispatch(createResetPlayerAction());\n dispatch(createCloseProviderDialogAction(false));\n if (this.state.isAuthenticated || this.state.authRetry) {\n this.setState({ isAuthenticated: false, authRetry: false });\n }\n }\n }\n\n componentDidUpdate({ content: prevContent }) {\n const { canPlayContent, content, clickHandler, player: { embedded } } = this.props;\n if (canPlayContent && embedded && prevContent.id !== content.id) {\n clickHandler();\n }\n }\n\n componentWillUnmount() {\n this.apiProxy.destroy();\n }\n\n onContinueClick(event, providerInfo) {\n const { loginOption, providerSelect } = this.props;\n\n if (loginOption === NEW_WINDOW) {\n return;\n }\n\n event.preventDefault();\n\n this.providerInfo = providerInfo;\n\n if (loginOption === SELF) {\n providerSelect(providerInfo);\n } else if (loginOption === NEW_WINDOW_MANAGED) {\n const loginWindow = window.open(event.currentTarget.href, 'AdobePassProxyLogin');\n if (!loginWindow) {\n console.warn('login proxy page blocked');\n return;\n }\n this.loginWindow = loginWindow;\n }\n }\n\n onReloadClick() {\n this.recheckAccess();\n }\n\n onAuthSuccess() {\n this.setState({\n isAuthenticated: true,\n authRetry: false,\n xdomainBlocked: false\n });\n }\n\n onLoginClose() {\n this.loginWindow = null;\n }\n\n onXDomainCheckFail() {\n this.props.providerSelect(this.providerInfo);\n }\n\n parentHost(host) {\n const { onParentHost } = this.props;\n if (onParentHost) {\n onParentHost(host);\n }\n }\n\n recheckAccess() { // eslint-disable-line class-methods-use-this\n this.apiProxy.reload();\n }\n\n render() {\n const { isAuthenticated, authRetry, xdomainBlocked } = this.state;\n const {\n providerDialog: { providers, display },\n content: { name, status, imageHref },\n playingStream,\n branding,\n location,\n player: { embedded },\n canPlayContent,\n domainAuth,\n errorMessage,\n adobePassLogout,\n clickHandler,\n onSocialOpened,\n onSocialClosed,\n onCaptionOpened,\n onCaptionClosed,\n providerSelect\n } = this.props;\n const showProviderDialog = display || authRetry;\n if (domainAuth === domainAuthStatus.UNKNOWN) {\n return null;\n }\n\n const playButtonClasses = classNames('button-play', 'button-play--video', {\n 'button-play--live': (status === ContentStatus.LIVE)\n });\n const dialogViewItem = [];\n // `canPlayContent` will never be `true` when domain is not whitelisted\n // since it doesn't perform `createSmartAdobePassInitializeAction`\n if (!canPlayContent || !embedded || isEmpty(playingStream)) {\n dialogViewItem.push(\n <ResponsiveThumbnail\n className=\"hero_img\"\n style={showProviderDialog ? { position: 'absolute', opacity: 0.2 } : {}}\n src={imageHref}\n srcSetWidths={IMAGE_WIDTHS}\n sizes=\"100vw\"\n alt={name}\n cquality={95}\n />\n );\n }\n let el;\n if (errorMessage) {\n el = <div style={styles.message}>{errorMessage}</div>;\n } else if (showProviderDialog) {\n el = (\n <ProviderDialog\n providers={providers}\n branding={branding}\n isAuthenticated={isAuthenticated}\n onContinueClick={this.onContinueClick}\n onReloadClick={this.onReloadClick}\n providerSelect={providerSelect}\n authRetry={authRetry}\n xdomainBlocked={xdomainBlocked}\n />\n );\n } else {\n el = <div className={playButtonClasses} />;\n }\n dialogViewItem.push(el);\n\n const needPlayer = canPlayContent && !errorMessage;\n const isAuthenticatableScreen = !errorMessage && !showProviderDialog && !embedded;\n\n const dialogView = (\n <div style={styles.dialogContainer}>\n {dialogViewItem}\n {needPlayer && (\n <ConnectedPlayer\n ref={player => { this.connectedPlayer = player; }}\n playerPlacement={PlayerPlacement.HERO}\n branding={branding}\n location={location}\n render={embedded}\n handleLogout={adobePassLogout}\n onSocialOpened={onSocialOpened}\n onSocialClosed={onSocialClosed}\n onCaptionOpened={onCaptionOpened}\n onCaptionClosed={onCaptionClosed}\n />\n )}\n </div>\n );\n\n return (\n <div\n className=\"playback-container hero_wrapper\"\n style={styles.container}\n onClick={isAuthenticatableScreen && clickHandler}\n >\n {dialogView}\n </div>\n );\n }\n}\n\nSyndicatedPlayer.propTypes = {\n dispatch: PropTypes.func,\n content: WatchPropTypes.content,\n playingStream: WatchPropTypes.stream,\n userAuth: PropTypes.array,\n canPlayContent: PropTypes.bool,\n loginOption: PropTypes.number,\n providerDialog: PropTypes.object,\n providerSelect: PropTypes.func,\n branding: PropTypes.object,\n location: PropTypes.object,\n player: PropTypes.object,\n domainAuth: PropTypes.oneOf([\n domainAuthStatus.UNKNOWN,\n domainAuthStatus.ALLOWED,\n domainAuthStatus.NOT_ALLOWED\n ]),\n authRetry: PropTypes.bool,\n xdomainBlocked: PropTypes.bool,\n errorMessage: PropTypes.string,\n adobePassLogout: PropTypes.func.isRequired,\n clickHandler: PropTypes.func.isRequired,\n onParentHost: PropTypes.func,\n onSocialOpened: PropTypes.func,\n onSocialClosed: PropTypes.func,\n onCaptionOpened: PropTypes.func,\n onCaptionClosed: PropTypes.func\n};\n\nexport default authenticationAware()(playable(SyndicatedPlayer));\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/SyndicatedPlayer/index.js","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/debounce.js\n// module id = 371\n// module chunks = 1","import { PlayerEvents, Flags, AdobePass } from 'enums';\nimport { normalizeQueryString } from 'lib/format';\nimport { isEmpty } from 'lib/util';\nimport {\n fetchEventOrVideoByQuery,\n createRequestPageAction,\n createReceivePageAction,\n completePageLoad\n} from 'common/page/actions';\nimport { updateAdobeAuthentication } from 'webapp/syndicated/actions';\nimport { getEventByQuery } from 'common/actions/listingsActions';\nimport { updateRoute, contentUnSelect, streamUnSelect, contentSelect } from 'common/actions/appActions';\nimport { createAutoplayUpdatedAction } from 'webapp/player/actions';\nimport { AdobePassProxyLoginComponent } from 'common/page/AdobePassProxyLogin';\nimport { domainAuthStatus } from './SyndicatedPlayer';\nimport WatchESPNWebPlayer from 'webapp/common/video-player';\n\nconst PARTNER = 'watchespn';\nconst DOMAIN = 'syndicated-api';\n\nconst { Env: AdobePassEnv } = AdobePass;\n\nclass SyndicatedPlayerAPIProxy {\n constructor(component) {\n const {\n props\n } = component;\n const {\n adobePassLogout,\n location: { query: { referrer: referrerQuery } = {} }\n } = props;\n\n this.targetWindow = window.parent;\n const { referrer = '' } = document;\n // `referrerQuery` is for when it's self-reload and lose the original `document.referrer`.\n const originResult = /https?:\\/\\/[^\\/]+/.exec(referrerQuery || referrer);\n // try to specify the target origin, but you won't be able to know the parent location in old IE.\n this.targetOrigin = (originResult && originResult[0]) || '*';\n this.component = component;\n const { props: { location: { query: { instanceId = '' } } } } = this.component;\n this.instanceId = instanceId;\n this.adobePassLogout = adobePassLogout.bind(this);\n this._onPostMessage = this._onPostMessage.bind(this);\n this._onPlaying = this._onPlaying.bind(this);\n this._onPlay = this._onPlay.bind(this);\n this._onPause = this._onPause.bind(this);\n this._onAdPodStarted = this._onAdPodStarted.bind(this);\n this._onAdPodEnded = this._onAdPodEnded.bind(this);\n this._onAdStarted = this._onAdStarted.bind(this);\n this._onAdEnded = this._onAdEnded.bind(this);\n this._onProgramChange = this._onProgramChange.bind(this);\n this._onContentLoaded = this._onContentLoaded.bind(this);\n this._onContentEnded = this._onContentEnded.bind(this);\n this._onError = this._onError.bind(this);\n this._unsubscribe = this._subscribeMessage();\n this._publish(SyndicatedPlayerAPIProxy.Events.BRIDGE_READY);\n }\n\n componentWillReceiveProps(nextProps) {\n const {\n domainAuth: nextDomainAuth,\n providerInfo: nextProviderInfo,\n providerDialog: { display: nextDisplay },\n player: { embedded: nextEmbedded },\n query: nextQuery,\n content: nextContent\n } = nextProps;\n const { query, domainAuth, providerInfo, providerDialog: { display }, player: { embedded } } = this.component.props;\n if (domainAuth === domainAuthStatus.UNKNOWN && nextDomainAuth !== domainAuth) {\n this._publish(SyndicatedPlayerAPIProxy.Events.READY, { blocked: nextDomainAuth === domainAuthStatus.NOT_ALLOWED });\n }\n if (isEmpty(providerInfo) && !isEmpty(nextProviderInfo)) {\n this._publish(SyndicatedPlayerAPIProxy.Events.PROVIDER_SELECTED, { provider: this.getSelectedProvider(nextProps) });\n } else if (!isEmpty(providerInfo) && isEmpty(nextProviderInfo)) {\n this._publish(SyndicatedPlayerAPIProxy.Events.PROVIDER_LOGOUT);\n }\n if (nextDisplay && !display) {\n this._publish(SyndicatedPlayerAPIProxy.Events.PROVIDER_SCREEN_SHOWN);\n }\n if (nextEmbedded && !embedded && !this._playerUnsubscribe) {\n this._addPlayerListeners();\n } else if (!nextEmbedded && embedded && this._playerUnsubscribe) {\n this._removePlayerListeners();\n }\n // This should only be triggered when the `id` URL query is updated by schedule link click\n // When content is switched through API, content changes first followed by URL query update,\n // so it doesn't hit this condition\n if (!this._selecting && nextQuery.id && nextQuery.id !== query.id) {\n this.selectEventById(nextQuery.id);\n this._selecting = true;\n } else if (this._selecting && nextQuery.id && nextContent.id &&\n nextQuery.id === `${nextContent.id}` && nextQuery.id === query.id) {\n this._selecting = false;\n }\n }\n\n parentHost(host) {\n // this is called from the parent window in response to `BRIDGE_READY` event from the player,\n // when this is called, we assume the parent is handling the postMessage the player is sending\n // so it can also handle reloading the iframe when the mvpd login completes.\n this.hasBridgedParent = true;\n this.component.parentHost(host);\n }\n\n _addPlayerListeners() {\n if (!this.videoPlayer) {\n return;\n }\n let player = this.videoPlayer.player;\n if (player) {\n player.on(PlayerEvents.ESPN_PLAYING, this._onPlaying);\n player.on(PlayerEvents.ESPN_PLAY, this._onPlay);\n player.on(PlayerEvents.ESPN_PAUSE, this._onPause);\n player.on(PlayerEvents.ESPN_AD_POD_STARTED, this._onAdPodStarted);\n player.on(PlayerEvents.ESPN_AD_POD_ENDED, this._onAdPodEnded);\n player.on(PlayerEvents.ESPN_AD_STARTED, this._onAdStarted);\n player.on(PlayerEvents.ESPN_AD_ENDED, this._onAdEnded);\n player.on(PlayerEvents.ESPN_PROGRAM_CHANGE, this._onProgramChange);\n player.on(PlayerEvents.ESPN_CONTENT_LOADED, this._onContentLoaded);\n player.on(PlayerEvents.ESPN_CONTENT_ENDED, this._onContentEnded);\n player.on(PlayerEvents.ESPN_ERROR, this._onError);\n }\n this._playerUnsubscribe = () => {\n if (!this.videoPlayer) {\n return;\n }\n player = this.videoPlayer.player;\n if (player) {\n player.off(PlayerEvents.ESPN_PLAYING, this._onPlaying);\n player.off(PlayerEvents.ESPN_PLAY, this._onPlay);\n player.off(PlayerEvents.ESPN_PAUSE, this._onPause);\n player.off(PlayerEvents.ESPN_AD_POD_STARTED, this._onAdPodStarted);\n player.off(PlayerEvents.ESPN_AD_POD_ENDED, this._onAdPodEnded);\n player.off(PlayerEvents.ESPN_AD_STARTED, this._onAdStarted);\n player.off(PlayerEvents.ESPN_AD_ENDED, this._onAdEnded);\n player.off(PlayerEvents.ESPN_PROGRAM_CHANGE, this._onProgramChange);\n player.off(PlayerEvents.ESPN_CONTENT_LOADED, this._onContentLoaded);\n player.off(PlayerEvents.ESPN_CONTENT_ENDED, this._onContentEnded);\n player.off(PlayerEvents.ESPN_ERROR, this._onError);\n }\n };\n }\n\n _removePlayerListeners() {\n if (this._playerUnsubscribe) {\n this._playerUnsubscribe();\n this._playerUnsubscribe = null;\n }\n }\n\n async _updateHeroByQuery(queryArg, autoplayArg, thumbnail) {\n const query = normalizeQueryString(queryArg);\n const {\n dispatch,\n page: { id: pageId, name: pageName },\n player: { embedded },\n query: { autoStart },\n content\n } = this.component.props;\n dispatch(createRequestPageAction(pageId));\n dispatch(completePageLoad());\n const payload = await dispatch(fetchEventOrVideoByQuery(query));\n dispatch(contentUnSelect());\n dispatch(streamUnSelect());\n const { page: { edition, contents: heroContent } = {} } = payload || {};\n if (thumbnail) {\n heroContent.imageHref = thumbnail;\n }\n\n if (heroContent && content && (heroContent.id !== content.id)) {\n dispatch(contentSelect(heroContent));\n }\n\n if (embedded && autoplayArg === false) {\n const connectedPlayer = this.connectedPlayer;\n if (connectedPlayer) {\n await connectedPlayer.unembedPlayer();\n }\n }\n dispatch(createReceivePageAction({\n id: pageId,\n name: pageName,\n edition,\n heroContent,\n isFinal: true\n }));\n\n let autoplay = autoplayArg;\n if (autoplay == null) {\n if (embedded) {\n autoplay = true;\n } else if (autoStart === 'false') {\n autoplay = false;\n }\n }\n const hasAutoplay = autoplay != null;\n if (hasAutoplay) {\n // TODO: clarify the difference between `autoEmbed` and `autoplay`\n dispatch(createAutoplayUpdatedAction(autoplay));\n }\n dispatch(updateRoute(hasAutoplay ? { ...query, autoStart: autoplay } : query));\n }\n\n get connectedPlayer() {\n const { connectedPlayer: connectedPlayerWrapper } = this.component;\n let player;\n if (connectedPlayerWrapper) {\n // we assume `ConnectedPlayer` always use `connectPlayer` HoC which uses redux `connect`.\n const connectedPlayer = connectedPlayerWrapper.getWrappedInstance();\n if (connectedPlayer) {\n // get the instance from injectIntl HoC or maybe not using HoC any more\n player = connectedPlayer.getWrappedInstance() || connectedPlayer;\n }\n }\n return player;\n }\n\n get videoPlayer() {\n let playerBundleInstance;\n if (this.connectedPlayer) {\n playerBundleInstance = this.connectedPlayer.videoPlayer &&\n this.connectedPlayer.videoPlayer.getPlayer(WatchESPNWebPlayer.PlayerTech.BRIGHTCOVE);\n }\n return playerBundleInstance;\n }\n\n playVideo() {\n if (!this.videoPlayer) {\n return;\n }\n this.videoPlayer.play();\n }\n\n pauseVideo() {\n if (!this.videoPlayer) {\n return;\n }\n this.videoPlayer.pause();\n }\n\n muteStream() {\n if (!this.videoPlayer || !this.videoPlayer.mute) {\n return;\n }\n this.videoPlayer.mute();\n }\n\n unMuteStream() {\n if (!this.videoPlayer || !this.videoPlayer.unmute) {\n return;\n }\n this.videoPlayer.unmute();\n }\n\n selectById(id, autoplay, thumbnail = '') {\n if (!id) {\n return;\n }\n this._updateHeroByQuery({ id }, autoplay, thumbnail);\n }\n\n selectByEventId(eventId, autoplay, thumbnail = '') {\n if (!eventId) {\n return;\n }\n this._updateHeroByQuery({ eventId }, autoplay, thumbnail);\n }\n\n selectEventByNetworkName(network, thumbnail = '') {\n if (!network) {\n return;\n }\n this._updateHeroByQuery({ network }, undefined, thumbnail);\n }\n\n /*\n selectByAiringId(\n token,\n tokenType,\n sessionId,\n viewContentReference,\n airingId,\n pricePlanId,\n errorCode = null, errorMessage = null, degradation = null, autoplay = false, thumbnail = '') {\n // TODO: figure out if we need it or not\n }\n */\n\n selectEventById(id, thumbnail = '') {\n this.selectById(id, undefined, thumbnail);\n }\n\n selectEventByGameIdLeague(gameId, league = '', thumbnail = '') {\n const { dispatch } = this.component.props;\n dispatch(getEventByQuery({ eventId: gameId, league }))\n .then(content => {\n if (!content) {\n return;\n }\n this.selectById(content.id, true, thumbnail);\n });\n }\n\n selectEventByExternalId(gameId, sport, leagueName) {\n this.selectEventByGameIdLeague(gameId, leagueName);\n }\n\n setVideoPosition(positionInSec) {\n if (!this.videoPlayer || !this.videoPlayer.currentTime) {\n return;\n }\n this.videoPlayer.currentTime(positionInSec);\n }\n\n getVideoPosition() {\n if (!this.videoPlayer || !this.videoPlayer.currentTime) {\n return 0;\n }\n return this.videoPlayer.currentTime() || 0;\n }\n\n /*\n getFeedById(id) {\n // TODO: figure out if we need it or not\n }\n */\n\n enterFullScreen() {\n if (!this.videoPlayer || !this.videoPlayer.requestFullscreen) {\n return;\n }\n this.videoPlayer.requestFullscreen();\n }\n\n exitFullScreen() {\n if (!this.videoPlayer || !this.videoPlayer.exitFullscreen) {\n return;\n }\n this.videoPlayer.exitFullscreen();\n }\n\n /*\n sendMetric(metric) {\n // TODO: figure out if we need it or not\n }\n */\n\n /*\n getMetadataById(key) {\n // TODO: figure out if we need it or not\n }\n */\n\n getAffiliate() {\n const { providerInfo = {} } = this.component.props;\n if (isEmpty(providerInfo)) {\n return null;\n }\n return {\n id: providerInfo.abbreviation,\n name: providerInfo.name,\n websiteUrl: providerInfo.links.web.href,\n imageUrl: providerInfo.images.logo.href\n };\n }\n\n getSelectedProvider(props = this.component.props) {\n // TODO: `espn3Only` prop is returned from http://broadband.espn.com/espn3/auth/watchespn/userData\n const { providerInfo = {} } = props;\n if (isEmpty(providerInfo)) {\n return null;\n }\n return {\n adobePassProviderId: providerInfo.abbreviation,\n displayName: providerInfo.name,\n providerHomepageUrl: providerInfo.links.web.href,\n providerLogoUrl: providerInfo.images.logo.href,\n name: providerInfo.abbreviation\n };\n }\n\n getAuthenticationStatus() {\n const { authStatus, providerInfo = {} } = this.component.props;\n if (authStatus === 'not authenticated') {\n return {\n name: 'invalid',\n type: 'none'\n };\n }\n\n return {\n name: providerInfo.name,\n type: authStatus === 'authenticated' ? 'tve' : 'ip'\n };\n }\n\n recheckAccess() {\n if (this.targetWindow && this.targetWindow !== window) {\n this._publish(SyndicatedPlayerAPIProxy.Events.RECHECK_ACCESS, { href: window.location.href });\n } else {\n this.component.recheckAccess();\n }\n }\n\n /*\n getPlayingEvents() {\n // TODO: figure out if we need it or not\n }\n */\n\n _onPlaying() {\n this._publish(SyndicatedPlayerAPIProxy.Events.PLAYING);\n }\n\n _onPlay() {\n this._publish(SyndicatedPlayerAPIProxy.Events.PLAY);\n }\n\n _onPause() {\n this._publish(SyndicatedPlayerAPIProxy.Events.PAUSE);\n }\n\n _onAdPodStarted(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.AD_POD_STARTED, payload);\n }\n\n _onAdPodEnded(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.AD_POD_ENDED, payload);\n }\n\n _onAdStarted(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.AD_STARTED, payload);\n }\n\n _onAdEnded(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.AD_ENDED, payload);\n }\n\n _onProgramChange(_, mediainfo) {\n // guard against program change called with the same id\n // `playingStream` is passed by `playable` HOC\n const { playingStream = {} } = this.component.props;\n if (playingStream.id === mediainfo.id) {\n return;\n }\n this._publish(SyndicatedPlayerAPIProxy.Events.PROGRAM_CHANGE, mediainfo);\n }\n\n _onContentLoaded(_, { mediainfo = {} } = {}) {\n this._publish(SyndicatedPlayerAPIProxy.Events.CONTENT_LOADED, mediainfo);\n }\n\n _onContentEnded() {\n this._publish(SyndicatedPlayerAPIProxy.Events.CONTENT_ENDED);\n }\n\n _onError(_, payload) {\n this._publish(SyndicatedPlayerAPIProxy.Events.ERROR, payload);\n }\n\n async _onPostMessage(event) {\n // Supposed to check `event.origin` here but then we need to maintain whitelist...\n\n // One thing we can't pass with postMessage is a function whether we send a message as a string or an object,\n // hopefully we'll never have to allow the integration to pass a function.\n if (typeof event.data !== 'string') {\n return;\n }\n\n let data;\n try {\n data = JSON.parse(event.data);\n } catch (err) {\n data = {};\n }\n\n const { type, tId, status, params, entitlementToken } = data;\n\n if (!type) {\n return;\n }\n\n const [partner, domain, apiName] = type.split(':');\n\n if (partner !== 'watchespn') {\n return;\n }\n\n if (domain === 'syndicated-api') {\n if (this[apiName]) {\n const args = Array.isArray(data.payload) ? data.payload : [data.payload];\n const payload = this[apiName](...args);\n if (SyndicatedPlayerAPIProxy.Getter.indexOf(apiName) !== -1) {\n if (payload && typeof payload.then === 'function') {\n payload.then(value => {\n this._publish(type, value, tId);\n });\n } else {\n this._publish(type, payload, tId);\n }\n }\n }\n } else if (\n domain === 'adobepass-login' &&\n type === AdobePassProxyLoginComponent.EVENT_LOADED\n ) {\n const val = window.localStorage.getItem(AdobePassProxyLoginComponent.XD_LOCALSTORAGE_KEY);\n if (val !== AdobePassProxyLoginComponent.XD_LOCALSTORAGE_VAL) {\n // enable this to auto-kick off self window login flow when xdomain storage failure is detected\n /*\n if (!this.component.loginWindow) {\n return;\n }\n const origin = `${window.location.protocol}//${window.location.host}`;\n this.component.loginWindow.postMessage(JSON.stringify({\n type: AdobePassProxyLoginComponent.EVENT_CLOSE_REQUEST,\n params: -1\n }), origin);\n */\n this._xdomainBlocked = true;\n }\n } else if (\n domain === 'adobepass-login' &&\n type === AdobePassProxyLoginComponent.EVENT_CLOSED\n ) {\n this.component.onLoginClose();\n // when the login screen is closed as a result of the request made due to xdomain storage failure is detected,\n // kick off the login flow using the self window\n if (params === -1) {\n this.component.onXDomainCheckFail();\n }\n } else if (\n domain === 'adobepass-login' &&\n type === AdobePassProxyLoginComponent.EVENT_AUTHENTICATE &&\n status === 'success'\n ) {\n const { dispatch, adobePassEnv = AdobePassEnv.PROD } = this.component.props;\n\n this.authSuccess = true;\n\n if (entitlementToken && this._xdomainBlocked) {\n try {\n // update `entitlementToken` in the player window\n window.localStorage.setItem('entitlementToken', entitlementToken);\n // update `entitlementToken` in the AccessEnabler Proxy window, which is the source of truth\n // FIXME: this is a hack to get around cross domain localStorage restriction in Safari\n if (window.accessEnablerProxy && window.accessEnablerProxy.contentWindow) {\n window.accessEnablerProxy.contentWindow.postMessage({\n id: 'c.a.p.pm.s.espn',\n operation: 'setItem',\n params: ['entitlementToken', entitlementToken]\n }, adobePassEnv === AdobePassEnv.STAGING ? 'https://sp.auth-staging.adobe.com' : 'https://sp.auth.adobe.com');\n }\n } catch (err) {\n console.error(err);\n }\n }\n\n // This needs to be executed before publishing `AUTHENTICATION_SUCCESS` event\n // Xfinity/Comcast will redirect the page to their login complete page when this(full authentication) is executed\n const isAuthenticated = await dispatch(updateAdobeAuthentication());\n\n if (this.targetWindow && this.targetWindow !== window) {\n // TODO: remove reload logic from `watchespn-syndicated-player` module\n // so that `authRetry` message logic can be executed\n this._publish(SyndicatedPlayerAPIProxy.Events.AUTHENTICATION_SUCCESS, {\n href: window.location.href,\n provider: this.getSelectedProvider(),\n authenticationStatus: this.getAuthenticationStatus()\n });\n }\n\n this.component.onLoginClose();\n\n if (isAuthenticated) {\n this.component.onAuthSuccess();\n }\n\n if (this._xdomainBlocked) {\n // This can happen when `Cookie and website data` setting is set anything other than `Always Allow` in Safari\n this.reload(true, this._xdomainBlocked);\n }\n }\n }\n\n reload(authFailed = false, xdomainBlocked = false) { // eslint-disable-line class-methods-use-this\n // not recommended to use as this can cause other services which uses `postMessage`\n // to error out when they don't check the referrer origin change\n // currently reload button triggers this as a fallback when the automatic playback doesn't happen after login\n let qs = '';\n if (window.location.search.indexOf('referrer') === -1) {\n qs = `${window.location.search.indexOf('?') === -1 ? '?' : '&'}referrer=${encodeURIComponent(document.referrer)}`;\n }\n if (authFailed && window.location.search.indexOf(Flags.AUTH_RETRY) === -1) {\n qs += `&${Flags.AUTH_RETRY}=true`;\n }\n if (xdomainBlocked && window.location.search.indexOf(Flags.XDOMAIN_BLOCKED) === -1) {\n qs += `&${Flags.XDOMAIN_BLOCKED}=true`;\n }\n const reloadUrl = `${window.location.href}${qs}`;\n window.location.href = reloadUrl;\n }\n\n _publish(type, payload, tId) {\n if (!this.targetWindow || this.targetWindow === window) {\n return;\n }\n const event = {\n type,\n tId,\n payload\n };\n try {\n this.targetWindow.postMessage(\n `${PARTNER}:${DOMAIN}:${this.instanceId}${JSON.stringify(event)}`,\n this.targetOrigin\n );\n } catch (err) {\n console.error(err);\n }\n }\n\n _subscribeMessage() {\n window.addEventListener('message', this._onPostMessage);\n return function _unsubscribe() {\n window.removeEventListener('message', this._onPostMessage);\n };\n }\n\n destroy() {\n if (this._unsubscribe) {\n this._unsubscribe();\n }\n }\n}\n\nconst API = {\n PLAY: 'playVideo',\n PAUSE: 'pauseVideo',\n MUTE: 'muteStream',\n UNMUTE: 'unMuteStream',\n SET_CURRENT_TIME: 'setVideoPosition',\n GET_CURRENT_TIME: 'getVideoPosition',\n ENTER_FULLSCREEN: 'enterFullScreen',\n EXIT_FULLSCREEN: 'exitFullScreen',\n SELECT_BY_ID: 'selectById',\n SELECT_BY_EVENT_ID: 'selectByEventId',\n SELECT_EVENT_BY_ID: 'selectEventById',\n SELECT_EVENT_BY_NETWORK_NAME: 'selectEventByNetworkName',\n SELECT_EVENT_BY_GAME_ID: 'selectEventByGameIdLeague',\n SELECT_EVENT_BY_EXTERNAL_ID: 'selectEventByExternalId',\n RECHECK_ACCESS: 'recheckAccess',\n ADOBE_PASS_LOGOUT: 'adobePassLogout',\n PARENT_HOST: 'parentHost',\n GET_AFFILIATE: 'getAffiliate',\n GET_SELECTED_PROVIDER: 'getSelectedProvider',\n GET_AUTH_STATUS: 'getAuthenticationStatus'\n};\n\nconst Events = {\n BRIDGE_READY: 'bridgeReady',\n READY: 'ready',\n PROVIDER_SELECTED: 'providerSelected',\n PROVIDER_LOGOUT: 'providerLogout',\n PROVIDER_SCREEN_SHOWN: 'providerScreenShown',\n AUTHENTICATION_SUCCESS: 'authenticationSuccessful',\n RECHECK_ACCESS: 'recheckAccess',\n PLAYING: 'playing',\n PLAY: 'play',\n PAUSE: 'pause',\n AD_POD_STARTED: 'adPodStarted',\n AD_POD_ENDED: 'adPodEnded',\n AD_STARTED: 'adStarted',\n AD_ENDED: 'adEnded',\n PROGRAM_CHANGE: 'programChange',\n CONTENT_LOADED: 'contentLoaded',\n CONTENT_ENDED: 'contentEnded',\n ERROR: 'error'\n};\n\nSyndicatedPlayerAPIProxy.PARTNER = PARTNER;\nSyndicatedPlayerAPIProxy.DOMAIN = DOMAIN;\n\nObject.keys(API).forEach(key => {\n SyndicatedPlayerAPIProxy[key] = `${PARTNER}:${DOMAIN}:${API[key]}`;\n});\n\nSyndicatedPlayerAPIProxy.Events = {};\nObject.keys(Events).forEach(key => {\n SyndicatedPlayerAPIProxy.Events[key] = `${PARTNER}:${DOMAIN}:${Events[key]}`;\n});\n\nSyndicatedPlayerAPIProxy.Getter = [\n API.GET_CURRENT_TIME,\n API.GET_AFFILIATE,\n API.GET_SELECTED_PROVIDER,\n API.GET_AUTH_STATUS\n];\n\nexport default SyndicatedPlayerAPIProxy;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/SyndicatedPlayerAPIProxy.js","import React, { PropTypes, PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport Promise from 'bluebird';\nimport { createAuthenticator } from 'common/actions/authenticationActions';\nimport { AuthenticatorType } from 'enums';\nimport { queryString } from 'lib/format';\n\nfunction sendMessage(data) {\n if (!window.opener) {\n return;\n }\n const origin = `${window.location.protocol}//${window.location.host}`;\n window.opener.postMessage(JSON.stringify(data), origin);\n}\n\nexport function getRedirectUrl(query = {}, redirectUrl, syndicated) {\n const { id, network } = query;\n if (!redirectUrl && !syndicated) {\n // If the `id` or `network` query parameters are defined, go directly to the /player route to play the asset via `id`\n if (id || network) {\n return `http://${window.location.host}/watch/player${queryString(query)}`;\n }\n // NOTE: We might not have an `id` coming from an 3rd party provider.\n // In this case, we want to redirect users to the main /watch homepage\n // SEE: https://espnjira.disney.com/browse/WEWEB-2333\n return `http://${window.location.host}/watch${queryString(query)}`;\n }\n\n return redirectUrl;\n}\n\nexport class AdobePassProxyLoginComponent extends PureComponent {\n componentDidMount() {\n window.addEventListener('message', this._onPostMessage);\n\n try {\n window.localStorage.setItem(\n AdobePassProxyLoginComponent.XD_LOCALSTORAGE_KEY,\n AdobePassProxyLoginComponent.XD_LOCALSTORAGE_VAL\n );\n } catch (err) {\n console.error(err);\n }\n\n sendMessage({\n type: AdobePassProxyLoginComponent.EVENT_LOADED\n });\n\n const { dispatch, location: { query: {\n channel,\n id,\n mvpd,\n network: networkQuery,\n redirectUrl: redirectUrlQuery,\n syndicated\n } } } = this.props;\n\n const network = networkQuery || channel;\n const redirectUrl = getRedirectUrl({ id, network }, redirectUrlQuery, syndicated);\n const authenticator = dispatch(createAuthenticator(AuthenticatorType.ADOBE));\n\n authenticator.initialize()\n .then(() => authenticator.authenticate())\n .then((isAuthenticated) => {\n if (!isAuthenticated) {\n return Promise.resolve({});\n }\n return authenticator.getAuthenticationInfo();\n })\n .then(({ mvpd: currentMvpd }) => {\n // User is not authenticated, initialize the Auth flow for the provider via `mvpd`\n if (!currentMvpd) {\n return authenticator.selectProvider({\n ID: mvpd\n });\n }\n\n // Attempting to auth with a different provider than currently authd as\n if (currentMvpd !== mvpd) {\n return authenticator.deauthenticate()\n .then(() => {\n window.location.href = window.location.href;\n });\n }\n\n // if a redirectUrl exists, this indicates we are being linked to by an external site\n if (redirectUrl && !syndicated) {\n window.location.href = redirectUrl;\n return null;\n }\n\n // user is authd successfully for syndicated player. message parent window and close self\n let entitlementToken;\n try {\n entitlementToken = window.localStorage.getItem('entitlementToken');\n } catch (err) {\n console.error(err);\n }\n\n sendMessage({\n type: AdobePassProxyLoginComponent.EVENT_AUTHENTICATE,\n entitlementToken,\n status: 'success'\n });\n\n window.close();\n return null;\n });\n }\n\n _onPostMessage(event) { // eslint-disable-line class-methods-use-this\n if (typeof event.data !== 'string') {\n return;\n }\n\n let data;\n try {\n data = JSON.parse(event.data);\n } catch (err) {\n data = {};\n }\n\n const { type, params } = data;\n if (type === AdobePassProxyLoginComponent.EVENT_CLOSE_REQUEST) {\n sendMessage({\n type: AdobePassProxyLoginComponent.EVENT_CLOSED,\n params\n });\n window.close();\n }\n }\n\n render() {\n return (\n <Helmet\n meta={[\n { name: 'robots', content: 'noindex, nofollow' }\n ]}\n />\n );\n }\n}\n\nAdobePassProxyLoginComponent.propTypes = {\n dispatch: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired\n};\n\nAdobePassProxyLoginComponent.XD_LOCALSTORAGE_KEY = '@watch/XD';\nAdobePassProxyLoginComponent.XD_LOCALSTORAGE_VAL = 'xdomain';\nAdobePassProxyLoginComponent.EVENT_LOADED = 'watchespn:adobepass-login:loaded';\nAdobePassProxyLoginComponent.EVENT_AUTHENTICATE = 'watchespn:adobepass-login:authentication';\nAdobePassProxyLoginComponent.EVENT_CLOSED = 'watchespn:adobepass-login:closed';\nAdobePassProxyLoginComponent.EVENT_CLOSE_REQUEST = 'watchespn:adobepass-login:closeRequest';\n\nexport default connect()(AdobePassProxyLoginComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/AdobePassProxyLogin.js","export function subscribeToStore(store, observers = []) {\n const unsubscribes = [];\n observers.forEach(observer => {\n unsubscribes.push(observer(store));\n });\n\n return () => unsubscribeFromStore(unsubscribes);\n}\n\nexport function unsubscribeFromStore(unsubscribes = []) {\n unsubscribes.map((unsubscribe) => unsubscribe());\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/observe/index.js","import { AuthTypes } from 'enums';\n\nexport default function providerInfoKnown(userAuth, adobePassInfo, ipInfo) {\n if (userAuth.length === 0 || (userAuth.indexOf(AuthTypes.MVPD) === -1 && userAuth.indexOf(AuthTypes.ISP) === -1)) {\n return true;\n } else if (userAuth.indexOf(AuthTypes.MVPD) !== -1) {\n return !!adobePassInfo;\n } else if (userAuth.indexOf(AuthTypes.ISP) !== -1) {\n return !!ipInfo;\n }\n return false;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/auth/providerInfoKnown.js","import { trackPage } from 'lib/omniture';\nimport { pageTrackingSelector } from 'common/selectors/analyticsSelectors';\nimport { authStateKnown, providerInfoKnown } from 'lib/auth';\nimport { isEmpty } from 'lib/util';\nimport observeStore from './observeStore';\n\nlet initialPageTracked = false;\nexport default function trackingObserver(store) {\n return observeStore(store, pageTrackingSelector, (currentTracking = { page: {} }, nextTracking) => {\n const {\n isDomestic,\n adobePassInfo,\n analytics,\n app,\n ipInfo,\n page,\n userAuth,\n subscriptions,\n oneIdLoggedIn,\n entitlementsTracking,\n promoTracking,\n adobePassMetadata\n } = nextTracking;\n\n // this one makes sure we don't track the same page twice\n if (initialPageTracked && currentTracking.page.name === page.name) {\n return;\n }\n\n if (\n (\n analytics &&\n (authStateKnown(userAuth) || !userAuth.length) &&\n page.name &&\n providerInfoKnown(userAuth, adobePassInfo, ipInfo) &&\n (!isDomestic || ((subscriptions || !oneIdLoggedIn) && !isEmpty(entitlementsTracking)))\n ) || page.autoPageViewTrack\n ) {\n const provider = adobePassInfo || ipInfo || {};\n trackPage({ app, page, provider, userAuth, entitlementsTracking, promoTracking, adobePassMetadata, isDomestic });\n initialPageTracked = true;\n }\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/observe/trackingObserver.js","export default function observeStore(store, select, onChange) {\n const { getState, dispatch } = store;\n let currentState;\n\n function handleChange() {\n const nextState = select(getState());\n if (nextState !== currentState) {\n onChange(currentState, nextState, dispatch);\n currentState = nextState;\n }\n }\n\n const unsubscribe = store.subscribe(handleChange);\n handleChange();\n return unsubscribe;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/observe/observeStore.js","const disableUserInteractionHandler = function disableUserInteractionHandler(event) {\n event.stopPropagation();\n event.preventDefault();\n};\n\nexport const loadingClassName = 'watch-loading';\n\nexport function uiLoadingStart() {\n if (process.browser) {\n const { body: { className } = {} } = document || {};\n document.body.className = `${className.replace(loadingClassName, '')} ${loadingClassName}`;\n }\n}\n\nexport function uiLoadingComplete() {\n if (process.browser) {\n const { body: { className } = {} } = document || {};\n document.body.className = className.replace(loadingClassName, '');\n enableUserInteraction();\n }\n}\n\nexport function disableUserInteraction() {\n if (process.browser) {\n ['click', 'touchstart'].forEach((eventName) => {\n document.body.addEventListener(eventName, disableUserInteractionHandler);\n })\n }\n}\n\nexport function enableUserInteraction() {\n if (process.browser) {\n ['click', 'touchstart'].forEach((eventName) => {\n document.body.removeEventListener(eventName, disableUserInteractionHandler);\n })\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/ui/loading.js","const messages = {\n // branding\n 'branding.name': 'WatchESPN',\n // meta\n 'meta.keywords': 'watchespn, watch espn, watchespn mobile, watchespn xbox live, live sports, watch live sports, ' +\n 'watch espn online, watch espn on xbox, watch espn on mobile phone, espn, espn2, espn3, espnu',\n 'meta.title.home': 'WatchESPN: Live Sports, Game Replays, Video Highlights',\n 'meta.description.home': 'Stream live sports, watch game replays, get video highlights, and access featured ESPN ' +\n 'content on your computer, mobile device, and TV on ESPN.com and the ESPN app.',\n 'meta.title.schedule': 'Schedule: Live, Upcoming, Replays - WatchESPN',\n 'meta.description.schedule': 'Get live, upcoming, and replay schedule information for your favorite sports and shows ' +\n 'across every ESPN network on WatchESPN.',\n 'meta.title.features': 'Featured Videos - WatchESPN',\n 'meta.description.features': 'Watch featured news clips, game highlights, and special ESPN programming on WatchESPN.',\n 'meta.title.collection': '{name} - WatchESPN',\n 'meta.description.collection': 'Watch videos from the {name} collection on WatchESPN.',\n 'meta.title.player': '{name} - WatchESPN',\n 'meta.description.player.vod': 'Watch the {name} video on WatchESPN.',\n 'meta.description.player.listing': 'Watch {name} on WatchESPN.',\n 'meta.title.activate': 'Activate - WatchESPN',\n 'meta.description.activate': 'Activate your device',\n 'meta.title.subscribe': 'Subscribe - WatchESPN',\n 'meta.description.subscribe': 'Subscribe your device',\n 'meta.title.feedback': 'Provide Feedback - WatchESPN',\n 'meta.description.feedback': 'Provide feedback on WatchESPN, the service that provides full access on your computer, mobile devices and Xbox Live to all live sports events, replays and programs on the ESPN networks.',\n // page\n 'page.bucket.header.seeAll': \"See All\",\n // schedule\n 'schedule.header': 'Schedule',\n 'schedule.live': 'Live Now',\n 'schedule.live.selectedTabError': 'live',\n 'schedule.upcoming': 'Upcoming',\n 'schedule.upcoming.selectedTabError': 'upcoming',\n 'schedule.replay': 'Replay',\n 'schedule.replay.selectedTabError': 'replay',\n 'schedule.allSports': 'All Sports',\n 'schedule.allNetworks': 'All Networks',\n 'schedule.allLeagues': 'All Leagues',\n 'schedule.replay.all': 'All',\n 'schedule.replay.today': 'Today',\n 'schedule.replay.last7Days': 'Last 7 days',\n 'schedule.replay.last14Days': 'Last 14 days',\n 'schedule.replay.last30Days': 'Last 30 days',\n 'schedule.blackout': 'Subject to blackout',\n 'schedule.message.empty': 'There are currently no {selectedTab} events for this selection.{br}Please check {otherTabs1} or {otherTabs2} or clear all filters.',\n // schedule module\n 'schedule.module.header.live': 'Top Live',\n 'schedule.module.header.upcoming': 'Upcoming',\n 'schedule.module.header.upcoming.on': 'Upcoming on',\n 'schedule.module.alert.upcoming': '{name} is scheduled to begin at {startTime} on {source}. {moreText}',\n 'schedule.module.alert.moreText': 'Please enjoy {name} while you wait.',\n 'schedule.module.eventDate.tomorrow': 'Tomorrow',\n // calendar months\n 'schedule.calendar.month.January': 'January',\n 'schedule.calendar.month.February': 'February',\n 'schedule.calendar.month.March': 'March',\n 'schedule.calendar.month.April': 'April',\n 'schedule.calendar.month.May': 'May',\n 'schedule.calendar.month.June': 'June',\n 'schedule.calendar.month.July': 'July',\n 'schedule.calendar.month.August': 'August',\n 'schedule.calendar.month.September': 'September',\n 'schedule.calendar.month.October': 'October',\n 'schedule.calendar.month.November': 'November',\n 'schedule.calendar.month.December': 'December',\n // calendar short days\n 'schedule.calendar.day.Mon': 'MON',\n 'schedule.calendar.day.Tue': 'TUE',\n 'schedule.calendar.day.Wed': 'WED',\n 'schedule.calendar.day.Thu': 'THU',\n 'schedule.calendar.day.Fri': 'FRI',\n 'schedule.calendar.day.Sat': 'SAT',\n 'schedule.calendar.day.Sun': 'SUN',\n // calendar long days\n 'schedule.calendar.day.Monday': 'Monday',\n 'schedule.calendar.day.Tuesday': 'Tuesday',\n 'schedule.calendar.day.Wednesday': 'Wednesday',\n 'schedule.calendar.day.Thursday': 'Thursday',\n 'schedule.calendar.day.Friday': 'Friday',\n 'schedule.calendar.day.Saturday': 'Saturday',\n 'schedule.calendar.day.Sunday': 'Sunday',\n // search\n 'search.placeholder': 'Find your team, event, or show...',\n 'search.results.message': 'Search results for {query}',\n // player\n 'player.error.defaultMessage': 'This network is not included in your current television subscription. Please contact your provider to upgrade.',\n 'player.error.recommendMobileWeb': 'The device is unable to play this video within the app. Please try visiting espn.com/watch with the latest version of your browser on this device.',\n 'player.error.unexpectedMessage': 'An unexpected error occurred during authorization. Please refresh the page to try again.',\n 'player.menu.logout': 'Log Out of {providerName}',\n 'player.feeds.title': 'Choose Broadcast',\n // provider dialog\n 'search.filter.placeholder': 'Search All Providers',\n 'provider.dialog.title': 'Choose Provider',\n 'provider.dialog.subtitle': 'All Providers (A-Z):',\n 'provider.dialog.description': 'Stream ESPN now by signing in with your TV provider. Having trouble? Check {faq} or {help}.',\n 'provider.dialog.description.noCost': 'no additional cost',\n 'provider.dialog.button.text': 'Get A TV Provider',\n 'provider.dialog.faq.label': 'FAQs',\n 'provider.dialog.help.link': 'http://www.espninstantaccess.com/',\n 'provider.dialog.help.label': 'Get Help',\n 'provider.dialog.call': '888-549-ESPN',\n // sign out\n 'signout.message': 'Do you want to sign out of your {providerName} account?',\n 'signout.label': 'Sign Out',\n // feedback\n 'feedback.title': 'Don\\'t want to chat? Submit feedback via email.',\n 'feedback.caption': 'Provide your e-mail address if you\\'d like us to follow up with you directly.',\n 'feedback.category': 'Choose Category',\n 'feedback.category.select': 'Select a category',\n 'feedback.category.userExperience': 'User Experience',\n 'feedback.category.videoPerformance': 'Video Performance',\n 'feedback.category.programming': 'Programming',\n 'feedback.category.other': 'Other',\n 'feedback.email': 'E-mail',\n 'feedback.provider': 'Cable / Internet Providers',\n 'feedback.provider.default': 'Choose Provider',\n 'feedback.platform': 'Platform',\n 'feedback.desktoplaptop': 'Desktop/laptop',\n 'feedback.iphone': 'iPhone',\n 'feedback.ipad': 'iPad',\n 'feedback.androidphone': 'Android Phone',\n 'feedback.androidtablet': 'Android Tablet',\n 'feedback.xbox': 'Xbox One',\n 'feedback.playstation': 'PlayStation',\n 'feedback.appletv': 'Apple TV',\n 'feedback.androidtv': 'Android TV',\n 'feedback.amazonfiretv': 'Amazon FireTV',\n 'feedback.chromecast': 'Chromecast',\n 'feedback.roku': 'Roku',\n 'feedback.comments': 'Comments',\n 'feedback.send': 'Send feedback',\n 'feedback.thankYou': 'Thank you for posting your feedback.',\n 'feedback.error.category': 'Please select a type of issue.',\n 'feedback.error.email': 'Please enter your e-mail address.',\n 'feedback.error.comments': 'Please enter your comment.',\n // misc\n 'live': 'LIVE',\n 'blackout': 'Blackout',\n // espnapp\n 'espnapp.systemAlert.upcoming': 'This event has not started yet. Tune in at {time} to watch.',\n // syndicated player\n 'syndicated.player.dialog': 'Live programming on WatchESPN is available for no additional cost from selected television and broadcast providers. Please choose your provider from the list below to sign in and see the ESPN networks you can watch:',\n 'syndicated.player.dialog.label.continute': 'Continue',\n 'syndicated.player.dialog.label.recheck': 'Recheck access',\n 'syndicated.player.dialog.message.auth-success': 'You are logged in, playback will start shortly.',\n 'syndicated.player.dialog.message.auth-retry': 'If playback does not begin in 5 seconds, please refresh your browser. This may take up to a minute.',\n 'syndicated.player.dialog.message.xdomain': 'Your browser appears to block storing data that\\'s required for the playback, change your browser setting to allow storing 3rd party data.',\n 'syndicated.player.branding.tooltip': 'View this video on {brandingName}',\n 'syndicated.player.domain.error': 'You are not allowed to access WatchESPN from this website. Please visit WatchESPN.com to see if you have access to this game.',\n 'syndicated.player.message.upcoming': 'This event has not started yet. Please check back once the event has begun.',\n 'syndicated.player.message.no-events': 'No events available.',\n 'syndicated.player.message.geo': 'This video is not currently available to view in your location.',\n // unsupported error due to possible COUNTRY_AND_EDITION_CONFLICT Page API Error\n 'unsupported.error.message': 'This content is not available in this country.'\n};\n\nexport default messages;\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/i18n/en-us.js","import enUs from './en-us';\nimport es from './es';\nimport pt from './pt';\nimport nl from './nl';\n\nexport const langMap = {\n 'en-us': enUs,\n en: enUs,\n es,\n pt,\n nl\n};\n\nexport const messages = Object.keys(enUs).reduce((acc, id) => {\n acc[id] = {\n id,\n description: id,\n defaultMessage: enUs[id]\n };\n return acc;\n}, {});\n\nexport const langs = (locale) => {\n return langMap[locale] || langMap['en'];\n};\n\nexport function isLangSupported(locale) {\n return supportedLangs().indexOf(locale) !== -1;\n}\n\nexport function supportedLangs() {\n return Object.keys(langMap);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/i18n/index.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport { IntlProvider } from 'react-intl';\nimport { messages } from 'lib/i18n';\nimport { intlSelector } from 'common/selectors/appSelector';\nimport moment from 'moment';\nimport 'moment/locale/es';\nimport 'moment/locale/pt-br';\n\n// override default locale config\nmoment.updateLocale('es', {\n ordinal: (number) => (number === 1 ? `${number}º` : `${number}`)\n});\n\nexport class ConnectedIntlProvider extends Component {\n constructor(props) {\n super(props);\n // set locale globally\n // we explicitly bundle only `pt-br` locale\n const locale = props.lang === 'pt' ? 'pt-br' : props.lang;\n moment.locale(locale);\n }\n\n getChildContext() {\n return {\n messages: {\n ...messages\n }\n };\n }\n\n render() {\n return (\n <IntlProvider {...this.props} locale={this.props.lang} />\n );\n }\n}\n\nConnectedIntlProvider.propTypes = {\n lang: PropTypes.string\n};\n\nConnectedIntlProvider.contextTypes = {\n messages: PropTypes.object\n};\n\nConnectedIntlProvider.childContextTypes = {\n messages: PropTypes.object.isRequired\n};\n\nconst mapStateToProps = (state) => {\n const intl = intlSelector(state);\n return {\n ...intl,\n key: intl.lang\n };\n};\n\nexport default connect(mapStateToProps)(ConnectedIntlProvider);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/IntlProvider.js","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\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 var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\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 runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\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 prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.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 runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\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 runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\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 Promise.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 Promise.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. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.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 runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.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 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 Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.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 runtime.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 // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/regenerator-runtime/runtime.js\n// module id = 380\n// module chunks = 1","import request from './request';\nimport { AdobePass } from 'enums';\nconst { Env: AdobePassEnv } = AdobePass;\n\nexport const REQUESTOR_ID = 'ESPN';\n\nconst ENVIRONMENT_CONFIGURATION = {\n [AdobePassEnv.STAGING]: {\n baseUrl: 'https://api.auth-staging.adobe.com'\n },\n [AdobePassEnv.PROD]: {\n baseUrl: 'https://api.auth.adobe.com'\n }\n};\n\nexport const SERVICE_PATH = {\n reggie: '/reggie/v1',\n sp: '/api/v1'\n};\n\nexport const ENDPOINTS = {\n config: '/config',\n checkRegCode: '/regcode',\n checkAuthN: '/checkauthn',\n authenticate: '/authenticate'\n};\n\nfunction getBaseUrl(env = AdobePassEnv.PROD) {\n // In the event the query parameter `passenv` value does not match the ENVIRONMENT_CONFIGURATION\n // object, we want to default to the `production` baseUrl\n const defaultEnv = AdobePassEnv.PROD;\n return ENVIRONMENT_CONFIGURATION[env].baseUrl || ENVIRONMENT_CONFIGURATION[defaultEnv].baseUrl;\n}\n\nexport function getSpUrl(env) {\n return `${getBaseUrl(env)}${SERVICE_PATH.sp}`;\n}\n\nexport function getReggieUrl(env) {\n return `${getBaseUrl(env)}${SERVICE_PATH.reggie}`;\n}\n\nexport function getConfig() {\n const url = `${getSpUrl()}${ENDPOINTS.config}/${REQUESTOR_ID}`;\n return request\n .get(url)\n .set('Accept', 'application/json')\n .then(({body}) => body)\n .catch(err => err);\n}\n\nexport function checkRegCode(regCode, env) {\n const url = `${getReggieUrl(env)}/${REQUESTOR_ID}${ENDPOINTS.checkRegCode}/${regCode}`;\n return request\n .get(url)\n .set('Accept', 'application/json')\n .then(({body}) => body)\n .catch(err => err);\n}\n\n// Not currently used although recommended by Adobe to call before success page\n// http://tve.helpdocsonline.com/clientless-api-reference$$check_authn_token\nexport function checkAuthN(regCode) {\n const url = `${getSpUrl()}${ENDPOINTS.checkAuthN}/${regCode}?requestor=${REQUESTOR_ID}`;\n return request\n .get(url)\n .set('Accept', 'application/json')\n .then(({status}) => status === 200)\n .catch(() => false);\n}\n\nexport function getAuthSuccessUrl({mvpd, deviceType, baseUrl = window.location.href}) {\n return `${baseUrl}${baseUrl.indexOf('?') === -1 ? '?' : '&'}mvpd=${mvpd}&authSystem=adobepass&deviceType=${deviceType}&authSuccess=true`;\n}\n\nexport function getAuthErrorUrl({baseUrl = window.location.href}) {\n return `${baseUrl}${baseUrl.indexOf('?') === -1 ? '?' : '&'}error=true`;\n}\n\nexport function getAuthenticateUrl({regCode, mvpd, deviceType, baseUrl = window.location.href, adobePassEnv }) {\n const redirectUrl = getAuthSuccessUrl({mvpd, deviceType, baseUrl});\n const qs = `reg_code=${regCode}&noflash=true&mso_id=${mvpd}&requestor_id=${REQUESTOR_ID}&domain_name=adobe.com&redirect_url=${encodeURIComponent(redirectUrl)}`;\n const url = `${getSpUrl(adobePassEnv)}${ENDPOINTS.authenticate}?${qs}`;\n\n return url;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/AdobeClientlessAPI.js","export default function getMarkettingOptInStatus(oneIdData = {}) {\n const { marketing = [], token: { swid, access_token: accessToken } = {} } = oneIdData;\n if (marketing.length) {\n const ePlusMarketingOptIns = marketing.filter(opt =>\n opt.code === 'ESPN+_L' && opt.status !== 'declined' && opt.status !== 'accepted'\n );\n if (swid && accessToken && ePlusMarketingOptIns.length) {\n return {\n swid,\n accessToken,\n shouldUpdateOptIns: true\n };\n }\n }\n return { shouldUpdateOptIns: false };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/util/getMarkettingOptInStatus.js","import request from './cache/requestCache';\nimport proxy from './requestProxy';\n\nexport function getOneIdApiKey(oneIdClientUrl) { \n const url = `${oneIdClientUrl}/api-key`;\n return request.post(url)\n .use(proxy)\n .then(res => {\n let oneIdApiKey;\n if (res.status === 200) {\n const { body : {error}, headers = {} } = res;\n /**\n * if getApiKey successfully, oneId api return body as follow\n * {\n \"data\": null,\n \"error\": null\n }\n */\n if (error === null && headers[\"api-key\"] !== null && headers[\"api-key\"] !== undefined) {\n oneIdApiKey = headers[\"api-key\"];\n }\n }\n return oneIdApiKey\n }).catch((err) => {\n return undefined;\n });\n}\n\n// oneId getGuess info doesn't return email for privacy reason, so we need to retrieve it for optIns update\nexport function getOneIdEmail(oneIdClientUrl, swid, accessToken) {\n const url = `${oneIdClientUrl}/guest/${swid}`;\n return request(url)\n .set('Authorization', `BEARER ${accessToken}`)\n .set('Accept', 'application/json')\n .use(proxy)\n .then(res => {\n if (res && res.status === 200) {\n const { body: {data: {profile: {email} = {}} = {}} = {}} = res; \n if (email) {\n return {\n email,\n isSuccess: true,\n }\n }\n }\n return { isSuccess: false }\n }).catch((err) => {\n return { isSuccess: false };\n });\n}\n\nexport async function updateOneIdMarkettingOptIn(oneIdClientUrl, oneIdApiKey, email) { \n const url = `${oneIdClientUrl}/marketing/options`;\n const payload = {\n \"email\": email,\n \"source\": \"ESPN watch web opt-in\",\n \"options\": {\n \"ESPN+_L\": true\n },\n \"textIDsMap\": {\n \"ESPN+_L\": \"\"\n }\n }\n return request.post(url)\n .send(payload)\n .set('Authorization', `APIKEY ${oneIdApiKey}`)\n .set('Content-Type', 'application/json')\n .set('Accept', 'application/json')\n .use(proxy)\n .then(res => {\n const { body: {error} = {}, status } = res || {};\n if (status === 200) {\n \n if (error === null) {\n return {isSuccess: true, err: null};\n }\n }\n return {\n isSuccess: false,\n err: `status code: ${res.status} errMsg: ${error}`\n }\n })\n .catch((err) => {\n return {\n \"isSuccess\": false,\n err: \"updateOneIdMarkettingOptIn failed on catch\"\n }\n });\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/oneIdApi.js","import Promise from 'bluebird';\nimport { push } from 'react-router-redux';\nimport {\n getConfig,\n checkRegCode,\n getAuthenticateUrl,\n getAuthSuccessUrl,\n getAuthErrorUrl\n} from 'lib/api/AdobeClientlessAPI';\nimport { removeQueryFromUrl } from 'lib/format';\nimport { ModalType, AppEnvs } from 'enums';\nimport { displayModalMessage } from 'common/actions/appActions';\nimport * as oneId from 'lib/oneId';\nimport { isSubscribeInEntitlementPath, generateCommerceFlowUrl } from './util';\nimport {\n getOneIdApiKey,\n getOneIdEmail,\n updateOneIdMarkettingOptIn\n} from 'lib/api/oneIdApi';\nimport {\n WEB_ESPN_PLUS_PURCHASE_PATH_QA,\n WEB_ESPN_PLUS_PURCHASE_PATH_PROD\n} from './constants';\n\nexport const GET_CONFIG = 'GET_CONFIG';\nexport const REG_CODE_UPDATE = 'REG_CODE_UPDATE';\nexport const AUTHENTICATE = 'AUTHENTICATE';\nexport const GENERIC_ERROR = 'GENERIC_ERROR';\nexport const INVALID_ERROR = 'INVALID_ERROR';\nexport const START_SUBMIT = 'START_SUBMIT';\nexport const COMPLETE_SUBMIT = 'COMPLETE_SUBMIT';\nexport const EPLUS_MARKETTING_OPT_IN_UPDATE = 'EPLUS_MARKETTING_OPT_IN_UPDATE';\n\nexport function createGetConfigAction(mvpd, message) {\n return {\n type: GET_CONFIG,\n mvpd,\n message\n };\n}\n\nexport function createAuthenticateAction(authUrl, authSuccessUrl, authErrorUrl, useIframe) {\n return {\n type: AUTHENTICATE,\n authUrl,\n authSuccessUrl,\n authErrorUrl,\n useIframe\n };\n}\n\nexport function createGenericErrorAction(message, providerId) {\n return {\n type: GENERIC_ERROR,\n message,\n providerId\n };\n}\n\nexport function createInvalidErrorAction(message, providerId) {\n return {\n type: INVALID_ERROR,\n message,\n providerId\n };\n}\n\n// Actions\nexport function regCodeUpdate(code) {\n return {\n type: REG_CODE_UPDATE,\n code\n };\n}\n\nexport function startSubmit() {\n return {\n type: START_SUBMIT\n };\n}\n\nexport function completeSubmit() {\n return {\n type: COMPLETE_SUBMIT\n };\n}\n\nexport function updateOneIdMarkettingOptInAction(payload) {\n return {\n type: EPLUS_MARKETTING_OPT_IN_UPDATE,\n payload\n };\n}\n\nexport function getClientlessConfig() {\n return (dispatch) => (\n getConfig()\n .then(response => {\n const { requestor: { mvpds: { mvpd = [] } = {} } = {}, message } = response;\n return dispatch(createGetConfigAction(mvpd, message));\n })\n );\n}\n\nexport function checkAdobeRegCode(regCode, env) {\n return async (dispatch) => {\n const { info: { deviceType } = {}, message } = await checkRegCode(regCode, env);\n if (message) {\n throw new Error(message);\n }\n dispatch(push({\n pathname: '/activate',\n query: {\n deviceType,\n regCode,\n chooseProvider: true\n }\n }));\n };\n}\n\nexport function launchLicensePlateOnSuccess(oneIdClientUrl, swid, accessToken) {\n return async (dispatch) => {\n try {\n // get oneId api key\n const oneIdApiKey = await getOneIdApiKey(oneIdClientUrl);\n if (oneIdApiKey) {\n // get oneId email\n const { isSuccess, email } = await getOneIdEmail(oneIdClientUrl, swid, accessToken);\n if (isSuccess) {\n const res = await updateOneIdMarkettingOptIn(oneIdClientUrl, oneIdApiKey, email);\n dispatch(updateOneIdMarkettingOptInAction({\n isSuccess: res.isSuccess,\n err: res.err\n }));\n }\n }\n } catch (err) {\n dispatch(updateOneIdMarkettingOptInAction({\n err,\n isSuccess: false\n }));\n }\n };\n}\n\nexport function checkOneIdRegCode(deviceType, pairingCode, commerceUrlsConfig, qs) {\n return async (dispatch, getState) => {\n try {\n const {\n app: { env = '' }\n } = getState();\n const { lang, country, urls } = commerceUrlsConfig;\n const dataBag = (await oneId.getLicensePlateDataBag({ pairingCode })) || {};\n const {\n entitlementPath,\n correlationId,\n packages,\n entitlements,\n deviceType: dataBagDevice,\n commercePath\n } = dataBag;\n const deviceName = dataBagDevice || deviceType;\n\n await oneId.launchLicensePlate({\n deviceName,\n authenticationFlow: entitlementPath,\n correlationId,\n pairingCode\n });\n\n // when it reaches here, that means activation code (License Plate) was submitted successfully.\n const commerceBase = env !== AppEnvs.prod ? WEB_ESPN_PLUS_PURCHASE_PATH_QA : WEB_ESPN_PLUS_PURCHASE_PATH_PROD;\n let commerceUrl = commercePath\n ? `${commerceBase}/${commercePath}?start=login`\n : null;\n\n // if commerceUrl is empty, generate commerceUrl from urls mapping that is set in app-configurations\n if (!commerceUrl) {\n const packagesList = packages || entitlements;\n const generateCommerceUrl = generateCommerceFlowUrl(\n urls,\n packagesList,\n deviceName,\n lang,\n country\n );\n\n const isSubscribePath = isSubscribeInEntitlementPath(entitlementPath);\n\n // If `subscribe` is in the entitlementPath property and\n // generateCommerceUrl is not empty, set commerceUrl.\n if (isSubscribePath && generateCommerceUrl !== '') {\n commerceUrl = generateCommerceUrl;\n }\n }\n\n // from the external config file; redirect only if window.location is available\n if (\n commerceUrl &&\n window &&\n window.location &&\n window.location.href\n ) {\n window.location.href = commerceUrl;\n } else {\n dispatch(\n push({\n pathname: '/activate',\n query: {\n ...qs,\n authSuccess: true,\n deviceType: deviceName\n }\n })\n );\n }\n } catch (err) {\n throw err;\n }\n };\n}\n\nexport function clientlessAuthenticate({\n regCode,\n mvpd,\n deviceType,\n provider,\n baseUrl: origBaseUrl = window.location.href,\n adobePassEnv\n}) {\n return (dispatch) => {\n const baseUrl = removeQueryFromUrl(origBaseUrl, 'chooseProvider,deviceType,regCode');\n const authUrl = getAuthenticateUrl({ regCode, mvpd, deviceType, baseUrl, adobePassEnv });\n const authSuccessUrl = getAuthSuccessUrl({ mvpd, deviceType, baseUrl });\n const authErrorUrl = getAuthErrorUrl({ baseUrl });\n const useIframe = provider.iFrameRequired && provider.iFrameRequired.value && window.innerWidth > 500;\n\n dispatch(createAuthenticateAction(authUrl, authSuccessUrl, authErrorUrl, useIframe));\n\n try {\n if (useIframe) {\n // open url in an iframe (use modal)\n dispatch(displayModalMessage(ModalType.IFRAME_AUTH, {\n src: authUrl,\n width: (provider.iFrameWidth && provider.iFrameWidth.value) || 500,\n height: (provider.iFrameHeight && provider.iFrameHeight.value) || 500\n }));\n } else {\n window.location.href = authUrl;\n }\n } catch (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve(authUrl);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/actions.js","import {\n GET_CONFIG,\n AUTHENTICATE,\n GENERIC_ERROR,\n INVALID_ERROR,\n REG_CODE_UPDATE,\n START_SUBMIT,\n COMPLETE_SUBMIT,\n EPLUS_MARKETTING_OPT_IN_UPDATE\n} from './actions';\n\nexport const initialState = {\n config: {},\n regCode: {},\n authenticate: {},\n genericError: '',\n invalidError: '',\n optInUpdate: {}\n};\n\nexport default function activationReducer(state = initialState, action) {\n switch (action.type) {\n case GET_CONFIG:\n return {\n ...state,\n config: {\n mvpd: action.mvpd,\n message: action.message\n }\n };\n case AUTHENTICATE:\n return {\n ...state,\n authenticate: {\n authUrl: action.authUrl,\n authSuccessUrl: action.authSuccessUrl,\n authErrorUrl: action.authErrorUrl,\n useIframe: action.useIframe\n }\n };\n case GENERIC_ERROR:\n return {\n ...state,\n genericError: action.message\n };\n case INVALID_ERROR:\n return {\n ...state,\n invalidError: action.message\n };\n case REG_CODE_UPDATE:\n return {\n ...state,\n invalidError: null,\n genericError: null,\n regCode: {\n ...state.regCode,\n code: action.code\n }\n };\n case START_SUBMIT:\n return {\n ...state,\n submitting: true\n };\n case COMPLETE_SUBMIT:\n return {\n ...state,\n submitting: false\n };\n case EPLUS_MARKETTING_OPT_IN_UPDATE:\n return {\n ...state,\n optInUpdate: {\n isSuccess: action.payload.isSuccess,\n err: action.payload.err\n }\n };\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/reducer.js","import { REQUEST_PAGE, RECEIVE_PAGE } from 'common/page/actions';\nimport { SET_SPORTS_FILTER } from 'common/schedule/actions';\nimport { ADS_CONFIG, ADS_INITIALIZED, ADS_CONFIG_INVALIDATED, ADS_REFRESHED } from '../actions';\n\nexport default function adsReducer(state = { configured: false, initialized: false }, action) {\n switch (action.type) {\n case ADS_CONFIG:\n return { ...state, id: action.id, config: action.config, configured: true, initialized: false };\n\n case ADS_CONFIG_INVALIDATED:\n return { ...state, id: null, configured: false, initialized: false };\n\n case ADS_INITIALIZED:\n return { ...state, initialized: true };\n\n case REQUEST_PAGE:\n return { ...state, id: null, configured: false, initialized: false };\n\n case RECEIVE_PAGE:\n return { ...state, id: action.id };\n\n case SET_SPORTS_FILTER:\n return {\n ...state,\n config: { ...state.config, kvps: { ...state.config.kvps, sp: action.label.toLowerCase() } },\n refresh: true\n };\n\n case ADS_REFRESHED:\n return { ...state, refresh: false };\n\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ads/reducers/index.js","import { ContentType } from 'enums';\nimport {\n CLEAR_PAGE,\n COMPLETE_PAGE_LOAD,\n INVALIDATE_PAGE,\n PAGE_INFO_SET,\n RECEIVE_PAGE,\n REFRESH_BUCKETS,\n REPLACE_BUCKETS,\n REPLACE_HERO,\n REQUEST_PAGE,\n SET_STATE,\n START_GET_COMPETITORS,\n COMPLETE_GET_COMPETITORS\n} from '../actions';\n\nfunction getHero(state, { buckets = [], heroContent, noHero }) {\n // Use the \"concrete\" hero if it already exists (this is if the id was passed in directly to the page)\n // If the new hero content also has the `concrete` flag, replace the hero\n if (state.hero && state.hero.concrete && (!heroContent || !heroContent.concrete)) {\n return state.hero;\n }\n\n // If the hero content was retrieved as part of the page load action, use it.\n if (heroContent) {\n return heroContent;\n }\n\n // If there's no buckets, there's no content to make the hero.\n if (buckets.length === 0 || noHero) {\n return undefined;\n }\n\n // Find the bucket index that contains the top scored item.\n const playableBuckets = buckets\n .filter((bucket) => {\n const bucketContents = bucket.contents;\n return (\n bucketContents.length > 0 &&\n (bucketContents[0].type === ContentType.LISTING || bucketContents[0].type === ContentType.VOD)\n );\n });\n const topBucketIndex = playableBuckets.map((bucket, index) => ({ score: bucket.contents[0].score || 0, index }))\n .sort((itemA, itemB) => itemB.score - itemA.score)\n .map((object) => object.index)\n .shift();\n // If no top bucket index was found, then there's no hero.\n // This could happen if the buckets array exists, but the contents were all empty.\n if (topBucketIndex === undefined || !playableBuckets[topBucketIndex]) {\n return undefined;\n }\n\n // Build and return the hero bucket.\n return playableBuckets[topBucketIndex].contents[0];\n}\n\nfunction reinsertBuckets(state, buckets) {\n return buckets.reduce((prev, bucket) => {\n const index = state.buckets.map((buck) => buck.id).indexOf(bucket.id);\n return [\n ...prev.slice(0, index),\n bucket,\n ...prev.slice(index + 1)\n ];\n }, state.buckets);\n}\n\nfunction replaceBuckets(state, replacementBuckets) {\n // calling state.buckets.map throws error when state.buckets is empty. We need to do the check before mapping\n if (state.buckets && state.buckets.length) {\n return state.buckets.map((bucket) => {\n let newBucket = bucket;\n replacementBuckets.forEach((replacementBucket) => {\n if (bucket.id === replacementBucket.id) {\n newBucket = replacementBucket;\n }\n });\n // the __replaced property is used when we first get to the player page from a bucket\n // delete it when we replace buckets so that TabContainer doesn't use it to select a tab\n // #TODO: we can probably accomplish the initial replacement without this flag\n delete newBucket.__replaced;\n return newBucket;\n });\n }\n return state.buckets;\n}\n\nfunction completeScoring(state, action) {\n const buckets = action.buckets || [];\n if (buckets.length === 0) {\n return { ...state, scored: true };\n }\n\n const scoredBuckets = reinsertBuckets(state, buckets);\n const hero = getHero(state, { buckets: scoredBuckets, heroContent: action.heroContent, noHero: state.noHero });\n return { ...state, scoredBuckets, hero, scored: true };\n}\n\nexport default function page(state = {}, action) {\n switch (action.type) {\n case CLEAR_PAGE:\n return {};\n\n case INVALIDATE_PAGE:\n return { ...state, didInvalidate: true };\n\n case REFRESH_BUCKETS:\n return {\n ...state,\n buckets: replaceBuckets(state, action.buckets)\n };\n\n case REPLACE_BUCKETS:\n return {\n ...state,\n buckets: action.buckets\n };\n\n case REQUEST_PAGE:\n return {\n ...state,\n id: action.id,\n isFetching: true,\n didInvalidate: false,\n requestedTime: action.requestedTime,\n scored: false,\n isFinal: false\n };\n\n case RECEIVE_PAGE:\n // ignore the payload that's from the different routes\n if (state.id !== action.id) {\n return state;\n }\n return {\n ...state,\n id: action.id,\n name: action.name,\n image: action.image,\n icon: action.icon,\n description: action.description,\n header: action.header,\n edition: action.edition,\n lang: action.lang,\n isFetching: false,\n didInvalidate: false,\n buckets: action.buckets,\n receivedTime: action.receivedTime,\n tracking: action.tracking,\n hero: getHero(state, action),\n carouselBucket: action.carouselBucket,\n error: action.error,\n isFinal: action.isFinal,\n noHero: action.noHero\n };\n\n case REPLACE_HERO:\n return {\n ...state,\n hero: action.content || state.hero\n };\n\n case COMPLETE_PAGE_LOAD:\n return completeScoring(state, action);\n\n case START_GET_COMPETITORS:\n return { ...state, loading: true };\n\n case COMPLETE_GET_COMPETITORS:\n return { ...state, competitors: action.competitors, loading: false };\n\n case PAGE_INFO_SET:\n return {\n ...state,\n name: action.name,\n id: action.id,\n isFinal: action.isFinal,\n autoPageViewTrack: action.autoPageViewTrack\n };\n\n case SET_STATE:\n return {\n ...state,\n isFinal: action.isFinal\n };\n\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/reducers/index.js","import {\n REGISTER_PLAYER,\n RESET_PLAYER,\n PLAYER_READY,\n AUTOEMBED_TIMER_COMPLETE,\n STREAM_PLAYING,\n AUTHORIZATION_ERROR,\n AUTOPLAY_UPDATED,\n PLAYER_EMBEDDING,\n PLAYER_EMBEDDED,\n FEED_SELECT,\n FEED_RESET\n} from '../actions';\n\nexport default function page(state = {\n autoEmbedTimerComplete: false,\n embedding: false,\n embedded: false,\n ready: false,\n error: false,\n feeds: {}\n}, action) {\n switch (action.type) {\n case AUTHORIZATION_ERROR:\n return { ...state, error: true, message: action.message };\n case AUTOEMBED_TIMER_COMPLETE:\n return { ...state, autoEmbedTimerComplete: true };\n case AUTOPLAY_UPDATED:\n return { ...state, autoEmbed: action.autoplay };\n case STREAM_PLAYING:\n return { ...state, error: action.error };\n case PLAYER_READY:\n return { ...state, autoEmbed: action.autoEmbed, ready: action.ready };\n case PLAYER_EMBEDDING:\n return { ...state, embedding: action.embedding };\n case PLAYER_EMBEDDED:\n return { ...state, embedded: action.embedded };\n case REGISTER_PLAYER:\n return { ...state, ready: action.ready };\n case RESET_PLAYER:\n return {\n ...state,\n autoEmbedTimerComplete: false,\n embedding: false,\n embedded: false,\n ready: false,\n error: false\n };\n case FEED_SELECT:\n if (!action.content || !action.content.id) {\n return state;\n }\n return {\n ...state,\n feeds: {\n ...state.feeds,\n [action.content.id]: action.streamId\n }\n };\n case FEED_RESET:\n return { ...state, feeds: {} };\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/reducers/index.js","import { PageAPI } from 'lib/api';\nimport { apiEnvSelector } from 'common/selectors/appSelector';\nimport { collectionParamsSelector } from 'common/selectors/apiParamsSelector';\n\nexport const START_GET_NETWORKS = 'START_GET_NETWORKS';\nexport const COMPLETE_GET_NETWORKS = 'COMPLETE_GET_NETWORKS';\n\nexport function startGetNetworks() {\n return {\n type: START_GET_NETWORKS,\n startTime: Date.now()\n };\n}\n\nexport function completeGetNetworks(networks) {\n return {\n type: COMPLETE_GET_NETWORKS,\n completeTime: Date.now(),\n networks\n };\n}\n\nexport function fetchNetworks() {\n return (dispatch, getState) => {\n const state = getState();\n const apiEnv = apiEnvSelector(state);\n const params = collectionParamsSelector(state);\n dispatch(startGetNetworks());\n return PageAPI.getNetworks(apiEnv, params).then((networks) => {\n dispatch(completeGetNetworks(networks || []));\n return networks;\n });\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/actions/clientActions.js","import { COMPLETE_GET_NETWORKS } from 'common/actions/clientActions';\nimport { START_GET_SCHEDULE,\n COMPLETE_GET_SCHEDULE,\n COMPLETE_GET_CATEGORIES,\n SET_STATUS_FILTER,\n SET_NETWORK_FILTER,\n SET_SPORTS_FILTER,\n SET_DATE_FILTER,\n SET_REPLAY_DATE_FILTER } from '../actions';\nimport StatusFilter from '../StatusFilter';\n\nconst today = new Date();\n\nexport default function scheduleReducer(state = {\n statusFilterValue: StatusFilter.Options.LIVE,\n dateFilterEndValue: today,\n dateFilterStartValue: today,\n sportsFilterValue: '',\n sportsFilterType: 'category',\n networkFilter: ''\n}, action) {\n switch (action.type) {\n\n case COMPLETE_GET_NETWORKS:\n return { ...state, channels: action.networks };\n\n case COMPLETE_GET_CATEGORIES:\n return { ...state, categories: action.categories };\n\n case START_GET_SCHEDULE:\n return { ...state, loading: true };\n\n case COMPLETE_GET_SCHEDULE:\n return { ...state, listings: action.listings, loading: false };\n\n case SET_STATUS_FILTER:\n return { ...state, statusFilterValue: action.status };\n\n case SET_NETWORK_FILTER:\n return { ...state, networkFilter: action.value, networkFilterLabel: action.label };\n\n case SET_SPORTS_FILTER:\n return {\n ...state,\n sportsFilterValue: action.value,\n sportsFilterType: action.filterType,\n sportsFilterLabel: action.label\n };\n\n case SET_DATE_FILTER:\n return { ...state, dateFilterStartValue: action.date, dateFilterEndValue: action.date };\n\n case SET_REPLAY_DATE_FILTER:\n return { ...state, dateFilterStartValue: action.startDate, dateFilterEndValue: action.endDate };\n\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/reducers/index.js","import {\n RECEIVE_SCHEDULE_MODULE_DATA,\n REQUEST_SCHEDULE_MODULE_DATA,\n SCORE_SCHEDULE_MODULE_DATA\n} from '../actions';\n\nfunction completeScoring(state, action) {\n const buckets = action.buckets || [];\n if (buckets.length === 0) {\n return { ...state, scored: true };\n }\n return { ...state, buckets, scored: true };\n}\n\nexport default function scheduleModuleReducer(state = {}, action) {\n switch (action.type) {\n case SCORE_SCHEDULE_MODULE_DATA:\n return completeScoring(state, action);\n case RECEIVE_SCHEDULE_MODULE_DATA:\n return {\n ...state,\n name: action.name,\n buckets: action.buckets,\n receivedTime: action.receivedTime\n };\n case REQUEST_SCHEDULE_MODULE_DATA:\n return {\n ...state,\n lang: action.lang,\n query: action.query,\n requestedTime: action.requestedTime,\n scored: false\n };\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/scheduleModule/reducers/index.js","import {\n CLEAR_PLAYING_STREAM,\n STREAM_PLAYING\n} from 'webapp/player/actions';\nimport {\n ANALYTICS_READY,\n CLOSE_MODAL_MESSAGE,\n CONTENT_SELECT,\n CONTENT_UNSELECT,\n STREAM_SELECTING,\n STREAM_SELECT,\n STREAM_UNSELECT,\n DISPLAY_MODAL_MESSAGE,\n FETCH_EXTERNAL_CONFIG,\n FETCH_EMBEDDED_OPTIONS,\n INIT_APP_DATA,\n MEDIA_QUERY,\n PACKAGE_ID,\n PACKAGE_TIER,\n APP_RENDERED,\n PICKER_STREAMS_SELECT,\n PICKER_STREAMS_UNSELECT,\n PICKER_STREAMS_SELECT_ERROR,\n OPEN_PICKER_SUCCESS,\n OPEN_PICKER_ERROR,\n PICKER_AUTO_SELECT,\n PICKER_STATE_CLEAR\n} from '../actions/appActions';\n\nexport default function appReducer(state = {\n isMobile: false,\n selectedContent: {},\n selectedStream: {},\n playingStream: {},\n previousContent: {},\n bootstrap: {},\n selectedAiringId: undefined,\n pickerStreams: []\n}, action) {\n switch (action.type) {\n case APP_RENDERED:\n return { ...state, rendered: true };\n case ANALYTICS_READY:\n return { ...state, analytics: action.initData };\n case CLEAR_PLAYING_STREAM:\n return { ...state, playingStream: {} };\n case CLOSE_MODAL_MESSAGE:\n return {\n ...state,\n showModalMessage: false,\n messageType: '',\n messageData: undefined,\n lastMessageType: state.messageType,\n lastMessageData: state.messageData\n };\n case CONTENT_SELECT:\n return { ...state, previousContent: state.selectedContent, selectedContent: action.content };\n case CONTENT_UNSELECT:\n return { ...state, selectedContent: {} };\n case STREAM_SELECTING:\n return { ...state, selectingStream: action.stream };\n case STREAM_SELECT:\n return { ...state, selectingStream: undefined, selectedStream: action.stream, playbackMeta: action.playbackMeta };\n case STREAM_UNSELECT:\n return { ...state, selectingStream: undefined, selectedStream: {}, playbackMeta: undefined };\n case STREAM_PLAYING:\n return { ...state, playingStream: action.stream };\n case DISPLAY_MODAL_MESSAGE:\n return { ...state, showModalMessage: true, messageType: action.messageType, messageData: action.messageData };\n case FETCH_EXTERNAL_CONFIG:\n return { ...state, bootstrap: action.bootstrap };\n case FETCH_EMBEDDED_OPTIONS:\n return { ...state, options: action.options };\n case INIT_APP_DATA:\n return {\n ...state,\n appName: action.appName,\n adobePassEnv: action.adobePassEnv,\n apiEnv: action.apiEnv,\n configEnv: action.configEnv,\n country: action.country,\n device: action.device,\n env: action.env,\n isMobile: action.isMobile,\n lang: action.lang,\n sourceLang: action.sourceLang,\n location: action.location,\n messages: action.messages,\n enableSearch: action.enableSearch,\n packageId: action.packageId,\n tier: action.tier,\n edition: action.edition,\n webview: action.webview,\n renderTemplateType: action.renderTemplateType,\n newrelicInsertKey: action.newrelicInsertKey,\n newrelicAccountId: action.newrelicAccountId\n };\n case MEDIA_QUERY:\n return { ...state, mq: action.mq };\n case PACKAGE_ID:\n return { ...state, packageId: action.packageId };\n case PACKAGE_TIER:\n return { ...state, tier: action.tier };\n case PICKER_STREAMS_SELECT:\n return { ...state, pickerStreams: action.pickerStreams, pickerStreamsEventId: action.pickerStreamsEventId };\n case PICKER_STREAMS_UNSELECT:\n return { ...state, pickerStreams: [], pickerStreamsEventId: undefined };\n case PICKER_STREAMS_SELECT_ERROR:\n return { ...state, pickerStreamsError: action.error };\n case OPEN_PICKER_SUCCESS:\n return {\n ...state,\n openPicker: {\n isSuccess: true,\n id: action.payload.id,\n retryTime: action.payload.retryTime\n }\n };\n case OPEN_PICKER_ERROR:\n return { ...state, openPicker: { isSuccess: false, error: action.error } };\n case PICKER_AUTO_SELECT:\n return { ...state, pickerAutoSelectStream: action.stream };\n case PICKER_STATE_CLEAR: {\n return { ...state, openPicker: {}, pickerAutoSelectStream: {} };\n }\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/reducers/appReducer.js","import { unknownAuthStates, MVPD_PREVIOUS_KEY, GEO_LOCATION_KEY } from 'constants';\nimport { AuthTypes, Entitlements } from 'enums';\nimport { set, get } from 'lib/util/localStorage';\nimport {\n START_CHECK_IP_AUTHENTICATION,\n COMPLETE_CHECK_IP_AUTHENTICATION,\n GET_IP_AUTHENTICATION_INFO,\n START_ADOBEPASS_INITIALIZE,\n COMPLETE_ADOBEPASS_INITIALIZE,\n START_CHECK_AUTHENTICATION,\n COMPLETE_CHECK_AUTHENTICATION,\n START_AUTHENTICATION,\n COMPLETE_AUTHENTICATION,\n START_AUTHORIZATION,\n COMPLETE_AUTHORIZATION,\n COMPLETE_LOGOUT,\n GET_AUTHENTICATION_INFO,\n GET_METADATA,\n COMPLETE_PREAUTH_CHECK,\n GET_LOCATION,\n ADOBEPASS_ERROR_EVENT,\n START_CHECK_BAM_AUTHENTICATION,\n COMPLETE_CHECK_BAM_AUTHENTICATION,\n GET_BAM_AUTHENTICATION_INFO,\n GET_BAM_SESSION_TOKEN,\n GET_GEOLOCATION,\n GET_USER_TRACKING\n} from '../actions/authenticationActions';\nimport {\n COMPLETE_CHECK_ONEID_AUTHENTICATION,\n CLEAR_GUEST\n} from '../actions/oneIdActions';\n\nexport function addAuthType(authTypes, authType) {\n // don't add multiple authtypes\n if (authTypes.indexOf(authType) !== -1) {\n return [...authTypes];\n }\n\n return [...authTypes, authType];\n}\n\nexport function removeAuthType(authTypes, authType) {\n const index = authTypes.indexOf(authType);\n if (index === -1) {\n return [...authTypes];\n }\n return [\n ...authTypes.slice(0, index),\n ...authTypes.slice(index + 1)\n ];\n}\n\nexport function authTypesReducer(state = [], action) {\n let authTypes = state;\n if (action.authType === AuthTypes.BAM) {\n Object.keys(Entitlements).forEach(entitlement => {\n authTypes = removeAuthType(authTypes, `unknown_${entitlement}`);\n });\n\n if (action.directive === 'add') {\n const { entitlements = [], hasTDAEntitlement } = action;\n if (entitlements.length) {\n entitlements.forEach(entitlement => {\n authTypes = addAuthType(authTypes, entitlement);\n });\n }\n if (hasTDAEntitlement) {\n authTypes = addAuthType(authTypes, Entitlements.ESPN_TDA);\n }\n } else {\n Object.keys(Entitlements).forEach(entitlement => {\n authTypes = removeAuthType(authTypes, entitlement);\n });\n }\n\n return authTypes;\n }\n\n authTypes = removeAuthType(authTypes, `unknown_${action.authType}`);\n\n if (action.directive === 'add') {\n authTypes = addAuthType(authTypes, action.authType);\n } else {\n authTypes = removeAuthType(authTypes, action.authType);\n }\n\n return authTypes;\n}\n\nexport function bamReducer(state = {}, action) {\n switch (action.type) {\n case START_CHECK_BAM_AUTHENTICATION:\n return Object.assign({}, state, {\n initialization: {\n initializing: true,\n startTime: action.startTime\n }\n });\n case COMPLETE_CHECK_BAM_AUTHENTICATION:\n return Object.assign({}, state, {\n initialization: {\n initializing: false,\n completeTime: action.completeTime\n }\n });\n case GET_BAM_AUTHENTICATION_INFO:\n return Object.assign({}, state, {\n subscriptions: action.subscriptions\n });\n case GET_BAM_SESSION_TOKEN:\n return Object.assign({}, state, {\n session: action.session\n });\n case GET_GEOLOCATION:\n if (!get(GEO_LOCATION_KEY) && action.geo) {\n set(GEO_LOCATION_KEY, action.geo, 24 * 60 * 60);\n }\n return Object.assign({}, state, {\n geo: action.geo\n });\n case GET_USER_TRACKING:\n return {\n ...state,\n userTracking: action.userTracking\n };\n default:\n return state;\n }\n}\n\nexport function ipReducer(state = {}, action) {\n switch (action.type) {\n case START_CHECK_IP_AUTHENTICATION:\n return Object.assign({}, state, {\n initialization: {\n initializing: true,\n startTime: action.startTime\n }\n });\n case COMPLETE_CHECK_IP_AUTHENTICATION:\n return Object.assign({}, state, {\n initialization: {\n initializing: false,\n completeTime: action.completeTime\n }\n });\n case GET_IP_AUTHENTICATION_INFO:\n return Object.assign({}, state, {\n info: action.info\n });\n case GET_LOCATION:\n return Object.assign({}, state, {\n location: action.location\n });\n default:\n return state;\n }\n}\n\nexport function adobePassReducer(state = {}, action) {\n switch (action.type) {\n case START_ADOBEPASS_INITIALIZE:\n return Object.assign({}, state, {\n initialization: {\n initializing: true,\n startTime: action.startTime\n }\n });\n case COMPLETE_ADOBEPASS_INITIALIZE:\n return Object.assign({}, state, {\n initialization: {\n initializing: false,\n completeTime: action.completeTime\n }\n });\n case START_CHECK_AUTHENTICATION:\n return Object.assign({}, state, {\n checkAuthentication: {\n checkingAuthentication: true,\n startTime: action.startTime\n }\n });\n case COMPLETE_CHECK_AUTHENTICATION:\n return Object.assign({}, state, {\n checkAuthentication: {\n checkingAuthentication: false,\n mvpd: action.mvpd,\n completeTime: action.completeTime\n },\n isAuthenticated: action.isAuthenticated\n });\n case START_AUTHENTICATION:\n return Object.assign({}, state, {\n authentication: Object.assign({}, state.authentication, {\n authenticating: true,\n startTime: action.startTime\n })\n });\n case COMPLETE_AUTHENTICATION:\n return Object.assign({}, state, {\n authentication: Object.assign({}, state.authentication, {\n authenticating: false,\n mvpd: action.mvpd,\n completeTime: action.completeTime\n }),\n isAuthenticated: action.isAuthenticated\n });\n case START_AUTHORIZATION:\n return Object.assign({}, state, {\n authorization: {\n authorizing: true,\n resourceId: action.resourceId,\n startTime: action.startTime\n }\n });\n case COMPLETE_AUTHORIZATION:\n return Object.assign({}, state, {\n authorization: {\n authorizing: false,\n resourceId: action.resourceId,\n token: action.token,\n completeTime: action.completeTime\n },\n isAuthorized: ((action.token && (action.token.length > 0)) &&\n (action.resourceId && action.resourceId.length > 0)) || false\n });\n case COMPLETE_LOGOUT:\n return Object.assign({}, state, {\n info: {},\n isAuthenticated: false\n });\n case GET_AUTHENTICATION_INFO:\n if (action.info && action.info.abbreviation) {\n set(MVPD_PREVIOUS_KEY, action.info.abbreviation);\n }\n return Object.assign({}, state, {\n info: action.info\n });\n case GET_METADATA: {\n const newMetaData = {};\n if (typeof action.key === 'string') {\n newMetaData[action.key] = action.value;\n }\n return Object.assign({}, state, {\n metadata: Object.assign({}, state.metadata, {\n [action.key]: action.value\n })\n });\n }\n case COMPLETE_PREAUTH_CHECK: {\n return {\n ...state,\n preauthorizedResources: action.resources\n };\n }\n case ADOBEPASS_ERROR_EVENT: {\n return {\n ...state,\n error: action.error\n };\n }\n default:\n return state;\n }\n}\n\nexport default function authenticationReducer(state = { authTypes: unknownAuthStates }, action) {\n switch (action.type) {\n case START_CHECK_BAM_AUTHENTICATION:\n case COMPLETE_CHECK_BAM_AUTHENTICATION:\n case GET_BAM_SESSION_TOKEN:\n case GET_GEOLOCATION:\n case GET_USER_TRACKING:\n case GET_BAM_AUTHENTICATION_INFO:\n return Object.assign({}, state, {\n bam: bamReducer(state.bam, action)\n });\n case START_CHECK_IP_AUTHENTICATION:\n case GET_LOCATION:\n case GET_IP_AUTHENTICATION_INFO:\n return Object.assign({}, state, {\n ip: ipReducer(state.ip, action)\n });\n case COMPLETE_CHECK_IP_AUTHENTICATION:\n return Object.assign({}, state, {\n ip: ipReducer(state.ip, action),\n authTypes: authTypesReducer(state.authTypes, action)\n });\n case START_ADOBEPASS_INITIALIZE:\n case COMPLETE_ADOBEPASS_INITIALIZE:\n case START_CHECK_AUTHENTICATION:\n case START_AUTHENTICATION:\n case START_AUTHORIZATION:\n case COMPLETE_AUTHORIZATION:\n case GET_AUTHENTICATION_INFO:\n case GET_METADATA:\n case COMPLETE_PREAUTH_CHECK:\n case ADOBEPASS_ERROR_EVENT:\n return Object.assign({}, state, {\n adobePass: adobePassReducer(state.adobePass, action)\n });\n case COMPLETE_CHECK_AUTHENTICATION:\n case COMPLETE_AUTHENTICATION:\n case COMPLETE_LOGOUT:\n return Object.assign({}, state, {\n adobePass: adobePassReducer(state.adobePass, action),\n authTypes: authTypesReducer(state.authTypes, action)\n });\n case COMPLETE_CHECK_ONEID_AUTHENTICATION:\n case CLEAR_GUEST:\n return {\n ...state,\n bamSubReady: action.bamSubReady,\n hasSuperBundle: action.hasSuperBundle,\n authTypes: authTypesReducer(state.authTypes, action)\n };\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/reducers/authenticationReducer.js","import { COMPLETE_GET_FAN } from '../actions/fanActions';\n\nexport default function fanReducer(state = {}, action) {\n switch (action.type) {\n case COMPLETE_GET_FAN:\n return Object.assign({}, state, action.fan);\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/reducers/fanReducer.js","import { COMPLETE_GET_NETWORKS } from '../actions/networkActions';\n\nexport default function networksReducer(state = {}, action) {\n switch (action.type) {\n case COMPLETE_GET_NETWORKS:\n return {\n ...state,\n data: action.networks,\n completeTime: action.completeTime\n };\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/reducers/networksReducer.js","export default function lastAction(state = null, action) {\n return action;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/reducers/lastActionReducer.js","import {\n COMPLETE_CHECK_SWID_AUTHENTICATION,\n COMPLETE_CHECK_ONEID_AUTHENTICATION,\n CLEAR_GUEST,\n GET_GUEST,\n LOGIN_START,\n LOGIN_CLOSED\n} from '../actions/oneIdActions';\n\nexport default function oneIdReducer(state = {}, action) {\n switch (action.type) {\n case COMPLETE_CHECK_SWID_AUTHENTICATION:\n return {\n ...state,\n swid: action.swid,\n isLoggedIn: action.isAuthenticated\n };\n case GET_GUEST:\n return {\n ...state,\n data: action.data,\n completeTime: action.completeTime\n };\n case CLEAR_GUEST:\n return {\n ...state,\n data: {},\n completeTime: undefined\n };\n case LOGIN_START:\n return {\n ...state,\n loginParams: action.params\n };\n case LOGIN_CLOSED:\n case COMPLETE_CHECK_ONEID_AUTHENTICATION:\n return {\n ...state,\n loginParams: undefined\n };\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/reducers/oneIdReducer.js","import {\n REQUEST_PROVIDERS,\n RECEIVE_PROVIDERS,\n DISPLAY_PROVIDER_DIALOG,\n CLOSE_PROVIDER_DIALOG\n} from '../actions/authenticationActions';\n\nexport const defaultState = {\n providers: [],\n display: false\n};\n\nexport default function providerDialogReducer(state = defaultState, action) {\n switch (action.type) {\n case REQUEST_PROVIDERS:\n return { ...state, reqStartTime: action.startTime };\n case RECEIVE_PROVIDERS:\n return {\n ...state,\n providers: action.providers,\n reqCompleteTime: action.completeTime\n };\n case DISPLAY_PROVIDER_DIALOG:\n return { ...state, display: true };\n case CLOSE_PROVIDER_DIALOG:\n return { ...state, display: false };\n default:\n return state;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/reducers/providerDialogReducer.js","import { LOAD_NETWORK_IMAGE_DATA } from '../actions';\n\nexport default function networkImageData(state = {}, action) {\n switch (action.type) {\n case LOAD_NETWORK_IMAGE_DATA:\n return {\n ...state,\n payload: action.payload\n };\n default:\n return { ...state };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/NetworkLogo/reducers/index.js","import { createStore, applyMiddleware, compose } from 'redux';\nimport { routerMiddleware } from 'react-router-redux';\nimport thunkMiddleware from 'redux-thunk';\nimport rootReducer from 'common/reducers';\nimport { AppEnvs } from 'enums';\n\nfunction configureStore(initialState = { app: {} }, history, customMiddleware = []) {\n const middleware = [thunkMiddleware, routerMiddleware(history)].concat(customMiddleware);\n if (process.browser && process.env.NODE_ENV !== 'production') {\n // turn this off by default\n // const createLogger = require('redux-logger');\n // middleware.push(createLogger());\n }\n\n const store = createStore(rootReducer, initialState, compose(\n applyMiddleware(...middleware),\n (\n typeof window === 'object' &&\n typeof window.devToolsExtension !== 'undefined' &&\n initialState.app.env !== AppEnvs.PROD\n ) ? window.devToolsExtension() : func => func\n ));\n\n if (process.env.NODE_ENV !== 'production' && module.hot) {\n // Enable Webpack hot module replacement for reducers\n module.hot.accept('common/reducers', () => {\n const nextReducer = require('common/reducers');\n store.replaceReducer(nextReducer);\n });\n }\n\n return store;\n}\n\nexport default configureStore;\n\n\n\n// WEBPACK FOOTER //\n// ./app/store.js","export default function openFeedbackPage() {\n window.open('http://broadband.espn.com/espn360/watchespn/feedback', 'feedback', 'status=no,height=450,width=525,scrollbars=yes');\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/ui/openFeedbackPage.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { PageType } from 'enums';\nimport { createFetchPageAction, scorePage } from 'common/page/actions';\nimport { fetchScheduleModule, scoreScheduleModule } from 'common/scheduleModule/actions';\nimport { isIntlSelector, showOneIdLoginSelector } from 'common/selectors/appSelector';\nimport BannerAd from 'common/ads/BannerAd';\nimport OverlayAd from 'common/ads/OverlayAd';\nimport BucketListContainer from 'common/page/buckets/BucketListContainer';\nimport MainContainer from 'common/page/common/MainContainer';\nimport TopLayoutContainer from 'common/page/common/TopLayoutContainer';\nimport { oneIdLoggedInSelector } from 'common/selectors/oneIdSelector';\n\n// create landing page(e.g. home, espnplus, product)\nexport default function createLandingPage(options = {}) {\n const { pageName = 'home' } = options;\n\n const LandingPage = ({ isIntl, showOneIdLogin, isLoggedIn }) => {\n const showLogin = !isLoggedIn && showOneIdLogin;\n // NOTE: Display Overlay Ads on `home`, `espnplus` pages generated by createLandingPage\n const bannerAd = isIntl ? [<BannerAd key=\"banner_ad\" />] : [<OverlayAd key=\"overlay_ad\" />];\n return (\n <MainContainer className=\"watch-home\" pre={bannerAd} showLogin={showLogin}>\n <TopLayoutContainer />\n <div className=\"layout-full layout-full--watch\">\n <section className=\"col-a\">\n <BucketListContainer pageType={PageType.HOME} />\n </section>\n </div>\n </MainContainer>\n );\n };\n\n LandingPage.loadActions = [\n (params, query, lang) => createFetchPageAction(pageName, params, query, lang),\n (params, query, lang) => fetchScheduleModule(lang)\n ];\n\n LandingPage.refreshInterval = 65; // 1 min and 5 seconds\n\n LandingPage.onRefresh = ({ dispatch, routeParams, lang, location: { query = {} } }) => {\n dispatch(createFetchPageAction(pageName, routeParams, query, lang))\n .then(() => {\n dispatch(scorePage());\n });\n dispatch(fetchScheduleModule(lang))\n .then(() => {\n dispatch(scoreScheduleModule());\n });\n };\n\n LandingPage.propTypes = {\n isIntl: PropTypes.bool,\n showOneIdLogin: PropTypes.bool,\n isLoggedIn: PropTypes.bool\n };\n\n const mapStateToProps = (state) => ({\n isIntl: isIntlSelector(state),\n showOneIdLogin: showOneIdLoginSelector(state),\n isLoggedIn: oneIdLoggedInSelector(state)\n });\n\n return connect(mapStateToProps)(LandingPage);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/createLandingPage.js","import React from 'react';\nimport { Route, IndexRoute } from 'react-router';\nimport Features from 'common/page/Features';\nimport Search from 'common/page/Search';\nimport Sid from 'webapp/page/Sid';\nimport Player from 'webapp/page/Player';\nimport Schedule from 'common/page/Schedule';\nimport ShortStopLive from 'webapp/page/ShortStopLive';\nimport Activate from 'webapp/page/Activate';\nimport Feedback from 'webapp/page/Feedback';\nimport Roadblock from 'webapp/page/Roadblock';\nimport UnsupportedPage from 'webapp/page/UnsupportedPage';\nimport Originals from 'common/page/Originals';\nimport CatalogPage from 'common/page/Catalog';\nimport SyndicatedPlayerPage from 'webapp/page/SyndicatedPlayerPage';\nimport SyndicatedPlayerExample from 'webapp/page/SyndicatedPlayerExample';\nimport AffiliatePageExample from 'webapp/page/AffiliatePageExample';\nimport AdobePassProxyLogin from 'common/page/AdobePassProxyLogin';\nimport AccountSelector from 'common/page/AccountSelector';\nimport ConnectedRootApplicationShell from 'common/RootApplicationShell';\nimport BasicShell from './subShell/BasicShell';\nimport PageShell from './subShell/PageShell';\nimport createLandingPage from 'common/createLandingPage';\nimport createCollection from 'common/createCollection';\n\nfunction createRoutes() {\n return ([\n <Route path=\"/\" component={ConnectedRootApplicationShell}>\n <Route component={BasicShell} key=\"route_0\">\n <Route path=\"activate\" component={Activate} />\n <Route path=\"subscribe\" component={Activate} />\n <Route path=\"feedback\" component={Feedback} />\n <Route path=\"roadblock\" component={Roadblock} />\n <Route path=\"unsupported\" component={UnsupportedPage} />\n <Route path=\"syndicated/player\" component={SyndicatedPlayerPage} />\n <Route path=\"syndicated/player/example\" component={SyndicatedPlayerExample} />\n <Route path=\"affiliate/example\" component={AffiliatePageExample} />\n <Route path=\"mvpd/login\" component={AdobePassProxyLogin} />\n <Route path=\"account-selector\" component={AccountSelector} />\n </Route>\n <Route component={PageShell} key=\"route_1\">\n <IndexRoute component={createLandingPage({ pageName: 'home' })} />\n <Route path=\"_/*\" component={createLandingPage({ pageName: 'home' })} />\n <Route path=\"collections/:id(/g/:groupId)(/:junk)\" component={createCollection()} />\n <Route path=\"originals\" component={Originals} />\n <Route path=\"espnplus\" component={createLandingPage({ pageName: 'espnplus' })} />\n <Route path=\"product/:id(/g/:groupId)(/:junk)\" component={createCollection({ pageName: 'product' })} />\n <Route path=\"program/:id(/g/:groupId)(/:junk)\" component={createCollection({ pageName: 'program' })} />\n <Route path=\"schedule\" component={Schedule} />\n <Route path=\"player\" component={Player} />\n <Route path=\"shortstoplive\" component={ShortStopLive} />\n <Route path=\"search(/:searchTerm)\" component={Search} />\n <Route path=\"sid(/:team)\" component={Sid} />\n <Route path=\":pageName/:id(/:junk)\" component={CatalogPage} />\n <Route path=\":pageName\" component={Features} />\n </Route>\n </Route>\n ]);\n}\n\nexport default createRoutes;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/routes.js","import 'polyfills';\nimport React from 'react';\nimport { render } from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { Router, applyRouterMiddleware, browserHistory, useRouterHistory } from 'react-router';\nimport useScroll from 'react-router-scroll';\nimport trackingMiddleware from 'common/middlewares/trackingMiddleware';\nimport { syncHistoryWithStore } from 'react-router-redux';\nimport { addLocaleData } from 'react-intl';\nimport config from 'config';\nimport { docReady } from 'lib/ui';\nimport configureStore from 'store';\nimport createRoutes from './routes';\nimport ComponentDataContainer from 'common/ComponentDataContainer';\nimport IntlProvider from 'common/IntlProvider';\nimport { init } from 'lib/omniture';\nimport { analyticsConstantsSelector } from 'common/selectors/analyticsSelectors';\nimport { ssrSelector } from 'common/selectors/appSelector';\nimport { appRendered } from 'common/actions/appActions';\n\nif (process.env.NODE_ENV !== 'production' && process.env.PERF_DEBUG === 'true') {\n const { whyDidYouUpdate } = require('why-did-you-update');\n whyDidYouUpdate(React);\n}\n\n// since we are using the same bundle for qa and prod, we need to define the \"publicPath\"\n// for webpack at runtime. The alternative is building a bundle for each environment\n// http://webpack.github.io/docs/configuration.html#output-publicpath\n/* eslint-disable */\nif (window.watchGlobals) {\n __webpack_public_path__ = `${window.location.protocol === 'https:' ? window.watchGlobals.secureCdnPath : window.watchGlobals.cdnPath}/`;\n}\n/* eslint-enable */\n\nconst initialState = window && window.__INITIAL_STATE__;\nconst localeData = window && window.ReactIntlLocaleData;\nconst enhancedBrowserHistory = useRouterHistory(() => browserHistory)({\n basename: '/watch'\n});\n\nconst store = configureStore(initialState, enhancedBrowserHistory, [trackingMiddleware]);\nconst history = syncHistoryWithStore(enhancedBrowserHistory, store);\nconst { dispatch } = store;\n\nfunction loadActionsRouterMiddleware(props = {}) {\n return {\n renderRouterContext: (child, routerProps) => (\n <ComponentDataContainer routerProps={routerProps} {...props}>{ child }</ComponentDataContainer>\n )\n };\n}\n\nfunction renderApp() {\n const renderWithMiddleware = applyRouterMiddleware(\n useScroll(),\n loadActionsRouterMiddleware({\n dispatch\n })\n );\n const routes = createRoutes();\n const appContainer = document.getElementById(config.uid);\n const state = store.getState();\n const { app: { lang } } = state;\n const ssr = ssrSelector(state);\n const analyticsConstants = analyticsConstantsSelector(state);\n\n if (localeData && localeData[lang]) {\n addLocaleData(localeData[lang]);\n }\n\n init(analyticsConstants);\n\n if (appContainer) {\n render(\n <Provider store={store}>\n <IntlProvider>\n <Router\n history={history}\n render={renderWithMiddleware}\n lang={lang}\n ssr={ssr}\n >\n { routes }\n </Router>\n </IntlProvider>\n </Provider>,\n appContainer,\n () => {\n dispatch(appRendered());\n }\n );\n }\n}\n\nwindow._reactInMem = true;\n// Overwriting from espn-head.js to enable error logging for Beta period\nif (window.newrelic && config.isBeta) {\n window.newrelic.setErrorHandler(() => (false));\n}\n\ndocReady(() => {\n if (!window.Intl) {\n import(/* webpackChunkName: \"polyfill-intl\" */ 'intl')\n .then(renderApp)\n .catch(() => {\n // console.error(err);\n renderApp();\n });\n } else {\n renderApp();\n }\n});\n\nwindow.debug = window.debug || {};\nwindow.debug.setLevel = () => {};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/client.js","import Promise from 'bluebird';\n\nPromise.config({\n warnings: process.env.NODE_ENV !== 'production'\n});\n\nif (!window.Promise) {\n window.Promise = Promise;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/polyfills.js","import request from 'superagent-bluebird-promise';\n\nexport default request;\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/request.js","const deviceName = {\n androidtv: 'Android TV',\n appletv: 'Apple TV',\n tvOS: 'Apple TV',\n firetv: 'Fire TV',\n roku: 'Roku',\n ps3: 'PS3',\n ps4: 'PS4',\n xbox: 'Xbox',\n xboxone: 'Xbox One'\n};\n\nexport const INVALID_MESSAGE = 'Invalid activate code!';\nexport const DEFAULT_VALUE = 'initialValue'; // empty value might hit the affilites w/o abbreviation in the console\n\nexport const WEB_STAGE_ONE_ID_API_PATH = 'https://stg.registerdisney.go.com/jgc/v6/client/ESPN-ONESITE.WEB-STAGE';\nexport const WEB_PROD_ONE_ID_API_PATH = 'https://registerdisney.go.com/jgc/v6/client/ESPN-ONESITE.WEB-PROD';\nexport const WEB_ESPN_PLUS_PURCHASE_PATH_QA = 'https://qa-secure.web.plus.espn.com/billing/purchase';\nexport const WEB_ESPN_PLUS_PURCHASE_PATH_PROD = 'https://secure.web.plus.espn.com/billing/purchase';\n\nexport default deviceName;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/constants.js","import deviceName from '../constants';\n\nexport default (authSystem, deviceType) => {\n const device = deviceName[deviceType] || 'device';\n if (authSystem === 'adobepass') {\n return `Your ${device} is Activated`;\n }\n return `Your ${device} has been connected to your ESPN account`;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/util/getSuccessText.js","/**\n * Returns true if the code is an Adobe Reg code (has alpha chars, and is of length 7)\n * @param {string} code - Either a OneID or Adobe Reg Code\n */\nexport default (code = '') => /[A-Za-z]/.test(code) && code.length === 7;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/util/isAdobeRegCode.js","/**\n * Returns true if the code is alphanumeric and of length 6\n * @param {string} code - Either a OneID or Adobe Reg Code\n */\nexport default (code = '') => /^[a-z0-9]+$/i.test(code) && code.length === 6;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/util/isOneIdRegCode.js","/**\n * isSubscribeInEntitlementPath - Returns a boolean value if the path is an exact subscribe math\n *\n * @param {string} path - String representing the entitlementPath\n *\n * @return {boolean} - Returns true or false\n */\nexport default (path = '') => (typeof path === 'string' && path.trim().toLowerCase() === 'subscribe');\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/util/isSubscribeInEntitlementPath.js","/**\n * This middleware sends tracking calls based on actions being dispatched\n */\n\nimport { trackActivateCodeInvalid } from 'lib/omniture';\nimport routingSelector from 'common/selectors/routingSelector';\nimport { GENERIC_ERROR, INVALID_ERROR } from 'webapp/page/Activate/actions';\n\nexport default (store) => (next) => (action) => {\n const state = store.getState();\n const { providerDialog: { providers = [] } = {} } = state;\n const {\n locationBeforeTransitions: {\n query: { device, deviceType }\n }\n } = routingSelector(state);\n\n const { type, providerId } = action;\n const trackingDevice = device || deviceType;\n const trackingProvider = providers.filter(provider => provider.abbreviation === providerId).shift();\n\n if (type === GENERIC_ERROR || type === INVALID_ERROR) {\n trackActivateCodeInvalid(trackingDevice, trackingProvider);\n }\n\n return next(action);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/middlewares/trackingMiddleware.js","import getNetworkImageData from 'lib/api/NetworkImageData';\n\nexport const LOAD_NETWORK_IMAGE_DATA = 'LOAD_NETWORK_IMAGE_DATA';\n\nexport function loadNetworkImageData() {\n return (dispatch) => getNetworkImageData()\n .then((networkImageData) => {\n dispatch({\n type: LOAD_NETWORK_IMAGE_DATA,\n payload: networkImageData\n });\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/NetworkLogo/actions.js","import loglevel from 'loglevel';\nimport { newRelicEmitter, UNFULFILLED_PROMISE_EVENT} from 'lib/metrics/newRelicEventBus';\nimport request from './cache/requestCache';\nimport proxy from './requestProxy';\nimport fallback from './cache/fallbackCache';\nimport { secureCdnHost } from 'config';\n\nconst log = loglevel.getLogger('NetworkImageData');\n\nconst DEFAULT_EXPIRATION = 600; // 10 minutes\nconst DEFAULT_TIMEOUT = 5000;\nconst NETWORK_IMAGE_DATA_URL = `${secureCdnHost}/connected-devices/images/data.json`;\n\nfunction getUrl() {\n let url = NETWORK_IMAGE_DATA_URL;\n if (!process.browser) { // use non ssl domain for server side\n url = url.replace(secureCdnHost, 'http://proxy.espn.com');\n }\n return url;\n}\n\nexport default function get() {\n const url = getUrl();\n return request.get(url)\n .expiration(DEFAULT_EXPIRATION)\n .use(proxy)\n .timeout(DEFAULT_TIMEOUT)\n .then(({ body }) => {\n fallback.set(url, body);\n return body;\n })\n .catch((err) => {\n log.error(`load network image data: ${url}`, err.originalError);\n newRelicEmitter.emit(UNFULFILLED_PROMISE_EVENT, err);\n return fallback.get(url)\n .then(networkImageData => {\n if (!networkImageData) {\n return networkImageData;\n }\n return {};\n });\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/NetworkImageData.js","import { combineReducers } from 'redux';\nimport { routerReducer as routing } from 'react-router-redux';\n\nimport activation from 'webapp/page/Activate/reducer';\nimport ads from 'common/ads/reducers';\nimport page from 'common/page/reducers';\nimport player from 'webapp/player/reducers';\nimport schedule from 'common/schedule/reducers';\nimport scheduleModule from 'common/scheduleModule/reducers';\nimport app from './appReducer';\nimport authentication from './authenticationReducer';\nimport fan from './fanReducer';\nimport networks from './networksReducer';\nimport lastAction from './lastActionReducer';\nimport oneId from './oneIdReducer';\nimport providerDialog from './providerDialogReducer';\nimport networkImageData from 'common/NetworkLogo/reducers';\n\nconst rootReducer = combineReducers({\n ads,\n app,\n authentication,\n fan,\n lastAction,\n oneId,\n page,\n player,\n providerDialog,\n routing,\n schedule,\n scheduleModule,\n networks,\n activation,\n networkImageData\n});\n\nexport default rootReducer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/reducers/index.js","import React from 'react';\nimport { PageType } from 'enums';\nimport { createFetchPageAction } from 'common/page/actions';\nimport { fetchScheduleModule } from 'common/scheduleModule/actions';\nimport BannerAd from 'common/ads/BannerAd';\nimport BucketListContainer from './buckets/BucketListContainer';\nimport MainContainer from './common/MainContainer';\nimport TopLayoutContainer from './common/TopLayoutContainer';\n\nconst Features = () => {\n const bannerAd = [<BannerAd key=\"banner_ad\" />];\n return (\n <MainContainer className=\"watch-home\" pre={bannerAd}>\n <TopLayoutContainer />\n <div className=\"layout-full layout-full--watch\">\n <section className=\"col-a\">\n <BucketListContainer pageType={PageType.FEATURES} key=\"bucket_list_container\" />\n </section>\n </div>\n </MainContainer>\n );\n};\n\nFeatures.loadActions = [\n (params, query, lang) => createFetchPageAction(params.pageName, params, query, lang),\n (params, query, lang) => fetchScheduleModule(lang)\n];\n\nexport default Features;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/Features.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { entitlementsTrackingSelector } from 'common/selectors/analyticsSelectors';\nimport BannerAd from 'common/ads/BannerAd';\nimport SearchResultsContainer from './search/SearchResultsContainer';\nimport MainContainer from './common/MainContainer';\nimport SearchContainer from 'common/search/SearchContainer';\nimport { PageType } from 'enums';\nimport { initAdsConfig } from 'common/ads/actions';\nimport { setPageInfo } from 'common/page/actions';\n\nconst bannerAd = [<BannerAd key=\"banner_ad\" />];\n\nconst Search = ({ params: { searchTerm = '' }, entitlementsTracking }) => (\n <MainContainer pre={bannerAd}>\n <section className=\"layout-full\">\n <SearchContainer entitlementsTracking={entitlementsTracking} pageType={PageType.SEARCH} enabled />\n </section>\n <section className=\"layout-bc layout-bc--watch\">\n <SearchResultsContainer searchTerm={searchTerm} />\n </section>\n </MainContainer>\n );\n\nSearch.loadActions = [\n (params, query) => initAdsConfig('search', null, {}, query),\n () => setPageInfo('search', 'Search', false)\n];\n\nSearch.propTypes = {\n params: PropTypes.object,\n entitlementsTracking: PropTypes.object\n};\n\nconst mapStateToProps = (state) => ({\n entitlementsTracking: entitlementsTrackingSelector(state)\n});\n\nexport default connect(mapStateToProps)(Search);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/Search.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { apiEnvSelector } from 'common/selectors/appSelector';\nimport SearchResultsContainer from '../../common/page/search/SearchResultsContainer';\nimport MainContainer from '../../common/page/common/MainContainer';\nimport SearchContainer from 'common/search/SearchContainer';\nimport { PageType } from 'enums';\nimport { setPageInfo, fetchAllCompetitors } from 'common/page/actions';\n\nconst Sid = ({ params: { team = '' }, apiEnv }) => (\n <MainContainer>\n <section className=\"layout-full\">\n <SearchContainer apiEnv={apiEnv} pageType={PageType.SID} showFooter={false} enabled />\n </section>\n <section className=\"layout-bc layout-bc--watch\">\n <SearchResultsContainer searchTerm={team} pageType={PageType.SID} />\n </section>\n </MainContainer>\n);\n\nSid.loadActions = [\n () => fetchAllCompetitors(),\n () => setPageInfo('sid', 'SID', false)\n];\n\nSid.propTypes = {\n params: PropTypes.object,\n apiEnv: PropTypes.string\n};\n\nconst mapStateToProps = (state) => ({\n apiEnv: apiEnvSelector(state)\n});\n\nexport default connect(mapStateToProps)(Sid);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Sid.js","import React, { PropTypes } from 'react';\nimport Tile from 'common/page/buckets/Tile';\nimport InContentAd from 'common/ads/InContentAd';\n\nconst placementPrefix = 'playback-page-recommended-';\n\nconst TabPane = ({ active, bucketId, contents, name, showAds, tabIndex }) => {\n const ad = showAds ? (\n <InContentAd key=\"ad_incontent\" exclude={['m']} refreshWhenVisible />\n ) : null;\n const items = contents.map((content) => (\n <Tile\n content={content}\n bucketId={bucketId}\n key={`tabPane${tabIndex}:${content.id}:${content.name}`}\n placement={`${placementPrefix}${name}`}\n bucketName={name}\n />\n ));\n if (ad) {\n items.splice(3, 0, ad);\n }\n return (\n <div className={`tab-pane ${active ? 'active' : ''}`}>\n <div className=\"collection collection--watch\">\n <div className=\"collection_row\">\n {items}\n </div>\n </div>\n </div>\n );\n};\n\nTabPane.propTypes = {\n active: PropTypes.bool,\n bucketId: PropTypes.number,\n contents: PropTypes.array,\n name: PropTypes.string,\n showAds: PropTypes.bool,\n tabIndex: PropTypes.number\n};\n\nTabPane.defaultProps = {\n active: false,\n contents: [],\n name: 'unknown',\n showAds: false\n};\n\nexport default TabPane;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/drawer/TabPane.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport pageSelector from 'common/selectors/pageSelector';\nimport { authenticationSelector } from 'common/selectors/authenticationSelectors';\nimport { isIntlSelector } from 'common/selectors/appSelector';\nimport TabPane from './TabPane';\n\nclass TabContainer extends Component {\n constructor(props) {\n super(props);\n this.state = { activeTab: 0 };\n this.onTabSelect = this.onTabSelect.bind(this);\n this.inferSelectedBucket = this.inferSelectedBucket.bind(this);\n }\n\n componentWillMount() {\n this.inferSelectedBucket(this.props.buckets);\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.buckets !== nextProps.buckets) {\n this.inferSelectedBucket(nextProps.buckets);\n }\n }\n\n onTabSelect(tabIndex) {\n this.setState({ activeTab: tabIndex });\n }\n\n inferSelectedBucket(buckets = []) {\n const index = buckets.map((bucket) => bucket.__replaced).indexOf(true);\n if (index > 0) {\n this.setState({ activeTab: index });\n }\n }\n\n isLoggedInProvider() {\n const { authTypes } = this.props;\n return (Array.isArray(authTypes) && authTypes.indexOf('mvpd') !== -1);\n }\n\n render() {\n const tabControls = [];\n const tabPanes = [];\n const showAds = (this.props.isIntl && this.isLoggedInProvider());\n\n this.props.buckets.filter((bucket) => bucket.type !== 'hero').forEach((bucket, tabIndex) => {\n const active = (this.state.activeTab === tabIndex);\n const tabControl = (\n <li\n key={`tabControl-${bucket.id}`}\n onClick={() => this.onTabSelect(tabIndex)}\n className={active ? 'active' : ''}\n >\n <span>{bucket.name}</span>\n </li>\n );\n\n tabControls.push(tabControl);\n if (active) {\n tabPanes.push(\n <TabPane\n active={active}\n name={bucket.name}\n bucketId={bucket.id}\n contents={bucket.contents}\n key={`tabPane-${bucket.id}`}\n tabIndex={tabIndex}\n showAds={showAds}\n />\n );\n }\n });\n\n return (\n <div className=\"playback__content\">\n <div className=\"tab-wrap\">\n <ul className=\"tabs alt\" data-behavior=\"tabs_transform\">\n {tabControls}\n </ul>\n </div>\n <div className=\"tab-content\">\n {tabPanes}\n </div>\n </div>\n );\n }\n}\n\nTabContainer.propTypes = {\n buckets: PropTypes.array,\n isIntl: PropTypes.bool,\n authTypes: PropTypes.array\n};\n\nTabContainer.defaultProps = {\n buckets: [],\n authTypes: []\n};\n\nconst mapStateToProps = (state) => {\n const page = pageSelector(state) || {};\n const { authTypes = [] } = authenticationSelector(state);\n return {\n buckets: page.buckets,\n isIntl: isIntlSelector(state),\n authTypes\n };\n};\n\nexport default connect(mapStateToProps)(TabContainer);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/drawer/TabContainer.js","import React from 'react';\nimport TabContainer from './TabContainer';\n\nconst Drawer = () => (\n <div className=\"playback__columnB nocontent\">\n <section className=\"playback__container\">\n <input type=\"checkbox\" id=\"playback__toggle\" role=\"button\" />\n <label htmlFor=\"playback__toggle\" className=\"playback__toggle icon-font-after icon-font-after\" />\n <TabContainer />\n </section>\n </div>\n);\n\nexport default Drawer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/drawer/Drawer.js","import React, { PropTypes, Component } from 'react';\nimport WatchPropTypes from 'common/PropTypes';\nimport connectPlayer from 'webapp/player/connectPlayer';\nimport UpcomingAlert from '@alias/UpcomingAlert';\nimport { getPlayerBackgroundStyle } from 'webapp/player/util';\nimport { isEmpty } from 'lib/util';\nimport { intlShape } from 'common/injectIntl';\n\n/**\n * This UI component has a player connected to it.\n * Due to the fact that the connectPlayer function expects a component with a \"ref\" to \"playerElement\",\n * the \"alertable\" HOC can not be used to manage the UpcomingAlert's state.\n */\nclass HeroPlaybackPage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n displayAlert: false\n };\n this.onClose = this.onClose.bind(this);\n this.getAlertEl = this.getAlertEl.bind(this);\n }\n\n componentWillMount() {\n if (this.showAlertOnMount()) {\n this.setState({ displayAlert: true });\n }\n }\n\n onClose() {\n this.setState({ displayAlert: false });\n }\n\n getAlertEl() {\n const { alertContent, selectedStream, playingStream, messages, intl: { formatMessage } } = this.props;\n const stream = playingStream || selectedStream;\n if (this.state.displayAlert) {\n const moreText = !isEmpty(stream) ?\n formatMessage(messages['schedule.module.alert.moreText'], { name: stream.name }) : '';\n return (\n <UpcomingAlert\n animate=\"fade\"\n content={alertContent}\n moreText={moreText}\n // page-shell.css has .evp-player class zIndex at 1000031\n style={{ position: 'absolute', top: '0px', zIndex: 1000050 }}\n onClose={this.onClose}\n />\n );\n }\n return null;\n }\n\n showAlertOnMount() {\n const { alertContent } = this.props;\n if (!isEmpty(alertContent)) {\n return true;\n }\n return false;\n }\n\n render() {\n return (\n <div\n className=\"media-wrapper media-wrapper--embed espnplayerwrapper\"\n style={getPlayerBackgroundStyle(this.props.selectedContent)}\n >\n {this.getAlertEl()}\n <div>\n <div ref=\"playerContainer\" id=\"watchespn-player-container\"> </div>\n </div>\n </div>\n );\n }\n}\n\nHeroPlaybackPage.propTypes = {\n alertContent: WatchPropTypes.content,\n selectedContent: WatchPropTypes.content,\n selectedStream: WatchPropTypes.stream,\n playingStream: WatchPropTypes.stream,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nexport default connectPlayer(HeroPlaybackPage);\nexport { HeroPlaybackPage as BaseHeroPlaybackPage };\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/hero/HeroPlaybackPage.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { PlayerPlacement } from 'enums';\nimport WatchPropTypes from 'common/PropTypes';\nimport { isContentLocked } from 'lib/auth';\nimport { isEmpty } from 'lib/util';\nimport { isIntlSelector, dateFormatSelector } from 'common/selectors/appSelector';\nimport heroSelector from 'common/selectors/heroSelector';\nimport selectedStreamSelector from 'common/selectors/selectedStreamSelector';\nimport playingStreamSelector from 'common/selectors/playingStreamSelector';\nimport {\n userLocationSelector,\n userAuthSelector,\n preauthorizedResourcesSelector\n} from 'common/selectors/authenticationSelectors';\nimport BannerAd from 'common/ads/BannerAd';\nimport BrandingContainer from 'webapp/branding/BrandingContainer';\nimport ContentMetadataLarge from 'common/page/hero/ContentMetadataLarge';\nimport HeroPlaybackPage from './HeroPlaybackPage';\nimport { contentSubtitle } from '@alias/lib/format';\n\nconst formatVideoTitle = (currentContent, currentStream) => {\n let title = currentContent.name;\n\n if (currentContent && currentStream) {\n if (currentContent.isEvent) {\n if (currentContent.streams && currentContent.streams.length > 1) {\n if (currentStream.authTypes && currentStream.authTypes.indexOf('direct') !== -1) {\n title = currentContent.name;\n } else {\n title = currentStream.name !== currentContent.name ? currentStream.name : currentContent.name;\n }\n } else {\n // Single event stream\n title = currentContent.name;\n }\n }\n }\n\n return title;\n};\n\nconst HeroPlaybackPageContainer = ({\n alertContent,\n content,\n stream,\n location,\n placement,\n bucketId,\n bucketName,\n pageId,\n pageName,\n userInitiated,\n showLock,\n userLocation,\n isIntl,\n intlDateFormat\n}) => {\n const { description } = content;\n const title = formatVideoTitle(content, stream);\n const streamSubtitle = stream && stream.content && stream.content.subtitle;\n // Use the current stream content and sanitize the text; default to the content subtitle\n const formattedSubtitle = streamSubtitle || contentSubtitle(content);\n let subtitle = formattedSubtitle; // for VOD, this will be null and render nothing\n if (formattedSubtitle && description) {\n subtitle = `${formattedSubtitle} - ${description}`;\n }\n const bannerAd = isIntl ? <BannerAd exclude={['l', 'xl']} /> : null;\n\n return (\n <div className=\"playback__columnA\">\n <figure className=\"playback__media\">\n <BrandingContainer location={location} stream={stream} />\n <HeroPlaybackPage\n alertContent={alertContent}\n disableAuthPrompt={false}\n initialAutoEmbedCountDown={0}\n location={location}\n playerPlacement={PlayerPlacement.PLAYER}\n placement={placement}\n bucketId={bucketId}\n bucketName={bucketName}\n pageId={pageId}\n pageName={pageName}\n userInitiated={userInitiated}\n userLocation={userLocation}\n dateFormat={intlDateFormat}\n />\n <ContentMetadataLarge\n showLock={showLock}\n title={title}\n subtitle={subtitle}\n content={content}\n />\n </figure>\n {bannerAd}\n </div>\n );\n};\n\nHeroPlaybackPageContainer.propTypes = {\n alertContent: WatchPropTypes.content,\n content: WatchPropTypes.content,\n stream: WatchPropTypes.stream,\n location: PropTypes.object,\n placement: PropTypes.string,\n bucketId: PropTypes.number,\n bucketName: PropTypes.string,\n pageId: PropTypes.string,\n pageName: PropTypes.string,\n userInitiated: PropTypes.bool,\n showLock: PropTypes.bool,\n userLocation: PropTypes.object,\n isIntl: PropTypes.bool,\n intlDateFormat: PropTypes.string\n};\n\nHeroPlaybackPageContainer.defaultProps = {\n adobePass: {},\n content: {}\n};\n\nconst mapStateToProps = (state) => {\n const userAuth = userAuthSelector(state);\n const preauthorizedResources = preauthorizedResourcesSelector(state);\n const selectedStream = selectedStreamSelector(state);\n const playingStream = playingStreamSelector(state);\n const stream = !isEmpty(playingStream) ? playingStream : selectedStream;\n // TODO: DTC - use `stream.content` once `content` has `duration` for VOD\n // so that content metadata doesn't change every time when a new content is selected when user is not authed\n const content = /* stream ? stream.content : */heroSelector(state);\n return {\n content,\n stream,\n isIntl: isIntlSelector(state),\n intlDateFormat: dateFormatSelector(state),\n userAuth,\n userLocation: userLocationSelector(state),\n showLock: isContentLocked(content, userAuth, preauthorizedResources)\n };\n};\n\nexport default connect(mapStateToProps)(HeroPlaybackPageContainer);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/hero/HeroPlaybackPageContainer.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport refreshable from 'common/refreshable';\nimport { createFetchPageAction, refreshBuckets } from 'common/page/actions';\nimport Drawer from 'webapp/drawer/Drawer';\nimport HeroPlaybackPageContainer from 'webapp/page/hero/HeroPlaybackPageContainer';\n\nconst Player = ({ location = {}, isMobile }) => {\n // if the player was routed to with an alert, pass it on down\n const { alertContent, placement, bucketId, bucketName, pageId, pageName, userInitiated } = location.state || {};\n\n // Some styles of the playback page depend on a 'no-touch' parent class. This assumed\n const mobileClass = (isMobile === false ? 'no-touch' : '');\n return (\n <section id=\"playback\" className={mobileClass}>\n <HeroPlaybackPageContainer\n alertContent={alertContent}\n location={location}\n placement={placement}\n bucketId={bucketId}\n bucketName={bucketName}\n pageId={pageId}\n pageName={pageName}\n userInitiated={userInitiated}\n />\n <Drawer />\n </section>\n );\n};\n\nPlayer.propTypes = {\n isMobile: PropTypes.bool,\n location: PropTypes.object\n};\n\nPlayer.loadActions = [\n (pathParams, query, lang) => createFetchPageAction('player', pathParams, query, lang)\n];\n\nPlayer.refreshInterval = 300; // 5 mins\nPlayer.onRefresh = ({ dispatch }) => {\n dispatch(refreshBuckets('player'));\n};\n\nconst mapStateToProps = (state) => ({\n isMobile: state.app.isMobile || false\n});\n\nexport default connect(mapStateToProps)(refreshable(Player));\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Player.js","import React, { Component, PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport hoistStatics from 'hoist-non-react-statics';\n\n/**\n * This HoC allows the WrappedComponent to specify refreshInterval, and refresh callback\n * as static properties of the Component, it can also receive these values as props.\n * It uses lifecycle methods to set up and tear down refresh logic which will execute the\n * \"onRefresh\" callback\n */\nexport default (WrappedComponent) => {\n class Refreshable extends Component {\n constructor(props) {\n super(props);\n this.refreshId = null;\n\n this.interval = WrappedComponent.refreshInterval;\n this.onRefresh = WrappedComponent.onRefresh;\n }\n\n componentDidMount() {\n const {\n interval = this.interval,\n onRefresh = this.onRefresh\n } = this.props;\n\n if (interval) {\n this.refreshId = setInterval(() => {\n if (onRefresh) {\n onRefresh(this.props);\n }\n }, interval * 1000);\n }\n }\n\n componentWillUnmount() {\n if (this.refreshId) {\n clearInterval(this.refreshId);\n }\n }\n\n render() {\n return (\n <WrappedComponent {...this.props} />\n );\n }\n }\n\n Refreshable.propTypes = {\n interval: PropTypes.number,\n onRefresh: PropTypes.func\n };\n\n const mapStateToProps = ({ app: { lang } }) => ({\n lang\n });\n\n return connect(mapStateToProps)(hoistStatics(Refreshable, WrappedComponent));\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/refreshable.js","import React, { PropTypes } from 'react';\nimport SearchContainer from 'common/search/SearchContainer';\n\nconst SectionHeader = ({ title, mq, isMobile }) => {\n const searchContainerEl = (mq !== 'mobile' && !isMobile) ? <SearchContainer /> : null;\n return (\n <header className=\"section-header\">\n <h1 className=\"section-header_title\">{title}</h1>\n {searchContainerEl}\n </header>\n );\n};\n\nSectionHeader.propTypes = {\n title: PropTypes.string,\n isMobile: PropTypes.bool,\n mq: PropTypes.string\n};\n\nexport default SectionHeader;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/SectionHeader.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport InContentAd from 'common/ads/InContentAd';\nimport BannerAd from 'common/ads/BannerAd';\nimport { initAdsConfig } from 'common/ads/actions';\nimport { setPageInfo } from 'common/page/actions';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport { userAuthSelector } from 'common/selectors/authenticationSelectors';\nimport { fetchSchedule, fetchCategories, setStatusFilter } from 'common/schedule/actions';\nimport SectionHeader from 'common/schedule/SectionHeader';\nimport FilterGroupContainer from 'common/schedule/FilterGroupContainer';\nimport ScheduleCategoryContainer from 'common/schedule/ScheduleCategoryContainer';\nimport StatusFilter from 'common/schedule/StatusFilter';\nimport MainContainer from './common/MainContainer';\nimport appNames from '../../../config/appNames';\nimport { fetchNetworks } from 'common/actions/clientActions';\nimport darkThemeSelector from 'common/selectors/darkThemeSelector';\n\nconst Schedule = (props) => {\n const {\n appName,\n categories,\n channels,\n isMobile,\n location,\n listings,\n loading,\n mq,\n selectedTab,\n userAuth,\n messages,\n intl: { formatMessage },\n darkTheme\n } = props;\n const bannerAd = [<BannerAd key=\"banner_ad\" />];\n const tabClassname = classNames('watch-tab', { loading });\n\n // Make schedule go full width for ESPN App since there is no ad, and remove redundant title\n let colBStyle = {};\n let sectionHeaderTitle = formatMessage(messages['schedule.header']);\n if (appName === appNames.ESPNAPP) {\n colBStyle = { width: '100%' };\n sectionHeaderTitle = '';\n }\n\n const appearance = darkTheme ? 'dark' : 'light';\n\n return (\n <MainContainer pre={bannerAd}>\n <section data-appearance={appearance} className=\"layout-bc layout-bc--watch\">\n <section className=\"col-b\" style={colBStyle}>\n <article className=\"watch-schedule\">\n <SectionHeader\n key=\"section_header\"\n title={sectionHeaderTitle}\n mq={mq}\n isMobile={isMobile}\n />\n <FilterGroupContainer\n channels={channels}\n categories={categories}\n location={location}\n />\n <div className=\"content\">\n <div id=\"tabLive\" className={tabClassname} style={{ display: 'block' }}>\n <ScheduleCategoryContainer\n listings={listings}\n userAuth={userAuth}\n selectedTab={selectedTab}\n isMobile={isMobile}\n startDateValue={location.query.startDate}\n bucketName={location.query.type || 'live'}\n watchRegion={location.query.watchRegion}\n />\n </div>\n </div>\n </article>\n <InContentAd include={['s']} adClassName=\"ad-slot-incontent2\" refreshWhenVisible />\n </section>\n <section className=\"col-c\">\n <InContentAd exclude={['s', 'm']} />\n </section>\n </section>\n </MainContainer>\n );\n};\n\nSchedule.propTypes = {\n appName: PropTypes.string,\n categories: PropTypes.array,\n channels: PropTypes.array,\n isMobile: PropTypes.bool,\n listings: PropTypes.array,\n location: PropTypes.object,\n loading: PropTypes.bool,\n mq: PropTypes.string,\n selectedTab: PropTypes.oneOf([\n StatusFilter.Options.LIVE,\n StatusFilter.Options.UPCOMING,\n StatusFilter.Options.REPLAY\n ]),\n userAuth: PropTypes.array,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired,\n darkTheme: PropTypes.bool\n};\n\nSchedule.defaultProps = {\n selectedTab: StatusFilter.Options.LIVE,\n isMobile: false\n};\n\nSchedule.loadActions = [\n () => fetchCategories(),\n fetchNetworks,\n (params, { type = StatusFilter.Options.LIVE }) => setStatusFilter(type),\n (params, { type = StatusFilter.Options.LIVE, categoryId, channel, startDate, endDate }) =>\n fetchSchedule({ type, categoryId, channel, startDate, endDate }),\n (params, query) => initAdsConfig('schedule', null, {}, query),\n () => setPageInfo('schedule', 'Schedule', false)\n];\n\n\nconst mapStateToProps = (state) => {\n const { app, schedule } = state;\n return {\n appName: app.appName,\n categories: schedule.categories || [],\n channels: schedule.channels || [],\n listings: schedule.listings || [],\n userAuth: userAuthSelector(state),\n loading: schedule.loading,\n mq: app.mq,\n selectedTab: schedule.statusFilterValue,\n isMobile: app.isMobile,\n darkTheme: darkThemeSelector(state)\n };\n};\n\nexport default connect(mapStateToProps)(injectIntl(Schedule));\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/Schedule.js","import React from 'react';\nimport { PageType } from 'enums';\nimport { createFetchPageAction } from 'common/page/actions';\nimport { fetchScheduleModule } from 'common/scheduleModule/actions';\nimport TopLayoutContainer from 'common/page/common/TopLayoutContainer';\nimport MainContainer from 'common/page/common/MainContainer';\nimport BucketListContainer from 'common/page/buckets/BucketListContainer';\n\nconst ShortStopLive = () => (\n <MainContainer className=\"watch-home\">\n <TopLayoutContainer />\n <div className=\"layout-full layout-full--watch\">\n <section className=\"col-a\">\n <BucketListContainer pageType={PageType.HOME} />\n </section>\n </div>\n </MainContainer>\n);\n\nShortStopLive.loadActions = [\n (params, query, lang) => createFetchPageAction('shortstoplive', params, query, lang),\n (params, query, lang) => fetchScheduleModule(lang)\n];\n\nexport default ShortStopLive;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/ShortStopLive.js","import React, { PropTypes } from 'react';\nimport { getSuccessText } from './util';\n\nconst Success = ({ authSystem, deviceType }) => (\n <div>\n <header className=\"dtc-auth__header\" id=\"page-title\">\n <h1 className=\"dtc-auth__header__title\">Success!</h1>\n </header>\n <section className=\"dtc-auth__section dtc-auth__section--success\" id=\"enter-code\">\n <svg className=\"dtc-checkmark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle className=\"dtc-checkmark__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path className=\"dtc-checkmark__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n <p>{getSuccessText(authSystem, deviceType)}</p>\n </section>\n </div>\n);\n\nSuccess.propTypes = {\n authSystem: PropTypes.string,\n deviceType: PropTypes.string\n};\n\nexport default Success;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/Success.js","import React from 'react';\n\nconst Error = () => (\n <div>\n <header className=\"section error\" id=\"page-title\">\n <h1>Activation Error</h1>\n </header>\n\n <section className=\"section error\" id=\"enter-code\">\n <h2>Your device could not be activated!</h2>\n <p>Please verify the code you entered matches the code on your device and try again.</p>\n <p>If you continue to receive this message please try generating a new code on the device.</p>\n </section>\n </div>\n);\n\nexport default Error;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/Error.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport classnames from 'classnames';\nimport { INVALID_MESSAGE } from './constants';\nimport { isAdobeRegCode, isOneIdRegCode } from './util';\nimport {\n checkAdobeRegCode,\n checkOneIdRegCode,\n completeSubmit,\n createInvalidErrorAction,\n createGenericErrorAction,\n regCodeUpdate,\n startSubmit\n} from './actions';\nimport * as oneId from 'lib/oneId';\n\nexport class ActivationComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isAdobeRegCode: false,\n regCode: this.props.regCode.toUpperCase(),\n regCodeError: false\n };\n this.onCodeChange = this.onCodeChange.bind(this);\n this.onCodeKeyUp = this.onCodeKeyUp.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n this.renderHeading = this.renderHeading.bind(this);\n }\n\n componentDidMount() {\n const { regCode } = this.state;\n\n if (regCode) {\n this.onSubmit();\n }\n }\n\n onCodeChange(event) {\n const regCode = event.target.value.toUpperCase();\n this.props.dispatch(regCodeUpdate(regCode));\n this.setState({\n regCode,\n regCodeError: false\n });\n }\n\n onCodeKeyUp(event) {\n if (event.which === 13) {\n this.onSubmit();\n }\n }\n\n async onSubmit() {\n const { regCode } = this.state;\n const {\n adobePassEnv,\n deviceType,\n dispatch,\n submitting,\n commerceUrlsConfig,\n query\n } = this.props;\n if (submitting) {\n return;\n }\n const regCodeError = !regCode;\n if (regCodeError) {\n this.setState({ regCodeError });\n return;\n }\n\n dispatch(startSubmit());\n try {\n if (isAdobeRegCode(regCode)) {\n await dispatch(checkAdobeRegCode(regCode, adobePassEnv));\n } else if (isOneIdRegCode(regCode)) {\n await dispatch(checkOneIdRegCode(\n deviceType,\n regCode,\n commerceUrlsConfig,\n query\n ));\n } else {\n dispatch(createInvalidErrorAction(INVALID_MESSAGE));\n }\n } catch (err) {\n if (oneId.Error.CANCEL_BY_USER !== err) {\n if (oneId.Error.UNKNOWN_ERROR === err) {\n dispatch(createGenericErrorAction(err));\n } else {\n dispatch(createInvalidErrorAction(err.message || INVALID_MESSAGE));\n }\n }\n }\n dispatch(completeSubmit());\n }\n\n renderHeading() {\n const { activatePageType } = this.props;\n const text = (activatePageType === 'subscribe') ?\n 'Complete Your Subscription' : 'Activate Device';\n return <h1 className=\"dtc-auth__header__title\">{text}</h1>;\n }\n\n renderErrorMessage(hasError) {\n if (!hasError) {\n return null;\n }\n const {\n genericError,\n invalidError\n } = this.props;\n const { regCodeError } = this.state;\n\n if (genericError) {\n return (\n <div id=\"generic-error\" className=\"dtc-form__error\">\n <p>An error occurred. Please try again later.</p>\n </div>\n );\n } else if (!genericError && invalidError) {\n return (\n <div id=\"invalid-activation-code\" className=\"dtc-form__error\">\n <p>Invalid activation code!</p>\n </div>\n );\n } else if (!genericError && regCodeError) {\n return (\n <div id=\"no-activation-code\" className=\"dtc-form__error\">\n <p>Please enter an activation code.</p>\n </div>\n );\n }\n return null;\n }\n\n render() {\n const {\n genericError,\n invalidError,\n activatePageType\n } = this.props;\n const {\n regCode,\n regCodeError\n } = this.state;\n\n let errorClassName = '';\n\n const isDisabled = (regCode) ? '' : 'dtc-btn--disabled';\n const isSubscribeActivation = (activatePageType === 'subscribe');\n const hasError = genericError || invalidError || regCodeError;\n if (hasError) {\n errorClassName = 'dtc-form__control--error';\n }\n\n const buttonClasses = classnames({\n 'dtc-btn': !isSubscribeActivation,\n 'dtc-btn--disabled': !regCode,\n 'btn btn-primary': isSubscribeActivation\n });\n\n return (\n <div>\n <header className=\"dtc-auth__header\" id=\"page-title\">\n {this.renderHeading()}\n </header>\n <section className=\"dtc-auth__section\" id=\"enter-code\">\n <h2 className=\"dtc-auth__section__title\">Enter the code displayed on your TV screen.</h2>\n <input\n className={`dtc-form__control ${errorClassName}`}\n ref={input => { this.txtRegCode = input; }}\n id=\"txtRegCode\"\n name=\"txtRegCode\"\n type=\"text\"\n maxLength=\"7\"\n placeholder={'Enter Activation Code'}\n value={this.state.regCode}\n onChange={this.onCodeChange}\n onKeyUp={this.onCodeKeyUp}\n />\n {this.renderErrorMessage(hasError)}\n </section>\n <section className=\"section\" id=\"authenticate\">\n <button\n id=\"cont-btn\"\n name=\"submit\"\n type=\"submit\"\n className={buttonClasses}\n onClick={this.onSubmit}\n disabled={isDisabled}\n >Continue</button>\n </section>\n </div>\n );\n }\n}\n\nActivationComponent.propTypes = {\n adobePassEnv: PropTypes.string,\n deviceType: PropTypes.string,\n dispatch: PropTypes.func.isRequired,\n genericError: PropTypes.string,\n invalidError: PropTypes.string,\n submitting: PropTypes.bool,\n commerceUrlsConfig: PropTypes.object,\n activatePageType: PropTypes.string,\n regCode: PropTypes.string,\n query: PropTypes.object\n};\n\nActivationComponent.defaultProps = {\n providers: [],\n regCode: ''\n};\n\nconst mapStateToProps = (state) => {\n const {\n providerDialog: { providers = [] } = {},\n activation: { genericError = {}, invalidError, submitting },\n app = {}\n } = state;\n const {\n country,\n lang,\n location: { query = {} } = {},\n bootstrap: { bam: { commerceUrls } = {} } = {}\n } = app;\n\n return {\n genericError,\n invalidError,\n providers,\n submitting,\n query,\n commerceUrlsConfig: { ...{ urls: commerceUrls }, ...{ lang, country } }\n };\n};\n\nexport default connect(mapStateToProps)(ActivationComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/Activation.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport Success from './Success';\nimport ActivateError from './Error';\nimport Activation from './Activation';\nimport { clientlessAuthenticate, launchLicensePlateOnSuccess } from './actions';\nimport { fetchExternalConfig } from 'common/actions/appActions';\nimport { getProviders } from 'common/actions/authenticationActions';\nimport { setPageInfo } from 'common/page/actions';\nimport { clearGuest, getGuest } from 'common/actions/oneIdActions';\nimport MessagingContainer from 'webapp/modal/messaging/MessagingContainer';\nimport ProviderDialog from 'common/chooseProvider/ProviderDialog';\nimport * as oneId from 'lib/oneId';\nimport { trackActivatePage, trackActivateSuccess } from 'lib/omniture';\nimport appSelector, { oneIdEnvSelector, adobePassEnvSelector, showHelpModuleSelector } from 'common/selectors/appSelector';\nimport appConfig from '../../../../config';\nimport oneIdSelector from 'common/selectors/oneIdSelector';\nimport { isEmpty } from 'lib/util';\nimport { getMarkettingOptInStatus } from './util';\nimport { WEB_STAGE_ONE_ID_API_PATH, WEB_PROD_ONE_ID_API_PATH } from './constants';\n\nconst { shellVersion, secureCdnHost } = appConfig;\nconst { OneIdJs } = oneId;\n\nconst HELP_LINK = 'https://es.pn/2X3h2Cu';\nconst HELP_LINK_TARGET = '_blank';\nconst HELP_ADDITIONAL_SUPPORT_LINK = 'https://es.pn/344OwSk';\nconst CUSTOMER_CARE_LINK = 'https://support.espn.com/hc/';\n\nexport class ActivateComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isAuthSuccess: false,\n isOptInChecked: false\n };\n this.renderBrandingLogo = this.renderBrandingLogo.bind(this);\n this.pageName = this.getPageName();\n }\n\n componentDidMount() {\n const {\n app: { lang = '' },\n location: { query: { authSuccess, device, deviceType, mvpd } },\n providers,\n dispatch\n } = this.props;\n\n const trackingDevice = device || deviceType;\n if (authSuccess) {\n const trackingProvider = providers.filter(provider => provider.abbreviation === mvpd)[0];\n trackActivateSuccess(trackingDevice, trackingProvider);\n } else {\n trackActivatePage(lang, trackingDevice);\n }\n\n oneId.on('login', dispatch(getGuest()));\n oneId.on('logout', dispatch(clearGuest()));\n dispatch(setPageInfo(this.pageName, 'Device Activation', false));\n }\n\n /**\n * componentWillReceiveProps has been deprecate since React 16.3.\n * It needs to be replaced with getDerivedStateFromProps if we update\n * to React 16.3+. Currently watch web is using React version 15.4.2.\n * We haven't updated to the newest version since watch web is being redesigned.\n */\n componentWillReceiveProps(nextProps) {\n const {\n location: {\n query: {\n authSuccess,\n oneidenv\n } = {}\n },\n oneId: { data }\n } = nextProps;\n\n const { dispatch } = this.props;\n\n if (!isEmpty(data) && !this.state.isOptInChecked) {\n const optInStatus = getMarkettingOptInStatus(data);\n const { shouldUpdateOptIns, swid, accessToken } = optInStatus;\n if (shouldUpdateOptIns) {\n const oneIdClientUrl = (oneidenv === 'staging') ? WEB_STAGE_ONE_ID_API_PATH : WEB_PROD_ONE_ID_API_PATH;\n // dispatch action to update marketing opt-ins\n dispatch(launchLicensePlateOnSuccess(oneIdClientUrl, swid, accessToken));\n }\n this.setState({ isOptInChecked: true });\n }\n\n if (authSuccess && !this.state.isAuthSuccess) {\n this.setState({ isAuthSuccess: true });\n // get guest info that will be needed for launchLicensePlateOnSuccess action\n dispatch(getGuest());\n }\n }\n\n componentWillUnmount() {\n const { dispatch } = this.props;\n oneId.off('login', dispatch(getGuest()));\n oneId.off('logout', dispatch(clearGuest()));\n }\n\n getPageName() {\n const { location: { pathname = 'activate' } } = this.props;\n return pathname.substr(pathname.lastIndexOf('/') + 1);\n }\n\n\n getStyleAssets(pageName = '') { // eslint-disable-line\n const styleList = [\n { id: 'font-link', rel: 'stylesheet', href: `${secureCdnHost}/redesign/fonts/base64-benton-woff.css` },\n { rel: 'stylesheet', href: `${secureCdnHost}/redesign/${shellVersion}/css/secure/shell-desktop.css` },\n { rel: 'stylesheet', href: `${secureCdnHost}/redesign/${shellVersion}/css/secure/page-shell.css` },\n { rel: 'stylesheet', href: `${secureCdnHost}/redesign/${shellVersion}/css/secure/watch.css` },\n { rel: 'stylesheet', href: `${secureCdnHost}/redesign/${shellVersion}/css/secure/watch-provider.css` }\n ];\n\n // Only add OneId styles for /subscribe\n if (pageName === 'subscribe') {\n styleList.push({\n rel: 'stylesheet', href: 'https://static.web.plus.espn.com/disneyid/styles/oneid-web.min.css'\n });\n }\n\n return styleList;\n }\n\n renderBrandingLogo(pageName = '') { // eslint-disable-line\n const src = (pageName === 'subscribe') ?\n 'https://secure.espncdn.com/espn360/images/affiliates/svg/ESPN_PLUS/ESPN-PLUS_CLR-POS.svg' :\n 'https://a.espncdn.com/redesign/assets/img/espn-logo-gray.svg';\n return <img src={src} alt=\"\" className=\"dtc-auth__logo\" />;\n }\n renderContent() {\n const {\n dispatch,\n location: {\n query: {\n activationCode,\n authSuccess,\n authSystem,\n chooseProvider,\n device: deviceParam,\n deviceType,\n error,\n regCode\n } = {}\n } = {},\n adobePassEnv\n } = this.props;\n const device = deviceParam || deviceType;\n const regOrActivationCode = regCode || activationCode;\n\n let content = null;\n if (error === 'true') {\n content = <ActivateError />;\n } else if (authSuccess === 'true') {\n content = (\n <Success\n authSystem={authSystem}\n deviceType={device}\n />\n );\n } else if (chooseProvider) {\n content = (\n <section className=\"watchProvider--modal\" style={{ minHeight: '800px' }}>\n <ProviderDialog\n providerSelect={(provider) => {\n dispatch(clientlessAuthenticate({\n regCode,\n mvpd: provider.abbreviation,\n deviceType,\n provider,\n baseUrl: window.location.href,\n adobePassEnv\n }));\n }}\n />\n </section>\n );\n } else {\n content = (\n <Activation\n adobePassEnv={adobePassEnv}\n activatePageType={this.pageName}\n deviceType={device}\n regCode={regOrActivationCode}\n />\n );\n }\n return content;\n }\n render() {\n const {\n location: { query: { chooseProvider, authSystem } = {} } = {},\n oneIdEnv,\n showHelpModule\n } = this.props;\n const containerClass = chooseProvider ? 'dtc-auth__container--providerDialog' : 'dtc-auth__container--activation';\n const content = this.renderContent();\n\n /**\n * Avoid putting the module on the TVE auth success page.\n * if authSystem equals to 'adobepass', that means success page is for TVE screen,\n * then we don't show help module\n */\n const renderHelpModule = showHelpModule && !chooseProvider && authSystem !== 'adobepass';\n\n return (\n <div>\n {/* #content.container width adjustment because of box-sizing from page-shell.css */}\n <Helmet\n script={[{\n src: OneIdJs[oneIdEnv]\n }]}\n link={this.getStyleAssets(this.pageName)}\n style={[{\n cssText: `\n body {\n background: #edeef0;\n font: normal 12px/18px helvetica, arial, sans-serif;\n min-width: 100%;\n }\n @media screen and (max-width: 767px) {\n #content.container {\n width: 290px;\n }\n }\n `\n }]}\n />\n <MessagingContainer />\n <div id=\"dtc-auth__container\" className={`dtc-auth__container ${containerClass}`}>\n {this.renderBrandingLogo(this.pageName)}\n <div id=\"dtc-auth__content\" className=\"dtc-auth__content\">\n {content}\n {renderHelpModule && (\n <div className=\"dtc-auth-help\">\n <div className=\"dtc-auth-help__content\">\n <img className=\"dtc-auth-help__espn-plus-logo\" alt=\"ESPN+\" src=\"https://secure.espncdn.com/espn360/images/affiliates/svg/ESPN_PLUS/ESPN-PLUS_CLR-POS.svg\" />\n <p className=\"dtc-auth-help__purchased\">Purchased on phone & need help?</p>\n <a href={HELP_LINK} target={HELP_LINK_TARGET}>\n Learn how to access your ESPN+ subscription on your TV.\n </a>\n <p className=\"dtc-auth-help__additional-support\">For additional support:\n <a href={HELP_ADDITIONAL_SUPPORT_LINK} target={HELP_LINK_TARGET}>ESPN+ FAQ</a>\n </p>\n </div>\n </div>\n )}\n <div id=\"footer\" className=\"dtc-auth__footer\">\n <a className=\"dtc-auth__footer__link\" href=\"https://www.espn.com\">ESPN.com</a>\n <a className=\"dtc-auth__footer__link\" href={CUSTOMER_CARE_LINK} target={HELP_LINK_TARGET} >\n Customer Care\n </a>\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nActivateComponent.propTypes = {\n app: PropTypes.object,\n dispatch: PropTypes.func,\n location: PropTypes.object,\n providers: PropTypes.array,\n oneIdEnv: PropTypes.string,\n adobePassEnv: PropTypes.string,\n oneId: PropTypes.object,\n showHelpModule: PropTypes.boolean\n};\n\nActivateComponent.defaultProps = {\n providers: []\n};\n\nActivateComponent.loadActions = [\n fetchExternalConfig,\n (_, query) => getProviders({ country: 'US', platform: query.device })\n];\n\nconst mapStateToProps = (state) => {\n const {\n providerDialog: { providers = [] } = {}\n } = state;\n\n return {\n providers,\n app: appSelector(state),\n oneIdEnv: oneIdEnvSelector(state),\n showHelpModule: showHelpModuleSelector(state),\n adobePassEnv: adobePassEnvSelector(state),\n oneId: oneIdSelector(state)\n };\n};\n\nexport default connect(mapStateToProps)(ActivateComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/index.js","/* eslint-disable no-alert */\nimport React, { PropTypes, PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport { setPageInfo } from 'common/page/actions';\nimport { getProviders, createGetLocationFromUserDataAction } from 'common/actions/authenticationActions';\nimport { checkSWIDAuthentication } from 'common/actions/oneIdActions';\nimport { dateFormat } from 'lib/format';\nimport canUseDOM from 'lib/util/canUseDOM';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport { userLocationSelector } from 'common/selectors/authenticationSelectors';\nimport { isDomesticSelector, locationSelector } from 'common/selectors/appSelector';\n\nconst styles = {\n container: {\n padding: 20,\n color: '#ddd',\n fontFamily: 'Arial',\n fontSize: 14\n },\n title: {\n display: 'block',\n marginBottom: 10,\n fontWeight: 'bold'\n },\n caption: {\n display: 'block',\n marginBottom: 20\n },\n alignRight: {\n textAlign: 'right'\n },\n requiredInput: {\n background: '#ffffcc',\n width: 290,\n height: 20,\n margin: 0,\n padding: 3,\n border: 'none'\n }\n};\n\nclass Feedback extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n commentType: '',\n email: '',\n commentBody: '',\n platform: '',\n submitted: false\n };\n this.onFormChange = this.onFormChange.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n }\n\n componentDidMount() {\n const { dispatch } = this.props;\n dispatch(checkSWIDAuthentication());\n dispatch(createGetLocationFromUserDataAction());\n }\n\n onFormChange(event) {\n const state = event.target.getAttribute('data-state');\n this.setState({\n [state]: event.target.value\n });\n }\n\n onSubmit(event) {\n const { messages, intl: { formatMessage } } = this.props;\n const validationError = this.validationError;\n if (validationError) {\n event.preventDefault();\n const message = formatMessage(messages[`feedback.error.${validationError}`]);\n alert(message);\n }\n }\n\n get validationError() {\n if (!this.categorySelect.value) {\n return 'category';\n }\n if (!/^.+@.+\\..+$/.test(this.emailInput.value)) {\n return 'email';\n }\n if (!this.commentText.value) {\n return 'comments';\n }\n return false;\n }\n\n render() {\n const { commentType, email, commentBody, platform, submitted } = this.state;\n const {\n currentLocation: {\n origin,\n pathname,\n search,\n hash,\n query\n },\n swid = '{}',\n userLocation = {},\n providers,\n isDomestic,\n messages,\n intl: { formatMessage }\n } = this.props;\n\n const {\n country = '',\n city = '',\n ip = ''\n } = userLocation;\n let inputs = [];\n if (canUseDOM) {\n const date = dateFormat.getDateTimeString(new Date(), 'dateTime4', 'America/New_York');\n const affIP = 'invalid';\n const channel = 'N/A';\n const userAgent = navigator.userAgent;\n const comment = `Comment type: ${commentType}\n Email: ${email}\n Date: ${date}\n Feedback source: watchespn\n JavaScript: on\n Cookies: ${document.cookie.length > 0 ? 'on' : 'off'}\n Screen: ${screen.width}x${screen.height}\n IP: ${ip}\n Affiliate ${affIP}\n MVPD/Authentication:\n Country: ${country}\n City: ${city}\n User agent: ${userAgent}\n Platform: ${platform}\n SWID: ${swid}\n\n Comment: ${commentBody}`;\n\n inputs = [\n <input type=\"hidden\" name=\"orgid\" value=\"00D4000000080H6\" />,\n <input\n type=\"hidden\"\n name=\"retURL\"\n value={`${origin}${pathname}${search}${search ? '&' : '?'}submitted=true${hash}`}\n />,\n <input id=\"00N40000001cOWA\" name=\"00N40000001cOWA\" type=\"hidden\" value={affIP} maxLength=\"100\" />,\n <input id=\"00N40000002GQZZ\" name=\"00N40000002GQZZ\" type=\"hidden\" value={channel} maxLength=\"30\" />,\n <input id=\"00N40000001cOWK\" name=\"00N40000001cOWK\" type=\"hidden\" value={userAgent} maxLength=\"100\" />,\n <input id=\"00N40000001Tm8o\" name=\"00N40000001Tm8o\" type=\"hidden\" value=\"Desktop WatchESPN\" />,\n <input id=\"00N40000001thXQ\" name=\"00N40000001thXQ\" type=\"hidden\" value={comment} />,\n <input id=\"00N40000001vpue\" name=\"00N40000001vpue\" type=\"hidden\" value={swid} />,\n <input id=\"type\" name=\"type\" type=\"hidden\" value=\"Desktop WatchESPN\" />,\n <input id=\"subject\" name=\"subject\" type=\"hidden\" value=\"WatchESPN Desktop Feedback\" />\n ];\n }\n\n const providerOptions = providers.map(({ name, abbreviation }) => (\n <option value={abbreviation}>{name}</option>\n ));\n providerOptions.unshift(\n <option value=\"default\">\n {`----- ${formatMessage(messages['feedback.provider.default'])} -----`}\n </option>\n );\n return (\n <div style={styles.container}>\n <Helmet\n meta={[\n { name: 'robots', content: 'noindex, nofollow' }\n ]}\n style={[{\n cssText: `\n body {\n margin: 0;\n padding: 0;\n background: #000;\n }\n `\n }]}\n script={isDomestic ? [\n { innerHTML: `\n (function() {\n function onZopimLoad() {\n if ($zopim) {\n $zopim.livechat.window.onShow(function() {\n $zopim.livechat.window.hide();\n $zopim.livechat.window.openPopout();\n });\n }\n }\n\n window.$zopim || (function(d, s) {\n var z = $zopim = function(c) {\n z._.push(c)\n },\n $ = z.s = d.createElement(s),\n e = d.getElementsByTagName(s)[0];\n z.set = function(o) {\n z.set._.push(o)\n };\n z._ = [];\n z.set._ = [];\n $.async = !0;\n $.setAttribute(\"charset\", \"utf-8\");\n $.src = \"//v2.zopim.com/?3X1YqOhMC21Mp5TuhBplWWY473rBk06l\";\n z.t = +new Date;\n $.type = \"text/javascript\";\n $.onload = onZopimLoad;\n e.parentNode.insertBefore($, e)\n })(document, \"script\");\n })();\n ` }\n ] : []}\n />\n {(submitted || query.submitted) ? (\n <div>\n <span style={styles.caption}>{formatMessage(messages['feedback.thankYou'])}</span>\n </div>\n ) : (\n <div>\n <span style={styles.title}>{formatMessage(messages['feedback.title'])}</span>\n <span style={styles.caption}>{formatMessage(messages['feedback.caption'])}</span>\n <form\n name=\"postFeedback\"\n action=\"https://www.salesforce.com/servlet/servlet.WebToCase?encoding=UTF-8\"\n method=\"post\"\n onSubmit={this.onSubmit}\n >\n {inputs}\n <table cellPadding=\"4\" cellSpacing=\"0\">\n <tbody>\n <tr>\n <td style={styles.alignRight}>\n {formatMessage(messages['feedback.category'])}:\n </td>\n <td>\n <select\n ref={select => { this.categorySelect = select; }}\n id=\"00N400000034PSb\"\n name=\"00N400000034PSb\"\n size=\"1\"\n style={styles.requiredInput}\n defaultValue=\"\"\n data-state=\"commentType\"\n onChange={this.onFormChange}\n >\n <option value=\"\">\n {formatMessage(messages['feedback.category.select'])}\n </option>\n <option value=\"0001\">\n {formatMessage(messages['feedback.category.userExperience'])}\n </option>\n <option value=\"0002\">\n {formatMessage(messages['feedback.category.videoPerformance'])}\n </option>\n <option value=\"0003\">\n {formatMessage(messages['feedback.category.programming'])}\n </option>\n <option value=\"0004\">\n {formatMessage(messages['feedback.category.other'])}\n </option>\n </select>\n </td>\n </tr>\n <tr>\n <td style={styles.alignRight}>\n {formatMessage(messages['feedback.email'])}:\n </td>\n <td>\n <input\n ref={input => { this.emailInput = input; }}\n type=\"text\"\n style={styles.requiredInput}\n id=\"email\"\n name=\"email\"\n size=\"30\"\n maxLength=\"40\"\n value={email}\n data-state=\"email\"\n onChange={this.onFormChange}\n />\n </td>\n </tr>\n <tr>\n <td style={styles.alignRight}>\n {formatMessage(messages['feedback.provider'])}:\n </td>\n <td>\n <select\n id=\"00N40000002G61X\"\n name=\"00N40000002G61X\"\n size=\"1\"\n defaultValue=\"default\"\n >\n {providerOptions}\n </select>\n </td>\n </tr>\n <tr>\n <td style={styles.alignRight}>\n {formatMessage(messages['feedback.platform'])}:\n </td>\n <td>\n <select\n size=\"1\"\n defaultValue=\"Desktop/laptop\"\n data-state=\"platform\"\n onChange={this.onFormChange}\n >\n <option value=\"Desktop/laptop\">\n {formatMessage(messages['feedback.desktoplaptop'])}\n </option>\n <option value=\"iPhone\">\n {formatMessage(messages['feedback.iphone'])}\n </option>\n <option value=\"iPad\">\n {formatMessage(messages['feedback.ipad'])}\n </option>\n <option value=\"Android Phone\">\n {formatMessage(messages['feedback.androidphone'])}\n </option>\n <option value=\"Android Tablet\">\n {formatMessage(messages['feedback.androidtablet'])}\n </option>\n <option value=\"Xbox One\">\n {formatMessage(messages['feedback.xbox'])}\n </option>\n <option value=\"PlayStation\">\n {formatMessage(messages['feedback.playstation'])}\n </option>\n <option value=\"Apple TV\">\n {formatMessage(messages['feedback.appletv'])}\n </option>\n <option value=\"Android TV\">\n {formatMessage(messages['feedback.androidtv'])}\n </option>\n <option value=\"Amazon FireTV\">\n {formatMessage(messages['feedback.amazonfiretv'])}\n </option>\n <option value=\"Chromecast\">\n {formatMessage(messages['feedback.chromecast'])}\n </option>\n <option value=\"Roku\">\n {formatMessage(messages['feedback.roku'])}\n </option>\n </select>\n </td>\n </tr>\n <tr>\n <td style={{ ...styles.alignRight, verticalAlign: 'top' }}>\n {formatMessage(messages['feedback.comments'])}:\n </td>\n <td>\n <textarea\n ref={input => { this.commentText = input; }}\n id=\"description\"\n name=\"description\"\n style={{ ...styles.requiredInput, height: 60 }}\n cols=\"28\"\n rows=\"3\"\n wrap=\"virtual\"\n value={commentBody}\n data-state=\"commentBody\"\n onChange={this.onFormChange}\n />\n </td>\n </tr>\n <tr>\n <td />\n <td>\n <input type=\"submit\" value={formatMessage(messages['feedback.send'])} />\n </td>\n </tr>\n </tbody>\n </table>\n </form>\n </div>\n )}\n </div>\n );\n }\n}\n\nFeedback.propTypes = {\n dispatch: PropTypes.func,\n currentLocation: PropTypes.object,\n swid: PropTypes.string,\n userLocation: PropTypes.object,\n providers: PropTypes.arrayOf(PropTypes.object),\n isDomestic: PropTypes.bool,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nFeedback.loadActions = [\n () => getProviders(),\n () => setPageInfo('feedback', 'Feedback')\n];\n\nconst mapStateToProps = (state) => {\n const { oneId: { swid } = {} } = state;\n const userLocation = userLocationSelector(state);\n const { providerDialog: { providers = [] } = {} } = state;\n const currentLocation = locationSelector(state);\n const isDomestic = isDomesticSelector(state);\n return {\n currentLocation,\n swid,\n userLocation,\n providers,\n isDomestic\n };\n};\n\nexport default connect(mapStateToProps)(injectIntl(Feedback));\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Feedback.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport uniq from 'lodash/uniq';\nimport { ContentStatus, SourceType, AuthTypes, Entitlements, Flags, OneIdEnv } from 'enums';\nimport { BAM_PAYWALL_IFRAME_ID } from 'constants';\nimport { singleEventPage } from 'common/page/actions';\nimport { fetchExternalConfig } from 'common/actions/appActions';\nimport {\n createCompleteCheckAuthenticationAction,\n createCompleteCheckIpAuthenticationAction,\n createDTCPaywallAction\n} from 'common/actions/authenticationActions';\nimport { checkOneIDAuthentication } from 'common/actions/oneIdActions';\nimport { playbackMetaSelector, oneIdEnvSelector } from 'common/selectors/appSelector';\nimport { oneIdInitializedSelector } from 'common/selectors/oneIdSelector';\nimport { userAuthSelector } from 'common/selectors/authenticationSelectors';\nimport heroSelector from 'common/selectors/heroSelector';\nimport routingSelector from 'common/selectors/routingSelector';\nimport contentSubtitle from 'webapp/lib/format/contentSubtitle';\nimport openFeedbackPage from 'lib/ui/openFeedbackPage';\nimport { getDeviceTypeFromUA, isSafariBrowser } from 'lib/util';\nimport { authStateKnown, canPlayStream, streamHasAuthType, streamHasDTCPackage, getContentId } from 'lib/auth';\nimport { queryString, getMobileGameCastUrlForContent } from 'lib/format';\nimport { getAppLink } from 'lib/native-bridge/espnapp';\nimport appConfig from 'config';\nimport * as oneId from 'lib/oneId';\nimport MessagingContainer from 'webapp/modal/messaging/MessagingContainer';\n\nconst { OneIdJs } = oneId;\n\nconst {\n shellVersion,\n secureCdnHost,\n devStyles\n} = appConfig;\n\nlet STYLE_HREF = `${secureCdnHost}/redesign/${shellVersion}/css`;\nif (devStyles) {\n STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nconst appStore = {\n ios: {\n link: 'https://itunes.apple.com/us/app/espn-live-sports-scores/id317469184?mt=8',\n iconHref: `${secureCdnHost}/watchespn/images/roadblock/app_store_button.png`\n },\n android: {\n link: 'https://play.google.com/store/apps/details?id=com.espn.score_center&hl=en',\n iconHref: `${secureCdnHost}/watchespn/images/roadblock/android_app_store_button.png`\n }\n};\n\nconst classes = {\n container: 'watch__roadblock',\n logo: 'watch__roadblock-logo',\n pageTitle: 'watch__roadblock_page-title',\n roadblockText: 'watch__roadblock-text',\n mainFeature: 'watch__roadblock-main-feature',\n inner: 'watch__roadblock-inner',\n eventName: 'watch__roadblock-event-name',\n eventTitle: 'watch__roadblock-event-title',\n eventMeta: 'watch__roadblock-event-meta',\n main: 'watch__roadblock-main',\n fullSite: 'watch__roadblock-full-site',\n footer: 'watch__roadblock-footer',\n footerA: 'watch__roadblock-footer-a',\n submitButton: 'watch__roadblock-submit-btn',\n windowsphone: 'watch__roadblock-windowsphone'\n};\n\nclass Roadblock extends Component {\n constructor(props) {\n super(props);\n this.state = {\n initialModal: false\n };\n this.handleLaunchClick = this.handleLaunchClick.bind(this);\n }\n\n componentWillMount() {\n this.setState({\n deviceType: getDeviceTypeFromUA(),\n isSafari: isSafariBrowser()\n });\n }\n\n async componentDidMount() {\n const { dispatch } = this.props;\n await dispatch(checkOneIDAuthentication());\n }\n\n componentWillReceiveProps(nextProps) {\n const { initialModal } = this.state;\n if (!initialModal) {\n const actionTriggered = this.createDTCPaywallAction(nextProps);\n if (actionTriggered) {\n this.setState({ initialModal: true });\n }\n }\n }\n\n createDTCPaywallAction(props = this.props) {\n const { dispatch, hero, oneIdInitialized, userAuth } = props;\n const { streams = [] } = hero;\n if (oneIdInitialized && (authStateKnown(userAuth) || !userAuth.length)) {\n const requiredAuths = uniq(streams.reduce((acc, { authTypes }) => (acc.concat(authTypes)), []));\n if (requiredAuths.every(authType => authType === AuthTypes.BAM)) { // DTC-only content\n const stream = streams[0];\n if (!canPlayStream(stream, userAuth, false)) {\n dispatch(createDTCPaywallAction({\n containerId: BAM_PAYWALL_IFRAME_ID,\n content: hero,\n stream\n }));\n return true;\n }\n }\n }\n return false;\n }\n\n handleLaunchClick() {\n const actionTriggered = this.createDTCPaywallAction();\n if (actionTriggered) {\n return;\n }\n\n const { hero, routing: { locationBeforeTransitions } } = this.props;\n const { query = {} } = locationBeforeTransitions || {};\n const { imageHref, name, streams = [], status } = hero;\n const contentId = getContentId(hero);\n const { source: { id: sourceId, type: sourceType, name: sourceName } = {} } = streams[0] || {};\n const { isSafari } = this.state;\n let isBranchLinkInParams = false;\n let updateAppLink = false;\n let { deviceType } = this.state;\n let params = {\n imageHref,\n name,\n network: sourceName\n };\n if (query.deviceType) {\n deviceType = query.deviceType;\n }\n // See: https://espnjira.disney.com/browse/WEWEB-2071\n if (query._branch_match_id && query._branch_match_id !== '') {\n isBranchLinkInParams = true;\n }\n // See: https://espnjira.disney.com/browse/WEWEB-2500\n if (deviceType === 'android' && query['om-navmethod'] && query['om-navmethod'] === 'espn:ufc:gamehq') {\n updateAppLink = true;\n }\n\n // https://confluence.espn.com/pages/viewpage.action?title=ESPN+App+Deep+Linking&spaceKey=CD#ESPNAppDeepLinking-PlayWatchESPNVideos(LiveandReplay)\n if (sourceId && status !== ContentStatus.REPLAY && sourceType === SourceType.LINEAR) {\n // linear content (that is not instant turnaround) - play by channel so stale content doesn't error\n params = {\n ...params,\n playChannel: sourceId.toLowerCase()\n };\n } else if (contentId.eventId) {\n params = {\n ...params,\n playGameID: contentId.eventId\n };\n } else {\n // replays - play by cmsId\n params = {\n ...params,\n playID: contentId.id\n };\n }\n\n const isIosDevice = (typeof deviceType === 'string' && deviceType === 'ios');\n const shouldUseProtocolOnly = (isIosDevice && isSafari && isBranchLinkInParams);\n let url = getAppLink('showWatchStream', params, shouldUseProtocolOnly);\n if (updateAppLink) {\n url = `android-app://com.espn.score_center/${url}`;\n }\n\n window.location = url;\n }\n\n renderRoadblockLinks() {\n let { deviceType } = this.state;\n const { routing: { locationBeforeTransitions } } = this.props;\n const { query = {} } = locationBeforeTransitions || {};\n\n if (query.deviceType) { // override default detection\n deviceType = query.deviceType;\n }\n\n if (!deviceType) {\n return null;\n }\n\n const storeProps = appStore[deviceType];\n return storeProps ? (\n <div>\n <span className={`strong ${classes.roadblockText}`}>Download the ESPN App</span>\n <div>\n <p className={deviceType === 'windowsphone' ? classes.windowsphone : ''}>\n <a className=\"storeLink\" href={storeProps.link}>\n <img width=\"150\" src={storeProps.iconHref} alt=\"App Store Badge\" />\n </a>\n </p>\n </div>\n <span className={classes.roadblockText}>Already have the ESPN App?</span>\n <p>\n <a className={`blue ${classes.submitButton}`} onClick={this.handleLaunchClick}>Launch App</a>\n </p>\n </div>\n ) : <span className={classes.roadblockText}>The ESPN App is not available on your device.</span>;\n }\n\n render() {\n const {\n hero,\n playbackMeta: { tracking } = {},\n routing: { locationBeforeTransitions },\n oneIdEnv: oneIdEnvArg\n } = this.props;\n const { query = {} } = locationBeforeTransitions || {};\n const { imageHref, name, streams = [] } = hero;\n const stream = streams[0] || {};\n const formattedSubtitle = contentSubtitle(hero);\n const qs = queryString({\n ...query,\n [Flags.FROM_ROADBLOCK]: true\n });\n const fullSiteLink = `/watch${qs}`;\n const mobileGameCastUrl = getMobileGameCastUrlForContent(hero, tracking);\n let oneIdEnv = oneIdEnvArg;\n if (query[Flags.DISNEY_ENV] === 'stg') {\n oneIdEnv = OneIdEnv.STAGING;\n }\n\n let logo = <img alt=\"ESPN\" width=\"200\" src={`${secureCdnHost}/watchespn/images/roadblock/espn@2x.png`} />;\n if (streamHasAuthType(stream, AuthTypes.BAM)) {\n if (streamHasDTCPackage(stream, Entitlements.ESPN_PLUS_MLB)) {\n logo = (\n <img\n alt=\"MLB.TV\"\n width=\"250\"\n height=\"18\"\n src={`${secureCdnHost}/watchespn/images/roadblock/mlb@2x.png`}\n />\n );\n } else if (streamHasDTCPackage(stream, Entitlements.ESPN_PLUS_NHL)) {\n logo = (\n <img\n alt=\"NHL.TV\"\n width=\"250\"\n src={`${secureCdnHost}/watchespn/images/roadblock/nhl@2x.png`}\n />\n );\n } else {\n logo = (\n <img\n alt=\"ESPN+\"\n width=\"200\"\n src={`${secureCdnHost}/watchespn/images/roadblock/espn-plus@2x.png`}\n />\n );\n }\n }\n\n return (\n <div className={classes.container}>\n <Helmet\n meta={[{\n name: 'viewport',\n content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'\n }]}\n link={[\n { rel: 'stylesheet', href: `${STYLE_HREF}/page-shell.css` },\n { rel: 'stylesheet', href: `${STYLE_HREF}/watch-provider.css` }\n ]}\n style={[{\n cssText: `\n body {\n margin: 0;\n background: #fff !important;\n font: normal 12px/18px BentonSans, helvetica, arial, sans-serif;\n min-width: 100%;\n }\n #${BAM_PAYWALL_IFRAME_ID} iframe {\n width: 100%;\n height: 100%;\n border: none;\n }\n .${classes.eventName} {\n padding-left: 5px;\n }\n .${classes.logo} {\n text-align: center;\n }\n .${classes.logo} img { margin: 20px auto; }\n .${classes.pageTitle} {\n margin-bottom: 20px;\n }\n .${classes.roadblockText} {\n display: block;\n color: #262626 !important;\n font-size: 16px;\n }\n .${classes.container} {\n width: 295px !important;\n background: #fff !important;\n margin: 0 auto;\n border-radius: 12px;\n text-align: center;\n -moz-border-radius: 0 !important;\n -webkit-border-radius: 0 !important;\n box-shadow: none !important;\n -webkit-box-shadow: none !important;\n }\n .${classes.submitButton} {\n display: block;\n position: relative;\n width: 80% !important;\n margin: 0 auto;\n background: #2d66eb;\n border: 1px solid white;\n border-radius: 40px;\n box-shadow: none;\n line-height: 45px;\n color: #eee;\n cursor: pointer;\n text-align: center;\n text-transform: none;\n text-shadow: none;\n text-decoration: none;\n font-family: BentonSansMedium, helvetica, sans-serif;\n font-size: 18px;\n font-weight: 600;\n height: 45px;\n }\n\n .${classes.submitButton}.blue {\n border: 1px solid #2D66EB !important;\n background: #fff;\n color: #2D66EB;\n }\n .${classes.submitButton}:hover {text-decoration: none !important;}\n\n .${classes.main} a {\n cursor: pointer;\n }\n .${classes.main} a:hover {text-decoration: underline;}\n\n .${classes.main} p {\n text-align: center;\n margin: 10px 0 25px 0;\n }\n .${classes.main} .${classes.fullSite} {\n color: #2d66eb;\n font-size: 14px;\n font-family: BentonSans, helvetica, arial, sans-serif;\n text-decoration: none;\n }\n .${classes.footer} {\n display: flex;\n justify-content: space-between;\n }\n\n .${classes.footer} a {\n color: #0066CC !important;\n flex-grow: 1;\n padding: 4px 0;\n }\n\n .${classes.footer} a:first-child{\n font-weight: 600;\n }\n\n .${classes.footer} a + a{\n border-left: 1px #dcdddf solid;\n }\n\n .${classes.mainFeature} {\n position: relative;\n overflow: visible;\n width: 100%;\n left: 0;\n margin-bottom: 30px;\n }\n\n .${classes.mainFeature} figure {\n border: none !important;\n }\n\n .${classes.mainFeature} figure img{\n max-width: 100%;\n border-radius: 10px;\n box-shadow: 0 4px 24px rgba(0,0,0,0.16);\n margin-bottom: 12px;\n overflow: hidden;\n }\n\n .${classes.mainFeature} figure figcaption {\n bottom: auto;\n display: block;\n font-size: 12px;\n left: auto;\n line-height: 1.2;\n position: relative;\n text-align: left;\n }\n\n .${classes.eventTitle} {\n color: #151617;\n font-weight: 600;\n }\n .${classes.eventMeta} {\n border-bottom: 1px #DCDDDF dotted;\n color: #a5a6a7;\n margin-top: 4px;\n padding-bottom: 12px;\n }\n .${classes.eventMeta} span + span{\n margin-left: 4px;\n }\n .${classes.eventMeta} span + span:before{\n color: #cbccce;\n content: '•';\n margin-right: 4px;\n }\n\n\n .${classes.inner} {\n width: 100%;\n display: table;\n text-align: left;\n background: rgba(0, 0, 0, 0.6) no-repeat;\n min-height: 25px;\n }\n .${classes.inner} span {\n display: table-cell;\n vertical-align: middle;\n margin-left: 10px;\n padding: 10px;\n font-size: 1.2em;\n line-height: 1.2em;\n color: #fff;\n }\n .${classes.windowsphone} {\n width: 200px;\n height: 63px;\n margin: 10px auto 25px auto !important;\n padding-top: 10px;\n border: solid 1pt #515151;\n background: #000;\n }\n\n .strong{\n font-weight: 600;\n }\n\n .lightbox-container .lightbox-watch.watch-provider-modal.lightbox-paywall .btn-close {\n padding: 0;\n }\n .lightbox-container .lightbox-watch.watch-provider-modal.lightbox-paywall .btn-close:before {\n color: #fff;\n line-height: 36px;\n }\n `\n }]}\n script={[{\n src: OneIdJs[oneIdEnv]\n }]}\n />\n <div className={classes.logo}>\n {logo}\n </div>\n\n <header className={`strong ${classes.roadblockText} ${classes.pageTitle}`}>\n To stream this event on your phone,<br />you need the ESPN App.\n </header>\n\n <section className={classes.mainFeature}>\n <figure>\n <img src={imageHref} alt={name} />\n <figcaption>\n <div className={classes.eventTitle}>{name}</div>\n <div className={classes.eventMeta}>\n <span>{formattedSubtitle}</span>\n </div>\n </figcaption>\n </figure>\n </section>\n\n <section className={`section ${classes.main}`}>\n {this.renderRoadblockLinks()}\n {mobileGameCastUrl ? (\n <p>\n <a className={classes.fullSite} href={mobileGameCastUrl}>\n Follow on GameCast »\n </a>\n </p>\n ) : null}\n <p style={{ display: 'none' }}>\n <a className={classes.fullSite} href={fullSiteLink}>\n View Full Site\n </a>\n </p>\n </section>\n\n <div className={classes.footer}>\n <a href=\"http://www.espn.com\">ESPN.com</a>\n <a className={classes.footerA} href=\"/watch/schedule\">Schedule</a>\n <a\n className={classes.footerA}\n href=\"//support.espn.com/hc/en-us/categories/115000435812-Streaming-on-ESPN\" rel=\"nofollow\"\n >FAQs</a>\n <a className={classes.footerA} onClick={openFeedbackPage}>Customer Care</a>\n </div>\n\n <MessagingContainer />\n </div>\n );\n }\n}\n\nRoadblock.propTypes = {\n dispatch: PropTypes.func,\n hero: PropTypes.object,\n playbackMeta: PropTypes.object,\n routing: PropTypes.object,\n oneIdEnv: PropTypes.string\n};\n\n\nRoadblock.loadActions = [\n fetchExternalConfig,\n (pathParams, query) => (dispatch) => {\n const id = 'roadblock';\n const name = 'Roadblock';\n dispatch(createCompleteCheckIpAuthenticationAction(false));\n dispatch(createCompleteCheckAuthenticationAction(false));\n return dispatch(singleEventPage(id, name, query));\n }\n];\n\nconst mapStateToProps = (state) => ({\n hero: heroSelector(state),\n playbackMeta: playbackMetaSelector(state),\n routing: routingSelector(state),\n userAuth: userAuthSelector(state),\n oneIdEnv: oneIdEnvSelector(state),\n oneIdInitialized: oneIdInitializedSelector(state)\n});\n\nexport default connect(mapStateToProps)(Roadblock);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Roadblock.js","import React, { PropTypes, PureComponent } from 'react';\nimport Helmet from 'react-helmet';\nimport { setPageInfo } from 'common/page/actions';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport openFeedbackPage from 'lib/ui/openFeedbackPage';\nimport appConfig from 'config';\n\nconst {\n shellVersion,\n secureCdnHost,\n devStyles\n} = appConfig;\n\nlet STYLE_HREF = `${secureCdnHost}/redesign/${shellVersion}/css`;\nif (devStyles) {\n STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nconst classes = {\n container: 'watch__roadblock',\n logo: 'watch__roadblock-logo',\n pageTitle: 'watch__roadblock_page-title',\n roadblockText: 'watch__roadblock-text',\n main: 'watch__roadblock-main',\n fullSite: 'watch__roadblock-full-site',\n footer: 'watch__roadblock-footer',\n footerA: 'watch__roadblock-footer-a'\n};\n\nclass UnsupportedPage extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n render() {\n const {\n messages,\n intl: { formatMessage }\n } = this.props;\n\n const logo = <img alt=\"ESPN\" width=\"200\" src={`${secureCdnHost}/watchespn/images/roadblock/espn@2x.png`} />;\n\n return (\n <div className={classes.container}>\n <Helmet\n meta={[{\n name: 'viewport',\n content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'\n }]}\n link={[\n { rel: 'stylesheet', href: `${STYLE_HREF}/page-shell.css` },\n { rel: 'stylesheet', href: `${STYLE_HREF}/watch-provider.css` }\n ]}\n style={[{\n cssText: `\n body {\n margin: 0;\n background: #fff !important;\n font: normal 12px/18px BentonSans, helvetica, arial, sans-serif;\n min-width: 100%;\n }\n .${classes.logo} {\n text-align: center;\n }\n .${classes.logo} img { margin: 20px auto; }\n .${classes.pageTitle} {\n margin-bottom: 20px;\n }\n .${classes.roadblockText} {\n display: block;\n color: #262626 !important;\n font-size: 16px;\n }\n .${classes.container} {\n width: 295px !important;\n background: #fff !important;\n margin: 0 auto;\n border-radius: 12px;\n text-align: center;\n -moz-border-radius: 0 !important;\n -webkit-border-radius: 0 !important;\n box-shadow: none !important;\n -webkit-box-shadow: none !important;\n }\n .${classes.main} a {\n cursor: pointer;\n }\n .${classes.main} a:hover {text-decoration: underline;}\n\n .${classes.main} p {\n text-align: center;\n margin: 10px 0 25px 0;\n }\n .${classes.main} .${classes.fullSite} {\n color: #2d66eb;\n font-size: 14px;\n font-family: BentonSans, helvetica, arial, sans-serif;\n text-decoration: none;\n }\n .${classes.footer} {\n display: flex;\n justify-content: space-between;\n }\n .${classes.footer} a {\n color: #0066CC !important;\n flex-grow: 1;\n padding: 4px 0;\n }\n .${classes.footer} a:first-child{\n font-weight: 600;\n }\n .${classes.footer} a + a{\n border-left: 1px #dcdddf solid;\n }\n .strong{\n font-weight: 600;\n }\n `\n }]}\n />\n <div className={classes.logo}>\n {logo}\n </div>\n\n <header className={`strong ${classes.roadblockText} ${classes.pageTitle}`}>\n {formatMessage(messages['unsupported.error.message'])}\n </header>\n\n <div className={classes.footer}>\n <a href=\"http://www.espn.com\">ESPN.com</a>\n <a className={classes.footerA} href=\"/watch/schedule\">Schedule</a>\n <a className={classes.footerA} href=\"//support.espn.com/en_US/WatchESPN\" rel=\"nofollow\">FAQs</a>\n <a className={classes.footerA} onClick={openFeedbackPage}>Customer Care</a>\n </div>\n </div>\n );\n }\n}\n\nUnsupportedPage.propTypes = {\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nUnsupportedPage.loadActions = [\n () => setPageInfo('unsupported', 'Unsupported')\n];\n\nexport default injectIntl(UnsupportedPage);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/UnsupportedPage.js","import { createSelector } from 'reselect';\nimport pageSelector from './pageSelector';\n\nexport default createSelector(pageSelector, ({ carouselBucket = {} }) => carouselBucket);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/carouselSelector.js","import React, { PropTypes } from 'react';\n\nconst NextNavButton = ({ key, style, onClick }) => (\n <a\n key={key}\n className=\"dtc-watch__carouselNext icon-font-before icon-caret-right-solid-before\"\n style={style}\n onClick={onClick}\n />\n);\n\nNextNavButton.propTypes = {\n key: PropTypes.string,\n style: PropTypes.object,\n onClick: PropTypes.func\n};\n\nexport default NextNavButton;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/carousel/NextNavButton.js","import React, { PropTypes } from 'react';\n\nconst PrevNavButton = ({ key, style, onClick }) => (\n <a\n key={key}\n className=\"dtc-watch__carouselPrev icon-font-before icon-caret-left-solid-before\"\n style={style}\n onClick={onClick}\n />\n);\n\nPrevNavButton.propTypes = {\n key: PropTypes.string,\n style: PropTypes.object,\n onClick: PropTypes.func\n};\n\nexport default PrevNavButton;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/carousel/PrevNavButton.js","import React, { PropTypes, PureComponent } from 'react';\nimport Slider from 'react-slick';\nimport classnames from 'classnames';\nimport NextNavButton from './NextNavButton';\nimport PrevNavButton from './PrevNavButton';\n\nclass Carousel extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n initialized: false\n };\n this.onClick = this.onClick.bind(this);\n }\n componentDidMount() {\n this.setInitialized();\n }\n componentDidUpdate() {\n this.setInitialized();\n }\n onClick(event) {\n if (event) {\n event.preventDefault();\n }\n const { contents, onClick } = this.props;\n const contentId = event.currentTarget.getAttribute('data-id');\n const content = contents.filter(({ id }) => id === contentId)[0];\n if (onClick) {\n onClick(content);\n }\n }\n setInitialized() {\n if (!this.sliderContainer) {\n return;\n }\n this.sliderContainer.classList.remove('carousel-loading');\n // a little hack to trigger `update` function on `react-slick` to calculate `sliderWidth`\n // right after the carousel gets visible\n if (!this.state.initialized) {\n this.setState({ // eslint-disable-line react/no-did-mount-set-state\n initialized: true\n });\n }\n }\n render() {\n const { contents } = this.props;\n if (!contents.length) {\n return null;\n }\n const isSingleItem = contents.length === 1;\n const settings = {\n autoplay: true,\n autoplaySpeed: 6000,\n pauseOnFocus: true,\n pauseOnHover: true,\n speed: 400,\n swipe: true,\n pauseOnDotsHover: true,\n arrows: !isSingleItem,\n dots: !isSingleItem,\n className: classnames('dtc-watch__carousel', { 'dtc-watch__carousel--single': isSingleItem }),\n dotsClass: 'dtc_carousel__dots',\n prevArrow: <PrevNavButton />,\n nextArrow: <NextNavButton />,\n responsive: [\n {\n breakpoint: 768,\n settings: {\n arrows: false\n }\n }\n ]\n };\n\n const items = contents.map(({ id, name, imageHref }) => (\n <div key={imageHref} className=\"dtc-watch__carousel__item\">\n <a data-id={id} onClick={this.onClick}>\n <img src={imageHref} alt={name} />\n </a>\n </div>\n ));\n\n return (\n <div\n ref={ele => { this.sliderContainer = ele; }}\n className=\"dtc-watch__carousel--container carousel-loading\"\n >\n <Slider {...settings}>\n {items}\n </Slider>\n </div>\n );\n }\n}\n\nCarousel.propTypes = {\n contents: PropTypes.array,\n onClick: PropTypes.func\n};\n\nCarousel.defaultProps = {\n contents: []\n};\n\nexport default Carousel;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/carousel/Carousel.js","import React, { PropTypes, PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport { PageType } from 'enums';\nimport { createFetchPageAction } from 'common/page/actions';\nimport carouselSelector from 'common/selectors/carouselSelector';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport Carousel from 'common/page/carousel/Carousel';\nimport BannerAd from 'common/ads/BannerAd';\nimport BucketListContainer from './buckets/BucketListContainer';\nimport MainContainer from './common/MainContainer';\nimport { convertQueryStringToObject } from 'lib/format';\n\nclass Originals extends PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n }\n onClick(content = {}) {\n const { links: { web = '' } = {} } = content;\n const result = /https?:\\/\\/[^\\/]+\\/watch([^\\?]+)(.*)$/.exec(web);\n if (!result || !result[1]) {\n return;\n }\n const pathname = result[1];\n let qs = result[2];\n if (qs) {\n qs = convertQueryStringToObject(qs.substr(1));\n }\n const { flags, router } = this.props;\n\n const query = {\n ...qs,\n ...flags\n };\n\n router.push({\n pathname,\n query\n });\n }\n render() {\n const { carousel: { contents } = {} } = this.props;\n const bannerAd = [<BannerAd key=\"banner_ad\" />];\n return (\n <MainContainer className=\"watch-home\" pre={bannerAd}>\n <div className=\"layout-full layout-full--watch\">\n <section className=\"col-a\">\n <Carousel contents={contents} onClick={this.onClick} />\n <BucketListContainer pageType={PageType.ORIGINALS} key=\"bucket_list_container\" />\n </section>\n </div>\n </MainContainer>\n );\n }\n}\n\nOriginals.propTypes = {\n carousel: PropTypes.object,\n flags: PropTypes.object,\n router: PropTypes.object\n};\n\nOriginals.loadActions = [\n (params, query, lang) => createFetchPageAction('originals', params, query, lang)\n];\n\nconst mapStateToProps = (state) => ({\n carousel: carouselSelector(state),\n flags: persistentFlagsSelector(state)\n});\n\nexport default withRouter(connect(mapStateToProps)(Originals));\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/Originals.js","import React, { PropTypes } from 'react';\nimport classNames from 'classnames';\nimport { ContentStatus } from 'enums';\nimport WatchPropTypes from 'common/PropTypes';\nimport { isEmpty } from 'lib/util';\n\nconst SuperHero = ({ name, description, director, image, logoImage, subtitle, content, clickHandler: clickHandlerArg }) => {\n // TODO: DTC - Temp solution. Fields shouldn't come without escaped values from the PageAPI\n const heroEvent = (subtitle) ? subtitle.replace(/\\\\u2022/g, '•') : '';\n const clickHandler = !isEmpty(content) && clickHandlerArg;\n const playButtonClasses = classNames('button-play', 'button-play--video', {\n 'button-play--live': (!isEmpty(content) && content.status === ContentStatus.LIVE)\n });\n return (\n <article className=\"hero--super hero--dtc\">\n <figure className=\"hero_wrapper\">\n {clickHandler ? (\n <a className=\"col-a\" onClick={clickHandler}>\n <picture>\n <img className=\"hero_img\" src={image} alt={name} />\n </picture>\n <div className={playButtonClasses} />\n </a>\n ) : (\n <span className=\"col-a\">\n <picture>\n <img className=\"hero_img\" src={image} alt={name} />\n </picture>\n </span>\n )}\n </figure>\n <figcaption className=\"dtc_hero__detail\">\n {logoImage && (\n <div className=\"dtc_hero__logo\">\n <img className=\"dtc_hero__logo__img\" src={logoImage} alt={name} />\n </div>\n )}\n <div className=\"dtc_hero__meta\">\n <div className=\"dtc_hero__truncate\">\n <span className=\"dtc_hero__event\">{heroEvent}</span>\n </div>\n </div>\n <div className=\"dtc_hero__title\">{name}</div>\n <div className=\"dtc_hero__description\">\n {description}\n </div>\n <div className=\"dtc_hero__author\">\n {director}\n </div>\n </figcaption>\n </article>\n );\n};\n\nSuperHero.propTypes = {\n name: PropTypes.string,\n description: PropTypes.string,\n director: PropTypes.string,\n image: PropTypes.string,\n logoImage: PropTypes.string,\n subtitle: PropTypes.string,\n content: WatchPropTypes.content,\n clickHandler: PropTypes.func\n};\n\nexport default SuperHero;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/hero/SuperHero/index.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { PageType } from 'enums';\nimport { createFetchPageAction } from 'common/page/actions';\nimport pageSelector from 'common/selectors/pageSelector';\nimport heroSelector from 'common/selectors/heroSelector';\nimport BucketListContainer from './buckets/BucketListContainer';\nimport MainContainer from './common/MainContainer';\nimport SuperHero from './hero/SuperHero';\nimport playable from '@alias/Playable';\nimport { isEmpty } from 'lib/util';\n\nconst PlayableSuperHero = playable(SuperHero);\n\nexport const Catalog = ({ page, hero }) => {\n const {\n header: {\n name = '',\n description = '',\n subtitle = '',\n subtitleTwo = '',\n backgroundImage = {},\n image = {},\n logoImage = {}\n } = {},\n buckets = []\n } = page;\n const bannerAd = null; // [<BannerAd key=\"banner_ad\" />];\n const bucket = buckets[0] || {};\n const bucketId = (bucket.metadata && bucket.metadata.bucketId) || bucket.id;\n const bucketName = bucket.name;\n const superHero = (!isEmpty(hero) && (hero.streams && hero.streams.length)) ? (\n <PlayableSuperHero\n name={name}\n description={description}\n subtitle={subtitle}\n director={subtitleTwo}\n image={backgroundImage.href}\n content={hero}\n bucketId={bucketId}\n bucketName={bucketName}\n />\n ) : (\n <SuperHero\n name={name}\n description={description}\n subtitle={subtitle}\n director={subtitleTwo}\n image={backgroundImage.href}\n icon={image.href}\n logoImage={logoImage.href}\n />\n );\n return (\n <MainContainer className=\"watch-home\" pre={bannerAd}>\n <div className=\"layout-full layout-full--watch\">\n <section className=\"col-a\">\n {superHero}\n <BucketListContainer\n key=\"bucket_list_container\"\n renderHeroInBucket\n hideHeaderLink\n pageType={PageType.CATALOG}\n />\n </section>\n </div>\n </MainContainer>\n );\n};\n\nCatalog.propTypes = {\n page: PropTypes.object,\n hero: PropTypes.object\n};\n\nconst mapStateToProps = (state) => ({\n page: pageSelector(state),\n hero: heroSelector(state)\n});\n\nCatalog.loadActions = [\n (params, query, lang) => {\n const { pageName, ...restOfParams } = params;\n return createFetchPageAction(pageName, restOfParams, query, lang);\n }\n];\n\nexport default connect(mapStateToProps)(Catalog);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/page/Catalog.js","import React, { PropTypes, PureComponent } from 'react';\nimport Helmet from 'react-helmet';\nimport { connect } from 'react-redux';\nimport { createFetchPageAction } from 'common/page/actions';\nimport { getProviders } from 'common/actions/authenticationActions';\nimport pageSelector from 'common/selectors/pageSelector';\nimport { providersSelector } from 'common/selectors/providerSelector';\nimport LinkWithFlags from 'common/LinkWithFlags';\nimport appConfig from '../../../config';\n\nconst {\n shellVersion,\n cdnHost,\n devStyles\n} = appConfig;\n\nconst BASE_HREF = `${cdnHost}/redesign/${shellVersion}`;\nlet STYLE_HREF = `${BASE_HREF}/css`;\nif (devStyles) {\n STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nconst containerStyle = {\n padding: 20\n};\n\nconst DEF_PROVIDER_VALUE = 'default';\n\nclass AffiliatePageExample extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n mvpd: DEF_PROVIDER_VALUE,\n network: ''\n };\n this.onProviderChange = this.onProviderChange.bind(this);\n this.onNetworkChange = this.onNetworkChange.bind(this);\n this.onLinkClick = this.onLinkClick.bind(this);\n this.selectByNetwork = this.selectByNetwork.bind(this);\n }\n\n onProviderChange(event) {\n this.setState({\n mvpd: event.target.value\n });\n }\n\n onNetworkChange(event) {\n this.setState({\n network: event.target.value\n });\n }\n\n onLinkClick(event) {\n if (this.state.mvpd === DEF_PROVIDER_VALUE) {\n event.preventDefault();\n this.warn();\n }\n }\n\n warn() { // eslint-disable-line class-methods-use-this\n alert('Select a provider'); // eslint-disable-line no-alert\n }\n\n selectByNetwork() {\n const { mvpd, network } = this.state;\n if (mvpd === DEF_PROVIDER_VALUE) {\n this.warn();\n return;\n }\n\n window.open(`/watch/mvpd/login?mvpd=${mvpd}&network=${network}`);\n }\n\n render() {\n const { mvpd, network } = this.state;\n const { page: { buckets: [bucket = {}] }, providers } = this.props;\n const { contents = [] } = bucket;\n\n\n const providerOptions = providers.map(({ name, abbreviation }) => (\n <option value={abbreviation}>{name}</option>\n ));\n providerOptions.unshift(\n <option value={DEF_PROVIDER_VALUE}>\n {'----- Choose Provider -----'}\n </option>\n );\n\n return (\n <div style={containerStyle}>\n <Helmet\n meta={[\n { name: 'robots', content: 'noindex, nofollow' }\n ]}\n link={[\n { rel: 'stylesheet', href: `${STYLE_HREF}/page.css` }\n ]}\n style={[{\n cssText: `\n body {\n font-family: sans-serif;\n }\n h1 { font-size: 24px; }\n h2 { font-size: 20px; }\n h3 { font-size: 18px; }\n `\n }]}\n />\n <h1>Affiliate Page Test</h1>\n <div style={{ marginTop: 20 }}>\n <select\n id=\"providerList\"\n defaultValue={mvpd}\n style={{ width: 200 }}\n onChange={this.onProviderChange}\n >\n {providerOptions}\n </select>\n </div>\n <div style={{ marginTop: 20 }}>\n <button onClick={this.selectByNetwork}>Network</button>\n <input type=\"text\" value={network} onChange={this.onNetworkChange} />\n </div>\n <div style={containerStyle}>\n <ul>\n {contents.map(({ id, name }) => (\n <li key={id} data-id={id} style={{ listStyleType: 'circle' }}>\n <LinkWithFlags\n to={{ pathname: '/mvpd/login', query: { id, mvpd } }}\n target=\"_blank\"\n onClick={this.onLinkClick}\n >\n {name}\n </LinkWithFlags>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n }\n}\n\nAffiliatePageExample.defaultProps = {\n providers: []\n};\n\nAffiliatePageExample.propTypes = {\n page: PropTypes.object,\n providers: PropTypes.array\n};\n\nAffiliatePageExample.loadActions = [\n (params, query, lang) => createFetchPageAction('home', params, query, lang),\n (_, query) => getProviders({ platform: query.device })\n];\n\nconst mapStateToProps = (state) => ({\n page: pageSelector(state),\n providers: providersSelector(state)\n});\n\nexport default connect(mapStateToProps)(AffiliatePageExample);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/AffiliatePageExample.js","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport { metaSelector } from 'common/selectors/pageSelector';\nimport injectIntl from 'common/injectIntl';\nimport appConfig from '../../config';\n\nconst {\n secureCdnHost,\n cdnHost\n} = appConfig;\n\nexport const RootApplicationShell = ({\n children,\n meta: { title, description, keywords, canonicalUrl, socialDescription, socialTitle, socialUrl, socialImageUrl, noIndex } = {}\n}) => {\n const metaTag = [\n { 'http-equiv': 'content-type', content: 'text/html; charset=UTF-8' },\n { 'http-equiv': 'x-ua-compatible', content: 'IE=edge,chrome=1' },\n { name: 'viewport', content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' },\n { name: 'title', content: title },\n { name: 'description', content: description },\n { name: 'news_keywords', content: keywords },\n { name: 'keywords', content: keywords },\n { name: 'medium', content: 'index' },\n { property: 'fb:app_id', content: '116656161708917' },\n { property: 'og:site_name', content: 'ESPN.com' },\n { property: 'og:url', content: socialUrl },\n { property: 'og:title', content: socialTitle },\n { property: 'og:description', content: socialDescription },\n { property: 'og:image', content: socialImageUrl },\n { property: 'og:type', content: 'website' },\n { name: 'twitter:site', content: 'espn' },\n { name: 'twitter:url', content: socialUrl },\n { name: 'twitter:title', content: socialTitle },\n { name: 'twitter:description', content: socialDescription },\n { name: 'twitter:image', content: socialImageUrl },\n { name: 'twitter:card', content: 'summary' },\n { name: 'twitter:app:name:iphone', content: 'ESPN' },\n { name: 'twitter:app:id:iphone', content: '317469184' },\n { name: 'twitter:app:name:googleplay', content: 'ESPN' },\n { name: 'twitter:app:id:googleplay', content: 'com.espn.score_center' }\n ];\n\n if (noIndex) {\n metaTag.unshift(\n { name: 'robots', content: 'noindex, nofollow' }\n );\n }\n\n return (\n <div className=\"watch-root\">\n <Helmet\n title={title}\n link={[\n { rel: 'canonical', href: canonicalUrl },\n { rel: 'mask-icon', href: `${secureCdnHost}/prod/assets/icons/E.svg`, color: '#990000', sizes: 'any' },\n { rel: 'shortcut icon', href: `${secureCdnHost}/favicon.ico` },\n { rel: 'dns-prefetch', href: cdnHost },\n { rel: 'dns-prefetch', href: secureCdnHost },\n { rel: 'preconnect', href: cdnHost, crossorigin: '' },\n { rel: 'preconnect', href: secureCdnHost, crossorigin: '' },\n {\n rel: 'apple-touch-icon',\n href: `${secureCdnHost}/wireless/mw5/r1/images/bookmark-icons/espn_icon-57x57.min.png`\n },\n {\n rel: 'apple-touch-icon-precomposed',\n href: `${secureCdnHost}/wireless/mw5/r1/images/bookmark-icons/espn_icon-57x57.min.png`\n },\n {\n rel: 'apple-touch-icon-precomposed',\n sizes: '72x72',\n href: `${secureCdnHost}/wireless/mw5/r1/images/bookmark-icons/espn_icon-72x72.min.png`\n },\n {\n rel: 'apple-touch-icon-precomposed',\n sizes: '114x114',\n href: `${secureCdnHost}/wireless/mw5/r1/images/bookmark-icons/espn_icon-114x114.min.png`\n },\n {\n rel: 'apple-touch-icon-precomposed',\n sizes: '152x152',\n href: `${secureCdnHost}/wireless/mw5/r1/images/bookmark-icons/espn_icon-152x152.min.png`\n }\n ]}\n meta={metaTag}\n script={[{\n type: 'application/ld+json',\n innerHTML: `{\n \"@context\": \"http://schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"ESPN\",\n \"url\": \"http://www.espn.com/\"\n }`\n }]}\n />\n {children}\n </div>\n );\n};\n\nRootApplicationShell.propTypes = {\n children: PropTypes.node,\n meta: PropTypes.object\n};\n\nconst mapStateToProps = (state, props) => ({\n meta: metaSelector(state, props)\n});\n\nexport default injectIntl(connect(mapStateToProps)(RootApplicationShell));\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/RootApplicationShell.js","import { dotComNielsenData } from 'constants';\n\nexport default {\n omniture: {\n countryRegion: 'en-us',\n hier1: 'watch:index',\n section: 'watch',\n pageName: 'watch:index',\n sections: 'watch:index',\n site: 'espn',\n premium: 'premium-no',\n convrSport: 'watch',\n pageURL: 'www.espn.com/watch/index',\n lang: 'en_us',\n contentType: 'index',\n sport: 'watch',\n account: 'wdgespcom',\n siteType: 'full',\n prop58: 'isIndex=true'\n },\n chartbeat: {\n loadPubJS: false,\n path: '/watch/index',\n zone: 'www.espn.com.us.watch',\n domain: 'www.espn.com',\n loadVidJS: true,\n title: 'WatchESPN: Live Sports, Game Replays, Video Highlights',\n sections: 'watch',\n authors: 'index'\n },\n nielsen: dotComNielsenData,\n ABTest: {\n isOptimizied: true,\n environment: 'prod',\n tScript: 'http://a.espncdn.com/prod/scripts/analytics/target.20.r2.js',\n abtestUser: 0,\n oScript: 'http://cdn.optimizely.com/js/310987714.js',\n targetURLs: [\n {\n regexp: '(/)',\n site: 'espn.co.uk',\n flag: false\n },\n {\n regexp: '(/.*)',\n site: 'www.espn.com',\n flag: false\n }\n ],\n domain: 'www.espn.com',\n host: 'espn.com',\n raw: '{\\'fastcast\\':{\\'placements\\':{\\'/nba/index\\':\\'true\\',\\'^/.+$\\':\\'false\\',\\'/ncf/index\\':\\'true\\'},\\'enabled\\':false,\\'script\\':\\'http://a.espncdn.com/combiner/c?js=analytics/espn.fastcastTracking.4.js\\'},\\'optimizely\\':{\\'oldscript\\':\\'http://a.espncdn.com/sports/optimizely.js\\',\\'placements\\':[{\\'regexp\\':\\'(/)\\',\\'site\\':\\'espn.co.uk\\',\\'flag\\':true},{\\'regexp\\':\\'(/.*)\\',\\'site\\':\\'www.espn.com\\',\\'flag\\':true},{\\'regexp\\':\\'(/.*)\\',\\'site\\':\\'www.espnqa.com\\',\\'flag\\':true}],\\'enabled\\':true,\\'script\\':\\'http://cdn.optimizely.com/js/310987714.js\\'},\\'target\\':{\\'placements\\':[{\\'regexp\\':\\'(/)\\',\\'site\\':\\'espn.co.uk\\',\\'flag\\':false},{\\'regexp\\':\\'(/.*)\\',\\'site\\':\\'www.espn.com\\',\\'flag\\':false}],\\'enabled\\':false,\\'script\\':\\'http://a.espncdn.com/prod/scripts/analytics/target.20.r2.js\\'}}',\n optimizely: true,\n target: false,\n optimizelyURLs: [\n {\n regexp: '(/)',\n site: 'espn.co.uk',\n flag: true\n },\n {\n regexp: '(/.*)',\n site: 'www.espn.com',\n flag: true\n },\n {\n regexp: '(/.*)',\n site: 'www.espnqa.com',\n flag: true\n }\n ]\n },\n isFeaturePhone: false,\n device: 'desktop',\n cto: true\n};\n\n\n\n// WEBPACK FOOTER //\n// ./server/templates/dotComAnalyticsStub.js","import React, { PropTypes, PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport { subscribeToStore } from 'lib/observe';\nimport trackingObserver from 'lib/observe/trackingObserver';\nimport { getI18nInclude } from 'lib/format';\nimport appSelector from 'common/selectors/appSelector';\nimport { RenderTemplateTypes } from 'enums';\nimport analyticsStub from '../../../server/templates/dotComAnalyticsStub';\nimport appConfig from '../../../config';\n\nconst { shellVersion, secureCdnHost } = appConfig;\nconst BASE_HREF = `${secureCdnHost}/redesign/${shellVersion}`;\n\nclass BasicShell extends PureComponent {\n componentDidMount() {\n const { store } = this.context;\n this.unsubscribeFromStore = subscribeToStore(store, [\n trackingObserver\n ]);\n }\n\n componentWillUnmount() {\n if (this.unsubscribeFromStore) {\n this.unsubscribeFromStore();\n }\n }\n\n render() {\n const { app: { device, isMobile } } = this.props;\n return (\n <div>\n <Helmet\n script={[{\n src: `${BASE_HREF}/js/espn-head.js`\n }, {\n innerHTML: `\n var espn = espn || {};\n espn.build = '${shellVersion}';\n var espn_ui = window.espn_ui || {};\n espn_ui.deviceType = \"${device}\";\n espn_ui.device = {\n isMobile: ${isMobile}\n };\n espn.track = espn.track || {};\n espn.track.data = ${JSON.stringify(analyticsStub)};\n `\n }, {\n src: getI18nInclude()\n }]}\n />\n {React.Children.only(this.props.children)}\n <script src={`${BASE_HREF}/js/espn-critical.js`} />\n <script src={`${BASE_HREF}/js/espn-analytics.js`} />\n </div>\n );\n }\n}\n\nBasicShell.propTypes = {\n app: PropTypes.object,\n children: PropTypes.node\n};\n\nBasicShell.contextTypes = {\n store: PropTypes.object\n};\n\nBasicShell.renderTemplate = RenderTemplateTypes.BASIC;\n\nconst mapStateToProps = (state) => ({\n app: appSelector(state)\n});\n\nexport default connect(mapStateToProps)(BasicShell);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/subShell/BasicShell.js","import React, { PropTypes } from 'react';\nimport AdContainer from './AdContainer';\n\nconst OverlayAd = (props) => (\n <AdContainer\n className=\"ad-wrapper\"\n kvps={{ pos: 'outofpage' }}\n slotType=\"outofpage\"\n isOutOfPage\n {...props}\n />\n);\n\nOverlayAd.defaultProps = {\n refreshOnLoad: false\n};\n\nOverlayAd.propTypes = {\n refreshOnLoad: PropTypes.bool\n};\n\nexport default OverlayAd;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ads/OverlayAd.js","import _uniq from 'lodash/uniq';\nimport Promise from 'bluebird';\n\n/**\n * This function fire offs redux actions when a route component is initially mounted or updated. This generally retrieves\n * the initial data needed for the page.\n * @param {function} dispatch - Redux dispatch method to fire off actions\n * @param {array} components - The components initially rendered by the router. Typically PageShell and a child component based\n * on the route (Home, Features, Schedule or Collection)\n * @param {object} [pathParams] - Optional path parameters extracted by react-router\n * @param {objeect} [query] - Optional url query parameters\n * @param {string} [lang] - Optional lang originating from client and passed into the PageAPI\n * @param {array} [actions] - Optional array of ancillary actions to be fired\n * @param {string} [preActions] - Optional array of actions that should occur before all other actions are fired\n */\n\nexport default (dispatch, components = [], pathParams = {}, query, lang, actions = [], preActionsArg = []) => {\n let loadActions = components.reduce((prev, current) =>\n prev.concat((current && current.loadActions) || [])\n , actions);\n let preActions = components.reduce((prev, current) =>\n prev.concat((current && current.preActions) || [])\n , preActionsArg);\n\n preActions = _uniq(preActions);\n loadActions = _uniq(loadActions);\n const prePromises = preActions.map((preAction) => dispatch(preAction()));\n return Promise.all(prePromises).finally(() => {\n const promises = loadActions.map(action => dispatch(action(pathParams, query, lang)));\n return Promise.all(promises);\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./server/fetchComponentData.js","// eslint-disable-next-line no-unused-vars\nimport React, { PropTypes, Component } from 'react';\nimport fetchComponentData from '../../server/fetchComponentData';\nimport { normalizeQueryString } from 'lib/format';\n\nclass ComponentDataContainer extends Component {\n componentDidMount() {\n const { routerProps } = this.props;\n this.onUpdate(routerProps);\n }\n\n componentDidUpdate(prevProps) {\n const { routerProps } = this.props;\n const prevRouterProps = prevProps.routerProps;\n this.onUpdate(routerProps, prevRouterProps);\n }\n\n onUpdate(routerProps, prevRouterProps = {}) {\n if (window.__INITIAL_STATE__ !== null && routerProps.ssr) {\n window.__INITIAL_STATE__ = null;\n return;\n }\n\n // don't update if the route hasn't changed\n if (prevRouterProps.location && prevRouterProps.location.pathname === routerProps.location.pathname) {\n return;\n }\n\n // this `dispatch is passed from client.js\n const { dispatch, onLoadStart: onDefLoadStart, onComplete: onDefComplete } = this.props;\n const { components = [], params = {}, location: { query = {} } = {}, lang } = routerProps;\n // grab the ones that's defined in the deepest child\n const { onLoadStart, onComplete } = components.reduce((acc, current) => {\n if (current.onLoadStart) {\n acc.onLoadStart = current.onLoadStart;\n }\n if (current.onComplete) {\n acc.onComplete = current.onComplete;\n }\n return acc;\n }, { onLoadStart: onDefLoadStart, onComplete: onDefComplete });\n\n onLoadStart(dispatch);\n fetchComponentData(dispatch, components, params, normalizeQueryString(query), lang).then(() => onComplete(dispatch));\n }\n\n render() {\n return this.props.children;\n }\n}\n\nComponentDataContainer.propTypes = {\n dispatch: PropTypes.func.isRequired,\n routerProps: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired,\n onLoadStart: PropTypes.func,\n onComplete: PropTypes.func\n};\n\nComponentDataContainer.defaultProps = {\n onLoadStart: () => {},\n onComplete: () => {}\n};\n\nexport default ComponentDataContainer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ComponentDataContainer.js","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js\n// module id = 382\n// module chunks = 1","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js\n// module id = 383\n// module chunks = 1","module.exports = now\n\nfunction now() {\n return new Date().getTime()\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/date-now/index.js\n// module id = 384\n// module chunks = 1","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/timers-browserify/main.js\n// module id = 385\n// module chunks = 1","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/setimmediate/setImmediate.js\n// module id = 386\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar PooledClass = require('./PooledClass');\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactChildren.js\n// module id = 387\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/PooledClass.js\n// module id = 388\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/traverseAllChildren.js\n// module id = 389\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/KeyEscapeUtils.js\n// module id = 390\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = ReactPureComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactPureComponent.js\n// module id = 391\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function (Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function (Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function (Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);\n },\n contextTypes: function (Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function (Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function (Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function (Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function () {} };\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but only in __DEV__\n process.env.NODE_ENV !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n }\n }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n !(specPolicy === 'OVERRIDE_BASE') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;\n }\n\n return;\n }\n\n !(typeof spec !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;\n !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n !!isReserved ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0;\n\n var isInherited = name in Constructor;\n !!isInherited ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n !(one && two && typeof one === 'object' && typeof two === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n !(one[key] === undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0;\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function (newThis) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n } else if (!args.length) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n}\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function (newState, callback) {\n this.updater.enqueueReplaceState(this, newState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'replaceState');\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function () {\n return this.updater.isMounted(this);\n }\n};\n\nvar ReactClassComponent = function () {};\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function (spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function (props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (initialState === undefined && this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function (mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactClass.js\n// module id = 392\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactDOMFactories.js\n// module id = 393\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getIteratorFn = require('./getIteratorFn');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\nvar ANONYMOUS = '<<anonymous>>';\n\nvar ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n};\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n/*eslint-disable no-self-compare*/\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n/*eslint-enable no-self-compare*/\n\n/**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\nfunction PropTypeError(message) {\n this.message = message;\n this.stack = '';\n}\n// Make `instanceof Error` still work for returned errors.\nPropTypeError.prototype = Error.prototype;\n\nfunction createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (process.env.NODE_ENV !== 'production') {\n if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') {\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will not work in production with the next major version. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName) : void 0;\n manualPropTypeCallCache[cacheKey] = true;\n }\n }\n }\n if (props[propName] == null) {\n var locationName = ReactPropTypeLocationNames[location];\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n var locationName = ReactPropTypeLocationNames[location];\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturns(null));\n}\n\nfunction createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactElement.isValidElement(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var locationName = ReactPropTypeLocationNames[location];\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || ReactElement.isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n}\n\nfunction isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n}\n\n// Equivalent of `typeof` but with special handling for array and regexp.\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n}\n\n// This handles more types than `getPropType`. Only used for error messages.\n// See `createPrimitiveTypeChecker`.\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n}\n\n// Returns class name of the object, if any.\nfunction getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n}\n\nmodule.exports = ReactPropTypes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactPropTypes.js\n// module id = 394\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactPropTypesSecret.js\n// module id = 395\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.4.2';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/ReactVersion.js\n// module id = 396\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/lib/onlyChild.js\n// module id = 397\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactMount = require('./ReactMount');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdates = require('./ReactUpdates');\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOM.js\n// module id = 398\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\nvar ReactDOMComponent = require('./ReactDOMComponent');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactEventListener = require('./ReactEventListener');\nvar ReactInjection = require('./ReactInjection');\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\nvar SelectEventPlugin = require('./SelectEventPlugin');\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDefaultInjection.js\n// module id = 399\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ARIADOMPropertyConfig.js\n// module id = 400\n// module chunks = 1","/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar FallbackCompositionState = require('./FallbackCompositionState');\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/BeforeInputEventPlugin.js\n// module id = 401\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/FallbackCompositionState.js\n// module id = 402\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticCompositionEvent.js\n// module id = 403\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticInputEvent.js\n// module id = 404\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\nvar isEventSupported = require('./isEventSupported');\nvar isTextInputElement = require('./isTextInputElement');\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n // IE10+ fire input events to often, such when a placeholder\n // changes or when an input with a placeholder is focused.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);\n}\n\n/**\n * (For IE <=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function () {\n return activeElementValueProp.get.call(this);\n },\n set: function (val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For IE <=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');\n\n // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n // on DOM elements\n Object.defineProperty(activeElement, 'value', newValueProp);\n if (activeElement.attachEvent) {\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.addEventListener('propertychange', handlePropertyChange, false);\n }\n}\n\n/**\n * (For IE <=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n\n if (activeElement.detachEvent) {\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n }\n\n activeElement = null;\n activeElementInst = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For IE <=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n if (topLevelType === 'topInput') {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return targetInst;\n }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9-11, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementInst;\n }\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n if (topLevelType === 'topClick') {\n return targetInst;\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst);\n if (inst) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ChangeEventPlugin.js\n// module id = 405\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactRef.js\n// module id = 406\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactOwner.js\n// module id = 407\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/DefaultEventPluginOrder.js\n// module id = 408\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/EnterLeaveEventPlugin.js\n// module id = 409\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {}\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/HTMLDOMPropertyConfig.js\n// module id = 410\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactComponentBrowserEnvironment.js\n// module id = 411\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Danger = {\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n\n};\n\nmodule.exports = Danger;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/Danger.js\n// module id = 412\n// module chunks = 1","'use strict';\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 * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar getMarkupWrap = require('./getMarkupWrap');\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/createNodesFromMarkup.js\n// module id = 413\n// module chunks = 1","'use strict';\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 * @typechecks\n */\n\nvar invariant = require('./invariant');\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/createArrayFromMixed.js\n// module id = 414\n// module chunks = 1","'use strict';\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\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/getMarkupWrap.js\n// module id = 415\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMIDOperations.js\n// module id = 416\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { 'string': true, 'number': true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n};\n\nvar newlineEatingTags = {\n 'listing': true,\n 'pre': true,\n 'textarea': true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n 'menuitem': true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMComponent.js\n// module id = 417\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/AutoFocusUtils.js\n// module id = 418\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar dangerousStyleValue = require('./dangerousStyleValue');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styleValue, component);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styles[styleName], component);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/CSSPropertyOperations.js\n// module id = 419\n// module chunks = 1","/**\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 * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/camelizeStyleName.js\n// module id = 420\n// module chunks = 1","\"use strict\";\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 * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/camelize.js\n// module id = 421\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/dangerousStyleValue.js\n// module id = 422\n// module chunks = 1","/**\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 * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/hyphenateStyleName.js\n// module id = 423\n// module chunks = 1","'use strict';\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 * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/hyphenate.js\n// module id = 424\n// module chunks = 1","/**\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 * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/memoizeStringOnly.js\n// module id = 425\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/quoteAttributeValueForBrowser.js\n// module id = 426\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactEventEmitterMixin.js\n// module id = 427\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getVendorPrefixedEventName.js\n// module id = 428\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n\n if (process.env.NODE_ENV !== 'production') {\n inst._wrapperState.controlled = isControlled(props);\n }\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMInput.js\n// module id = 429\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactPropTypesSecret.js\n// module id = 430\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n\n};\n\nmodule.exports = ReactDOMOption;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMOption.js\n// module id = 431\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMTextarea.js\n// module id = 432\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactMultiChild.js\n// module id = 433\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n ) {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n ) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactChildReconciler.js\n// module id = 434\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactErrorUtils = require('./ReactErrorUtils');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactNodeTypes = require('./ReactNodeTypes');\nvar ReactReconciler = require('./ReactReconciler');\n\nif (process.env.NODE_ENV !== 'production') {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (process.env.NODE_ENV !== 'production') {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (process.env.NODE_ENV !== 'production') {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (process.env.NODE_ENV !== 'production') {\n this._checkContextTypes(Component.childContextTypes, childContext, 'childContext');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (process.env.NODE_ENV !== 'production') {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (process.env.NODE_ENV !== 'production') {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactCompositeComponent.js\n// module id = 435\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getNextDebugID.js\n// module id = 436\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactElementSymbol.js\n// module id = 437\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getIteratorFn.js\n// module id = 438\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/flattenChildren.js\n// module id = 439\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\nvar Transaction = require('./Transaction');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactServerUpdateQueue = require('./ReactServerUpdateQueue');\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactServerRenderingTransaction.js\n// module id = 440\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactServerUpdateQueue.js\n// module id = 441\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMEmptyComponent.js\n// module id = 442\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMTreeTraversal.js\n// module id = 443\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar validateDOMNesting = require('./validateDOMNesting');\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMTextComponent.js\n// module id = 444\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDefaultBatchingStrategy.js\n// module id = 445\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactEventListener.js\n// module id = 446\n// module chunks = 1","/**\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 * @typechecks\n */\n\n'use strict';\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/getUnboundedScrollPosition.js\n// module id = 447\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactHostComponent = require('./ReactHostComponent');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactInjection.js\n// module id = 448\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar Transaction = require('./Transaction');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactReconcileTransaction.js\n// module id = 449\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMSelection.js\n// module id = 450\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getNodeForCharacterOffset.js\n// module id = 451\n// module chunks = 1","'use strict';\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 */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/containsNode.js\n// module id = 452\n// module chunks = 1","'use strict';\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 * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/isTextNode.js\n// module id = 453\n// module chunks = 1","'use strict';\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 * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/isNode.js\n// module id = 454\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SVGDOMPropertyConfig.js\n// module id = 455\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar isTextInputElement = require('./isTextInputElement');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SelectEventPlugin.js\n// module id = 456\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\nvar SyntheticEvent = require('./SyntheticEvent');\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getEventCharCode = require('./getEventCharCode');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SimpleEventPlugin.js\n// module id = 457\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticAnimationEvent.js\n// module id = 458\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticClipboardEvent.js\n// module id = 459\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticFocusEvent.js\n// module id = 460\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\nvar getEventKey = require('./getEventKey');\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticKeyboardEvent.js\n// module id = 461\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/getEventKey.js\n// module id = 462\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticDragEvent.js\n// module id = 463\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticTouchEvent.js\n// module id = 464\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticTransitionEvent.js\n// module id = 465\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX :\n // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY :\n // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY :\n // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/SyntheticWheelEvent.js\n// module id = 466\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMContainerInfo.js\n// module id = 467\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactDOMFeatureFlags.js\n// module id = 468\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactMarkupChecksum.js\n// module id = 469\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/adler32.js\n// module id = 470\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.4.2';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/ReactVersion.js\n// module id = 471\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/findDOMNode.js\n// module id = 472\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-dom/lib/renderSubtreeIntoContainer.js\n// module id = 473\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithThrowingShims.js\n// module id = 474\n// module chunks = 1","/**\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 475\n// module chunks = 1","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-redux/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\n// module id = 476\n// module chunks = 1","/** @license React v16.9.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.suspense_list\"):\n60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.fundamental\"):60117,w=b?Symbol.for(\"react.responder\"):60118;function x(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case t:case r:case d:return u}}}function y(a){return x(a)===m}exports.typeOf=x;exports.AsyncMode=l;\nexports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===v||a.$$typeof===w)};exports.isAsyncMode=function(a){return y(a)||x(a)===l};exports.isConcurrentMode=y;exports.isContextConsumer=function(a){return x(a)===k};exports.isContextProvider=function(a){return x(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return x(a)===n};exports.isFragment=function(a){return x(a)===e};exports.isLazy=function(a){return x(a)===t};exports.isMemo=function(a){return x(a)===r};exports.isPortal=function(a){return x(a)===d};exports.isProfiler=function(a){return x(a)===g};exports.isStrictMode=function(a){return x(a)===f};exports.isSuspense=function(a){return x(a)===p};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-is/cjs/react-is.production.min.js\n// module id = 477\n// module chunks = 1","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash-es/_freeGlobal.js\n// module id = 478\n// module chunks = 1","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/symbol-observable/es/index.js\n// module id = 479\n// module chunks = 1","module.exports = function(originalModule) {\r\n\tif(!originalModule.webpackPolyfill) {\r\n\t\tvar module = Object.create(originalModule);\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"exports\", {\r\n\t\t\tenumerable: true,\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/harmony-module.js\n// module id = 480\n// module chunks = 1","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/symbol-observable/es/ponyfill.js\n// module id = 481\n// module chunks = 1","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/warning/browser.js\n// module id = 482\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createHashHistory = require('history/lib/createHashHistory');\n\nvar _createHashHistory2 = _interopRequireDefault(_createHashHistory);\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nvar _RouterContext = require('./RouterContext');\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _RouterUtils = require('./RouterUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction isDeprecatedHistory(history) {\n return !history || !history.__v2_compatible__;\n}\n\n/* istanbul ignore next: sanity check */\nfunction isUnsupportedHistory(history) {\n // v3 histories expose getCurrentLocation, but aren't currently supported.\n return history && history.getCurrentLocation;\n}\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar func = _React$PropTypes.func;\nvar object = _React$PropTypes.object;\n\n/**\n * A <Router> is a high-level API for automatically setting up\n * a router that renders a <RouterContext> with all the props\n * it needs each time the URL changes.\n */\n\nvar Router = _react2.default.createClass({\n displayName: 'Router',\n\n\n propTypes: {\n history: object,\n children: _InternalPropTypes.routes,\n routes: _InternalPropTypes.routes, // alias for children\n render: func,\n createElement: func,\n onError: func,\n onUpdate: func,\n\n // Deprecated:\n parseQueryString: func,\n stringifyQuery: func,\n\n // PRIVATE: For client-side rehydration of server match.\n matchContext: object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n render: function render(props) {\n return _react2.default.createElement(_RouterContext2.default, props);\n }\n };\n },\n getInitialState: function getInitialState() {\n return {\n location: null,\n routes: null,\n params: null,\n components: null\n };\n },\n handleError: function handleError(error) {\n if (this.props.onError) {\n this.props.onError.call(this, error);\n } else {\n // Throw errors by default so we don't silently swallow them!\n throw error; // This error probably occurred in getChildRoutes or getComponents.\n }\n },\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n var _props = this.props;\n var parseQueryString = _props.parseQueryString;\n var stringifyQuery = _props.stringifyQuery;\n\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(!(parseQueryString || stringifyQuery), '`parseQueryString` and `stringifyQuery` are deprecated. Please create a custom history. http://tiny.cc/router-customquerystring') : void 0;\n\n var _createRouterObjects = this.createRouterObjects();\n\n var history = _createRouterObjects.history;\n var transitionManager = _createRouterObjects.transitionManager;\n var router = _createRouterObjects.router;\n\n\n this._unlisten = transitionManager.listen(function (error, state) {\n if (error) {\n _this.handleError(error);\n } else {\n _this.setState(state, _this.props.onUpdate);\n }\n });\n\n this.history = history;\n this.router = router;\n },\n createRouterObjects: function createRouterObjects() {\n var matchContext = this.props.matchContext;\n\n if (matchContext) {\n return matchContext;\n }\n\n var history = this.props.history;\n var _props2 = this.props;\n var routes = _props2.routes;\n var children = _props2.children;\n\n\n !!isUnsupportedHistory(history) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You have provided a history object created with history v3.x. ' + 'This version of React Router is not compatible with v3 history ' + 'objects. Please use history v2.x instead.') : (0, _invariant2.default)(false) : void 0;\n\n if (isDeprecatedHistory(history)) {\n history = this.wrapDeprecatedHistory(history);\n }\n\n var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes || children));\n var router = (0, _RouterUtils.createRouterObject)(history, transitionManager);\n var routingHistory = (0, _RouterUtils.createRoutingHistory)(history, transitionManager);\n\n return { history: routingHistory, transitionManager: transitionManager, router: router };\n },\n wrapDeprecatedHistory: function wrapDeprecatedHistory(history) {\n var _props3 = this.props;\n var parseQueryString = _props3.parseQueryString;\n var stringifyQuery = _props3.stringifyQuery;\n\n\n var createHistory = void 0;\n if (history) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'It appears you have provided a deprecated history object to `<Router/>`, please use a history provided by ' + 'React Router with `import { browserHistory } from \\'react-router\\'` or `import { hashHistory } from \\'react-router\\'`. ' + 'If you are using a custom history please create it with `useRouterHistory`, see http://tiny.cc/router-usinghistory for details.') : void 0;\n createHistory = function createHistory() {\n return history;\n };\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, '`Router` no longer defaults the history prop to hash history. Please use the `hashHistory` singleton instead. http://tiny.cc/router-defaulthistory') : void 0;\n createHistory = _createHashHistory2.default;\n }\n\n return (0, _useQueries2.default)(createHistory)({ parseQueryString: parseQueryString, stringifyQuery: stringifyQuery });\n },\n\n\n /* istanbul ignore next: sanity check */\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(nextProps.history === this.props.history, 'You cannot change <Router history>; it will be ignored') : void 0;\n\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)((nextProps.routes || nextProps.children) === (this.props.routes || this.props.children), 'You cannot change <Router routes>; it will be ignored') : void 0;\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this._unlisten) this._unlisten();\n },\n render: function render() {\n var _state = this.state;\n var location = _state.location;\n var routes = _state.routes;\n var params = _state.params;\n var components = _state.components;\n var _props4 = this.props;\n var createElement = _props4.createElement;\n var render = _props4.render;\n\n var props = _objectWithoutProperties(_props4, ['createElement', 'render']);\n\n if (location == null) return null; // Async match\n\n // Only forward non-Router-specific props to routing context, as those are\n // the only ones that might be custom routing context props.\n Object.keys(Router.propTypes).forEach(function (propType) {\n return delete props[propType];\n });\n\n return render(_extends({}, props, {\n history: this.history,\n router: this.router,\n location: location,\n routes: routes,\n params: params,\n components: components,\n createElement: createElement\n }));\n }\n});\n\nexports.default = Router;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/Router.js\n// module id = 483\n// module chunks = 1","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/deep-equal/index.js\n// module id = 484\n// module chunks = 1","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-keys/implementation.js\n// module id = 485\n// module chunks = 1","'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar toStr = Object.prototype.toString;\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn toStr.call(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\ttoStr.call(value) !== '[object Array]' &&\n\t\ttoStr.call(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-arguments/index.js\n// module id = 486\n// module chunks = 1","\"use strict\";\n\n/* https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.is */\n\nvar NumberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t} else if (a === b) {\n\t\treturn true;\n\t} else if (NumberIsNaN(a) && NumberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-is/index.js\n// module id = 487\n// module chunks = 1","'use strict';\n\nvar has = require('has');\nvar regexExec = RegExp.prototype.exec;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar tryRegexExecCall = function tryRegexExec(value) {\n\ttry {\n\t\tvar lastIndex = value.lastIndex;\n\t\tvalue.lastIndex = 0;\n\n\t\tregexExec.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\tvalue.lastIndex = lastIndex;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar regexClass = '[object RegExp]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isRegex(value) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (!hasToStringTag) {\n\t\treturn toStr.call(value) === regexClass;\n\t}\n\n\tvar descriptor = gOPD(value, 'lastIndex');\n\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\tif (!hasLastIndexDataProperty) {\n\t\treturn false;\n\t}\n\n\treturn tryRegexExecCall(value);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-regex/index.js\n// module id = 488\n// module chunks = 1","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/has/src/index.js\n// module id = 489\n// module chunks = 1","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/function-bind/index.js\n// module id = 490\n// module chunks = 1","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/function-bind/implementation.js\n// module id = 491\n// module chunks = 1","'use strict';\n\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = Function.call.bind(implementation);\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/regexp.prototype.flags/index.js\n// module id = 492\n// module chunks = 1","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/regexp.prototype.flags/shim.js\n// module id = 493\n// module chunks = 1","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateObject(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) { return false; }\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-date-object/index.js\n// module id = 494\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\nvar _slice = Array.prototype.slice;\nexports.loopAsync = loopAsync;\n\nfunction loopAsync(turns, work, callback) {\n var currentTurn = 0,\n isDone = false;\n var sync = false,\n hasNext = false,\n doneArgs = undefined;\n\n function done() {\n isDone = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n doneArgs = [].concat(_slice.call(arguments));\n return;\n }\n\n callback.apply(this, arguments);\n }\n\n function next() {\n if (isDone) {\n return;\n }\n\n hasNext = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n return;\n }\n\n sync = true;\n\n while (!isDone && currentTurn < turns && hasNext) {\n hasNext = false;\n work.call(this, currentTurn++, next, done);\n }\n\n sync = false;\n\n if (isDone) {\n // This means the loop finished synchronously.\n callback.apply(this, doneArgs);\n return;\n }\n\n if (currentTurn >= turns && hasNext) {\n isDone = true;\n callback();\n }\n }\n\n next();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/AsyncUtils.js\n// module id = 495\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _Actions = require('./Actions');\n\nvar _PathUtils = require('./PathUtils');\n\nfunction createLocation() {\n var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];\n\n if (typeof location === 'string') location = _PathUtils.parsePath(location);\n\n if (typeof action === 'object') {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'The state (2nd) argument to createLocation is deprecated; use a ' + 'location descriptor instead') : undefined;\n\n location = _extends({}, location, { state: action });\n\n action = key || _Actions.POP;\n key = _fourthArg;\n }\n\n var pathname = location.pathname || '/';\n var search = location.search || '';\n var hash = location.hash || '';\n var state = location.state || null;\n\n return {\n pathname: pathname,\n search: search,\n hash: hash,\n state: state,\n action: action,\n key: key\n };\n}\n\nexports['default'] = createLocation;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/createLocation.js\n// module id = 496\n// module chunks = 1","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str) {\n\tif (typeof str !== 'string') {\n\t\treturn {};\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn {};\n\t}\n\n\treturn str.split('&').reduce(function (ret, param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\tkey = decodeURIComponent(key);\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tif (!ret.hasOwnProperty(key)) {\n\t\t\tret[key] = val;\n\t\t} else if (Array.isArray(ret[key])) {\n\t\t\tret[key].push(val);\n\t\t} else {\n\t\t\tret[key] = [ret[key], val];\n\t\t}\n\n\t\treturn ret;\n\t}, {});\n};\n\nexports.stringify = function (obj) {\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn key;\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\treturn val.slice().sort().map(function (val2) {\n\t\t\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val2);\n\t\t\t}).join('&');\n\t\t}\n\n\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/query-string/index.js\n// module id = 497\n// module chunks = 1","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/strict-uri-encode/index.js\n// module id = 498\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _PatternUtils = require('./PatternUtils');\n\nfunction routeParamsChanged(route, prevState, nextState) {\n if (!route.path) return false;\n\n var paramNames = (0, _PatternUtils.getParamNames)(route.path);\n\n return paramNames.some(function (paramName) {\n return prevState.params[paramName] !== nextState.params[paramName];\n });\n}\n\n/**\n * Returns an object of { leaveRoutes, changeRoutes, enterRoutes } determined by\n * the change from prevState to nextState. We leave routes if either\n * 1) they are not in the next state or 2) they are in the next state\n * but their params have changed (i.e. /users/123 => /users/456).\n *\n * leaveRoutes are ordered starting at the leaf route of the tree\n * we're leaving up to the common parent route. enterRoutes are ordered\n * from the top of the tree we're entering down to the leaf route.\n *\n * changeRoutes are any routes that didn't leave or enter during\n * the transition.\n */\nfunction computeChangedRoutes(prevState, nextState) {\n var prevRoutes = prevState && prevState.routes;\n var nextRoutes = nextState.routes;\n\n var leaveRoutes = void 0,\n changeRoutes = void 0,\n enterRoutes = void 0;\n if (prevRoutes) {\n (function () {\n var parentIsLeaving = false;\n leaveRoutes = prevRoutes.filter(function (route) {\n if (parentIsLeaving) {\n return true;\n } else {\n var isLeaving = nextRoutes.indexOf(route) === -1 || routeParamsChanged(route, prevState, nextState);\n if (isLeaving) parentIsLeaving = true;\n return isLeaving;\n }\n });\n\n // onLeave hooks start at the leaf route.\n leaveRoutes.reverse();\n\n enterRoutes = [];\n changeRoutes = [];\n\n nextRoutes.forEach(function (route) {\n var isNew = prevRoutes.indexOf(route) === -1;\n var paramsChanged = leaveRoutes.indexOf(route) !== -1;\n\n if (isNew || paramsChanged) enterRoutes.push(route);else changeRoutes.push(route);\n });\n })();\n } else {\n leaveRoutes = [];\n changeRoutes = [];\n enterRoutes = nextRoutes;\n }\n\n return {\n leaveRoutes: leaveRoutes,\n changeRoutes: changeRoutes,\n enterRoutes: enterRoutes\n };\n}\n\nexports.default = computeChangedRoutes;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/computeChangedRoutes.js\n// module id = 499\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.runEnterHooks = runEnterHooks;\nexports.runChangeHooks = runChangeHooks;\nexports.runLeaveHooks = runLeaveHooks;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createTransitionHook(hook, route, asyncArity) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n hook.apply(route, args);\n\n if (hook.length < asyncArity) {\n var callback = args[args.length - 1];\n // Assume hook executes synchronously and\n // automatically call the callback.\n callback();\n }\n };\n}\n\nfunction getEnterHooks(routes) {\n return routes.reduce(function (hooks, route) {\n if (route.onEnter) hooks.push(createTransitionHook(route.onEnter, route, 3));\n\n return hooks;\n }, []);\n}\n\nfunction getChangeHooks(routes) {\n return routes.reduce(function (hooks, route) {\n if (route.onChange) hooks.push(createTransitionHook(route.onChange, route, 4));\n return hooks;\n }, []);\n}\n\nfunction runTransitionHooks(length, iter, callback) {\n if (!length) {\n callback();\n return;\n }\n\n var redirectInfo = void 0;\n function replace(location, deprecatedPathname, deprecatedQuery) {\n if (deprecatedPathname) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, '`replaceState(state, pathname, query) is deprecated; use `replace(location)` with a location descriptor instead. http://tiny.cc/router-isActivedeprecated') : void 0;\n redirectInfo = {\n pathname: deprecatedPathname,\n query: deprecatedQuery,\n state: location\n };\n\n return;\n }\n\n redirectInfo = location;\n }\n\n (0, _AsyncUtils.loopAsync)(length, function (index, next, done) {\n iter(index, replace, function (error) {\n if (error || redirectInfo) {\n done(error, redirectInfo); // No need to continue.\n } else {\n next();\n }\n });\n }, callback);\n}\n\n/**\n * Runs all onEnter hooks in the given array of routes in order\n * with onEnter(nextState, replace, callback) and calls\n * callback(error, redirectInfo) when finished. The first hook\n * to use replace short-circuits the loop.\n *\n * If a hook needs to run asynchronously, it may use the callback\n * function. However, doing so will cause the transition to pause,\n * which could lead to a non-responsive UI if the hook is slow.\n */\nfunction runEnterHooks(routes, nextState, callback) {\n var hooks = getEnterHooks(routes);\n return runTransitionHooks(hooks.length, function (index, replace, next) {\n hooks[index](nextState, replace, next);\n }, callback);\n}\n\n/**\n * Runs all onChange hooks in the given array of routes in order\n * with onChange(prevState, nextState, replace, callback) and calls\n * callback(error, redirectInfo) when finished. The first hook\n * to use replace short-circuits the loop.\n *\n * If a hook needs to run asynchronously, it may use the callback\n * function. However, doing so will cause the transition to pause,\n * which could lead to a non-responsive UI if the hook is slow.\n */\nfunction runChangeHooks(routes, state, nextState, callback) {\n var hooks = getChangeHooks(routes);\n return runTransitionHooks(hooks.length, function (index, replace, next) {\n hooks[index](state, nextState, replace, next);\n }, callback);\n}\n\n/**\n * Runs all onLeave hooks in the given array of routes in order.\n */\nfunction runLeaveHooks(routes, prevState) {\n for (var i = 0, len = routes.length; i < len; ++i) {\n if (routes[i].onLeave) routes[i].onLeave.call(routes[i], prevState);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/TransitionUtils.js\n// module id = 500\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nexports.default = isActive;\n\nvar _PatternUtils = require('./PatternUtils');\n\nfunction deepEqual(a, b) {\n if (a == b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return deepEqual(item, b[index]);\n });\n }\n\n if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {\n for (var p in a) {\n if (!Object.prototype.hasOwnProperty.call(a, p)) {\n continue;\n }\n\n if (a[p] === undefined) {\n if (b[p] !== undefined) {\n return false;\n }\n } else if (!Object.prototype.hasOwnProperty.call(b, p)) {\n return false;\n } else if (!deepEqual(a[p], b[p])) {\n return false;\n }\n }\n\n return true;\n }\n\n return String(a) === String(b);\n}\n\n/**\n * Returns true if the current pathname matches the supplied one, net of\n * leading and trailing slash normalization. This is sufficient for an\n * indexOnly route match.\n */\nfunction pathIsActive(pathname, currentPathname) {\n // Normalize leading slash for consistency. Leading slash on pathname has\n // already been normalized in isActive. See caveat there.\n if (currentPathname.charAt(0) !== '/') {\n currentPathname = '/' + currentPathname;\n }\n\n // Normalize the end of both path names too. Maybe `/foo/` shouldn't show\n // `/foo` as active, but in this case, we would already have failed the\n // match.\n if (pathname.charAt(pathname.length - 1) !== '/') {\n pathname += '/';\n }\n if (currentPathname.charAt(currentPathname.length - 1) !== '/') {\n currentPathname += '/';\n }\n\n return currentPathname === pathname;\n}\n\n/**\n * Returns true if the given pathname matches the active routes and params.\n */\nfunction routeIsActive(pathname, routes, params) {\n var remainingPathname = pathname,\n paramNames = [],\n paramValues = [];\n\n // for...of would work here but it's probably slower post-transpilation.\n for (var i = 0, len = routes.length; i < len; ++i) {\n var route = routes[i];\n var pattern = route.path || '';\n\n if (pattern.charAt(0) === '/') {\n remainingPathname = pathname;\n paramNames = [];\n paramValues = [];\n }\n\n if (remainingPathname !== null && pattern) {\n var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n if (matched) {\n remainingPathname = matched.remainingPathname;\n paramNames = [].concat(paramNames, matched.paramNames);\n paramValues = [].concat(paramValues, matched.paramValues);\n } else {\n remainingPathname = null;\n }\n\n if (remainingPathname === '') {\n // We have an exact match on the route. Just check that all the params\n // match.\n // FIXME: This doesn't work on repeated params.\n return paramNames.every(function (paramName, index) {\n return String(paramValues[index]) === String(params[paramName]);\n });\n }\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if all key/value pairs in the given query are\n * currently active.\n */\nfunction queryIsActive(query, activeQuery) {\n if (activeQuery == null) return query == null;\n\n if (query == null) return true;\n\n return deepEqual(query, activeQuery);\n}\n\n/**\n * Returns true if a <Link> to the given pathname/query combination is\n * currently active.\n */\nfunction isActive(_ref, indexOnly, currentLocation, routes, params) {\n var pathname = _ref.pathname;\n var query = _ref.query;\n\n if (currentLocation == null) return false;\n\n // TODO: This is a bit ugly. It keeps around support for treating pathnames\n // without preceding slashes as absolute paths, but possibly also works\n // around the same quirks with basenames as in matchRoutes.\n if (pathname.charAt(0) !== '/') {\n pathname = '/' + pathname;\n }\n\n if (!pathIsActive(pathname, currentLocation.pathname)) {\n // The path check is necessary and sufficient for indexOnly, but otherwise\n // we still need to check the routes.\n if (indexOnly || !routeIsActive(pathname, routes, params)) {\n return false;\n }\n }\n\n return queryIsActive(query, currentLocation.query);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/isActive.js\n// module id = 501\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _makeStateWithLocation = require('./makeStateWithLocation');\n\nvar _makeStateWithLocation2 = _interopRequireDefault(_makeStateWithLocation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getComponentsForRoute(nextState, route, callback) {\n if (route.component || route.components) {\n callback(null, route.component || route.components);\n return;\n }\n\n var getComponent = route.getComponent || route.getComponents;\n if (!getComponent) {\n callback();\n return;\n }\n\n var location = nextState.location;\n\n var nextStateWithLocation = (0, _makeStateWithLocation2.default)(nextState, location);\n\n getComponent.call(route, nextStateWithLocation, callback);\n}\n\n/**\n * Asynchronously fetches all components needed for the given router\n * state and calls callback(error, components) when finished.\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getComponents method.\n */\nfunction getComponents(nextState, callback) {\n (0, _AsyncUtils.mapAsync)(nextState.routes, function (route, index, callback) {\n getComponentsForRoute(nextState, route, callback);\n }, callback);\n}\n\nexports.default = getComponents;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/getComponents.js\n// module id = 502\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nexports.default = matchRoutes;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _makeStateWithLocation = require('./makeStateWithLocation');\n\nvar _makeStateWithLocation2 = _interopRequireDefault(_makeStateWithLocation);\n\nvar _PatternUtils = require('./PatternUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _RouteUtils = require('./RouteUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getChildRoutes(route, location, paramNames, paramValues, callback) {\n if (route.childRoutes) {\n return [null, route.childRoutes];\n }\n if (!route.getChildRoutes) {\n return [];\n }\n\n var sync = true,\n result = void 0;\n\n var partialNextState = {\n location: location,\n params: createParams(paramNames, paramValues)\n };\n\n var partialNextStateWithLocation = (0, _makeStateWithLocation2.default)(partialNextState, location);\n\n route.getChildRoutes(partialNextStateWithLocation, function (error, childRoutes) {\n childRoutes = !error && (0, _RouteUtils.createRoutes)(childRoutes);\n if (sync) {\n result = [error, childRoutes];\n return;\n }\n\n callback(error, childRoutes);\n });\n\n sync = false;\n return result; // Might be undefined.\n}\n\nfunction getIndexRoute(route, location, paramNames, paramValues, callback) {\n if (route.indexRoute) {\n callback(null, route.indexRoute);\n } else if (route.getIndexRoute) {\n var partialNextState = {\n location: location,\n params: createParams(paramNames, paramValues)\n };\n\n var partialNextStateWithLocation = (0, _makeStateWithLocation2.default)(partialNextState, location);\n\n route.getIndexRoute(partialNextStateWithLocation, function (error, indexRoute) {\n callback(error, !error && (0, _RouteUtils.createRoutes)(indexRoute)[0]);\n });\n } else if (route.childRoutes) {\n (function () {\n var pathless = route.childRoutes.filter(function (childRoute) {\n return !childRoute.path;\n });\n\n (0, _AsyncUtils.loopAsync)(pathless.length, function (index, next, done) {\n getIndexRoute(pathless[index], location, paramNames, paramValues, function (error, indexRoute) {\n if (error || indexRoute) {\n var routes = [pathless[index]].concat(Array.isArray(indexRoute) ? indexRoute : [indexRoute]);\n done(error, routes);\n } else {\n next();\n }\n });\n }, function (err, routes) {\n callback(null, routes);\n });\n })();\n } else {\n callback();\n }\n}\n\nfunction assignParams(params, paramNames, paramValues) {\n return paramNames.reduce(function (params, paramName, index) {\n var paramValue = paramValues && paramValues[index];\n\n if (Array.isArray(params[paramName])) {\n params[paramName].push(paramValue);\n } else if (paramName in params) {\n params[paramName] = [params[paramName], paramValue];\n } else {\n params[paramName] = paramValue;\n }\n\n return params;\n }, params);\n}\n\nfunction createParams(paramNames, paramValues) {\n return assignParams({}, paramNames, paramValues);\n}\n\nfunction matchRouteDeep(route, location, remainingPathname, paramNames, paramValues, callback) {\n var pattern = route.path || '';\n\n if (pattern.charAt(0) === '/') {\n remainingPathname = location.pathname;\n paramNames = [];\n paramValues = [];\n }\n\n // Only try to match the path if the route actually has a pattern, and if\n // we're not just searching for potential nested absolute paths.\n if (remainingPathname !== null && pattern) {\n try {\n var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n if (matched) {\n remainingPathname = matched.remainingPathname;\n paramNames = [].concat(paramNames, matched.paramNames);\n paramValues = [].concat(paramValues, matched.paramValues);\n } else {\n remainingPathname = null;\n }\n } catch (error) {\n callback(error);\n }\n\n // By assumption, pattern is non-empty here, which is the prerequisite for\n // actually terminating a match.\n if (remainingPathname === '') {\n var _ret2 = function () {\n var match = {\n routes: [route],\n params: createParams(paramNames, paramValues)\n };\n\n getIndexRoute(route, location, paramNames, paramValues, function (error, indexRoute) {\n if (error) {\n callback(error);\n } else {\n if (Array.isArray(indexRoute)) {\n var _match$routes;\n\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(indexRoute.every(function (route) {\n return !route.path;\n }), 'Index routes should not have paths') : void 0;\n (_match$routes = match.routes).push.apply(_match$routes, indexRoute);\n } else if (indexRoute) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(!indexRoute.path, 'Index routes should not have paths') : void 0;\n match.routes.push(indexRoute);\n }\n\n callback(null, match);\n }\n });\n\n return {\n v: void 0\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n }\n }\n\n if (remainingPathname != null || route.childRoutes) {\n // Either a) this route matched at least some of the path or b)\n // we don't have to load this route's children asynchronously. In\n // either case continue checking for matches in the subtree.\n var onChildRoutes = function onChildRoutes(error, childRoutes) {\n if (error) {\n callback(error);\n } else if (childRoutes) {\n // Check the child routes to see if any of them match.\n matchRoutes(childRoutes, location, function (error, match) {\n if (error) {\n callback(error);\n } else if (match) {\n // A child route matched! Augment the match and pass it up the stack.\n match.routes.unshift(route);\n callback(null, match);\n } else {\n callback();\n }\n }, remainingPathname, paramNames, paramValues);\n } else {\n callback();\n }\n };\n\n var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);\n if (result) {\n onChildRoutes.apply(undefined, result);\n }\n } else {\n callback();\n }\n}\n\n/**\n * Asynchronously matches the given location to a set of routes and calls\n * callback(error, state) when finished. The state object will have the\n * following properties:\n *\n * - routes An array of routes that matched, in hierarchical order\n * - params An object of URL parameters\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getChildRoutes method.\n */\nfunction matchRoutes(routes, location, callback, remainingPathname) {\n var paramNames = arguments.length <= 4 || arguments[4] === undefined ? [] : arguments[4];\n var paramValues = arguments.length <= 5 || arguments[5] === undefined ? [] : arguments[5];\n\n if (remainingPathname === undefined) {\n // TODO: This is a little bit ugly, but it works around a quirk in history\n // that strips the leading slash from pathnames when using basenames with\n // trailing slashes.\n if (location.pathname.charAt(0) !== '/') {\n location = _extends({}, location, {\n pathname: '/' + location.pathname\n });\n }\n remainingPathname = location.pathname;\n }\n\n (0, _AsyncUtils.loopAsync)(routes.length, function (index, next, done) {\n matchRouteDeep(routes[index], location, remainingPathname, paramNames, paramValues, function (error, match) {\n if (error || match) {\n done(error, match);\n } else {\n next();\n }\n });\n }, callback);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/matchRoutes.js\n// module id = 503\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _PatternUtils = require('./PatternUtils');\n\n/**\n * Extracts an object of params the given route cares about from\n * the given params object.\n */\nfunction getRouteParams(route, params) {\n var routeParams = {};\n\n if (!route.path) return routeParams;\n\n (0, _PatternUtils.getParamNames)(route.path).forEach(function (p) {\n if (Object.prototype.hasOwnProperty.call(params, p)) {\n routeParams[p] = params[p];\n }\n });\n\n return routeParams;\n}\n\nexports.default = getRouteParams;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/getRouteParams.js\n// module id = 504\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Link = require('./Link');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An <IndexLink> is used to link to an <IndexRoute>.\n */\nvar IndexLink = _react2.default.createClass({\n displayName: 'IndexLink',\n render: function render() {\n return _react2.default.createElement(_Link2.default, _extends({}, this.props, { onlyActiveOnIndex: true }));\n }\n});\n\nexports.default = IndexLink;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/IndexLink.js\n// module id = 505\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = withRouter;\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _hoistNonReactStatics = require('hoist-non-react-statics');\n\nvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\nvar _PropTypes = require('./PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nfunction withRouter(WrappedComponent, options) {\n var withRef = options && options.withRef;\n\n var WithRouter = _react2.default.createClass({\n displayName: 'WithRouter',\n\n contextTypes: { router: _PropTypes.routerShape },\n propTypes: { router: _PropTypes.routerShape },\n\n getWrappedInstance: function getWrappedInstance() {\n !withRef ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'To access the wrapped instance, you need to specify ' + '`{ withRef: true }` as the second argument of the withRouter() call.') : (0, _invariant2.default)(false) : void 0;\n\n return this.wrappedInstance;\n },\n render: function render() {\n var _this = this;\n\n var router = this.props.router || this.context.router;\n var props = _extends({}, this.props, { router: router });\n\n if (withRef) {\n props.ref = function (c) {\n _this.wrappedInstance = c;\n };\n }\n\n return _react2.default.createElement(WrappedComponent, props);\n }\n });\n\n WithRouter.displayName = 'withRouter(' + getDisplayName(WrappedComponent) + ')';\n WithRouter.WrappedComponent = WrappedComponent;\n\n return (0, _hoistNonReactStatics2.default)(WithRouter, WrappedComponent);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/withRouter.js\n// module id = 506\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Redirect = require('./Redirect');\n\nvar _Redirect2 = _interopRequireDefault(_Redirect);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar string = _React$PropTypes.string;\nvar object = _React$PropTypes.object;\n\n/**\n * An <IndexRedirect> is used to redirect from an indexRoute.\n */\n\nvar IndexRedirect = _react2.default.createClass({\n displayName: 'IndexRedirect',\n\n\n statics: {\n createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n /* istanbul ignore else: sanity check */\n if (parentRoute) {\n parentRoute.indexRoute = _Redirect2.default.createRouteFromReactElement(element);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRedirect> does not make sense at the root of your route config') : void 0;\n }\n }\n },\n\n propTypes: {\n to: string.isRequired,\n query: object,\n state: object,\n onEnter: _InternalPropTypes.falsy,\n children: _InternalPropTypes.falsy\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n !false ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<IndexRedirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = IndexRedirect;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/IndexRedirect.js\n// module id = 507\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar func = _react2.default.PropTypes.func;\n\n/**\n * An <IndexRoute> is used to specify its parent's <Route indexRoute> in\n * a JSX route config.\n */\n\nvar IndexRoute = _react2.default.createClass({\n displayName: 'IndexRoute',\n\n\n statics: {\n createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n /* istanbul ignore else: sanity check */\n if (parentRoute) {\n parentRoute.indexRoute = (0, _RouteUtils.createRouteFromReactElement)(element);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRoute> does not make sense at the root of your route config') : void 0;\n }\n }\n },\n\n propTypes: {\n path: _InternalPropTypes.falsy,\n component: _InternalPropTypes.component,\n components: _InternalPropTypes.components,\n getComponent: func,\n getComponents: func\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n !false ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<IndexRoute> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = IndexRoute;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/IndexRoute.js\n// module id = 508\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes;\nvar string = _React$PropTypes.string;\nvar func = _React$PropTypes.func;\n\n/**\n * A <Route> is used to declare which components are rendered to the\n * page when the URL matches a given pattern.\n *\n * Routes are arranged in a nested tree structure. When a new URL is\n * requested, the tree is searched depth-first to find a route whose\n * path matches the URL. When one is found, all routes in the tree\n * that lead to it are considered \"active\" and their components are\n * rendered into the DOM, nested in the same order as in the tree.\n */\n\nvar Route = _react2.default.createClass({\n displayName: 'Route',\n\n\n statics: {\n createRouteFromReactElement: _RouteUtils.createRouteFromReactElement\n },\n\n propTypes: {\n path: string,\n component: _InternalPropTypes.component,\n components: _InternalPropTypes.components,\n getComponent: func,\n getComponents: func\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n !false ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<Route> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = Route;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/Route.js\n// module id = 509\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A mixin that adds the \"history\" instance variable to components.\n */\nvar History = {\n\n contextTypes: {\n history: _InternalPropTypes.history\n },\n\n componentWillMount: function componentWillMount() {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'the `History` mixin is deprecated, please access `context.router` with your own `contextTypes`. http://tiny.cc/router-historymixin') : void 0;\n this.history = this.context.history;\n }\n};\n\nexports.default = History;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/History.js\n// module id = 510\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar object = _react2.default.PropTypes.object;\n\n/**\n * The Lifecycle mixin adds the routerWillLeave lifecycle method to a\n * component that may be used to cancel a transition or prompt the user\n * for confirmation.\n *\n * On standard transitions, routerWillLeave receives a single argument: the\n * location we're transitioning to. To cancel the transition, return false.\n * To prompt the user for confirmation, return a prompt message (string).\n *\n * During the beforeunload event (assuming you're using the useBeforeUnload\n * history enhancer), routerWillLeave does not receive a location object\n * because it isn't possible for us to know the location we're transitioning\n * to. In this case routerWillLeave must return a prompt message to prevent\n * the user from closing the window/tab.\n */\n\nvar Lifecycle = {\n\n contextTypes: {\n history: object.isRequired,\n // Nested children receive the route as context, either\n // set by the route component using the RouteContext mixin\n // or by some other ancestor.\n route: object\n },\n\n propTypes: {\n // Route components receive the route object as a prop.\n route: object\n },\n\n componentDidMount: function componentDidMount() {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'the `Lifecycle` mixin is deprecated, please use `context.router.setRouteLeaveHook(route, hook)`. http://tiny.cc/router-lifecyclemixin') : void 0;\n !this.routerWillLeave ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'The Lifecycle mixin requires you to define a routerWillLeave method') : (0, _invariant2.default)(false) : void 0;\n\n var route = this.props.route || this.context.route;\n\n !route ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'The Lifecycle mixin must be used on either a) a <Route component> or ' + 'b) a descendant of a <Route component> that uses the RouteContext mixin') : (0, _invariant2.default)(false) : void 0;\n\n this._unlistenBeforeLeavingRoute = this.context.history.listenBeforeLeavingRoute(route, this.routerWillLeave);\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this._unlistenBeforeLeavingRoute) this._unlistenBeforeLeavingRoute();\n }\n};\n\nexports.default = Lifecycle;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/Lifecycle.js\n// module id = 511\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar object = _react2.default.PropTypes.object;\n\n/**\n * The RouteContext mixin provides a convenient way for route\n * components to set the route in context. This is needed for\n * routes that render elements that want to use the Lifecycle\n * mixin to prevent transitions.\n */\n\nvar RouteContext = {\n\n propTypes: {\n route: object.isRequired\n },\n\n childContextTypes: {\n route: object.isRequired\n },\n\n getChildContext: function getChildContext() {\n return {\n route: this.props.route\n };\n },\n componentWillMount: function componentWillMount() {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'The `RouteContext` mixin is deprecated. You can provide `this.props.route` on context with your own `contextTypes`. http://tiny.cc/router-routecontextmixin') : void 0;\n }\n};\n\nexports.default = RouteContext;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/RouteContext.js\n// module id = 512\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know about routing.\n *\n * Enhances history objects with the following methods:\n *\n * - listen((error, nextState) => {})\n * - listenBeforeLeavingRoute(route, (nextLocation) => {})\n * - match(location, (error, redirectLocation, nextState) => {})\n * - isActive(pathname, query, indexOnly=false)\n */\nfunction useRoutes(createHistory) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, '`useRoutes` is deprecated. Please use `createTransitionManager` instead.') : void 0;\n\n return function () {\n var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var routes = _ref.routes;\n\n var options = _objectWithoutProperties(_ref, ['routes']);\n\n var history = (0, _useQueries2.default)(createHistory)(options);\n var transitionManager = (0, _createTransitionManager2.default)(history, routes);\n return _extends({}, history, transitionManager);\n };\n}\n\nexports.default = useRoutes;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/useRoutes.js\n// module id = 513\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RouterContext = require('./RouterContext');\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RoutingContext = _react2.default.createClass({\n displayName: 'RoutingContext',\n componentWillMount: function componentWillMount() {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, '`RoutingContext` has been renamed to `RouterContext`. Please use `import { RouterContext } from \\'react-router\\'`. http://tiny.cc/router-routercontext') : void 0;\n },\n render: function render() {\n return _react2.default.createElement(_RouterContext2.default, this.props);\n }\n});\n\nexports.default = RoutingContext;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/RoutingContext.js\n// module id = 514\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _Actions = require('history/lib/Actions');\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _createMemoryHistory = require('./createMemoryHistory');\n\nvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _RouterUtils = require('./RouterUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/**\n * A high-level API to be used for server-side rendering.\n *\n * This function matches a location to a set of routes and calls\n * callback(error, redirectLocation, renderProps) when finished.\n *\n * Note: You probably don't want to use this in a browser unless you're using\n * server-side rendering with async routes.\n */\nfunction match(_ref, callback) {\n var history = _ref.history;\n var routes = _ref.routes;\n var location = _ref.location;\n\n var options = _objectWithoutProperties(_ref, ['history', 'routes', 'location']);\n\n !(history || location) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'match needs a history or a location') : (0, _invariant2.default)(false) : void 0;\n\n history = history ? history : (0, _createMemoryHistory2.default)(options);\n var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes));\n\n var unlisten = void 0;\n\n if (location) {\n // Allow match({ location: '/the/path', ... })\n location = history.createLocation(location);\n } else {\n // Pick up the location from the history via synchronous history.listen\n // call if needed.\n unlisten = history.listen(function (historyLocation) {\n location = historyLocation;\n });\n }\n\n var router = (0, _RouterUtils.createRouterObject)(history, transitionManager);\n history = (0, _RouterUtils.createRoutingHistory)(history, transitionManager);\n\n transitionManager.match(location, function (error, redirectLocation, nextState) {\n callback(error, redirectLocation && router.createLocation(redirectLocation, _Actions.REPLACE), nextState && _extends({}, nextState, {\n history: history,\n router: router,\n matchContext: { history: history, transitionManager: transitionManager, router: router }\n }));\n\n // Defer removing the listener to here to prevent DOM histories from having\n // to unwind DOM event listeners unnecessarily, in case callback renders a\n // <Router> and attaches another history listener.\n if (unlisten) {\n unlisten();\n }\n });\n}\n\nexports.default = match;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/match.js\n// module id = 515\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _Actions = require('./Actions');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createStateStorage(entries) {\n return entries.filter(function (entry) {\n return entry.state;\n }).reduce(function (memo, entry) {\n memo[entry.key] = entry.state;\n return memo;\n }, {});\n}\n\nfunction createMemoryHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n if (Array.isArray(options)) {\n options = { entries: options };\n } else if (typeof options === 'string') {\n options = { entries: [options] };\n }\n\n var history = _createHistory2['default'](_extends({}, options, {\n getCurrentLocation: getCurrentLocation,\n finishTransition: finishTransition,\n saveState: saveState,\n go: go\n }));\n\n var _options = options;\n var entries = _options.entries;\n var current = _options.current;\n\n if (typeof entries === 'string') {\n entries = [entries];\n } else if (!Array.isArray(entries)) {\n entries = ['/'];\n }\n\n entries = entries.map(function (entry) {\n var key = history.createKey();\n\n if (typeof entry === 'string') return { pathname: entry, key: key };\n\n if (typeof entry === 'object' && entry) return _extends({}, entry, { key: key });\n\n !false ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Unable to create history entry from %s', entry) : _invariant2['default'](false) : undefined;\n });\n\n if (current == null) {\n current = entries.length - 1;\n } else {\n !(current >= 0 && current < entries.length) ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : _invariant2['default'](false) : undefined;\n }\n\n var storage = createStateStorage(entries);\n\n function saveState(key, state) {\n storage[key] = state;\n }\n\n function readState(key) {\n return storage[key];\n }\n\n function getCurrentLocation() {\n var entry = entries[current];\n var basename = entry.basename;\n var pathname = entry.pathname;\n var search = entry.search;\n\n var path = (basename || '') + pathname + (search || '');\n\n var key = undefined,\n state = undefined;\n if (entry.key) {\n key = entry.key;\n state = readState(key);\n } else {\n key = history.createKey();\n state = null;\n entry.key = key;\n }\n\n var location = _PathUtils.parsePath(path);\n\n return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n }\n\n function canGo(n) {\n var index = current + n;\n return index >= 0 && index < entries.length;\n }\n\n function go(n) {\n if (n) {\n if (!canGo(n)) {\n process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'Cannot go(%s) there is not enough history', n) : undefined;\n return;\n }\n\n current += n;\n\n var currentLocation = getCurrentLocation();\n\n // change action to POP\n history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));\n }\n }\n\n function finishTransition(location) {\n switch (location.action) {\n case _Actions.PUSH:\n current += 1;\n\n // if we are not on the top of stack\n // remove rest and push new\n if (current < entries.length) entries.splice(current);\n\n entries.push(location);\n saveState(location.key, location.state);\n break;\n case _Actions.REPLACE:\n entries[current] = location;\n saveState(location.key, location.state);\n break;\n }\n }\n\n return history;\n}\n\nexports['default'] = createMemoryHistory;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/createMemoryHistory.js\n// module id = 516\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RouterContext = require('./RouterContext');\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n middlewares.forEach(function (middleware, index) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(middleware.renderRouterContext || middleware.renderRouteComponent, 'The middleware specified at index ' + index + ' does not appear to be ' + 'a valid React Router middleware.') : void 0;\n });\n }\n\n var withContext = middlewares.map(function (middleware) {\n return middleware.renderRouterContext;\n }).filter(Boolean);\n var withComponent = middlewares.map(function (middleware) {\n return middleware.renderRouteComponent;\n }).filter(Boolean);\n\n var makeCreateElement = function makeCreateElement() {\n var baseCreateElement = arguments.length <= 0 || arguments[0] === undefined ? _react.createElement : arguments[0];\n return function (Component, props) {\n return withComponent.reduceRight(function (previous, renderRouteComponent) {\n return renderRouteComponent(previous, props);\n }, baseCreateElement(Component, props));\n };\n };\n\n return function (renderProps) {\n return withContext.reduceRight(function (previous, renderRouterContext) {\n return renderRouterContext(previous, renderProps);\n }, _react2.default.createElement(_RouterContext2.default, _extends({}, renderProps, {\n createElement: makeCreateElement(renderProps.createElement)\n })));\n };\n};\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/applyRouterMiddleware.js\n// module id = 517\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _createBrowserHistory = require('history/lib/createBrowserHistory');\n\nvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\nvar _createRouterHistory = require('./createRouterHistory');\n\nvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createRouterHistory2.default)(_createBrowserHistory2.default);\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/browserHistory.js\n// module id = 518\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = require('./Actions');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _createDOMHistory = require('./createDOMHistory');\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve URLs.\n */\nfunction createBrowserHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Browser history needs a DOM') : _invariant2['default'](false) : undefined;\n\n var forceRefresh = options.forceRefresh;\n\n var isSupported = _DOMUtils.supportsHistory();\n var useRefresh = !isSupported || forceRefresh;\n\n function getCurrentLocation(historyState) {\n try {\n historyState = historyState || window.history.state || {};\n } catch (e) {\n historyState = {};\n }\n\n var path = _DOMUtils.getWindowPath();\n var _historyState = historyState;\n var key = _historyState.key;\n\n var state = undefined;\n if (key) {\n state = _DOMStateStorage.readState(key);\n } else {\n state = null;\n key = history.createKey();\n\n if (isSupported) window.history.replaceState(_extends({}, historyState, { key: key }), null);\n }\n\n var location = _PathUtils.parsePath(path);\n\n return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n }\n\n function startPopStateListener(_ref) {\n var transitionTo = _ref.transitionTo;\n\n function popStateListener(event) {\n if (event.state === undefined) return; // Ignore extraneous popstate events in WebKit.\n\n transitionTo(getCurrentLocation(event.state));\n }\n\n _DOMUtils.addEventListener(window, 'popstate', popStateListener);\n\n return function () {\n _DOMUtils.removeEventListener(window, 'popstate', popStateListener);\n };\n }\n\n function finishTransition(location) {\n var basename = location.basename;\n var pathname = location.pathname;\n var search = location.search;\n var hash = location.hash;\n var state = location.state;\n var action = location.action;\n var key = location.key;\n\n if (action === _Actions.POP) return; // Nothing to do.\n\n _DOMStateStorage.saveState(key, state);\n\n var path = (basename || '') + pathname + search + hash;\n var historyState = {\n key: key\n };\n\n if (action === _Actions.PUSH) {\n if (useRefresh) {\n window.location.href = path;\n return false; // Prevent location update.\n } else {\n window.history.pushState(historyState, null, path);\n }\n } else {\n // REPLACE\n if (useRefresh) {\n window.location.replace(path);\n return false; // Prevent location update.\n } else {\n window.history.replaceState(historyState, null, path);\n }\n }\n }\n\n var history = _createDOMHistory2['default'](_extends({}, options, {\n getCurrentLocation: getCurrentLocation,\n finishTransition: finishTransition,\n saveState: _DOMStateStorage.saveState\n }));\n\n var listenerCount = 0,\n stopPopStateListener = undefined;\n\n function listenBefore(listener) {\n if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n var unlisten = history.listenBefore(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopPopStateListener();\n };\n }\n\n function listen(listener) {\n if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n var unlisten = history.listen(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopPopStateListener();\n };\n }\n\n // deprecated\n function registerTransitionHook(hook) {\n if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n history.registerTransitionHook(hook);\n }\n\n // deprecated\n function unregisterTransitionHook(hook) {\n history.unregisterTransitionHook(hook);\n\n if (--listenerCount === 0) stopPopStateListener();\n }\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n registerTransitionHook: registerTransitionHook,\n unregisterTransitionHook: unregisterTransitionHook\n });\n}\n\nexports['default'] = createBrowserHistory;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/history/lib/createBrowserHistory.js\n// module id = 519\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _createHashHistory = require('history/lib/createHashHistory');\n\nvar _createHashHistory2 = _interopRequireDefault(_createHashHistory);\n\nvar _createRouterHistory = require('./createRouterHistory');\n\nvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createRouterHistory2.default)(_createHashHistory2.default);\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router/lib/hashHistory.js\n// module id = 520\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\nexports.default = useScroll;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _ScrollBehaviorContainer = require('./ScrollBehaviorContainer');\n\nvar _ScrollBehaviorContainer2 = _interopRequireDefault(_ScrollBehaviorContainer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction useScroll(shouldUpdateScroll) {\n return {\n renderRouterContext: function renderRouterContext(child, props) {\n return _react2.default.createElement(\n _ScrollBehaviorContainer2.default,\n {\n shouldUpdateScroll: shouldUpdateScroll,\n routerProps: props\n },\n child\n );\n }\n };\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-scroll/lib/index.js\n// module id = 521\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _ScrollBehavior = require('scroll-behavior/lib/ScrollBehavior');\n\nvar _ScrollBehavior2 = _interopRequireDefault(_ScrollBehavior);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ScrollBehaviorContainer = function (_React$Component) {\n _inherits(ScrollBehaviorContainer, _React$Component);\n\n function ScrollBehaviorContainer() {\n _classCallCheck(this, ScrollBehaviorContainer);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ScrollBehaviorContainer.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var routerProps = this.props.routerProps;\n\n\n this.scrollBehavior = new _ScrollBehavior2.default(routerProps.router, function () {\n return _this2.props.routerProps.location;\n });\n\n this.onUpdate(null, routerProps);\n };\n\n ScrollBehaviorContainer.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var routerProps = this.props.routerProps;\n\n var prevRouterProps = prevProps.routerProps;\n\n if (routerProps.location === prevRouterProps.location) {\n return;\n }\n\n this.onUpdate(prevRouterProps, routerProps);\n };\n\n ScrollBehaviorContainer.prototype.componentWillUnmount = function componentWillUnmount() {\n this.scrollBehavior.stop();\n };\n\n ScrollBehaviorContainer.prototype.onUpdate = function onUpdate(prevRouterProps, routerProps) {\n var shouldUpdateScroll = this.props.shouldUpdateScroll;\n\n\n var scrollPosition = void 0;\n if (!shouldUpdateScroll) {\n scrollPosition = true;\n } else {\n scrollPosition = shouldUpdateScroll.call(this.scrollBehavior, prevRouterProps, routerProps);\n }\n\n this.scrollBehavior.updateScroll(scrollPosition);\n };\n\n ScrollBehaviorContainer.prototype.render = function render() {\n return this.props.children;\n };\n\n return ScrollBehaviorContainer;\n}(_react2.default.Component);\n\nScrollBehaviorContainer.propTypes = {\n shouldUpdateScroll: _react2.default.PropTypes.func,\n routerProps: _react2.default.PropTypes.object.isRequired,\n children: _react2.default.PropTypes.node.isRequired\n};\nexports.default = ScrollBehaviorContainer;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-scroll/lib/ScrollBehaviorContainer.js\n// module id = 522\n// module chunks = 1","'use strict';\n\nexports.__esModule = true;\n\nvar _off = require('dom-helpers/events/off');\n\nvar _off2 = _interopRequireDefault(_off);\n\nvar _on = require('dom-helpers/events/on');\n\nvar _on2 = _interopRequireDefault(_on);\n\nvar _scrollLeft = require('dom-helpers/query/scrollLeft');\n\nvar _scrollLeft2 = _interopRequireDefault(_scrollLeft);\n\nvar _scrollTop = require('dom-helpers/query/scrollTop');\n\nvar _scrollTop2 = _interopRequireDefault(_scrollTop);\n\nvar _requestAnimationFrame = require('dom-helpers/util/requestAnimationFrame');\n\nvar _requestAnimationFrame2 = _interopRequireDefault(_requestAnimationFrame);\n\nvar _Actions = require('history/lib/Actions');\n\nvar _DOMStateStorage = require('history/lib/DOMStateStorage');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } } /* eslint-disable no-underscore-dangle */\n\n// FIXME: Stop using this gross hack. This won't collide with any actual\n// history location keys, but it's dirty to sneakily use the same storage here.\nvar KEY_PREFIX = 's/';\n\n// Try at most this many times to scroll, to avoid getting stuck.\nvar MAX_SCROLL_ATTEMPTS = 2;\n\nvar ScrollBehavior = function () {\n function ScrollBehavior(history, getCurrentLocation) {\n var _this = this;\n\n _classCallCheck(this, ScrollBehavior);\n\n this._onScroll = function () {\n // It's possible that this scroll operation was triggered by what will be a\n // `POP` transition. Instead of updating the saved location immediately, we\n // have to enqueue the update, then potentially cancel it if we observe a\n // location update.\n if (_this._savePositionHandle === null) {\n _this._savePositionHandle = (0, _requestAnimationFrame2.default)(_this._savePosition);\n }\n\n if (_this._scrollTarget) {\n var _scrollTarget = _this._scrollTarget;\n var xTarget = _scrollTarget[0];\n var yTarget = _scrollTarget[1];\n\n var x = (0, _scrollLeft2.default)(window);\n var y = (0, _scrollTop2.default)(window);\n\n if (x === xTarget && y === yTarget) {\n _this._scrollTarget = null;\n _this._cancelCheckScroll();\n }\n }\n };\n\n this._savePosition = function () {\n _this._savePositionHandle = null;\n\n // We have to directly update `DOMStateStorage`, because actually updating\n // the location could cause e.g. React Router to re-render the entire page,\n // which would lead to observably bad scroll performance.\n (0, _DOMStateStorage.saveState)(_this._getKey(_this._getCurrentLocation()), [(0, _scrollLeft2.default)(window), (0, _scrollTop2.default)(window)]);\n };\n\n this._checkScrollPosition = function () {\n _this._checkScrollHandle = null;\n\n // We can only get here if scrollTarget is set. Every code path that unsets\n // scroll target also cancels the handle to avoid calling this handler.\n // Still, check anyway just in case.\n /* istanbul ignore if: paranoid guard */\n if (!_this._scrollTarget) {\n return;\n }\n\n var _scrollTarget2 = _this._scrollTarget;\n var x = _scrollTarget2[0];\n var y = _scrollTarget2[1];\n\n window.scrollTo(x, y);\n\n ++_this._numScrollAttempts;\n\n /* istanbul ignore if: paranoid guard */\n if (_this._numScrollAttempts >= MAX_SCROLL_ATTEMPTS) {\n _this._scrollTarget = null;\n return;\n }\n\n _this._checkScrollHandle = (0, _requestAnimationFrame2.default)(_this._checkScrollPosition);\n };\n\n this._history = history;\n this._getCurrentLocation = getCurrentLocation;\n\n // This helps avoid some jankiness in fighting against the browser's\n // default scroll behavior on `POP` transitions.\n /* istanbul ignore if: not supported by any browsers on Travis */\n if ('scrollRestoration' in window.history) {\n this._oldScrollRestoration = window.history.scrollRestoration;\n window.history.scrollRestoration = 'manual';\n } else {\n this._oldScrollRestoration = null;\n }\n\n this._savePositionHandle = null;\n this._checkScrollHandle = null;\n this._scrollTarget = null;\n this._numScrollAttempts = 0;\n\n // We have to listen to each scroll update rather than to just location\n // updates, because some browsers will update scroll position before\n // emitting the location change.\n (0, _on2.default)(window, 'scroll', this._onScroll);\n\n this._unlistenBefore = history.listenBefore(function () {\n if (_this._savePositionHandle !== null) {\n _requestAnimationFrame2.default.cancel(_this._savePositionHandle);\n _this._savePositionHandle = null;\n }\n });\n }\n\n ScrollBehavior.prototype.stop = function stop() {\n /* istanbul ignore if: not supported by any browsers on Travis */\n if (this._oldScrollRestoration) {\n window.history.scrollRestoration = this._oldScrollRestoration;\n }\n\n (0, _off2.default)(window, 'scroll', this._onScroll);\n this._cancelCheckScroll();\n\n this._unlistenBefore();\n };\n\n ScrollBehavior.prototype.updateScroll = function updateScroll(scrollPosition) {\n // Whatever we were doing before isn't relevant any more.\n this._cancelCheckScroll();\n\n if (scrollPosition && !Array.isArray(scrollPosition)) {\n this._scrollTarget = this._getDefaultScrollTarget();\n } else {\n this._scrollTarget = scrollPosition;\n }\n\n // Check the scroll position to see if we even need to scroll.\n this._onScroll();\n\n if (!this._scrollTarget) {\n return;\n }\n\n this._numScrollAttempts = 0;\n this._checkScrollPosition();\n };\n\n ScrollBehavior.prototype.readPosition = function readPosition(location) {\n return (0, _DOMStateStorage.readState)(this._getKey(location));\n };\n\n ScrollBehavior.prototype._getKey = function _getKey(location) {\n // Use fallback key when actual key is unavailable.\n var key = location.key || this._history.createPath(location);\n\n return '' + KEY_PREFIX + key;\n };\n\n ScrollBehavior.prototype._cancelCheckScroll = function _cancelCheckScroll() {\n if (this._checkScrollHandle !== null) {\n _requestAnimationFrame2.default.cancel(this._checkScrollHandle);\n this._checkScrollHandle = null;\n }\n };\n\n ScrollBehavior.prototype._getDefaultScrollTarget = function _getDefaultScrollTarget() {\n var location = this._getCurrentLocation();\n if (location.action === _Actions.PUSH) {\n return [0, 0];\n }\n\n return this.readPosition(location) || [0, 0];\n };\n\n return ScrollBehavior;\n}();\n\nexports.default = ScrollBehavior;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/scroll-behavior/lib/ScrollBehavior.js\n// module id = 523\n// module chunks = 1","'use strict';\nvar canUseDOM = require('../util/inDOM');\nvar off = function off() {};\n\nif (canUseDOM) {\n\n off = (function () {\n\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n })();\n}\n\nmodule.exports = off;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/events/off.js\n// module id = 524\n// module chunks = 1","'use strict';\nvar canUseDOM = require('../util/inDOM');\nvar on = function on() {};\n\nif (canUseDOM) {\n on = (function () {\n\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, handler);\n };\n })();\n}\n\nmodule.exports = on;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/events/on.js\n// module id = 525\n// module chunks = 1","'use strict';\nvar getWindow = require('./isWindow');\n\nmodule.exports = function scrollTop(node, val) {\n var win = getWindow(node);\n\n if (val === undefined) return win ? 'pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft : node.scrollLeft;\n\n if (win) win.scrollTo(val, 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop);else node.scrollLeft = val;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/scrollLeft.js\n// module id = 526\n// module chunks = 1","'use strict';\nvar getWindow = require('./isWindow');\n\nmodule.exports = function scrollTop(node, val) {\n var win = getWindow(node);\n\n if (val === undefined) return win ? 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop : node.scrollTop;\n\n if (win) win.scrollTo('pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft, val);else node.scrollTop = val;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/query/scrollTop.js\n// module id = 527\n// module chunks = 1","'use strict';\n\nvar canUseDOM = require('./inDOM');\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'],\n cancel = 'clearTimeout',\n raf = fallback,\n compatRaf;\n\nvar getKey = function getKey(vendor, k) {\n return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (canUseDOM) {\n vendors.some(function (vendor) {\n var rafKey = getKey(vendor, 'request');\n\n if (rafKey in window) {\n cancel = getKey(vendor, 'cancel');\n return raf = function (cb) {\n return window[rafKey](cb);\n };\n }\n });\n}\n\n/* https://github.com/component/raf */\nvar prev = new Date().getTime();\n\nfunction fallback(fn) {\n var curr = new Date().getTime(),\n ms = Math.max(0, 16 - (curr - prev)),\n req = setTimeout(fn, ms);\n\n prev = curr;\n return req;\n}\n\ncompatRaf = function (cb) {\n return raf(cb);\n};\ncompatRaf.cancel = function (id) {\n return window[cancel](id);\n};\n\nmodule.exports = compatRaf;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dom-helpers/util/requestAnimationFrame.js\n// module id = 528\n// module chunks = 1","const AppEnvs = {\n prod: 'PROD',\n qa: 'QA',\n dev: 'DEV'\n};\n\nmodule.exports = (() => {\n const env = process.env;\n const APP_ENV = env.APP_ENV || AppEnvs.dev;\n const UID = env.UID;\n const PORT = env.PORT;\n const HOST = env.HOST;\n const MEMCACHED_SERVERS = (env.MEMCACHED_SERVERS || '127.0.0.1:11211').split(',');\n const MEMCACHED_POOLSIZE = env.MEMCACHED_POOLSIZE;\n const MEMCACHED_TIMEOUT = env.MEMCACHED_TIMEOUT;\n const MEMCACHED_RETRIES = env.MEMCACHED_RETRIES;\n const MEMCACHED_FAILURES = env.MEMCACHED_FAILURES;\n const MEMCACHED_NAMESPACE = env.MEMCACHED_NAMESPACE;\n const SHELL_IMG_REF = env.SHELL_IMG_REF;\n // used only for page shell assets\n const SECURE_CDN_HOST = env.SECURE_CDN_HOST || 'https://a.espncdn.com';\n const CDN_HOST = env.CDN_HOST;\n const CDN_PATH = env.CDN_PATH;\n const DEV_STYLES = env.DEV_STYLES;\n const SCORETC_FRONTCHANNEL_HOST = env.SCORETC_FRONTCHANNEL_HOST;\n const SCORETC_BACKCHANNEL_HOST = env.SCORETC_BACKCHANNEL_HOST;\n const PKG_VERSION = __PKG_VERSION__;\n const BASE_ROUTE = env.BASE_ROUTE;\n\n // this hasn't been merged - https://github.disney.com/SEESPN/chef-repo/pull/758, so we handle differently\n // used only for vwatchwebnode bundle\n let SECURE_CDN_PATH = env.SECURE_CDN_PATH;\n if (!SECURE_CDN_PATH) {\n if (APP_ENV === AppEnvs.prod) {\n SECURE_CDN_PATH = CDN_PATH.replace(/https?:\\/\\/[^\\/]+/, 'https://secure.espncdn.com');\n } else if (APP_ENV === AppEnvs.qa) {\n SECURE_CDN_PATH = CDN_PATH.replace(/https?:\\/\\/[^\\/]+/, 'https://a-qa.espncdn.com');\n }\n }\n\n let HTTP_PROXY = env.HTTP_PROXY;\n if (HTTP_PROXY && !HTTP_PROXY.startsWith('http://')) {\n HTTP_PROXY = `http://${HTTP_PROXY}`;\n }\n\n const NO_PROXY = env.NO_PROXY;\n // add any new API hosts as regex here which won't work with the old proxy until we move to AWS\n const noProxyHosts = ['affiliate\\\\.api.*\\\\.espn\\\\.com', 'proxy\\\\.espn\\\\.com'];\n let noProxy = null;\n if (NO_PROXY) {\n noProxy = NO_PROXY;\n noProxy = noProxy.replace(/\\*\\./g, '.').replace(/\\./g, '\\\\.'); // make the NO_PROXY values compatible with regex\n noProxy = noProxyHosts.reduce((acc, host) => `${acc}|${host}`, noProxy);\n noProxy = `https?:\\\\/\\\\/[^\\\\/]*(?:${noProxy})`; // make the usable regex\n }\n\n // update running port 8000 to 80. Port 8000 has CORS issue with oneID registration\n return {\n uid: UID || 'app',\n port: PORT || (DEV_STYLES ? 80 : 8080),\n host: HOST || '0.0.0.0',\n baseRoute: BASE_ROUTE || '/watch',\n appEnv: APP_ENV,\n apiHost: {\n sCoreTcClient: SCORETC_FRONTCHANNEL_HOST || 'cdn.espn.com/core',\n sCoreTcServer: SCORETC_BACKCHANNEL_HOST || 'glue-bc.prod.espninfra.starwave.com/core'\n },\n devStyles: DEV_STYLES || false,\n legacyServiceUrl: 'http://www.espn.com/watchespn',\n cache: {\n servers : MEMCACHED_SERVERS,\n poolSize : parseInt(MEMCACHED_POOLSIZE, 10) || 100,\n timeout : parseInt(MEMCACHED_TIMEOUT, 10) || 1000,\n retries : parseInt(MEMCACHED_RETRIES, 10) || 1,\n failures : parseInt(MEMCACHED_FAILURES, 10) || 1,\n namespace : MEMCACHED_NAMESPACE || 'vwatchwebnode:'\n },\n shellVersion: '0.489.4',\n secureCdnHost: SECURE_CDN_HOST,\n cdnHost: CDN_HOST || 'http://a.espncdn.com',\n cdnPath: CDN_PATH ? `${CDN_PATH}/${PKG_VERSION}` : '/dist',\n secureCdnPath: SECURE_CDN_PATH ? `${SECURE_CDN_PATH}/${PKG_VERSION}` : '/dist',\n httpProxy: HTTP_PROXY || null,\n noProxy: noProxy,\n isBeta: false,\n clientNavigation: true,\n enableSearch: true,\n newrelicInsertKey: 'F2lp90YgLmEP4KO_hQUxwZeyg7hC9Wjs',\n newrelicAccountId: '459463'\n };\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./config/env.config.js","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = syncHistoryWithStore;\n\nvar _reducer = require('./reducer');\n\nvar defaultSelectLocationState = function defaultSelectLocationState(state) {\n return state.routing;\n};\n\n/**\n * This function synchronizes your history state with the Redux store.\n * Location changes flow from history to the store. An enhanced history is\n * returned with a listen method that responds to store updates for location.\n *\n * When this history is provided to the router, this means the location data\n * will flow like this:\n * history.push -> store.dispatch -> enhancedHistory.listen -> router\n * This ensures that when the store state changes due to a replay or other\n * event, the router will be updated appropriately and can transition to the\n * correct router state.\n */\nfunction syncHistoryWithStore(history, store) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$selectLocationSt = _ref.selectLocationState,\n selectLocationState = _ref$selectLocationSt === undefined ? defaultSelectLocationState : _ref$selectLocationSt,\n _ref$adjustUrlOnRepla = _ref.adjustUrlOnReplay,\n adjustUrlOnReplay = _ref$adjustUrlOnRepla === undefined ? true : _ref$adjustUrlOnRepla;\n\n // Ensure that the reducer is mounted on the store and functioning properly.\n if (typeof selectLocationState(store.getState()) === 'undefined') {\n throw new Error('Expected the routing state to be available either as `state.routing` ' + 'or as the custom expression you can specify as `selectLocationState` ' + 'in the `syncHistoryWithStore()` options. ' + 'Ensure you have added the `routerReducer` to your store\\'s ' + 'reducers via `combineReducers` or whatever method you use to isolate ' + 'your reducers.');\n }\n\n var initialLocation = void 0;\n var isTimeTraveling = void 0;\n var unsubscribeFromStore = void 0;\n var unsubscribeFromHistory = void 0;\n var currentLocation = void 0;\n\n // What does the store say about current location?\n var getLocationInStore = function getLocationInStore(useInitialIfEmpty) {\n var locationState = selectLocationState(store.getState());\n return locationState.locationBeforeTransitions || (useInitialIfEmpty ? initialLocation : undefined);\n };\n\n // Init initialLocation with potential location in store\n initialLocation = getLocationInStore();\n\n // If the store is replayed, update the URL in the browser to match.\n if (adjustUrlOnReplay) {\n var handleStoreChange = function handleStoreChange() {\n var locationInStore = getLocationInStore(true);\n if (currentLocation === locationInStore || initialLocation === locationInStore) {\n return;\n }\n\n // Update address bar to reflect store state\n isTimeTraveling = true;\n currentLocation = locationInStore;\n history.transitionTo(_extends({}, locationInStore, {\n action: 'PUSH'\n }));\n isTimeTraveling = false;\n };\n\n unsubscribeFromStore = store.subscribe(handleStoreChange);\n handleStoreChange();\n }\n\n // Whenever location changes, dispatch an action to get it in the store\n var handleLocationChange = function handleLocationChange(location) {\n // ... unless we just caused that location change\n if (isTimeTraveling) {\n return;\n }\n\n // Remember where we are\n currentLocation = location;\n\n // Are we being called for the first time?\n if (!initialLocation) {\n // Remember as a fallback in case state is reset\n initialLocation = location;\n\n // Respect persisted location, if any\n if (getLocationInStore()) {\n return;\n }\n }\n\n // Tell the store to update by dispatching an action\n store.dispatch({\n type: _reducer.LOCATION_CHANGE,\n payload: location\n });\n };\n unsubscribeFromHistory = history.listen(handleLocationChange);\n\n // support history 3.x\n if (history.getCurrentLocation) {\n handleLocationChange(history.getCurrentLocation());\n }\n\n // The enhanced history uses store as source of truth\n return _extends({}, history, {\n // The listeners are subscribed to the store instead of history\n listen: function listen(listener) {\n // Copy of last location.\n var lastPublishedLocation = getLocationInStore(true);\n\n // Keep track of whether we unsubscribed, as Redux store\n // only applies changes in subscriptions on next dispatch\n var unsubscribed = false;\n var unsubscribeFromStore = store.subscribe(function () {\n var currentLocation = getLocationInStore(true);\n if (currentLocation === lastPublishedLocation) {\n return;\n }\n lastPublishedLocation = currentLocation;\n if (!unsubscribed) {\n listener(lastPublishedLocation);\n }\n });\n\n // History listeners expect a synchronous call. Make the first call to the\n // listener after subscribing to the store, in case the listener causes a\n // location change (e.g. when it redirects)\n listener(lastPublishedLocation);\n\n // Let user unsubscribe later\n return function () {\n unsubscribed = true;\n unsubscribeFromStore();\n };\n },\n\n\n // It also provides a way to destroy internal listeners\n unsubscribe: function unsubscribe() {\n if (adjustUrlOnReplay) {\n unsubscribeFromStore();\n }\n unsubscribeFromHistory();\n }\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-redux/lib/sync.js\n// module id = 530\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports['default'] = routerMiddleware;\n\nvar _actions = require('./actions');\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n/**\n * This middleware captures CALL_HISTORY_METHOD actions to redirect to the\n * provided history object. This will prevent these actions from reaching your\n * reducer or any middleware that comes after this one.\n */\nfunction routerMiddleware(history) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type !== _actions.CALL_HISTORY_METHOD) {\n return next(action);\n }\n\n var _action$payload = action.payload,\n method = _action$payload.method,\n args = _action$payload.args;\n\n history[method].apply(history, _toConsumableArray(args));\n };\n };\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-router-redux/lib/middleware.js\n// module id = 531\n// module chunks = 1","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/component-emitter/index.js\n// module id = 532\n// module chunks = 1","/**\n * Module of mixed-in functions shared between node and client code\n */\nvar isObject = require('./is-object');\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nexports.clearTimeout = function _clearTimeout(){\n this._timeout = 0;\n clearTimeout(this._timer);\n return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nexports.parse = function parse(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nexports.serialize = function serialize(fn){\n this._serializer = fn;\n return this;\n};\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nexports.timeout = function timeout(ms){\n this._timeout = ms;\n return this;\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} reject\n * @return {Request}\n */\n\nexports.then = function then(resolve, reject) {\n if (!this._fullfilledPromise) {\n var self = this;\n this._fullfilledPromise = new Promise(function(innerResolve, innerReject){\n self.end(function(err, res){\n if (err) innerReject(err); else innerResolve(res);\n });\n });\n }\n return this._fullfilledPromise.then(resolve, reject);\n}\n\n/**\n * Allow for extension\n */\n\nexports.use = function use(fn) {\n fn(this);\n return this;\n}\n\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nexports.get = function(field){\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nexports.getHeader = exports.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nexports.set = function(field, val){\n if (isObject(field)) {\n for (var key in field) {\n this.set(key, field[key]);\n }\n return this;\n }\n this._header[field.toLowerCase()] = val;\n this.header[field] = val;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field\n */\nexports.unset = function(field){\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val` for \"multipart/form-data\"\n * request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n * ```\n *\n * @param {String} name\n * @param {String|Blob|File|Buffer|fs.ReadStream} val\n * @return {Request} for chaining\n * @api public\n */\nexports.field = function(name, val) {\n this._getFormData().append(name, val);\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\nexports.abort = function(){\n if (this._aborted) {\n return this;\n }\n this._aborted = true;\n this.xhr && this.xhr.abort(); // browser\n this.req && this.req.abort(); // node\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nexports.withCredentials = function(){\n // This is browser-only functionality. Node side is no-op.\n this._withCredentials = true;\n return this;\n};\n\n/**\n * Set the max redirects to `n`. Does noting in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nexports.redirects = function(n){\n this._maxRedirects = n;\n return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nexports.toJSON = function(){\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nexports._isHost = function _isHost(obj) {\n var str = {}.toString.call(obj);\n\n switch (str) {\n case '[object File]':\n case '[object Blob]':\n case '[object FormData]':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nexports.send = function(data){\n var obj = isObject(data);\n var type = this._header['content-type'];\n\n // merge\n if (obj && isObject(this._data)) {\n for (var key in data) {\n this._data[key] = data[key];\n }\n } else if ('string' == typeof data) {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if ('application/x-www-form-urlencoded' == type) {\n this._data = this._data\n ? this._data + '&' + data\n : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!obj || this._isHost(data)) return this;\n\n // default to json\n if (!type) this.type('json');\n return this;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/request-base.js\n// module id = 533\n// module chunks = 1","// The node and browser modules expose versions of this with the\n// appropriate constructor function bound as first argument\n/**\n * Issue a request:\n *\n * Examples:\n *\n * request('GET', '/users').end(callback)\n * request('/users').end(callback)\n * request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(RequestConstructor, method, url) {\n // callback\n if ('function' == typeof url) {\n return new RequestConstructor('GET', method).end(url);\n }\n\n // url first\n if (2 == arguments.length) {\n return new RequestConstructor('GET', method);\n }\n\n return new RequestConstructor(method, url);\n}\n\nmodule.exports = request;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent/lib/request.js\n// module id = 534\n// module chunks = 1","function webpackEmptyContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 535;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment/locale ^$\n// module id = 535\n// module chunks = 1","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/pick.js\n// module id = 536\n// module chunks = 1","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_basePick.js\n// module id = 537\n// module chunks = 1","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_basePickBy.js\n// module id = 538\n// module chunks = 1","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getRawTag.js\n// module id = 539\n// module chunks = 1","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_objectToString.js\n// module id = 540\n// module chunks = 1","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_stringToPath.js\n// module id = 541\n// module chunks = 1","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_memoizeCapped.js\n// module id = 542\n// module chunks = 1","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/memoize.js\n// module id = 543\n// module chunks = 1","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheClear.js\n// module id = 544\n// module chunks = 1","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Hash.js\n// module id = 545\n// module chunks = 1","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashClear.js\n// module id = 546\n// module chunks = 1","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsNative.js\n// module id = 547\n// module chunks = 1","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isMasked.js\n// module id = 548\n// module chunks = 1","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_coreJsData.js\n// module id = 549\n// module chunks = 1","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getValue.js\n// module id = 550\n// module chunks = 1","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashDelete.js\n// module id = 551\n// module chunks = 1","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashGet.js\n// module id = 552\n// module chunks = 1","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashHas.js\n// module id = 553\n// module chunks = 1","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashSet.js\n// module id = 554\n// module chunks = 1","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheClear.js\n// module id = 555\n// module chunks = 1","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheDelete.js\n// module id = 556\n// module chunks = 1","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheGet.js\n// module id = 557\n// module chunks = 1","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheHas.js\n// module id = 558\n// module chunks = 1","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheSet.js\n// module id = 559\n// module chunks = 1","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheDelete.js\n// module id = 560\n// module chunks = 1","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isKeyable.js\n// module id = 561\n// module chunks = 1","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheGet.js\n// module id = 562\n// module chunks = 1","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheHas.js\n// module id = 563\n// module chunks = 1","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheSet.js\n// module id = 564\n// module chunks = 1","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/toString.js\n// module id = 565\n// module chunks = 1","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseToString.js\n// module id = 566\n// module chunks = 1","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseSet.js\n// module id = 567\n// module chunks = 1","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseHasIn.js\n// module id = 568\n// module chunks = 1","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hasPath.js\n// module id = 569\n// module chunks = 1","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsArguments.js\n// module id = 570\n// module chunks = 1","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_flatRest.js\n// module id = 571\n// module chunks = 1","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/flatten.js\n// module id = 572\n// module chunks = 1","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isFlattenable.js\n// module id = 573\n// module chunks = 1","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_apply.js\n// module id = 574\n// module chunks = 1","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseSetToString.js\n// module id = 575\n// module chunks = 1","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/constant.js\n// module id = 576\n// module chunks = 1","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_shortOut.js\n// module id = 577\n// module chunks = 1","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n stringSize = require('./_stringSize');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nmodule.exports = size;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/size.js\n// module id = 578\n// module chunks = 1","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nativeKeys.js\n// module id = 579\n// module chunks = 1","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_DataView.js\n// module id = 580\n// module chunks = 1","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Promise.js\n// module id = 581\n// module chunks = 1","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_WeakMap.js\n// module id = 582\n// module chunks = 1","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isString.js\n// module id = 583\n// module chunks = 1","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_stringSize.js\n// module id = 584\n// module chunks = 1","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_asciiSize.js\n// module id = 585\n// module chunks = 1","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hasUnicode.js\n// module id = 586\n// module chunks = 1","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_unicodeSize.js\n// module id = 587\n// module chunks = 1","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment-timezone/index.js\n// module id = 588\n// module chunks = 1","//! moment-timezone.js\n//! version : 0.5.26\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.26\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment-timezone/moment-timezone.js\n// module id = 589\n// module chunks = 1","function webpackEmptyContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 590;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment-timezone/node_modules/moment/locale ^$\n// module id = 590\n// module chunks = 1","module.exports = {\"version\":\"2019b\",\"zones\":[\"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5\",\"Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5\",\"Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5\",\"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5\",\"Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6\",\"Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4\",\"Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5\",\"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6\",\"Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5\",\"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3\",\"Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|20e4\",\"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5\",\"Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0\",\"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5\",\"Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5\",\"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5\",\"Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|0121|-2le00 4i6N0 2q00\",\"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5\",\"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5\",\"Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4\",\"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\"America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\"America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3\",\"America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4\",\"America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0\",\"America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0\",\"America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0\",\"America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0\",\"America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0\",\"America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0\",\"America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0\",\"America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0\",\"America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0\",\"America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4\",\"America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5\",\"America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2\",\"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3\",\"America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5\",\"America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4\",\"America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5\",\"America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3\",\"America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2\",\"America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2\",\"America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5\",\"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4\",\"America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2\",\"America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4\",\"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4\",\"America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5\",\"America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3\",\"America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5\",\"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4\",\"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5\",\"America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2\",\"America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4\",\"America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8\",\"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3\",\"America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2\",\"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|012342525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 XQp0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5\",\"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5\",\"America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3\",\"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5\",\"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5\",\"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2\",\"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5\",\"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3\",\"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2\",\"America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5\",\"America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5\",\"America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4\",\"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4\",\"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2\",\"America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2\",\"America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4\",\"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3\",\"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5\",\"America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6\",\"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\"America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4\",\"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5\",\"America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5\",\"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4\",\"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4\",\"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4\",\"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2\",\"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5\",\"America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|01203030303030303030303030303030304545450454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6\",\"America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3\",\"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5\",\"America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5\",\"America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5\",\"America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4\",\"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2\",\"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2\",\"America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2\",\"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4\",\"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5\",\"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4\",\"America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4\",\"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5\",\"America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0\",\"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842\",\"America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2\",\"America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5\",\"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4\",\"America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229\",\"America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4\",\"America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|62e5\",\"America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5\",\"America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6\",\"America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452\",\"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2\",\"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3\",\"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5\",\"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656\",\"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4\",\"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642\",\"America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10\",\"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70\",\"Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80\",\"Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1\",\"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60\",\"Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5\",\"Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40\",\"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130\",\"Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20\",\"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40\",\"Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25\",\"Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4\",\"Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5\",\"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5\",\"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5\",\"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3\",\"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4\",\"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4\",\"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4\",\"Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0\",\"Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5\",\"Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4\",\"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5\",\"Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6\",\"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5\",\"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4\",\"Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4\",\"Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6\",\"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4\",\"Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3\",\"Asia/Shanghai|CST CDT|-80 -90|010101010101010101010101010|-1c2w0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6\",\"Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5\",\"Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6\",\"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5\",\"Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4\",\"Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5\",\"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4\",\"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|0101010101010101010101010101010123232323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|18e5\",\"Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|25e4\",\"Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5\",\"Asia/Hong_Kong|LMT HKT HKST HKT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5\",\"Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3\",\"Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6\",\"Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6\",\"Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4\",\"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4\",\"Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5\",\"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4\",\"Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6\",\"Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5\",\"Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5\",\"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2\",\"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5\",\"Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4\",\"Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4\",\"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3\",\"Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5\",\"Asia/Manila|PST PDT JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6\",\"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4\",\"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4\",\"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5\",\"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5\",\"Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4\",\"Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4\",\"Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5\",\"Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|012323232323232323232123232323232323232323232323|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0\",\"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4\",\"Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5\",\"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4\",\"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4\",\"Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6\",\"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2\",\"Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5\",\"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5\",\"Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5\",\"Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6\",\"Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3\",\"Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rb0 1ld0 14n0 1zd0 On0 1zd0 On0|38e6\",\"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5\",\"Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5\",\"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2\",\"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4\",\"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5\",\"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5\",\"Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4\",\"Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3\",\"Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4\",\"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3\",\"Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4\",\"Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4\",\"Atlantic/South_Georgia|-02|20|0||30\",\"Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2\",\"Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5\",\"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5\",\"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5\",\"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3\",\"Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746\",\"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4\",\"Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368\",\"Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4\",\"Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347\",\"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10\",\"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5\",\"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5\",\"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|30e2\",\"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"EST|EST|50|0|\",\"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Etc/GMT-0|GMT|0|0|\",\"Etc/GMT-1|+01|-10|0|\",\"Pacific/Port_Moresby|+10|-a0|0||25e4\",\"Etc/GMT-11|+11|-b0|0|\",\"Pacific/Tarawa|+12|-c0|0||29e3\",\"Etc/GMT-13|+13|-d0|0|\",\"Etc/GMT-14|+14|-e0|0|\",\"Etc/GMT-2|+02|-20|0|\",\"Etc/GMT-3|+03|-30|0|\",\"Etc/GMT-4|+04|-40|0|\",\"Etc/GMT-5|+05|-50|0|\",\"Etc/GMT-6|+06|-60|0|\",\"Indian/Christmas|+07|-70|0||21e2\",\"Etc/GMT-8|+08|-80|0|\",\"Pacific/Palau|+09|-90|0||21e3\",\"Etc/GMT+1|-01|10|0|\",\"Etc/GMT+10|-10|a0|0|\",\"Etc/GMT+11|-11|b0|0|\",\"Etc/GMT+12|-12|c0|0|\",\"Etc/GMT+3|-03|30|0|\",\"Etc/GMT+4|-04|40|0|\",\"Etc/GMT+5|-05|50|0|\",\"Etc/GMT+6|-06|60|0|\",\"Etc/GMT+7|-07|70|0|\",\"Etc/GMT+8|-08|80|0|\",\"Etc/GMT+9|-09|90|0|\",\"Etc/UTC|UTC|0|0|\",\"Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5\",\"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3\",\"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5\",\"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5\",\"Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6\",\"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5\",\"Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5\",\"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5\",\"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5\",\"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4\",\"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4\",\"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3\",\"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4\",\"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5\",\"Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4\",\"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5\",\"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5\",\"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5\",\"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3\",\"Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6\",\"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6\",\"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4\",\"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5\",\"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5\",\"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810\",\"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4\",\"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5\",\"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4\",\"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5\",\"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4\",\"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5\",\"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0|10e5\",\"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4\",\"HST|HST|a0|0|\",\"Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2\",\"Indian/Cocos|+0630|-6u|0||596\",\"Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130\",\"Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3\",\"Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4\",\"Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4\",\"Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4\",\"Pacific/Kwajalein|+11 +10 +09 -12 +12|-b0 -a0 -90 c0 -c0|012034|-1kln0 akp0 6Up0 12ry0 Wan0|14e3\",\"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"MST|MST|70|0|\",\"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600\",\"Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3\",\"Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4\",\"Pacific/Chuuk|+10 +09|-a0 -90|01010|-2ewy0 axB0 RVX0 axd0|49e3\",\"Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3\",\"Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1\",\"Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483\",\"Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0|88e4\",\"Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3\",\"Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125\",\"Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4\",\"Pacific/Guam|GST +09 GDT ChST|-a0 -90 -b0 -a0|01020202020202020203|-18jK0 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4\",\"Pacific/Honolulu|HST HDT HWT HPT HST|au 9u 9u 9u a0|0102304|-1thLu 8x0 lef0 8wWu iAu 46p0|37e4\",\"Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2\",\"Pacific/Kosrae|+11 +09 +10 +12|-b0 -90 -a0 -c0|01021030|-2ewz0 axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2\",\"Pacific/Majuro|+11 +09 +10 +12|-b0 -90 -a0 -c0|0102103|-2ewz0 axC0 HBy0 akp0 6RB0 12um0|28e3\",\"Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2\",\"Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2\",\"Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3\",\"Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2\",\"Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4\",\"Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3\",\"Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56\",\"Pacific/Pohnpei|+11 +09 +10|-b0 -90 -a0|010210|-2ewz0 axC0 HBy0 akp0 axd0|34e3\",\"Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3\",\"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4\",\"Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3\",\"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\"],\"links\":[\"Africa/Abidjan|Africa/Bamako\",\"Africa/Abidjan|Africa/Banjul\",\"Africa/Abidjan|Africa/Conakry\",\"Africa/Abidjan|Africa/Dakar\",\"Africa/Abidjan|Africa/Freetown\",\"Africa/Abidjan|Africa/Lome\",\"Africa/Abidjan|Africa/Nouakchott\",\"Africa/Abidjan|Africa/Ouagadougou\",\"Africa/Abidjan|Africa/Timbuktu\",\"Africa/Abidjan|Atlantic/St_Helena\",\"Africa/Cairo|Egypt\",\"Africa/Johannesburg|Africa/Maseru\",\"Africa/Johannesburg|Africa/Mbabane\",\"Africa/Lagos|Africa/Bangui\",\"Africa/Lagos|Africa/Brazzaville\",\"Africa/Lagos|Africa/Douala\",\"Africa/Lagos|Africa/Kinshasa\",\"Africa/Lagos|Africa/Libreville\",\"Africa/Lagos|Africa/Luanda\",\"Africa/Lagos|Africa/Malabo\",\"Africa/Lagos|Africa/Niamey\",\"Africa/Lagos|Africa/Porto-Novo\",\"Africa/Maputo|Africa/Blantyre\",\"Africa/Maputo|Africa/Bujumbura\",\"Africa/Maputo|Africa/Gaborone\",\"Africa/Maputo|Africa/Harare\",\"Africa/Maputo|Africa/Kigali\",\"Africa/Maputo|Africa/Lubumbashi\",\"Africa/Maputo|Africa/Lusaka\",\"Africa/Nairobi|Africa/Addis_Ababa\",\"Africa/Nairobi|Africa/Asmara\",\"Africa/Nairobi|Africa/Asmera\",\"Africa/Nairobi|Africa/Dar_es_Salaam\",\"Africa/Nairobi|Africa/Djibouti\",\"Africa/Nairobi|Africa/Kampala\",\"Africa/Nairobi|Africa/Mogadishu\",\"Africa/Nairobi|Indian/Antananarivo\",\"Africa/Nairobi|Indian/Comoro\",\"Africa/Nairobi|Indian/Mayotte\",\"Africa/Tripoli|Libya\",\"America/Adak|America/Atka\",\"America/Adak|US/Aleutian\",\"America/Anchorage|US/Alaska\",\"America/Argentina/Buenos_Aires|America/Buenos_Aires\",\"America/Argentina/Catamarca|America/Argentina/ComodRivadavia\",\"America/Argentina/Catamarca|America/Catamarca\",\"America/Argentina/Cordoba|America/Cordoba\",\"America/Argentina/Cordoba|America/Rosario\",\"America/Argentina/Jujuy|America/Jujuy\",\"America/Argentina/Mendoza|America/Mendoza\",\"America/Atikokan|America/Coral_Harbour\",\"America/Chicago|US/Central\",\"America/Curacao|America/Aruba\",\"America/Curacao|America/Kralendijk\",\"America/Curacao|America/Lower_Princes\",\"America/Denver|America/Shiprock\",\"America/Denver|Navajo\",\"America/Denver|US/Mountain\",\"America/Detroit|US/Michigan\",\"America/Edmonton|Canada/Mountain\",\"America/Fort_Wayne|America/Indiana/Indianapolis\",\"America/Fort_Wayne|America/Indianapolis\",\"America/Fort_Wayne|US/East-Indiana\",\"America/Halifax|Canada/Atlantic\",\"America/Havana|Cuba\",\"America/Indiana/Knox|America/Knox_IN\",\"America/Indiana/Knox|US/Indiana-Starke\",\"America/Jamaica|Jamaica\",\"America/Kentucky/Louisville|America/Louisville\",\"America/Los_Angeles|US/Pacific\",\"America/Los_Angeles|US/Pacific-New\",\"America/Manaus|Brazil/West\",\"America/Mazatlan|Mexico/BajaSur\",\"America/Mexico_City|Mexico/General\",\"America/New_York|US/Eastern\",\"America/Noronha|Brazil/DeNoronha\",\"America/Panama|America/Cayman\",\"America/Phoenix|US/Arizona\",\"America/Port_of_Spain|America/Anguilla\",\"America/Port_of_Spain|America/Antigua\",\"America/Port_of_Spain|America/Dominica\",\"America/Port_of_Spain|America/Grenada\",\"America/Port_of_Spain|America/Guadeloupe\",\"America/Port_of_Spain|America/Marigot\",\"America/Port_of_Spain|America/Montserrat\",\"America/Port_of_Spain|America/St_Barthelemy\",\"America/Port_of_Spain|America/St_Kitts\",\"America/Port_of_Spain|America/St_Lucia\",\"America/Port_of_Spain|America/St_Thomas\",\"America/Port_of_Spain|America/St_Vincent\",\"America/Port_of_Spain|America/Tortola\",\"America/Port_of_Spain|America/Virgin\",\"America/Regina|Canada/Saskatchewan\",\"America/Rio_Branco|America/Porto_Acre\",\"America/Rio_Branco|Brazil/Acre\",\"America/Santiago|Chile/Continental\",\"America/Sao_Paulo|Brazil/East\",\"America/St_Johns|Canada/Newfoundland\",\"America/Tijuana|America/Ensenada\",\"America/Tijuana|America/Santa_Isabel\",\"America/Tijuana|Mexico/BajaNorte\",\"America/Toronto|America/Montreal\",\"America/Toronto|Canada/Eastern\",\"America/Vancouver|Canada/Pacific\",\"America/Whitehorse|Canada/Yukon\",\"America/Winnipeg|Canada/Central\",\"Asia/Ashgabat|Asia/Ashkhabad\",\"Asia/Bangkok|Asia/Phnom_Penh\",\"Asia/Bangkok|Asia/Vientiane\",\"Asia/Dhaka|Asia/Dacca\",\"Asia/Dubai|Asia/Muscat\",\"Asia/Ho_Chi_Minh|Asia/Saigon\",\"Asia/Hong_Kong|Hongkong\",\"Asia/Jerusalem|Asia/Tel_Aviv\",\"Asia/Jerusalem|Israel\",\"Asia/Kathmandu|Asia/Katmandu\",\"Asia/Kolkata|Asia/Calcutta\",\"Asia/Kuala_Lumpur|Asia/Singapore\",\"Asia/Kuala_Lumpur|Singapore\",\"Asia/Macau|Asia/Macao\",\"Asia/Makassar|Asia/Ujung_Pandang\",\"Asia/Nicosia|Europe/Nicosia\",\"Asia/Qatar|Asia/Bahrain\",\"Asia/Rangoon|Asia/Yangon\",\"Asia/Riyadh|Asia/Aden\",\"Asia/Riyadh|Asia/Kuwait\",\"Asia/Seoul|ROK\",\"Asia/Shanghai|Asia/Chongqing\",\"Asia/Shanghai|Asia/Chungking\",\"Asia/Shanghai|Asia/Harbin\",\"Asia/Shanghai|PRC\",\"Asia/Taipei|ROC\",\"Asia/Tehran|Iran\",\"Asia/Thimphu|Asia/Thimbu\",\"Asia/Tokyo|Japan\",\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\"Asia/Urumqi|Asia/Kashgar\",\"Atlantic/Faroe|Atlantic/Faeroe\",\"Atlantic/Reykjavik|Iceland\",\"Atlantic/South_Georgia|Etc/GMT+2\",\"Australia/Adelaide|Australia/South\",\"Australia/Brisbane|Australia/Queensland\",\"Australia/Broken_Hill|Australia/Yancowinna\",\"Australia/Darwin|Australia/North\",\"Australia/Hobart|Australia/Tasmania\",\"Australia/Lord_Howe|Australia/LHI\",\"Australia/Melbourne|Australia/Victoria\",\"Australia/Perth|Australia/West\",\"Australia/Sydney|Australia/ACT\",\"Australia/Sydney|Australia/Canberra\",\"Australia/Sydney|Australia/NSW\",\"Etc/GMT-0|Etc/GMT\",\"Etc/GMT-0|Etc/GMT+0\",\"Etc/GMT-0|Etc/GMT0\",\"Etc/GMT-0|Etc/Greenwich\",\"Etc/GMT-0|GMT\",\"Etc/GMT-0|GMT+0\",\"Etc/GMT-0|GMT-0\",\"Etc/GMT-0|GMT0\",\"Etc/GMT-0|Greenwich\",\"Etc/UTC|Etc/UCT\",\"Etc/UTC|Etc/Universal\",\"Etc/UTC|Etc/Zulu\",\"Etc/UTC|UCT\",\"Etc/UTC|UTC\",\"Etc/UTC|Universal\",\"Etc/UTC|Zulu\",\"Europe/Belgrade|Europe/Ljubljana\",\"Europe/Belgrade|Europe/Podgorica\",\"Europe/Belgrade|Europe/Sarajevo\",\"Europe/Belgrade|Europe/Skopje\",\"Europe/Belgrade|Europe/Zagreb\",\"Europe/Chisinau|Europe/Tiraspol\",\"Europe/Dublin|Eire\",\"Europe/Helsinki|Europe/Mariehamn\",\"Europe/Istanbul|Asia/Istanbul\",\"Europe/Istanbul|Turkey\",\"Europe/Lisbon|Portugal\",\"Europe/London|Europe/Belfast\",\"Europe/London|Europe/Guernsey\",\"Europe/London|Europe/Isle_of_Man\",\"Europe/London|Europe/Jersey\",\"Europe/London|GB\",\"Europe/London|GB-Eire\",\"Europe/Moscow|W-SU\",\"Europe/Oslo|Arctic/Longyearbyen\",\"Europe/Oslo|Atlantic/Jan_Mayen\",\"Europe/Prague|Europe/Bratislava\",\"Europe/Rome|Europe/San_Marino\",\"Europe/Rome|Europe/Vatican\",\"Europe/Warsaw|Poland\",\"Europe/Zurich|Europe/Busingen\",\"Europe/Zurich|Europe/Vaduz\",\"Indian/Christmas|Etc/GMT-7\",\"Pacific/Auckland|Antarctica/McMurdo\",\"Pacific/Auckland|Antarctica/South_Pole\",\"Pacific/Auckland|NZ\",\"Pacific/Chatham|NZ-CHAT\",\"Pacific/Chuuk|Pacific/Truk\",\"Pacific/Chuuk|Pacific/Yap\",\"Pacific/Easter|Chile/EasterIsland\",\"Pacific/Guam|Pacific/Saipan\",\"Pacific/Honolulu|Pacific/Johnston\",\"Pacific/Honolulu|US/Hawaii\",\"Pacific/Kwajalein|Kwajalein\",\"Pacific/Pago_Pago|Pacific/Midway\",\"Pacific/Pago_Pago|Pacific/Samoa\",\"Pacific/Pago_Pago|US/Samoa\",\"Pacific/Palau|Etc/GMT-9\",\"Pacific/Pohnpei|Pacific/Ponape\",\"Pacific/Port_Moresby|Etc/GMT-10\",\"Pacific/Tarawa|Etc/GMT-12\",\"Pacific/Tarawa|Pacific/Funafuti\",\"Pacific/Tarawa|Pacific/Wake\",\"Pacific/Tarawa|Pacific/Wallis\"]}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment-timezone/data/packed/latest.json\n// module id = 591\n// module chunks = 1","'use strict'\n\n/*!\n * imports.\n */\n\nvar bind = Function.prototype.bind || require('fast-bind')\n\n/*!\n * exports.\n */\n\nmodule.exports = curry2\n\n/**\n * Curry a binary function.\n *\n * @param {Function} fn\n * Binary function to curry.\n *\n * @param {Object} [self]\n * Function `this` context.\n *\n * @return {Function|*}\n * If partially applied, return unary function, otherwise, return result of full application.\n */\n\nfunction curry2 (fn, self) {\n var out = function () {\n if (arguments.length === 0) return out\n\n return arguments.length > 1\n ? fn.apply(self, arguments)\n : bind.call(fn, self, arguments[0])\n }\n\n out.uncurry = function uncurry () {\n return fn\n }\n\n return out\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/curry2/index.js\n// module id = 592\n// module chunks = 1","'use strict';\nmodule.exports = function(boundThis) {\n var f = this\n , ret\n\n if (arguments.length < 2)\n ret = function() {\n if (this instanceof ret) {\n var ret_ = f.apply(this, arguments)\n return Object(ret_) === ret_\n ? ret_\n : this\n }\n else\n return f.apply(boundThis, arguments)\n }\n else {\n var boundArgs = new Array(arguments.length - 1)\n for (var i = 1; i < arguments.length; i++)\n boundArgs[i - 1] = arguments[i]\n\n ret = function() {\n var boundLen = boundArgs.length\n , args = new Array(boundLen + arguments.length)\n , i\n for (i = 0; i < boundLen; i++)\n args[i] = boundArgs[i]\n for (i = 0; i < arguments.length; i++)\n args[boundLen + i] = arguments[i]\n\n if (this instanceof ret) {\n var ret_ = f.apply(this, args)\n return Object(ret_) === ret_\n ? ret_\n : this\n }\n else\n return f.apply(boundThis, args)\n }\n }\n\n ret.prototype = f.prototype\n return ret\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fast-bind/bind-loop.js\n// module id = 593\n// module chunks = 1","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/browser.js\n// module id = 594\n// module chunks = 1","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/debug.js\n// module id = 595\n// module chunks = 1","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ms/index.js\n// module id = 596\n// module chunks = 1","'use strict';\n\n/*!\n * exports.\n */\n\nmodule.exports = brackets2dots;\n\n/*!\n * regexp patterns.\n */\n\nvar REPLACE_BRACKETS = /\\[([^\\[\\]]+)\\]/g;\nvar LFT_RT_TRIM_DOTS = /^[.]*|[.]*$/g;\n\n/**\n * Convert string with bracket notation to dot property notation.\n *\n * ### Examples:\n *\n * brackets2dots('group[0].section.a.seat[3]')\n * //=> 'group.0.section.a.seat.3'\n *\n * brackets2dots('[0].section.a.seat[3]')\n * //=> '0.section.a.seat.3'\n *\n * brackets2dots('people[*].age')\n * //=> 'people.*.age'\n *\n * @param {String} string\n * original string\n *\n * @return {String}\n * dot/bracket-notation string\n */\n\nfunction brackets2dots(string) {\n return ({}).toString.call(string) == '[object String]'\n ? string.replace(REPLACE_BRACKETS, '.$1').replace(LFT_RT_TRIM_DOTS, '')\n : ''\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/brackets2dots/index.js\n// module id = 597\n// module chunks = 1","'use strict'\n\nvar toString = Object.prototype.toString\n\n/**\n * Transform dot-delimited strings to array of strings.\n *\n * @param {String} string\n * Dot-delimited string.\n *\n * @return {Array}\n * Array of strings.\n */\n\nfunction dotsplit (string) {\n var idx = -1\n var str = compact(normalize(string).split('.'))\n var end = str.length\n var out = []\n\n while (++idx < end) {\n out.push(todots(str[idx]))\n }\n\n return out\n}\n\n/**\n * Replace escapes with a placeholder.\n *\n * @param {String} string\n * Dot-delimited string.\n *\n * @return {String}\n * Dot-delimited string with placeholders in place of escapes.\n */\n\nfunction normalize (string) {\n return (toString.call(string) === '[object String]' ? string : '').replace(/\\\\\\./g, '\\uffff')\n}\n\n/**\n * Drop empty values from array.\n *\n * @param {Array} array\n * Array of strings.\n *\n * @return {Array}\n * Array of strings (empty values dropped).\n */\n\nfunction compact (arr) {\n var idx = -1\n var end = arr.length\n var out = []\n\n while (++idx < end) {\n if (arr[idx]) out.push(arr[idx])\n }\n\n return out\n}\n\n/**\n * Change placeholder to dots.\n *\n * @param {String} string\n * Dot-delimited string with placeholders.\n *\n * @return {String}\n * Dot-delimited string without placeholders.\n */\n\nfunction todots (string) {\n return string.replace(/\\uffff/g, '.')\n}\n\n/*!\n * exports.\n */\n\nmodule.exports = dotsplit\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dotsplit.js/index.js\n// module id = 598\n// module chunks = 1","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIntersection.js\n// module id = 599\n// module chunks = 1","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_setCacheAdd.js\n// module id = 600\n// module chunks = 1","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_setCacheHas.js\n// module id = 601\n// module chunks = 1","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIndexOf.js\n// module id = 602\n// module chunks = 1","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsNaN.js\n// module id = 603\n// module chunks = 1","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_strictIndexOf.js\n// module id = 604\n// module chunks = 1","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_castArrayLikeObject.js\n// module id = 605\n// module chunks = 1","var utils = require('./utils');\n\n/**\n * superagentCache constructor\n * @constructor\n * @param {superagent} agent (optional)\n * @param {cache module} cache (optional)\n * @param {object} defaults (optional)\n */\nmodule.exports = function(agent, cache, defaults){\n\n var superagent = (agent) ? agent : require('superagent');\n\n if(!superagent.patchedBySuperagentCache){\n superagent.cache = (cache && cache.get) ? cache : new (require('cache-service-cache-module'))(cache);\n superagent.defaults = defaults || {};\n superagent.pendingRequests = {};\n var Request = superagent.Request;\n var props = utils.resetProps(superagent.defaults);\n var supportedMethods = ['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE'];\n var cacheableMethods = ['GET', 'HEAD'];\n superagent.patchedBySuperagentCache = true;\n\n /**\n * Whether to execute an http query if the cache does not have the generated key\n * @param {boolean} doQuery\n */\n Request.prototype.doQuery = function(doQuery){\n props.doQuery = doQuery;\n return this;\n }\n\n /**\n * Remove the given params from the query object after executing an http query and before generating a cache key\n * @param {array of strings} pruneParams\n */\n Request.prototype.pruneParams = function(pruneParams){\n props.pruneParams = pruneParams;\n return this;\n }\n\n /**\n * Remove the given options from the headers object after executing an http query and before generating a cache key\n * @param {boolean} pruneOptions\n */\n Request.prototype.pruneOptions = function(pruneOptions){\n props.pruneOptions = pruneOptions;\n return this;\n }\n\n /**\n * Execute some logic on superagent's http response object before caching and returning it\n * @param {function} prune\n */\n Request.prototype.prune = function(prune){\n props.prune = prune;\n return this;\n }\n\n /**\n * Retrieve a top-level property from superagent's http response object before to cache and return\n * @param {string} responseProp\n */\n Request.prototype.responseProp = function(responseProp){\n props.responseProp = responseProp;\n return this;\n }\n\n /**\n * Set an expiration for this key that will override the configured cache's default expiration\n * @param {integer} expiration (seconds)\n */\n Request.prototype.expiration = function(expiration){\n props.expiration = expiration;\n return this;\n }\n\n /**\n * Whether to cache superagent's http response object when it \"empty\"--especially useful with .prune and .pruneParams\n * @param {boolean} cacheWhenEmpty\n */\n Request.prototype.cacheWhenEmpty = function(cacheWhenEmpty){\n props.cacheWhenEmpty = cacheWhenEmpty;\n return this;\n }\n\n /**\n * Whether to execute an http query regardless of whether the cache has the generated key\n * @param {boolean} forceUpdate\n */\n Request.prototype.forceUpdate = function(forceUpdate){\n props.forceUpdate = (typeof forceUpdate === 'boolean') ? forceUpdate : true;\n return this;\n }\n\n /**\n * Whether to execute identical network calls.\n * When used, calls made for resources that are already pending will not be made, but will\n * be responded to with the response from the already pending call.\n * @param {boolean} preventDuplicateCalls\n */\n Request.prototype.preventDuplicateCalls = function(preventDuplicateCalls){\n props.preventDuplicateCalls = (typeof preventDuplicateCalls === 'boolean') ? preventDuplicateCalls : true;\n return this;\n }\n\n /**\n * Initialize a background refresh for the generated key and value\n * @param {boolean | function} backgroundRefresh\n */\n Request.prototype.backgroundRefresh = function(backgroundRefresh){\n props.backgroundRefresh = (typeof backgroundRefresh !== 'undefined') ? backgroundRefresh : true;\n return this;\n }\n\n /**\n * Overwrites superagent's fake promise support and adds the generated cache key\n * Only applies if Request.prototype.promise is not set\n * Fixes this isse: https://github.com/jpodwys/superagent-cache/issues/38\n */\n if(!Request.prototype.promise){\n Request.prototype.then = function(fulfill, reject){\n return this.end(function (err, response, key) {\n err ? reject(err) : fulfill(response, key);\n });\n }\n }\n\n /**\n * An alias for the .end function because I use ._end and .end for other things\n */\n Request.prototype.execute = Request.prototype.end;\n\n /**\n * Wraps the .end function so that .resetProps gets called--callable so that no caching logic takes place\n */\n Request.prototype._end = function(cb){\n props = utils.resetProps(superagent.defaults);\n this.execute(cb);\n }\n\n /**\n * Execute all caching and http logic\n * @param {function} cb\n */\n Request.prototype.end = function(cb){\n var curProps = props;\n props = utils.resetProps(superagent.defaults);\n this.scRedirectsList = this.scRedirectsList || [];\n this.scRedirectsList = this.scRedirectsList.concat(this._redirectList);\n if(~supportedMethods.indexOf(this.method.toUpperCase())){\n var _this = this;\n var key = utils.keygen(superagent, this, curProps);\n if(~cacheableMethods.indexOf(this.method.toUpperCase())){\n superagent.cache.get(key, function (err, response){\n if(!err && response && !curProps.forceUpdate){\n utils.callbackExecutor(cb, err, response, key);\n }\n else{\n if(curProps.doQuery){\n if(curProps.preventDuplicateCalls){\n if(!superagent.pendingRequests[key]){\n superagent.pendingRequests[key] = [];\n } else {\n return superagent.pendingRequests[key].push(cb);\n }\n }\n _this._end(function (err, response){\n if(err){\n utils.handlePendingRequests(curProps, superagent, key, err, response);\n return utils.callbackExecutor(cb, err, response, key);\n }\n else if(!err && response){\n response.redirects = _this.scRedirectsList;\n if(curProps.prune){\n response = curProps.prune(response);\n }\n else if(curProps.responseProp){\n response = response[curProps.responseProp] || null;\n }\n else{\n response = utils.gutResponse(response);\n }\n if(!utils.isEmpty(response) || curProps.cacheWhenEmpty){\n var refresh = curProps.backgroundRefresh || null;\n if(typeof refresh == 'boolean'){\n refresh = utils.getBackgroundRefreshFunction(superagent, curProps);\n }\n superagent.cache.set(key, response, curProps.expiration, refresh, function (){\n utils.handlePendingRequests(curProps, superagent, key, err, response);\n return utils.callbackExecutor(cb, err, response, key);\n });\n }\n else{\n delete superagent.pendingRequests[key];\n return utils.callbackExecutor(cb, err, response, key);\n }\n }\n });\n }\n else{\n return utils.callbackExecutor(cb, null, null, key);\n }\n }\n });\n }\n else{\n this._end(function (err, response){\n if(err){\n return utils.callbackExecutor(cb, err, response, key);\n }\n if(!err && response){\n var keyGet = key.replace('\"method\":\"' + _this.method + '\"', '\"method\":\"GET\"');\n var keyHead = key.replace('\"method\":\"' + _this.method + '\"', '\"method\":\"HEAD\"');\n superagent.cache.del([keyGet, keyHead], function (){\n utils.callbackExecutor(cb, err, response, key);\n });\n }\n });\n }\n }\n else{\n this._end(function (err, response){\n return utils.callbackExecutor(cb, err, response, undefined);\n });\n }\n }\n }\n\n if(!agent){\n return superagent;\n }\n\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent-cache/superagentCache.js\n// module id = 606\n// module chunks = 1","module.exports = {\n /**\n * Generate a cache key unique to this query\n * @param {superagent} agent\n * @param {object} reg\n * @param {object} cProps\n */\n keygen: function(agent, req, cProps){\n var cleanParams = null;\n var cleanOptions = null;\n var params = this.getQueryParams(req);\n var options = this.getHeaderOptions(req);\n if(cProps.pruneParams || cProps.pruneOptions){\n cleanParams = (cProps.pruneParams) ? this.pruneObj(this.cloneObject(params), cProps.pruneParams) : params;\n cleanOptions = (cProps.pruneOptions) ? this.pruneObj(this.cloneObject(options), cProps.pruneOptions, true) : options;\n }\n return JSON.stringify({\n nameSpace: agent.cache.nameSpace,\n method: req.method,\n uri: req.url,\n params: cleanParams || params || null,\n options: cleanOptions || options || null\n });\n },\n\n /**\n * Find and extract query params\n * @param {object} reg\n */\n getQueryParams: function(req){\n if(req && req.qs && !this.isEmpty(req.qs)){\n return req.qs;\n }\n else if(req && req.qsRaw){\n return this.arrayToObj(req.qsRaw);\n }\n else if(req && req.req){\n return this.stringToObj(req.req.path);\n }\n else if(req && req._query){\n return this.stringToObj(req._query.join('&'));\n }\n return null;\n },\n\n /**\n * Find and extract headers\n * @param {object} reg\n */\n getHeaderOptions: function(req){\n //I have to remove the User-Agent header ever since superagent 1.7.0\n if(req && req._header){\n return this.pruneObj(req._header, ['User-Agent', 'user-agent']);\n }\n else if(req && req.req && req.req._headers){\n return this.pruneObj(req.req._headers, ['User-Agent', 'user-agent']);\n }\n else if(req && req.header){\n return this.pruneObj(req.header, ['User-Agent', 'user-agent']);\n }\n return null;\n },\n\n /**\n * Convert an array to an object\n * @param {array} arr\n */\n arrayToObj: function(arr){\n if(arr && arr.length){\n var obj = {};\n for(var i = 0; i < arr.length; i++){\n var str = arr[i];\n var kvArray = str.split('&');\n for(var j = 0; j < kvArray.length; j++){\n var kvString = kvArray[j].split('=');\n obj[kvString[0]] = kvString[1];\n }\n }\n return obj;\n }\n return null;\n },\n\n /**\n * Convert a string to an object\n * @param {string} str\n */\n stringToObj: function(str){\n if(str){\n var obj = {};\n if(~str.indexOf('?')){\n var strs = str.split('?');\n str = strs[1];\n }\n var kvArray = str.split('&');\n for(var i = 0; i < kvArray.length; i++){\n var kvString = kvArray[i].split('=');\n obj[kvString[0]] = kvString[1];\n }\n return obj;\n }\n return null;\n },\n\n /**\n * Remove properties from an object\n * @param {object} obj\n * @param {array} props\n * @param {boolean} isOptions\n */\n pruneObj: function(obj, props, isOptions){\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if(isOptions){\n delete obj[prop.toLowerCase()];\n }\n delete obj[prop];\n }\n return obj;\n },\n\n /**\n * Simplify superagent's http response object\n * @param {object} r\n */\n gutResponse: function(r){\n var newResponse = {};\n newResponse.body = r.body;\n newResponse.text = r.text;\n newResponse.headers = r.headers;\n newResponse.statusCode = r.statusCode;\n newResponse.status = r.status;\n newResponse.ok = r.ok;\n return newResponse;\n },\n\n /**\n * Determine whether a value is considered empty\n * @param {*} val\n */\n isEmpty: function(val){\n return (val === false || val === null || (typeof val == 'object' && Object.keys(val).length == 0));\n },\n\n /**\n * Return a clone of an object\n * @param {object} obj\n */\n cloneObject: function(obj){\n var newObj = {};\n for(var attr in obj) {\n if (obj.hasOwnProperty(attr)){\n newObj[attr] = obj[attr];\n }\n }\n return newObj;\n },\n\n handlePendingRequests: function(curProps, superagent, key, err, response){\n if(curProps.preventDuplicateCalls){\n if(superagent.pendingRequests[key] && (!this.isEmpty(response) || curProps.cacheWhenEmpty)){\n var self = this;\n var pendingRequests = superagent.pendingRequests[key];\n pendingRequests.forEach(function (cb){\n self.callbackExecutor(cb, err, response, key);\n });\n }\n delete superagent.pendingRequests[key];\n }\n },\n\n /**\n * Reset superagent-cache's default query properties using the defaults object\n * @param {object} d\n */\n resetProps: function(d){\n return {\n doQuery: (typeof d.doQuery === 'boolean') ? d.doQuery : true,\n cacheWhenEmpty: (typeof d.cacheWhenEmpty === 'boolean') ? d.cacheWhenEmpty : true,\n prune: d.prune,\n pruneParams: d.pruneParams,\n pruneOptions: d.pruneOptions,\n responseProp: d.responseProp,\n expiration: d.expiration,\n forceUpdate: d.forceUpdate,\n preventDuplicateCalls: d.preventDuplicateCalls,\n backgroundRefresh: d.backgroundRefresh\n };\n },\n\n /**\n * Generate a background refresh query identical to the current query\n * @param {superagent} agent\n * @param {object} curProps\n */\n getBackgroundRefreshFunction: function(agent, curProps){\n return function(key, cb){\n key = JSON.parse(key);\n var method = key.method.toLowerCase();\n var request = agent[method](key.uri)\n .doQuery(curProps.doQuery)\n .pruneParams(curProps.pruneParams)\n .pruneOptions(curProps.pruneOptions)\n .prune(curProps.prune)\n .responseProp(curProps.responseProp)\n .expiration(curProps.expiration)\n .cacheWhenEmpty(curProps.cacheWhenEmpty);\n if(key.params){\n request.query(key.params)\n }\n if(key.options){\n request.set(key.options);\n }\n request.end(cb);\n }\n },\n\n /**\n * Handle the varying number of callback output params\n * @param {function} cb\n * @param {object} err\n * @param {object} response\n * @param {string} key\n */\n callbackExecutor: function(cb, err, response, key){\n if(cb.length === 1){\n cb(response);\n }\n else if(cb.length > 1){\n cb(err, response, key);\n }\n else{\n throw new Error('UnsupportedCallbackException: Your .end() callback must pass at least one argument.');\n }\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent-cache/utils.js\n// module id = 607\n// module chunks = 1","/**\n * Module dependencies.\n */\n\nvar Emitter = require('emitter');\nvar reduce = require('reduce');\n\n/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n root = self;\n} else { // Other environments\n root = this;\n}\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isHost(obj) {\n var str = {}.toString.call(obj);\n\n switch (str) {\n case '[object File]':\n case '[object Blob]':\n case '[object FormData]':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest\n && (!root.location || 'file:' != root.location.protocol\n || !root.ActiveXObject)) {\n return new XMLHttpRequest;\n } else {\n try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n }\n return false;\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n ? function(s) { return s.trim(); }\n : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return obj === Object(obj);\n}\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n var pairs = [];\n for (var key in obj) {\n if (null != obj[key]) {\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n }\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (Array.isArray(val)) {\n return val.forEach(function(v) {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n }\n pairs.push(encodeURIComponent(key)\n + '=' + encodeURIComponent(val));\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n var obj = {};\n var pairs = str.split('&');\n var parts;\n var pair;\n\n for (var i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n parts = pair.split('=');\n obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'application/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n 'form': 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\n request.serialize = {\n 'application/x-www-form-urlencoded': serialize,\n 'application/json': JSON.stringify\n };\n\n /**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n var lines = str.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var val;\n\n lines.pop(); // trailing CRLF\n\n for (var i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n return reduce(str.split(/ *; */), function(obj, str){\n var parts = str.split(/ *= */)\n , key = parts.shift()\n , val = parts.shift();\n\n if (key && val) obj[key] = val;\n return obj;\n }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n options = options || {};\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n this.setStatusProperties(this.xhr.status);\n this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this.setHeaderProperties(this.header);\n this.body = this.req.method != 'HEAD'\n ? this.parseBody(this.text ? this.text : this.xhr.response)\n : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype.setHeaderProperties = function(header){\n // content-type\n var ct = this.header['content-type'] || '';\n this.type = type(ct);\n\n // params\n var obj = params(ct);\n for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype.parseBody = function(str){\n var parse = request.parse[this.type];\n return parse && str && (str.length || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype.setStatusProperties = function(status){\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n var type = status / 100 | 0;\n\n // status / class\n this.status = this.statusCode = status;\n this.statusType = type;\n\n // basics\n this.info = 1 == type;\n this.ok = 2 == type;\n this.clientError = 4 == type;\n this.serverError = 5 == type;\n this.error = (4 == type || 5 == type)\n ? this.toError()\n : false;\n\n // sugar\n this.accepted = 202 == status;\n this.noContent = 204 == status;\n this.badRequest = 400 == status;\n this.unauthorized = 401 == status;\n this.notAcceptable = 406 == status;\n this.notFound = 404 == status;\n this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n var req = this.req;\n var method = req.method;\n var url = req.url;\n\n var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n var err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n Emitter.call(this);\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {};\n this._header = {};\n this.on('end', function(){\n var err = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch(e) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = e;\n // issue #675: return the raw response if the response parsing fails\n err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n if (err) {\n return self.callback(err, res);\n }\n\n if (res.status >= 200 && res.status < 300) {\n return self.callback(err, res);\n }\n\n var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n\n self.callback(new_err, res);\n });\n}\n\n/**\n * Mixin `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Allow for extension\n */\n\nRequest.prototype.use = function(fn) {\n fn(this);\n return this;\n}\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.timeout = function(ms){\n this._timeout = ms;\n return this;\n};\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.clearTimeout = function(){\n this._timeout = 0;\n clearTimeout(this._timer);\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\n\nRequest.prototype.abort = function(){\n if (this.aborted) return;\n this.aborted = true;\n this.xhr.abort();\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.set = function(field, val){\n if (isObject(field)) {\n for (var key in field) {\n this.set(key, field[key]);\n }\n return this;\n }\n this._header[field.toLowerCase()] = val;\n this.header[field] = val;\n return this;\n};\n\n/**\n * Remove header `field`.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.unset = function(field){\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Get case-insensitive header `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api private\n */\n\nRequest.prototype.getHeader = function(field){\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Force given parser\n *\n * Sets the body parser no matter type.\n *\n * @param {Function}\n * @api public\n */\n\nRequest.prototype.parse = function(fn){\n this._parser = fn;\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass){\n var str = btoa(user + ':' + pass);\n this.set('Authorization', 'Basic ' + str);\n return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n* request.get('/shoes')\n* .query('size=10')\n* .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n if ('string' != typeof val) val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Write the field `name` and `val` for \"multipart/form-data\"\n * request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n * ```\n *\n * @param {String} name\n * @param {String|Blob|File} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.field = function(name, val){\n if (!this._formData) this._formData = new root.FormData();\n this._formData.append(name, val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n * .attach(new Blob(['<a id=\"a\"><b id=\"b\">hey!</b></a>'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n if (!this._formData) this._formData = new root.FormData();\n this._formData.append(field, file, filename || file.name);\n return this;\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.send = function(data){\n var obj = isObject(data);\n var type = this.getHeader('Content-Type');\n\n // merge\n if (obj && isObject(this._data)) {\n for (var key in data) {\n this._data[key] = data[key];\n }\n } else if ('string' == typeof data) {\n if (!type) this.type('form');\n type = this.getHeader('Content-Type');\n if ('application/x-www-form-urlencoded' == type) {\n this._data = this._data\n ? this._data + '&' + data\n : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!obj || isHost(data)) return this;\n if (!type) this.type('json');\n return this;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n var fn = this._callback;\n this.clearTimeout();\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype.timeoutError = function(){\n var timeout = this._timeout;\n var err = new Error('timeout of ' + timeout + 'ms exceeded');\n err.timeout = timeout;\n this.callback(err);\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequest.prototype.withCredentials = function(){\n this._withCredentials = true;\n return this;\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n var self = this;\n var xhr = this.xhr = request.getXHR();\n var query = this._query.join('&');\n var timeout = this._timeout;\n var data = this._formData || this._data;\n\n // store callback\n this._callback = fn || noop;\n\n // state change\n xhr.onreadystatechange = function(){\n if (4 != xhr.readyState) return;\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n var status;\n try { status = xhr.status } catch(e) { status = 0; }\n\n if (0 == status) {\n if (self.timedout) return self.timeoutError();\n if (self.aborted) return;\n return self.crossDomainError();\n }\n self.emit('end');\n };\n\n // progress\n var handleProgress = function(e){\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n e.direction = 'download';\n self.emit('progress', e);\n };\n if (this.hasListeners('progress')) {\n xhr.onprogress = handleProgress;\n }\n try {\n if (xhr.upload && this.hasListeners('progress')) {\n xhr.upload.onprogress = handleProgress;\n }\n } catch(e) {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n\n // timeout\n if (timeout && !this._timer) {\n this._timer = setTimeout(function(){\n self.timedout = true;\n self.abort();\n }, timeout);\n }\n\n // querystring\n if (query) {\n query = request.serializeObject(query);\n this.url += ~this.url.indexOf('?')\n ? '&' + query\n : '?' + query;\n }\n\n // initiate request\n xhr.open(this.method, this.url, true);\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {\n // serialize stuff\n var contentType = this.getHeader('Content-Type');\n var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (var field in this.header) {\n if (null == this.header[field]) continue;\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data !== 'undefined' ? data : null);\n return this;\n};\n\n/**\n * Faux promise support\n *\n * @param {Function} fulfill\n * @param {Function} reject\n * @return {Request}\n */\n\nRequest.prototype.then = function (fulfill, reject) {\n return this.end(function(err, res) {\n err ? reject(err) : fulfill(res);\n });\n}\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * Issue a request:\n *\n * Examples:\n *\n * request('GET', '/users').end(callback)\n * request('/users').end(callback)\n * request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(method, url) {\n // callback\n if ('function' == typeof url) {\n return new Request('GET', method).end(url);\n }\n\n // url first\n if (1 == arguments.length) {\n return new Request('GET', method);\n }\n\n return new Request(method, url);\n}\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n var req = request('GET', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n var req = request('HEAD', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n var req = request('DELETE', url);\n if (fn) req.end(fn);\n return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n var req = request('PATCH', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n var req = request('POST', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n var req = request('PUT', url);\n if ('function' == typeof data) fn = data, data = null;\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * Expose `request`.\n */\n\nmodule.exports = request;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent-cache/node_modules/superagent/lib/client.js\n// module id = 608\n// module chunks = 1","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent-cache/node_modules/component-emitter/index.js\n// module id = 609\n// module chunks = 1","\n/**\n * Reduce `arr` with `fn`.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Mixed} initial\n *\n * TODO: combatible error handling?\n */\n\nmodule.exports = function(arr, fn, initial){ \n var idx = 0;\n var len = arr.length;\n var curr = arguments.length == 3\n ? initial\n : arr[idx++];\n\n while (idx < len) {\n curr = fn.call(null, curr, arr[idx], ++idx, arr);\n }\n \n return curr;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/reduce-component/index.js\n// module id = 610\n// module chunks = 1","/**\n * cacheModule constructor\n * @param config: {\n * type: {string | 'cache-module'}\n * verbose: {boolean | false},\n * defaultExpiration: {integer | 900},\n * readOnly: {boolean | false},\n * checkOnPreviousEmpty: {boolean | true},\n * backgroundRefreshIntervalCheck: {boolean | true},\n * backgroundRefreshInterval: {integer | 60000},\n * backgroundRefreshMinTtl: {integer | 70000},\n * storage: {string | null},\n * storageMock: {object | null}\n * }\n */\nfunction cacheModule(config){\n var self = this;\n config = config || {};\n self.type = config.type || 'cache-module';\n self.verbose = config.verbose || false;\n self.defaultExpiration = config.defaultExpiration || 900;\n self.readOnly = config.readOnly || false;\n self.checkOnPreviousEmpty = (typeof config.checkOnPreviousEmpty === 'boolean') ? config.checkOnPreviousEmpty : true;\n self.backgroundRefreshIntervalCheck = (typeof config.backgroundRefreshIntervalCheck === 'boolean') ? config.backgroundRefreshIntervalCheck : true;\n self.backgroundRefreshInterval = config.backgroundRefreshInterval || 60000;\n self.backgroundRefreshMinTtl = config.backgroundRefreshMinTtl || 70000;\n var store = null;\n var storageMock = config.storageMock || false;\n var backgroundRefreshEnabled = false;\n var browser = (typeof window !== 'undefined');\n var cache = {\n db: {},\n expirations: {},\n refreshKeys: {}\n };\n var storageKey;\n\n setupBrowserStorage();\n log(false, 'Cache-module client created with the following defaults:', {type: self.type, defaultExpiration: self.defaultExpiration, verbose: self.verbose, readOnly: self.readOnly});\n\n /**\n * Get the value associated with a given key\n * @param {string} key\n * @param {function} cb\n */\n self.get = function(key, cb){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .get() requires 2 arguments.');\n log(false, 'get() called:', {key: key});\n try {\n var now = Date.now();\n var expiration = cache.expirations[key];\n if(expiration > now){\n cb(null, cache.db[key]);\n }\n else{\n expire(key);\n cb(null, null);\n }\n } catch (err) {\n cb({name: 'GetException', message: err}, null);\n }\n }\n\n /**\n * Get multiple values given multiple keys\n * @param {array} keys\n * @param {function} cb\n * @param {integer} index\n */\n self.mget = function(keys, cb, index){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .mget() requires 2 arguments.');\n log(false, '.mget() called:', {keys: keys});\n var values = {};\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n self.get(key, function(err, response){\n if(response !== null){\n values[key] = response;\n }\n });\n }\n cb(null, values, index);\n }\n\n /**\n * Associate a key and value and optionally set an expiration\n * @param {string} key\n * @param {string | object} value\n * @param {integer} expiration\n * @param {function} refresh\n * @param {function} cb\n */\n self.set = function(){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .set() requires at least 2 arguments.');\n var key = arguments[0];\n var value = arguments[1];\n var expiration = arguments[2] || null;\n var refresh = (arguments.length == 5) ? arguments[3] : null;\n var cb = (arguments.length == 5) ? arguments[4] : arguments[3];\n log(false, '.set() called:', {key: key, value: value});\n if(!self.readOnly){\n try {\n expiration = (expiration) ? (expiration * 1000) : (self.defaultExpiration * 1000);\n var exp = expiration + Date.now();\n cache.expirations[key] = exp;\n cache.db[key] = value;\n if(cb) cb();\n if(refresh){\n cache.refreshKeys[key] = {expiration: exp, lifeSpan: expiration, refresh: refresh};\n backgroundRefreshInit();\n }\n overwriteBrowserStorage();\n } catch (err) {\n log(true, '.set() failed for cache of type ' + self.type, {name: 'CacheModuleSetException', message: err});\n }\n }\n }\n\n /**\n * Associate multiple keys with multiple values and optionally set expirations per function and/or key\n * @param {object} obj\n * @param {integer} expiration\n * @param {function} cb\n */\n self.mset = function(obj, expiration, cb){\n throwErrorIf((arguments.length < 1), 'ARGUMENT_EXCEPTION: .mset() requires at least 1 argument.');\n log(false, '.mset() called:', {data: obj});\n for(var key in obj){\n if(obj.hasOwnProperty(key)){\n var tempExpiration = expiration || self.defaultExpiration;\n var value = obj[key];\n if(typeof value === 'object' && value.cacheValue){\n tempExpiration = value.expiration || tempExpiration;\n value = value.cacheValue;\n }\n self.set(key, value, tempExpiration);\n }\n }\n if(cb) cb();\n }\n\n /**\n * Delete the provided keys and their associated values\n * @param {array} keys\n * @param {function} cb\n */\n self.del = function(keys, cb){\n throwErrorIf((arguments.length < 1), 'ARGUMENT_EXCEPTION: .del() requires at least 1 argument.');\n log(false, '.del() called:', {keys: keys});\n if(typeof keys === 'object'){\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n delete cache.db[key];\n delete cache.expirations[key];\n delete cache.refreshKeys[key];\n }\n if(cb) cb(null, keys.length);\n }\n else{\n delete cache.db[keys];\n delete cache.expirations[keys];\n delete cache.refreshKeys[keys];\n if(cb) cb(null, 1); \n }\n overwriteBrowserStorage();\n }\n\n /**\n * Flush all keys and values\n * @param {function} cb\n */\n self.flush = function(cb){\n log(false, '.flush() called');\n cache.db = {};\n cache.expirations = {};\n cache.refreshKeys = {};\n if(cb) cb();\n overwriteBrowserStorage();\n }\n\n /**\n * Enable browser storage if desired and available\n */\n function setupBrowserStorage(){\n if(browser || storageMock){\n if(storageMock){\n store = storageMock;\n storageKey = 'cache-module-storage-mock';\n }\n else{\n var storageType = (config.storage === 'local' || config.storage === 'session') ? config.storage : null;\n store = (storageType && typeof Storage !== void(0)) ? window[storageType + 'Storage'] : false;\n storageKey = (storageType) ? 'cache-module-' + storageType + '-storage' : null;\n }\n if(store){\n var db = store.getItem(storageKey);\n try {\n cache = JSON.parse(db) || cache;\n } catch (err) { /* Do nothing */ }\n }\n else{\n log(true, 'Browser storage is not supported by this browser. Defaulting to an in-memory cache.');\n }\n }\n }\n\n /**\n * Overwrite namespaced browser storage with current cache\n */\n function overwriteBrowserStorage(){\n if((browser && store) || storageMock){\n var db = cache;\n try {\n db = JSON.stringify(db);\n } catch (err) { /* Do nothing */ }\n store.setItem(storageKey, db);\n }\n }\n\n /**\n * Throw a given error if error is true\n * @param {boolean} error\n * @param {string} message\n */\n function throwErrorIf(error, message){\n if(error) throw new Error(message);\n }\n\n /**\n * Delete a given key from cache.db and cache.expirations but not from cache.refreshKeys\n * @param {string} key\n */\n function expire(key){\n delete cache.db[key];\n delete cache.expirations[key];\n overwriteBrowserStorage();\n }\n\n /**\n * Initialize background refresh\n */\n function backgroundRefreshInit(){\n if(!backgroundRefreshEnabled){\n backgroundRefreshEnabled = true;\n if(self.backgroundRefreshIntervalCheck){\n if(self.backgroundRefreshInterval > self.backgroundRefreshMinTtl){\n throw new Error('BACKGROUND_REFRESH_INTERVAL_EXCEPTION: backgroundRefreshInterval cannot be greater than backgroundRefreshMinTtl.');\n }\n }\n setInterval(backgroundRefresh, self.backgroundRefreshInterval);\n }\n }\n\n /**\n * Handle the refresh callback from the consumer, save the data to redis.\n *\n * @param {string} key The key used to save.\n * @param {Object} data refresh keys data.\n * @param {Error|null} err consumer callback failure.\n * @param {*} response The consumer response.\n */\n function handleRefreshResponse (key, data, err, response) {\n if(!err) {\n this.set(key, response, (data.lifeSpan / 1000), data.refresh, function(){});\n }\n }\n\n /**\n * Refreshes all keys that were set with a refresh function\n */\n function backgroundRefresh() {\n var keys = Object.keys(cache.refreshKeys);\n keys.forEach(function(key) {\n var data = cache.refreshKeys[key];\n if(data.expiration - Date.now() < this.backgroundRefreshMinTtl){\n data.refresh(key, handleRefreshResponse.bind(this, key, data));\n }\n }, self);\n }\n\n /**\n * Error logging logic\n * @param {boolean} isError\n * @param {string} message\n * @param {object} data\n */\n function log(isError, message, data){\n if(self.verbose || isError){\n if(data) console.log(self.type + ': ' + message, data);\n else console.log(self.type + message);\n }\n }\n}\n\nmodule.exports = cacheModule;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/superagent-cache/node_modules/cache-service-cache-module/cacheModule.js\n// module id = 611\n// module chunks = 1","/**\n * cacheModule constructor\n * @param config: {\n * type: {string | 'cache-module'}\n * verbose: {boolean | false},\n * defaultExpiration: {integer | 900},\n * readOnly: {boolean | false},\n * checkOnPreviousEmpty: {boolean | true},\n * backgroundRefreshIntervalCheck: {boolean | true},\n * backgroundRefreshInterval: {integer | 60000},\n * backgroundRefreshMinTtl: {integer | 70000},\n * storage: {string | null},\n * storageMock: {object | null}\n * }\n */\nfunction cacheModule(config){\n var self = this;\n config = config || {};\n self.type = config.type || 'cache-module';\n self.verbose = config.verbose || false;\n self.defaultExpiration = config.defaultExpiration || 900;\n self.readOnly = config.readOnly || false;\n self.checkOnPreviousEmpty = (typeof config.checkOnPreviousEmpty === 'boolean') ? config.checkOnPreviousEmpty : true;\n self.backgroundRefreshIntervalCheck = (typeof config.backgroundRefreshIntervalCheck === 'boolean') ? config.backgroundRefreshIntervalCheck : true;\n self.backgroundRefreshInterval = config.backgroundRefreshInterval || 60000;\n self.backgroundRefreshMinTtl = config.backgroundRefreshMinTtl || 70000;\n var store = null;\n var storageMock = config.storageMock || false;\n var backgroundRefreshEnabled = false;\n var browser = (typeof window !== 'undefined');\n var cache = {\n db: {},\n expirations: {},\n refreshKeys: {}\n };\n var storageKey;\n\n setupBrowserStorage();\n log(false, 'Cache-module client created with the following defaults:', {type: self.type, defaultExpiration: self.defaultExpiration, verbose: self.verbose, readOnly: self.readOnly});\n\n /**\n * Get the value associated with a given key\n * @param {string} key\n * @param {function} cb\n */\n self.get = function(key, cb){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .get() requires 2 arguments.');\n log(false, 'get() called:', {key: key});\n try {\n var now = Date.now();\n var expiration = cache.expirations[key];\n if(expiration > now){\n cb(null, cache.db[key]);\n }\n else{\n expire(key);\n cb(null, null);\n }\n } catch (err) {\n cb({name: 'GetException', message: err}, null);\n }\n }\n\n /**\n * Get multiple values given multiple keys\n * @param {array} keys\n * @param {function} cb\n * @param {integer} index\n */\n self.mget = function(keys, cb, index){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .mget() requires 2 arguments.');\n log(false, '.mget() called:', {keys: keys});\n var values = {};\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n self.get(key, function(err, response){\n if(response !== null){\n values[key] = response;\n }\n });\n }\n cb(null, values, index);\n }\n\n /**\n * Associate a key and value and optionally set an expiration\n * @param {string} key\n * @param {string | object} value\n * @param {integer} expiration\n * @param {function} refresh\n * @param {function} cb\n */\n self.set = function(){\n throwErrorIf((arguments.length < 2), 'ARGUMENT_EXCEPTION: .set() requires at least 2 arguments.');\n var key = arguments[0];\n var value = arguments[1];\n var expiration = arguments[2] || null;\n var refresh = (arguments.length == 5) ? arguments[3] : null;\n var cb = (arguments.length == 5) ? arguments[4] : arguments[3];\n log(false, '.set() called:', {key: key, value: value});\n if(!self.readOnly){\n try {\n expiration = (expiration) ? (expiration * 1000) : (self.defaultExpiration * 1000);\n var exp = expiration + Date.now();\n cache.expirations[key] = exp;\n cache.db[key] = value;\n if(cb) cb();\n if(refresh){\n cache.refreshKeys[key] = {expiration: exp, lifeSpan: expiration, refresh: refresh};\n backgroundRefreshInit();\n }\n overwriteBrowserStorage();\n } catch (err) {\n log(true, '.set() failed for cache of type ' + self.type, {name: 'CacheModuleSetException', message: err});\n }\n }\n }\n\n /**\n * Associate multiple keys with multiple values and optionally set expirations per function and/or key\n * @param {object} obj\n * @param {integer} expiration\n * @param {function} cb\n */\n self.mset = function(obj, expiration, cb){\n throwErrorIf((arguments.length < 1), 'ARGUMENT_EXCEPTION: .mset() requires at least 1 argument.');\n log(false, '.mset() called:', {data: obj});\n for(var key in obj){\n if(obj.hasOwnProperty(key)){\n var tempExpiration = expiration || self.defaultExpiration;\n var value = obj[key];\n if(typeof value === 'object' && value.cacheValue){\n tempExpiration = value.expiration || tempExpiration;\n value = value.cacheValue;\n }\n self.set(key, value, tempExpiration);\n }\n }\n if(cb) cb();\n }\n\n /**\n * Delete the provided keys and their associated values\n * @param {array} keys\n * @param {function} cb\n */\n self.del = function(keys, cb){\n throwErrorIf((arguments.length < 1), 'ARGUMENT_EXCEPTION: .del() requires at least 1 argument.');\n log(false, '.del() called:', {keys: keys});\n if(typeof keys === 'object'){\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n delete cache.db[key];\n delete cache.expirations[key];\n delete cache.refreshKeys[key];\n }\n if(cb) cb(null, keys.length);\n }\n else{\n delete cache.db[keys];\n delete cache.expirations[keys];\n delete cache.refreshKeys[keys];\n if(cb) cb(null, 1); \n }\n overwriteBrowserStorage();\n }\n\n /**\n * Flush all keys and values\n * @param {function} cb\n */\n self.flush = function(cb){\n log(false, '.flush() called');\n cache.db = {};\n cache.expirations = {};\n cache.refreshKeys = {};\n if(cb) cb();\n overwriteBrowserStorage();\n }\n\n /**\n * Enable browser storage if desired and available\n */\n function setupBrowserStorage(){\n if(browser || storageMock){\n if(storageMock){\n store = storageMock;\n storageKey = 'cache-module-storage-mock';\n }\n else{\n var storageType = (config.storage === 'local' || config.storage === 'session') ? config.storage : null;\n store = (storageType && typeof Storage !== void(0)) ? window[storageType + 'Storage'] : false;\n storageKey = (storageType) ? self.type + '-' + storageType + '-storage' : null;\n }\n if(store){\n var db = store.getItem(storageKey);\n try {\n cache = JSON.parse(db) || cache;\n } catch (err) { /* Do nothing */ }\n }\n // If storageType is set but store is not, the desired storage mechanism was not available\n else if(storageType){\n log(true, 'Browser storage is not supported by this browser. Defaulting to an in-memory cache.');\n }\n }\n }\n\n /**\n * Overwrite namespaced browser storage with current cache\n */\n function overwriteBrowserStorage(){\n if((browser && store) || storageMock){\n var db = cache;\n try {\n db = JSON.stringify(db);\n } catch (err) { /* Do nothing */ }\n store.setItem(storageKey, db);\n }\n }\n\n /**\n * Throw a given error if error is true\n * @param {boolean} error\n * @param {string} message\n */\n function throwErrorIf(error, message){\n if(error) throw new Error(message);\n }\n\n /**\n * Delete a given key from cache.db and cache.expirations but not from cache.refreshKeys\n * @param {string} key\n */\n function expire(key){\n delete cache.db[key];\n delete cache.expirations[key];\n overwriteBrowserStorage();\n }\n\n /**\n * Initialize background refresh\n */\n function backgroundRefreshInit(){\n if(!backgroundRefreshEnabled){\n backgroundRefreshEnabled = true;\n if(self.backgroundRefreshIntervalCheck){\n if(self.backgroundRefreshInterval > self.backgroundRefreshMinTtl){\n throw new Error('BACKGROUND_REFRESH_INTERVAL_EXCEPTION: backgroundRefreshInterval cannot be greater than backgroundRefreshMinTtl.');\n }\n }\n setInterval(backgroundRefresh, self.backgroundRefreshInterval);\n }\n }\n\n /**\n * Handle the refresh callback from the consumer, save the data to redis.\n *\n * @param {string} key The key used to save.\n * @param {Object} data refresh keys data.\n * @param {Error|null} err consumer callback failure.\n * @param {*} response The consumer response.\n */\n function handleRefreshResponse (key, data, err, response) {\n if(!err) {\n this.set(key, response, (data.lifeSpan / 1000), data.refresh, function(){});\n }\n }\n\n /**\n * Refreshes all keys that were set with a refresh function\n */\n function backgroundRefresh() {\n var keys = Object.keys(cache.refreshKeys);\n keys.forEach(function(key) {\n var data = cache.refreshKeys[key];\n if(data.expiration - Date.now() < this.backgroundRefreshMinTtl){\n data.refresh(key, handleRefreshResponse.bind(this, key, data));\n }\n }, self);\n }\n\n /**\n * Error logging logic\n * @param {boolean} isError\n * @param {string} message\n * @param {object} data\n */\n function log(isError, message, data){\n if(self.verbose || isError){\n if(data) console.log(self.type + ': ' + message, data);\n else console.log(self.type + message);\n }\n }\n}\n\nmodule.exports = cacheModule;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/cache-service-cache-module/cacheModule.js\n// module id = 612\n// module chunks = 1","const Memcached = require('memcached');\nconst snappy = require('snappy');\n\nfunction memcachedCacheService(conf) {\n const config = conf || {};\n const verbose = config.verbose || false;\n const defaultExpiration = config.defaultExpiration || 900;\n const backgroundRefreshIntervalCheck = (typeof config.backgroundRefreshIntervalCheck === 'boolean') ? config.backgroundRefreshIntervalCheck : true;\n const backgroundRefreshInterval = config.backgroundRefreshInterval || 60000;\n const backgroundRefreshMinTtl = config.backgroundRefreshMinTtl || 70000;\n const memcachedConfig = config.memcached;\n\n let refreshKeys = {};\n let backgroundRefreshEnabled = false;\n\n const memcached = new Memcached(memcachedConfig.servers, memcachedConfig);\n\n if (verbose) console.log('memcachedCacheService config', { defaultExpiration });\n\n /**\n * Initialize background refresh\n */\n function backgroundRefreshInit() {\n if (!backgroundRefreshEnabled) {\n backgroundRefreshEnabled = true;\n if (backgroundRefreshIntervalCheck) {\n if (backgroundRefreshInterval > backgroundRefreshMinTtl) {\n throw new Error('BACKGROUND_REFRESH_INTERVAL_EXCEPTION:' +\n ' backgroundRefreshInterval cannot be greater than backgroundRefreshMinTtl.');\n }\n }\n setInterval(function() {\n backgroundRefresh();\n }, backgroundRefreshInterval);\n }\n }\n\n /**\n * Refreshes all keys that were set with a refresh function\n */\n function backgroundRefresh() {\n if (verbose) console.log('memcachedCacheService.backgroundRefresh');\n\n Object.keys(refreshKeys).forEach((key) => {\n var data = refreshKeys[key];\n if (data.expiration - Date.now() < backgroundRefreshMinTtl) {\n data.refresh (key, function (err, response) {\n if (!err) {\n if (verbose) console.log('memcachedCacheService.backgroundRefresh', { key });\n set(key, response, data.lifeSpan, data.refresh, () => {});\n }\n });\n }\n });\n }\n\n function get(key, callback = () => {}) {\n return memcached.get(key, (err, data) => {\n if (verbose) console.log('memcachedCacheService.get', { key });\n if (err) {\n console.error(err);\n callback(err);\n } else if (!data){\n callback(new Error('No data returned from memcached'));\n } else {\n snappy.uncompress(data, {asBuffer: false}, (snappyErr, original) => {\n if (snappyErr){\n callback(snappyErr);\n return;\n }\n let resp;\n try {\n resp = JSON.parse(original);\n } catch (parseError) {\n resp = original;\n }\n callback(snappyErr, resp);\n });\n }\n });\n }\n\n function set(key, value) {\n snappy.compress(JSON.stringify(value), (compressionErr, compressedValue) => {\n const expiration = (arguments[2] || null) || defaultExpiration;\n const refresh = (arguments.length == 5) ? arguments[3] : null;\n const callback = ((arguments.length == 5) ? arguments[4] : arguments[3]) || (() => {});\n return memcached.set(key, compressedValue, expiration, (err) => {\n if (verbose) console.log('memcachedCacheService.set', { key, compressedValue, expiration, refresh });\n if (err) console.error(key, err);\n callback(err);\n\n if (refresh && !err) {\n const exp = (expiration * 1000) + Date.now();\n refreshKeys[key] = { expiration: exp, lifeSpan: expiration, refresh: refresh };\n backgroundRefreshInit();\n }\n });\n });\n }\n\n return {\n db: memcached,\n type: 'memcached',\n verbose,\n defaultExpiration,\n get,\n mget: memcached.getMulti,\n set,\n mset: function(obj, [expiration], [callback]) {\n // TODO: implement this.\n },\n del: (keys, callback = () => {}) => {\n if (verbose) console.log('memcachedCacheService.del', { keys });\n\n if (typeof keys === 'object') {\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n memcached.del(key, callback);\n delete refreshKeys[key];\n }\n } else {\n memcached.del(keys, callback);\n delete refreshKeys[keys];\n }\n\n\n delete refreshKeys[key];\n },\n flush: (callback = () => {}) => {\n if (verbose) console.log('memcachedCacheService.flush');\n refreshKeys = {};\n memcached.flush(callback);\n }\n }\n}\n\nmodule.exports = memcachedCacheService;\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/api/cache/memcachedCacheService.js","module.exports = require('./lib/memcached.js');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/memcached/index.js\n// module id = 614\n// module chunks = 1","\"use strict\";\n\n/**\n * Node's native modules\n */\nvar Stream = require('net').Stream\n , Socket = require('net').Socket;\n\n/**\n * External or custom modules\n */\nvar HashRing = require('hashring')\n , Connection = require('./connection')\n , Jackpot = require('jackpot')\n , Utils = require('./utils')\n , IssueLog = Connection.IssueLog;\n\n/**\n * Variable lookups\n */\nvar curry = Utils.curry;\n\n/**\n * Constructs a new memcached client\n *\n * @constructor\n * @param {Mixed} args Array, string or object with servers\n * @param {Object} options options\n * @api public\n */\nfunction Client (args, options) {\n var servers = []\n , weights = {}\n , regular = 'localhost:11211'\n , key;\n\n // Parse down the connection arguments\n switch (Object.prototype.toString.call(args)) {\n case '[object Object]':\n weights = args;\n servers = Object.keys(args);\n break;\n\n case '[object Array]':\n servers = args.length ? args : [regular];\n break;\n\n default:\n servers.push(args || regular);\n break;\n }\n\n if (!servers.length) {\n throw new Error('No servers where supplied in the arguments');\n }\n\n // merge with global and user config\n Utils.merge(this, Client.config);\n Utils.merge(this, options);\n\n this.servers = servers;\n var compatibility = this.compatibility || this.compatiblity;\n this.HashRing = new HashRing(args, this.algorithm, {\n 'compatibility': compatibility,\n 'default port': compatibility === 'ketama' ? 11211 : null\n });\n this.connections = {};\n this.issues = [];\n}\n\n// Allows users to configure the memcached globally or per memcached client\nClient.config = {\n maxKeySize: 250 // max key size allowed by Memcached\n , maxExpiration: 2592000 // max expiration duration allowed by Memcached\n , maxValue: 1048576 // max length of value allowed by Memcached\n , activeQueries: 0\n , maxQueueSize: -1\n , algorithm: 'md5' // hashing algorithm that is used for key mapping\n , compatibility: 'ketama' // hashring compatibility\n\n , poolSize: 10 // maximal parallel connections\n , retries: 5 // Connection pool retries to pull connection from pool\n , factor: 3 // Connection pool retry exponential backoff factor\n , minTimeout: 1000 // Connection pool retry min delay before retrying\n , maxTimeout: 60000 // Connection pool retry max delay before retrying\n , randomize: false // Connection pool retry timeout randomization\n\n , reconnect: 18000000 // if dead, attempt reconnect each xx ms\n , timeout: 5000 // after x ms the server should send a timeout if we can't connect\n , failures: 5 // Number of times a server can have an issue before marked dead\n , failuresTimeout: 300000 // Time after which `failures` will be reset to original value, since last failure\n , retry: 30000 // When a server has an error, wait this amount of time before retrying\n , idle: 5000 // Remove connection from pool when no I/O after `idle` ms\n , remove: false // remove server if dead if false, we will attempt to reconnect\n , redundancy: false // allows you do re-distribute the keys over a x amount of servers\n , keyCompression: true // compress keys if they are to large (md5)\n , namespace: '' // sentinel to prepend to all memcache keys for namespacing the entries\n , debug: false // Output the commands and responses\n};\n\n// There some functions we don't want users to touch so we scope them\n(function (nMemcached) {\n var LINEBREAK = '\\r\\n'\n , NOREPLY = ' noreply'\n , FLUSH = 1E3\n , BUFFER = 1E2\n , CONTINUE = 1E1\n , FLAG_JSON = 1<<1\n , FLAG_BINARY = 1<<2\n , FLAG_NUMERIC = 1<<3;\n\n nMemcached.prototype.__proto__ = require('events').EventEmitter.prototype;\n\n var memcached = nMemcached.prototype\n , privates = {}\n , undefined;\n\n // Creates or generates a new connection for the give server, the callback\n // will receive the connection if the operation was successful\n memcached.connect = function connect(server, callback) {\n // Default port to 11211\n if(!server.match(/(.+):(\\d+)$/)) {\n server = server + ':11211';\n }\n\n // server is dead, bail out\n if (server in this.issues && this.issues[server].failed) {\n return callback(false, false);\n }\n\n // fetch from connection pool\n if (server in this.connections) {\n return this.connections[server].pull(callback);\n }\n\n // No connection factory created yet, so we must build one\n var serverTokens = server[0] === '/'\n ? server\n : /(.*):(\\d+){1,}$/.exec(server).reverse()\n , memcached = this;\n\n // Pop original string from array\n if (Array.isArray(serverTokens)) serverTokens.pop();\n\n var sid = 0\n , manager;\n\n /**\n * Generate a new connection pool manager.\n */\n\n manager = new Jackpot(this.poolSize);\n manager.retries = memcached.retries;\n manager.factor = memcached.factor;\n manager.minTimeout = memcached.minTimeout;\n manager.maxTimeout = memcached.maxTimeout;\n manager.randomize = memcached.randomize;\n\n manager.setMaxListeners(0);\n\n manager.factory(function factory() {\n var S = Array.isArray(serverTokens)\n ? new Stream\n : new Socket\n , Manager = this\n , idleTimeout = function() {\n Manager.remove(this);\n }\n , streamError = function(e) {\n memcached.connectionIssue(e.toString(), S);\n Manager.remove(this);\n };\n\n // config the Stream\n S.streamID = sid++;\n S.setTimeout(memcached.timeout);\n S.setNoDelay(true);\n S.setEncoding('utf8');\n S.metaData = [];\n S.responseBuffer = \"\";\n S.bufferArray = [];\n S.serverAddress = server;\n S.tokens = [].concat(serverTokens);\n S.memcached = memcached;\n\n // Add the event listeners\n Utils.fuse(S, {\n close: function streamClose() {\n Manager.remove(this);\n }\n , data: curry(memcached, privates.buffer, S)\n , connect: function streamConnect() {\n // Jackpot handles any pre-connect timeouts by calling back\n // with the error object.\n this.setTimeout(this.memcached.idle, idleTimeout);\n // Jackpot handles any pre-connect errors, but does not handle errors\n // once a connection has been made, nor does Jackpot handle releasing\n // connections if an error occurs post-connect\n this.on('error', streamError);\n }\n , end: S.end\n });\n\n // connect the net.Stream (or net.Socket) [port, hostname]\n S.connect.apply(S, S.tokens);\n return S;\n });\n\n manager.on('error', function err(e) {\n if (memcached.debug) console.log('Connection error', e);\n });\n\n this.connections[server] = manager;\n\n // now that we have setup our connection factory we can allocate a new\n // connection\n this.connections[server].pull(callback);\n };\n\n // Exposes buffer to test-suite\n memcached.buffer = function buffer() {\n return privates.buffer.apply(this, arguments);\n };\n\n // Creates a multi stream, so it's easier to query agains multiple memcached\n // servers.\n memcached.multi = function memcachedMulti(keys, callback) {\n var map = {}\n , memcached = this\n , servers\n , i;\n\n // gets all servers based on the supplied keys,\n // or just gives all servers if we don't have keys\n if (keys) {\n keys.forEach(function fetchMultipleServers(key) {\n var server = memcached.servers.length === 1\n ? memcached.servers[0]\n : memcached.HashRing.get(key);\n\n if (map[server]){\n map[server].push(key);\n } else {\n map[server] = [key];\n }\n });\n\n // store the servers\n servers = Object.keys(map);\n } else {\n servers = this.servers;\n }\n\n i = servers.length;\n\n while (i--) {\n //memcached.delegateCallback(this, servers[i], map[servers[i]], i, servers.length, callback);\n callback.call(this, servers[i], map[servers[i]], i, servers.length);\n }\n };\n\n // Executes the command on the net.Stream, if no server is supplied it will\n // use the query.key to get the server from the HashRing\n memcached.command = function memcachedCommand(queryCompiler, server) {\n\n this.activeQueries++;\n var query = queryCompiler();\n\n if (this.activeQueries> this.maxQueueSize && this.maxQueueSize > 0){\n this.makeCallback(query.callback, \"over queue limit\", null);\n query = null;\n return;\n }\n\n // generate a regular query,\n var redundancy = this.redundancy && this.redundancy < this.servers.length\n , queryRedundancy = query.redundancyEnabled\n , memcached = this;\n\n // validate the arguments\n if (query.validate && !Utils.validateArg(query, this)) {\n this.activeQueries--;\n return;\n }\n\n // try to find the correct server for this query\n if (!server) {\n // no need to do a hashring lookup if we only have one server assigned to\n // us\n if (this.servers.length === 1) {\n server = this.servers[0];\n } else {\n if (redundancy && queryRedundancy) {\n redundancy = this.HashRing.createRange(query.key, (this.redundancy + 1), true);\n server = redundancy.shift();\n } else {\n server = this.HashRing.get(query.key);\n }\n }\n }\n\n // check if any server exists or and if the server is still alive\n // a server may not exist if the manager was never able to connect\n // to any server.\n if (!server || (server in this.issues && this.issues[server].failed)) {\n return query.callback && memcached.makeCallback(query.callback,new Error(['Server at', server, 'not available'].join(' ')));\n }\n\n this.connect(server, function allocateMemcachedConnection(error, S) {\n if (memcached.debug) {\n query.command.split(LINEBREAK).forEach(function errors(line) {\n console.log(S.streamID + ' << ' + line);\n });\n }\n\n // S not set if unable to connect to server\n if (!S) {\n var S = {\n serverAddress: server,\n tokens: server.split(':').reverse()\n }\n var message = error || 'Unable to connect to server';\n memcached.connectionIssue(message, S);\n return query.callback && memcached.makeCallback(query.callback,new Error(message));\n\n }\n\n // Other errors besides inability to connect to server\n if (error) {\n memcached.connectionIssue(error.toString(), S);\n return query.callback && memcached.makeCallback(query.callback,error);\n }\n\n if (S.readyState !== 'open') {\n var message = 'Connection readyState is set to ' + S.readyState;\n memcached.connectionIssue(message, S);\n return query.callback && memcached.makeCallback(query.callback,new Error(message));\n }\n\n // used for request timing\n query.start = Date.now();\n S.metaData.push(query);\n S.write(Utils.reallocString(query.command + LINEBREAK));\n });\n\n // if we have redundancy enabled and the query is used for redundancy, than\n // we are going loop over the servers, check if we can reach them, and\n // connect to the correct net connection. because all redundancy queries are\n // executed with \"no reply\" we do not need to store the callback as there\n // will be no value to parse.\n if (redundancy && queryRedundancy) {\n queryRedundancy = queryCompiler(queryRedundancy);\n\n redundancy.forEach(function each(server) {\n if (server in memcached.issues && memcached.issues[server].failed){\n return;\n }\n\n memcached.connect(server, function allocateMemcachedConnection(error, S) {\n if (!S || error || S.readyState !== 'open') return;\n S.write(queryRedundancy.command + LINEBREAK);\n });\n });\n }\n };\n\n // Logs all connection issues, and handles them off. Marking all requests as\n // cache misses.\n memcached.connectionIssue = function connectionIssue(error, S) {\n if (S && S.end) S.end();\n\n var issues\n , server = S.serverAddress\n , memcached = this;\n\n // check for existing issue logs, or create a new log\n if (server in this.issues) {\n issues = this.issues[server];\n } else {\n issues = this.issues[server] = new IssueLog({\n server: server\n , tokens: S.tokens\n , reconnect: this.reconnect\n , failures: this.failures\n , failuresTimeout: this.failuresTimeout\n , retry: this.retry\n , remove: this.remove\n , failOverServers: this.failOverServers || null\n });\n\n // proxy the events\n Utils.fuse(issues, {\n issue: function issue(details) {\n memcached.emit('issue', details);\n }\n , failure: function failure(details) {\n memcached.emit('failure', details);\n }\n , reconnecting: function reconnect(details) {\n memcached.emit('reconnecting', details);\n }\n , reconnected: function reconnected(details) {\n memcached.emit('reconnect', details);\n }\n , remove: function remove(details) {\n // emit event and remove servers\n memcached.emit('remove', details);\n memcached.connections[server].end();\n\n if (this.failOverServers && this.failOverServers.length) {\n memcached.HashRing.swap(server, this.failOverServers.shift());\n } else {\n memcached.HashRing.remove(server);\n memcached.emit('failure', details);\n }\n }\n });\n\n // bumpt the event listener limit\n issues.setMaxListeners(0);\n }\n\n // log the issue\n issues.log(error);\n };\n\n // Kills all active connections\n memcached.end = function endMemcached() {\n var memcached = this;\n\n Object.keys(this.connections).forEach(function closeConnection(key) {\n memcached.connections[key].free(0);\n });\n };\n\n // These do not need to be publicly available as it's one of the most important\n // parts of the whole client, the parser commands:\n privates.parsers = {\n // handle error responses\n 'NOT_FOUND': function notfound(tokens, dataSet, err) {\n return [CONTINUE, false];\n }\n\n , 'NOT_STORED': function notstored(tokens, dataSet, err) {\n var errObj = new Error('Item is not stored');\n errObj.notStored = true;\n err.push(errObj);\n return [CONTINUE, false];\n }\n\n , 'ERROR': function error(tokens, dataSet, err) {\n err.push(new Error('Received an ERROR response'));\n return [FLUSH, false];\n }\n\n , 'CLIENT_ERROR': function clienterror(tokens, dataSet, err) {\n err.push(new Error(tokens.splice(1).join(' ')));\n return [CONTINUE, false];\n }\n\n , 'SERVER_ERROR': function servererror(tokens, dataSet, err, queue, S, memcached) {\n (memcached || this.memcached).connectionIssue(tokens.splice(1).join(' '), this);\n return [CONTINUE, false];\n }\n\n // keyword based responses\n , 'STORED': function stored(tokens, dataSet) {\n return [CONTINUE, true];\n }\n\n , 'TOUCHED': function touched(tokens, dataSet) {\n return [CONTINUE, true];\n }\n\n , 'DELETED': function deleted(tokens, dataSet) {\n return [CONTINUE, true];\n }\n\n , 'OK': function ok(tokens, dataSet) {\n return [CONTINUE, true];\n }\n\n , 'EXISTS': function exists(tokens, dataSet) {\n return [CONTINUE, false];\n }\n\n , 'END': function end(tokens, dataSet, err, queue) {\n if (!queue.length) queue.push(undefined);\n return [FLUSH, true];\n }\n\n // value parsing:\n , 'VALUE': function value(tokens, dataSet, err, queue) {\n var key = tokens[1]\n , flag = +tokens[2]\n , dataLen = tokens[3] // length of dataSet in raw bytes\n , cas = tokens[4]\n , multi = this.metaData[0] && this.metaData[0].multi || cas\n ? {}\n : false\n , tmp;\n\n // In parse data there is an '||' passing us the content of token\n // if dataSet is empty. This may be fine for other types of responses,\n // in the case of an empty string being stored in a key, it will\n // result in unexpected behavior:\n // https://github.com/3rd-Eden/node-memcached/issues/64\n if (dataLen === '0') {\n dataSet = '';\n }\n\n switch (flag) {\n case FLAG_JSON:\n dataSet = JSON.parse(dataSet);\n break;\n case FLAG_NUMERIC:\n dataSet = +dataSet;\n break;\n case FLAG_BINARY:\n tmp = new Buffer(dataSet.length);\n tmp.write(dataSet, 0, 'binary');\n dataSet = tmp;\n break;\n }\n\n // Add to queue as multiple get key key key key key returns multiple values\n if (!multi) {\n queue.push(dataSet);\n } else {\n multi[key] = dataSet;\n if (cas) multi.cas = cas;\n queue.push(multi);\n }\n\n return [BUFFER, false];\n }\n\n , 'INCRDECR': function incrdecr(tokens) {\n return [CONTINUE, +tokens[1]];\n }\n\n , 'STAT': function stat(tokens, dataSet, err, queue) {\n queue.push([tokens[1], /^\\d+$/.test(tokens[2]) ? +tokens[2] : tokens[2]]);\n return [BUFFER, true];\n }\n\n , 'VERSION': function version(tokens, dataSet) {\n var versionTokens = /(\\d+)(?:\\.)(\\d+)(?:\\.)(\\d+)$/.exec(tokens[1]);\n\n return [CONTINUE, {\n server: this.serverAddress\n , version: versionTokens[0]\n , major: versionTokens[1] || 0\n , minor: versionTokens[2] || 0\n , bugfix: versionTokens[3] || 0\n }];\n }\n\n , 'ITEM': function item(tokens, dataSet, err, queue) {\n queue.push({\n key: tokens[1]\n , b: +tokens[2].substr(1)\n , s: +tokens[4]\n });\n\n return [BUFFER, false];\n }\n // Amazon-specific memcached configuration information, used for node\n // auto-discovery.\n , 'CONFIG': function() {\n return [CONTINUE, this.bufferArray[0]];\n }\n };\n\n function resultSetIsEmpty(resultSet) {\n return !resultSet || (resultSet.length === 1 && !resultSet[0]);\n }\n\n // Parses down result sets\n privates.resultParsers = {\n // combines the stats array, in to an object\n 'stats': function stats(resultSet) {\n var response = {};\n if (resultSetIsEmpty(resultSet)) return response;\n\n // add references to the retrieved server\n response.server = this.serverAddress;\n\n // Fill the object\n resultSet.forEach(function each(statSet) {\n if (statSet) response[statSet[0]] = statSet[1];\n });\n\n return response;\n }\n\n // the settings uses the same parse format as the regular stats\n , 'stats settings': function settings() {\n return privates.resultParsers.stats.apply(this, arguments);\n }\n\n // Group slabs by slab id\n , 'stats slabs': function slabs(resultSet) {\n var response = {};\n if (resultSetIsEmpty(resultSet)) return response;\n\n // add references to the retrieved server\n response.server = this.serverAddress;\n\n // Fill the object\n resultSet.forEach(function each(statSet) {\n if (statSet) {\n var identifier = statSet[0].split(':');\n\n if (!response[identifier[0]]) response[identifier[0]] = {};\n response[identifier[0]][identifier[1]] = statSet[1];\n }\n });\n\n return response;\n }\n\n , 'stats items': function items(resultSet) {\n var response = {};\n if (resultSetIsEmpty(resultSet)) return response;\n\n // add references to the retrieved server\n response.server = this.serverAddress;\n\n // Fill the object\n resultSet.forEach(function each(statSet) {\n if (statSet && statSet.length > 1) {\n var identifier = statSet[0].split(':');\n\n if (!response[identifier[1]]) response[identifier[1]] = {};\n response[identifier[1]][identifier[2]] = statSet[1];\n }\n });\n\n return response;\n }\n };\n\n // Generates a RegExp that can be used to check if a chunk is memcached response identifier\n privates.allCommands = new RegExp('^(?:' + Object.keys(privates.parsers).join('|') + '|\\\\d' + ')');\n privates.bufferedCommands = new RegExp('^(?:' + Object.keys(privates.parsers).join('|') + ')');\n\n // When working with large chunks of responses, node chunks it in to pieces.\n // So we might have half responses. So we are going to buffer up the buffer\n // and user our buffered buffer to query // against. Also when you execute\n // allot of .writes to the same stream, node will combine the responses in to\n // one response stream. With no indication where it had cut the data. So it\n // can be it cuts inside the value response, or even right in the middle of\n // a line-break, so we need to make sure, the last piece in the buffer is\n // a LINEBREAK because that is all what is sure about the Memcached Protocol,\n // all responds end with them.\n privates.buffer = function BufferBuffer(S, BufferStream) {\n S.responseBuffer += BufferStream;\n\n // only call transform the data once we are sure, 100% sure, that we valid\n // response ending\n if (S.responseBuffer.substr(S.responseBuffer.length - 2) === LINEBREAK) {\n S.responseBuffer = Utils.reallocString(S.responseBuffer);\n\n var chunks = S.responseBuffer.split(LINEBREAK);\n\n if (this.debug) {\n chunks.forEach(function each(line) {\n console.log(S.streamID + ' >> ' + line);\n });\n }\n\n // Fix zero-line endings in the middle\n var chunkLength = (chunks.length-1);\n if (chunks[chunkLength].length === 0) chunks.splice(chunkLength, 1);\n\n S.responseBuffer = \"\"; // clear!\n this.rawDataReceived(S, S.bufferArray = S.bufferArray.concat(chunks));\n }\n };\n\n memcached.delegateCallback = function(){\n this.activeQueries--;\n var master = arguments[0];\n var cb = arguments[arguments.length-1];\n var args = Array.prototype.slice.call(arguments, 1, arguments.length-1);\n cb.apply(master, args);\n };\n\n memcached.makeCallback = function(cb){\n this.activeQueries--;\n var args = Array.prototype.slice.call(arguments, 1);\n cb.apply(this, args); //loose first\n };\n\n // The actual parsers function that scan over the responseBuffer in search of\n // Memcached response identifiers. Once we have found one, we will send it to\n // the dedicated parsers that will transform the data in a human readable\n // format, deciding if we should queue it up, or send it to a callback fn.\n memcached.rawDataReceived = function rawDataReceived(S) {\n var queue = []\n , token\n , tokenSet\n , dataSet\n , resultSet\n , metaData\n , err = []\n , tmp;\n\n while(S.bufferArray.length && privates.allCommands.test(S.bufferArray[0])) {\n token = S.bufferArray.shift();\n tokenSet = token.split(' ');\n\n if (/^\\d+$/.test(tokenSet[0])) {\n // special case for \"config get cluster\"\n // Amazon-specific memcached configuration information, see aws\n // documentation regarding adding auto-discovery to your client library.\n // Example response of a cache cluster containing three nodes:\n // configversion\\n\n // hostname|ip-address|port hostname|ip-address|port hostname|ip-address|port\\n\\r\\n\n if (/(([-.a-zA-Z0-9]+)\\|(\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b)\\|(\\d+))/.test(S.bufferArray[0])) {\n tokenSet.unshift('CONFIG');\n }\n // special case for digit only's these are responses from INCR and DECR\n else {\n tokenSet.unshift('INCRDECR');\n }\n }\n // special case for value, it's required that it has a second response!\n // add the token back, and wait for the next response, we might be\n // handling a big ass response here.\n if (tokenSet[0] === 'VALUE' && S.bufferArray.indexOf('END') === -1) {\n return S.bufferArray.unshift(token);\n }\n\n // check for dedicated parser\n if (privates.parsers[tokenSet[0]]) {\n\n // fetch the response content\n if (tokenSet[0] === 'VALUE') {\n dataSet = Utils.unescapeValue(S.bufferArray.shift());\n }\n\n resultSet = privates.parsers[tokenSet[0]].call(S, tokenSet, dataSet || token, err, queue, this);\n\n // check how we need to handle the resultSet response\n switch (resultSet.shift()) {\n case BUFFER:\n break;\n\n case FLUSH:\n metaData = S.metaData.shift();\n resultSet = queue;\n\n // if we have a callback, call it\n if (metaData && metaData.callback) {\n metaData.execution = Date.now() - metaData.start;\n this.delegateCallback(\n metaData\n , err.length ? err : err[0]\n\n // see if optional parsing needs to be applied to make the result set more readable\n , privates.resultParsers[metaData.type]\n ? privates.resultParsers[metaData.type].call(S, resultSet, err)\n : !Array.isArray(queue) || queue.length > 1 ? queue : queue[0]\n ,metaData.callback\n );\n }\n\n queue.length = err.length = 0;\n break;\n\n default:\n metaData = S.metaData.shift();\n\n if (metaData && metaData.callback) {\n metaData.execution = Date.now() - metaData.start;\n this.delegateCallback(metaData, err.length > 1 ? err : err[0], resultSet[0], metaData.callback);\n }\n\n err.length = 0;\n break;\n }\n } else {\n // handle unkown responses\n metaData = S.metaData.shift();\n if (metaData && metaData.callback){\n metaData.execution = Date.now() - metaData.start;\n this.delegateCallback(metaData, new Error('Unknown response from the memcached server: \"' + token + '\"'), false, metaData.callback);\n }\n }\n\n // cleanup\n dataSet = tokenSet = metaData = undefined;\n\n // check if we need to remove an empty item from the array, as splitting on /r/n might cause an empty\n // item at the end..\n if (S.bufferArray[0] === '') S.bufferArray.shift();\n }\n };\n\n // Small wrapper function that only executes errors when we have a callback\n privates.errorResponse = function errorResponse(error, callback) {\n if (typeof callback === 'function') {\n memcached.makeCallback(callback,error, false);\n }\n\n return false;\n };\n\n // This is where the actual Memcached API layer begins:\n memcached.touch = function touch(key, lifetime, callback) {\n var fullkey = this.namespace + key;\n this.command(function touchCommand() {\n return {\n key: fullkey\n , callback: callback\n , lifetime: lifetime\n , validate: [['key', String], ['lifetime', Number], ['callback', Function]]\n , type: 'touch'\n , command: ['touch', fullkey, lifetime].join(' ')\n };\n });\n };\n\n memcached.get = function get(key, callback) {\n if (Array.isArray(key)) return this.getMulti.apply(this, arguments);\n\n var fullkey = this.namespace + key;\n this.command(function getCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , validate: [['key', String], ['callback', Function]]\n , type: 'get'\n , command: 'get ' + fullkey\n };\n });\n };\n\n // the difference between get and gets is that gets, also returns a cas value\n // and gets doesn't support multi-gets at this moment.\n memcached.gets = function get(key, callback) {\n var fullkey = this.namespace + key;\n this.command(function getCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , validate: [['key', String], ['callback', Function]]\n , type: 'gets'\n , command: 'gets ' + fullkey\n };\n });\n };\n\n // Handles get's with multiple keys\n memcached.getMulti = function getMulti(keys, callback) {\n var memcached = this\n , responses = {}\n , errors = []\n , calls;\n\n if (memcached.namespace.length) keys = keys.map(function compile(key){\n return memcached.namespace + key;\n });\n\n // handle multiple responses and cache them untill we receive all.\n function handle(err, results) {\n if (err) {\n errors.push(err);\n }\n\n // add all responses to the array\n (Array.isArray(results) ? results : [results]).forEach(function each(value) {\n if (value && memcached.namespace.length) {\n var ns_key = Object.keys(value)[0]\n , newvalue = {};\n\n newvalue[ns_key.replace(memcached.namespace, '')] = value[ns_key];\n Utils.merge(responses, newvalue);\n } else {\n Utils.merge(responses, value);\n }\n });\n\n if (!--calls){\n callback(errors.length ? errors : undefined, responses);\n }\n }\n\n this.multi(keys, function multi(server, key, index, totals) {\n if (!calls) calls = totals;\n\n memcached.command(function getMultiCommand(noreply) {\n return {\n callback: handle\n , multi: true\n , type: 'get'\n , command: 'get ' + key.join(' ')\n , key: keys\n , validate: [['key', Array], ['callback', Function]]\n };\n }, server);\n });\n };\n\n // As all command nearly use the same syntax we are going to proxy them all to\n // this function to ease maintenance. This is possible because most set\n // commands will use the same syntax for the Memcached server. Some commands\n // do not require a lifetime and a flag, but the memcached server is smart\n // enough to ignore those.\n privates.setters = function setters(type, validate, key, value, lifetime, callback, cas) {\n var fullkey = this.namespace + key;\n var flag = 0\n , valuetype = typeof value\n , length;\n\n if (Buffer.isBuffer(value)) {\n flag = FLAG_BINARY;\n value = value.toString('binary');\n } else if (valuetype === 'number') {\n flag = FLAG_NUMERIC;\n value = value.toString();\n } else if (valuetype !== 'string') {\n flag = FLAG_JSON;\n value = JSON.stringify(value);\n }\n\n value = Utils.escapeValue(value);\n\n length = Buffer.byteLength(value);\n if (length > this.maxValue) {\n return privates.errorResponse(new Error('The length of the value is greater than ' + this.maxValue), callback);\n }\n\n this.command(function settersCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , lifetime: lifetime\n , value: value\n , cas: cas\n , validate: validate\n , type: type\n , redundancyEnabled: false\n , command: [type, fullkey, flag, lifetime, length].join(' ') +\n (cas ? ' ' + cas : '') +\n (noreply ? NOREPLY : '') +\n LINEBREAK + value\n };\n });\n };\n\n // Curry the function and so we can tell the type our private set function\n memcached.set = curry(undefined, privates.setters\n , 'set'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n );\n\n memcached.replace = curry(undefined, privates.setters\n , 'replace'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n );\n\n memcached.add = curry(undefined, privates.setters\n , 'add'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n );\n\n memcached.cas = function checkandset(key, value, cas, lifetime, callback) {\n privates.setters.call(this\n , 'cas'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n , key\n , value\n , lifetime\n , callback\n , cas\n );\n };\n\n memcached.append = function append(key, value, callback) {\n privates.setters.call(this\n , 'append'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n , key\n , value\n , 0\n , callback\n );\n };\n\n memcached.prepend = function prepend(key, value, callback) {\n privates.setters.call(this\n , 'prepend'\n , [\n ['key', String]\n , ['value', String]\n , ['lifetime', Number]\n , ['callback', Function]\n ]\n , key\n , value\n , 0\n , callback\n );\n };\n\n // Small handler for incr and decr's\n privates.incrdecr = function incrdecr(type, key, value, callback) {\n var fullkey = this.namespace + key;\n this.command(function incredecrCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , value: value\n , validate: [\n ['key', String]\n , ['value', Number]\n , ['callback', Function]\n ]\n , type: type\n , redundancyEnabled: true\n , command: [type, fullkey, value].join(' ') +\n (noreply ? NOREPLY : '')\n };\n });\n };\n\n // Curry the function and so we can tell the type our private incrdecr\n memcached.increment = memcached.incr = curry(undefined, privates.incrdecr, 'incr');\n memcached.decrement = memcached.decr = curry(undefined, privates.incrdecr, 'decr');\n\n // Deletes the keys from the servers\n memcached.del = function del(key, callback){\n var fullkey = this.namespace + key;\n this.command(function deleteCommand(noreply) {\n return {\n key: fullkey\n , callback: callback\n , validate: [\n ['key', String]\n , ['callback', Function]\n ]\n , type: 'delete'\n , redundancyEnabled: true\n , command: 'delete ' + fullkey +\n (noreply ? NOREPLY : '')\n };\n });\n };\n memcached['delete'] = memcached.del;\n\n // Small wrapper that handle single keyword commands such as FLUSH ALL, VERSION and STAT\n privates.singles = function singles(type, callback) {\n var memcached = this\n , responses = []\n , errors\n , calls;\n\n // handle multiple servers\n function handle(err, results) {\n if (err) {\n errors = errors || [];\n errors.push(err);\n }\n if (results) responses = responses.concat(results);\n\n // multi calls should ALWAYS return an array!\n if (!--calls) {\n callback(errors && errors.length ? errors.pop() : undefined, responses);\n }\n }\n\n this.multi(false, function multi(server, keys, index, totals) {\n if (!calls) calls = totals;\n\n memcached.command(function singlesCommand(noreply) {\n return {\n callback: handle\n , type: type\n , command: type\n };\n }, server);\n });\n };\n\n // Curry the function and so we can tell the type our private singles\n memcached.version = curry(undefined, privates.singles, 'version');\n memcached.flush = curry(undefined, privates.singles, 'flush_all');\n memcached.stats = curry(undefined, privates.singles, 'stats');\n memcached.settings = curry(undefined, privates.singles, 'stats settings');\n memcached.slabs = curry(undefined, privates.singles, 'stats slabs');\n memcached.items = curry(undefined, privates.singles, 'stats items');\n\n // aliases\n memcached.flushAll = memcached.flush;\n memcached.statsSettings = memcached.settings;\n memcached.statsSlabs = memcached.slabs;\n memcached.statsItems = memcached.items;\n\n\n // You need to use the items dump to get the correct server and slab settings\n // see simple_cachedump.js for an example\n memcached.cachedump = function cachedump(server, slabid, number, callback) {\n this.command(function cachedumpCommand(noreply) {\n return {\n callback: callback\n , number: number\n , slabid: slabid\n , validate: [\n ['number', Number]\n , ['slabid', Number]\n , ['callback', Function]\n ]\n , type: 'stats cachedump'\n , command: 'stats cachedump ' + slabid + ' ' + number\n };\n }, server);\n };\n})(Client);\n\nmodule.exports = Client;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/memcached/lib/memcached.js\n// module id = 615\n// module chunks = 1","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/base64-js/index.js\n// module id = 616\n// module chunks = 1","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ieee754/index.js\n// module id = 617\n// module chunks = 1","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/isarray/index.js\n// module id = 618\n// module chunks = 1","'use strict';\n\nvar SimpleCache = require(\"simple-lru-cache\")\n , parse = require('connection-parse')\n , crypto = require('crypto');\n\n/**\n * Generate the hash of the value.\n *\n * @api private\n */\nfunction hashValueHash(a, b, c, d) {\n return ((a << 24) | (b << 16) | (c << 8) | d) >>> 0;\n}\n\n/**\n * Add a virtual node parser to the connection string parser.\n *\n * @param {Object} data server data\n * @param {Mixed} value optional value\n * @api private\n */\nparse.extension('vnodes', function vnode(data, value) {\n if (typeof value === 'object' && !Array.isArray(value) && 'vnodes' in value) {\n data.vnodes = +value.vnodes || 0;\n } else {\n data.vnodes = 0;\n }\n});\n\n/**\n * HashRing implements consistent hashing so adding or removing servers of one\n * slot does not significantly change the mapping of the key to slots. The\n * consistent hashing algorithm is based on ketama or libketama.\n *\n * @constructor\n * @param {Mixed} server Servers that need to be added to the ring.\n * @param {Mixed} algorithm Either a Crypto compatible algorithm or custom hasher.\n * @param {Object} options Optional configuration and options for the ring.\n * @api public\n */\nfunction HashRing(servers, algorithm, options) {\n options = options || {};\n\n //\n // These properties can be configured\n //\n this.vnode = 'vnode count' in options ? options['vnode count'] : 40;\n this.algorithm = algorithm || 'md5';\n\n //\n // if the default port is set, and a host uses it, then it is excluded from\n // the hash.\n //\n this.defaultport = options['default port'] || null;\n\n //\n // There's a slight difference between libketama and python's hash_ring\n // module, libketama creates 160 points per server:\n //\n // 40 hashes (vnodes) and 4 replicas per hash = 160 points per server.\n //\n // The hash_ring module only uses 120 points per server:\n //\n // 40 hashes (vnodes) and 3 replicas per hash = 120 points per server.\n //\n // And that's the only difference between the original ketama hash and the\n // hash_ring package. Small, but important.\n //\n this.replicas = options.compatibility\n ? (options.compatibility === 'hash_ring' ? 3 : 4)\n : ('replicas' in options ? +options.replicas : 4);\n\n //\n // Replica's cannot be 0 as it means we have nothing to iterate over when\n // creating the initial hash ring.\n //\n if (this.replicas <= 0) this.replicas = 1;\n\n // Private properties.\n var connections = parse(servers);\n\n this.ring = [];\n this.size = 0;\n this.vnodes = connections.vnodes;\n this.servers = connections.servers;\n\n // Set up a ache as we don't want to preform a hashing operation every single\n // time we lookup a key.\n this.cache = new SimpleCache({\n maxSize: 'max cache size' in options ? options['max cache size'] : 5000\n });\n\n // Override the hashing function if people want to use a hashing algorithm\n // that is not supported by Node, for example if you want to MurMur hashing or\n // something else exotic.\n if ('function' === typeof this.algorithm) {\n this.hash = this.algorithm;\n }\n\n // Generate the continuum of the HashRing.\n this.continuum();\n}\n\n/**\n * Generates the continuum of server a.k.a. the Hash Ring based on their weights\n * and virtual nodes assigned.\n *\n * @returns {HashRing}\n * @api private\n */\nHashRing.prototype.continuum = function generate() {\n var servers = this.servers\n , self = this\n , index = 0\n , total = 0;\n\n // No servers, bailout.\n if (!servers.length) return this;\n\n // Generate the total weight of all the servers.\n total = servers.reduce(function reduce(total, server) {\n return total + server.weight;\n }, 0);\n\n servers.forEach(function each(server) {\n var percentage = server.weight / total\n , vnodes = self.vnodes[server.string] || self.vnode\n , length = Math.floor(percentage * vnodes * servers.length)\n , key\n , x;\n\n // If you supply us with a custom vnode size, we will use that instead of\n // our computed distribution.\n if (vnodes !== self.vnode) length = vnodes;\n\n for (var i = 0; i < length; i++) {\n if (self.defaultport && server.port === self.defaultport) {\n x = self.digest(server.host +'-'+ i);\n } else {\n x = self.digest(server.string +'-'+ i);\n }\n\n for (var j = 0; j < self.replicas; j++) {\n key = hashValueHash(x[3 + j * 4], x[2 + j * 4], x[1 + j * 4], x[j * 4]);\n self.ring[index] = new Node(key, server.string);\n index++;\n }\n }\n });\n\n // Sort the keys using the continuum points compare that is used in ketama\n // hashing.\n this.ring = this.ring.sort(function sorted(a, b) {\n if (a.value === b.value) return 0;\n else if (a.value > b.value) return 1;\n\n return -1;\n });\n\n this.size = this.ring.length;\n return this;\n};\n\n/**\n * Find the correct node for the key which is closest to the point after what\n * the given key hashes to.\n *\n * @param {String} key Key who's server we need to figure out.\n * @returns {String} Server address.\n * @api public\n */\nHashRing.prototype.get = function get(key) {\n var cache = this.cache.get(key);\n if (cache) return cache;\n\n var node = this.ring[this.find(this.hashValue(key))];\n if (!node) return undefined;\n\n this.cache.set(key, node.server);\n return node.server;\n};\n\n/**\n * Returns the position of the hashValue in the hashring.\n *\n * @param {Number} hashValue Find the nearest server close to this hash.\n * @returns {Number} Position of the server in the hash ring.\n * @api public\n */\nHashRing.prototype.find = function find(hashValue) {\n var ring = this.ring\n , high = this.size\n , low = 0\n , middle\n , prev\n , mid;\n\n // Preform a search on the array to find the server with the next biggest\n // point after what the given key hashes to.\n while (true) {\n mid = (low + high) >> 1;\n\n if (mid === this.size) return 0;\n\n middle = ring[mid].value;\n prev = mid === 0 ? 0 : ring[mid - 1].value;\n\n if (hashValue <= middle && hashValue > prev) return mid;\n\n if (middle < hashValue) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n\n if (low > high) return 0;\n }\n};\n\n/**\n * Generates a hash of the string.\n *\n * @param {String} key\n * @returns {String|Buffer} Hash, depends on node version.\n * @api private\n */\nHashRing.prototype.hash = function hash(key) {\n return crypto.createHash(this.algorithm).update(key).digest();\n};\n\n/**\n * Digest hash so we can make a numeric representation from the hash.\n *\n * @param {String} key The key that needs to be hashed.\n * @returns {Array}\n * @api private\n */\nHashRing.prototype.digest = function digest(key) {\n var hash = this.hash(key +'');\n\n // Support for Node 0.10 which returns buffers so we don't need to charAt\n // lookups.\n if ('string' !== typeof hash) return hash;\n\n return hash.split('').map(function charCode(char) {\n return char.charCodeAt(0);\n });\n};\n\n/**\n * Get the hashed value for the given key.\n *\n * @param {String} key\n * @returns {Number}\n * @api private\n */\nHashRing.prototype.hashValue = function hasher(key) {\n var x = this.digest(key);\n\n return hashValueHash(x[3], x[2], x[1], x[0]);\n};\n\n/**\n * None ketama:\n *\n * The following changes are not ported from the ketama algorithm and are hash\n * ring specific. Add, remove or replace servers with as less disruption as\n * possible.\n */\n\n/**\n * Get a range of different servers.\n *\n * @param {String} key\n * @param {Number} size Amount of servers it should return.\n * @param {Boolean} unique Return only unique keys.\n * @return {Array}\n * @api public\n */\nHashRing.prototype.range = function range(key, size, unique) {\n if (!this.size) return [];\n\n size = size || this.servers.length;\n unique = unique || 'undefined' === typeof unique;\n\n var position = this.find(this.hashValue(key))\n , length = this.ring.length\n , servers = []\n , node;\n\n // Start searching for servers from the position of the key to the end of\n // HashRing.\n for (var i = position; i < length; i++) {\n node = this.ring[i];\n\n // Do we need to make sure that we retrieve a unique list of servers?\n if (unique) {\n if (!~servers.indexOf(node.server)) servers.push(node.server);\n } else {\n servers.push(node.server);\n }\n\n if (servers.length === size) return servers;\n }\n\n // Not enough results yet, so iterate from the start of the hash ring to the\n // position of the hash ring. So we reach full circle again.\n for (i = 0; i < position; i++) {\n node = this.ring[i];\n\n // Do we need to make sure that we retrieve a unique list of servers?\n if (unique) {\n if (!~servers.indexOf(node.server)) servers.push(node.server);\n } else {\n servers.push(node.server);\n }\n\n if (servers.length === size) return servers;\n }\n\n return servers;\n};\n\n/**\n * Returns the points per server.\n *\n * @param {String} server Optional server to filter down.\n * @returns {Object} server -> Array(points).\n * @api public\n */\nHashRing.prototype.points = function points(servers) {\n servers = Array.isArray(servers) ? servers : Object.keys(this.vnodes);\n\n var nodes = Object.create(null)\n , node;\n\n servers.forEach(function servers(server) {\n nodes[server] = [];\n });\n\n for (var i = 0; i < this.size; i++) {\n node = this.ring[i];\n\n if (node.server in nodes) {\n nodes[node.server].push(node.value);\n }\n }\n\n return nodes;\n};\n\n/**\n * Hotswap identical servers with each other. This doesn't require the cache to\n * be completely nuked and the hash ring distribution to be re-calculated.\n *\n * Please note that removing the server and a new adding server could\n * potentially create a different distribution.\n *\n * @param {String} from The server that needs to be replaced.\n * @param {String} to The server that replaces the server.\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.swap = function swap(from, to) {\n var connection = parse(to).servers.pop()\n , self = this;\n\n this.ring.forEach(function forEach(node) {\n if (node.server === from) node.server = to;\n });\n\n this.cache.forEach(function forEach(value, key) {\n if (value === from) self.cache.set(key, to);\n }, this);\n\n // Update the virtual nodes\n this.vnodes[to] = this.vnodes[from];\n delete this.vnodes[from];\n\n // Update the servers\n this.servers = this.servers.map(function mapswap(server) {\n if (server.string === from) {\n server.string = to;\n server.host = connection.host;\n server.port = connection.port;\n }\n\n return server;\n });\n\n return this;\n};\n\n/**\n * Add a new server to ring without having to re-initialize the hashring. It\n * accepts the same arguments as you can use in the constructor.\n *\n * @param {Mixed} servers Servers that need to be added to the ring.\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.add = function add(servers) {\n var connections = Object.create(null);\n\n // Add the current servers to the set.\n this.servers.forEach(function forEach(server) {\n connections[server.string] = server;\n });\n\n parse(servers).servers.forEach(function forEach(server) {\n // Don't add duplicate servers\n if (server.string in connections) return;\n connections[server.string] = server;\n });\n\n // Now that we generated a complete set of servers, we can update the re-parse\n // the set and correctly added all the servers again.\n connections = parse(connections);\n this.vnodes = connections.vnodes;\n this.servers = connections.servers;\n\n // Rebuild the hash ring.\n this.reset();\n return this.continuum();\n};\n\n/**\n * Remove a server from the hashring.\n *\n * @param {Mixed} server The sever we want to remove.\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.remove = function remove(server) {\n var connection = parse(server).servers.pop();\n\n delete this.vnodes[connection.string];\n this.servers = this.servers.map(function map(server) {\n if (server.string === connection.string) return undefined;\n\n return server;\n }).filter(Boolean);\n\n // Rebuild the hash ring\n this.reset();\n return this.continuum();\n};\n\n/**\n * Checks if a given server exists in the hash ring.\n *\n * @param {String} server Server for whose existence we're checking\n * @returns {Boolean} Indication if we have that server.\n * @api public\n */\nHashRing.prototype.has = function add(server) {\n for (var i = 0; i < this.ring.length; i++) {\n if (this.ring[i].server === server) return true;\n }\n\n return false;\n};\n\n/**\n * Reset the HashRing to clean up all references\n *\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.reset = function reset() {\n this.ring.length = 0;\n this.size = 0;\n this.cache.reset();\n\n return this;\n};\n\n/**\n * End the hashring and clean up all of it's references.\n *\n * @returns {HashRing}\n * @api public\n */\nHashRing.prototype.end = function end() {\n this.reset();\n\n this.vnodes = {};\n this.servers.length = 0;\n\n return this;\n};\n\n/**\n * A single Node in our hash ring.\n *\n * @constructor\n * @param {Number} hashvalue\n * @param {String} server\n * @api private\n */\nfunction Node(hashvalue, server) {\n this.value = hashvalue;\n this.server = server;\n}\n\n//\n// Set up the legacy API aliases. These will be deprecated in the next release.\n//\n[\n { from: 'replaceServer' },\n { from: 'replace' },\n { from: 'removeServer', to: 'remove' },\n { from: 'addServer', to: 'add' },\n { from: 'getNode', to: 'get' },\n { from: 'getNodePosition', to: 'find' },\n { from: 'position', to: 'find' }\n].forEach(function depricate(api) {\n var notified = false;\n\n HashRing.prototype[api.from] = function depricating() {\n if (!notified) {\n console.warn();\n console.warn('[depricated] HashRing#'+ api.from +' is removed.');\n\n // Not every API has a replacement API that should be used\n if (api.to) {\n console.warn('[depricated] use HashRing#'+ api.to +' as replacement.');\n } else {\n console.warn('[depricated] the API has no replacement');\n }\n\n console.warn();\n notified = true;\n }\n\n if (api.to) return HashRing.prototype[api.to].apply(this, arguments);\n };\n});\n\n/**\n * Expose the current version number.\n *\n * @type {String}\n * @public\n */\nHashRing.version = require('./package.json').version;\n\n/**\n * Expose the module.\n *\n * @api public\n */\nmodule.exports = HashRing;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/hashring/index.js\n// module id = 619\n// module chunks = 1","module.exports = require('./lib/simple_lru.js');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/simple-lru-cache/index.js\n// module id = 620\n// module chunks = 1","\"use strict\";\n\n/**\n * LRU cache based on a double linked list\n */\n\nfunction ListElement(before,next,key,value){\n this.before = before\n this.next = next\n this.key = key\n this.value = value\n}\n\nListElement.prototype.setKey = function(key){\n this.key = key\n}\n\nListElement.prototype.setValue = function(value){\n this.value = value\n}\n\n\nfunction Cache(options){\n if(!options)\n options = {}\n this.maxSize = options.maxSize \n this.reset()\n}\n\n\nCache.prototype.reset = function(){\n this.size = 0 \n this.cache = {}\n this.tail = undefined\n this.head = undefined\n}\n\n\nCache.prototype.get = function(key,hit){\n var cacheVal = this.cache[key]\n /*\n * Define if the egt function should hit the value to move\n * it to the head of linked list \n */\n hit = hit != undefined && hit != null ? hit : true;\n if(cacheVal && hit)\n this.hit(cacheVal)\n else\n return undefined\n return cacheVal.value\n}\n\nCache.prototype.set = function(key,val,hit){\n var actual = this.cache[key]\n /*\n * Define if the set function should hit the value to move\n * it to the head of linked list \n */\n hit = hit != undefined && hit != null ? hit : true;\n \n \n if(actual){\n actual.value = val\n if(hit) this.hit(actual)\n }else{\n var cacheVal\n if(this.size >= this.maxSize){\n var tailKey = this.tail.key \n this.detach(this.tail)\n \n /*\n * If max is reached we'llreuse object to minimize GC impact \n * when the objects are cached short time\n */\n cacheVal = this.cache[tailKey]\n delete this.cache[tailKey]\n\n cacheVal.next = undefined\n cacheVal.before = undefined\n \n /*\n * setters reuse the array object \n */\n cacheVal.setKey(key)\n cacheVal.setValue(val)\n }\n\n cacheVal = cacheVal ? cacheVal : new ListElement(undefined,undefined,key,val)\n this.cache[key] = cacheVal\n this.attach(cacheVal)\n }\n}\n\nCache.prototype.del = function(key){\n var val = this.cache[key]\n if(!val)\n return;\n this.detach(val)\n delete this.cache[key]\n}\n\nCache.prototype.hit = function(cacheVal){\n //Send cacheVal to the head of list\n this.detach(cacheVal)\n this.attach(cacheVal)\n}\n\nCache.prototype.attach = function(element){\n if(!element)\n return;\n element.before = undefined\n element.next = this.head\n this.head = element\n if(!element.next)\n this.tail = element\n else\n element.next.before = element\n this.size++ \n}\n\nCache.prototype.detach = function(element){\n if(!element)\n return;\n var before = element.before\n var next = element.next\n if(before){\n before.next = next\n }else{\n this.head = next\n }\n if(next){\n next.before = before\n }else{\n this.tail = before\n }\n this.size--\n}\n\nCache.prototype.forEach = function(callback){\n var self = this\n Object.keys(this.cache).forEach(function(key){\n var val = self.cache[key]\n callback(val.value,key)\n })\n}\nmodule.exports=Cache\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/simple-lru-cache/lib/simple_lru.js\n// module id = 621\n// module chunks = 1","'use strict';\n\n/**\n * Parser extensions, so extra values or default values can be added to the\n * returned values.\n *\n * @type {Array}\n * @private\n */\nvar extensions = {};\n\n/**\n * Parse the server argument to a uniform format.\n *\n * @param {Mixed} args\n * @returns {Object}\n * @api private\n */\nfunction parse(args) {\n var servers;\n\n if (arguments.length > 1) {\n servers = Array.prototype.slice.call(arguments, 0).map(function generate(server) {\n return address(server);\n });\n } else if (Array.isArray(args)) {\n servers = args.map(function generate(server) {\n return address(server);\n });\n } else if ('object' === typeof args) {\n servers = Object.keys(args).map(function generate(server) {\n return address(server, args[server]);\n });\n } else if (args) {\n servers = [args].map(function generate(server) {\n return address(server);\n });\n } else {\n servers = [];\n }\n\n // Setup the data structure that we are going to return\n var data = {\n servers: servers\n , length: servers.length\n , weights: servers.reduce(function reduce(memo, server) {\n memo[server.string] = server.weight;\n return memo;\n }, {})\n , regular: servers.map(function regular(server) {\n return server.string;\n })\n };\n\n // Reduce the parsed values to simple list\n Object.keys(extensions).forEach(function extensions(key) {\n data[key] = servers.reduce(function reduce(memo, server) {\n memo[server.string] = server[key];\n return memo;\n }, {});\n });\n\n return data;\n}\n\n/**\n * Add a extra parser to connection-parser.\n *\n * @param {Function} parser\n * @api public\n */\nparse.extension = function extension(name, parser) {\n if (name in extensions) return parse;\n\n extensions[name] = parser;\n};\n\n/**\n * Transforms the server in to an Object containing the port number and the\n * hostname.\n *\n * @param {Mixed} server\n * @param {Mixed} value\n * @returns {Object}\n * @api private\n */\nfunction address(server, value) {\n if ('string' !== typeof server) {\n server.string = server.host +':'+ server.port;\n server.weight = +server.weight || typeof value === 'object'\n ? +value.weight || 1\n : 1;\n\n return server;\n }\n\n // Parse down the value's even further\n var pattern = server.split(':')\n , data = {\n host: pattern[0]\n , port: +pattern[1]\n , string: server\n , weight: (typeof value === 'object' ? +value.weight : +value) || 1\n };\n\n // Iterate over the extensions for the last piece of crushing\n Object.keys(extensions).forEach(function each(key) {\n var parser = extensions[key]\n , res = parser(data, value);\n\n if (res) data = res;\n });\n\n return data;\n}\n\n// Attach the address parser before we expose the module\nparse.address = address;\n\n/**\n * Expose the module\n */\nmodule.exports = parse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/connection-parse/index.js\n// module id = 622\n// module chunks = 1","module.exports = {\"name\":\"hashring\",\"version\":\"3.2.0\",\"author\":\"Arnout Kazemier\",\"description\":\"A consistent hashring compatible with ketama hashing and python's hash_ring\",\"main\":\"./index.js\",\"keywords\":[\"hashring\",\"hash ring\",\"hashing\",\"hashvalue\",\"ketama\",\"hash_ring\",\"hash\",\"consistent hashing\",\"libketama\"],\"license\":\"MIT\",\"bugs\":\"http://github.com/3rd-Eden/node-hashring/issues\",\"homepage\":\"http://github.com/3rd-Eden/node-hashring/\",\"repository\":{\"type\":\"git\",\"url\":\"http://github.com/3rd-Eden/node-hashring.git\"},\"dependencies\":{\"connection-parse\":\"0.0.x\",\"simple-lru-cache\":\"0.0.x\"},\"devDependencies\":{\"assume\":\"1.2.x\",\"benchmark\":\"1.0.x\",\"devnull\":\"0.0.x\",\"istanbul\":\"0.3.x\",\"mocha\":\"2.2.x\",\"pre-commit\":\"1.1.x\"},\"scripts\":{\"100%\":\"istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100\",\"test\":\"mocha tests/api.test.js tests/distribution.test.js\",\"watch\":\"mocha --watch tests/api.test.js tests/distribution.test.js\",\"coverage\":\"istanbul cover ./node_modules/.bin/_mocha -- tests/api.test.js tests/distribution.test.js\",\"test-travis\":\"istanbul cover node_modules/.bin/_mocha --report lcovonly -- tests/api.test.js tests/distribution.test.js\"}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/hashring/package.json\n// module id = 623\n// module chunks = 1","\"use strict\";\n\nvar EventEmitter = require('events').EventEmitter\n , spawn = require('child_process').spawn\n , Utils = require('./utils')\n , util = require('util');\n\nexports.IssueLog = IssueLog; // connection issue handling\nexports.Available = ping; // connection availablity\n\nfunction ping (host, callback) {\n var isWin = process.platform.indexOf('win') === 0; // win32 or win64\n var arg = isWin ? '-n' : '-c';\n var pong = spawn('ping', [arg, '3', host]); // only ping 3 times\n\n pong.stdout.on('data', function stdoutdata (data) {\n callback(false, data.toString().split('\\n')[0].substr(14));\n pong.kill();\n });\n\n pong.stderr.on('data', function stderrdata (data) {\n callback(new Error(data.toString().split('\\n')[0].substr(14)), false);\n pong.kill();\n });\n}\n\nfunction IssueLog (args) {\n this.config = args;\n this.messages = [];\n this.failed = false;\n this.locked = false;\n this.isScheduledToReconnect = false;\n\n this.totalFailures = 0;\n this.retry = 0;\n this.totalReconnectsAttempted = 0;\n this.totalReconnectsSuccess = 0;\n\n Utils.merge(this, args);\n EventEmitter.call(this);\n}\n\nutil.inherits(IssueLog, EventEmitter);\nvar issues = IssueLog.prototype;\n\nissues.log = function log (message) {\n var issue = this;\n\n this.failed = true;\n this.messages.push(message || 'No message specified');\n\n // All failures must occur within `failuresTimeout` ms from the initial\n // failure in order for node to be disconnected or removed.\n if (this.failures && this.failures == this.config.failures)\n this.failuresResetId = setTimeout(issue.failuresReset.bind(issue), this.failuresTimeout);\n\n if (this.failures && !this.locked) {\n this.locked = true;\n setTimeout(issue.attemptRetry.bind(issue), this.retry);\n return this.emit('issue', this.details);\n }\n\n if (this.failuresResetId) clearTimeout(this.failuresResetId);\n\n if (this.remove) return this.emit('remove', this.details);\n\n if (!this.isScheduledToReconnect) {\n this.isScheduledToReconnect = true;\n setTimeout(issue.attemptReconnect.bind(issue), this.reconnect);\n }\n};\n\nissues.failuresReset = function failuresReset() {\n //this.failures = this.config.failures;\n Utils.merge(this, JSON.parse(JSON.stringify(this.config)));\n};\n\nObject.defineProperty(issues, 'details', {\n get: function getDetails () {\n var res = {};\n\n res.server = this.server;\n res.tokens = this.tokens;\n res.messages = this.messages;\n\n if (this.failures) {\n res.failures = this.failures;\n res.totalFailures = this.totalFailures;\n } else {\n res.totalReconnectsAttempted = this.totalReconnectsAttempted;\n res.totalReconnectsSuccess = this.totalReconnectsSuccess;\n res.totalReconnectsFailed = this.totalReconnectsAttempted - this.totalReconnectsSuccess;\n res.totalDownTime = (res.totalReconnectsFailed * this.reconnect) + (this.totalFailures * this.retry);\n }\n\n return res;\n }\n});\n\nissues.attemptRetry = function attemptRetry () {\n this.totalFailures++;\n this.failures--;\n this.failed = false;\n this.locked = false;\n};\n\nissues.attemptReconnect = function attemptReconnect () {\n var issue = this;\n this.totalReconnectsAttempted++;\n this.emit('reconnecting', this.details);\n\n // Ping the server\n ping(this.tokens[1], function pingpong (err) {\n // still no access to the server\n if (err) {\n issue.messages.push(err.message || 'No message specified');\n return setTimeout(issue.attemptReconnect.bind(issue), issue.reconnect);\n }\n\n issue.emit('reconnected', issue.details);\n\n issue.totalReconnectsSuccess++;\n issue.messages.length = 0;\n issue.failed = false;\n issue.isScheduledToReconnect = false;\n\n // we connected again, so we are going through the whole cycle again\n Utils.merge(issue, JSON.parse(JSON.stringify(issue.config)));\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/memcached/lib/connection.js\n// module id = 624\n// module chunks = 1","'use strict';\n\nvar retry = require('retry')\n , ms = require('./ms');\n\n/**\n * A net.Stream connection pool.\n *\n * @constructor\n * @param {Number} limit Size of the connection pool.\n * @param {Function} builder Stream factory.\n * @param {Object} options Configuration options.\n * @api public\n */\nfunction Manager(limit, builder, options) {\n options = options || {};\n\n if ('object' === typeof builder) {\n options = builder;\n builder = null;\n }\n\n this.limit = +limit || 20; // Defaults to 20 connections max.\n this.pool = []; // Contains the active connections.\n this.pending = 0; // Connecting connections.\n this.generator = null; // Stream generator.\n this.retries = options.retries || 5; // Max retries for each #pull.\n this.factor = options.factor || 3; // Exponential backoff factor.\n this.minTimeout = ms(options.min || '1 seconds'); // Minimum delay.\n this.maxTimeout = ms(options.max || '60 seconds');// Maximum delay.\n this.randomize = 'randomize' in options // Randomize the retry timeout.\n ? options.randomize\n : true;\n\n // Some stats that can be used for metrics.\n this.metrics = {\n allocations: 0\n , releases: 0\n };\n\n if (builder) this.factory(builder);\n}\n\nManager.prototype.__proto__ = require('events').EventEmitter.prototype;\n\n/**\n * Add a stream generator so we can generate streams for the pool.\n *\n * @param {Function} builder Function that pre-configures a stream.\n * @api public\n */\nManager.prototype.factory = function factory(builder) {\n if (typeof builder !== 'function') {\n throw new Error('The #factory requires a function.');\n }\n\n this.generator = builder;\n return this;\n};\n\n/**\n * Start listening to events that could influence the state of the connection.\n *\n * @param {net.Connection} net The connection.\n * @api private\n */\nManager.prototype.listen = function listen(net) {\n if (!net) return this;\n\n var self = this;\n\n /**\n * Simple helper function that allows us to automatically remove the\n * connection from the pool when we are unable to connect using it.\n *\n * @param {Error} err Optional error.\n * @api private\n */\n function regenerate(err) {\n net.destroySoon();\n\n self.remove(net);\n\n net.removeListener('timeout', regenerate);\n net.removeListener('error', regenerate);\n net.removeListener('end', regenerate);\n\n if (err) self.emit('error', err);\n }\n\n // Listen for events that would mess up the connection.\n net.once('timeout', regenerate)\n .once('error', regenerate)\n .once('end', regenerate);\n\n return this;\n};\n\n/**\n * A fault tolerant connection allocation wrapper.\n *\n * @param {Function} fn Callback that receives a working connection.\n * @api public\n */\nManager.prototype.pull = function pull(fn) {\n var operation = retry.operation({\n retries: this.retries\n , factor: this.factor\n , minTimeout: this.minTimeout\n , maxTimeout: this.maxTimeout\n , randomize: this.randomize\n })\n , self = this;\n\n /**\n * Small wrapper around pulling a connection.\n *\n * @param {Error} err Optional error argument.\n * @param {Socket} connection A working connection.\n * @api private\n */\n function allocate(err, connection) {\n if (operation.retry(err)) return;\n\n fn(err, connection);\n }\n\n operation.attempt(function attempt() {\n self.allocate(allocate);\n });\n\n return this;\n};\n\n/**\n * Allocate a new connection from the connection pool, this can be done async\n * that's why we use a error first callback pattern.\n *\n * @param {Function} fn\n * @api public\n */\nManager.prototype.allocate = function allocate(fn) {\n if (!this.generator) {\n fn(new Error('Specify a stream #factory'));\n return this;\n }\n\n /**\n * Two helper functions that allows us to correctly call the callback with\n * the correct arguments when we generate a new connection as the connection\n * should be emitting 'connect' before we can use it. But it can also emit\n * error if it fails to connect, or times in so doing.\n *\n * @param {Error} err Optional error argument.\n * @api private\n */\n function either(err) {\n this.removeListener('error', either);\n this.removeListener('connect', either);\n this.removeListener('timeout', timeout);\n\n // Add to the pool\n if (!err) self.pool.push(this);\n self.pending--;\n\n fn(err, this);\n }\n\n /**\n * Listen to timeout events.\n *\n * @api private\n */\n function timeout() {\n this.removeListener('timeout', timeout);\n self.pending--;\n fn(new Error('Timed out while trying to establish connection'), this);\n }\n\n var probabilities = []\n , self = this\n , total, i, probability, connection;\n\n i = total = this.pool.length;\n\n // increase the allocation metric\n this.metrics.allocations++;\n\n // check the current pool if we already have a few connections available, so\n // we don't have to generate a new connection\n while (i--) {\n connection = this.pool[i];\n probability = this.isAvailable(connection);\n\n // we are sure this connection works\n if (probability === 100) {\n fn(undefined, connection);\n return this;\n }\n\n // no accurate match, add it to the queue as we can get the most likely\n // available connection\n probabilities.push({\n probability: probability\n , connection: connection\n });\n }\n\n // we didn't find a confident match, see if we are allowed to generate a fresh\n // connection\n if ((this.pool.length + this.pending) < this.limit) {\n // determine if the function expects a callback or not, this can be done by\n // checking the length of the given function, as the amount of args accepted\n // equals the length..\n if (this.generator.length === 0) {\n connection = this.generator();\n\n if (connection) {\n this.pending++;\n this.listen(connection);\n\n connection.on('error', either)\n .on('connect', either)\n .on('timeout', timeout);\n\n return this;\n }\n } else {\n return this.generator(function generate(err, connection) {\n if (err) return fn(err);\n if (!connection) return fn(new Error('The #factory failed to generate a stream'));\n\n self.pending++;\n self.listen(connection);\n\n return connection.on('error', either)\n .on('connect', either)\n .on('timeout', timeout);\n });\n }\n }\n\n // o, dear, we got issues.. we didn't find a valid connection and we cannot\n // create more.. so we are going to check if we might have semi valid\n // connection by sorting the probabilities array and see if it has\n // a probability above 60\n probability = probabilities.sort(function sort(a, b) {\n return a.probability - b.probability;\n }).pop();\n\n if (probability && probability.probability >= 60) {\n fn(undefined, probability.connection);\n return this;\n }\n\n // well, that didn't work out, so assume failure\n fn(new Error('The connection pool is full'));\n return this;\n};\n\n/**\n * Check if a connection is available for writing.\n *\n * @param {net.Connection} net The connection.\n * @param {Boolean} ignore Ignore closed or dead connections.\n * @returns {Number} Probability that his connection is available or will be.\n * @api private\n */\nManager.prototype.isAvailable = function isAvailable(net, ignore) {\n var readyState = net.readyState\n , writable = readyState === 'open' || readyState === 'writeOnly'\n , writePending = net._pendingWriteReqs || 0\n , writeQueue = net._writeQueue || []\n , writes = writeQueue.length || writePending;\n\n // If the stream is writable and we don't have anything pending we are 100%\n // sure that this stream is available for writing.\n if (writable && writes === 0) return 100;\n\n // The connection is already closed or has been destroyed, why on earth are we\n // getting it then, remove it from the pool and return 0.\n if (readyState === 'closed' || net.destroyed) {\n this.remove(net);\n return 0;\n }\n\n // If the stream isn't writable we aren't that sure..\n if (!writable) return 0;\n\n // The connection is still opening, so we can write to it in the future.\n if (readyState === 'opening') return 70;\n\n // We have some writes, so we are going to subtract that amount from our 100.\n if (writes < 100) return 100 - writes;\n\n // We didn't find any reliable states of the stream, so we are going to\n // assume something random, because we have no clue, so generate a random\n // number between 0 - 70.\n return Math.floor(Math.random() * 70);\n};\n\n/**\n * Release the connection from the connection pool.\n *\n * @param {Stream} net The connection.\n * @param {Boolean} hard Switch between destroySoon or destroy.\n * @returns {Boolean} Was the removal successful\n * @api private\n */\nManager.prototype.release = function release(net, hard) {\n var index = this.pool.indexOf(net);\n if (index === -1) return false;\n\n // Check if the stream is still open.\n if (net) {\n if (!hard) net.destroySoon();\n else net.destroy();\n\n // Remove it from the pool.\n this.pool.splice(index, 1);\n\n // Increase the releases metric.\n this.metrics.releases++;\n }\n\n return true;\n};\n\n// Alias remove to release.\nManager.prototype.remove = Manager.prototype.release;\n\n/**\n * Free dead connections from the pool.\n *\n * @param {Number} keep the amount of connection to keep open\n * @param {Boolean} hard destroy all connections instead of destroySoon\n * @api public\n */\nManager.prototype.free = function free(keep, hard) {\n // Default to 0 if no arguments are supplied.\n keep = +keep || 0;\n\n // Create a back-up of the pool as we will be removing items from the array\n // and this could cause memory / socket leaks as we are unable to close some\n // connections in the array as the index has moved.\n var pool = this.pool.slice(0)\n , saved = 0;\n\n for (var i = 0, length = pool.length; i < length; i++) {\n var connection = pool[i]\n , probability = this.isAvailable(connection);\n\n // This is still a healthy connection, so try we probably just want to keep it.\n if (keep && saved < keep && probability === 100) {\n saved++;\n continue;\n }\n\n this.release(connection, hard);\n }\n\n // Clear the back-up\n pool.length = 0;\n\n // See how much connections are still available.\n return this.emit('free', saved, this.pool.length);\n};\n\n/**\n * Iterate over the different connection.\n *\n * @param {Function} callback\n * @param {Mixed} context\n * @api public\n */\nManager.prototype.forEach = function forEach(callback, context) {\n this.pool.forEach(callback, context);\n return this;\n};\n\n/**\n * Close the connection pool.\n *\n * @param {Boolean} hard destroy all connections\n * @api public\n */\nManager.prototype.end = function end(hard) {\n this.free(0, hard);\n\n return this.emit('end');\n};\n\nmodule.exports = Manager;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jackpot/index.js\n// module id = 625\n// module chunks = 1","module.exports = require('./lib/retry');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/retry/index.js\n// module id = 626\n// module chunks = 1","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts);\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this._createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports._createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/retry/lib/retry.js\n// module id = 627\n// module chunks = 1","function RetryOperation(timeouts) {\n this._timeouts = timeouts;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n return false;\n }\n\n this._attempts++;\n\n var self = this;\n setTimeout(function() {\n self._fn(self._attempts);\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n }\n }, timeout);\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n this._fn(this._attempts);\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/retry/lib/retry_operation.js\n// module id = 628\n// module chunks = 1","'use strict';\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} options\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options){\n if ('string' === typeof val) return parse(val);\n if (!options) return +val;\n\n return options.long\n ? long(val)\n : short(val);\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n var match = /^((?:\\d+)?\\.?\\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i.exec(str);\n if (!match) return;\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 's':\n return n * s;\n case 'ms':\n return n;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction short(ms) {\n if (ms >= d) return Math.round(ms / d) + 'd';\n if (ms >= h) return Math.round(ms / h) + 'h';\n if (ms >= m) return Math.round(ms / m) + 'm';\n if (ms >= s) return Math.round(ms / s) + 's';\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction long(ms) {\n if (ms == d) return Math.round(ms / d) + ' day';\n if (ms > d) return Math.round(ms / d) + ' days';\n if (ms == h) return Math.round(ms / h) + ' hour';\n if (ms > h) return Math.round(ms / h) + ' hours';\n if (ms == m) return Math.round(ms / m) + ' minute';\n if (ms > m) return Math.round(ms / m) + ' minutes';\n if (ms == s) return Math.round(ms / s) + ' second';\n if (ms > s) return Math.round(ms / s) + ' seconds';\n return ms + ' ms';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jackpot/ms.js\n// module id = 629\n// module chunks = 1","var binding = require('bindings')('binding');\nvar assert = require('assert');\n\n/**\n * Compress asyncronous.\n * If input isn't a string or buffer, automatically convert to buffer by using\n * JSON.stringify.\n */\nexports.compress = function (input, callback) {\n if (!(typeof (input) === 'string' || Buffer.isBuffer(input))) {\n return callback(new Error('input must be a String or a Buffer'));\n }\n\n binding.compress(input, callback);\n};\n\nexports.compressSync = function (input) {\n assert(typeof (input) === 'string' || Buffer.isBuffer(input), 'input must be a String or a Buffer');\n\n return binding.compressSync(input);\n};\n\n/**\n * Asyncronous decide if a buffer is compressed in a correct way.\n */\nexports.isValidCompressed = binding.isValidCompressed;\n\nexports.isValidCompressedSync = binding.isValidCompressedSync;\n\n/**\n * Asyncronous uncompress previously compressed data.\n * A parser can be attached. If no parser is attached, return buffer.\n */\nexports.uncompress = function (compressed, opts, callback) {\n if (!callback) {\n callback = opts;\n }\n\n if (!Buffer.isBuffer(compressed)) {\n return callback(new Error('input must be a Buffer'));\n }\n\n binding.uncompress(compressed, uncompressOpts(opts), callback);\n};\n\nexports.uncompressSync = function (compressed, opts) {\n assert(Buffer.isBuffer(compressed), 'input must be a Buffer');\n\n return binding.uncompressSync(compressed, uncompressOpts(opts));\n};\n\nfunction uncompressOpts (opts) {\n return (opts && typeof opts.asBuffer === 'boolean') ? opts : {asBuffer: true};\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/snappy/snappy.js\n// module id = 630\n// module chunks = 1","/**\n * Module dependencies.\n */\n\nvar fs = require('fs'),\n path = require('path'),\n fileURLToPath = require('file-uri-to-path'),\n join = path.join,\n dirname = path.dirname,\n exists =\n (fs.accessSync &&\n function(path) {\n try {\n fs.accessSync(path);\n } catch (e) {\n return false;\n }\n return true;\n }) ||\n fs.existsSync ||\n path.existsSync,\n defaults = {\n arrow: process.env.NODE_BINDINGS_ARROW || ' → ',\n compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled',\n platform: process.platform,\n arch: process.arch,\n nodePreGyp:\n 'node-v' +\n process.versions.modules +\n '-' +\n process.platform +\n '-' +\n process.arch,\n version: process.versions.node,\n bindings: 'bindings.node',\n try: [\n // node-gyp's linked version in the \"build\" dir\n ['module_root', 'build', 'bindings'],\n // node-waf and gyp_addon (a.k.a node-gyp)\n ['module_root', 'build', 'Debug', 'bindings'],\n ['module_root', 'build', 'Release', 'bindings'],\n // Debug files, for development (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Debug', 'bindings'],\n ['module_root', 'Debug', 'bindings'],\n // Release files, but manually compiled (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Release', 'bindings'],\n ['module_root', 'Release', 'bindings'],\n // Legacy from node-waf, node <= 0.4.x\n ['module_root', 'build', 'default', 'bindings'],\n // Production \"Release\" buildtype binary (meh...)\n ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],\n // node-qbs builds\n ['module_root', 'addon-build', 'release', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'default', 'install-root', 'bindings'],\n // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}\n ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']\n ]\n };\n\n/**\n * The main `bindings()` function loads the compiled bindings for a given module.\n * It uses V8's Error API to determine the parent filename that this function is\n * being invoked from, which is then used to find the root directory.\n */\n\nfunction bindings(opts) {\n // Argument surgery\n if (typeof opts == 'string') {\n opts = { bindings: opts };\n } else if (!opts) {\n opts = {};\n }\n\n // maps `defaults` onto `opts` object\n Object.keys(defaults).map(function(i) {\n if (!(i in opts)) opts[i] = defaults[i];\n });\n\n // Get the module root\n if (!opts.module_root) {\n opts.module_root = exports.getRoot(exports.getFileName());\n }\n\n // Ensure the given bindings name ends with .node\n if (path.extname(opts.bindings) != '.node') {\n opts.bindings += '.node';\n }\n\n // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035\n var requireFunc =\n typeof __webpack_require__ === 'function'\n ? __non_webpack_require__\n : require;\n\n var tries = [],\n i = 0,\n l = opts.try.length,\n n,\n b,\n err;\n\n for (; i < l; i++) {\n n = join.apply(\n null,\n opts.try[i].map(function(p) {\n return opts[p] || p;\n })\n );\n tries.push(n);\n try {\n b = opts.path ? requireFunc.resolve(n) : requireFunc(n);\n if (!opts.path) {\n b.path = n;\n }\n return b;\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND' &&\n e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&\n !/not find/i.test(e.message)) {\n throw e;\n }\n }\n }\n\n err = new Error(\n 'Could not locate the bindings file. Tried:\\n' +\n tries\n .map(function(a) {\n return opts.arrow + a;\n })\n .join('\\n')\n );\n err.tries = tries;\n throw err;\n}\nmodule.exports = exports = bindings;\n\n/**\n * Gets the filename of the JavaScript file that invokes this function.\n * Used to help find the root directory of a module.\n * Optionally accepts an filename argument to skip when searching for the invoking filename\n */\n\nexports.getFileName = function getFileName(calling_file) {\n var origPST = Error.prepareStackTrace,\n origSTL = Error.stackTraceLimit,\n dummy = {},\n fileName;\n\n Error.stackTraceLimit = 10;\n\n Error.prepareStackTrace = function(e, st) {\n for (var i = 0, l = st.length; i < l; i++) {\n fileName = st[i].getFileName();\n if (fileName !== __filename) {\n if (calling_file) {\n if (fileName !== calling_file) {\n return;\n }\n } else {\n return;\n }\n }\n }\n };\n\n // run the 'prepareStackTrace' function above\n Error.captureStackTrace(dummy);\n dummy.stack;\n\n // cleanup\n Error.prepareStackTrace = origPST;\n Error.stackTraceLimit = origSTL;\n\n // handle filename that starts with \"file://\"\n var fileSchema = 'file://';\n if (fileName.indexOf(fileSchema) === 0) {\n fileName = fileURLToPath(fileName);\n }\n\n return fileName;\n};\n\n/**\n * Gets the root directory of a module, given an arbitrary filename\n * somewhere in the module tree. The \"root directory\" is the directory\n * containing the `package.json` file.\n *\n * In: /home/nate/node-native-module/lib/index.js\n * Out: /home/nate/node-native-module\n */\n\nexports.getRoot = function getRoot(file) {\n var dir = dirname(file),\n prev;\n while (true) {\n if (dir === '.') {\n // Avoids an infinite loop in rare cases, like the REPL\n dir = process.cwd();\n }\n if (\n exists(join(dir, 'package.json')) ||\n exists(join(dir, 'node_modules'))\n ) {\n // Found the 'package.json' file or 'node_modules' dir; we're done\n return dir;\n }\n if (prev === dir) {\n // Got to the top\n throw new Error(\n 'Could not find module root given file: \"' +\n file +\n '\". Do you have a `package.json` file? '\n );\n }\n // Try the parent dir next\n prev = dir;\n dir = join(dir, '..');\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bindings/bindings.js\n// module id = 631\n// module chunks = 1","\n/**\n * Module dependencies.\n */\n\nvar sep = require('path').sep || '/';\n\n/**\n * Module exports.\n */\n\nmodule.exports = fileUriToPath;\n\n/**\n * File URI to Path function.\n *\n * @param {String} uri\n * @return {String} path\n * @api public\n */\n\nfunction fileUriToPath (uri) {\n if ('string' != typeof uri ||\n uri.length <= 7 ||\n 'file://' != uri.substring(0, 7)) {\n throw new TypeError('must pass in a file:// URI to convert to a file path');\n }\n\n var rest = decodeURI(uri.substring(7));\n var firstSlash = rest.indexOf('/');\n var host = rest.substring(0, firstSlash);\n var path = rest.substring(firstSlash + 1);\n\n // 2. Scheme Definition\n // As a special case, <host> can be the string \"localhost\" or the empty\n // string; this is interpreted as \"the machine from which the URL is\n // being interpreted\".\n if ('localhost' == host) host = '';\n\n if (host) {\n host = sep + sep + host;\n }\n\n // 3.2 Drives, drive letters, mount points, file system root\n // Drive letters are mapped into the top of a file URI in various ways,\n // depending on the implementation; some applications substitute\n // vertical bar (\"|\") for the colon after the drive letter, yielding\n // \"file:///c|/tmp/test.txt\". In some cases, the colon is left\n // unchanged, as in \"file:///c:/tmp/test.txt\". In other cases, the\n // colon is simply omitted, as in \"file:///c/tmp/test.txt\".\n path = path.replace(/^(.+)\\|/, '$1:');\n\n // for Windows, we need to invert the path separators from what a URI uses\n if (sep == '\\\\') {\n path = path.replace(/\\//g, '\\\\');\n }\n\n if (/^.+\\:/.test(path)) {\n // has Windows drive at beginning of path\n } else {\n // unix path…\n path = sep + path;\n }\n\n return host + path;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/file-uri-to-path/index.js\n// module id = 632\n// module chunks = 1","module.exports = {\"$schemaref\":\"web-1.0.schema.json\",\"degradation\":{\"serviceUrl\":\"https://www.espn.com/watchespn/degradation\"},\"iconMap\":{\"subcategories[0]?.leagueId eq 10\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/mlb.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 28\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nfl.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 46\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nba.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 90\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nhl.png&w=100&h=100&transparent=true\",\"program?.isStudio eq true\":\"audio02\",\"categories[0]?.sportId eq 1 or categories[0]?.sportId eq 100\":\"baseball\",\"categories[0]?.sportId eq 40\":\"basketball\",\"categories[0]?.sportId eq 200\":\"cricket\",\"categories[0]?.sportId eq 8367\":\"esports\",\"categories[0]?.sportId eq 1000\":\"boxing\",\"categories[0]?.sportId eq 20 and subcategories[0]?.leagueId eq 23\":\"football-college\",\"categories[0]?.sportId eq 20\":\"football\",\"categories[0]?.sportId eq 70\":\"hockey\",\"categories[0]?.sportId eq 3520 and subcategories[0]?.leagueId eq 3520\":\"poker\",\"categories[0]?.sportId eq 500\":\"lacrosse\",\"categories[0]?.sportId eq 3301\":\"mma\",\"categories[0]?.sportId eq 2000 and subcategories[0]?.leagueId eq 2020\":\"nascar\",\"categories[0]?.sportId eq 300\":\"rugby\",\"categories[0]?.sportId eq 600\":\"soccer\",\"categories[0]?.sportId eq 850\":\"tennis\",\"categories[0]?.sportId eq 1700\":\"track-field\",\"categories[0]?.sportId eq 400\":\"volleyball\",\"categories[0]?.sportId eq 3190 and subcategories[0]?.leagueId eq 8098\":\"xgames\"},\"gated\":false}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./config/watchespn-web-1.0.config.qa.json\n// module id = 633\n// module chunks = 1","module.exports = {\"$schemaref\":\"web-1.0.schema.json\",\"degradation\":{\"serviceUrl\":\"https://www.espn.com/watchespn/degradation\"},\"iconMap\":{\"subcategories[0]?.leagueId eq 10\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/mlb.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 28\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nfl.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 46\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nba.png&w=100&h=100&transparent=true\",\"subcategories[0]?.leagueId eq 90\":\"http://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/nhl.png&w=100&h=100&transparent=true\",\"program?.isStudio eq true\":\"audio02\",\"categories[0]?.sportId eq 1 or categories[0]?.sportId eq 100\":\"baseball\",\"categories[0]?.sportId eq 40\":\"basketball\",\"categories[0]?.sportId eq 200\":\"cricket\",\"categories[0]?.sportId eq 8367\":\"esports\",\"categories[0]?.sportId eq 1000\":\"boxing\",\"categories[0]?.sportId eq 20 and subcategories[0]?.leagueId eq 23\":\"football-college\",\"categories[0]?.sportId eq 20\":\"football\",\"categories[0]?.sportId eq 70\":\"hockey\",\"categories[0]?.sportId eq 3520 and subcategories[0]?.leagueId eq 3520\":\"poker\",\"categories[0]?.sportId eq 500\":\"lacrosse\",\"categories[0]?.sportId eq 3301\":\"mma\",\"categories[0]?.sportId eq 2000 and subcategories[0]?.leagueId eq 2020\":\"nascar\",\"categories[0]?.sportId eq 300\":\"rugby\",\"categories[0]?.sportId eq 600\":\"soccer\",\"categories[0]?.sportId eq 850\":\"tennis\",\"categories[0]?.sportId eq 1700\":\"track-field\",\"categories[0]?.sportId eq 400\":\"volleyball\",\"categories[0]?.sportId eq 3190 and subcategories[0]?.leagueId eq 8098\":\"xgames\"},\"gated\":false}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./config/watchespn-web-1.0.config.json\n// module id = 634\n// module chunks = 1","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseMatches.js\n// module id = 635\n// module chunks = 1","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsMatch.js\n// module id = 636\n// module chunks = 1","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_stackClear.js\n// module id = 637\n// module chunks = 1","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_stackDelete.js\n// module id = 638\n// module chunks = 1","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_stackGet.js\n// module id = 639\n// module chunks = 1","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_stackHas.js\n// module id = 640\n// module chunks = 1","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_stackSet.js\n// module id = 641\n// module chunks = 1","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsEqualDeep.js\n// module id = 642\n// module chunks = 1","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arraySome.js\n// module id = 643\n// module chunks = 1","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_equalByTag.js\n// module id = 644\n// module chunks = 1","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapToArray.js\n// module id = 645\n// module chunks = 1","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_equalObjects.js\n// module id = 646\n// module chunks = 1","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getAllKeys.js\n// module id = 647\n// module chunks = 1","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseGetAllKeys.js\n// module id = 648\n// module chunks = 1","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getSymbols.js\n// module id = 649\n// module chunks = 1","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayFilter.js\n// module id = 650\n// module chunks = 1","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/stubArray.js\n// module id = 651\n// module chunks = 1","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseTimes.js\n// module id = 652\n// module chunks = 1","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/stubFalse.js\n// module id = 653\n// module chunks = 1","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsTypedArray.js\n// module id = 654\n// module chunks = 1","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nodeUtil.js\n// module id = 655\n// module chunks = 1","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getMatchData.js\n// module id = 656\n// module chunks = 1","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseMatchesProperty.js\n// module id = 657\n// module chunks = 1","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/get.js\n// module id = 658\n// module chunks = 1","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/property.js\n// module id = 659\n// module chunks = 1","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_basePropertyDeep.js\n// module id = 660\n// module chunks = 1","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/toFinite.js\n// module id = 661\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Authenticator = exports.IpAuthenticator = exports.AdobePassAuthenticator = undefined;\n\nvar _AdobePassAuthenticator = require('./AdobePassAuthenticator');\n\nvar _AdobePassAuthenticator2 = _interopRequireDefault(_AdobePassAuthenticator);\n\nvar _IpAuthenticator = require('./IpAuthenticator');\n\nvar _IpAuthenticator2 = _interopRequireDefault(_IpAuthenticator);\n\nvar _Authenticator = require('./Authenticator');\n\nvar _Authenticator2 = _interopRequireDefault(_Authenticator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.AdobePassAuthenticator = _AdobePassAuthenticator2.default;\nexports.IpAuthenticator = _IpAuthenticator2.default;\nexports.Authenticator = _Authenticator2.default;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-authenticators/build/index.js\n// module id = 662\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = require('lodash.assign');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = require('lodash.isfunction');\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nvar _lodash5 = require('lodash.difference');\n\nvar _lodash6 = _interopRequireDefault(_lodash5);\n\nvar _loglevel = require('loglevel');\n\nvar _loglevel2 = _interopRequireDefault(_loglevel);\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _Authenticator = require('./Authenticator');\n\nvar _Authenticator2 = _interopRequireDefault(_Authenticator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// log.enableAll();\n// log.setLevel('warn');\n\nvar chunk = function chunk(arr, size) {\n return arr.length ? [arr.slice(0, size)].concat(_toConsumableArray(chunk(arr.slice(size), size))) : [];\n};\n\n/**\n * Adobe Pass implementation of the abstract Authenticator class.\n * @class AdobePassAuthenticator\n * @augments Authenticator\n */\nfunction AdobePassAuthenticator() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n elementId = _ref.elementId,\n _ref$redirectUrl = _ref.redirectUrl,\n redirectUrl = _ref$redirectUrl === undefined ? '' : _ref$redirectUrl,\n _ref$environment = _ref.environment,\n environment = _ref$environment === undefined ? AdobePassAuthenticator.Environment.PRODUCTION : _ref$environment,\n _ref$refreshless = _ref.refreshless,\n refreshless = _ref$refreshless === undefined ? false : _ref$refreshless,\n _ref$displayProviderD = _ref.displayProviderDialogImpl,\n displayProviderDialogImpl = _ref$displayProviderD === undefined ? function () {\n return new Promise();\n } : _ref$displayProviderD,\n _ref$errorEventHandle = _ref.errorEventHandlerName,\n errorEventHandlerName = _ref$errorEventHandle === undefined ? 'AEErrorHandler' : _ref$errorEventHandle;\n\n if (!(this instanceof AdobePassAuthenticator)) {\n return new AdobePassAuthenticator({\n elementId: elementId,\n redirectUrl: redirectUrl,\n environment: environment,\n refreshless: refreshless,\n displayProviderDialogImpl: displayProviderDialogImpl\n });\n }\n\n (0, _lodash2.default)(this, _events2.default.prototype, _Authenticator2.default.prototype);\n\n var REQUESTOR = 'ESPN';\n\n var JS_URLS = {};\n JS_URLS[AdobePassAuthenticator.Environment.PRODUCTION] = 'https://entitlement.auth.adobe.com/entitlement/v4/AccessEnabler.js';\n JS_URLS[AdobePassAuthenticator.Environment.STAGING] = 'https://entitlement.auth-staging.adobe.com/entitlement/v4/AccessEnabler.js';\n var JS_ELEMENT_ID = 'ae_js';\n\n var SOFTWARE_STATEMENTS = {};\n SOFTWARE_STATEMENTS[AdobePassAuthenticator.Environment.PRODUCTION] = 'eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIyZGJmZWM4My03OWE1LTQyNzEtYTVmZC04NTZjYTMxMjRjNjMiLCJuYmYiOjE1NDAyMTI3NjEsImlzcyI6ImF1dGguYWRvYmUuY29tIiwiaWF0IjoxNTQwMjEyNzYxfQ.yaK3r4AI2uLVvsyN1GLzqzgzRlxMPtasSaiYYBV0wIstqih5tvjTmeoLmi8Xy9Kp_U7Md-bOffwiyK3srHkpUkhhwXLH2x6RPjmS1tPmhaG7-3LBcHTf2ySPvXhVf7cN4ngldawK4tdtLtsw6rF_JoZE2yaC6XbS2F51nXSFEDDnOQWIHEQRG3aYAj-38P2CLGf7g-Yfhbp5cKXeksHHQ90u3eOO4WH0EAjc9oO47h33U8KMEXxJbvjV5J8Va2G2fQSgLDZ013NBI3kQnE313qgqQh2feQILkyCENpB7g-TVBreAjOaH1fU471htSoGGYepcAXv-UDtpgitDiLy7CQ'; // eslint-disable-line\n SOFTWARE_STATEMENTS[AdobePassAuthenticator.Environment.STAGING] = 'eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhMmRjNjgyMC1kZGNkLTQ4NGEtOTdlNS0xZjJiZmQzOGI4YzgiLCJuYmYiOjE1NDAyMjIwNTksImlzcyI6ImF1dGguYWRvYmUuY29tIiwiaWF0IjoxNTQwMjIyMDU5fQ.YgX4ecGCgLCaZS7uwRQYZ8UR5EwT7GIl-glFbwU122bO1JYZSmbIX8YJSfmYth_scyeg-15BYWNftV9lOcmCe8VwIsQMJMIZKaF8qSIj5OfuTOBpNZNBpDAp5dC3zG7Zp1xLe3z-T0Y18-0BGj2yhGcJxBz4gtLXQ30Bw0LEIJ89nXCQaXFTq9N6zhDzMfkFJNnSNEvEmvcQqB4bFPIqn2is8427oQDU4D0XYvvTtx9eb5hmzKc9MbBG-8KRBA62BqdHomA5UA4kBYJKpe-8B2hO07Adi2bZoo5wP_VLNAnAxANWNXaGQYHMDjHDrHbbvuKHBudHgKxAuKpIdC7UrA'; // eslint-disable-line\n var _softwareStatement = SOFTWARE_STATEMENTS[environment];\n\n var _accessEnablerJsUrl = JS_URLS[environment];\n var _redirectUrl = redirectUrl;\n var _accessEnabler = null;\n var _resolveInitialize = null;\n var _resolveAuthentication = null;\n var _resolveDeauthentication = null;\n var _resolveAuthorization = null;\n var _resolvePreauthorizes = [];\n var _resolveAuthenticationInfo = null;\n var _resolveMetadataStatus = {};\n var _resolveSelectProvider = null;\n var _errorEventCallback = null;\n\n var _isAuthenticated = false;\n\n function entitlementLoaded() {\n _accessEnabler.bind('errorEvent', errorEventHandlerName);\n\n var requestorConfigInfo = refreshless ? {\n callSetConfig: true,\n backgroundLogin: false,\n backgroundLogout: true\n } : null;\n _accessEnabler.setRequestor(REQUESTOR, null, requestorConfigInfo);\n if (_resolveInitialize) {\n _resolveInitialize(true);\n }\n }\n\n function setAuthenticationStatus(isAuthenticated, errorCode) {\n _loglevel2.default.debug('AdobePassAuthenticator.setAuthenticationStatus', isAuthenticated, errorCode);\n _isAuthenticated = !!isAuthenticated;\n\n if (_resolveAuthentication) {\n _resolveAuthentication(_isAuthenticated);\n _resolveAuthentication = null;\n }\n\n if (_resolveSelectProvider) {\n _resolveSelectProvider(_isAuthenticated);\n _resolveSelectProvider = null;\n }\n\n if (_resolveDeauthentication) {\n _resolveDeauthentication(_isAuthenticated);\n _resolveDeauthentication = null;\n }\n }\n\n function setMetadataStatus(key, encrypted, data) {\n _loglevel2.default.debug('AdobePassAuthenticator.setMetadataStatus', key, data);\n if (_resolveMetadataStatus[key]) {\n _resolveMetadataStatus[key](data);\n }\n _resolveMetadataStatus[key] = null;\n }\n\n function _displayProviderDialog(providers) {\n _loglevel2.default.debug('AdobePassAuthenticator.displayProviderDialog', providers);\n if (_resolveAuthentication) {\n _resolveAuthentication(_isAuthenticated);\n _resolveAuthentication = null;\n }\n displayProviderDialogImpl(providers);\n /*\n .then(function(provider) {\n _accessEnabler.setSelectedProvider(provider);\n });\n */\n }\n\n function setToken(resourceId, token) {\n _loglevel2.default.debug('Requested resource: ' + resourceId + ' tokenResult: ' + token);\n if (_resolveAuthorization) {\n _resolveAuthorization({ resourceId: resourceId, token: token });\n }\n }\n\n function tokenRequestFailed(resourceId, errorCode, errorDetails) {\n if (errorCode != null || errorDetails != null) {\n _loglevel2.default.error('Failure to authorize: ' + errorDetails);\n if (_resolveAuthorization) {\n _resolveAuthorization({ errorCode: errorCode, errorDetails: errorDetails });\n }\n }\n }\n\n function setConfig() /* configXml */{\n // log.debug('setConfig', configXml);\n }\n\n function sendTrackingData(trackingEventType, trackingData) {\n if (trackingEventType === 'authenticationDetection') {\n var data = {\n success: trackingData[0],\n mvpd: trackingData[1],\n guid: trackingData[2],\n isTokenCached: trackingData[3],\n deviceType: trackingData[4],\n clientType: trackingData[5],\n os: trackingData[6]\n };\n\n _loglevel2.default.debug('AdobePassAuthenticator.sendTrackingData', trackingEventType, data);\n }\n }\n\n function preauthorizedResources(authorizedResources) {\n _loglevel2.default.debug('AdobePassAuthenticator.preauthorizedResources', authorizedResources);\n\n var completion = _resolvePreauthorizes.shift();\n if (completion) completion(authorizedResources);\n }\n\n function embedJs() {\n var scriptTag = document.createElement('script');\n scriptTag.id = JS_ELEMENT_ID;\n scriptTag.type = 'text/javascript';\n scriptTag.async = true;\n scriptTag.src = _accessEnablerJsUrl;\n scriptTag.addEventListener('load', function () {\n _accessEnabler = new window.Adobe.AccessEnabler(_softwareStatement);\n });\n document.getElementsByTagName('head')[0].appendChild(scriptTag);\n }\n\n function selectedProvider(result) {\n var mvpd = result.MVPD,\n aeState = result.AE_State;\n\n if (_resolveAuthenticationInfo) _resolveAuthenticationInfo({ mvpd: mvpd, aeState: aeState });\n }\n\n function AEErrorHandler(errorData) {\n if (typeof _errorEventCallback === 'function') {\n _errorEventCallback(errorData);\n }\n }\n\n function bindCallbacks() {\n global.entitlementLoaded = entitlementLoaded;\n global.setAuthenticationStatus = setAuthenticationStatus;\n global.setMetadataStatus = setMetadataStatus;\n global.displayProviderDialog = _displayProviderDialog;\n global.setConfig = setConfig;\n global.sendTrackingData = sendTrackingData;\n global.preauthorizedResources = preauthorizedResources;\n global.selectedProvider = selectedProvider;\n global.setToken = setToken;\n global.tokenRequestFailed = tokenRequestFailed;\n global[errorEventHandlerName] = AEErrorHandler;\n }\n\n return (0, _lodash2.default)(this, {\n /**\n * Initializes the Adobe Pass client\n * @function initialize\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<null>}\n */\n initialize: function initialize(callback) {\n _loglevel2.default.debug('AdobePassAuthenticator.initialize');\n\n return new Promise(function (resolve) {\n _resolveInitialize = function _resolveInitialize(isInitialized) {\n resolve(isInitialized);\n if ((0, _lodash4.default)(callback)) {\n callback(null, isInitialized);\n }\n };\n bindCallbacks();\n embedJs();\n });\n },\n\n\n /**\n * @function isAuthenticated\n * @override\n * @memberof AdobePassAuthenticator#\n * @returns {Boolean}\n */\n isAuthenticated: function isAuthenticated() {\n return _isAuthenticated;\n },\n\n\n /**\n * @function setRedirectUrl\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {String} a redirect url\n * @returns boolean\n */\n setRedirectUrl: function setRedirectUrl(url) {\n if (typeof url === 'string') {\n _redirectUrl = url;\n return true;\n }\n return false;\n },\n\n\n /**\n * @function checkAuthentication\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n checkAuthentication: function checkAuthentication(callback) {\n _loglevel2.default.debug('AdobePassAuthenticator.checkAuthentication');\n\n return new Promise(function (resolve) {\n _resolveAuthentication = function _resolveAuthentication(isAuthenticated) {\n resolve(isAuthenticated);\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n };\n _accessEnabler.checkAuthentication();\n });\n },\n\n\n /**\n * @function authenticate\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {String} identity\n * @param {Callback} callback\n * @param {String} optional redirect url\n * @returns {Promise.<Boolean>}\n */\n authenticate: function authenticate(identity, callback) {\n var url = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _redirectUrl;\n\n _loglevel2.default.debug('AdobePassClient.authenticate ' + identity);\n\n return new Promise(function (resolve) {\n _resolveAuthentication = function _resolveAuthentication(isAuthenticated) {\n resolve(isAuthenticated);\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n };\n _accessEnabler.getAuthentication(url);\n });\n },\n\n\n /**\n * @function deauthenticate\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n deauthenticate: function deauthenticate(callback) {\n _loglevel2.default.debug('AdobePassAuthenticator.deauthenticate');\n\n return new Promise(function (resolve) {\n _resolveDeauthentication = function _resolveDeauthentication(isAuthenticated) {\n resolve(isAuthenticated);\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n };\n _accessEnabler.logout();\n });\n },\n\n\n /**\n * @function getAuthenticationInfo\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n getAuthenticationInfo: function getAuthenticationInfo(callback) {\n _loglevel2.default.debug('AdobePassAuthenticator.getAuthenticationInfo');\n\n var getAuthenticationInfoPromise = new Promise(function (resolve) {\n _resolveAuthenticationInfo = resolve;\n });\n _accessEnabler.getSelectedProvider();\n\n if ((0, _lodash4.default)(callback)) {\n callback(null, true);\n }\n\n return getAuthenticationInfoPromise;\n },\n\n\n /**\n * @function getMetadata\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n getMetadata: function getMetadata(key) {\n _loglevel2.default.debug('AdobePassAuthenticator.getMetadata');\n var getMetadataPromise = new Promise(function (resolve) {\n if (key) {\n _resolveMetadataStatus[key] = resolve;\n } else {\n resolve(null);\n }\n });\n if (key) {\n _accessEnabler.getMetadata(key);\n }\n return getMetadataPromise;\n },\n\n\n /**\n * @function authorize\n * @override\n * @memberof AdobePassAuthenticator#\n * @param {Callback} callback\n * @returns {Promise.<Boolean>}\n */\n authorize: function authorize(resource, callback) {\n _loglevel2.default.debug('AdobePassClient.authorize ' + resource);\n\n return new Promise(function (resolve) {\n _resolveAuthorization = function _resolveAuthorization(authzResponse) {\n resolve(authzResponse);\n if ((0, _lodash4.default)(callback)) {\n callback(null, authzResponse);\n }\n };\n _accessEnabler.getAuthorization(resource);\n });\n },\n\n\n /**\n * @function checkPreauthorizedResources\n * @memberof AdobePassAuthenticator#\n * @param {}\n * @returns {Promise.<Array>}\n */\n checkPreauthorizedResources: function checkPreauthorizedResources() {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var hasCallback = (0, _lodash4.default)(args[args.length - 1]);\n var resources = hasCallback ? args.slice(0, args.length - 1) : args;\n var callback = hasCallback ? args[args.length - 1] : null;\n\n if (_isAuthenticated !== true) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, []);\n }\n return Promise.resolve([]);\n }\n\n var completions = [];\n\n var groupedResources = chunk(resources, 5);\n\n var promises = groupedResources.map(function (resourceGroup) {\n return new Promise(function (resolve) {\n var completion = function completion(preauthzResources) {\n resolve(preauthzResources);\n };\n\n completions.push(completion);\n\n _accessEnabler.checkPreauthorizedResources(resourceGroup);\n }).catch(function () {\n return [];\n });\n });\n\n _resolvePreauthorizes = completions;\n\n return Promise.all(promises).then(function (results) {\n var result = results.reduce(function (acc, val) {\n return acc.concat(val);\n }, []);\n\n result.forEach(function (resource) {\n _this.emit(AdobePassAuthenticator.EventType.PREAUTHORIZED, resource);\n });\n\n (0, _lodash6.default)(resources, result).forEach(function (resource) {\n _this.emit(AdobePassAuthenticator.EventType.NOT_PREAUTHORIZED, resource);\n });\n\n if ((0, _lodash4.default)(callback)) {\n callback(null, result);\n }\n return result;\n });\n },\n selectProvider: function selectProvider(provider) {\n _accessEnabler.setSelectedProvider(provider.ID);\n return new Promise(function (resolve) {\n if (refreshless) {\n _resolveSelectProvider = resolve;\n }\n });\n },\n onErrorEvent: function onErrorEvent(callback) {\n _errorEventCallback = callback;\n }\n });\n}\n\nAdobePassAuthenticator.Environment = {\n PRODUCTION: 'production',\n STAGING: 'staging'\n};\n\nAdobePassAuthenticator.EventType = {\n PREAUTHORIZED: 'preauthorized',\n NOT_PREAUTHORIZED: 'not_preauthorized'\n};\n\nAdobePassAuthenticator.AccessEnablerType = {\n JAVASCRIPT: 'js'\n};\n\nexports.default = AdobePassAuthenticator;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-authenticators/build/AdobePassAuthenticator.js\n// module id = 663\n// module chunks = 1","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = difference;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.difference/index.js\n// module id = 664\n// module chunks = 1","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-authenticators/node_modules/loglevel/lib/loglevel.js\n// module id = 665\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.USER_DATA_KEY = undefined;\n\nvar _lodash = require('lodash.assign');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = require('lodash.isfunction');\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nvar _superagent = require('superagent');\n\nvar _superagent2 = _interopRequireDefault(_superagent);\n\nvar _Authenticator = require('./Authenticator');\n\nvar _Authenticator2 = _interopRequireDefault(_Authenticator);\n\nvar _WebStorage = require('./WebStorage');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar USER_DATA_KEY = exports.USER_DATA_KEY = '__userData'; /* eslint-disable no-console */\n\nvar STORAGE_TYPE = 'sessionStorage';\n\nvar USER_DATA_BASE_URL = 'https://broadband.espn.com/espn3/auth/watchespn/user';\n\nfunction IpAuthenticator(_ref) {\n var _ref$partner = _ref.partner,\n partner = _ref$partner === undefined ? 'watchespn' : _ref$partner,\n _ref$platform = _ref.platform,\n platform = _ref$platform === undefined ? 'web' : _ref$platform,\n _ref$userDataServiceU = _ref.userDataServiceUrl,\n userDataServiceUrl = _ref$userDataServiceU === undefined ? USER_DATA_BASE_URL : _ref$userDataServiceU;\n\n if (!(this instanceof IpAuthenticator)) {\n return new IpAuthenticator({ partner: partner, platform: platform, userDataServiceUrl: userDataServiceUrl });\n }\n var userDataUrl = userDataServiceUrl + '?partner=' + partner + '&platform=' + platform;\n var _isAuthenticated = false;\n var userDataPromise = void 0;\n var ispAuthInfo = void 0;\n\n function getUserData() {\n var userData = (0, _WebStorage.getJson)(USER_DATA_KEY, STORAGE_TYPE);\n if (userData !== null) {\n userDataPromise = Promise.resolve(userData);\n } else if (!userDataPromise) {\n userDataPromise = new Promise(function (resolve, reject) {\n _superagent2.default.get(userDataUrl).end(function (err, res) {\n if (res) {\n var userDataResponse = JSON.parse(res.text);\n (0, _WebStorage.setJson)(USER_DATA_KEY, userDataResponse, STORAGE_TYPE);\n resolve(userDataResponse);\n } else {\n reject(err || new Error('Unknown error'));\n }\n });\n }).catch(function (err) {\n console.log('Error getting UserData: ', err);\n userDataPromise = null;\n return undefined;\n });\n }\n return userDataPromise;\n }\n\n function checkIpAuth() {\n return getUserData().then(function (userData) {\n ispAuthInfo = userData && userData.user && userData.user.authentication && userData.user.authentication.isp;\n _isAuthenticated = ispAuthInfo !== undefined && ispAuthInfo.name !== 'espn';\n return _isAuthenticated;\n });\n }\n (0, _lodash2.default)(this, _Authenticator2.default);\n\n return (0, _lodash2.default)(this, {\n initialize: function initialize(callback) {\n return checkIpAuth().then(function () {\n if ((0, _lodash4.default)(callback)) {\n callback(null, true);\n }\n return true;\n });\n },\n isAuthenticated: function isAuthenticated() {\n return _isAuthenticated;\n },\n checkAuthentication: function checkAuthentication(callback) {\n return checkIpAuth().then(function (isAuthenticated) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n return isAuthenticated;\n });\n },\n authenticate: function authenticate(identity, callback) {\n return checkIpAuth().then(function (isAuthenticated) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n return isAuthenticated;\n });\n },\n deauthenticate: function deauthenticate(callback) {\n _isAuthenticated = false;\n return Promise.resolve(_isAuthenticated).then(function (isAuthenticated) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, isAuthenticated);\n }\n return isAuthenticated;\n });\n },\n getAuthenticationInfo: function getAuthenticationInfo(callback) {\n return getUserData().then(function (userData) {\n var authenticationInfo = userData && userData.user && userData.user.authentication && userData.user.authentication.isp;\n var mvpd = authenticationInfo.name,\n imgUrl = authenticationInfo.imageHref;\n\n var authInfo = mvpd !== 'espn' ? { mvpd: mvpd, imgUrl: imgUrl } : null;\n if ((0, _lodash4.default)(callback)) {\n callback(null, authInfo);\n }\n return authInfo;\n });\n },\n getLocation: function getLocation(callback) {\n return getUserData().then(function (userData) {\n return userData && userData.user && userData.user.location;\n }).then(function (location) {\n if ((0, _lodash4.default)(callback)) {\n callback(null, location);\n }\n return location;\n });\n }\n });\n}\n\nexports.default = IpAuthenticator;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-authenticators/build/IpAuthenticator.js\n// module id = 666\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable no-console */\nfunction storageAvailable(type) {\n try {\n var storage = window[type];\n var key = '__storage_test__';\n storage.setItem(key, key);\n storage.removeItem(key);\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction setJson(key, json) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'sessionStorage';\n\n if (storageAvailable(type)) {\n var storage = window[type];\n storage.setItem(key, JSON.stringify(json));\n return true;\n }\n return false;\n}\n\nfunction getJson(key) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'sessionStorage';\n\n var resp = null;\n if (storageAvailable(type)) {\n var storage = window[type];\n var value = storage.getItem(key);\n try {\n resp = JSON.parse(value);\n } catch (err) {\n console.log('Error parsing JSON: ', err);\n }\n }\n return resp;\n}\n\nexports.setJson = setJson;\nexports.getJson = getJson;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-authenticators/build/WebStorage.js\n// module id = 667\n// module chunks = 1","/**\n * This module contains functions used to track when users are logged out sooner than we'd expect\n */\n\nimport { trackUntimelyLogout as trackUntimelyLogoutInOmniture } from 'lib/omniture';\n\nconst INITIAL_AUTHN_DATA_STORAGE_KEY = '@watch:INITIAL_AUTHN_DATA';\nconst AUTHN_TTL_STORAGE_KEY = '@watch:TTL_AUTHN';\n\n// make the numbers look pretty in omniture\nfunction formatTimeInMillisToDays(time) {\n if (typeof time === 'number') {\n return (time / 1000 / 60 / 60 / 24).toFixed(2);\n }\n return 'unknown';\n}\n\n// public function to tell us if we've already saved their authNTtl (to prevent overriding it)\nexport function isAuthNTtlSaved() {\n return !!localStorage.getItem(AUTHN_TTL_STORAGE_KEY);\n}\n\n// saves the time in which they authenticated, and which provider\nexport function saveInitialAuthNData({ name, abbreviation }) {\n if (localStorage) {\n localStorage.setItem(INITIAL_AUTHN_DATA_STORAGE_KEY, JSON.stringify({\n date: new Date(),\n provider: { name, abbreviation }\n }));\n }\n}\n\n// saves the expected TTL as returned from Adobe\nexport function saveAuthNTtl(ttl) {\n if (localStorage && typeof ttl === 'number') {\n localStorage.setItem(AUTHN_TTL_STORAGE_KEY, new Date(ttl));\n }\n}\n\n// clear out all storage keys related to untimely logout tracking\nexport function reset() {\n if (localStorage) {\n localStorage.removeItem(INITIAL_AUTHN_DATA_STORAGE_KEY);\n localStorage.removeItem(AUTHN_TTL_STORAGE_KEY);\n }\n}\n\n// get necessary items from localStorage and actually do the tracking\nexport function trackUntimelyLogout(entitlementsTracking) {\n if (localStorage) {\n try {\n const initialAuthNDataString = localStorage.getItem(INITIAL_AUTHN_DATA_STORAGE_KEY);\n const authNTtl = localStorage.getItem(AUTHN_TTL_STORAGE_KEY);\n\n if (authNTtl && initialAuthNDataString) {\n const initialAuthNData = JSON.parse(initialAuthNDataString);\n const provider = initialAuthNData.provider || {};\n const initialLoginTime = (new Date(initialAuthNData.date)).getTime();\n const loginExpireTime = (new Date(authNTtl)).getTime();\n const currentTime = (new Date()).getTime();\n\n const actualLoginTime = formatTimeInMillisToDays(currentTime - initialLoginTime);\n const expectedLoginTime = formatTimeInMillisToDays(loginExpireTime - initialLoginTime);\n // if the login expiration has not yet reached, the user got logged out unexpectedly\n if (loginExpireTime > currentTime) {\n trackUntimelyLogoutInOmniture(\n actualLoginTime,\n expectedLoginTime,\n provider,\n entitlementsTracking\n );\n }\n reset();\n }\n } catch (ex) {\n console.error(ex);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/metrics/untimelyLogoutTracker.js","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_createSet.js\n// module id = 669\n// module chunks = 1","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/noop.js\n// module id = 670\n// module chunks = 1","import { createSelector } from 'reselect';\n\nconst networksSelector = ({ networks = {} }) => networks;\n\nexport default createSelector(networksSelector, ({ data }) => data);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/networksSelector.js","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nmodule.exports = chunk;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/chunk.js\n// module id = 672\n// module chunks = 1","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseSlice.js\n// module id = 673\n// module chunks = 1","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(SideEffect, _Component);\n\n function SideEffect() {\n return _Component.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n };\n\n _proto.componentWillMount = function componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.Component);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-side-effect/lib/index.js\n// module id = 674\n// module chunks = 1","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/shallowequal/index.js\n// module id = 675\n// module chunks = 1","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-helmet/node_modules/deep-equal/index.js\n// module id = 676\n// module chunks = 1","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-helmet/node_modules/deep-equal/lib/keys.js\n// module id = 677\n// module chunks = 1","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-helmet/node_modules/deep-equal/lib/is_arguments.js\n// module id = 678\n// module chunks = 1","exports.__esModule = true;\nvar TAG_NAMES = exports.TAG_NAMES = {\n HTML: \"htmlAttributes\",\n TITLE: \"title\",\n BASE: \"base\",\n META: \"meta\",\n LINK: \"link\",\n SCRIPT: \"script\",\n NOSCRIPT: \"noscript\",\n STYLE: \"style\"\n};\n\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n NAME: \"name\",\n CHARSET: \"charset\",\n HTTPEQUIV: \"http-equiv\",\n REL: \"rel\",\n HREF: \"href\",\n PROPERTY: \"property\",\n SRC: \"src\",\n INNER_HTML: \"innerHTML\",\n CSS_TEXT: \"cssText\",\n ITEM_PROP: \"itemprop\"\n};\n\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n \"charset\": \"charSet\",\n \"http-equiv\": \"httpEquiv\",\n \"itemprop\": \"itemProp\",\n \"class\": \"className\"\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-helmet/lib/HelmetConstants.js\n// module id = 679\n// module chunks = 1","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/eventemitter3/index.js\n// module id = 680\n// module chunks = 1","/* eslint-disable class-methods-use-this, no-return-assign */\nimport Promise from 'bluebird';\nimport { PlayerTech } from '../../constants';\nimport PlayerBase from '../PlayerBase';\nimport Loader from './Loader';\nimport * as perf from 'lib/util/perf';\n\nclass BAMPlayer extends PlayerBase {\n constructor({\n sdkHost,\n env = 'beta',\n playerVersion,\n geoTimeoutInSeconds = 7,\n loader\n } = {}) {\n super();\n this._sdkHost = sdkHost;\n this._playerVersion = playerVersion;\n this._extensionConfig = { environment: env };\n this._geoTimeoutInSeconds = geoTimeoutInSeconds;\n this._loader = BAMPlayer.loader || loader;\n this.getPlayerExtension = this.getPlayerExtension.bind(this);\n }\n\n get tech() {\n return PlayerTech.BAM;\n }\n\n get playerExtension() {\n return this._playerExtension;\n }\n\n get playerId() {\n return this._playerId;\n }\n\n get container() {\n return document.querySelector(this._playerId);\n }\n\n getPlayerExtension(BamVideoExtension) {\n if (!this._playerExtension) {\n this._playerExtension = new BamVideoExtension(this._extensionConfig); // eslint-disable-line new-cap\n }\n return this._playerExtension;\n }\n\n createSDKWrapper(options = {}) {\n const geolocationKey = 'geolocation';\n const subscriptionsKey = 'subscriptions';\n const sessionTokenKey = 'sessionToken';\n const userTrackingKey = 'userTrackingInformation';\n const { requests, timeout, transactionId } = options;\n if (!BAMPlayer.SDKData[transactionId]) {\n BAMPlayer.SDKData[transactionId] = {};\n } else {\n const transactionData = BAMPlayer.SDKData[transactionId];\n if (transactionData[geolocationKey]) {\n this.emit(BAMPlayer.Events.GEOLOCATION_READY, transactionData[geolocationKey]);\n }\n if (transactionData[subscriptionsKey]) {\n this.emit(BAMPlayer.Events.SUBSCRIPTIONS_READY, transactionData[subscriptionsKey]);\n }\n if (transactionData[sessionTokenKey]) {\n this.emit(BAMPlayer.Events.SESSIONTOKEN_READY, transactionData[sessionTokenKey]);\n }\n if (transactionData[userTrackingKey]) {\n this.emit(BAMPlayer.Events.USER_TRACKING_INFORMATION_READY, transactionData[userTrackingKey]);\n }\n if (Object.keys(transactionData).length === 2) {\n return Promise.resolve();\n }\n }\n const context = requests.join();\n const pertName = `BAMPlayer/createSDKWrapper_${context}`;\n return BAMPlayer.SDKPromises[transactionId] ||\n (BAMPlayer.SDKPromises[transactionId] = this.loadPlayer(context).then(playerExtension => {\n const { eventBus, events } = playerExtension;\n const geoEventName = events.get(BAMPlayer.Events.GEOLOCATION_READY);\n const subEventName = events.get(BAMPlayer.Events.SUBSCRIPTIONS_READY);\n const sessionTokenEventName = events.get(BAMPlayer.Events.SESSIONTOKEN_READY);\n const userTrackingEventName = events.get(BAMPlayer.Events.USER_TRACKING_INFORMATION_READY);\n let timer;\n const geoCallback = event => {\n perf.measureAndTime(pertName);\n window.clearTimeout(timer);\n eventBus.off(geoEventName, geoCallback);\n BAMPlayer.SDKData[transactionId][geolocationKey] = event;\n this.emit(BAMPlayer.Events.GEOLOCATION_READY, event);\n };\n const subCallback = event => {\n perf.measureAndTime(pertName);\n window.clearTimeout(timer);\n eventBus.off(subEventName, subCallback);\n BAMPlayer.SDKData[transactionId][subscriptionsKey] = event;\n this.emit(BAMPlayer.Events.SUBSCRIPTIONS_READY, event);\n };\n const tokenCallback = event => {\n perf.measureAndTime(pertName);\n window.clearTimeout(timer);\n eventBus.off(sessionTokenEventName, tokenCallback);\n BAMPlayer.SDKData[transactionId][sessionTokenKey] = event;\n this.emit(BAMPlayer.Events.SESSIONTOKEN_READY, event);\n };\n\n const userTrackingCallback = event => {\n perf.measureAndTime(pertName);\n window.clearTimeout(timer);\n eventBus.off(userTrackingEventName, userTrackingCallback);\n BAMPlayer.SDKData[transactionId][userTrackingKey] = event;\n this.emit(BAMPlayer.Events.USER_TRACKING_INFORMATION_READY, event);\n };\n\n // TODO: DTC - BAM to reject promise when any error occurs\n if (timeout) {\n timer = window.setTimeout(() => {\n console.error(`createSDKWrapper timed out after ${this._geoTimeoutInSeconds} seconds`);\n perf.measureAndTime(pertName);\n eventBus.off(geoEventName, geoCallback);\n eventBus.off(subEventName, subCallback);\n eventBus.off(sessionTokenEventName, tokenCallback);\n eventBus.off(userTrackingEventName, userTrackingCallback);\n\n if (requests.indexOf(geolocationKey) > -1) {\n const geoEvent = { error: 'timeout' };\n BAMPlayer.SDKData[transactionId][geolocationKey] = geoEvent;\n this.emit(BAMPlayer.Events.GEOLOCATION_READY, geoEvent);\n }\n if (requests.indexOf(subscriptionsKey) > -1) {\n const subEvent = {\n error: 'timeout',\n body: { subscriptions: [] }\n };\n BAMPlayer.SDKData[transactionId][subscriptionsKey] = subEvent;\n this.emit(BAMPlayer.Events.SUBSCRIPTIONS_READY, subEvent);\n }\n if (requests.indexOf(sessionTokenKey) > -1) {\n const tokenEvent = {\n error: 'timeout',\n body: { token: null }\n };\n BAMPlayer.SDKData[transactionId][sessionTokenKey] = tokenEvent;\n this.emit(BAMPlayer.Events.SESSIONTOKEN_READY, tokenEvent);\n }\n if (requests.indexOf(userTrackingKey) > -1) {\n const userTrackingEvent = {\n error: 'timeout',\n body: {}\n };\n BAMPlayer.SDKData[transactionId][userTrackingKey] = userTrackingEvent;\n this.emit(BAMPlayer.Events.USER_TRACKING_INFORMATION_READY, userTrackingEvent);\n }\n }, this._geoTimeoutInSeconds * 1000);\n }\n\n if (requests.indexOf(geolocationKey) > -1) {\n eventBus.on(geoEventName, geoCallback);\n }\n if (requests.indexOf(subscriptionsKey) > -1) {\n eventBus.on(subEventName, subCallback);\n }\n if (requests.indexOf(sessionTokenKey) > -1) {\n eventBus.on(sessionTokenEventName, tokenCallback);\n }\n if (requests.indexOf(userTrackingKey) > -1) {\n eventBus.on(userTrackingEventName, userTrackingCallback);\n }\n perf.markStart(pertName);\n return playerExtension.createSDKWrapper(options.selector, options);\n }));\n }\n\n renderPaywall(options) {\n return this.loadPlayer().then(playerExtension => {\n const { eventBus, events } = playerExtension;\n return playerExtension.renderPaywall(options.selector, options)\n .then(() => {\n eventBus.once(events.get(BAMPlayer.Events.LOGIN_REQUESTED), (event) => {\n this.emit(BAMPlayer.Events.LOGIN_REQUESTED, event);\n });\n });\n });\n }\n\n sendContentReward(selector, rewardToken, contentId, userActivityAction, recommendedContentIds) {\n return this.loadPlayer()\n .then(playerExtension => playerExtension.sendContentReward(\n selector,\n rewardToken,\n contentId,\n userActivityAction,\n recommendedContentIds\n ).then(result =>\n // TODO: Will be removed once deployed to production\n console.info('sendContentReward result:', result) // eslint-disable-line\n )\n );\n }\n\n loadPlayer(context) {\n const perfName = context ? `BAMPlayer/loadPlayer_${context}` : 'BAMPlayer/loadPlayer';\n perf.markStart(perfName);\n return this._loader.load(this._sdkHost, this._playerVersion).then((BamVideoExtension) => {\n perf.measureAndTime(perfName);\n return this.getPlayerExtension(BamVideoExtension);\n });\n }\n\n create(options) {\n // only allow one player within `WatchESPNWebPlayer` instance\n // TODO: consider using `singlePlayerMode=true`\n const isNew = !this._playerId;\n return this.loadPlayer()\n .then(playerExtension => {\n const { eventBus, events } = playerExtension;\n // or is `updatePlayerConfigs` for updating `extensionConfig`?\n // then how do we switch content?\n const api = isNew ? 'createPlayer' : 'loadMedia';\n return new Promise((resolve, reject) => {\n console.log(api, options); // eslint-disable-line no-console\n playerExtension[api](options.selector, options)\n .then(playerId => {\n if (isNew) {\n this._playerId = playerId;\n this.subscribe(playerExtension);\n const readyTimer = window.setTimeout(() => {\n resolve(this);\n }, 100);\n eventBus.once(events.get(BAMPlayer.Events.EMBED_PLAYER_READY), () => {\n window.clearTimeout(readyTimer);\n resolve(this);\n });\n\n return playerExtension.insertPlayer(playerId);\n }\n\n resolve(this);\n\n return this._playerId;\n })\n .catch(err => {\n console.error(err);\n reject(err);\n });\n });\n });\n }\n\n loadMedia(options) {\n if (!this._playerExtension || !this._playerId) {\n return Promise.resolve(this);\n }\n return this._playerExtension.loadMedia(this._playerId, options).then(() => this);\n }\n\n destroyPlayer() {\n if (this._playerExtension && this._playerId) {\n this.unsubscribe();\n return this._playerExtension\n .destroyPlayer(this._playerId)\n .then(() => {\n this._playerId = null;\n return this;\n })\n .catch(() => {});\n }\n\n return Promise.resolve(this);\n }\n\n changeFeed(options) {\n if (!this._playerExtension || !this._playerId) {\n return Promise.resolve(this);\n }\n console.log('changeFeed', options); // eslint-disable-line no-console\n return this._playerExtension.changeFeed(this._playerId, options).then(() => this);\n }\n\n deactivate() {\n if (!this._playerExtension || !this._playerId) {\n return Promise.resolve(this);\n }\n return this._playerExtension.deactivatePlayer(this._playerId).then(() => this);\n }\n\n delete() {\n if (this._playerExtension && this._playerId) {\n this.unsubscribe();\n return this._playerExtension\n .deletePlayer(this._playerId)\n .then(() => {\n this._playerId = null;\n return this;\n })\n .catch(() => {});\n }\n return Promise.resolve(this);\n }\n\n play() {\n if (!this._playerExtension) {\n return Promise.resolve(this);\n }\n return this._playerExtension.playPlayer(this._playerId).then(() => this);\n }\n\n pause() {\n if (!this._playerExtension) {\n return Promise.resolve(this);\n }\n return this._playerExtension.pausePlayer(this._playerId).then(() => this);\n }\n\n mute() {\n if (!this._playerExtension) {\n return Promise.resolve(this);\n }\n return this._playerExtension.mutePlayer(this._playerId).then(() => this);\n }\n\n unmute() {\n if (!this._playerExtension) {\n return Promise.resolve(this);\n }\n return this._playerExtension.unmutePlayer(this._playerId).then(() => this);\n }\n\n error() {\n throw new Error('`error` not implemented');\n }\n\n getPlayerConfigs() {\n if (!this._playerExtension) {\n return Promise.resolve(this);\n }\n return this._playerExtension.getPlayerConfigs(this._playerId);\n }\n\n updatePlayerConfigs(newConfigs) {\n if (!this._playerExtension) {\n return Promise.resolve(this);\n }\n return this._playerExtension.updatePlayerConfigs(this._playerId, newConfigs).then(() => this);\n }\n\n subscribe(playerExtension) {\n const { eventBus, events } = playerExtension;\n events.forEach((value, key) => {\n // TODO: check if the listeners are cleaned up by `deletePlayer`\n eventBus.on(value, event => {\n this.emit(key, event);\n console.log('Event Received', key, event); // eslint-disable-line no-console\n });\n });\n this._unsubscribeEvents = () => {\n eventBus.removeAllListeners();\n };\n }\n\n unsubscribe() {\n if (this._unsubscribeEvents) {\n this._unsubscribeEvents();\n this._unsubscribeEvents = null;\n }\n }\n}\n\nBAMPlayer.loader = new Loader();\n\nBAMPlayer.SDKPromises = {};\nBAMPlayer.SDKData = {};\n\nBAMPlayer.Events = {\n LOGIN_REQUESTED: 'LOGIN_REQUESTED',\n SUBSCRIPTIONS_READY: 'SUBSCRIPTIONS_READY',\n GEOLOCATION_READY: 'GEOLOCATION_READY',\n AUTHORIZE_USER: 'AUTHORIZE_USER',\n EMBED_PLAYER_READY: 'EMBED_PLAYER_READY',\n MEDIA_LOADED: 'MEDIA_LOADED',\n MEDIA_PAUSED: 'MEDIA_PAUSED',\n MEDIA_RESUME: 'MEDIA_RESUME',\n MEDIA_MUTE: 'MEDIA_MUTE',\n MEDIA_UNMUTE: 'MEDIA_UNMUTE',\n PLAYBACK_ERROR: 'PLAYBACK_ERROR', // TODO - to be deprecated\n PLAYBACK_INITIALIZED: 'PLAYBACK_INITIALIZED',\n FEED_CHANGE_REQUEST: 'FEED_CHANGE_REQUEST',\n FEED_CHANGED: 'FEED_CHANGED',\n SETTINGS_CHANGED: 'SETTINGS_CHANGED',\n PLAYER_CONFIGS_RETURNED: 'PLAYER_CONFIGS_RETURNED',\n PLAYER_CONFIGS_UPDATED: 'PLAYER_CONFIGS_UPDATED',\n SESSIONTOKEN_READY: 'SESSIONTOKEN_READY',\n SYNDICATED_PLAYER_MUTE: 'SYNDICATED_PLAYER_MUTE',\n SYNDICATED_PLAYER_UNMUTE: 'SYNDICATED_PLAYER_UNMUTE',\n SYNDICATED_PLAYER_PLAY: 'SYNDICATED_PLAYER_PLAY',\n SYNDICATED_PLAYER_PAUSE: 'SYNDICATED_PLAYER_PAUSE',\n SYNDICATED_PLAYER_ADD_TO_PLAYLIST: 'SYNDICATED_PLAYER_ADD_TO_PLAYLIST',\n SYNDICATED_PLAYER_REMOVE_FROM_PLAYLIST: 'SYNDICATED_PLAYER_REMOVE_FROM_PLAYLIST',\n SYNDICATED_PLAYER_CLEAR_PLAYLIST: 'SYNDICATED_PLAYER_CLEAR_PLAYLIST',\n SYNDICATED_PLAYER_PLAYLIST_NEXT: 'SYNDICATED_PLAYER_PLAYLIST_NEXT',\n SYNDICATED_PLAYER_PLAYLIST_PREVIOUS: 'SYNDICATED_PLAYER_PLAYLIST_PREVIOUS',\n SYNDICATED_PLAYER_GET_CONFIGS: 'SYNDICATED_PLAYER_GET_CONFIGS',\n SYNDICATED_PLAYER_UPDATE_CONFIGS: 'SYNDICATED_PLAYER_UPDATE_CONFIGS',\n USER_TRACKING_INFORMATION_READY: 'USER_TRACKING_INFORMATION_READY'\n};\n\nexport default BAMPlayer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/video-player/player-tech/BAMPlayer/index.js","/* eslint-disable no-return-assign */\nimport Promise from 'bluebird';\n\nclass Loader {\n constructor() {\n this._promises = {};\n }\n load(host = 'https://beta.web.plus.espn.com', version = 'latest') { // TODO: DTC - point to prod by default\n return (\n this._promises[version] ||\n (this._promises[version] = new Promise((resolve, reject) => {\n if (window.BamVideoExtensionVersioned && window.BamVideoExtensionVersioned[version]) {\n resolve(window.BamVideoExtensionVersioned[version]);\n } else {\n // TODO: take `environment` into account\n const url = `${host}/builds/${version}/dist/index.js`;\n const script = document.createElement('script');\n script.async = true;\n\n script.onload = () => {\n if (window.BamVideoExtension) {\n if (!window.BamVideoExtensionVersioned) {\n window.BamVideoExtensionVersioned = {};\n }\n window.BamVideoExtensionVersioned[version] = window.BamVideoExtension;\n // delete window.BamVideoExtension;\n resolve(window.BamVideoExtensionVersioned[version]);\n } else {\n reject(new Error('script loaded but window.BamVideoExtension not found.'));\n }\n };\n\n script.onerror = () => {\n reject(new Error('failed to load BAM SDK'));\n };\n\n script.src = url;\n document.head.appendChild(script);\n }\n }))\n );\n }\n}\n\nexport default Loader;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/video-player/player-tech/BAMPlayer/Loader.js","'use strict';\n\nvar base64_url_decode = require('./base64_url_decode');\n\nfunction InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = 'InvalidTokenError';\n\nmodule.exports = function (token,options) {\n if (typeof token !== 'string') {\n throw new InvalidTokenError('Invalid token specified');\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split('.')[pos]));\n } catch (e) {\n throw new InvalidTokenError('Invalid token specified: ' + e.message);\n }\n};\n\nmodule.exports.InvalidTokenError = InvalidTokenError;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jwt-decode/lib/index.js\n// module id = 683\n// module chunks = 1","var atob = require('./atob');\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = '0' + code;\n }\n return '%' + code;\n }));\n}\n\nmodule.exports = function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try{\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jwt-decode/lib/base64_url_decode.js\n// module id = 684\n// module chunks = 1","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction polyfill (input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\n\nmodule.exports = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jwt-decode/lib/atob.js\n// module id = 685\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _FanAPI = require('./FanAPI');\n\nvar _FanAPI2 = _interopRequireDefault(_FanAPI);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _FanAPI2.default;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-fanapi/dist/index.js\n// module id = 686\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _superagentBluebirdPromise = require('superagent-bluebird-promise');\n\nvar _superagentBluebirdPromise2 = _interopRequireDefault(_superagentBluebirdPromise);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _Storage = require('./Storage');\n\nvar _Storage2 = _interopRequireDefault(_Storage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FAN_PRODUCT_PROD_HOST = 'https://fan.api.espn.com';\nvar FAN_CORE_PROD_HOST = 'https://fan.core.api.espn.com';\nvar DEFAULT_SOURCE_HEADER = 'espn-video-player'; // watchespn-web // ESPN.com - FAM\nvar FAN_API_CACHE_MINUTES = 10;\nvar SWID_RE = /^{[\\w-]+}/;\n\nvar DEFAULT_CONFIGURATION = {\n sourceHeader: DEFAULT_SOURCE_HEADER,\n cacheDuration: FAN_API_CACHE_MINUTES\n};\n\nvar _sourceHeader = void 0;\nvar _cacheDuration = void 0;\nvar _storage = void 0;\n\nfunction getFan(id, resolve, reject) {\n var url = FAN_PRODUCT_PROD_HOST + '/apis/v2/fans/' + id;\n _superagentBluebirdPromise2.default.get(url).withCredentials().set('X-Personalization-Source', _sourceHeader).end(function (err, res) {\n if (err || !res.ok) {\n reject(err);\n } else {\n var fan = res && res.body;\n _storage.setFan({ item: fan, id: fan.id, timestamp: Date.now() });\n resolve(fan);\n }\n });\n}\n\nfunction getFanForId(id) {\n if (!SWID_RE.test(id)) {\n return _bluebird2.default.reject(new Error('Invalid SWID'));\n }\n\n return new _bluebird2.default(function (resolve, reject) {\n _storage.getFan().then(function (cache) {\n var fan = cache && cache.item;\n var cacheExpired = Date.now() - cache.timestamp > _cacheDuration * 60 * 1000;\n if (fan === null || fan.id !== id || cacheExpired) {\n getFan(id, resolve, reject);\n } else {\n resolve(fan);\n }\n }).catch(function () {\n getFan(id, resolve, reject);\n });\n });\n}\n\nfunction updateSettingsForFanId(id, postData) {\n if (!SWID_RE.test(id)) {\n return _bluebird2.default.reject(new Error('Invalid SWID'));\n }\n\n var url = FAN_CORE_PROD_HOST + '/apis/v2/fans/' + id + '/profile/';\n return _superagentBluebirdPromise2.default.post(url).withCredentials().set('X-Personalization-Source', _sourceHeader).send(postData).promise();\n}\n\nfunction FanAPI() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_CONFIGURATION,\n _ref$sourceHeader = _ref.sourceHeader,\n sourceHeader = _ref$sourceHeader === undefined ? DEFAULT_CONFIGURATION.sourceHeader : _ref$sourceHeader,\n _ref$cacheDuration = _ref.cacheDuration,\n cacheDuration = _ref$cacheDuration === undefined ? DEFAULT_CONFIGURATION.cacheDuration : _ref$cacheDuration;\n\n if (!(this instanceof FanAPI)) {\n return new FanAPI({ sourceHeader: sourceHeader, cacheDuration: cacheDuration });\n }\n _sourceHeader = sourceHeader;\n _cacheDuration = cacheDuration;\n _storage = new _Storage2.default(_cacheDuration);\n return this;\n}\n\nFanAPI.prototype.getFanForId = function (id, callback) {\n return getFanForId(id).tap(function (fan) {\n if (typeof callback === 'function') callback(fan);\n });\n};\n\nFanAPI.prototype.getAutoStartForFanId = function (id, callback) {\n return getFanForId(id).then(function (fan) {\n var profile = fan && fan.profile;\n var settings = profile && profile.settings;\n var videoAutoStartValue = settings && settings.videoAutoStart && settings.videoAutoStart.value;\n return videoAutoStartValue !== '2';\n }).catch(function () {\n return true;\n }).tap(function (videoAutoStart) {\n if (typeof callback === 'function') {\n callback(videoAutoStart);\n }\n });\n};\n\nFanAPI.prototype.updateAutoStartForFanId = function (id, autoStart, callback) {\n var videoAutoStartValue = (autoStart ? '1' : '2').toString();\n\n var postData = {\n settings: {\n videoAutoStart: {\n value: videoAutoStartValue,\n lastUpdateSource: _sourceHeader,\n lastUpdateDate: Date.now()\n }\n }\n };\n\n return updateSettingsForFanId(id, postData).tap(function (err, res) {\n if (typeof callback === 'function') {\n callback(err, res);\n }\n }).catch(function () {\n return true;\n }).finally(function () {\n FanAPI.prototype.updateAutoStartCache(postData.settings);\n });\n};\n\nFanAPI.prototype.updateAutoStartCache = function (settings) {\n var videoAutoStart = settings.videoAutoStart;\n _storage.getFan().then(function (cache) {\n var fan = cache && cache.item;\n // const cacheExpired = (Date.now() - cache.timestamp > _cacheDuration * 60 * 1000);\n Object.keys(videoAutoStart).forEach(function (key) {\n fan.profile.settings.videoAutoStart[key] = videoAutoStart[key];\n });\n _storage.setFan({ item: fan, id: fan.id, timestamp: Date.now() });\n }).catch(function () {});\n};\n\nFanAPI.prototype.getUidsForFanId = function (id, callback) {\n function hasUid(preference) {\n return preference.metaData.team || preference.metaData.sport;\n }\n\n function collectUids(preference) {\n if (preference.metaData.team) {\n return preference.metaData.team.uid;\n } else if (preference.metaData.sport) {\n return preference.metaData.sport.uid;\n }\n return null;\n }\n\n return getFanForId(id).then(function (fan) {\n var preferences = fan && fan.preferences;\n return preferences.filter(hasUid).map(collectUids);\n }).catch(function () {\n return [];\n }).tap(function (uids) {\n if (typeof callback === 'function') {\n callback(uids);\n }\n });\n};\n\nexports.default = FanAPI;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-fanapi/dist/FanAPI.js\n// module id = 687\n// module chunks = 1","// From https://gist.github.com/epeli/11209665\n\nvar Promise = require(\"bluebird\");\n\n// So you can `var request = require(\"superagent-bluebird-promise\")`\nvar superagent = module.exports = require(\"superagent\");\nvar Request = superagent.Request;\n\ntry {\n Promise.config({\n // Enable cancellation.\n cancellation: true\n });\n} catch (e) {\n console.warn([\n 'Enabling bluebird cancellation failed.',\n 'If you are using bluebird elsewhere in your application,',\n 'be sure to enable cancellation there as well.',\n 'Promise.config({cancellation: true});'].join(' ')\n );\n console.warn(e.stack);\n}\n// Create custom error type.\n// Create a new object, that prototypally inherits from the Error constructor.\nvar SuperagentPromiseError = function(message, originalError) {\n var stack;\n this.message = message;\n this.name = 'SuperagentPromiseError';\n this.originalError = originalError;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n stack = this.stack;\n }\n else {\n stack = (new Error(message)).stack;\n }\n\n if (Object.defineProperty) {\n Object.defineProperty(this, 'stack', {\n get: function() {\n if (this.originalError) {\n return stack + '\\nCaused by: ' + this.originalError.stack;\n }\n\n return stack;\n }\n });\n }\n};\n\nSuperagentPromiseError.prototype = new Error();\nSuperagentPromiseError.prototype.constructor = SuperagentPromiseError;\nsuperagent.SuperagentPromiseError = SuperagentPromiseError;\n\n/**\n * @namespace utils\n * @class Superagent\n */\n\n/**\n *\n * Add promise support for superagent/supertest\n *\n * Call .promise() to return promise for the request\n *\n * @method then\n * @return {Bluebird.Promise}\n */\nRequest.prototype.promise = function() {\n var req = this;\n var error;\n\n return new Promise(function(resolve, reject, onCancel) {\n req.end(function(err, res) {\n if (typeof res !== \"undefined\" && res !== null && res.status >= 400) {\n var msg = 'cannot ' + req.method + ' ' + req.url + ' (' + res.status + ')';\n error = new SuperagentPromiseError(msg);\n error.status = res.status;\n error.body = res.body;\n error.res = res;\n reject(error);\n } else if (err) {\n reject(new SuperagentPromiseError('Bad request', err));\n } else {\n resolve(res);\n }\n });\n\n if (typeof onCancel === 'function') {\n onCancel(function() {\n req.abort();\n });\n }\n });\n};\n\n/**\n *\n * Make superagent requests Promises ES6 conformant\n *\n * Call .then([onFulfilled], [onRejected]) to register callbacks\n *\n * @method then\n * @param {function} [onFulfilled]\n * @param {function} [onRejected]\n * @return {Bluebird.Promise}\n */\nRequest.prototype.then = function() {\n var promise = this.promise();\n return promise.then.apply(promise, arguments);\n};\n\n/**\n *\n * Make superagent requests Promises ES6 conformant\n *\n * Call .catch([onRejected]) to register callback\n *\n * @method catch\n * @param {function} [onRejected]\n * @return {Bluebird.Promise}\n */\nRequest.prototype.catch = function() {\n var promise = this.promise();\n return promise.catch.apply(promise, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-fanapi/node_modules/superagent-bluebird-promise/index.js\n// module id = 688\n// module chunks = 1","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StorageType = exports.ESPN_FAN_STORAGE_KEY = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global espn window */\n\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// this is the key .com uses for local storage of fanapi data\nvar ESPN_FAN_STORAGE_KEY = exports.ESPN_FAN_STORAGE_KEY = 'fanapi_fan';\nvar StorageType = exports.StorageType = {\n ESPN: 'ESPN',\n LOCAL_STORAGE: 'LOCAL_STORAGE'\n};\n\nvar ls = {\n getItem: function getItem(key) {\n return _bluebird2.default.resolve(JSON.parse(global.localStorage.getItem(key)));\n },\n setItem: function setItem(key, value) {\n global.localStorage.setItem(key, JSON.stringify(value));\n }\n};\n\n/**\n * @class {Storage} - This class uses ESPN storage if available, and local storage if not\n */\n\nvar Storage = function () {\n /**\n * @constructor\n * @param {int} expiration - expiration of storage in minutes\n */\n function Storage() {\n var expiration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n\n _classCallCheck(this, Storage);\n\n this.expiration = expiration;\n // default to localstorage. we will infer storage type at the time [get/set]Fan is called\n this.storageType = StorageType.LOCAL_STORAGE;\n }\n\n /**\n * This function sets appropriate properties if ESPN storage is available. Does not set it twice if already determined.\n */\n\n\n _createClass(Storage, [{\n key: 'inferStorageType',\n value: function inferStorageType() {\n if (this.storageType !== StorageType.ESPN && window && window.espn && window.espn.storageFactory) {\n this.storageType = StorageType.ESPN;\n this.espnStorage = espn.storageFactory.getMostPermanent();\n }\n }\n }, {\n key: 'getFan',\n value: function getFan() {\n var _this = this;\n\n this.inferStorageType();\n if (this.storageType === StorageType.ESPN) {\n return new _bluebird2.default(function (resolve, reject) {\n var cache = _this.espnStorage.getItem(ESPN_FAN_STORAGE_KEY);\n var fan = cache && cache.item;\n if (fan) {\n // keep local storage in sync with espn storage\n ls.setItem(ESPN_FAN_STORAGE_KEY, {\n item: fan,\n id: fan.id,\n timestamp: Date.now()\n });\n resolve(cache);\n } else {\n reject(new Error('No item for key'));\n }\n });\n }\n return ls.getItem(ESPN_FAN_STORAGE_KEY);\n }\n\n /**\n * @param {object} fan - The fan to replace the current cache\n */\n\n }, {\n key: 'setFan',\n value: function setFan(fan) {\n this.inferStorageType();\n // always set local storage cache\n ls.setItem(ESPN_FAN_STORAGE_KEY, {\n item: fan.item,\n id: fan.id,\n timestamp: Date.now()\n });\n\n // only set espn storage if present\n if (this.storageType === StorageType.ESPN) {\n this.espnStorage.setItem(ESPN_FAN_STORAGE_KEY, {\n item: fan.item,\n id: fan && fan.id,\n expiresAt: new Date().getTime() + this.expiration * 60000\n });\n }\n }\n }]);\n\n return Storage;\n}();\n\nexports.default = Storage;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/watch-fanapi/dist/Storage.js\n// module id = 689\n// module chunks = 1","/**\n * generateCommerceFlowUrl - Returns a formatted url string used for DTC commerce. The `locale` is\n * only appended to the url if the country is `us` and the `lang` is either `en` or `es`.\n *\n * @param {object} urlsMap - External app-configurations object containing list of `PACKAGE.DEVICE_TYPE` urls\n * @param {array} packages - An array of entitlements (ex: ['ESPN_PLUS', 'ESPN_PLUS_NHL'])\n * @param {string} deviceType - String representing the Databag device type (ex: 'xbox', 'ps4')\n * @param {string} lang - String representing the language; default `en`\n * @param {string} country - String representing the country; default `US`\n *\n * @return {string} - Returns commerce url or an empty string\n */\nexport default (urlsMap = {}, packages = [], deviceType = '', lang = 'en', country = 'US') => {\n let packageKeys = packages;\n let packagesWithDevice;\n let locale = '';\n\n if (!urlsMap) {\n console.error('generateCommerceFlowUrl(): urlsMap is undefined, verify config file');\n return '';\n }\n\n // Priority set here since deviceType is defined\n if (typeof deviceType === 'string' && deviceType.trim() !== '' && packageKeys.length) {\n packagesWithDevice = packageKeys.map(pkg => `${pkg}.${deviceType.toLowerCase()}`);\n }\n\n if (Array.isArray(packagesWithDevice)) {\n packageKeys = packagesWithDevice;\n }\n\n const url = urlsMap[packageKeys[0]] || urlsMap.ESPN_PLUS;\n const shouldAppendLocale = (url.indexOf('locale') === -1);\n // Add locale if it doesn't exist; only supporting US (domestic) locale for Spanish (es) and English (en)\n if ((shouldAppendLocale && typeof country === 'string' && country.toLowerCase() === 'us') &&\n (lang === 'en' || lang === 'es')) {\n locale = (url.indexOf('?') !== -1) ? `&locale=${lang}_${country}` : `?locale=${lang}_${country}`;\n }\n\n return `${url}${locale}`;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/Activate/util/generateCommerceFlowUrl.js","/* jslint esnext: true */\n\n\"use strict\";\nvar src$core$$ = require(\"./core\"), src$en$$ = require(\"./en\");\n\nsrc$core$$[\"default\"].__addLocaleData(src$en$$[\"default\"]);\nsrc$core$$[\"default\"].defaultLocale = 'en';\n\nexports[\"default\"] = src$core$$[\"default\"];\n\n//# sourceMappingURL=main.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/main.js\n// module id = 692\n// module chunks = 1","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nvar src$utils$$ = require(\"./utils\"), src$es5$$ = require(\"./es5\"), src$compiler$$ = require(\"./compiler\"), intl$messageformat$parser$$ = require(\"intl-messageformat-parser\");\nexports[\"default\"] = MessageFormat;\n\n// -- MessageFormat --------------------------------------------------------\n\nfunction MessageFormat(message, locales, formats) {\n // Parse string messages into an AST.\n var ast = typeof message === 'string' ?\n MessageFormat.__parse(message) : message;\n\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n formats = this._mergeFormats(MessageFormat.formats, formats);\n\n // Defined first because it's used to build the format pattern.\n src$es5$$.defineProperty(this, '_locale', {value: this._resolveLocale(locales)});\n\n // Compile the `ast` to a pattern that is highly optimized for repeated\n // `format()` invocations. **Note:** This passes the `locales` set provided\n // to the constructor instead of just the resolved locale.\n var pluralFn = this._findPluralRuleFunction(this._locale);\n var pattern = this._compilePattern(ast, locales, formats, pluralFn);\n\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var messageFormat = this;\n this.format = function (values) {\n try {\n return messageFormat._format(pattern, values);\n } catch (e) {\n if (e.variableId) {\n throw new Error(\n 'The intl string context variable \\'' + e.variableId + '\\'' +\n ' was not provided to the string \\'' + message + '\\''\n );\n } else {\n throw e;\n }\n }\n };\n}\n\n// Default format options used as the prototype of the `formats` provided to the\n// constructor. These are used when constructing the internal Intl.NumberFormat\n// and Intl.DateTimeFormat instances.\nsrc$es5$$.defineProperty(MessageFormat, 'formats', {\n enumerable: true,\n\n value: {\n number: {\n 'currency': {\n style: 'currency'\n },\n\n 'percent': {\n style: 'percent'\n }\n },\n\n date: {\n 'short': {\n month: 'numeric',\n day : 'numeric',\n year : '2-digit'\n },\n\n 'medium': {\n month: 'short',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'long': {\n month: 'long',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'full': {\n weekday: 'long',\n month : 'long',\n day : 'numeric',\n year : 'numeric'\n }\n },\n\n time: {\n 'short': {\n hour : 'numeric',\n minute: 'numeric'\n },\n\n 'medium': {\n hour : 'numeric',\n minute: 'numeric',\n second: 'numeric'\n },\n\n 'long': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n },\n\n 'full': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n }\n }\n }\n});\n\n// Define internal private properties for dealing with locale data.\nsrc$es5$$.defineProperty(MessageFormat, '__localeData__', {value: src$es5$$.objCreate(null)});\nsrc$es5$$.defineProperty(MessageFormat, '__addLocaleData', {value: function (data) {\n if (!(data && data.locale)) {\n throw new Error(\n 'Locale data provided to IntlMessageFormat is missing a ' +\n '`locale` property'\n );\n }\n\n MessageFormat.__localeData__[data.locale.toLowerCase()] = data;\n}});\n\n// Defines `__parse()` static method as an exposed private.\nsrc$es5$$.defineProperty(MessageFormat, '__parse', {value: intl$messageformat$parser$$[\"default\"].parse});\n\n// Define public `defaultLocale` property which defaults to English, but can be\n// set by the developer.\nsrc$es5$$.defineProperty(MessageFormat, 'defaultLocale', {\n enumerable: true,\n writable : true,\n value : undefined\n});\n\nMessageFormat.prototype.resolvedOptions = function () {\n // TODO: Provide anything else?\n return {\n locale: this._locale\n };\n};\n\nMessageFormat.prototype._compilePattern = function (ast, locales, formats, pluralFn) {\n var compiler = new src$compiler$$[\"default\"](locales, formats, pluralFn);\n return compiler.compile(ast);\n};\n\nMessageFormat.prototype._findPluralRuleFunction = function (locale) {\n var localeData = MessageFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find a `pluralRuleFunction` to return.\n while (data) {\n if (data.pluralRuleFunction) {\n return data.pluralRuleFunction;\n }\n\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n\n throw new Error(\n 'Locale data added to IntlMessageFormat is missing a ' +\n '`pluralRuleFunction` for :' + locale\n );\n};\n\nMessageFormat.prototype._format = function (pattern, values) {\n var result = '',\n i, len, part, id, value, err;\n\n for (i = 0, len = pattern.length; i < len; i += 1) {\n part = pattern[i];\n\n // Exist early for string parts.\n if (typeof part === 'string') {\n result += part;\n continue;\n }\n\n id = part.id;\n\n // Enforce that all required values are provided by the caller.\n if (!(values && src$utils$$.hop.call(values, id))) {\n err = new Error('A value must be provided for: ' + id);\n err.variableId = id;\n throw err;\n }\n\n value = values[id];\n\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (part.options) {\n result += this._format(part.getOption(value), values);\n } else {\n result += part.format(value);\n }\n }\n\n return result;\n};\n\nMessageFormat.prototype._mergeFormats = function (defaults, formats) {\n var mergedFormats = {},\n type, mergedType;\n\n for (type in defaults) {\n if (!src$utils$$.hop.call(defaults, type)) { continue; }\n\n mergedFormats[type] = mergedType = src$es5$$.objCreate(defaults[type]);\n\n if (formats && src$utils$$.hop.call(formats, type)) {\n src$utils$$.extend(mergedType, formats[type]);\n }\n }\n\n return mergedFormats;\n};\n\nMessageFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(MessageFormat.defaultLocale);\n\n var localeData = MessageFormat.__localeData__;\n var i, len, localeParts, data;\n\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n\n localeParts.pop();\n }\n }\n\n var defaultLocale = locales.pop();\n throw new Error(\n 'No locale data has been added to IntlMessageFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale\n );\n};\n\n//# sourceMappingURL=core.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/core.js\n// module id = 693\n// module chunks = 1","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nvar src$utils$$ = require(\"./utils\");\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!src$utils$$.hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (src$utils$$.hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nexports.defineProperty = defineProperty, exports.objCreate = objCreate;\n\n//# sourceMappingURL=es5.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/es5.js\n// module id = 694\n// module chunks = 1","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nexports[\"default\"] = Compiler;\n\nfunction Compiler(locales, formats, pluralFn) {\n this.locales = locales;\n this.formats = formats;\n this.pluralFn = pluralFn;\n}\n\nCompiler.prototype.compile = function (ast) {\n this.pluralStack = [];\n this.currentPlural = null;\n this.pluralNumberFormat = null;\n\n return this.compileMessage(ast);\n};\n\nCompiler.prototype.compileMessage = function (ast) {\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new Error('Message AST is not of type: \"messageFormatPattern\"');\n }\n\n var elements = ast.elements,\n pattern = [];\n\n var i, len, element;\n\n for (i = 0, len = elements.length; i < len; i += 1) {\n element = elements[i];\n\n switch (element.type) {\n case 'messageTextElement':\n pattern.push(this.compileMessageText(element));\n break;\n\n case 'argumentElement':\n pattern.push(this.compileArgument(element));\n break;\n\n default:\n throw new Error('Message element does not have a valid type');\n }\n }\n\n return pattern;\n};\n\nCompiler.prototype.compileMessageText = function (element) {\n // When this `element` is part of plural sub-pattern and its value contains\n // an unescaped '#', use a `PluralOffsetString` helper to properly output\n // the number with the correct offset in the string.\n if (this.currentPlural && /(^|[^\\\\])#/g.test(element.value)) {\n // Create a cache a NumberFormat instance that can be reused for any\n // PluralOffsetString instance in this message.\n if (!this.pluralNumberFormat) {\n this.pluralNumberFormat = new Intl.NumberFormat(this.locales);\n }\n\n return new PluralOffsetString(\n this.currentPlural.id,\n this.currentPlural.format.offset,\n this.pluralNumberFormat,\n element.value);\n }\n\n // Unescape the escaped '#'s in the message text.\n return element.value.replace(/\\\\#/g, '#');\n};\n\nCompiler.prototype.compileArgument = function (element) {\n var format = element.format;\n\n if (!format) {\n return new StringFormat(element.id);\n }\n\n var formats = this.formats,\n locales = this.locales,\n pluralFn = this.pluralFn,\n options;\n\n switch (format.type) {\n case 'numberFormat':\n options = formats.number[format.style];\n return {\n id : element.id,\n format: new Intl.NumberFormat(locales, options).format\n };\n\n case 'dateFormat':\n options = formats.date[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'timeFormat':\n options = formats.time[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'pluralFormat':\n options = this.compileOptions(element);\n return new PluralFormat(\n element.id, format.ordinal, format.offset, options, pluralFn\n );\n\n case 'selectFormat':\n options = this.compileOptions(element);\n return new SelectFormat(element.id, options);\n\n default:\n throw new Error('Message element does not have a valid format type');\n }\n};\n\nCompiler.prototype.compileOptions = function (element) {\n var format = element.format,\n options = format.options,\n optionsHash = {};\n\n // Save the current plural element, if any, then set it to a new value when\n // compiling the options sub-patterns. This conforms the spec's algorithm\n // for handling `\"#\"` syntax in message text.\n this.pluralStack.push(this.currentPlural);\n this.currentPlural = format.type === 'pluralFormat' ? element : null;\n\n var i, len, option;\n\n for (i = 0, len = options.length; i < len; i += 1) {\n option = options[i];\n\n // Compile the sub-pattern and save it under the options's selector.\n optionsHash[option.selector] = this.compileMessage(option.value);\n }\n\n // Pop the plural stack to put back the original current plural value.\n this.currentPlural = this.pluralStack.pop();\n\n return optionsHash;\n};\n\n// -- Compiler Helper Classes --------------------------------------------------\n\nfunction StringFormat(id) {\n this.id = id;\n}\n\nStringFormat.prototype.format = function (value) {\n if (!value && typeof value !== 'number') {\n return '';\n }\n\n return typeof value === 'string' ? value : String(value);\n};\n\nfunction PluralFormat(id, useOrdinal, offset, options, pluralFn) {\n this.id = id;\n this.useOrdinal = useOrdinal;\n this.offset = offset;\n this.options = options;\n this.pluralFn = pluralFn;\n}\n\nPluralFormat.prototype.getOption = function (value) {\n var options = this.options;\n\n var option = options['=' + value] ||\n options[this.pluralFn(value - this.offset, this.useOrdinal)];\n\n return option || options.other;\n};\n\nfunction PluralOffsetString(id, offset, numberFormat, string) {\n this.id = id;\n this.offset = offset;\n this.numberFormat = numberFormat;\n this.string = string;\n}\n\nPluralOffsetString.prototype.format = function (value) {\n var number = this.numberFormat.format(value - this.offset);\n\n return this.string\n .replace(/(^|[^\\\\])#/g, '$1' + number)\n .replace(/\\\\#/g, '#');\n};\n\nfunction SelectFormat(id, options) {\n this.id = id;\n this.options = options;\n}\n\nSelectFormat.prototype.getOption = function (value) {\n var options = this.options;\n return options[value] || options.other;\n};\n\n//# sourceMappingURL=compiler.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/compiler.js\n// module id = 695\n// module chunks = 1","'use strict';\n\nexports = module.exports = require('./lib/parser')['default'];\nexports['default'] = exports;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat-parser/index.js\n// module id = 696\n// module chunks = 1","\"use strict\";\n\nexports[\"default\"] = (function() {\n \"use strict\";\n\n /*\n * Generated by PEG.js 0.9.0.\n *\n * http://pegjs.org/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n }\n\n peg$subclass(peg$SyntaxError, Error);\n\n function peg$parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n parser = this,\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = function(elements) {\n return {\n type : 'messageFormatPattern',\n elements: elements,\n location: location()\n };\n },\n peg$c1 = function(text) {\n var string = '',\n i, j, outerLen, inner, innerLen;\n\n for (i = 0, outerLen = text.length; i < outerLen; i += 1) {\n inner = text[i];\n\n for (j = 0, innerLen = inner.length; j < innerLen; j += 1) {\n string += inner[j];\n }\n }\n\n return string;\n },\n peg$c2 = function(messageText) {\n return {\n type : 'messageTextElement',\n value: messageText,\n location: location()\n };\n },\n peg$c3 = /^[^ \\t\\n\\r,.+={}#]/,\n peg$c4 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}#]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}#]\" },\n peg$c5 = \"{\",\n peg$c6 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c7 = \",\",\n peg$c8 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c9 = \"}\",\n peg$c10 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c11 = function(id, format) {\n return {\n type : 'argumentElement',\n id : id,\n format: format && format[2],\n location: location()\n };\n },\n peg$c12 = \"number\",\n peg$c13 = { type: \"literal\", value: \"number\", description: \"\\\"number\\\"\" },\n peg$c14 = \"date\",\n peg$c15 = { type: \"literal\", value: \"date\", description: \"\\\"date\\\"\" },\n peg$c16 = \"time\",\n peg$c17 = { type: \"literal\", value: \"time\", description: \"\\\"time\\\"\" },\n peg$c18 = function(type, style) {\n return {\n type : type + 'Format',\n style: style && style[2],\n location: location()\n };\n },\n peg$c19 = \"plural\",\n peg$c20 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n peg$c21 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: false,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options,\n location: location()\n };\n },\n peg$c22 = \"selectordinal\",\n peg$c23 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n peg$c24 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: true,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options,\n location: location()\n }\n },\n peg$c25 = \"select\",\n peg$c26 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n peg$c27 = function(options) {\n return {\n type : 'selectFormat',\n options: options,\n location: location()\n };\n },\n peg$c28 = \"=\",\n peg$c29 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c30 = function(selector, pattern) {\n return {\n type : 'optionalFormatPattern',\n selector: selector,\n value : pattern,\n location: location()\n };\n },\n peg$c31 = \"offset:\",\n peg$c32 = { type: \"literal\", value: \"offset:\", description: \"\\\"offset:\\\"\" },\n peg$c33 = function(number) {\n return number;\n },\n peg$c34 = function(offset, options) {\n return {\n type : 'pluralFormat',\n offset : offset,\n options: options,\n location: location()\n };\n },\n peg$c35 = { type: \"other\", description: \"whitespace\" },\n peg$c36 = /^[ \\t\\n\\r]/,\n peg$c37 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n peg$c38 = { type: \"other\", description: \"optionalWhitespace\" },\n peg$c39 = /^[0-9]/,\n peg$c40 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c41 = /^[0-9a-f]/i,\n peg$c42 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n peg$c43 = \"0\",\n peg$c44 = { type: \"literal\", value: \"0\", description: \"\\\"0\\\"\" },\n peg$c45 = /^[1-9]/,\n peg$c46 = { type: \"class\", value: \"[1-9]\", description: \"[1-9]\" },\n peg$c47 = function(digits) {\n return parseInt(digits, 10);\n },\n peg$c48 = /^[^{}\\\\\\0-\\x1F \\t\\n\\r]/,\n peg$c49 = { type: \"class\", value: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\", description: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\" },\n peg$c50 = \"\\\\\\\\\",\n peg$c51 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n peg$c52 = function() { return '\\\\'; },\n peg$c53 = \"\\\\#\",\n peg$c54 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n peg$c55 = function() { return '\\\\#'; },\n peg$c56 = \"\\\\{\",\n peg$c57 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n peg$c58 = function() { return '\\u007B'; },\n peg$c59 = \"\\\\}\",\n peg$c60 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n peg$c61 = function() { return '\\u007D'; },\n peg$c62 = \"\\\\u\",\n peg$c63 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n peg$c64 = function(digits) {\n return String.fromCharCode(parseInt(digits, 16));\n },\n peg$c65 = function(chars) { return chars.join(''); },\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function error(message) {\n throw peg$buildException(\n message,\n null,\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos],\n p, ch;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n seenCR: details.seenCR\n };\n\n while (p < pos) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, found, location) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0100-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1000-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new peg$SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n var s0;\n\n s0 = peg$parsemessageFormatPattern();\n\n return s0;\n }\n\n function peg$parsemessageFormatPattern() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsemessageFormatElement();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsemessageFormatElement();\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsemessageFormatElement() {\n var s0;\n\n s0 = peg$parsemessageTextElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseargumentElement();\n }\n\n return s0;\n }\n\n function peg$parsemessageText() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsews();\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parsemessageTextElement() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsemessageText();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseargument() {\n var s0, s1, s2;\n\n s0 = peg$parsenumber();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c3.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c3.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseargumentElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargument();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s6 = peg$c7;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseelementFormat();\n if (s8 !== peg$FAILED) {\n s6 = [s6, s7, s8];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c9;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseelementFormat() {\n var s0;\n\n s0 = peg$parsesimpleFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepluralFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectOrdinalFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectFormat();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsesimpleFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c14) {\n s1 = peg$c14;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c16) {\n s1 = peg$c16;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsechars();\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepluralFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c19) {\n s1 = peg$c19;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselectOrdinalFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 13) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 13;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselectFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c25) {\n s1 = peg$c25;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseoptionalFormatPattern();\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseoptionalFormatPattern();\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselector() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s2 = peg$c28;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsechars();\n }\n\n return s0;\n }\n\n function peg$parseoptionalFormatPattern() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseselector();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c5;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessageFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c9;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseoffset() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c33(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepluralStyle() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseoffset();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseoptionalFormatPattern();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseoptionalFormatPattern();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c34(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsews() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsews();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsews();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n\n return s0;\n }\n\n function peg$parsehexDigit() {\n var s0;\n\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 48) {\n s1 = peg$c43;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n s2 = peg$currPos;\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsedigit();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsedigit();\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c47(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n if (peg$c48.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c50) {\n s1 = peg$c50;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c52();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c53) {\n s1 = peg$c53;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c55();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c56) {\n s1 = peg$c56;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c58();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c59) {\n s1 = peg$c59;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c60); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c61();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c62) {\n s1 = peg$c62;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n s4 = peg$parsehexDigit();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsehexDigit();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsehexDigit();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsehexDigit();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = input.substring(s2, peg$currPos);\n } else {\n s2 = s3;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c64(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsechars() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechar();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechar();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c65(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(\n null,\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n }\n\n return {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n };\n})();\n\n//# sourceMappingURL=parser.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat-parser/lib/parser.js\n// module id = 697\n// module chunks = 1","// GENERATED FILE\n\"use strict\";\nexports[\"default\"] = {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"}};\n\n//# sourceMappingURL=en.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-messageformat/lib/en.js\n// module id = 698\n// module chunks = 1","/* jshint node:true */\n\n'use strict';\n\nvar IntlRelativeFormat = require('./lib/main')['default'];\n\n// Add all locale data to `IntlRelativeFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\nrequire('./lib/locales');\n\n// Re-export `IntlRelativeFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlRelativeFormat;\nexports['default'] = exports;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/index.js\n// module id = 700\n// module chunks = 1","\"use strict\";\n/* jslint esnext: true */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"./core\");\nvar en_1 = require(\"./en\");\ncore_1.default.__addLocaleData(en_1.default);\ncore_1.default.defaultLocale = 'en';\nexports.default = core_1.default;\n//# sourceMappingURL=main.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/main.js\n// module id = 701\n// module chunks = 1","\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\nvar intl_messageformat_1 = require(\"intl-messageformat\");\nvar diff_1 = require(\"./diff\");\nvar es5_1 = require(\"./es5\");\nexports.default = RelativeFormat;\n// -----------------------------------------------------------------------------\nvar FIELDS = [\n 'second', 'second-short',\n 'minute', 'minute-short',\n 'hour', 'hour-short',\n 'day', 'day-short',\n 'month', 'month-short',\n 'year', 'year-short'\n];\nvar STYLES = ['best fit', 'numeric'];\n// -- RelativeFormat -----------------------------------------------------------\nfunction RelativeFormat(locales, options) {\n options = options || {};\n // Make a copy of `locales` if it's an array, so that it doesn't change\n // since it's used lazily.\n if (es5_1.isArray(locales)) {\n locales = locales.concat();\n }\n es5_1.defineProperty(this, '_locale', { value: this._resolveLocale(locales) });\n es5_1.defineProperty(this, '_options', { value: {\n style: this._resolveStyle(options.style),\n units: this._isValidUnits(options.units) && options.units\n } });\n es5_1.defineProperty(this, '_locales', { value: locales });\n es5_1.defineProperty(this, '_fields', { value: this._findFields(this._locale) });\n es5_1.defineProperty(this, '_messages', { value: es5_1.objCreate(null) });\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var relativeFormat = this;\n this.format = function format(date, options) {\n return relativeFormat._format(date, options);\n };\n}\n// Define internal private properties for dealing with locale data.\nes5_1.defineProperty(RelativeFormat, '__localeData__', { value: es5_1.objCreate(null) });\nes5_1.defineProperty(RelativeFormat, '__addLocaleData', { value: function () {\n for (var i = 0; i < arguments.length; i++) {\n var datum = arguments[i];\n if (!(datum && datum.locale)) {\n throw new Error('Locale data provided to IntlRelativeFormat is missing a ' +\n '`locale` property value');\n }\n RelativeFormat.__localeData__[datum.locale.toLowerCase()] = datum;\n // Add data to IntlMessageFormat.\n intl_messageformat_1.default.__addLocaleData(datum);\n }\n } });\n// Define public `defaultLocale` property which can be set by the developer, or\n// it will be set when the first RelativeFormat instance is created by\n// leveraging the resolved locale from `Intl`.\nes5_1.defineProperty(RelativeFormat, 'defaultLocale', {\n enumerable: true,\n writable: true,\n value: undefined\n});\n// Define public `thresholds` property which can be set by the developer, and\n// defaults to relative time thresholds from moment.js.\nes5_1.defineProperty(RelativeFormat, 'thresholds', {\n enumerable: true,\n value: {\n second: 45, 'second-short': 45,\n minute: 45, 'minute-short': 45,\n hour: 22, 'hour-short': 22,\n day: 26, 'day-short': 26,\n month: 11, 'month-short': 11 // months to year\n }\n});\nRelativeFormat.prototype.resolvedOptions = function () {\n return {\n locale: this._locale,\n style: this._options.style,\n units: this._options.units\n };\n};\nRelativeFormat.prototype._compileMessage = function (units) {\n // `this._locales` is the original set of locales the user specified to the\n // constructor, while `this._locale` is the resolved root locale.\n var locales = this._locales;\n var resolvedLocale = this._locale;\n var field = this._fields[units];\n var relativeTime = field.relativeTime;\n var future = '';\n var past = '';\n var i;\n for (i in relativeTime.future) {\n if (relativeTime.future.hasOwnProperty(i)) {\n future += ' ' + i + ' {' +\n relativeTime.future[i].replace('{0}', '#') + '}';\n }\n }\n for (i in relativeTime.past) {\n if (relativeTime.past.hasOwnProperty(i)) {\n past += ' ' + i + ' {' +\n relativeTime.past[i].replace('{0}', '#') + '}';\n }\n }\n var message = '{when, select, future {{0, plural, ' + future + '}}' +\n 'past {{0, plural, ' + past + '}}}';\n // Create the synthetic IntlMessageFormat instance using the original\n // locales value specified by the user when constructing the the parent\n // IntlRelativeFormat instance.\n return new intl_messageformat_1.default(message, locales);\n};\nRelativeFormat.prototype._getMessage = function (units) {\n var messages = this._messages;\n // Create a new synthetic message based on the locale data from CLDR.\n if (!messages[units]) {\n messages[units] = this._compileMessage(units);\n }\n return messages[units];\n};\nRelativeFormat.prototype._getRelativeUnits = function (diff, units) {\n var field = this._fields[units];\n if (field.relative) {\n return field.relative[diff];\n }\n};\nRelativeFormat.prototype._findFields = function (locale) {\n var localeData = RelativeFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find `fields` to return.\n while (data) {\n if (data.fields) {\n return data.fields;\n }\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n throw new Error('Locale data added to IntlRelativeFormat is missing `fields` for :' +\n locale);\n};\nRelativeFormat.prototype._format = function (date, options) {\n var now = options && options.now !== undefined ? options.now : es5_1.dateNow();\n if (date === undefined) {\n date = now;\n }\n // Determine if the `date` and optional `now` values are valid, and throw a\n // similar error to what `Intl.DateTimeFormat#format()` would throw.\n if (!isFinite(now)) {\n throw new RangeError('The `now` option provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.');\n }\n if (!isFinite(date)) {\n throw new RangeError('The date value provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.');\n }\n var diffReport = diff_1.default(now, date);\n var units = this._options.units || this._selectUnits(diffReport);\n var diffInUnits = diffReport[units];\n if (this._options.style !== 'numeric') {\n var relativeUnits = this._getRelativeUnits(diffInUnits, units);\n if (relativeUnits) {\n return relativeUnits;\n }\n }\n return this._getMessage(units).format({\n '0': Math.abs(diffInUnits),\n when: diffInUnits < 0 ? 'past' : 'future'\n });\n};\nRelativeFormat.prototype._isValidUnits = function (units) {\n if (!units || es5_1.arrIndexOf.call(FIELDS, units) >= 0) {\n return true;\n }\n if (typeof units === 'string') {\n var suggestion = /s$/.test(units) && units.substr(0, units.length - 1);\n if (suggestion && es5_1.arrIndexOf.call(FIELDS, suggestion) >= 0) {\n throw new Error('\"' + units + '\" is not a valid IntlRelativeFormat `units` ' +\n 'value, did you mean: ' + suggestion);\n }\n }\n throw new Error('\"' + units + '\" is not a valid IntlRelativeFormat `units` value, it ' +\n 'must be one of: \"' + FIELDS.join('\", \"') + '\"');\n};\nRelativeFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(RelativeFormat.defaultLocale);\n var localeData = RelativeFormat.__localeData__;\n var i, len, localeParts, data;\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n localeParts.pop();\n }\n }\n var defaultLocale = locales.pop();\n throw new Error('No locale data has been added to IntlRelativeFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale);\n};\nRelativeFormat.prototype._resolveStyle = function (style) {\n // Default to \"best fit\" style.\n if (!style) {\n return STYLES[0];\n }\n if (es5_1.arrIndexOf.call(STYLES, style) >= 0) {\n return style;\n }\n throw new Error('\"' + style + '\" is not a valid IntlRelativeFormat `style` value, it ' +\n 'must be one of: \"' + STYLES.join('\", \"') + '\"');\n};\nRelativeFormat.prototype._selectUnits = function (diffReport) {\n var i, l, units;\n var fields = FIELDS.filter(function (field) {\n return field.indexOf('-short') < 1;\n });\n for (i = 0, l = fields.length; i < l; i += 1) {\n units = fields[i];\n if (Math.abs(diffReport[units]) < RelativeFormat.thresholds[units]) {\n break;\n }\n }\n return units;\n};\n//# sourceMappingURL=core.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/core.js\n// module id = 702\n// module chunks = 1","\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\nvar round = Math.round;\nfunction daysToYears(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n return days * 400 / 146097;\n}\n// Thanks to date-fns\n// https://github.com/date-fns/date-fns\n// MIT © Sasha Koss\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction startOfDay(dirtyDate) {\n var date = new Date(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() -\n startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n var timestampRight = startOfDayRight.getTime() -\n startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}\nfunction default_1(from, to) {\n // Convert to ms timestamps.\n from = +from;\n to = +to;\n var millisecond = round(to - from), second = round(millisecond / 1000), minute = round(second / 60), hour = round(minute / 60);\n // We expect a more precision in rounding when dealing with\n // days as it feels wrong when something happended 13 hours ago and\n // is regarded as \"yesterday\" even if the time was this morning.\n var day = differenceInCalendarDays(to, from);\n var week = round(day / 7);\n var rawYears = daysToYears(day), month = round(rawYears * 12), year = round(rawYears);\n return {\n millisecond: millisecond,\n second: second,\n 'second-short': second,\n minute: minute,\n 'minute-short': minute,\n hour: hour,\n 'hour-short': hour,\n day: day,\n 'day-short': day,\n week: week,\n 'week-short': week,\n month: month,\n 'month-short': month,\n year: year,\n 'year-short': year\n };\n}\nexports.default = default_1;\n//# sourceMappingURL=diff.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/diff.js\n// module id = 703\n// module chunks = 1","\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\nvar hop = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\nvar realDefineProp = (function () {\n try {\n return !!Object.defineProperty({}, 'a', {});\n }\n catch (e) {\n return false;\n }\n})();\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n }\n else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n };\nexports.defineProperty = defineProperty;\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n function F() { }\n F.prototype = proto;\n obj = new F();\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n return obj;\n};\nexports.objCreate = objCreate;\nvar arrIndexOf = Array.prototype.indexOf || function (search, fromIndex) {\n /*jshint validthis:true */\n var arr = this;\n if (!arr.length) {\n return -1;\n }\n for (var i = fromIndex || 0, max = arr.length; i < max; i++) {\n if (arr[i] === search) {\n return i;\n }\n }\n return -1;\n};\nexports.arrIndexOf = arrIndexOf;\nvar isArray = Array.isArray || function (obj) {\n return toString.call(obj) === '[object Array]';\n};\nexports.isArray = isArray;\nvar dateNow = Date.now || function () {\n return new Date().getTime();\n};\nexports.dateNow = dateNow;\n//# sourceMappingURL=es5.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/es5.js\n// module id = 704\n// module chunks = 1","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* @generated */\nexports.default = { \"locale\": \"en\", \"pluralRuleFunction\": function (n, ord) {\n var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord)\n return (n10 == 1 && n100 != 11) ? 'one'\n : (n10 == 2 && n100 != 12) ? 'two'\n : (n10 == 3 && n100 != 13) ? 'few'\n : 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n }, \"fields\": { \"year\": { \"displayName\": \"year\", \"relative\": { \"0\": \"this year\", \"1\": \"next year\", \"-1\": \"last year\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} year\", \"other\": \"in {0} years\" }, \"past\": { \"one\": \"{0} year ago\", \"other\": \"{0} years ago\" } } }, \"year-short\": { \"displayName\": \"yr.\", \"relative\": { \"0\": \"this yr.\", \"1\": \"next yr.\", \"-1\": \"last yr.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} yr.\", \"other\": \"in {0} yr.\" }, \"past\": { \"one\": \"{0} yr. ago\", \"other\": \"{0} yr. ago\" } } }, \"month\": { \"displayName\": \"month\", \"relative\": { \"0\": \"this month\", \"1\": \"next month\", \"-1\": \"last month\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} month\", \"other\": \"in {0} months\" }, \"past\": { \"one\": \"{0} month ago\", \"other\": \"{0} months ago\" } } }, \"month-short\": { \"displayName\": \"mo.\", \"relative\": { \"0\": \"this mo.\", \"1\": \"next mo.\", \"-1\": \"last mo.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} mo.\", \"other\": \"in {0} mo.\" }, \"past\": { \"one\": \"{0} mo. ago\", \"other\": \"{0} mo. ago\" } } }, \"week\": { \"displayName\": \"week\", \"relativePeriod\": \"the week of {0}\", \"relative\": { \"0\": \"this week\", \"1\": \"next week\", \"-1\": \"last week\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} week\", \"other\": \"in {0} weeks\" }, \"past\": { \"one\": \"{0} week ago\", \"other\": \"{0} weeks ago\" } } }, \"week-short\": { \"displayName\": \"wk.\", \"relativePeriod\": \"the week of {0}\", \"relative\": { \"0\": \"this wk.\", \"1\": \"next wk.\", \"-1\": \"last wk.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} wk.\", \"other\": \"in {0} wk.\" }, \"past\": { \"one\": \"{0} wk. ago\", \"other\": \"{0} wk. ago\" } } }, \"day\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"day-short\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"hour\": { \"displayName\": \"hour\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hour\", \"other\": \"in {0} hours\" }, \"past\": { \"one\": \"{0} hour ago\", \"other\": \"{0} hours ago\" } } }, \"hour-short\": { \"displayName\": \"hr.\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hr.\", \"other\": \"in {0} hr.\" }, \"past\": { \"one\": \"{0} hr. ago\", \"other\": \"{0} hr. ago\" } } }, \"minute\": { \"displayName\": \"minute\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} minute\", \"other\": \"in {0} minutes\" }, \"past\": { \"one\": \"{0} minute ago\", \"other\": \"{0} minutes ago\" } } }, \"minute-short\": { \"displayName\": \"min.\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} min.\", \"other\": \"in {0} min.\" }, \"past\": { \"one\": \"{0} min. ago\", \"other\": \"{0} min. ago\" } } }, \"second\": { \"displayName\": \"second\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} second\", \"other\": \"in {0} seconds\" }, \"past\": { \"one\": \"{0} second ago\", \"other\": \"{0} seconds ago\" } } }, \"second-short\": { \"displayName\": \"sec.\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} sec.\", \"other\": \"in {0} sec.\" }, \"past\": { \"one\": \"{0} sec. ago\", \"other\": \"{0} sec. ago\" } } } } };\n//# sourceMappingURL=en.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/intl-relativeformat/lib/en.js\n// module id = 705\n// module chunks = 1","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-intl/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\n// module id = 707\n// module chunks = 1","/* eslint-disable */\n/**\n * source: https://github.com/jfriend00/docReady\n * @param {String} funcName function name\n * @param {Object} baseObj scope\n * @return {Function} document ready\n */\nexport default (function (funcName, baseObj) {\n funcName = funcName || 'docReady'\n baseObj = baseObj || global.window\n var readyList = []\n var readyFired = false\n var readyEventHandlersInstalled = false\n\n function ready() {\n if (!readyFired) {\n readyFired = true\n for (var i = 0; i < readyList.length; i++) {\n readyList[i].fn.call(window, readyList[i].ctx)\n }\n readyList = []\n }\n }\n\n function readyStateChange() {\n if ( document.readyState === 'complete' ) {\n ready()\n }\n }\n\n return function (callback, context) {\n if (readyFired) {\n setTimeout(function () {callback(context)}, 1)\n return\n } else {\n readyList.push({ fn: callback, ctx: context })\n }\n if (document.readyState === 'complete' || (!document.attachEvent && document.readyState === 'interactive')) {\n setTimeout(ready, 1)\n } else if (!readyEventHandlersInstalled) {\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', ready, false)\n window.addEventListener('load', ready, false)\n } else {\n document.attachEvent('onreadystatechange', readyStateChange)\n window.attachEvent('onload', ready)\n }\n readyEventHandlersInstalled = true\n }\n }\n})('docReady', global.window)\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/ui/docReady.js","'use strict';\n\nexports.__esModule = true;\nfunction createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch;\n var getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexports['default'] = thunk;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/redux-thunk/lib/index.js\n// module id = 709\n// module chunks = 1","import { graphql } from 'common/actions/apiAction';\n\nexport const START_GET_NETWORKS = 'START_GET_NETWORKS';\nexport const COMPLETE_GET_NETWORKS = 'COMPLETE_GET_NETWORKS';\n\nexport function startGetNetworks() {\n return {\n type: START_GET_NETWORKS,\n startTime: Date.now()\n };\n}\n\nexport function completeGetNetworks(networks) {\n return {\n type: COMPLETE_GET_NETWORKS,\n completeTime: Date.now(),\n networks\n };\n}\n\nexport function fetchNetworks() {\n return async (dispatch) => {\n dispatch(startGetNetworks());\n\n let networks = [];\n try {\n const response = await dispatch(graphql('getNetworks'));\n networks = response.data.networks;\n } catch (err) {\n console.error(err);\n }\n\n dispatch(completeGetNetworks(networks));\n\n return networks;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/actions/networkActions.js","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/flatMap.js\n// module id = 711\n// module chunks = 1","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/map.js\n// module id = 712\n// module chunks = 1","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseMap.js\n// module id = 713\n// module chunks = 1","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseForOwn.js\n// module id = 714\n// module chunks = 1","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_createBaseFor.js\n// module id = 715\n// module chunks = 1","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_createBaseEach.js\n// module id = 716\n// module chunks = 1","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/find.js\n// module id = 717\n// module chunks = 1","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_createFind.js\n// module id = 718\n// module chunks = 1","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/merge.js\n// module id = 719\n// module chunks = 1","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseMerge.js\n// module id = 720\n// module chunks = 1","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseMergeDeep.js\n// module id = 721\n// module chunks = 1","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_cloneBuffer.js\n// module id = 722\n// module chunks = 1","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_cloneTypedArray.js\n// module id = 723\n// module chunks = 1","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_cloneArrayBuffer.js\n// module id = 724\n// module chunks = 1","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_copyArray.js\n// module id = 725\n// module chunks = 1","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_initCloneObject.js\n// module id = 726\n// module chunks = 1","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseCreate.js\n// module id = 727\n// module chunks = 1","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isPlainObject.js\n// module id = 728\n// module chunks = 1","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/toPlainObject.js\n// module id = 729\n// module chunks = 1","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_copyObject.js\n// module id = 730\n// module chunks = 1","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseKeysIn.js\n// module id = 731\n// module chunks = 1","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nativeKeysIn.js\n// module id = 732\n// module chunks = 1","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_createAssigner.js\n// module id = 733\n// module chunks = 1","/* eslint-disable max-len */\nimport React, { PropTypes, PureComponent } from 'react';\nimport FeedsSelectorAuthPill from './FeedsSelectorAuthPill';\n\nconst isStreamStatus = (status, type) => (\n typeof status === 'string' &&\n status.trim() !== '' &&\n typeof type === 'string' &&\n type.trim() !== '' &&\n status.trim().toLowerCase() === type.trim().toLowerCase()\n);\n\nconst getDisplayTimeMetaData = ({ status, duration, time }) => {\n let displayTime = null;\n let displayClass = '';\n const STATUS_TYPES = {\n LIVE: 'live',\n UPCOMING: 'upcoming',\n REPLAY: 'replay'\n };\n\n\n if (isStreamStatus(status, STATUS_TYPES.LIVE)) {\n displayTime = STATUS_TYPES.LIVE.toUpperCase();\n displayClass = STATUS_TYPES.LIVE;\n } else if (isStreamStatus(status, STATUS_TYPES.UPCOMING)) {\n displayTime = `${time}`;\n } else if (isStreamStatus(status, STATUS_TYPES.REPLAY)) {\n displayTime = duration;\n }\n\n return {\n displayTime,\n displayClass\n };\n};\n\nconst findMatchingStreamById = (streamId, streamsList = []) => {\n let matchingStream;\n\n if (Array.isArray(streamsList) && streamsList.length > 0 && streamId) {\n streamsList.some(elem => {\n if (Array.isArray(elem.contents) && elem.contents.length > 0) {\n matchingStream = elem.contents.filter(stream =>\n typeof stream.id === 'string' && stream.id === streamId\n )[0];\n }\n\n if (matchingStream) {\n return true;\n }\n\n return false;\n });\n }\n\n return matchingStream;\n};\n\nclass FeedsSelector extends PureComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.closeModal = this.closeModal.bind(this);\n }\n\n onClick(event) {\n console.log('Feeds Selector onClick triggered:', this.props, streamId); // eslint-disable-line\n const streamId = event.currentTarget.getAttribute('data-id');\n const { feeds } = this.props;\n const selectedStream = findMatchingStreamById(streamId, feeds);\n if (selectedStream && !selectedStream.selected && !selectedStream.blackoutText) {\n this.props.onClick(selectedStream.streams[0]);\n this.props.onClose();\n } else {\n console.warn('Will not play stream, current stream matches selected stream');\n }\n }\n\n closeModal() {\n this.props.onClose();\n }\n\n render() {\n const { title, feeds, userAuth } = this.props;\n\n const feedItems = feeds.length > 0 && feeds.map(({ name, contents }) => {\n let feedEntries = null;\n\n if (Array.isArray(contents) && contents.length > 0) {\n feedEntries = contents.map(({\n id,\n imageHref,\n name: streamName,\n subtitle,\n status,\n duration,\n time,\n playbackErrorMessage,\n selected,\n authTypes = [],\n packages = []\n }) => {\n const timeMeta = getDisplayTimeMetaData({ status, duration, time });\n const selectedClass = selected ? 'selected' : '';\n\n return (\n <div className={`StreamingCard ${selectedClass}`} data-id={id} onClick={this.onClick}>\n <div className=\"StreamingCard__MediaWrapper\">\n { imageHref &&\n <img\n src={imageHref}\n alt={streamName}\n />\n }\n <div className={`StreamingCard__Media__Play ${timeMeta.displayClass}`} />\n <div className={`StreamingCard__Media__Pill ${timeMeta.displayClass}`}>\n {timeMeta.displayTime}\n </div>\n {selected && (\n <div className=\"StreamingCard__NowPlaying\">\n Now Playing\n </div>\n )}\n </div>\n\n <div className=\"StreamingCard__ContentWrapper\">\n <div className=\"StreamingCard__Content\">\n <h4>{streamName}</h4>\n <ul className=\"StreamingCard__Meta\">\n <li>{subtitle}</li>\n </ul>\n {playbackErrorMessage && (\n <div className=\"StreamingCard__Error\">\n {playbackErrorMessage}\n </div>\n )}\n </div>\n {\n !playbackErrorMessage && (\n <FeedsSelectorAuthPill\n streamContent={{ authTypes, packages, id, streamName }}\n userAuth={userAuth}\n />\n )\n }\n </div>\n\n </div>\n );\n });\n }\n\n return (\n <div className=\"StreamPicker__Row\">\n <div className=\"StreamPicker__Broadcast\">{name}</div>\n {feedEntries}\n </div>\n );\n });\n\n return (\n <div className=\"video-overlays-container\">\n <div className=\"overlay streampicker\">\n <div id=\"stream-view\" className=\"video-player__stream js-video-player__stream\">\n <div className=\"StreamPicker__Container\">\n <div className=\"StreamPicker__Header\">\n <h1>{title}</h1>\n <div className=\"StreamPicker__Close\" onClick={this.closeModal} />\n </div>\n <div className=\"StreamPicker__Body\">\n {feedItems}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nFeedsSelector.propTypes = {\n title: PropTypes.string,\n feeds: PropTypes.array,\n userAuth: PropTypes.array,\n onClick: PropTypes.func,\n onClose: PropTypes.func\n};\n\nFeedsSelector.defaultProps = {\n feeds: [],\n userAuth: []\n};\n\nexport default FeedsSelector;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/FeedsSelector.js","import React, { PropTypes } from 'react';\nimport _intersection from 'lodash/intersection';\nimport { AuthTypes, Entitlements } from 'enums';\nimport { streamHasAuthType } from 'lib/auth';\n\n// const isStreamEspnPlusBase = (packages = []) => (\n// packages.find(entitlement => entitlement === Entitlements.ESPN_PLUS)\n// );\n\nconst isStreamEspnPlusMlb = (packages = []) => (\n packages.find(entitlement => entitlement === Entitlements.ESPN_PLUS_MLB)\n);\n\nconst isStreamEspnPlusPPV = (packages = []) => (\n packages.find(\n entitlement => entitlement.includes(Entitlements.ESPN_PLUS_UFC_PPV)\n )\n);\n\nconst isUserEntitled = (authTypes = [], userAuth = []) => {\n let isEntitled = [];\n if (Array.isArray(authTypes) && Array.isArray(userAuth)) {\n isEntitled = _intersection(authTypes, userAuth);\n }\n\n return isEntitled.length > 0;\n};\n\nexport const getAuthLabel = ({ userAuth = [], streamContent = {} }) => {\n if (!streamContent || !streamContent.authTypes) {\n return null;\n }\n\n const { authTypes = [], packages = [] } = streamContent;\n let labelClass = 'button sm';\n let label = null;\n let labelText = '';\n let isEntitled = false;\n\n // E+ Event\n if (Array.isArray(packages) && packages.length > 0 && streamHasAuthType(streamContent, AuthTypes.BAM)) {\n isEntitled = isUserEntitled(packages, userAuth);\n if (isStreamEspnPlusPPV(packages)) { // Verify if PPV Event\n labelText = isEntitled ? 'PURCHASED' : 'BUY PPV';\n } else if (isStreamEspnPlusMlb(packages)) { // Verify if MLB Event\n labelText = isEntitled ? 'SUBSCRIBED TO ESPN+ MLB' : 'Get MLB.TV';\n } else {\n labelText = isEntitled ? 'SUBSCRIBED TO ESPN+' : 'ESPN+';\n labelClass = 'button sm espn-plus';\n }\n\n label = isEntitled ? (\n <div className=\"auth-label auth-label--dark\">{labelText}</div>\n ) : (<button className={`${labelClass}`}>{labelText}</button>);\n } else if (streamHasAuthType(streamContent, AuthTypes.MVPD) || streamHasAuthType(streamContent, AuthTypes.ISP)) {\n isEntitled = isUserEntitled(authTypes, userAuth);\n labelText = isEntitled ? 'LOGGED INTO TV PROVIDER' : 'CHOOSE TV PROVIDER';\n label = isEntitled ? (\n <div className=\"auth-label auth-label--dark\">{labelText}</div>\n ) : (\n <button className={`${labelClass}`}>{labelText}</button>\n );\n }\n\n return label;\n};\n\nconst FeedsSelectorAuthPill = ({ userAuth, streamContent }) => (\n <div className=\"StreamingCard__Labels\">\n {getAuthLabel({ userAuth, streamContent })}\n </div>\n);\n\nFeedsSelectorAuthPill.propTypes = {\n userAuth: PropTypes.array,\n streamContent: PropTypes.object\n};\n\nFeedsSelectorAuthPill.defaultProps = {\n userAuth: []\n};\n\nexport default FeedsSelectorAuthPill;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/player/FeedsSelectorAuthPill.js","import { createSelector } from 'reselect';\nimport pageSelector from 'common/selectors/pageSelector';\nimport heroSelector from 'common/selectors/heroSelector';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport { isEmpty } from 'lib/util';\n\n/**\n * This selector determines which content should be used for the intial embed.\n * If there a piece of content is selected, use that, otherwise use the hero\n */\nexport default createSelector(\n pageSelector,\n heroSelector,\n selectedContentSelector,\n ({ isFinal }, hero, selectedContent) => {\n // NOTE: When the selectedContent/heroContent type is `vod`, we want to allow playback.\n // This will allow Domestic & International VODs to play\n if (!isEmpty(selectedContent) &&\n typeof selectedContent.type === 'string' &&\n selectedContent.type.trim().toLowerCase() === 'vod') {\n return selectedContent;\n }\n\n if (!isEmpty(hero) && typeof hero.type === 'string' && hero.type.trim().toLowerCase() === 'vod') {\n return hero;\n }\n\n if (!isFinal) {\n return null;\n }\n\n return !isEmpty(selectedContent) ? selectedContent : hero;\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/initialEmbedSelector.js","import { createSelector } from 'reselect';\nimport { AuthTypes } from 'enums';\nimport { bypassTokenSelector } from 'common/selectors/appSelector';\nimport pageSelector from 'common/selectors/pageSelector';\nimport selectedContentSelector from 'common/selectors/selectedContentSelector';\nimport selectedStreamSelector from 'common/selectors/selectedStreamSelector';\nimport playingStreamSelector from 'common/selectors/playingStreamSelector';\nimport playerSelector from 'common/selectors/playerSelector';\nimport { oneIdTokenSelector } from 'common/selectors/oneIdSelector';\nimport { userAuthSelector, ipInfoSelector, adobePassInfoSelector } from 'common/selectors/authenticationSelectors';\nimport { authStateKnown, streamHasAuthType, canPlayContent, shallowCheckAuthentication } from 'lib/auth';\nimport { isEmpty } from 'lib/util';\n\n/**\n * This selector only returns content if all the conditions needed for playback are met\n */\nexport default createSelector(\n pageSelector,\n playerSelector,\n selectedContentSelector,\n playingStreamSelector,\n selectedStreamSelector,\n userAuthSelector,\n ipInfoSelector,\n adobePassInfoSelector,\n bypassTokenSelector,\n oneIdTokenSelector,\n (\n page,\n player,\n selectedContent,\n playingStream,\n selectedStream,\n userAuth,\n ipInfo,\n adobePassInfo,\n bypassToken,\n oneIdToken\n ) => {\n const isVod = selectedContent && selectedContent.type === 'vod';\n\n if (\n page.scored &&\n player.ready === true &&\n (authStateKnown(userAuth) || isVod || !userAuth.length) &&\n !isEmpty(selectedStream) &&\n selectedContent.reEmbed !== false &&\n player.autoEmbedTimerComplete === true &&\n (\n // This must be for when the linear content has changed the program\n (selectedStream.content && selectedContent.id !== selectedStream.content.id) ||\n selectedStream.id !== playingStream.id\n )\n ) {\n if (\n canPlayContent(selectedContent, userAuth, false) &&\n shallowCheckAuthentication(selectedStream, userAuth, false)\n ) {\n if (!selectedStream.authTypes || selectedStream.authTypes.length === 0 ||\n selectedStream.source.id === 'SHORTSTOPLIVE' || bypassToken) {\n return { ...selectedStream };\n } else if (streamHasAuthType(selectedStream, AuthTypes.ISP) && userAuth.indexOf(AuthTypes.ISP) !== -1) {\n return { ...selectedStream, ipInfo };\n } else if (streamHasAuthType(selectedStream, AuthTypes.MVPD) && adobePassInfo) {\n return { ...selectedStream, adobePassInfo };\n } else if (streamHasAuthType(selectedStream, AuthTypes.OPEN)) {\n return { ...selectedStream };\n } else if (streamHasAuthType(selectedStream, AuthTypes.BAM) && oneIdToken) {\n return { ...selectedStream };\n }\n }\n }\n return {};\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/selectors/onDeckContentSelector.js","function NOOP() {}\n\nlet nativeBridge;\n\nfunction constructMessage(commandName, params, callback) {\n //\n const message = {\n commandName,\n params,\n callBack: callback\n };\n return message;\n}\n\nfunction handleCallback(callback, data, err) {\n // Incoming callback can be either a function or a string - handle either\n if (typeof callback === 'function') {\n callback(data, err);\n } else if (typeof callback === 'string') {\n window[callback](data, err);\n }\n}\n\nexport class NativeBridge {\n constructor({ globalNS } = { globalNS: 'espn.nativeBridge' }) {\n this.isProcessing = false;\n this.processId = null;\n this.messageQueue = [];\n this.globalNS = globalNS;\n this.ns = globalNS.split('.').reduce((acc, ns) => {\n acc[ns] = acc[ns] || {};\n return acc[ns];\n }, window);\n const qs = {};\n location.search.replace(/([^?=&]+)(=([^&#]*))?/g, ($0, $1, $2, $3) => { qs[$1] = $3; });\n this.isIOS = qs.platform === 'ios';\n this.isAndroid = qs.platform === 'android';\n this.isWindows = qs.platform === 'windows';\n // this.sendMessageAsPromise = Promise.promisify(this.sendMessage);\n // this.getDataAsPromise = Promise.promisify(this.getData);\n }\n\n _processQueue() {\n if (this.isProcessing) {\n return;\n }\n this.isProcessing = true;\n setTimeout(this._processMessages.bind(this), 0);\n }\n\n _processMessages() {\n const message = this.messageQueue.shift();\n if (message) {\n const { callBack } = message;\n\n try {\n this._createCallback(callBack);\n this._transmitMessage({ ...message, callBack: `${this.globalNS}.callback` });\n } catch (err) {\n console.error(`NativeBridge: error - _processMessages ${err.message}`);\n this._next(callBack, null, err);\n }\n\n if (!this.messageQueue.length) {\n this.isProcessing = false;\n }\n\n // WINDOWS ONLY\n // Windows Devices do NOT trigger a callback (custom or espn.nativeBridge.callback)\n // If still processing (messageQueue is NOT empty), we will set a short timer to manually trigger\n // the callback and call _processMessges method until processing is complete.\n if (this.isProcessing && this.isWindows) {\n this.processId = setTimeout(this._processMessages.bind(this), 200);\n }\n }\n }\n\n _createCallback(callback) {\n // The purpose is to create \"chaining\" of the native messages since they unfortunately\n // have to share a singular global callback. But this enables us to pass callbacks as functions vs strings.\n this.ns.callback = (data) => {\n this._next(callback, data);\n };\n }\n\n _next(callback, data, err) {\n // if callback is triggered, clear timeout to remove duplicate call\n if (this.processId) {\n clearTimeout(this.processId);\n this.processId = null;\n }\n if (callback) {\n if (err) {\n handleCallback(callback, null, err);\n } else {\n try {\n handleCallback(callback, data);\n } catch (err2) {\n handleCallback(callback, null, err2);\n }\n }\n }\n if (this.messageQueue.length) {\n this._processMessages();\n } else {\n this.ns.callback = NOOP; // reset\n }\n }\n\n _transmitMessage(message) {\n if (typeof message === 'undefined') {\n return;\n }\n\n // console.log('NativeBridge: _transmitMessage');\n\n if (typeof window.webkit !== 'undefined') { // iOS, looking for WKWebview injected handler\n window.webkit.messageHandlers.espnWebview.postMessage(message);\n return;\n }\n\n const data = JSON.stringify(message);\n if (this.isAndroid && window.linklanguage) {\n // Android\n window.linklanguage.sendJSONMessage(data);\n } else if (this.isWindows) {\n // Windows\n window.external.notify(data);\n } else if (this.isIOS) {\n // fallback for backwards compatibility\n window.location = data;\n } else {\n console.log(\"NativeBridge: message sent with\", message);\n }\n }\n\n _sendMessage(message) {\n this.messageQueue.push(message);\n this._processQueue();\n }\n\n getData(dataName, callback) {\n // Provided as a fallback for backwards compatibility\n const { native } = window.espn;\n if (typeof native !== 'undefined') {\n if (native[dataName] === 'true' || native[dataName] === 'false') {\n // convert boolean string to boolean\n native[dataName] = (native[dataName] === 'true');\n }\n callback(native[dataName]);\n return;\n }\n\n this.sendMessage(dataName, {}, callback);\n }\n\n sendMessage(message, params, callback) {\n this._sendMessage(constructMessage(message, params, callback));\n }\n\n loadMinibrowser(url) {\n if (this.isAndroid) {\n try {\n window.linklanguage.loadMinibrowserWithURL(url);\n } catch (err) {\n console.warn('nativeBridge send failed', url);\n }\n } else {\n this.sendMessage('loadMinibrowserWithURL', { url, link: url });\n }\n }\n}\n\nexport default function createNativeBridge(config) {\n if (!nativeBridge && typeof window !== 'undefined') {\n nativeBridge = new NativeBridge(config);\n }\n return nativeBridge;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/native-bridge/index.js","import React, { PropTypes, Component } from 'react';\nimport playable from '@alias/Playable';\nimport { dateFormat } from 'lib/format';\nimport { SortOrder } from 'enums';\n\nconst headerMappings = [\n {\n keyType: 'Date',\n value: 'startTime'\n },\n {\n keyType: 'Title',\n value: 'name'\n },\n {\n keyType: 'Sport',\n value: 'sport'\n },\n {\n keyType: 'League',\n value: 'league'\n },\n {\n keyType: 'Network',\n value: 'network'\n },\n {\n keyType: 'Link',\n value: 'link'\n }\n];\n\nfunction sortByDateDescending(c1, c2) {\n return new Date(c2.utc) - new Date(c1.utc);\n}\n\nfunction getSearchResultList(content = {}) {\n const stream = content.streams.find((el) => (el.links && el.links.web));\n const displayTime = content.utc && dateFormat.dateFormat(content.utc, 'dateTime7');\n return {\n displayTime,\n name: content.name,\n sport: content.programmingData.sport,\n league: content.programmingData.league,\n network: stream.source.name,\n link: stream.links.web\n };\n}\n\nfunction copyToClipboard(copiedText) {\n const clipboardElement = document.createElement('input');\n document.body.appendChild(clipboardElement);\n clipboardElement.setAttribute('value', copiedText);\n clipboardElement.select();\n document.execCommand('copy');\n document.body.removeChild(clipboardElement);\n}\n\nclass SearchResultAsList extends Component {\n constructor(props) {\n super(props);\n this.state = {\n sortBy: 'Date',\n sortOrder: SortOrder.DESC\n };\n }\n\n clickHeader(index) {\n let { sortBy, sortOrder } = this.state;\n const { keyType } = headerMappings[index];\n if (keyType === this.state.sortBy) {\n sortOrder = (this.state.sortOrder === SortOrder.DESC) ? SortOrder.ASC : SortOrder.DESC;\n } else {\n sortBy = keyType;\n sortOrder = SortOrder.DESC;\n }\n this.setState({\n sortBy,\n sortOrder\n });\n this.props.sortContents(headerMappings[index].value, sortOrder);\n }\n\n render() {\n const headerRows = headerMappings.map((headerMapping, index) => (\n <th onClick={() => this.clickHeader(index)}>{headerMapping.keyType}</th>\n ));\n const header = (<tr>{headerRows}</tr>);\n const rows = this.props.contents.sort(sortByDateDescending).map((content) => {\n const searchResultListing = getSearchResultList(content);\n return (\n <tr key={`tr_${content.id}`}>\n <td className=\"schedule__time\">{searchResultListing.displayTime}</td>\n <td className=\"schedule__time\">{searchResultListing.name}</td>\n <td className=\"schedule__time\">{searchResultListing.sport}</td>\n <td className=\"schedule__time\">{searchResultListing.league}</td>\n <td className=\"schedule__network\">{searchResultListing.network}</td>\n <td className=\"schedule__competitors\">\n <button onClick={() => { copyToClipboard(searchResultListing.link); }}>Copy Event Link</button>\n </td>\n </tr>\n );\n });\n return (\n <table>\n <thead>\n {header}\n </thead>\n <tbody>\n {rows}\n </tbody>\n </table>\n );\n }\n}\n\nSearchResultAsList.propTypes = {\n contents: PropTypes.array,\n sortContents: PropTypes.func\n};\n\nexport default playable(SearchResultAsList);\nexport { SearchResultAsList as BaseSearchResultAsList };\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/search/SearchResultAsList.js","import React, { PropTypes } from 'react';\nimport FileSaver from 'file-saver';\nimport { dateFormat } from 'lib/format';\n\nfunction prepareCsv(buckets) {\n let csvContent = 'Start Time,Event Name,Sport,League,Network,Link\\r\\n';\n buckets.forEach((bucket) => {\n const contents = bucket.contents;\n contents.forEach((content) => {\n if (!content.programmingData) {\n content.programmingData = {};\n }\n const { programmingData: { sport = '', league = '' }, name = '', utc = '' } = content;\n const { source: { name: sourceName = '' }, links: { web: webLink = '' } } = content.streams[0];\n const dateAndTime = dateFormat.dateFormat(utc, 'dateTime7');\n const row = `\"${dateAndTime}\",\"${name}\",${sport},${league},${sourceName},${webLink}`;\n csvContent = `${csvContent}${row}\\r\\n`;\n });\n });\n return csvContent;\n}\n\nconst DownloadLink = ({ text, buckets, fileName, mimeType = 'text/csv' }) => {\n const dataString = prepareCsv(buckets);\n function clickHandler(ev) {\n // File is not available on the server, so must be built in the browser\n const file = new File([dataString], fileName, { type: mimeType });\n ev.preventDefault();\n FileSaver.saveAs(file);\n }\n return (\n <a onClick={clickHandler}>\n {text}\n </a>\n );\n};\n\nDownloadLink.propTypes = {\n text: PropTypes.string,\n buckets: PropTypes.string,\n fileName: PropTypes.string,\n mimeType: PropTypes.string\n};\n\nexport default DownloadLink;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/DownloadLink.js","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n define(\"FileSaver.js\", function() {\n return saveAs;\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/file-saver/FileSaver.js\n// module id = 741\n// module chunks = 1","module.exports = function() {\r\n\tthrow new Error(\"define cannot be used indirect\");\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-define.js\n// module id = 742\n// module chunks = 1","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-options.js\n// module id = 743\n// module chunks = 1","/* eslint-disable */\n\nimport React, { PropTypes, Component } from 'react';\nimport Helmet from 'react-helmet';\nimport { dateFormat } from 'lib/format';\nimport moment from 'moment';\nimport isPacRimOrCarib from './isPacRimOrCarib';\n\nfunction buildInitialState({ isResponsive }) {\n let iDayRange = 7;\n let iItemWidth = 36;\n const maxWidthMedium = 768;\n\n /*\n Below condition checks for screen size and initialize iDayRange and iItemWidth\n based on that. For mobile < 768 iItemWidth is fixed to 40px\n */\n if (isResponsive && process.browser && screen && 'width' in screen && screen.width < maxWidthMedium) {\n iDayRange = 5;\n iItemWidth = 37;\n }\n\n const iStartPos = 0 - (iDayRange * iItemWidth);\n return {\n activeDate: null,\n displayDate: null,\n oneDay: 86400000, // 1 day in milliseconds\n dayRange: iDayRange,\n itemWidth: iItemWidth,\n touchObject: {\n startX: null,\n startY: null,\n curX: null,\n curY: null,\n swipeLength: null\n },\n didSwipe: false,\n dragging: false,\n animate: false,\n currentPos: iStartPos\n };\n}\n\nclass DateSlider extends Component {\n constructor(props) {\n super(props);\n this.dateFormat = dateFormat.dateFormat;\n this.dateToObject = dateFormat.dateToObject;\n this.dateToKey = dateFormat.dateToKey;\n this.state = buildInitialState(props);\n this.animateToDate = this.animateToDate.bind(this);\n this.previous = this.previous.bind(this);\n this.next = this.next.bind(this);\n this.reset = this.reset.bind(this);\n this.swipeStart = this.swipeStart.bind(this);\n this.swipeMove = this.swipeMove.bind(this);\n this.swipeEnd = this.swipeEnd.bind(this);\n this.swipeDirection = this.swipeDirection.bind(this);\n this._throttle = this._throttle.bind(this);\n this.selectDate = this.selectDate.bind(this);\n this.dateSelected = this.dateSelected.bind(this);\n }\n\n /**\n * Intial load so add the date to the state for use and manipulation\n * @returns {undefined} undefined\n **/\n componentWillMount() {\n // Ignore \"dates\" param if in Replay tab (default to current date)\n const oDate = this.props.isReplaySlider ? new Date() :\n this.dateToObject(this.props.date) || new Date();\n const iDate = oDate.setHours(0, 0, 0, 0);\n this.setState({\n activeDate: iDate,\n displayDate: iDate\n });\n }\n\n /**\n * Reset state if league has changed\n *\n * @param {Object} nextProps Props\n * @returns {undefined} undefined\n **/\n componentWillReceiveProps(nextProps) {\n const oDate = this.dateToObject(nextProps.date) || new Date();\n const iDate = oDate.setHours(0, 0, 0, 0);\n\n if (nextProps.league !== this.props.league) {\n this.animateToDate(iDate);\n this.setState({\n activeDate: iDate,\n didSwipe: false\n });\n }\n }\n\n /**\n * Subtracts 7 days from the current date and then forces a redraw\n * @returns {undefined} undefined\n **/\n previous() {\n const { displayDate, dayRange } = this.state;\n const iNewDate = moment(displayDate).subtract(dayRange, 'days').valueOf();\n this.animateToDate(iNewDate);\n }\n\n /**\n * Adds 7 days to the current date and then forces a redraw\n * @returns {undefined} undefined\n **/\n next() {\n const { displayDate, dayRange } = this.state;\n const iNewDate = moment(displayDate).add(dayRange, 'days').valueOf();\n this.animateToDate(iNewDate);\n }\n\n /**\n * Redraws the page to last know good state\n * @returns {undefined} undefined\n **/\n reset() {\n this.setState({});\n }\n\n /**\n * Capture the start position of the mouse/touch so that we can\n * determine the direction and size of the interaction later.\n *\n * @param {Object} e event object\n * @returns {undefined} undefined\n **/\n swipeStart(e) {\n const posX = (e.touches !== undefined) ? e.touches[0].pageX : e.clientX;\n const posY = (e.touches !== undefined) ? e.touches[0].pageY : e.clientY;\n\n this.setState({\n dragging: true,\n touchObject: {\n startX: posX,\n startY: posY,\n curX: posX,\n curY: posY\n }\n });\n\n // e.preventDefault()\n }\n\n /**\n * Captures the current mouse/finger movement and stores the value to\n * allow the position of the slider to be updated.\n *\n * @param {Object} e event object\n * @returns {undefined} undefined\n **/\n swipeMove(e) {\n if (!this.state.dragging) {\n return;\n }\n\n const touchObject = this.state.touchObject;\n\n const iCurrX = (e.touches) ? e.touches[0].pageX : e.clientX;\n touchObject.curY = (e.touches) ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = touchObject.curX - touchObject.startX;\n const iMoved = iCurrX - this.state.touchObject.curX;\n touchObject.curX = iCurrX;\n this.setState({\n touchObject,\n currentPos: this.state.currentPos + iMoved\n });\n if (e && e.preventDefault) {\n e.preventDefault();\n }\n }\n\n /**\n * Capture end event and then calculate the action desired by the user\n *\n * @param {Object} e event object\n * @returns {undefined} undefined\n **/\n swipeEnd() {\n // e.preventDefault()\n\n if (!this.state.dragging) {\n return;\n }\n\n const touchObject = this.state.touchObject;\n // const minSwipe = this.state.listWidth/this.props.touchThreshold\n const swipeDirection = this.swipeDirection(touchObject);\n\n // reset the state of touch related state constiables.\n this.setState({\n dragging: false,\n touchObject: {},\n swipeLength: 0\n });\n\n if (swipeDirection === 'left' && Math.abs(touchObject.swipeLength) > 5) {\n this.setState({ didSwipe: true });\n this.previous();\n } else if (swipeDirection === 'right' && Math.abs(touchObject.swipeLength) > 5) {\n this.setState({ didSwipe: true });\n this.next();\n } else if (Math.abs(touchObject.swipeLength) > 1) {\n // micro swipe, not really a click.\n this.reset();\n } else {\n this.reset();\n }\n }\n\n /**\n * Determines whether the swipe was within a certain angle range and\n * therefore a horizontal swipe rather than a verticle one.\n *\n * @param {Object} touchObject touchObject\n * @returns {String} left/right/vertical\n **/\n swipeDirection(touchObject) {\n const xDist = touchObject.startX - touchObject.curX;\n const yDist = touchObject.startY - touchObject.curY;\n const r = Math.atan2(yDist, xDist);\n let swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n if ((swipeAngle <= 45) && (swipeAngle >= 0) || (swipeAngle <= 360) && (swipeAngle >= 315)) {\n return (this.props.rtl === false ? 'left' : 'right');\n }\n if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n return (this.props.rtl === false ? 'right' : 'left');\n }\n\n return 'vertical';\n }\n\n /**\n * for performance reasons provide a facility to throttle the updates\n * triggered by mousemove\n *\n * @param {Number} delay time to delay\n * @param {Function} callback function reference which needs to be throttled\n * @returns {Function} Anonymous Function\n **/\n _throttle(delay, callback) {\n let previousCall = new Date().getTime();\n return function() {\n const time = new Date().getTime();\n if ((time - previousCall) >= delay) {\n previousCall = time;\n callback.apply(null, arguments);\n }\n };\n }\n\n /**\n * Captures the date of the node clicked and sets the state to that. If\n * a swipe was tracked the click is ignored and the swipe tracker reset\n *\n * @param {Number} iDate date\n * @param {Number} iItemPos position index\n * @param {Object} e Event\n * @returns {undefined} undefined\n **/\n selectDate(iDate, iItemPos, e) {\n if (e && e.stopPropagation) {\n e.stopPropagation();\n }\n if (e && e.preventDefault) {\n e.preventDefault();\n }\n iDate = (typeof iDate === 'object') ? iDate.setHours(0, 0, 0, 0) : iDate;\n if (typeof this.state.touchObject.swipeLength !== 'number') {\n this.setState({\n activeDate: iDate\n });\n this.animateToDate(iDate);\n this.dateSelected(iDate);\n }\n }\n\n /**\n * Calculates the position of the original display date within the\n * new range of dates so it can create the animation effect\n *\n * @param {Number} iNewDate date\n * @returns {undefined} undefined\n **/\n animateToDate(iNewDate) {\n // get the visible range of dates.\n // Ignore \"dates\" param if in Replay tab (default to current date)\n const oDate = this.props.isReplaySlider ? new Date() :\n this.dateToObject(this.props.date) || new Date();\n const iDate = oDate.setHours(0, 0, 0, 0);\n const lastDateInRange = this.props.isReplaySlider ? moment(iDate).add(this.props.maxDaysInFuture, 'days') :\n moment(iDate).add(this.props.maxDaysInFuture - this.state.dayRange, 'days');\n const firstDateInrange = moment(iDate).subtract(this.props.maxDaysInPast, 'days');\n const canSlideForward = moment(iNewDate).isBefore(lastDateInRange, 'day');\n const canSlideBack = moment(iNewDate).isAfter(firstDateInrange, 'day');\n const iOneDay = this.state.oneDay;\n const iDayRange = this.state.dayRange;\n if(!canSlideBack) {\n iNewDate = firstDateInrange.valueOf();\n }\n if(!canSlideForward) {\n iNewDate = lastDateInRange.valueOf();\n }\n const iDisplayDate = this.state.displayDate;\n // NOTE: All date calculations such as adding/subtracting will be using moment to ensure daylight savings compatibility\n const iMinDate = moment(iNewDate).subtract(iDayRange, 'days').valueOf();\n const iMaxDate = moment(iMinDate).add((iDayRange * 3), 'days').valueOf();\n const iItemWidth = this.state.itemWidth;\n let iMoveTo = 0;\n\n if (iDisplayDate >= iMinDate && iDisplayDate <= iMaxDate) {\n // is the original date within the visible range?\n const iDiff = iDisplayDate - iMinDate;\n iMoveTo = 0 - (iDiff / iOneDay) * iItemWidth;\n } else if (iDisplayDate > iMaxDate) {\n // is it bigger then set moveto to last\n iMoveTo = 0 - (iItemWidth * (iDayRange * 3));\n } else if (iDisplayDate < iMinDate) {\n // is it smaller then set moveto to first\n iMoveTo = 0;\n }\n\n this.setState({\n displayDate: iNewDate,\n currentPos: iMoveTo,\n animate: false\n });\n }\n\n /**\n * Call once we have selected a date\n *\n * @param {Number} iDate date\n * @returns {undefined} undefined\n **/\n dateSelected(iDate) {\n const selectedDate = this.dateFormat(iDate, 'date12');\n this.props.onDateSelected(this.dateToObject(iDate), selectedDate);\n }\n\n /**\n * After the component has drawn reset the position of the slider\n * this will cause the css animation to trigger. The timeout is to\n * force react to re-render else it trys to group the changes into 1\n * update and you won't see the animation\n *\n * @returns {undefined} undefined\n **/\n componentDidUpdate() {\n const iDayRange = this.state.dayRange;\n const iItemWidth = this.state.itemWidth;\n const iNewPos = 0 - (iDayRange * iItemWidth);\n\n if (iNewPos !== this.state.currentPos) {\n setTimeout(() => {\n this.setState({\n currentPos: iNewPos,\n animate: true\n });\n }, 1);\n }\n }\n\n getIntlDate(date) {\n try {\n const { formatMessage, messages, isIntl } = this.props;\n const watchRegion = this.props.watchRegion;\n\n // PacRim/Carib (au) needs format tweak\n if (!isIntl && !isPacRimOrCarib(watchRegion)) {\n return date;\n }\n const arr = date.split(' ');\n const month = formatMessage(messages[`schedule.calendar.month.${arr[0]}`]);\n let day = arr[1];\n const year = arr[2];\n\n // for PacRim/Carib (au), it needs to remove commas\n if (isPacRimOrCarib(watchRegion)) {\n day = arr[1].replace(',', '');\n return `${day} ${month} ${year}`;\n }\n\n const isNLEdition = typeof watchRegion === 'string' && watchRegion.toLowerCase() === \"netherlands\";\n\n // All INTL removes date suffix\n day = arr[1].replace(/st,|nd,|rd,|th,/i, \"\");\n if (isNLEdition) {\n const nlFormatedDate = `${day} ${month} ${year}`;\n return nlFormatedDate.toLocaleLowerCase();\n }\n\n // All other INTL edition, adds 'de'\n return `${day} de ${month}, ${year}`;\n } catch(e) {\n console.error(e.messages);\n return date;\n }\n }\n\n getStartDate(isReplaySlider, iDisplayDate, iDayRange) {\n let startDate = iDisplayDate;\n if (isReplaySlider && iDayRange === 5) {\n /**\n * currently on mobile, iDayRange is set to 5, but the day range on the scroll is showing 9 days\n * because of dynamic day width calculation, we need to substract 8 from 9 to get the\n * correct startDate for the header\n */\n startDate = moment(iDisplayDate).subtract(8, 'days').valueOf()\n } else if (isReplaySlider) {\n startDate = moment(iDisplayDate).subtract((iDayRange - 1), 'days').valueOf();\n }\n return startDate;\n }\n\n getEndDate(isReplaySlider, iDisplayDate, iDayRange, iOneDay) {\n let endDate = iDisplayDate;\n if (!isReplaySlider) {\n endDate = (iDayRange === 5) ? iDisplayDate + (8 * iOneDay) : iDisplayDate + ((iDayRange - 1) * iOneDay);\n }\n return endDate;\n }\n\n render() {\n const { formatMessage, messages, isResponsive } = this.props;\n const oActiveDates = this.props.activeDates || {};\n const iDisplayDate = this.state.displayDate;\n const iActiveDate = this.state.activeDate;\n const iOneDay = this.state.oneDay;\n const iDayRange = this.state.dayRange;\n const iItemWidth = this.state.itemWidth;\n const iStartDate = this.props.isReplaySlider ? moment(iDisplayDate).subtract(13, 'days') : moment(iDisplayDate).subtract(iDayRange, 'days');\n const aOptNodes = [];\n const allDaysActive = this.props.allDaysActive;\n const cDate = (new Date()).setHours(0, 0, 0, 0);\n\n /**\n * Build the date list for the carousel, take the date and build\n * an item for each day X days either side\n **/\n for (let i = 0; i < (iDayRange * 3); i++) {\n // NOTE: Using moment to add days will account for daylight savings time\n const iOptDate = moment(iStartDate).add(i, 'days').startOf('day').valueOf();\n const iItemPos = iItemWidth * i;\n let sActiveClass = '';\n\n const props = {\n 'data-id': this.dateToKey(iOptDate),\n className: 'day slick-slide', // slick-active\n // index: i,\n style: { width: iItemWidth + 'px' },\n key: i\n };\n\n // If allDaysActive is true, all dates get marked as active\n if (!allDaysActive && !oActiveDates[iOptDate]) {\n sActiveClass = 'inactive';\n }\n\n if (moment(iActiveDate).isSame(moment(iOptDate), 'day')) {\n sActiveClass = 'active';\n }\n\n /* react will add a span round the first value and the css dosn't want that */\n const oOptDate = this.dateToObject(iOptDate);\n const formatedOptDay = formatMessage(messages[`schedule.calendar.day.${this.dateFormat(oOptDate, 'date9')}`]);\n\n const sDisplayValue = `${formatedOptDay} <span>${oOptDate.getDate()}</span>`;\n\n // NOTE: comparing `day` via moment ensures moment date instances account for daylight savings time\n if (!this.props.isReplaySlider || moment(iOptDate).isSameOrBefore(moment(cDate), 'day')) {\n aOptNodes.push((\n <div {...props} onClick={this.selectDate.bind(this, iOptDate, iItemPos)}>\n <a key={ 'item' + this.dateToKey(iOptDate)} className={sActiveClass} dangerouslySetInnerHTML={{ __html: sDisplayValue } }></a>\n </div>\n ));\n }\n }\n\n const oSliderprops = {\n onMouseDown: this.swipeStart,\n onMouseMove: this.state.dragging ? this._throttle(50, this.swipeMove) : null,\n onMouseUp: this.swipeEnd,\n onMouseLeave: this.state.dragging ? this.swipeEnd : null,\n onTouchStart: this.swipeStart,\n onTouchMove: this.state.dragging ? this._throttle(50, this.swipeMove) : null,\n onTouchEnd: this.swipeEnd,\n onTouchCancel: this.state.dragging ? this.swipeEnd : null,\n className: 'slick-list draggable',\n tabIndex: 0\n };\n\n const oSliderStyle = {\n width: (iItemWidth * (iDayRange * 3)) + 'px',\n left: (this.state.currentPos + (this.props.centered ? (iItemWidth * Math.floor(iDayRange / 2)) : 0)) + 'px'\n };\n\n const startDate = this.getStartDate(this.props.isReplaySlider, iDisplayDate, iDayRange);\n const endDate = this.getEndDate(this.props.isReplaySlider, iDisplayDate, iDayRange, iOneDay);\n\n const dateString = (\n <span>\n <span key={'firstDay'} className=\"firstDay\">\n {this.getIntlDate(this.dateFormat(startDate, 'date13'))} - </span>\n <span key={'lastDay'} className=\"lastDay\">\n {this.getIntlDate(this.dateFormat(endDate, 'date13'))}</span>\n </span>\n );\n\n if (this.state.animate) {\n oSliderStyle.transition = 'left 0.5s'; // 'all 1s ease-in-out'\n }\n\n // console.log('month: ', formatMessage(messages['schedule.calendar.month.January']));\n return (\n <div className=\"carousel-wrap\" style={{ float: 'none' }}>\n <Helmet\n style={isResponsive ? [] : [{\n cssText: `\n .date-picker-carousel.slick-slider {\n margin-bottom: 15px !important;\n padding: 0 28px !important;\n width: 307px !important;\n }\n .slick-prev, .slick-next {\n display: block !important;\n }\n `\n }]}\n />\n <div className=\"carousel-week\">\n { dateString }\n </div>\n <div className=\"date-picker-carousel slick-initialized slick-slider\">\n <div {...oSliderprops}>\n <div className=\"slick-track\" style={oSliderStyle}>\n {aOptNodes}\n </div>\n </div>\n <button type=\"button\" data-role=\"none\" className=\"slick-prev slice-arrow\" style={{ display: 'block' }} onClick={ this.previous }>\n </button>\n <button type=\"button\" data-role=\"none\" className=\"slick-next slice-arrow\" style={{ display: 'block' }} onClick={ this.next }>\n </button>\n </div>\n\n <div className=\"carousel-day\">\n <span id=\"sbpDate\" className=\"date\"></span>\n </div>\n </div>\n );\n }\n\n}\n\nDateSlider.propTypes = {\n onDateSelected: PropTypes.func,\n date: PropTypes.object,\n showWeek: PropTypes.bool,\n league: PropTypes.string,\n rtl: PropTypes.bool,\n allDaysActive: PropTypes.bool,\n centered: PropTypes.bool,\n activeDates: PropTypes.object,\n maxDaysInFuture: PropTypes.number,\n maxDaysInPast: PropTypes.number,\n formatDate: PropTypes.func,\n isResponsive: PropTypes.bool,\n isReplaySlider: PropTypes.bool,\n watchRegion: PropTypes.string\n};\n\nDateSlider.defaultProps = {\n date: new Date(),\n onDateSelected: (date) => {date},\n maxDaysInFuture: 30,\n maxDaysInPast: 0,\n isResponsive: true,\n isReplaySlider: false\n};\n\nexport default DateSlider;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/DateSlider.js","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_createAggregator.js\n// module id = 745\n// module chunks = 1","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayAggregator.js\n// module id = 746\n// module chunks = 1","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseAggregator.js\n// module id = 747\n// module chunks = 1","\n/**\n * getListingNameFromStream - returns the proper string representation for the listing.name.\n * Depending on the entitlements and packages available, it will append the feedName to the name.\n *\n * @param {Object} listing - Object containing all metadata for the current listing\n * @param {string[]} packageNamesList - Array containing the current packages associated with the listing\n * @param {string[]} entitlementsList - Array containing the current entitlements\n * @return {string}\n */\nexport default function getListingNameFromStream(listing = {}) {\n const name = (listing.name && listing.name !== '') ? listing.name.trim() : '';\n const feedName = listing.feedName || '';\n\n if (feedName !== '') {\n return `${name} (${feedName})`;\n }\n\n return name;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/format/getListingNameFromStream.js","import React, { PropTypes, Component } from 'react';\nimport groupBy from 'lodash/groupBy';\nimport uniqBy from 'lodash/uniqBy';\nimport classnames from 'classnames';\nimport appConfig from 'config';\nimport { Entitlements, DarkThemeLogos } from 'enums';\nimport { dateFormat } from 'lib/format';\nimport { isContentLocked } from 'lib/auth';\nimport Select from 'common/Select';\nimport getContentFromListing from 'lib/format/getContentFromListing';\nimport getListingNameFromStream from 'lib/format/getListingNameFromStream';\nimport ScheduleLink from 'common/schedule/ScheduleLink';\nimport StatusFilter from 'common/schedule/StatusFilter';\nimport ResponsiveTable from '@alias/ResponsiveTable';\n\nconst {\n secureCdnHost\n} = appConfig;\n\nconst networkToImageName = { espn1: 'espn', espndeportes: 'espndeportes_blk' };\n\nfunction getNetworkImage(abbr, packageNamesArg = [], darkTheme = false) {\n let images = [];\n if (abbr === 'espn_dtc' || abbr === 'bam_dtc' || abbr === 'espn_ppv') {\n let packageNames = packageNamesArg;\n if (!packageNames.length) {\n packageNames = [Entitlements.ESPN_PLUS];\n }\n images = packageNames.sort().map(packageName => {\n let logo;\n let alt;\n if (packageName === Entitlements.ESPN_PLUS) {\n logo = 'espnplus';\n if (darkTheme) {\n logo += '_wht';\n }\n alt = 'espn+';\n } else if (packageName === Entitlements.ESPN_PLUS_MLB) {\n logo = 'mlb';\n alt = 'mlb.tv';\n } else if (packageName === Entitlements.ESPN_PLUS_NHL) {\n logo = 'nhl';\n if (darkTheme) {\n logo += '_wht';\n }\n alt = 'nhl.tv';\n // NOTE: Find a match for any `ESPN_PLUS_UFC_PPV_*` entitlements\n } else if (packageName.indexOf(Entitlements.ESPN_PLUS_UFC_PPV) !== -1) {\n logo = 'ufc_ppv';\n alt = 'ufc';\n\n if (darkTheme) {\n logo += '_wht';\n }\n }\n const image =\n `${secureCdnHost}/watchespn/images/web/network_logos/channel_logo_${logo}_2x.png`;\n return { image, alt };\n });\n } else {\n let networkLogoName = networkToImageName[abbr] || abbr;\n const networkAlt = abbr;\n\n if (darkTheme) {\n if (abbr === 'espndeportes') {\n networkLogoName = 'espndeportes';\n } else if (DarkThemeLogos[abbr]) {\n // NOTE: Use the dictionary to determine which logos support darkmode\n networkLogoName = DarkThemeLogos[abbr];\n }\n }\n\n const networkLogoImageSource =\n `${secureCdnHost}/watchespn/images/web/network_logos/channel_logo_${networkLogoName}_2x.png`;\n images.push({ image: networkLogoImageSource, alt: networkAlt });\n }\n\n return images;\n}\n\nclass ScheduleCategorySection extends Component {\n constructor(props) {\n super(props);\n this.state = { selectedSubcategoryId: -1 };\n this.onSubcategorySelect = this.onSubcategorySelect.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.selectedTab !== this.props.selectedTab) {\n this.setState({ selectedSubcategoryId: -1 });\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Re-Render if:\n // (1) Number of listings changes in a section\n // (2) User authenticates\n // (3) Subcategory filter is used\n // (4) The first listing is different\n return (\n this.props.listings.length !== nextProps.listings.length ||\n this.props.userAuth.length !== nextProps.userAuth.length ||\n this.state.selectedSubcategoryId !== nextState.selectedSubcategoryId ||\n this.props.listings[0].id !== nextProps.listings[0].id ||\n this.props.preauthorizedResources !== nextProps.preauthorizedResources\n );\n }\n\n componentDidUpdate() {\n if (window.espn_ui) {\n window.espn_ui.LoadBehavior();\n }\n }\n\n onSubcategorySelect(option) {\n this.setState({ selectedSubcategoryId: option.value });\n }\n\n render() {\n const {\n category,\n listings,\n preauthorizedResources,\n userAuth,\n selectedTab,\n dateFormat: dateFormatStr,\n defaultLabel,\n blackoutMessage,\n showSectionCaption,\n bucketName\n } = this.props;\n const compareObjectsByName = (objA, objB) => {\n const aName = objA.name.trim().toLowerCase();\n const bName = objB.name.trim().toLowerCase();\n if (aName > bName) {\n return 1;\n } else if (aName < bName) {\n return -1;\n }\n return 0;\n };\n\n const isReplaySelected = selectedTab === StatusFilter.Options.REPLAY;\n\n const subcategories = uniqBy(\n listings.map((listing) => listing.subcategories[0]), 'name'\n ).sort(compareObjectsByName);\n\n // moved the 'undefined' subcat to the top\n if (subcategories[subcategories.length - 1] === undefined) {\n subcategories.pop();\n subcategories.unshift(undefined);\n }\n\n const listingsGroupedBySubcategory = groupBy(listings,\n (listing) => listing.subcategories[0] && listing.subcategories[0].name);\n\n const hasDropdown = Object.keys(subcategories.filter((sc) => !!sc)).length > 1;\n\n const h2ClassName = classnames('table-caption', {\n 'has-dropdown': hasDropdown\n });\n\n const selectOptions = [{ label: defaultLabel, value: -1 }]\n .concat(\n subcategories\n .filter((item) => !!item) // don't include the \"undefined\" subcat\n .map((subcat) => ({ label: subcat.name, value: subcat.name }))\n );\n\n const select = hasDropdown && (\n <Select\n options={selectOptions}\n menuSizeClass=\"drop-left sm\"\n onChange={this.onSubcategorySelect}\n />\n );\n const columns = isReplaySelected ? 5 : 4;\n const tableChildren = [];\n\n subcategories.forEach((subcategory) => {\n const subcatgoryNotFiltered =\n this.state.selectedSubcategoryId === -1 ||\n (\n !!subcategory && this.state.selectedSubcategoryId !== -1 &&\n this.state.selectedSubcategoryId === subcategory.name\n );\n if (!!subcategory && subcatgoryNotFiltered) {\n tableChildren.push(\n <thead key={`thead_${tableChildren.length}`}>\n <tr>\n <th colSpan={columns} ><span>{subcategory.name}</span></th>\n </tr>\n </thead>\n );\n } else {\n // insert a blank <thead> for listings without a subcat\n tableChildren.push(<thead key={`thead_${tableChildren.length}`} />);\n }\n\n const subcategoryListings =\n listingsGroupedBySubcategory[(subcategory && subcategory.name) || subcategory] || [];\n\n let filteredSubcategories = [];\n if (subcatgoryNotFiltered) {\n filteredSubcategories = subcategoryListings;\n }\n\n tableChildren.push((\n <tbody key={`tbody_${tableChildren.length}`}>\n {filteredSubcategories.map((listing) => {\n const showLock = isContentLocked(getContentFromListing(listing), userAuth, preauthorizedResources);\n\n const key = showLock ? (\n <span className=\"icon-font-before icon-lock-solid-before\" />\n ) : null;\n\n const networkAbbreviation = listing.broadcasts[0].abbreviation;\n const packageNames = listing.broadcasts[0].packages;\n const images = getNetworkImage(\n networkAbbreviation,\n packageNames\n );\n const imageNode = images && images.map(({ image, alt }) => (\n <img src={image} alt={alt} />\n ));\n const startTime = listing.startTime && dateFormat.toISOString(listing.startTime);\n const displayTime = startTime && dateFormat.dateFormat(startTime, dateFormatStr);\n\n const placement = `schedule-${listing.type}`;\n const listingContent = getContentFromListing(listing);\n const listingName = getListingNameFromStream(\n listing,\n packageNames,\n [Entitlements.ESPN_PLUS, Entitlements.ESPN_PLUS_MLB, Entitlements.ESPN_PLUS_NHL]\n );\n\n return (\n <tr key={`tr_${listing.id}`}>\n <td className=\"schedule__time\">{displayTime}</td>\n <td className=\"schedule__competitors\">\n <ScheduleLink\n content={listingContent}\n listing={listing}\n name={listingName}\n placement={placement}\n blackoutMessage={blackoutMessage}\n bucketName={bucketName}\n />\n </td>\n <td className=\"schedule__auth\">{key}</td>\n <td className=\"schedule__network\">\n <div className=\"schedule__network__content\">\n {imageNode}\n </div>\n </td>\n </tr>\n );\n })}\n </tbody>\n ));\n });\n\n return (\n <div key={category.id}>\n {showSectionCaption && (\n <div>\n <h2 className={h2ClassName}>\n <span className=\"long-caption\">\n {category.name}\n </span>\n </h2>\n {select}\n </div>\n )}\n <ResponsiveTable>\n {tableChildren}\n </ResponsiveTable>\n </div>\n );\n }\n}\n\nScheduleCategorySection.defaultProps = {\n showSectionCaption: true\n};\n\nScheduleCategorySection.propTypes = {\n category: PropTypes.object,\n listings: PropTypes.array,\n userAuth: PropTypes.array,\n preauthorizedResources: PropTypes.array,\n selectedTab: PropTypes.string,\n dateFormat: PropTypes.string,\n blackoutMessage: PropTypes.string,\n defaultLabel: PropTypes.string,\n showSectionCaption: PropTypes.bool,\n bucketName: PropTypes.string\n};\n\nexport default ScheduleCategorySection;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/schedule/ScheduleCategorySection.js","import React, { PropTypes } from 'react';\nimport playable from '@alias/Playable';\n\nconst ScheduleLink = ({\n clickHandler,\n listing,\n name = '',\n playerHref,\n userIsBlackedOut,\n blackoutClickHandler,\n blackoutMessage\n}) => {\n let blackoutLink;\n if (userIsBlackedOut) {\n blackoutLink = (\n <p style={{ display: 'inline' }}> | <a onClick={blackoutClickHandler}>{blackoutMessage}</a></p>\n );\n }\n\n return (listing.type === 'upcoming') ?\n <div>{name}{blackoutLink}</div> :\n <div><a href={playerHref} data-route=\"false\" onClick={clickHandler}>{name}</a>{blackoutLink}</div>;\n};\n\nScheduleLink.propTypes = {\n clickHandler: PropTypes.func,\n blackoutClickHandler: PropTypes.func,\n listing: PropTypes.object,\n playerHref: PropTypes.string,\n name: PropTypes.string,\n userIsBlackedOut: PropTypes.bool,\n blackoutMessage: PropTypes.string\n};\n\nexport default playable(ScheduleLink);\nexport { ScheduleLink as BaseScheduleLink };\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/schedule/ScheduleLink.js","import React, { PropTypes } from 'react';\n\nconst ResponsiveTable = ({ children }) => (\n <div className=\"responsive-table-wrap\">\n <table\n cellPadding=\"0\"\n cellSpacing=\"0\"\n className=\"schedule align-left\"\n data-text-contract=\"Contract table\"\n data-text-expand=\"Expand table\"\n data-fix-cols=\"0\"\n data-behavior=\"responsive_table\"\n >\n {children}\n </table>\n </div>\n);\n\nResponsiveTable.propTypes = {\n children: PropTypes.node\n};\n\nexport default ResponsiveTable;\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/common/schedule/ResponsiveTable.js","var React = require('react');\nvar ReactDOM = require('react-dom');\nvar ExecutionEnvironment = require('exenv');\nvar ModalPortal = React.createFactory(require('./ModalPortal'));\nvar ariaAppHider = require('../helpers/ariaAppHider');\nvar elementClass = require('element-class');\nvar renderSubtreeIntoContainer = require(\"react-dom\").unstable_renderSubtreeIntoContainer;\nvar Assign = require('lodash.assign');\n\nvar SafeHTMLElement = ExecutionEnvironment.canUseDOM ? window.HTMLElement : {};\nvar AppElement = ExecutionEnvironment.canUseDOM ? document.body : {appendChild: function() {}};\n\nvar Modal = React.createClass({\n\n displayName: 'Modal',\n statics: {\n setAppElement: function(element) {\n AppElement = ariaAppHider.setElement(element);\n },\n injectCSS: function() {\n \"production\" !== process.env.NODE_ENV\n && console.warn('React-Modal: injectCSS has been deprecated ' +\n 'and no longer has any effect. It will be removed in a later version');\n }\n },\n\n propTypes: {\n isOpen: React.PropTypes.bool.isRequired,\n style: React.PropTypes.shape({\n content: React.PropTypes.object,\n overlay: React.PropTypes.object\n }),\n appElement: React.PropTypes.instanceOf(SafeHTMLElement),\n onAfterOpen: React.PropTypes.func,\n onRequestClose: React.PropTypes.func,\n closeTimeoutMS: React.PropTypes.number,\n ariaHideApp: React.PropTypes.bool,\n shouldCloseOnOverlayClick: React.PropTypes.bool\n },\n\n getDefaultProps: function () {\n return {\n isOpen: false,\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldCloseOnOverlayClick: true\n };\n },\n\n componentDidMount: function() {\n this.node = document.createElement('div');\n this.node.className = 'ReactModalPortal';\n document.body.appendChild(this.node);\n this.renderPortal(this.props);\n },\n\n componentWillReceiveProps: function(newProps) {\n this.renderPortal(newProps);\n },\n\n componentWillUnmount: function() {\n ReactDOM.unmountComponentAtNode(this.node);\n document.body.removeChild(this.node);\n elementClass(document.body).remove('ReactModal__Body--open');\n },\n\n renderPortal: function(props) {\n if (props.isOpen) {\n elementClass(document.body).add('ReactModal__Body--open');\n } else {\n elementClass(document.body).remove('ReactModal__Body--open');\n }\n\n if (props.ariaHideApp) {\n ariaAppHider.toggle(props.isOpen, props.appElement);\n }\n\n this.portal = renderSubtreeIntoContainer(this, ModalPortal(Assign({}, props, {defaultStyles: Modal.defaultStyles})), this.node);\n },\n\n render: function () {\n return React.DOM.noscript();\n }\n});\n\nModal.defaultStyles = {\n overlay: {\n position : 'fixed',\n top : 0,\n left : 0,\n right : 0,\n bottom : 0,\n backgroundColor : 'rgba(255, 255, 255, 0.75)'\n },\n content: {\n position : 'absolute',\n top : '40px',\n left : '40px',\n right : '40px',\n bottom : '40px',\n border : '1px solid #ccc',\n background : '#fff',\n overflow : 'auto',\n WebkitOverflowScrolling : 'touch',\n borderRadius : '4px',\n outline : 'none',\n padding : '20px'\n }\n}\n\nmodule.exports = Modal\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-modal/lib/components/Modal.js\n// module id = 749\n// module chunks = 1","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exenv/index.js\n// module id = 750\n// module chunks = 1","var React = require('react');\nvar div = React.DOM.div;\nvar focusManager = require('../helpers/focusManager');\nvar scopeTab = require('../helpers/scopeTab');\nvar Assign = require('lodash.assign');\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: {\n base: 'ReactModal__Overlay',\n afterOpen: 'ReactModal__Overlay--after-open',\n beforeClose: 'ReactModal__Overlay--before-close'\n },\n content: {\n base: 'ReactModal__Content',\n afterOpen: 'ReactModal__Content--after-open',\n beforeClose: 'ReactModal__Content--before-close'\n }\n};\n\nvar ModalPortal = module.exports = React.createClass({\n\n displayName: 'ModalPortal',\n\n getDefaultProps: function() {\n return {\n style: {\n overlay: {},\n content: {}\n }\n };\n },\n\n getInitialState: function() {\n return {\n afterOpen: false,\n beforeClose: false\n };\n },\n\n componentDidMount: function() {\n // Focus needs to be set when mounting and already open\n if (this.props.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n }\n },\n\n componentWillUnmount: function() {\n clearTimeout(this.closeTimer);\n },\n\n componentWillReceiveProps: function(newProps) {\n // Focus only needs to be set once when the modal is being opened\n if (!this.props.isOpen && newProps.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n } else if (this.props.isOpen && !newProps.isOpen) {\n this.close();\n }\n },\n\n componentDidUpdate: function () {\n if (this.focusAfterRender) {\n this.focusContent();\n this.setFocusAfterRender(false);\n }\n },\n\n setFocusAfterRender: function (focus) {\n this.focusAfterRender = focus;\n },\n\n open: function() {\n if (this.state.afterOpen && this.state.beforeClose) {\n clearTimeout(this.closeTimer);\n this.setState({ beforeClose: false });\n } else {\n focusManager.setupScopedFocus(this.node);\n focusManager.markForFocusLater();\n this.setState({isOpen: true}, function() {\n this.setState({afterOpen: true});\n\n if (this.props.isOpen && this.props.onAfterOpen) {\n this.props.onAfterOpen();\n }\n }.bind(this));\n }\n },\n\n close: function() {\n if (!this.ownerHandlesClose())\n return;\n if (this.props.closeTimeoutMS > 0)\n this.closeWithTimeout();\n else\n this.closeWithoutTimeout();\n },\n\n focusContent: function() {\n this.refs.content.focus();\n },\n\n closeWithTimeout: function() {\n this.setState({beforeClose: true}, function() {\n this.closeTimer = setTimeout(this.closeWithoutTimeout, this.props.closeTimeoutMS);\n }.bind(this));\n },\n\n closeWithoutTimeout: function() {\n this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n }, this.afterClose);\n },\n\n afterClose: function() {\n focusManager.returnFocus();\n focusManager.teardownScopedFocus();\n },\n\n handleKeyDown: function(event) {\n if (event.keyCode == 9 /*tab*/) scopeTab(this.refs.content, event);\n if (event.keyCode == 27 /*esc*/) {\n event.preventDefault();\n this.requestClose(event);\n }\n },\n\n handleOverlayClick: function(event) {\n var node = event.target\n\n while (node) {\n if (node === this.refs.content) return\n node = node.parentNode\n }\n\n if (this.props.shouldCloseOnOverlayClick) {\n if (this.ownerHandlesClose())\n this.requestClose(event);\n else\n this.focusContent();\n }\n },\n\n requestClose: function(event) {\n if (this.ownerHandlesClose())\n this.props.onRequestClose(event);\n },\n\n ownerHandlesClose: function() {\n return this.props.onRequestClose;\n },\n\n shouldBeClosed: function() {\n return !this.props.isOpen && !this.state.beforeClose;\n },\n\n buildClassName: function(which, additional) {\n var className = CLASS_NAMES[which].base;\n if (this.state.afterOpen)\n className += ' '+CLASS_NAMES[which].afterOpen;\n if (this.state.beforeClose)\n className += ' '+CLASS_NAMES[which].beforeClose;\n return additional ? className + ' ' + additional : className;\n },\n\n render: function() {\n var contentStyles = (this.props.className) ? {} : this.props.defaultStyles.content;\n var overlayStyles = (this.props.overlayClassName) ? {} : this.props.defaultStyles.overlay;\n\n return this.shouldBeClosed() ? div() : (\n div({\n ref: \"overlay\",\n className: this.buildClassName('overlay', this.props.overlayClassName),\n style: Assign({}, overlayStyles, this.props.style.overlay || {}),\n onClick: this.handleOverlayClick\n },\n div({\n ref: \"content\",\n style: Assign({}, contentStyles, this.props.style.content || {}),\n className: this.buildClassName('content', this.props.className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown\n },\n this.props.children\n )\n )\n );\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-modal/lib/components/ModalPortal.js\n// module id = 751\n// module chunks = 1","var findTabbable = require('../helpers/tabbable');\nvar modalElement = null;\nvar focusLaterElement = null;\nvar needToFocus = false;\n\nfunction handleBlur(event) {\n needToFocus = true;\n}\n\nfunction handleFocus(event) {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation \n // is that the document.body gets focus, and then we focus our element right \n // after, seems fine.\n setTimeout(function() {\n if (modalElement.contains(document.activeElement))\n return;\n var el = (findTabbable(modalElement)[0] || modalElement);\n el.focus();\n }, 0);\n }\n}\n\nexports.markForFocusLater = function() {\n focusLaterElement = document.activeElement;\n};\n\nexports.returnFocus = function() {\n try {\n focusLaterElement.focus();\n }\n catch (e) {\n console.warn('You tried to return focus to '+focusLaterElement+' but it is not in the DOM anymore');\n }\n focusLaterElement = null;\n};\n\nexports.setupScopedFocus = function(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener('blur', handleBlur, false);\n document.addEventListener('focus', handleFocus, true);\n } else {\n window.attachEvent('onBlur', handleBlur);\n document.attachEvent('onFocus', handleFocus);\n }\n};\n\nexports.teardownScopedFocus = function() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener('blur', handleBlur);\n document.removeEventListener('focus', handleFocus);\n } else {\n window.detachEvent('onBlur', handleBlur);\n document.detachEvent('onFocus', handleFocus);\n }\n};\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-modal/lib/helpers/focusManager.js\n// module id = 752\n// module chunks = 1","var findTabbable = require('../helpers/tabbable');\n\nmodule.exports = function(node, event) {\n var tabbable = findTabbable(node);\n if (!tabbable.length) {\n event.preventDefault();\n return;\n }\n var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];\n var leavingFinalTabbable = (\n finalTabbable === document.activeElement ||\n // handle immediate shift+tab after opening with mouse\n node === document.activeElement\n );\n if (!leavingFinalTabbable) return;\n event.preventDefault();\n var target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];\n target.focus();\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-modal/lib/helpers/scopeTab.js\n// module id = 753\n// module chunks = 1","/**\n * lodash 3.2.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar baseCopy = require('lodash._basecopy'),\n keys = require('lodash.keys');\n\n/**\n * The base implementation of `_.assign` without support for argument juggling,\n * multiple sources, and `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return source == null\n ? object\n : baseCopy(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash._baseassign/index.js\n// module id = 754\n// module chunks = 1","/**\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash._basecopy/index.js\n// module id = 755\n// module chunks = 1","/**\n * lodash 3.9.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = getNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash._getnative/index.js\n// module id = 756\n// module chunks = 1","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.isarguments/index.js\n// module id = 757\n// module chunks = 1","/**\n * lodash 3.0.4 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.isarray/index.js\n// module id = 758\n// module chunks = 1","/**\n * lodash 3.1.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar bindCallback = require('lodash._bindcallback'),\n isIterateeCall = require('lodash._isiterateecall'),\n restParam = require('lodash.restparam');\n\n/**\n * Creates a function that assigns properties of source object(s) to a given\n * destination object.\n *\n * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash._createassigner/index.js\n// module id = 759\n// module chunks = 1","/**\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\n/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = bindCallback;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash._bindcallback/index.js\n// module id = 760\n// module chunks = 1","/**\n * lodash 3.0.9 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash._isiterateecall/index.js\n// module id = 761\n// module chunks = 1","/**\n * lodash 3.6.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.restparam/index.js\n// module id = 762\n// module chunks = 1","var _element = typeof document !== 'undefined' ? document.body : null;\n\nfunction setElement(element) {\n if (typeof element === 'string') {\n var el = document.querySelectorAll(element);\n element = 'length' in el ? el[0] : el;\n }\n _element = element || _element;\n return _element;\n}\n\nfunction hide(appElement) {\n validateElement(appElement);\n (appElement || _element).setAttribute('aria-hidden', 'true');\n}\n\nfunction show(appElement) {\n validateElement(appElement);\n (appElement || _element).removeAttribute('aria-hidden');\n}\n\nfunction toggle(shouldHide, appElement) {\n if (shouldHide)\n hide(appElement);\n else\n show(appElement);\n}\n\nfunction validateElement(appElement) {\n if (!appElement && !_element)\n throw new Error('react-modal: You must set an element with `Modal.setAppElement(el)` to make this accessible');\n}\n\nfunction resetForTesting() {\n _element = document.body;\n}\n\nexports.toggle = toggle;\nexports.setElement = setElement;\nexports.show = show;\nexports.hide = hide;\nexports.resetForTesting = resetForTesting;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-modal/lib/helpers/ariaAppHider.js\n// module id = 763\n// module chunks = 1","module.exports = function(opts) {\n return new ElementClass(opts)\n}\n\nfunction indexOf(arr, prop) {\n if (arr.indexOf) return arr.indexOf(prop)\n for (var i = 0, len = arr.length; i < len; i++)\n if (arr[i] === prop) return i\n return -1\n}\n\nfunction ElementClass(opts) {\n if (!(this instanceof ElementClass)) return new ElementClass(opts)\n var self = this\n if (!opts) opts = {}\n\n // similar doing instanceof HTMLElement but works in IE8\n if (opts.nodeType) opts = {el: opts}\n\n this.opts = opts\n this.el = opts.el || document.body\n if (typeof this.el !== 'object') this.el = document.querySelector(this.el)\n}\n\nElementClass.prototype.add = function(className) {\n var el = this.el\n if (!el) return\n if (el.className === \"\") return el.className = className\n var classes = el.className.split(' ')\n if (indexOf(classes, className) > -1) return classes\n classes.push(className)\n el.className = classes.join(' ')\n return classes\n}\n\nElementClass.prototype.remove = function(className) {\n var el = this.el\n if (!el) return\n if (el.className === \"\") return\n var classes = el.className.split(' ')\n var idx = indexOf(classes, className)\n if (idx > -1) classes.splice(idx, 1)\n el.className = classes.join(' ')\n return classes\n}\n\nElementClass.prototype.has = function(className) {\n var el = this.el\n if (!el) return\n var classes = el.className.split(' ')\n return indexOf(classes, className) > -1\n}\n\nElementClass.prototype.toggle = function(className) {\n var el = this.el\n if (!el) return\n if (this.has(className)) this.remove(className)\n else this.add(className)\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/element-class/index.js\n// module id = 764\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _slider = require(\"./slider\");\n\nvar _slider2 = _interopRequireDefault(_slider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _slider2.default;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-slick/lib/index.js\n// module id = 765\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = require(\"json2mq\");\n\nvar _json2mq2 = _interopRequireDefault(_json2mq);\n\nvar _defaultProps = require(\"./default-props\");\n\nvar _defaultProps2 = _interopRequireDefault(_defaultProps);\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n function Slider(props) {\n _classCallCheck(this, Slider);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.innerSliderRefHandler = function (ref) {\n return _this.innerSlider = ref;\n };\n\n _this.slickPrev = function () {\n return _this.innerSlider.slickPrev();\n };\n\n _this.slickNext = function () {\n return _this.innerSlider.slickNext();\n };\n\n _this.slickGoTo = function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n };\n\n _this.slickPause = function () {\n return _this.innerSlider.pause(\"paused\");\n };\n\n _this.slickPlay = function () {\n return _this.innerSlider.autoPlay(\"play\");\n };\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n Slider.prototype.media = function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n this._responsiveMediaHandlers.push({ query: query, handler: handler });\n };\n\n // handles responsive breakpoints\n\n\n Slider.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n });\n // sort them in increasing order of their numerical value\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery = void 0;\n if (index === 0) {\n bQuery = (0, _json2mq2.default)({ minWidth: 0, maxWidth: breakpoint });\n } else {\n bQuery = (0, _json2mq2.default)({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n }\n // when not using server side rendering\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({ breakpoint: breakpoint });\n });\n });\n\n // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n var query = (0, _json2mq2.default)({ minWidth: breakpoints.slice(-1)[0] });\n\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({ breakpoint: null });\n });\n }\n };\n\n Slider.prototype.componentWillUnmount = function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n };\n\n Slider.prototype.render = function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _extends({}, _defaultProps2.default, this.props, newProps[0].settings);\n } else {\n settings = _extends({}, _defaultProps2.default, this.props);\n }\n\n // force scrolling by one if centerMode is on\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \" + settings.slidesToScroll);\n }\n settings.slidesToScroll = 1;\n }\n // force showing one slide and scrolling by one if the fade mode is on\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \" + settings.slidesToShow);\n }\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \" + settings.slidesToScroll);\n }\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n }\n\n // makes sure that children is an array, even when there is only 1 child\n var children = _react2.default.Children.toArray(this.props.children);\n\n // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n return !!child;\n });\n\n // rows and slidesPerRow logic is handled here\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n var newChildren = [];\n var currentWidth = null;\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n if (k >= children.length) break;\n row.push(_react2.default.cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: 100 / settings.slidesPerRow + \"%\",\n display: \"inline-block\"\n }\n }));\n }\n newSlide.push(_react2.default.createElement(\n \"div\",\n { key: 10 * i + j },\n row\n ));\n }\n if (settings.variableWidth) {\n newChildren.push(_react2.default.createElement(\n \"div\",\n { key: i, style: { width: currentWidth } },\n newSlide\n ));\n } else {\n newChildren.push(_react2.default.createElement(\n \"div\",\n { key: i },\n newSlide\n ));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return _react2.default.createElement(\n \"div\",\n { className: className },\n newChildren\n );\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n return _react2.default.createElement(\n _innerSlider.InnerSlider,\n _extends({ ref: this.innerSliderRefHandler }, settings),\n newChildren\n );\n };\n\n return Slider;\n}(_react2.default.Component);\n\nexports.default = Slider;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-slick/lib/slider.js\n// module id = 766\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\nexports.InnerSlider = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _initialState = require(\"./initial-state\");\n\nvar _initialState2 = _interopRequireDefault(_initialState);\n\nvar _lodash = require(\"lodash.debounce\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _classnames = require(\"classnames\");\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = require(\"resize-observer-polyfill\");\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar InnerSlider = exports.InnerSlider = function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n function InnerSlider(props) {\n _classCallCheck(this, InnerSlider);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.listRefHandler = function (ref) {\n return _this.list = ref;\n };\n\n _this.trackRefHandler = function (ref) {\n return _this.track = ref;\n };\n\n _this.adaptHeight = function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\" + _this.state.currentSlide + \"\\\"]\");\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n };\n\n _this.componentWillMount = function () {\n _this.ssrInit();\n _this.props.onInit && _this.props.onInit();\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_extends({}, _this.props, _this.state));\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n };\n\n _this.componentDidMount = function () {\n var spec = _extends({ listRef: _this.list, trackRef: _this.track }, _this.props);\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n _this.ro = new _resizeObserverPolyfill2.default(function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n _this.ro.observe(_this.list);\n Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n // To support server-side rendering\n if (!window) {\n return;\n }\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n };\n\n _this.componentWillUnmount = function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n _this.callbackTimers = [];\n }\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n };\n\n _this.componentWillReceiveProps = function (nextProps) {\n var spec = _extends({\n listRef: _this.list,\n trackRef: _this.track\n }, nextProps, _this.state);\n var setTrackStyle = false;\n for (var _iterator = Object.keys(_this.props), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n if (!nextProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n if (_typeof(nextProps[key]) === \"object\" || typeof nextProps[key] === \"function\") {\n continue;\n }\n if (nextProps[key] !== _this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react2.default.Children.count(nextProps.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react2.default.Children.count(nextProps.children) - nextProps.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n if (nextProps.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n };\n\n _this.componentDidUpdate = function () {\n _this.checkImagesLoad();\n _this.props.onReInit && _this.props.onReInit();\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_extends({}, _this.props, _this.state));\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n _this.adaptHeight();\n };\n\n _this.onWindowResized = function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash2.default)(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n _this.debouncedResize();\n };\n\n _this.resizeWindow = function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (!_reactDom2.default.findDOMNode(_this.track)) return;\n var spec = _extends({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props, _this.state);\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n });\n // animating state should be cleared while resizing, otherwise autoplay stops working\n _this.setState({\n animating: false\n });\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n };\n\n _this.updateState = function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _extends({}, spec, updatedState, { slideIndex: updatedState.currentSlide });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _extends({}, spec, { left: targetLeft });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n if (setTrackStyle || _react2.default.Children.count(_this.props.children) !== _react2.default.Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n _this.setState(updatedState, callback);\n };\n\n _this.ssrInit = function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_extends({}, _this.props, _this.state, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_extends({}, _this.props, _this.state, {\n slideCount: _this.props.children.length\n }));\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n for (var _i2 = 0; _i2 < postClones; _i2++) {\n _trackWidth += childrenWidths[_i2];\n }\n for (var _i3 = 0; _i3 < _this.state.currentSlide; _i3++) {\n _trackLeft += childrenWidths[_i3];\n }\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n if (_this.props.centerMode) {\n var currentWidth = childrenWidths[_this.state.currentSlide] + \"px\";\n _trackStyle.left = \"calc(\" + _trackStyle.left + \" + (100% - \" + currentWidth + \") / 2 ) \";\n }\n _this.setState({\n trackStyle: _trackStyle\n });\n return;\n }\n var childrenCount = _react2.default.Children.count(_this.props.children);\n var spec = _extends({}, _this.props, _this.state, { slideCount: childrenCount });\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n _this.setState({\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n });\n };\n\n _this.checkImagesLoad = function () {\n var images = document.querySelectorAll(\".slick-slide img\");\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n };\n\n _this.progressiveLazyLoad = function () {\n var slidesToLoad = [];\n var spec = _extends({}, _this.props, _this.state);\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n };\n\n _this.slideHandler = function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n currentSlide = _this$props.currentSlide,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_extends({\n index: index\n }, _this.props, _this.state, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n _this.setState(state, function () {\n asNavFor && asNavFor.innerSlider.state.currentSlide !== currentSlide && asNavFor.innerSlider.slideHandler(index);\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({ animating: animating });\n }, 10));\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n };\n\n _this.changeSlide = function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _extends({}, _this.props, _this.state);\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n };\n\n _this.clickHandler = function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n _this.clickable = true;\n };\n\n _this.keyHandler = function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({ message: dir });\n };\n\n _this.selectHandler = function (options) {\n _this.changeSlide(options);\n };\n\n _this.disableBodyScroll = function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n window.ontouchmove = preventDefault;\n };\n\n _this.enableBodyScroll = function () {\n window.ontouchmove = null;\n };\n\n _this.swipeStart = function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n };\n\n _this.swipeMove = function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _extends({}, _this.props, _this.state, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n _this.setState(state);\n };\n\n _this.swipeEnd = function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _extends({}, _this.props, _this.state, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n _this.setState(state);\n if (triggerSlideHandler === undefined) return;\n _this.slideHandler(triggerSlideHandler);\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n };\n\n _this.slickPrev = function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({ message: \"previous\" });\n }, 0));\n };\n\n _this.slickNext = function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({ message: \"next\" });\n }, 0));\n };\n\n _this.slickGoTo = function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n };\n\n _this.play = function () {\n var nextIndex;\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_extends({}, _this.props, _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n };\n\n _this.autoPlay = function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n var autoplaying = _this.state.autoplaying;\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n _this.setState({ autoplaying: \"playing\" });\n };\n\n _this.pause = function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n var autoplaying = _this.state.autoplaying;\n if (pauseType === \"paused\") {\n _this.setState({ autoplaying: \"paused\" });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({ autoplaying: \"focused\" });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({ autoplaying: \"hovered\" });\n }\n }\n };\n\n _this.onDotsOver = function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n };\n\n _this.onDotsLeave = function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n };\n\n _this.onTrackOver = function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n };\n\n _this.onTrackLeave = function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n };\n\n _this.onSlideFocus = function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n };\n\n _this.onSlideBlur = function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n };\n\n _this.render = function () {\n var className = (0, _classnames2.default)(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n var spec = _extends({}, _this.props, _this.state);\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n\n trackProps = _extends({}, trackProps, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect ? _this.selectHandler : null\n });\n\n var dots;\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n\n dotProps = _extends({}, dotProps, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = _react2.default.createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = _react2.default.createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = _react2.default.createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _extends({}, verticalHeightStyle, centerPaddingStyle);\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.swipeEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n\n var innerSliderProps = {\n className: className,\n dir: \"ltr\"\n };\n\n if (_this.props.unslick) {\n listProps = { className: \"slick-list\" };\n innerSliderProps = { className: className };\n }\n return _react2.default.createElement(\n \"div\",\n innerSliderProps,\n !_this.props.unslick ? prevArrow : \"\",\n _react2.default.createElement(\n \"div\",\n _extends({ ref: _this.listRefHandler }, listProps),\n _react2.default.createElement(\n _track.Track,\n _extends({ ref: _this.trackRefHandler }, trackProps),\n _this.props.children\n )\n ),\n !_this.props.unslick ? nextArrow : \"\",\n !_this.props.unslick ? dots : \"\"\n );\n };\n\n _this.list = null;\n _this.track = null;\n _this.state = _extends({}, _initialState2.default, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react2.default.Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n return _this;\n }\n\n return InnerSlider;\n}(_react2.default.Component);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-slick/lib/inner-slider.js\n// module id = 767\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false, // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: { startX: 0, startY: 0, curX: 0, curY: 0 },\n trackStyle: {},\n trackWidth: 0\n};\n\nexports.default = initialState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-slick/lib/initial-state.js\n// module id = 768\n// module chunks = 1","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.debounce/index.js\n// module id = 769\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\nexports.Track = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require(\"classnames\");\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n slickCloned = index < 0 || index >= spec.slideCount;\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n var slickCurrent = index === spec.currentSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n style.WebkitTransition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n var childrenCount = _react2.default.Children.count(spec.children);\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react2.default.Children.forEach(spec.children, function (elem, index) {\n var child = void 0;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n };\n\n // in case of lazyLoad, whether or not we want to fetch the slide\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = _react2.default.createElement(\"div\", null);\n }\n var childStyle = getSlideStyle(_extends({}, spec, { index: index }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_extends({}, spec, { index: index }));\n // push a cloned element of the desired slide\n slides.push(_react2.default.cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames2.default)(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _extends({ outline: \"none\" }, child.props.style || {}, childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n\n // if slide needs to be precloned or postcloned\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n if (key >= startIndex) {\n child = elem;\n }\n slideClasses = getSlideClasses(_extends({}, spec, { index: key }));\n preCloneSlides.push(_react2.default.cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames2.default)(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _extends({}, child.props.style || {}, childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n if (key < endIndex) {\n child = elem;\n }\n slideClasses = getSlideClasses(_extends({}, spec, { index: key }));\n postCloneSlides.push(_react2.default.cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames2.default)(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _extends({}, child.props.style || {}, childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = exports.Track = function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n function Track() {\n _classCallCheck(this, Track);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n Track.prototype.render = function render() {\n var slides = renderSlides(this.props);\n var _props = this.props,\n onMouseEnter = _props.onMouseEnter,\n onMouseOver = _props.onMouseOver,\n onMouseLeave = _props.onMouseLeave;\n\n var mouseEvents = { onMouseEnter: onMouseEnter, onMouseOver: onMouseOver, onMouseLeave: onMouseLeave };\n return _react2.default.createElement(\n \"div\",\n _extends({\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents),\n slides\n );\n };\n\n return Track;\n}(_react2.default.PureComponent);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-slick/lib/track.js\n// module id = 770\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\nexports.Dots = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require(\"classnames\");\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nvar Dots = exports.Dots = function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n Dots.prototype.clickHandler = function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n };\n\n Dots.prototype.render = function render() {\n var _this2 = this;\n\n var dotCount = getDotCount({\n slideCount: this.props.slideCount,\n slidesToScroll: this.props.slidesToScroll,\n slidesToShow: this.props.slidesToShow,\n infinite: this.props.infinite\n });\n\n // Apply join & split to Array to pre-fill it for IE8\n //\n // Credit: http://stackoverflow.com/a/13735425/1849458\n var _props = this.props,\n onMouseEnter = _props.onMouseEnter,\n onMouseOver = _props.onMouseOver,\n onMouseLeave = _props.onMouseLeave;\n\n var mouseEvents = { onMouseEnter: onMouseEnter, onMouseOver: onMouseOver, onMouseLeave: onMouseLeave };\n var dots = Array.apply(null, Array(dotCount + 1).join(\"0\").split(\"\")).map(function (x, i) {\n var leftBound = i * _this2.props.slidesToScroll;\n var rightBound = i * _this2.props.slidesToScroll + (_this2.props.slidesToScroll - 1);\n var className = (0, _classnames2.default)({\n \"slick-active\": _this2.props.currentSlide >= leftBound && _this2.props.currentSlide <= rightBound\n });\n\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: _this2.props.slidesToScroll,\n currentSlide: _this2.props.currentSlide\n };\n\n var onClick = _this2.clickHandler.bind(_this2, dotOptions);\n return _react2.default.createElement(\n \"li\",\n { key: i, className: className },\n _react2.default.cloneElement(_this2.props.customPaging(i), { onClick: onClick })\n );\n });\n\n return _react2.default.cloneElement(this.props.appendDots(dots), _extends({\n className: this.props.dotsClass\n }, mouseEvents));\n };\n\n return Dots;\n}(_react2.default.PureComponent);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-slick/lib/dots.js\n// module id = 771\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\nexports.NextArrow = exports.PrevArrow = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require(\"classnames\");\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar PrevArrow = exports.PrevArrow = function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n PrevArrow.prototype.clickHandler = function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n this.props.clickHandler(options, e);\n };\n\n PrevArrow.prototype.render = function render() {\n var prevClasses = { \"slick-arrow\": true, \"slick-prev\": true };\n var prevHandler = this.clickHandler.bind(this, { message: \"previous\" });\n\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: (0, _classnames2.default)(prevClasses),\n style: { display: \"block\" },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow = void 0;\n\n if (this.props.prevArrow) {\n prevArrow = _react2.default.cloneElement(this.props.prevArrow, _extends({}, prevArrowProps, customProps));\n } else {\n prevArrow = _react2.default.createElement(\n \"button\",\n _extends({ key: \"0\", type: \"button\" }, prevArrowProps),\n \" \",\n \"Previous\"\n );\n }\n\n return prevArrow;\n };\n\n return PrevArrow;\n}(_react2.default.PureComponent);\n\nvar NextArrow = exports.NextArrow = function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n\n return _possibleConstructorReturn(this, _React$PureComponent2.apply(this, arguments));\n }\n\n NextArrow.prototype.clickHandler = function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n this.props.clickHandler(options, e);\n };\n\n NextArrow.prototype.render = function render() {\n var nextClasses = { \"slick-arrow\": true, \"slick-next\": true };\n var nextHandler = this.clickHandler.bind(this, { message: \"next\" });\n\n if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: (0, _classnames2.default)(nextClasses),\n style: { display: \"block\" },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow = void 0;\n\n if (this.props.nextArrow) {\n nextArrow = _react2.default.cloneElement(this.props.nextArrow, _extends({}, nextArrowProps, customProps));\n } else {\n nextArrow = _react2.default.createElement(\n \"button\",\n _extends({ key: \"1\", type: \"button\" }, nextArrowProps),\n \" \",\n \"Next\"\n );\n }\n\n return nextArrow;\n };\n\n return NextArrow;\n}(_react2.default.PureComponent);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-slick/lib/arrows.js\n// module id = 772\n// module chunks = 1","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js\n// module id = 773\n// module chunks = 1","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/json2mq/index.js\n// module id = 774\n// module chunks = 1","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/string-convert/camel2hyphen.js\n// module id = 775\n// module chunks = 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return _react2.default.createElement(\n \"ul\",\n { style: { display: \"block\" } },\n dots\n );\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return _react2.default.createElement(\n \"button\",\n null,\n i + 1\n );\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true\n};\n\nexports.default = defaultProps;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-slick/lib/default-props.js\n// module id = 776\n// module chunks = 1","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/enquire.js/src/index.js\n// module id = 777\n// module chunks = 1","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/enquire.js/src/MediaQueryDispatch.js\n// module id = 778\n// module chunks = 1","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/enquire.js/src/MediaQuery.js\n// module id = 779\n// module chunks = 1","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/enquire.js/src/QueryHandler.js\n// module id = 780\n// module chunks = 1","import React, { PropTypes, PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport Promise from 'bluebird';\nimport { Flags, SyndicatedPlayerLoginOptions, ContentStatus } from 'enums';\nimport WatchPropTypes from 'common/PropTypes';\nimport { canPlayContent, getAccessMethodFromAuthTypes, getContentId } from 'lib/auth';\nimport { isEmpty } from 'lib/util';\nimport * as oneId from 'lib/oneId';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport { updateRoute, analyticsReady, fetchExternalConfig } from 'common/actions/appActions';\nimport { getEventByQuery } from 'common/actions/listingsActions';\nimport { domainCheck } from 'webapp/syndicated/actions';\n\nimport { setStatusFilter, fetchSyndicatedSchedule } from 'common/schedule/actions';\nimport {\n fetchEventOrVideoByQuery,\n createRequestPageAction,\n createReceivePageAction,\n completePageLoad\n} from 'common/page/actions';\nimport {\n getProviders,\n createSmartAdobePassInitializeAction,\n createSmartIpAuthenticationAction\n} from 'common/actions/authenticationActions';\nimport { checkOneIDAuthentication, checkSWIDAuthentication } from 'common/actions/oneIdActions';\nimport bootstrapSelector, { espnPlayerSrcFilesSelector } from 'common/selectors/bootstrapSelector';\nimport playerSelector from 'common/selectors/playerSelector';\nimport { userAuthSelector } from 'common/selectors/authenticationSelectors';\nimport providerSelector from 'common/selectors/providerSelector';\nimport pageSelector, { brandingSelector } from 'common/selectors/pageSelector';\nimport { adobePassEnvSelector, countrySelector, oneIdEnvSelector } from 'common/selectors/appSelector';\nimport heroSelector from 'common/selectors/heroSelector';\nimport routingSelector from 'common/selectors/routingSelector';\nimport SyndicatedPlayer, { domainAuthStatus } from 'webapp/syndicated/SyndicatedPlayer';\nimport SyndicatedScheduleModule from 'webapp/syndicated/SyndicatedScheduleModule';\nimport appConfig from '../../../config';\nimport MessagingContainer from 'webapp/modal/messaging/MessagingContainer';\nimport {\n BAM_PROXY_IFRAME_ID,\n BAM_PROMO_IFRAME_ID,\n BAM_PAYWALL_IFRAME_ID\n} from 'constants';\nimport { createSmartFanAction } from 'common/actions/fanActions';\n\nconst {\n shellVersion,\n secureCdnHost,\n devStyles\n} = appConfig;\n\nconst BASE_HREF = `${secureCdnHost}/redesign/${shellVersion}`;\nlet STYLE_HREF = `${BASE_HREF}/css/secure`;\nif (devStyles) {\n STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nconst { OneIdJs } = oneId;\n\nconst { NEW_WINDOW_MANAGED } = SyndicatedPlayerLoginOptions;\n\nexport class SyndicatedPlayerPageComponent extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n domainAuth: domainAuthStatus.UNKNOWN,\n hovered: false,\n overlayOpened: false\n };\n this.onParentHost = this.onParentHost.bind(this);\n this.onMouseOver = this.onMouseOver.bind(this);\n this.onMouseOut = this.onMouseOut.bind(this);\n this.onOverlayOpened = this.onOverlayOpened.bind(this);\n this.onOverlayClosed = this.onOverlayClosed.bind(this);\n }\n\n componentDidMount() {\n const { referrer = '' } = document;\n this.checkDomain(referrer);\n\n const { dispatch, content, routing: { locationBeforeTransitions } } = this.props;\n const { query = {} } = locationBeforeTransitions || {};\n let newQuery;\n dispatch(checkSWIDAuthentication());\n dispatch(createSmartFanAction());\n if (content) {\n delete query.eventId;\n delete query.gameId;\n delete query.league;\n newQuery = {\n ...query,\n ...getContentId(content)\n };\n } else if (query.id || query.eventId || query.channel || query.network) {\n newQuery = query;\n } else if (!query.partner) {\n newQuery = {\n ...query,\n network: 'espn'\n };\n }\n\n dispatch(updateRoute(newQuery));\n }\n\n onParentHost(href) {\n // this is a fallback when `document.referrer` is empty\n if (!this._domainChecked) {\n this.checkDomain(href);\n }\n }\n\n onMouseOver() {\n if (this.state.overlayOpened) {\n return;\n }\n this.setState({ hovered: true });\n }\n\n onMouseOut() {\n if (this.state.overlayOpened) {\n return;\n }\n this.setState({ hovered: false });\n }\n\n onOverlayOpened() {\n this.setState({ overlayOpened: true });\n this.setState({ hovered: false });\n }\n\n onOverlayClosed() {\n this.setState({ overlayOpened: false });\n }\n\n async checkDomain(href) {\n const { bootstrap: { syndicatedPlayer: { gatedAll = false, gatedIE = true } = {} }, dispatch, params } = this.props;\n const hostResult = /https?:\\/\\/([^\\/:?#]+)/.exec(href);\n const host = ((hostResult && hostResult[1]) || '').replace(/^www\\./, ''); // that's how hostname is stored in CMS\n let canAllowDomain;\n if (gatedAll || window.top === window.self) { // not in iframe, no need for domain check\n this._domainChecked = true;\n canAllowDomain = true;\n } else if (host) {\n this._domainChecked = true;\n const key = window.btoa(host);\n try {\n const { domainAllowed = 'false' } = await dispatch(domainCheck(key));\n canAllowDomain = domainAllowed === 'true';\n } catch (err) { // in the case of unexpected error, we open gate to everyone.\n console.error(err);\n canAllowDomain = true;\n }\n } else if (gatedIE) {\n this._domainChecked = true;\n // partner embeds the player directly with iframe, so can't pass parent location,\n // this should apply only for the old browser\n canAllowDomain = true;\n } else {\n console.warn('syndicated player: host unknown');\n }\n if (canAllowDomain != null) {\n if (canAllowDomain) {\n try {\n // make sure each action doesn't throw, otherwise it exits as soon as it throws\n await Promise.all([\n dispatch(createSmartAdobePassInitializeAction(params)),\n dispatch(createSmartIpAuthenticationAction()),\n dispatch(checkOneIDAuthentication())\n ]);\n } catch (err) {\n console.error(err);\n }\n }\n this.setState({\n domainAuth: canAllowDomain ? domainAuthStatus.ALLOWED : domainAuthStatus.NOT_ALLOWED\n });\n }\n }\n\n render() {\n const { domainAuth, hovered, overlayOpened } = this.state;\n const {\n content,\n canPlayContent: canPlayContentFlag,\n branding,\n location,\n page,\n player,\n country,\n providerInfo,\n adobePassEnv,\n oneIdEnv,\n authStatus,\n espnPlayerSrc: {\n espnPlayerJsUrl,\n espnPlayerCssUrl\n },\n routing: { locationBeforeTransitions },\n messages,\n intl: { formatMessage }\n } = this.props;\n const { query = {} } = locationBeforeTransitions || {};\n const showScheduleModule = (\n country === 'US' &&\n (\n (query[Flags.PARTNER] && query[Flags.SHOW_SCHEDULE_IN_SYNDICATED_PLAYER] !== 'false') ||\n query[Flags.SHOW_SCHEDULE_IN_SYNDICATED_PLAYER] === 'true'\n ) &&\n domainAuth === domainAuthStatus.ALLOWED\n );\n const authRetry = !!query[Flags.AUTH_RETRY];\n const xdomainBlocked = !!query[Flags.XDOMAIN_BLOCKED];\n let errorMessage;\n if (query.partner && country !== 'US') {\n errorMessage = formatMessage(messages['syndicated.player.message.geo']);\n } else if (domainAuth === domainAuthStatus.NOT_ALLOWED) {\n errorMessage = formatMessage(messages['syndicated.player.domain.error']);\n } else if (isEmpty(content)) {\n errorMessage = formatMessage(messages['syndicated.player.message.no-events']);\n } else if (content && content.status === ContentStatus.UPCOMING) {\n errorMessage = formatMessage(messages['syndicated.player.message.upcoming']);\n }\n\n return (\n <div\n style={{ position: 'absolute', width: '100%', height: '100%' }}\n onMouseOver={this.onMouseOver}\n onMouseOut={this.onMouseOut}\n >\n <Helmet\n meta={[\n { name: 'robots', content: 'noindex, nofollow' }\n ]}\n link={[\n { rel: 'stylesheet', href: `${STYLE_HREF}/page.css` },\n { rel: 'stylesheet', href: `${STYLE_HREF}/watch.css` },\n {\n class: '__watch-player-bundle__',\n rel: 'stylesheet',\n href: espnPlayerCssUrl\n }\n ]}\n style={[{\n cssText: `\n body {\n overflow: hidden;\n }\n html, body, #app, .watch-root { width: 100%; height: 100%; margin: 0; padding: 0; }\n .reload:before {\n font-family: ESPNVideoIcons;\n content:\"\\\\e929\";\n padding-right: 4px;\n }\n .vjs-menu li { text-transform: none; }\n\n #watchespn-bam-player {\n background-color: #000 !important;\n height: 100% !important;\n left: 0;\n position: absolute;\n top: 0;\n width: 100% !important;\n z-index: 1000031;\n }\n\n #watchespn-player iframe,\n #watchespn-bam-player iframe{\n width: 100%;\n height: 100%;\n border: none;\n }\n\n .${BAM_PROXY_IFRAME_ID}, .${BAM_PROXY_IFRAME_ID} iframe {\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n border: none;\n }\n\n #${BAM_PROMO_IFRAME_ID} {\n width: 100%;\n height: 506.25px;\n margin-bottom: 10px;\n }\n\n #${BAM_PROMO_IFRAME_ID} iframe,\n #${BAM_PAYWALL_IFRAME_ID} iframe {\n height: 100% !important;\n left: 0;\n position: absolute;\n top: 0;\n width: 100% !important;\n z-index: 1000033;\n }\n `\n }]}\n script={[\n {\n src: OneIdJs[oneIdEnv]\n },\n {\n src: espnPlayerJsUrl,\n async: true\n }\n ]}\n />\n <SyndicatedPlayer\n content={content}\n canPlayContent={canPlayContentFlag}\n branding={branding}\n query={query}\n location={location}\n page={page}\n player={player}\n providerInfo={providerInfo}\n adobePassEnv={adobePassEnv}\n authStatus={authStatus}\n loginOption={NEW_WINDOW_MANAGED}\n domainAuth={domainAuth}\n authRetry={authRetry}\n xdomainBlocked={xdomainBlocked}\n errorMessage={errorMessage}\n onParentHost={this.onParentHost}\n onSocialOpened={this.onOverlayOpened}\n onSocialClosed={this.onOverlayClosed}\n onCaptionOpened={this.onOverlayOpened}\n onCaptionClosed={this.onOverlayClosed}\n />\n {showScheduleModule && (\n <SyndicatedScheduleModule\n location={location}\n hovered={hovered}\n hidden={overlayOpened}\n />\n )}\n\n <MessagingContainer />\n </div>\n );\n }\n}\n\nSyndicatedPlayerPageComponent.propTypes = {\n bootstrap: PropTypes.object,\n dispatch: PropTypes.func,\n params: PropTypes.object,\n content: WatchPropTypes.content,\n canPlayContent: PropTypes.bool,\n branding: PropTypes.object,\n location: PropTypes.object,\n routing: PropTypes.object,\n page: PropTypes.object,\n country: PropTypes.string,\n player: PropTypes.object,\n providerInfo: PropTypes.object,\n adobePassEnv: PropTypes.string,\n oneIdEnv: PropTypes.string,\n authStatus: PropTypes.string,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired,\n espnPlayerSrc: PropTypes.object.isRequired\n};\n\nSyndicatedPlayerPageComponent.defaultProps = {\n content: {},\n providers: []\n};\n\nSyndicatedPlayerPageComponent.loadActions = [\n fetchExternalConfig,\n getProviders,\n (params, { type = 'live' }) => setStatusFilter(type),\n (pathParams, query) => async (dispatch) => {\n const id = 'syndicated-player';\n const name = 'SyndicatedPlayer';\n dispatch(createRequestPageAction(id));\n dispatch(completePageLoad());\n dispatch(analyticsReady({}));\n\n const eventId = query.eventId || query.gameId;\n const { partner, dates, thumbnail } = query;\n let content;\n if (!query.id && partner) {\n if (query.categoryId) {\n content = await dispatch(fetchSyndicatedSchedule(query));\n content = content.filter(({ broadcasts, subcategories }) => {\n const broadcastMatch = (\n broadcasts[0] &&\n broadcasts[0].abbreviation &&\n broadcasts[0].abbreviation.match(/3|_dtc/i)\n );\n\n // Only listings that match the `partner` query param, if provided\n let partnerMatch = true;\n\n if (partner && subcategories[0]) {\n const league = subcategories[0];\n const partnerRegEx = new RegExp(`${partner}|${partner.replace('-', ' ')}`, 'i');\n const codeMatch = (league.code && league.code.match(partnerRegEx));\n const idMatch = (league.id && league.id.toLowerCase() === partner.toLowerCase());\n const nameMatch = !!(league.name && league.name.match(partnerRegEx));\n\n partnerMatch = (codeMatch || idMatch || nameMatch);\n }\n\n return (broadcastMatch && partnerMatch);\n })[0];\n } else {\n content = await dispatch(getEventByQuery({ partner, dates }));\n }\n }\n\n let newQuery;\n delete query.thumbnail;\n if (content) {\n delete query.eventId;\n delete query.gameId;\n delete query.league;\n delete query.partner;\n delete query.dates;\n newQuery = { ...query, id: content.id };\n } else if (eventId) {\n newQuery = { eventId };\n } else if (query.id || query.channel || query.network) {\n newQuery = query;\n } else if (!partner) {\n newQuery = {\n ...query,\n network: 'espn'\n };\n }\n\n let payload;\n if (newQuery) {\n payload = await dispatch(fetchEventOrVideoByQuery(newQuery));\n }\n const { page: { edition, contents: heroContent } = {} } = payload || {};\n if (heroContent && thumbnail) {\n heroContent.imageHref = thumbnail;\n }\n dispatch(createReceivePageAction({\n id,\n name,\n edition,\n heroContent,\n isFinal: true\n }));\n\n if (!partner) {\n dispatch(updateRoute(newQuery));\n }\n }\n];\n\n// it's important to return hero content so that `disableAuthPrompt` gets evaluated correctly in `authenticationAware`\nconst mapStateToProps = (state) => {\n const { schedule } = state;\n const userAuth = userAuthSelector(state);\n const content = heroSelector(state);\n const page = pageSelector(state);\n // this will return `true` when `selectedContent` is empty on purpose\n const canPlayContentFlag = (\n canPlayContent(content, userAuth, false) &&\n !isEmpty(content) &&\n content.status !== ContentStatus.UPCOMING\n );\n const authStatus = getAccessMethodFromAuthTypes(userAuth);\n return {\n bootstrap: bootstrapSelector(state),\n content,\n canPlayContent: canPlayContentFlag,\n branding: brandingSelector(state),\n page: { id: page.id, name: page.name },\n routing: routingSelector(state),\n player: playerSelector(state),\n espnPlayerSrc: espnPlayerSrcFilesSelector(state),\n country: countrySelector(state),\n authStatus,\n providerInfo: providerSelector(state),\n adobePassEnv: adobePassEnvSelector(state),\n oneIdEnv: oneIdEnvSelector(state),\n selectedTab: schedule.statusFilterValue,\n listings: schedule.listings || [],\n loading: schedule.loading\n };\n};\n\nexport default connect(mapStateToProps)(injectIntl(SyndicatedPlayerPageComponent));\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/SyndicatedPlayerPage.js","export default {\n container: {\n position: 'absolute',\n top: 0,\n width: '100%',\n height: '100%',\n color: '#fff'\n },\n dialog: {\n position: 'relative',\n margin: '0 auto',\n padding: 10,\n top: '50%',\n transform: 'translateY(-50%)',\n width: '100%',\n maxWidth: 400,\n height: 'auto',\n color: '#fff',\n lineHeight: 1.3,\n fontFamily: '-apple-system, \"Roboto\", Helvetica, Arial, sans-serif'\n },\n dialogRow: {\n position: 'relative',\n marginTop: 10\n },\n alignCenter: {\n textAlign: 'center'\n },\n logo: {\n // you need this `width: auto`, otherwise some magic script in the page shell will set the `width` and `height` attribute\n // on the `img` element with the original size\n width: 'auto',\n height: 20\n },\n providerListCol: {\n float: 'left'\n },\n providerList: {\n fontSize: 14,\n width: 200\n },\n continueBtn: {\n height: 30,\n marginTop: 10\n },\n standAlone: {\n maxWidth: 320,\n minWidth: 120,\n background: '#06c',\n border: 0,\n borderRadius: 4,\n color: '#fff',\n position: 'relative',\n textAlign: 'center',\n whiteSpace: 'nowrap',\n padding: '0 15px',\n fontSize: 11,\n width: 180\n },\n clear: {\n clear: 'left'\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/ProviderDialog/style.js","import React, { PropTypes, PureComponent } from 'react';\nimport injectIntl, { intlShape } from 'common/injectIntl';\nimport LinkWithFlags from 'common/LinkWithFlags';\nimport styles from './style';\n\nconst DEF_PROVIDER_VALUE = 'default';\n\nclass ProviderDialog extends PureComponent {\n constructor(props) {\n super(props);\n this.onProviderChange = this.onProviderChange.bind(this);\n this.onContinueClick = this.onContinueClick.bind(this);\n this.state = {\n provider: DEF_PROVIDER_VALUE\n };\n }\n\n onProviderChange(event) {\n const provider = event.target.value;\n this.setState({\n provider\n });\n }\n\n onContinueClick(event) {\n const { provider } = this.state;\n const { providers, onContinueClick } = this.props;\n\n const providerInfo = providers.filter(({ abbreviation }) => abbreviation === provider)[0];\n if (providerInfo && onContinueClick) {\n onContinueClick(event, providerInfo);\n }\n }\n\n render() {\n const { provider } = this.state;\n const {\n providers,\n branding: {\n name: brandingName,\n logoUrl: brandingLogoUrl\n },\n isAuthenticated,\n authRetry,\n xdomainBlocked,\n onReloadClick,\n messages,\n intl: { formatMessage }\n } = this.props;\n const centeredRowStyle = { ...styles.dialogRow, ...styles.alignCenter };\n\n const tier1Providers = providers.filter(({ tier }) => tier === 1);\n const tier2Providers = providers.filter(({ tier }) => tier !== 1);\n\n // build provider list\n const providerOptions = tier1Providers.concat(tier2Providers).map(({ name, abbreviation }) => (\n <option value={abbreviation}>{name}</option>\n ));\n providerOptions.unshift(\n <option value={DEF_PROVIDER_VALUE}>\n {`----- ${formatMessage(messages['feedback.provider.default'])} -----`}\n </option>\n );\n\n const linkTo = `/mvpd/login?mvpd=${provider}&syndicated=true`;\n const linkTarget = '_blank';\n\n const xdomainMessage = xdomainBlocked ?\n formatMessage(messages['syndicated.player.dialog.message.xdomain']) :\n '';\n\n const reloadViewMessage = authRetry ?\n formatMessage(messages['syndicated.player.dialog.message.auth-retry']) :\n formatMessage(messages['syndicated.player.dialog.message.auth-success']);\n\n return (\n <div className=\"playback-dialog-container\" style={styles.container}>\n <div className=\"playback-dialog\" style={styles.dialog}>\n <div style={styles.alignCenter}>\n <img\n style={styles.logo}\n src={brandingLogoUrl}\n alt={brandingName}\n />\n </div>\n {!isAuthenticated && !authRetry ? (\n <div>\n <div style={styles.dialogRow}>\n <p>\n {formatMessage(messages['syndicated.player.dialog'])}\n </p>\n </div>\n <div style={styles.dialogRow}>\n <div style={styles.providerListCol}>\n {formatMessage(messages['provider.dialog.title'])}: \n </div>\n <div style={styles.providerListCol}>\n <select\n id=\"providerList\"\n defaultValue={provider}\n style={styles.providerList}\n onChange={this.onProviderChange}\n >\n {providerOptions}\n </select>\n <div style={styles.continueBtn}>\n {(provider !== DEF_PROVIDER_VALUE) && (\n <LinkWithFlags\n to={linkTo}\n target={linkTarget}\n onClick={this.onContinueClick}\n >\n <button\n className=\"button med stand-alone\"\n style={styles.standAlone}\n >\n {formatMessage(messages['syndicated.player.dialog.label.continute'])}\n </button>\n </LinkWithFlags>\n )}\n </div>\n </div>\n <div style={styles.clear} />\n </div>\n </div>\n ) : (\n <div>\n <div style={centeredRowStyle}>\n <div>{reloadViewMessage}</div><br />\n <div>{xdomainMessage}</div>\n </div>\n {!authRetry && <div style={centeredRowStyle}>\n <button\n className=\"button lg stand-alone reload\"\n onClick={onReloadClick}\n style={styles.standAlone}\n >\n {formatMessage(messages['syndicated.player.dialog.label.recheck'])}\n </button>\n </div>}\n </div>\n )}\n </div>\n </div>\n );\n }\n}\n\nProviderDialog.propTypes = {\n providers: PropTypes.array.isRequired,\n branding: PropTypes.object.isRequired,\n isAuthenticated: PropTypes.bool.isRequired,\n authRetry: PropTypes.bool,\n xdomainBlocked: PropTypes.bool,\n onContinueClick: PropTypes.func.isRequired,\n onReloadClick: PropTypes.func.isRequired,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nexport default injectIntl(ProviderDialog);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/ProviderDialog/index.js","export const HEADER_HEIGHT = 40;\nexport const SOURCE_LOGO_WIDTH = 60;\nexport const BRANDING_LOGO_WIDTH = 100;\nexport const PROVIDER_LOGO_WIDTH = 100;\n\nexport default {\n header: {\n position: 'absolute',\n background: 'linear-gradient(to bottom, rgba(0,0,0,1) 0%,rgba(0,0,0,0) 100%)',\n width: '100%',\n height: HEADER_HEIGHT,\n zIndex: 1000032,\n transition: 'transform 0.2s ease-out',\n color: '#fff',\n fontSize: 12,\n pointerEvents: 'none',\n paddingBottom: 5,\n fontFamily: '-apple-system, \"Roboto\", Helvetica, Arial, sans-serif'\n },\n show: {\n transform: 'translateY(0)'\n },\n hide: {\n transform: `translateY(-${HEADER_HEIGHT}px)`\n },\n logo: {\n float: 'left',\n width: SOURCE_LOGO_WIDTH,\n height: '100%',\n padding: '0 10px'\n },\n title: {\n height: '100%',\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n marginLeft: SOURCE_LOGO_WIDTH,\n marginRight: BRANDING_LOGO_WIDTH\n },\n titleText: {\n verticalAlign: 'middle'\n },\n branding: {\n float: 'right',\n width: BRANDING_LOGO_WIDTH,\n height: '100%',\n padding: '0 10px',\n pointerEvents: 'all'\n },\n provider: {\n float: 'right',\n width: PROVIDER_LOGO_WIDTH,\n height: '100%',\n paddingRight: 10,\n pointerEvents: 'all',\n whiteSpace: 'nowrap',\n transition: 'width 0.2s'\n },\n logoImg: {\n verticalAlign: 'middle',\n width: 'auto',\n height: 'auto',\n maxWidth: '100%',\n maxHeight: '100%',\n transition: 'width 0.2s'\n },\n signout: {\n display: 'inline-block',\n color: '#fff',\n width: 0,\n paddingLeft: 20,\n overflow: 'hidden',\n verticalAlign: 'middle'\n },\n separator: {\n verticalAlign: 'middle'\n },\n helper: {\n display: 'inline-block',\n height: '100%',\n verticalAlign: 'middle'\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/PlayerOverlay/style.js","import React, { PropTypes, PureComponent } from 'react';\nimport selectn from 'selectn';\nimport { Api } from 'enums';\nimport { queryString } from 'lib/format';\nimport canUseDOM from 'lib/util/canUseDOM'\n;import injectIntl, { intlShape } from 'common/injectIntl';\nimport styles from './style';\n\nconst { Page: { EVENT_QUERY_KEYS } } = Api;\n\nclass PlayerOverlay extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n providerHovered: false,\n signoutWidth: undefined\n };\n this.onLogoutClick = this.onLogoutClick.bind(this);\n this.onProviderMouseOver = this.onProviderMouseOver.bind(this);\n this.onProviderMouseOut = this.onProviderMouseOut.bind(this);\n }\n\n componentDidMount() {\n this.setSignoutWidth();\n }\n\n componentDidUpdate() {\n this.setSignoutWidth();\n }\n\n onLogoutClick(event) {\n event.preventDefault();\n this.props.handleLogout();\n }\n\n onProviderMouseOver() {\n this.setState({ providerHovered: true });\n }\n\n onProviderMouseOut() {\n this.setState({ providerHovered: false });\n }\n\n setSignoutWidth() {\n if (this.signout && this.state.signoutWidth === undefined) {\n this.setState({ signoutWidth: this.signout.offsetWidth + 30 });\n }\n }\n\n render() {\n const { providerHovered, signoutWidth } = this.state;\n const {\n show,\n name,\n source: {\n name: sourceName,\n logoUrl: sourceLogoUrl\n },\n branding: {\n name: brandingName,\n logoUrl: brandingLogoUrl\n },\n provider,\n location: { query },\n messages,\n intl: { formatMessage }\n } = this.props;\n\n const newQuery = { ...query };\n Object.keys(newQuery).forEach(key => {\n if (EVENT_QUERY_KEYS.indexOf(key) === -1) {\n delete newQuery[key];\n }\n if (key === 'id' && (newQuery.network || newQuery.channel)) {\n delete newQuery[key];\n }\n });\n const search = queryString(newQuery);\n let watchLink = `/watch/player${search}`;\n if (canUseDOM) { // force http\n watchLink = `http://${window.location.host}${watchLink}`;\n }\n\n\n const style = {\n ...styles.header,\n ...styles[show ? 'show' : 'hide']\n };\n\n const titleStyle = sourceLogoUrl ? styles.title : {\n ...styles.title,\n marginLeft: 10\n };\n\n const { name: providerName } = provider;\n const providerLogoUrl = selectn('images.colorWithNegativeBackground.href', provider) ||\n selectn('images.logo.href', provider) || '';\n const providerLink = selectn('links.web.href', provider) || '/watch';\n\n let signoutStyle = {\n ...styles.signout,\n display: 'none'\n };\n if (signoutWidth === undefined) {\n signoutStyle = {\n ...styles.signout,\n width: 'auto',\n visibility: 'hidden'\n };\n } else if (providerHovered) {\n signoutStyle = {\n ...styles.signout,\n width: signoutWidth - 5\n };\n }\n\n return (\n <div className=\"player-header\" style={style}>\n {sourceLogoUrl && (\n <div style={styles.logo}>\n <span style={styles.helper} />\n <img src={sourceLogoUrl} alt={sourceName} style={styles.logoImg} />\n </div>\n )}\n {providerLogoUrl ? (\n <div\n style={providerHovered ? {\n ...styles.provider,\n width: styles.provider.width + signoutWidth\n } : styles.provider}\n onMouseOver={this.onProviderMouseOver}\n onMouseOut={this.onProviderMouseOut}\n >\n <span style={styles.helper} />\n <a\n href={providerLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n alt={providerName}\n >\n <img\n src={providerLogoUrl}\n alt={providerName}\n style={providerHovered ? {\n ...styles.logoImg,\n maxWidth: `calc(100% - ${signoutWidth}px)`\n } : styles.logoImg}\n />\n </a>\n <span\n style={providerHovered ? styles.separator : {\n ...styles.separator,\n display: 'none'\n }}\n > | </span>\n <a\n ref={el => { this.signout = el; }}\n style={signoutStyle}\n onClick={this.onLogoutClick}\n >{formatMessage(messages['signout.label'])}</a>\n </div>\n ) : (\n <div\n style={{ ...styles.provider, marginTop: 10 }}\n >\n <span\n style={styles.separator}\n > | </span>\n <a\n ref={el => { this.signout = el; }}\n style={{\n ...styles.signout,\n width: signoutWidth - 5\n }}\n onClick={this.onLogoutClick}\n >{formatMessage(messages['signout.label'])}</a>\n </div>\n )}\n <div style={styles.branding}>\n <span style={styles.helper} />\n <a\n href={watchLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title={formatMessage(messages['syndicated.player.branding.tooltip'], {\n brandingName\n })}\n >\n <img src={brandingLogoUrl} alt={brandingName} style={styles.logoImg} />\n </a>\n </div>\n <div style={titleStyle} title={name}>\n <span style={styles.helper} />\n <span style={styles.titleText}>{name}</span>\n </div>\n </div>\n );\n }\n}\n\nPlayerOverlay.defaultProps = {\n show: false,\n source: {},\n branding: {},\n provider: {}\n};\n\nPlayerOverlay.propTypes = {\n show: PropTypes.bool,\n name: PropTypes.string,\n source: PropTypes.object,\n branding: PropTypes.object,\n provider: PropTypes.object,\n location: PropTypes.object,\n handleLogout: PropTypes.func.isRequired,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nexport default injectIntl(PlayerOverlay);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/PlayerOverlay/index.js","export default {\n container: {\n position: 'relative',\n width: '100%',\n height: '100%'\n },\n player: {\n position: 'relative',\n width: '100%',\n height: '100%'\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/ConnectedPlayer/style.js","import React, { PropTypes, PureComponent } from 'react';\nimport _throttle from 'lodash/throttle';\nimport appConfig from 'config';\nimport WatchPropTypes from 'common/PropTypes';\nimport connectPlayer from 'webapp/player/connectPlayer';\nimport PlayerOverlay from '../PlayerOverlay';\nimport styles from './style';\nimport { HEADER_HEIGHT } from '../PlayerOverlay/style';\n\nconst {\n secureCdnHost\n} = appConfig;\n\nconst networkToImageName = { espn1: 'espn' };\n\nclass Player extends PureComponent {\n constructor(props) {\n super(props);\n this.onPlayerMouseMove = this.onPlayerMouseMove.bind(this);\n this.processMouseMove = _throttle(this.processMouseMove.bind(this), 100);\n this.state = {\n showOverlay: false\n };\n }\n\n onPlayerMouseMove(event) {\n if (this.props.socialOpened || this.props.captionOpened) {\n return;\n }\n const { nativeEvent: { pageY } } = event;\n this.processMouseMove(pageY);\n }\n\n processMouseMove(pageY) {\n const showOverlay = pageY <= HEADER_HEIGHT;\n if (this.state.showOverlay !== showOverlay) {\n this.setState({ showOverlay });\n }\n }\n\n render() {\n const {\n location,\n branding,\n provider,\n selectedStream,\n playingStream,\n render,\n handleLogout\n } = this.props;\n\n const stream = playingStream || selectedStream || {};\n const { name, source: { id: sourceId, name: sourceOrig = '' } = {} } = stream;\n const source = (sourceId || sourceOrig).toLowerCase();\n const networkLogoName = networkToImageName[source] || source;\n const logoUrl = networkLogoName ?\n `${secureCdnHost}/watchespn/images/web/network_logos/channel_logo_${networkLogoName}_2x.png` : null;\n const sourceObj = {\n name: sourceId || source,\n logoUrl\n };\n\n return (\n <div\n ref={(el) => { this.container = el; }}\n className=\"player-container\"\n style={render ? styles.container : { display: 'none' }}\n onMouseMove={render && this.onPlayerMouseMove}\n >\n {render && (\n <PlayerOverlay\n show={this.state.showOverlay}\n name={name}\n source={sourceObj}\n branding={branding}\n location={location}\n provider={provider}\n handleLogout={handleLogout}\n />\n )}\n <div\n ref=\"playerContainer\"\n id=\"watchespn-player-container\"\n style={styles.player}\n />\n </div>\n );\n }\n}\n\nPlayer.propTypes = {\n branding: PropTypes.object,\n selectedStream: WatchPropTypes.stream,\n playingStream: WatchPropTypes.stream,\n location: PropTypes.object,\n provider: PropTypes.object,\n render: PropTypes.bool,\n socialOpened: PropTypes.bool,\n captionOpened: PropTypes.bool,\n handleLogout: PropTypes.func\n};\n\nexport default connectPlayer(Player);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/ConnectedPlayer/index.js","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/throttle.js\n// module id = 784\n// module chunks = 1","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/now.js\n// module id = 785\n// module chunks = 1","export default {\n container: {\n position: 'absolute',\n zIndex: 0,\n width: '100%',\n height: '100%',\n background: '#000'\n },\n dialogContainer: {\n width: '100%',\n height: '100%'\n },\n message: {\n position: 'absolute',\n margin: '0 auto',\n background: 'rgba(0,0,0,0.7)',\n padding: 10,\n top: '50%',\n transform: 'translateY(-50%)',\n width: '100%',\n height: 'auto',\n color: '#fff',\n lineHeight: 1.3,\n textAlign: 'center'\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/SyndicatedPlayer/style.js","export default {\n container: {\n position: 'relative',\n zIndex: 1,\n top: 0,\n left: '80%',\n float: 'right',\n width: '80%',\n height: '100%',\n transition: 'left 0.3s',\n WebkitTransition: 'left 0.3s'\n },\n opened: {\n left: 0\n },\n scheduleContainer: {\n position: 'relative',\n top: 0,\n width: '100%',\n height: '100%',\n background: '#fff',\n padding: 20,\n overflowY: 'auto'\n },\n toggleButton: {\n position: 'absolute',\n left: -90,\n top: 'calc(50% - 25px)',\n width: 90,\n height: 50,\n display: 'block',\n opacity: 1,\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n borderRadius: '30px 0 0 30px',\n padding: 10,\n textAlign: 'center',\n transition: 'opacity 0.2s',\n WebkitTransition: 'opacity 0.2s',\n color: '#fff'\n },\n toggleButtonHide: {\n opacity: 0\n },\n toggleButtonHidden: {\n display: 'none'\n },\n toggleButtonLabel: {\n fontSize: 12,\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)'\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/SyndicatedScheduleModule/style.js","import React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport ScheduleCategoryContainer from 'common/schedule/ScheduleCategoryContainer';\nimport FilterGroupContainer from 'common/schedule/FilterGroupContainer';\nimport { userAuthSelector } from 'common/selectors/authenticationSelectors';\nimport { fetchSchedule } from 'common/schedule/actions';\nimport styles from './style';\n\nclass SyndicatedScheduleModule extends Component {\n constructor(props) {\n super(props);\n this.state = {\n init: true,\n opened: false\n };\n this.fetchAction = fetchSchedule;\n this.onToggleClick = this.onToggleClick.bind(this);\n }\n\n onToggleClick() {\n const { location: { query } } = this.props;\n const state = { opened: !this.state.opened };\n if (this.state.init) {\n this.props.dispatch(this.fetchAction({ type: 'live', ...query }));\n state.init = false;\n }\n this.setState(state);\n }\n\n render() {\n const {\n location,\n location: { query: { partner } },\n listings: listingsArg,\n loading,\n userAuth,\n selectedTab,\n isMobile,\n hovered,\n hidden\n } = this.props;\n const { opened } = this.state;\n const tabClassname = classNames('watch-tab', { loading });\n const label = opened ? 'Close' : 'Schedule';\n const containerStyle = opened ? {\n ...styles.container,\n ...styles.opened\n } : styles.container;\n const buttonStyle = !opened && !hovered ? {\n ...styles.toggleButton,\n ...styles.toggleButtonHide,\n ...(hidden ? styles.toggleButtonHidden : {})\n } : styles.toggleButton;\n\n let listings = listingsArg;\n\n listings = listings.filter(({ subcategories }) => {\n // Only listings that match the `partner` query param, if provided\n let partnerMatch = false;\n\n if (partner && subcategories[0]) {\n const league = subcategories[0];\n const partnerRegEx = new RegExp(`${partner}|${partner.replace('-', ' ')}`, 'i');\n const codeMatch = (league.code && league.code.match(partnerRegEx));\n const idMatch = (league.id && league.id.toLowerCase() === partner.toLowerCase());\n const nameMatch = !!(league.name && league.name.match(partnerRegEx));\n\n partnerMatch = (codeMatch || idMatch || nameMatch);\n }\n\n return (partnerMatch);\n });\n\n return (\n <div style={containerStyle}>\n <a style={buttonStyle} onClick={this.onToggleClick}>\n <span style={styles.toggleButtonLabel}>{label}</span>\n </a>\n <article className=\"watch-schedule\" style={styles.scheduleContainer}>\n <FilterGroupContainer\n location={location}\n showSportOptions={false}\n showNetworkOptions={false}\n fetchAction={this.fetchAction}\n />\n <div className=\"content\" style={selectedTab !== 'upcoming' ? { paddingTop: 20 } : {}}>\n <div id=\"tabLive\" className={tabClassname} style={{ display: 'block' }}>\n <ScheduleCategoryContainer\n listings={listings}\n userAuth={userAuth}\n selectedTab={selectedTab}\n isMobile={isMobile}\n startDateValue={location.query.startDate}\n showSectionCaption={false}\n watchRegion={location.query.watchRegion}\n />\n </div>\n </div>\n </article>\n </div>\n );\n }\n}\n\nSyndicatedScheduleModule.propTypes = {\n dispatch: PropTypes.func,\n location: PropTypes.object,\n listings: PropTypes.array,\n loading: PropTypes.bool,\n selectedTab: PropTypes.oneOf(['live', 'upcoming', 'replay']),\n userAuth: PropTypes.array,\n isMobile: PropTypes.bool,\n hovered: PropTypes.bool,\n hidden: PropTypes.bool\n};\n\nconst mapStateToProps = (state) => {\n const { app, schedule } = state;\n const userAuth = userAuthSelector(state);\n return {\n userAuth,\n selectedTab: schedule.statusFilterValue,\n listings: schedule.listings || [],\n loading: schedule.loading,\n isMobile: app.isMobile\n };\n};\n\nexport default connect(mapStateToProps)(SyndicatedScheduleModule);\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/syndicated/SyndicatedScheduleModule/index.js","import React, { PropTypes, PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport Helmet from 'react-helmet';\nimport { queryString } from 'lib/format';\nimport appConfig from '../../../config';\nimport SyndicatedPlayerAPIProxy from 'webapp/syndicated/SyndicatedPlayerAPIProxy';\nimport { espnPlayerSrcFilesSelector } from 'common/selectors/bootstrapSelector';\n\nconst {\n shellVersion,\n cdnHost,\n devStyles\n} = appConfig;\n\nconst BASE_HREF = `${cdnHost}/redesign/${shellVersion}`;\nlet STYLE_HREF = `${BASE_HREF}/css`;\nif (devStyles) {\n STYLE_HREF = 'http://localhost:8080/static/css';\n}\n\nconst { PARTNER, DOMAIN } = SyndicatedPlayerAPIProxy;\n\nconst containerStyle = {\n padding: 20\n};\n\nconst playerContainerStyle = {\n marginTop: 20\n};\n\nlet iframeStyle = {\n width: 640,\n height: 360\n};\n\nclass SyndicatedPlayerExample extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n id: '',\n gameId: '',\n league: '',\n network: '',\n position: 0,\n currentTime: 0,\n thumbnail: ''\n };\n this.playVideo = this.playVideo.bind(this);\n this.pauseVideo = this.pauseVideo.bind(this);\n this.muteStream = this.muteStream.bind(this);\n this.unMuteStream = this.unMuteStream.bind(this);\n this.setVideoPosition = this.setVideoPosition.bind(this);\n this.getVideoPosition = this.getVideoPosition.bind(this);\n this.enterFullScreen = this.enterFullScreen.bind(this);\n this.selectById = this.selectById.bind(this);\n this.selectByEventId = this.selectByEventId.bind(this);\n this.selectEventByNetworkName = this.selectEventByNetworkName.bind(this);\n this.selectEventByGameIdLeague = this.selectEventByGameIdLeague.bind(this);\n this.recheckAccess = this.recheckAccess.bind(this);\n this.adobePassLogout = this.adobePassLogout.bind(this);\n this.getAffiliate = this.getAffiliate.bind(this);\n this.getSelectedProvider = this.getSelectedProvider.bind(this);\n this.getAuthenticationStatus = this.getAuthenticationStatus.bind(this);\n this.onIdChange = this.onIdChange.bind(this);\n this.onEventIdChange = this.onEventIdChange.bind(this);\n this.onGameIdChange = this.onGameIdChange.bind(this);\n this.onLeagueChange = this.onLeagueChange.bind(this);\n this.onNetworkChange = this.onNetworkChange.bind(this);\n this.onPositionChange = this.onPositionChange.bind(this);\n this.onThumbnailChange = this.onThumbnailChange.bind(this);\n this.onPostMessage = this.onPostMessage.bind(this);\n }\n\n componentDidMount() {\n window.addEventListener('message', this.onPostMessage);\n }\n\n onPostMessage(event) {\n const { location: { query: { bridge = true } = {} } } = this.props;\n\n if (bridge === 'false') { // simulate iframe embed only mode\n return;\n }\n\n if (typeof event.data !== 'string') {\n return;\n }\n\n let data;\n try {\n const prefix = `${PARTNER}:${DOMAIN}:`;\n data = JSON.parse(event.data.substr(prefix.length));\n } catch (err) {\n data = {};\n }\n\n const { type, payload } = data;\n\n if (!type) {\n return;\n }\n\n const [partner, domain, apiName] = type.split(':');\n\n if (partner !== PARTNER) {\n return;\n }\n\n if (domain === DOMAIN) {\n switch (apiName) {\n case 'bridgeReady':\n // send the parent location to the iframe player in case\n // `document.referrer` is not available for domain check.\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.PARENT_HOST,\n payload: [window.location.href]\n });\n break;\n case 'getVideoPosition':\n this.setState({ currentTime: payload });\n break;\n case 'getAffiliate':\n case 'getSelectedProvider':\n case 'getAuthenticationStatus':\n console.log(apiName, payload); // eslint-disable-line no-console\n break;\n case 'authenticationSuccessful':\n case 'recheckAccess': {\n let url = (payload && payload.href) || this.iframe.src;\n const [host, searchStr] = url.split('?');\n if (searchStr) {\n const newSearchStr = searchStr.replace(/&autoStart(=[^&]*)?|^autoStart(=[^&]*)?&?/, '');\n url = `${host}?${newSearchStr}`;\n }\n this.iframe.src = url;\n break;\n }\n default:\n break;\n }\n }\n }\n\n onIdChange(event) {\n this.setState({ id: event.target.value });\n }\n\n onEventIdChange(event) {\n this.setState({ eventId: event.target.value });\n }\n\n onGameIdChange(event) {\n this.setState({ gameId: event.target.value });\n }\n\n onLeagueChange(event) {\n this.setState({ league: event.target.value });\n }\n\n onThumbnailChange(event) {\n this.setState({ thumbnail: event.target.value });\n }\n\n onNetworkChange(event) {\n this.setState({ network: event.target.value });\n }\n\n onPositionChange(event) {\n this.setState({ position: parseInt(event.target.value, 10) });\n }\n\n setVideoPosition() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.SET_CURRENT_TIME,\n payload: [this.state.position]\n });\n }\n\n getVideoPosition() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.GET_CURRENT_TIME\n });\n }\n\n getAffiliate() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.GET_AFFILIATE\n });\n }\n\n getSelectedProvider() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.GET_SELECTED_PROVIDER\n });\n }\n\n getAuthenticationStatus() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.GET_AUTH_STATUS\n });\n }\n\n playVideo() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.PLAY\n });\n }\n\n pauseVideo() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.PAUSE\n });\n }\n\n muteStream() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.MUTE\n });\n }\n\n unMuteStream() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.UNMUTE\n });\n }\n\n enterFullScreen() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.ENTER_FULLSCREEN\n });\n }\n\n selectById() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.SELECT_BY_ID,\n payload: [this.state.id, this.autoPlayForSelectById.checked, this.state.thumbnail]\n });\n }\n\n selectByEventId() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.SELECT_BY_EVENT_ID,\n payload: [this.state.eventId, this.autoPlayForSelectByEventId.checked, this.state.thumbnail]\n });\n }\n\n selectEventByNetworkName() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.SELECT_EVENT_BY_NETWORK_NAME,\n payload: [this.state.network, this.state.thumbnail]\n });\n }\n\n selectEventByGameIdLeague() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.SELECT_EVENT_BY_GAME_ID,\n payload: [this.state.gameId, this.state.league, this.state.thumbnail]\n });\n }\n\n recheckAccess() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.RECHECK_ACCESS\n });\n }\n\n adobePassLogout() {\n this.callAPI({\n type: SyndicatedPlayerAPIProxy.ADOBE_PASS_LOGOUT\n });\n }\n\n callAPI(data) {\n const originResult = /https?:\\/\\/[^\\/]+/.exec(this.iframe.src);\n const origin = (originResult && originResult[0]) || '*';\n this.iframe.contentWindow.postMessage(JSON.stringify(data), origin);\n }\n\n render() {\n const {\n id,\n eventId,\n gameId,\n league,\n network,\n position,\n currentTime,\n thumbnail\n } = this.state;\n const {\n location: { query },\n espnPlayerSrc: {\n espnPlayerJsUrl,\n espnPlayerCssUrl\n }\n } = this.props;\n const { responsive, origin = '' } = query;\n let { width, height } = query;\n if (responsive) {\n width = '100%';\n height = '56.25vw';\n } else if (width && !height) {\n height = Math.round(width * (9 / 16));\n } else if (!width && height) {\n width = Math.round(height * (16 / 9));\n }\n iframeStyle = width && height ? { ...iframeStyle, width, height } : iframeStyle;\n const ifmQuery = { ...query };\n delete ifmQuery.bridge;\n delete ifmQuery.origin;\n const qs = queryString(ifmQuery);\n\n return (\n <div style={containerStyle}>\n <Helmet\n meta={[\n { name: 'robots', content: 'noindex, nofollow' }\n ]}\n link={[\n { rel: 'stylesheet', href: `${STYLE_HREF}/page.css` },\n {\n class: '__watch-player-bundle__',\n rel: 'stylesheet',\n href: espnPlayerCssUrl\n }\n ]}\n style={[{\n cssText: `\n body {\n font-family: sans-serif;\n }\n h1 { font-size: 24px; }\n h2 { font-size: 20px; }\n h3 { font-size: 18px; }\n `\n }]}\n script={[\n {\n src: espnPlayerJsUrl,\n async: true\n }\n ]}\n />\n <h1>Syndicated Player Test</h1>\n <div>\n <button onClick={this.playVideo}>playVideo</button>\n <button onClick={this.pauseVideo}>pauseVideo</button>\n <button onClick={this.muteStream}>muteStream</button>\n <button onClick={this.unMuteStream}>unMuteStream</button>\n <button onClick={this.enterFullScreen}>enterFullScreen</button>\n </div>\n <div>\n <button onClick={this.setVideoPosition}>setVideoPosition</button>\n <input type=\"text\" value={position} onChange={this.onPositionChange} />\n <button onClick={this.getVideoPosition}>getVideoPosition</button>\n <input type=\"text\" value={currentTime} readOnly />\n </div>\n <div>\n <button onClick={this.selectById}>selectById</button>\n <input type=\"text\" value={id} onChange={this.onIdChange} />\n <label htmlFor=\"autoplay\">\n Autoplay:\n <input\n ref={input => { this.autoPlayForSelectById = input; }}\n id=\"autoplay\"\n type=\"checkbox\"\n defaultChecked\n style={{ display: 'inline-block' }}\n />\n </label>\n <span>Thumbnail: </span><input type=\"text\" value={thumbnail} onChange={this.onThumbnailChange} />\n </div>\n <div>\n <button onClick={this.selectByEventId}>selectByEventId</button>\n <input type=\"text\" value={eventId} onChange={this.onEventIdChange} />\n <label htmlFor=\"autoplay\">\n Autoplay:\n <input\n ref={input => { this.autoPlayForSelectByEventId = input; }}\n id=\"autoplay\"\n type=\"checkbox\"\n defaultChecked\n style={{ display: 'inline-block' }}\n />\n </label>\n <span>Thumbnail: </span><input type=\"text\" value={thumbnail} onChange={this.onThumbnailChange} />\n </div>\n <div>\n <button onClick={this.selectEventByNetworkName}>selectEventByNetworkName</button>\n <input type=\"text\" value={network} onChange={this.onNetworkChange} />\n </div>\n <div>\n <button onClick={this.selectEventByGameIdLeague}>selectEventByGameIdLeague</button>\n <span>GameId: </span><input type=\"text\" value={gameId} onChange={this.onGameIdChange} />\n <span>League: </span><input type=\"text\" value={league} onChange={this.onLeagueChange} />\n <span>Thumbnail: </span><input type=\"text\" value={thumbnail} onChange={this.onThumbnailChange} />\n </div>\n <div>\n <button onClick={this.recheckAccess}>recheckAccess</button>\n <button onClick={this.adobePassLogout}>adobePassLogout</button>\n </div>\n <div>\n <button onClick={this.getAffiliate}>getAffiliate</button>\n <button onClick={this.getSelectedProvider}>getSelectedProvider</button>\n <button onClick={this.getAuthenticationStatus}>getAuthenticationStatus</button>\n </div>\n <div style={playerContainerStyle}>\n <iframe\n ref={iframe => { this.iframe = iframe; }}\n id=\"syndicated_player\"\n src={`${origin}/watch/syndicated/player${qs}`}\n frameBorder=\"0\"\n allowFullScreen\n style={iframeStyle}\n />\n </div>\n </div>\n );\n }\n}\n\nSyndicatedPlayerExample.propTypes = {\n location: PropTypes.object,\n espnPlayerSrc: PropTypes.object.isRequired\n};\n\nconst mapStateToProps = (state) => ({\n espnPlayerSrc: espnPlayerSrcFilesSelector(state)\n});\n\nexport default connect(mapStateToProps)(SyndicatedPlayerExample);\n\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/page/SyndicatedPlayerExample.js","import React, { PropTypes, Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport { connect, Provider } from 'react-redux';\nimport { push } from 'react-router-redux';\nimport Helmet from 'react-helmet';\nimport { Flags, AppEnvs, RenderTemplateTypes } from 'enums';\nimport canUseDOM from 'lib/util/canUseDOM';\nimport {\n fetchExternalConfig,\n analyticsReady,\n contentUnSelect,\n streamUnSelect,\n mediaQuery\n} from 'common/actions/appActions';\nimport { scoreAll } from 'common/actions/scoringActions';\nimport { intlShape } from 'common/injectIntl';\nimport { clearPage, createPageShellInitAction, refreshBuckets } from 'common/page/actions';\nimport { createClearPlayingStreamAction, createResetPlayerAction, createFeedResetAction } from 'webapp/player/actions';\nimport connectAdInitializer from 'common/ads/connectAdInitializer';\nimport bootstrapSelector, { espnPlayerSrcFilesSelector } from 'common/selectors/bootstrapSelector';\nimport appSelector, { isSecureSelector, isIntlSelector } from 'common/selectors/appSelector';\nimport { bamSessionTokenSelector } from 'common/selectors/authenticationSelectors';\nimport playerSelector from 'common/selectors/playerSelector';\nimport routingSelector from 'common/selectors/routingSelector';\nimport pageSelector from 'common/selectors/pageSelector';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport BrandingContainer from 'webapp/branding/BrandingContainer';\nimport ProviderModal from 'webapp/modal/authn/ProviderModal';\nimport MessagingContainer from 'webapp/modal/messaging/MessagingContainer';\nimport { addQueryToUrl } from 'lib/format';\nimport { subscribeToStore } from 'lib/observe';\nimport scoringObserver from 'lib/observe/scoringObserver';\nimport trackingObserver from 'lib/observe/trackingObserver';\nimport { uiLoadingStart } from 'lib/ui/loading';\nimport { get } from 'lib/util/localStorage';\nimport {\n loadingImageUrl,\n secureLoadingImageUrl,\n loadingImageUrlDark,\n BAM_PROXY_IFRAME_ID,\n BAM_PROMO_IFRAME_ID,\n BAM_PAYWALL_IFRAME_ID,\n SESSION_TOKEN_KEY\n} from 'constants';\nimport IntlProvider from 'common/IntlProvider';\nimport appConfig from '../../../config';\n\nconst {\n shellVersion,\n secureCdnHost,\n devStyles,\n clientNavigation\n} = appConfig;\n\nconst STYLE_HREF = devStyles ? 'http://localhost:8080/static/css' : `${secureCdnHost}/redesign/${shellVersion}/css/secure`;\n\n// sanitize anchor tags in nav (don't ajax, and remove useless href)\nfunction sanitizeAnchor(anchor) {\n if (anchor instanceof HTMLAnchorElement) {\n if (anchor.getAttribute('href') === '#') {\n anchor.removeAttribute('href');\n }\n anchor.setAttribute('data-route', 'false');\n }\n}\n\nfunction initializeEspnChat() {\n const chatLink = document.querySelector('#global-nav-secondary .global-nav-container ul li a[data-abbrev=chatwidget]');\n\n if (chatLink) {\n const htmlHead = document.getElementsByTagName('head')[0];\n const chatScript = document.createElement('script');\n chatScript.type = 'text/javascript';\n chatScript.src = 'https://c.la4-c2-chi.salesforceliveagent.com/content/g/js/43.0/deployment.js';\n chatScript.onload = () => {\n window.liveagent.init('https://d.la4-c2-chi.salesforceliveagent.com/chat', '5721a000000055c', '00D1a000000JpU6');\n if (!window._laq) {\n window._laq = [];\n }\n window._laq.push(() => {\n window.liveagent.showWhenOnline('5731a00000005l3', chatLink);\n });\n };\n // Append the liveagent script to the head tag\n htmlHead.append(chatScript);\n\n // Add click handler to open the chat window\n chatLink.setAttribute('id', 'liveagent_button_online_5731a00000005l3');\n chatLink.onclick = ((event) => {\n event.preventDefault();\n if (window.liveagent && window.liveagent.startChat) {\n window.liveagent.startChat('5731a00000005l3');\n }\n });\n } else {\n console.warn('Unable to initialize chat widget, selector is undefined.');\n }\n}\n\n// TODO: DTC - remove this once we have it in the nav\nfunction insertNavItems(navItems) {\n if (!window.jQuery) {\n return;\n }\n\n function insertItem(index, route, label) {\n if (!document.querySelector(`#global-nav-secondary .global-nav-container ul li a[href*=\"/watch/${route}\"]`)) {\n const navList = document.querySelectorAll('#global-nav-secondary .global-nav-container ul li');\n if (navList) {\n window.jQuery(`\n <li class=\"\" itemprop=\"name\">\n <a itemprop=\"url\" href=\"http://www.espn.com/watch/${route}/\" name=\"&lpos=sitenavcustom_watch_${route}\" data-route=\"false\" data-abbrev=\"watch\">\n <span class=\"link-text\">${label}</span>\n <span class=\"link-text-short\">${label}</span>\n </a>\n </li>\n `).insertAfter(window.jQuery(navList).get(index));\n }\n }\n }\n\n if (navItems && navItems.length) {\n navItems.forEach(({ index, label, path }) => insertItem(index, path, label));\n }\n}\n\nfunction updateSubNav(location, navItems) {\n if (navItems) {\n insertNavItems(navItems);\n }\n // updateSubNav is called only on the client side.\n if (location && window.jQuery) {\n window.jQuery('#global-nav-secondary li').each(function () { // eslint-disable-line\n const $this = window.jQuery(this);\n const href = $this.find('a[itemprop=\"url\"]').attr('href');\n\n if (\n `${location.basename}${location.pathname}` === href ||\n `${location.basename}${location.pathname}/` === href\n ) {\n $this.addClass('active');\n } else if ($this.hasClass('active')) {\n $this.removeClass('active');\n }\n });\n }\n}\n\nclass PageShell extends Component {\n constructor(props) {\n super(props);\n this.mountBrandingComponent = this.mountBrandingComponent.bind(this);\n this.insertProviderContainer = this.insertProviderContainer.bind(this);\n this.providerContainer = null;\n this.subNavEl = null;\n this.latestLocation = null;\n }\n\n componentWillMount() {\n const { bootstrap: { pageShell: { nav } = {} }, isIntl, navOverride } = this.props;\n\n if (canUseDOM) {\n // this disables the shell from rendering ads (so that we can do it)\n // see https://code.espn.com/webdev/score/blob/ec82c07f8a607971029786f21fffbb211996e370/static/js/ads/init.js#L358\n if (window.espn_ui) {\n window.espn_ui.pageShell = true;\n }\n\n const { store, router } = this.context;\n const { dispatch } = this.props;\n\n this.unsubscribeFromStore = subscribeToStore(store, [\n scoringObserver,\n trackingObserver\n ]);\n\n const unlistenBefore = router.listenBefore((newLocation) => {\n const { player, routing } = this.props;\n if (player.embedding === true) {\n return false;\n }\n\n // if the pathname is different, clear the redux state\n const { locationBeforeTransitions: currentLocation = {} } = routing;\n const currentPath = `${currentLocation.basename}${currentLocation.pathname}`;\n const newPath = `${newLocation.basename}${newLocation.pathname}`;\n const currentPathRegex = new RegExp(`^${currentPath}\\/?$`);\n\n if (!newPath.match(currentPathRegex)) {\n dispatch(contentUnSelect());\n dispatch(streamUnSelect());\n dispatch(createClearPlayingStreamAction());\n dispatch(createResetPlayerAction());\n dispatch(clearPage());\n dispatch(createFeedResetAction());\n }\n return true;\n });\n\n const unlisten = router.listen((location) => {\n this.latestLocation = location;\n\n // this fixes broken scrolling when using the back and forward browser buttons btw ajax pages\n if (window.espn_ui && window.espn_ui.Helpers) {\n window.espn_ui.Helpers.history.updateState('react', true);\n }\n\n updateSubNav(location, navOverride && nav);\n });\n\n this.unlisten = () => {\n unlistenBefore();\n unlisten();\n };\n\n if (isIntl) {\n this.initPageShell();\n }\n }\n }\n\n componentDidMount() {\n const { dispatch, bootstrap: { pageShell: { nav } = {} }, flags, isIntl, navOverride } = this.props;\n if (!isIntl) {\n this.initPageShell();\n }\n if (window.jQuery) {\n if (window.jQuery.subscribe) {\n window.jQuery.subscribe('userBuilt', () => {\n setTimeout(() => {\n const profileAnchorTags = document.querySelectorAll('.user a');\n Array.prototype.forEach.call(profileAnchorTags, (anchor) => {\n sanitizeAnchor(anchor);\n });\n }, 0);\n });\n window.jQuery.subscribe('analytics.loaded', (initData) => {\n dispatch(analyticsReady(initData));\n });\n window.jQuery.subscribe('espn.defer.end', () => {\n // noop `FastClick.attach` before it gets called here to fix the button click issue on mobile\n // https://code.espn.com/webdev/score/blob/develop/static/js/espn-ui.js#L296\n if (window.FastClick) {\n window.FastClick.attach = () => {};\n }\n });\n }\n\n window.jQuery(window).on('media_query_updated', () => {\n if (window.espn_ui && window.espn_ui.Helpers) {\n const nextMq = window.espn_ui.Helpers.get_media_query_in_use();\n dispatch(mediaQuery(nextMq));\n }\n });\n if (window.espn_ui && window.espn_ui.Helpers) {\n const currentMq = window.espn_ui.Helpers.get_media_query_in_use();\n dispatch(mediaQuery(currentMq));\n }\n\n // NOTE: this may not fire locally on all browsers\n // 'nav.ready' will be fired not only the initial load but also every break point change\n window.jQuery(document).on('nav.ready', () => {\n window.jQuery('#global-nav > ul > li.watch').addClass('active');\n const headerAnchorTags = document.querySelectorAll('#header-wrapper a');\n Array.prototype.forEach.call(headerAnchorTags, (anchor) => {\n sanitizeAnchor(anchor);\n });\n updateSubNav(this.latestLocation, navOverride && nav);\n\n // Append the Chat subnav within FAQ nav item only for Domestic\n if (!isIntl) {\n initializeEspnChat();\n }\n\n this.mountBrandingComponent(); // in the event the nav completes after auth\n });\n }\n\n if (window.espn && window.espn.refresh) {\n window.espn.refresh.stop();\n }\n\n if (clientNavigation || flags[Flags.CLIENT_NAV] === 'true') {\n const secondaryNavContainer = document.getElementById('global-nav-secondary');\n if (secondaryNavContainer) {\n secondaryNavContainer.addEventListener('click', (event) => {\n this.interceptNavClick(secondaryNavContainer, event);\n });\n }\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { location = {} } = nextProps;\n const currentLocation = this.props.location;\n if (currentLocation !== location) {\n // add playback specific class to body on playback page\n if (location.pathname.indexOf('/player') !== -1) {\n if (document.body.className.indexOf('playback') === -1) {\n document.body.className = `${document.body.className} watch--playback`;\n }\n } else {\n document.body.className = document.body.className.replace(/\\s?watch--playback/, '');\n }\n }\n\n // media queries dirty the dom in the subnav, listen for them and clean it up\n if (this.props.mq && (this.props.mq !== nextProps.mq) && this.providerContainer) {\n // unmount the branding component entirely followed by mounting it again by 'nav.ready'\n ReactDOM.unmountComponentAtNode(this.providerContainer);\n if (this.subNavEl) {\n this.subNavEl.removeChild(this.providerContainer);\n this.providerContainer = null;\n }\n }\n\n this.handleSessionTokenPageRefetch(nextProps);\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n }\n if (this.unsubscribeFromStore) {\n this.unsubscribeFromStore();\n }\n }\n\n initPageShell() {\n const { dispatch, params } = this.props;\n dispatch(createPageShellInitAction(params, BAM_PROXY_IFRAME_ID));\n }\n\n interceptNavClick(root, event, parent) {\n const target = parent || event.target;\n if (target === root) {\n return;\n }\n\n const { flags } = this.props;\n const href = target.getAttribute && target.getAttribute('href');\n // exclude feedback page from client render since it uses basic shell\n if (href && href.indexOf('/watch/') > 0 && href.indexOf('/watch/feedback') === -1) {\n event.preventDefault();\n this.context.store.dispatch(\n push(addQueryToUrl(href.split('/watch/')[1], flags))\n );\n } else if (target.parentNode) {\n this.interceptNavClick(root, event, target.parentNode);\n }\n }\n\n handleSessionTokenPageRefetch(nextProps = {}) {\n const { sessionToken, pageId, params } = nextProps;\n const { dispatch, sessionToken: initialSessionToken } = this.props;\n const localStoredSessionToken = get(SESSION_TOKEN_KEY);\n try {\n // NOTE: Refetches the Page buckets if the sessionToken is updated in the store\n // and the initialSessionToken is undefined along with the localStorage sessionToken.\n // The sessionToken is always re-assigned on any client transition or page load.\n // Does not impact routes with /schedule or /player\n if (!initialSessionToken\n && sessionToken\n && !localStoredSessionToken\n && ['schedule', 'player'].indexOf(pageId) === -1) {\n dispatch(refreshBuckets(pageId, { params, forceRefresh: true }));\n }\n } catch (error) {\n console.error(`handleSessionTokenPageRefetch() Error: Failed to refresh buckets ${pageId}`);\n }\n }\n\n mountBrandingComponent() {\n const { store } = this.context;\n this.insertProviderContainer();\n if (this.providerContainer) {\n ReactDOM.render(\n <Provider store={store}>\n <IntlProvider>\n <BrandingContainer />\n </IntlProvider>\n </Provider>,\n this.providerContainer\n );\n }\n }\n\n // This is a hack to insert DOM into the nav element to hold the provider logo. It will go away\n insertProviderContainer() {\n if (this.subNavEl === null) {\n this.subNavEl = document.querySelector('#global-nav-secondary .global-nav-container');\n }\n if (!this.subNavEl) {\n return;\n }\n\n if (!document.querySelector('#provider-logo-subnav')) {\n const providerLogo = document.createElement('div');\n providerLogo.id = 'provider-logo-subnav';\n this.providerContainer = this.subNavEl.appendChild(providerLogo);\n }\n }\n\n render() {\n const {\n isSecure,\n espnPlayerSrc: {\n espnPlayerJsUrl,\n espnPlayerCssUrl\n }\n } = this.props;\n\n return (\n <div>\n <Helmet\n link={[\n { rel: 'stylesheet', href: `${STYLE_HREF}/shell-desktop.css` },\n { rel: 'stylesheet', href: `${STYLE_HREF}/page-shell.css` },\n { class: 'page-type-include', rel: 'stylesheet', href: `${STYLE_HREF}/index.css` },\n { rel: 'stylesheet', href: `${STYLE_HREF}/watch.css` },\n { rel: 'stylesheet', href: `${STYLE_HREF}/watch-provider.css` },\n { rel: 'stylesheet', href: `${STYLE_HREF}/watch-stream-picker.css` },\n {\n class: '__watch-player-bundle__',\n rel: 'stylesheet',\n href: espnPlayerCssUrl\n }\n ]}\n style={[{\n cssText: `\n audio::-internal-media-controls-cast-button, video::-internal-media-controls-cast-button {\n display: none;\n }\n\n .no-header #main-container { padding-top: 0; }\n\n @media screen and (min-width: 1024px) {\n .collection.collection--watch .ad-300 {\n margin-left: 20px;\n }\n .playback__content .collection_item>.collection__link {\n padding-left: 20px;\n padding-right: 20px;\n }\n }\n /* TODO: remove once we have it in css */\n #global-nav-secondary .global-nav-container .sportbrand .sportbrand__watch>img {\n max-height: 25px;\n }\n\n /* Carousel Hero CSS */\n .dtc-watch__carousel--container {\n position: relative;\n width: 100%;\n }\n\n .dtc-watch__carousel--container.carousel-loading .dtc-watch__carousel {\n display: none;\n }\n\n .dtc-watch__carousel--container.carousel-loading {\n margin-bottom: 44px;\n }\n\n .dtc-watch__carousel--container.carousel-loading:before {\n background:url(\"${secureLoadingImageUrl}\") 50% 50% no-repeat #dcdddf !important;\n background-size:cover !important;\n bottom:0;\n content:'';\n display:block;\n left:0px;\n opacity:1 !important;\n position:absolute;\n right:0px;\n top:0;\n z-index:3 !important;\n }\n\n @media screen and (max-width: 767px) {\n .dtc-watch__carousel--container,\n .dtc-watch__carousel__item img {\n min-height: 40vw;\n }\n }\n\n @media screen and (min-width: 768px) and (max-width: 1023px) {\n .dtc-watch__carousel--container,\n .dtc-watch__carousel__item img {\n min-height: 296px;\n }\n }\n\n @media screen and (min-width: 1024px) and (max-width: 1259px) {\n .dtc-watch__carousel--container,\n .dtc-watch__carousel__item img {\n min-height: 392px;\n }\n }\n\n @media screen and (min-width: 1260px) {\n .dtc-watch__carousel--container,\n .dtc-watch__carousel__item img {\n min-height: 488px;\n }\n }\n\n .dtc_carousel__dots { display: flex !important; }\n\n #watchespn-bam-player {\n background-color: #000 !important;\n height: 100% !important;\n left: 0;\n position: absolute;\n top: 0;\n width: 100% !important;\n z-index: 1000031;\n }\n\n #watchespn-player iframe,\n #watchespn-bam-player iframe{\n width: 100%;\n height: 100%;\n border: none;\n }\n\n .${BAM_PROXY_IFRAME_ID}, .${BAM_PROXY_IFRAME_ID} iframe {\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n border: none;\n }\n\n #${BAM_PROMO_IFRAME_ID} {\n width: 100%;\n height: 506.25px;\n margin-bottom: 10px;\n }\n\n .collection_item_truncate>span, .hero_truncate>span {\n font-family: BentonSans, -apple-system, Roboto, Helvetica, Arial, sans-serif;\n }\n\n #${BAM_PROMO_IFRAME_ID} iframe,\n #${BAM_PAYWALL_IFRAME_ID} iframe {\n width: 100%;\n height: 100%;\n border: none;\n display: block;\n }\n\n .lightbox-container .lightbox-watch.watch-provider-modal.lightbox-paywall .btn-close {\n padding: 0;\n }\n\n .lightbox-container .lightbox-watch.watch-provider-modal.lightbox-paywall .btn-close:before {\n color: #fff;\n line-height: 36px;\n }\n\n body.ReactModal__Body--open {\n overflow: hidden;\n }\n\n .video-overlays-container {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n .streampicker.overlay {\n width: 100%;\n height: 100%;\n }\n .StreamPicker__Container {\n height: auto;\n top: auto;\n }\n .video-player__stream {\n position: relative;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .StreamPicker__Header {\n border-bottom: #48494a 1px solid;\n height: 50px;\n position: relative;\n text-align: center;\n }\n .StreamPicker__Body {\n padding: 16px;\n max-height: 253px;\n overflow-y: scroll;\n }\n .StreamPicker__Broadcast {\n margin-bottom: 12px;\n margin-top: 0;\n }\n .StreamPicker__Row {\n margin-bottom: 18px;\n }\n .StreamPicker__Row:last-child {\n margin-bottom: 0;\n }\n `\n }]}\n script={[\n {\n src: '//a.espncdn.com/combiner/c?js=analytics/visitorAPI_312.js'\n },\n {\n src: espnPlayerJsUrl,\n async: true\n }\n ]}\n />\n {/* Get the image as early as possibly, essentially an attempt to pre-fetch */}\n <img\n alt=\"prefetch loading graphic\"\n src={isSecure ? secureLoadingImageUrl : loadingImageUrl}\n style={{ display: 'none' }}\n />\n {isSecure ? null : (<img\n alt=\"prefetch loading graphic\"\n src={loadingImageUrlDark}\n style={{ display: 'none' }}\n />)}\n <ProviderModal />\n <MessagingContainer />\n {this.props.children}\n </div>\n );\n }\n}\n\nPageShell.propTypes = {\n dispatch: PropTypes.func.isRequired,\n children: PropTypes.node,\n isSecure: PropTypes.bool,\n isIntl: PropTypes.bool,\n bootstrap: PropTypes.object,\n location: PropTypes.object,\n mq: PropTypes.string,\n navOverride: PropTypes.bool,\n player: PropTypes.object,\n routing: PropTypes.object,\n flags: PropTypes.object,\n params: PropTypes.object,\n sessionToken: PropTypes.string,\n espnPlayerSrc: PropTypes.object\n};\nPageShell.contextTypes = {\n store: PropTypes.object.isRequired,\n router: PropTypes.object.isRequired,\n intl: intlShape.isRequired,\n messages: PropTypes.object.isRequired\n};\n\nPageShell.renderTemplate = RenderTemplateTypes.PAGE_SHELL;\nPageShell.preActions = [fetchExternalConfig];\nPageShell.loadActions = [];\nPageShell.onLoadStart = uiLoadingStart;\nPageShell.onComplete = function onComplete(dispatch) {\n dispatch(scoreAll());\n};\n\nconst mapStateToProps = (state) => {\n const bootstrap = bootstrapSelector(state);\n const mq = appSelector(state).mq;\n const lang = appSelector(state).lang;\n const env = appSelector(state).env;\n const player = playerSelector(state);\n const routing = routingSelector(state);\n const flags = persistentFlagsSelector(state);\n const isSecure = isSecureSelector(state);\n const isIntl = isIntlSelector(state);\n const { id: pageId } = pageSelector(state);\n const sessionToken = bamSessionTokenSelector(state);\n const espnPlayerSrc = espnPlayerSrcFilesSelector(state);\n return {\n bootstrap,\n mq,\n navOverride: !isIntl && env !== AppEnvs.prod,\n player,\n routing,\n flags,\n isSecure,\n isIntl,\n sessionToken,\n lang,\n pageId,\n espnPlayerSrc\n };\n};\n\nexport default connect(mapStateToProps)(connectAdInitializer(PageShell));\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/subShell/PageShell.js","/**\n Higher order component of PageShell for global ad initialization of all ads on current page. Responsible for 'refreshing'\n all ads that are visible on initial page load\n The code for the global 'admgr' is here https://code.espn.com/webdev/score/blob/develop/static/js/ads/admgr.js\n You can see the ad requests in the console by filtering on 'pubads'\n*/\nimport React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { persistentFlagsSelector } from 'common/selectors/flagsSelector';\nimport AdManager from './AdManager';\n\nfunction connectAdInitializer(WrappedComponent) {\n class AdInitializer extends Component {\n constructor(props) {\n super(props);\n this.watchAdManager = new AdManager(props);\n }\n\n getChildContext() {\n return {\n watchAdManager: this.watchAdManager\n };\n }\n\n componentDidMount() {\n if (window.admgr) {\n // patch to accept config object and filter out non-refreshable in-page ads\n window.admgr.getGPTArray = function getGPTArray(obj = {}) {\n const slots = window.admgr.getGPTSlots() || {};\n const arr = [];\n let slot;\n\n Object.keys(slots).forEach(key => {\n slot = slots[key];\n if (obj.independent !== false || slot.isIndependent !== true) {\n if (obj.inPage === true && slot.isOutOfPage !== true && slot.refreshable) {\n arr.push(slot);\n } else if (obj.outOfPage === true && (slot.isOutOfPage === true || slot.isCatExclusion === true)) {\n arr.push(slot);\n } else if (obj.inPage !== true && obj.outOfPage !== true) {\n arr.push(slot);\n }\n }\n });\n\n return arr;\n };\n // patch to use the patched `getGPTArray`, original API uses the local `getGPTArray` so can't use as is.\n window.admgr.refreshInPageAdSlots = function refreshInPageAdSlots() {\n const arr = window.admgr.getGPTArray({ inPage: true, independent: false });\n window.googletag.cmd.push(() => {\n window.googletag.pubads().refresh(arr);\n });\n };\n this.watchAdManager.adManager = window.admgr;\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { mq, routing } = this.props;\n // refresh initially visible ads as early as possible. also refresh for media queries\n if (mq !== nextProps.mq) {\n if (!mq) {\n this.watchAdManager.initAds(nextProps);\n } else {\n this.watchAdManager.onMediaQueryChange(nextProps);\n }\n }\n const { locationBeforeTransitions: { pathname } } = routing;\n if (pathname !== nextProps.routing.locationBeforeTransitions.pathname) {\n this.watchAdManager.preInit();\n }\n }\n\n // if this is a HOC of the PageShell, this is only called on route changes\n componentDidUpdate(prevProps) {\n if (prevProps.ads !== this.props.ads) {\n this.watchAdManager.initAds(this.props);\n }\n }\n\n render() {\n return <WrappedComponent {...this.props} {...this.state} />;\n }\n }\n\n AdInitializer.propTypes = {\n ads: PropTypes.object,\n mq: PropTypes.string,\n routing: PropTypes.object\n };\n\n AdInitializer.childContextTypes = {\n watchAdManager: PropTypes.object.isRequired\n };\n\n const mapStateToProps = (state) => ({\n ads: state.ads,\n mq: state.app.mq,\n routing: state.routing,\n flags: persistentFlagsSelector(state)\n });\n\n return connect(mapStateToProps)(hoistStatics(AdInitializer, WrappedComponent));\n}\n\nexport default connectAdInitializer;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ads/connectAdInitializer.js","import _debounce from 'lodash/debounce';\nimport { isElementVisible } from 'lib/ui';\nimport { adsRefreshed, adsInitialized } from './actions';\nimport getMergedAdConfig from './util/getMergedAdConfig';\n\nconst breakpoints = {\n 'desktop-lg': 'xl',\n desktop: 'l',\n tablet: 'm',\n mobile: 's'\n};\n\nconst AdType = {\n WALLPAPER: 'wallpaper',\n OVERLAY: 'overlay'\n};\n\nclass AdManager {\n constructor(props) {\n this.props = props;\n this._onResize = _debounce(this._onResize.bind(this), 100);\n // debounced to handle multiple late ads that's added at the same timing in one shot\n this._onRegister = _debounce(this._refreshAll.bind(this), 4);\n }\n\n set adManager(value) {\n this._adManager = value;\n }\n\n get gptSlots() {\n return (this._adManager && this._adManager.getGPTArray({ independent: false })) || [];\n }\n\n get hasAds() {\n return this.getMountedInstances().length > 0;\n }\n\n get hasOutOfPageAd() {\n return this.gptSlots.filter(slot => slot.type === AdType.OVERLAY).length > 0;\n }\n\n getMountedInstances() {\n if (!this.mountedInstances) {\n this.mountedInstances = [];\n }\n return this.mountedInstances;\n }\n\n addInstance(instance) {\n const instances = this.getMountedInstances();\n const index = instances.indexOf(instance);\n if (index === -1) {\n // The first instance starts listening for the event.\n if (instances.length === 0) {\n this._toggleListener(true);\n }\n instances.push(instance);\n }\n // register ad individually when they are added after the page load/route change.\n // this will get called earlier than a page request is made which invalidates `this.props.ads.initialized`,\n // so need to check the flag `this._initializing` to make sure this is called after the ad initialization is done\n if (!this._initializing && this.props.ads.initialized) {\n this._registerAd(instance);\n }\n }\n\n removeInstance(instance) {\n const instances = this.getMountedInstances();\n const index = instances.indexOf(instance);\n if (index >= 0) {\n instances.splice(index, 1);\n // The last instance removes listening for the event.\n if (instances.length === 0) {\n this._toggleListener(false);\n }\n }\n }\n\n preInit() {\n this._initializing = true;\n }\n\n initAds(props) {\n if (!this._adManager || !this.hasAds) {\n this._initializing = false;\n return;\n }\n\n this.props = props;\n\n const { ads = {}, dispatch } = props;\n if (ads.id && ads.configured && (!ads.initialized || ads.refresh)) {\n try {\n this._adConfig = getMergedAdConfig(props);\n this._adManager.init(this._adConfig);\n this._initializing = false;\n dispatch(adsInitialized());\n // add refreshing ads in the queue to ensure it gets called after the ad initialization is complete\n // which is also enqueued\n window.googletag.cmd.push(() => {\n this._refreshAll();\n });\n } catch (err) {\n console.error(err); // eslint-disable-line\n }\n }\n }\n\n onMediaQueryChange(props) {\n this.props = props;\n this._refreshAds();\n }\n\n _toggleListener(add) {\n ['scroll', 'resize'].forEach(eventName => {\n window[add ? 'addEventListener' : 'removeEventListener'](eventName, this._onResize);\n });\n }\n\n _registerAd(instance) {\n if (!this._adManager) {\n return;\n }\n const { refs: { adSlot } } = instance;\n this._adManager.registerSlot(adSlot, this._adConfig);\n this._onRegister();\n }\n\n _refreshAll() {\n // check the element visibility first to update component state so that they will be reflected in `refreshAds`\n this._checkElementVisibility(() => {\n this._refreshAds();\n });\n }\n\n _refreshAds(instances = this.getMountedInstances()) {\n if (!this._adManager) {\n return;\n }\n const { dispatch } = this.props;\n const slotsToClear = [];\n const slotsToRefresh = this.gptSlots.filter((gptSlot) => {\n let shouldRefresh = false;\n // wallpaper ad is added by a page shell, mark as refreshable\n if (gptSlot.type === AdType.WALLPAPER) {\n shouldRefresh = true;\n } else {\n const activeAdInstance = instances.filter(({ refs: { adSlot } }) => adSlot.id === gptSlot.getSlotElementId())[0];\n if (activeAdInstance) {\n const { state: { refreshed }, props: { refreshWhenVisible }, refs: { adSlot } } = activeAdInstance;\n // either a non-lazy ad or a lazy ad which has been already refreshed\n const isRefreshable = !refreshWhenVisible || (refreshWhenVisible && refreshed);\n const isIncludedInBreakpoint = this._shouldShowSlotForBreakpoint(adSlot);\n shouldRefresh = isRefreshable && isIncludedInBreakpoint;\n if (!shouldRefresh) {\n slotsToClear.push(gptSlot);\n }\n gptSlot.refreshable = shouldRefresh;\n }\n }\n // this flag is used in the patched `getGPTArray` in `connectAdInitializer` to filter out non-refreshable ads\n gptSlot.refreshable = shouldRefresh;\n\n return shouldRefresh;\n });\n\n if (slotsToClear.length > 0) {\n // FIXME: this._adManager.clear() doesn't accept an array of slots\n window.googletag.cmd.push(() => {\n window.googletag.pubads().clear(slotsToClear);\n });\n }\n // when there is an out-of-page ad in the page, it needs to render an out-of-page ad first followed by the rest of ads\n // https://code.espn.com/webdev/score/blob/develop/static/js/ads/admgr.js#L145-L149\n // https://code.espn.com/webdev/score/blob/develop/static/js/ads/init.js#L341-L368\n if (this.hasOutOfPageAd) {\n this._adManager.refreshOutOfPageAdSlots();\n } else if (slotsToRefresh.length > 0) {\n this._adManager.refresh(slotsToRefresh);\n }\n dispatch(adsRefreshed());\n }\n\n _onResize() {\n this._checkElementVisibility((instances) => {\n if (instances) { // call `refreshAds` only when there are instances to refresh\n // use this logic when it's ok to just refresh the ad which just gets visible\n // this._refreshAds(instances);\n\n // use this logic so that we can ensure competitive exclusion in a page\n this._refreshAds();\n }\n });\n }\n\n _checkElementVisibility(callback) {\n // instances set to lazy-render and not rendered yet\n const instancesToCheck = this.getMountedInstances()\n .filter(({ state: { refreshed }, props: { refreshWhenVisible } }) => refreshWhenVisible && !refreshed);\n\n if (instancesToCheck.length > 0) {\n const visibleInstances = instancesToCheck\n .filter(({ refs: { adSlot } }) => isElementVisible(adSlot));\n\n if (visibleInstances.length > 0) {\n visibleInstances.forEach((instance, index, arr) => {\n instance.setState({ refreshed: true }, index === arr.length - 1 ? () => {\n callback(visibleInstances);\n } : null);\n });\n return;\n }\n }\n\n if (callback) {\n callback();\n }\n }\n\n // logic copied from https://code.espn.com/webdev/score/blob/develop/static/js/ads/admgr.js#L664\n _shouldShowSlotForBreakpoint(slot) {\n const bp = breakpoints[this.props.mq];\n const include = slot.getAttribute('data-include-bp');\n const exclude = slot.getAttribute('data-exclude-bp');\n let shouldShow = true;\n\n if (include) {\n // if the current breakpoint is not found in the included array, skip this slot\n if (include.split(',').indexOf(bp) === -1) {\n shouldShow = false;\n }\n }\n\n if (exclude) {\n // if the current breakpoint is found in the exluded breakpoints array, skip this slot\n if (exclude.split(',').indexOf(bp) !== -1) {\n shouldShow = false;\n }\n }\n\n return shouldShow;\n }\n}\n\nexport default AdManager;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ads/AdManager.js","export default function isElementVisible(el) {\n if (el) {\n const rect = el.getBoundingClientRect();\n return (\n // uncomment this to get this to return true when the entire element is visible\n // rect.top >= 0 &&\n // rect.left >= 0 &&\n // rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n // rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n rect.top <= (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return false;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/ui/isElementVisible.js","/* eslint-disable no-console */\nimport { Flags } from 'enums';\n\nfunction getTargeting(owner) {\n const targetingKeys = owner.getTargetingKeys();\n const targeting = targetingKeys.reduce((acc, key) => {\n const val = owner.getTargeting(key);\n acc[key] = val.length === 1 ? val[0] : val;\n return acc;\n }, {});\n return targeting;\n}\n\nexport default (props = {}) => {\n const globalAdsConfig = (window.espn.ads && window.espn.ads.config) || {};\n const globalKvpsMap = globalAdsConfig.kvps.reduce((total, current) => {\n total[current.name] = current.value;\n return total;\n }, {});\n\n const { ads } = props;\n if (ads) {\n const localAdsConfig = ads.config;\n const combinedKvpsMap = { ...globalKvpsMap, ...localAdsConfig.kvps };\n const combinedKvpsArray = Object.keys(combinedKvpsMap || {}).map((name) => ({\n name,\n value: combinedKvpsMap[name]\n }));\n\n // Fixes breakpoints not found error\n globalAdsConfig.breakpoints = {\n xl: [1260],\n l: [1024, 1259],\n m: [768, 1023],\n s: [321, 767],\n xs: [0, 320]\n };\n\n const adConfig = {\n ...globalAdsConfig,\n disableInitialLoad: true,\n kvps: combinedKvpsArray,\n level: localAdsConfig.level\n };\n\n if (props.flags[Flags.DEBUG_AD] === 'true') {\n adConfig.onSlotRenderEnded = function onSlotRenderEnded(event) {\n const { creativeId, isEmpty, size, slot } = event;\n const divId = slot.getSlotElementId();\n const pageTargeting = getTargeting(window.googletag.pubads());\n const slotTargeting = getTargeting(slot);\n\n if (!isEmpty && size) {\n console.info(`[Ad] type('${slot.type}'), creative('${creativeId}', '${size[0]}x${size[1]}'), div('${divId}')`,\n slotTargeting, pageTargeting, event);\n } else {\n console.info(`[Ad] type('${slot.type}'), creative('empty'), div('${divId}')`,\n slotTargeting, pageTargeting, event);\n }\n };\n }\n\n return adConfig;\n }\n return {};\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/ads/util/getMergedAdConfig.js","/* eslint-disable react/no-danger */\nimport React, { PropTypes, Component } from 'react';\nimport { connect } from 'react-redux';\nimport Modal from 'react-modal';\nimport ProviderDialog from 'common/chooseProvider/ProviderDialog';\nimport { displayProviderDialogSelector } from 'common/selectors/providerSelector';\nimport authenticationAware from 'webapp/common/authenticationAware';\nimport {\n createCloseProviderDialogAction\n} from 'common/actions/authenticationActions';\n\nimport { clearTrackingData } from 'lib/omniture';\n// empty the modal's default styles\nModal.defaultStyles = {};\n\nclass ProviderModal extends Component {\n constructor(props) {\n super(props);\n this.closeAuthModal = this.closeAuthModal.bind(this);\n }\n\n closeAuthModal() {\n this.setState({ searchFilter: '' });\n clearTrackingData();\n this.props.dispatch(createCloseProviderDialogAction());\n }\n\n render() {\n const {\n showProviderDialog,\n providerSelect\n } = this.props;\n\n const transparentMask = showProviderDialog ? <div className=\"js-feed-item-mask active\" /> : null;\n return (\n <div>\n {transparentMask}\n <Modal isOpen={showProviderDialog} onRequestClose={this.closeAuthModal} overlayClassName=\"lightbox-container\">\n <article className=\"lightbox-watch watch-provider-modal js-bloomed\">\n <div className=\"btn-close icon-font-before icon-close-solid-before\" onClick={this.closeAuthModal} />\n <section className=\"watchProvider--modal\">\n <ProviderDialog\n providerSelect={providerSelect}\n providerClass=\"watchProvider__scroll\"\n />\n </section>\n </article>\n </Modal>\n </div>\n );\n }\n}\n\nProviderModal.propTypes = {\n dispatch: PropTypes.func,\n showProviderDialog: PropTypes.bool,\n providerSelect: PropTypes.func\n};\n\nProviderModal.defaultProps = {\n showProviderDialog: false\n};\n\nconst mapStateToProps = (state) => {\n const showProviderDialog = displayProviderDialogSelector(state);\n return {\n showProviderDialog\n };\n};\n\n\nexport default authenticationAware()(connect(mapStateToProps)(ProviderModal));\n\n\n\n// WEBPACK FOOTER //\n// ./app/webapp/modal/authn/ProviderModal.js","import pageSelector from 'common/selectors/pageSelector';\nimport { uiLoadingComplete } from 'lib/ui/loading';\nimport observeStore from './observeStore';\n\nexport default function scoringObserver(store) {\n return observeStore(store, pageSelector, (currentPage, nextPage) => {\n if (nextPage.scored === true) {\n uiLoadingComplete();\n }\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/lib/observe/scoringObserver.js","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var es = moment.defineLocale('es', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n ordinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return es;\n\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment/locale/es.js\n// module id = 796\n// module chunks = 1","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, function (moment) { 'use strict';\n\n\n var pt_br = moment.defineLocale('pt-br', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : '%s atrás',\n s : 'poucos segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n ordinalParse: /\\d{1,2}º/,\n ordinal : '%dº'\n });\n\n return pt_br;\n\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment/locale/pt-br.js\n// module id = 797\n// module chunks = 1","import React, { PropTypes } from 'react';\nimport { connect } from 'react-redux';\nimport { BucketLayout, PageType, BucketRatio } from 'enums';\nimport { createFetchPageAction, completePageLoad } from 'common/page/actions';\nimport { fetchScheduleModule, scoreScheduleModule } from 'common/scheduleModule/actions';\nimport BannerAd from 'common/ads/BannerAd';\nimport Editorial from 'common/Editorial';\nimport InContentAd from 'common/ads/InContentAd';\nimport BucketListContainer from 'common/page/buckets/BucketListContainer';\nimport MainContainer from 'common/page/common/MainContainer';\nimport TopLayoutContainer from 'common/page/common/TopLayoutContainer';\nimport heroSelector from 'common/selectors/heroSelector';\nimport { notFoundUrl } from 'constants';\nimport WatchPropTypes from 'common/PropTypes';\nimport { showOneIdLoginSelector } from 'common/selectors/appSelector';\nimport { oneIdLoggedInSelector } from 'common/selectors/oneIdSelector';\n\nfunction renderRedirect() {\n try {\n window.location.href = notFoundUrl;\n } catch (err) {\n console.error(err);\n }\n}\n\nexport function renderCollection(props) {\n const {\n buckets,\n hero,\n isFetching,\n showOneIdLogin,\n isLoggedIn\n } = props;\n // if there is no bucket list and hero data, redirect to not found page\n if (!buckets.length && Object.keys(hero).length === 0 && isFetching === false) {\n return <div>{renderRedirect()}</div>;\n }\n\n const bannerAd = [<BannerAd key=\"banner_ad\" />];\n\n // layout will change depending on presence of editorial description, set some defaults\n let editorial = null;\n let inContentAd = null;\n let layoutOverride = BucketLayout.DEFAULT_UNLIMITED;\n let layoutClass = 'layout-full layout-full--watch';\n let columnClass = 'col-a';\n\n // if there is a description, show the ad and override to DEFAULT layout with unlimited items\n if (buckets[0] && buckets[0].description) {\n const header = `About ${buckets[0].name}`;\n const content = buckets[0].description;\n editorial = <Editorial header={header} content={content} />;\n inContentAd = <InContentAd exclude={['s', 'm']} />;\n layoutClass = 'layout-bc layout-bc--watch';\n columnClass = 'col-b';\n }\n\n let renderHeroInBucket = true;\n let hideHeaderLink = false;\n const { metadata: { imageFormat } = {} } = buckets[0] || {};\n if (\n imageFormat === BucketRatio.FiveTwo ||\n imageFormat === BucketRatio.FourThree ||\n imageFormat === BucketRatio.TwoThree\n ) {\n renderHeroInBucket = false;\n layoutOverride = null;\n hideHeaderLink = true;\n }\n const showLogin = !isLoggedIn && showOneIdLogin;\n return (\n <MainContainer pre={bannerAd} showLogin={showLogin}>\n {renderHeroInBucket ? <TopLayoutContainer /> : null}\n <div className={layoutClass}>\n <section className={columnClass}>\n <BucketListContainer\n pageType={PageType.COLLECTION}\n layoutOverride={layoutOverride}\n key=\"bucket_list_container\"\n renderHeroInBucket={!renderHeroInBucket}\n hideHeaderLink={hideHeaderLink}\n />\n </section>\n <section className=\"col-c\">\n {editorial}\n {inContentAd}\n </section>\n </div>\n </MainContainer>\n );\n}\n\nrenderCollection.propTypes = {\n buckets: PropTypes.arrayOf(WatchPropTypes.bucket),\n isFetching: PropTypes.bool,\n hero: PropTypes.object,\n showOneIdLogin: PropTypes.bool,\n isLoggedIn: PropTypes.bool\n};\n\n// create collection-like page(e.g. collection, product)\nexport default function createCollection(options = {}) {\n const { pageName = 'collection' } = options;\n\n const Collection = (props) => renderCollection(props);\n\n Collection.propTypes = {\n buckets: PropTypes.array,\n isFetching: PropTypes.bool,\n hero: PropTypes.object\n };\n\n Collection.loadActions = [\n (params, query, lang) => createFetchPageAction(pageName, params, query, lang),\n (params, query, lang) => fetchScheduleModule(lang)\n ];\n\n Collection.refreshInterval = 65; // 1 min and 5 secs\n Collection.onRefresh = ({ dispatch, routeParams, lang, location: { query = {} } }) => {\n dispatch(createFetchPageAction(Collection.pageName, routeParams, query, lang))\n .then(() => {\n dispatch(completePageLoad());\n });\n dispatch(fetchScheduleModule(lang))\n .then(() => {\n dispatch(scoreScheduleModule());\n });\n };\n\n const mapStateToProps = (state) => ({\n buckets: (state.page && state.page.buckets) || [],\n isFetching: (state.page && state.page.isFetching),\n hero: heroSelector(state),\n showOneIdLogin: showOneIdLoginSelector(state),\n isLoggedIn: oneIdLoggedInSelector(state)\n });\n\n return connect(mapStateToProps)(Collection);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/createCollection.js","import React, { PropTypes } from 'react';\n\nconst Editorial = (props) => (\n <article className=\"sub-module module_editorial\">\n <header>\n <h1>{props.header}</h1>\n </header>\n <div className=\"content\">\n <p>{props.content}</p>\n </div>\n </article>\n);\n\nEditorial.propTypes = {\n header: PropTypes.string,\n content: PropTypes.string\n};\n\nexport default Editorial;\n\n\n\n// WEBPACK FOOTER //\n// ./app/common/Editorial.js"],"sourceRoot":""}